Liste der Anhänge anzeigen (Anzahl: 1)
ASURO: Motorsteuerungslibrary
Hallo Miteinander,
hier die um ein paar Motorsteuerungsfunktionen erweiterte asuro.c.
Neu hinzu gekomme Funktionen:
Wheelspeed: misst die Radgeschwindigkeit in der Interuptroutine
Go(+-) gerade Bewegung forwärts/rückwärts
Turn(+-) Drehung links rechts
Im Testprogramm habe ich einen einfachen Regler implementiert
Wäre schön, wenn Ihr eure Erfahrungen posted.
Gruss,
stochri
Liste der Anhänge anzeigen (Anzahl: 1)
Hä? Ich versteh jetzt leider nicht, was das von dir jetzt genau bringt. :D
Könnte mir mal jemand erklären, was ein PI-Regler ist?
Danke
Also ich hab jetzt mal die Lib erweitert, bzw. die Go() geändert.
Leider kennt C ja keine Vorgabeargumte.
Hier erstmal der Code:
Code:
void Go(int distance, int speed)
{
int enc_count = 0;
int tot_count = 0;
int diff = 0;
int l_speed = speed, r_speed = speed;
enc_count=abs(distance);
// enc_count=distance*10000;
// enc_count/=12823;
Encoder_Set(0,0); // reset encoder
MotorSpeed(l_speed,r_speed);
if(distance<0) MotorDir(RWD,RWD);
else MotorDir(FWD,FWD);
while(tot_count<enc_count) {
tot_count += encoder[LEFT];
diff = encoder[LEFT] - encoder[RIGHT];
if (diff > 0) { //Left faster than right
if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
else r_speed += 10;
}
if (diff < 0) { //Right faster than left
if ((r_speed > speed) || (l_speed > 244)) r_speed -= 10;
else l_speed += 10;
}
Encoder_Set(0,0); // reset encoder
MotorSpeed(l_speed,r_speed);
Msleep(1);
}
MotorDir(BREAK,BREAK);
Msleep(200);
}
Noch kurz eine Erklärung:
Diese Konstruktion "if ((l_speed > speed) || (r_speed > 244))" dient dazu, dass der Wert erstens nicht unter den eingestellten Speed und 2. nicht über 255 geht. Ich denke, der Rest ist ersichtlich.
Es ist also ratsam, als maximal Geschwindigkeit, vielleicht 230 zu verwenden.
Bitte mal test, und sonst nochmal melden, wenn Fehler drin sind.
So long
Andun
Liste der Anhänge anzeigen (Anzahl: 1)
Hier die selbe, etwas verbesserte Libray.
( ausro.c endlich mit verbesserter Printstr-Funkiton, bei der man nicht die Buchstaben zählen muss )
siehe auch:
https://www.roboternetz.de/phpBB2/vi...r=asc&start=66
Gruss,
stochri
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat von stochri
wenn Dein PI-Regler läuft, kannst Du das Ergebnis ja mal posten.
Mein erstes Ergebniss ! Der ASURO fährt auch bei belastung geradeaus. Auch das langsam fahren sieht garnichtmal so schlecht aus.