PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RC-Servo am Asuro-LED-Ausgang



The_Menace
18.02.2008, 18:15
Hallo!

Ich hab mal spasseshalber einen RC-Servo an den BackLED-Ausgang des Asuro angeschlossen, soll heissen schwarz und rot an die Spannungsversorgung und weiss an den +-Ausgang für die LED.

Mit dem kleinen Programm


#include "Asuro.h"

int main(void)
{
Init();
int i;
int u;
int v;

for (i=0;i<1000;i++)
{
StatusLED(YELLOW);
BackLED (ON,ON);
for (v=0;v<11;v++)
{
Sleep (7.2);
}
BackLED (OFF,OFF);
for (u=0;u<184;u++)
{
Sleep (7.2);
}
}
return 0;
}

hab ich den Servo angesteuert. Er drehte und blieb stehen, wie er sollte, aber zittert.
Auf dem Oszilloskop sieht man, das die Periode der eines Servotesters (Amplitude 3,5V) entspricht, jedoch eine Amplitude von 5,5V gemessen wird. Zittert der Servo wegen dieser hohen Spannung oder ist das Programm schlecht/falsch?

Danke schonmal!

radbruch
18.02.2008, 18:25
Hallo

5,5V sollten ok sein da man Servos direkt mit einem Ausgang ansteuern kann.


Sleep (7.2);
???

Versuche mal mein Programm:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=29902

Gruß

mic

The_Menace
20.02.2008, 12:16
@Radbruch: Danke für die schnelle Antwort!

Aber brauche ich für die Verwendung deines Programmes nicht auch die "ir-asuro"-headerdateien?

Ich geb zu das ich kein fortgeschrittener C-Programmierer bin und ich meinen richtigen Einstieg jetzt erst mit dem Asuro mache.

Den Asuro benötigen wir für einen Konstruktionswettkampf an einer Fachhochschule. Da sich auch Maschinenbauer mit dem Ding auseinandersetzen sollen, sollten die Programme möglichst einfach sein.

radbruch
20.02.2008, 12:41
Hallo

ir-asuro ist die normale Library mit der IR-Erweiterung nach waste (Abstandsmessung per IR). Das Ansteuern der Servos funktioniert auch mit der orginalen CD-Library, allerdings sind dann bei der Sleep()-Version die Werte für die Servopositionen doppelt so groß, denn der Timer wird mit 72kHz getaktet wird, d.h. Sleep(72) dauert eine Millisekunde. Neuere Versionen von asuro.c verwenden einen 36kHz-Takt, eine Millisekunde ist dann Sleep(36).

Die Sleep()-Version ist deutlich einfacher als die Interruptvariante, man kann als Einsteiger die Pulserzeugung besser nachvollziehen. Je nach Anschluß des Servos muss das Signal möglicherweise invertiert werden.

Gruß

mic