Hallo,
Zitat von
damaltor
vielleicht sollte man einfach mal einen feldversuch starten, den asuro mit 255 fahren zu laseen, dann free, brake mit 0 und brake mit 255 nacheinander testen und sehn wie er stehenbleibt...
habe den Test eben mit dem folgenden Programm durchgeführt, mit für mich unerwartetem Ergebnis:
Code:
#include <asuro.h>
#define K1 (1<<5)
#define K2 (1<<4)
#define K3 (1<<3)
#define K4 (1<<2)
#define K5 (1<<1)
#define K6 (1<<0)
uint8_t getSwitch(void);
int main(void)
{
uint8_t sw1;
Init();
sw1 = getSwitch();
Msleep(1000);
MotorDir(FWD,FWD);
MotorSpeed(255,255);
Msleep(1500);
switch (sw1)
{
case K1: MotorDir(BREAK,BREAK);
MotorSpeed(0,255);
break;
case K2: MotorDir(FREE,BREAK);
MotorSpeed(0,255);
break;
case K3: MotorDir(FREE,BREAK);
MotorSpeed(0,0);
break;
case K4: MotorDir(BREAK,BREAK);
MotorSpeed(255,0);
break;
case K5: MotorDir(BREAK,FREE);
MotorSpeed(255,0);
break;
case K6: MotorDir(BREAK,FREE);
MotorSpeed(0,0);
break;
default:
MotorDir(BREAK,BREAK);
}
while (1);
return 0;
}
uint8_t getSwitch(void)
{
uint8_t t1, t2, t3;
while (1)
{
t1 = PollSwitch();
t2 = PollSwitch();
if ((t1==t2) && t1)
break;
Msleep(50);
}
while (1)
{
t2 = PollSwitch();
t3 = PollSwitch();
if ((t2==t3) && !t2)
break;
Msleep(50);
}
return t1;
}
BREAK mit Speed=0 verhält sich genauso wie BREAK mit Speed=255!
Dies habe ich mit Robertor, dem Asuro meines Sohnes, getestet, der eine Endgeschwindigkeit von 1,8m/s hat.
Bei Tastern K1 und K4 (BREAK,BREAK) mit Speed=(0,255)/(255,0) rutscht der Asuro einfach geradeaus.
In allen anderen Fällen fährt er beim Abbremsen noch eine Kurve nach links oder rechts.
Ich vermute, daß BREAK mit Speed=0 deshalb genauso bremst, wie mit Speed=255, da PWM nur auf den unteren Teil der H-Brücke wirkt, der Motor aber im oberen Teil der H-Brücke kurzgeschlossen wird, wo PWM gar keinen Einfluß hat ...
Lesezeichen