Hallo!
Danke für die Antworten!
Also um speziell auf robo_tom_24 einzugehen jetzt mal:
1) Du musst die CPU Frequenz vor der Inkludierung der delay Lib definieren - kommt den keine Warnung vom Compiler?
Zu meiner Schande muss ich gestehen das ich die Warnung übersehen habe weil ausgeblendet.
Habe jetzt die Frequenz definiert, FuseBit gesetzt und Optimization Level auf 2 gesetzt.
2) Du musst dem Servo Zeit geben die Position anzufahren -> die Drehgeschwindigkeit steht im Datenblatt, bzw. auf der Servoverpackng
Ich nehme mal an in dem von dir geposteten Beispiel-Code wird das dann so gemacht werden? Habe jetzt mal deine "neue" Version des Programms getestet, kommt aber zum gleichen Ergebnis. mehr dazu weiter unten.
3) Weißt du wie eine Servoansteuerung funktioniert? Du brauchst nicht 500 Signale das sich was tut, sondern es reichen wahrscheinloch 10 ach aus
Wie schon geschrieben ist das hier mein erster Test, die 500 Impulse waren auch nur zu Testzwecken, um dem Servo mit 10 Sekunden genug Zeit für das Anfahren der Position zu geben. Im endgültigen Programm wird das natürlich nicht in dieser Form passieren.
So, hier mal die aktuelle Version des Testprogramms:
Code:
#define F_CPU 8000000UL //Quarzfrequenz
#include <avr/io.h>
#include <util/delay.h>
#define SERVO_2 PB1
int main (void)
{
DDRB |= 1<<SERVO_2; //als Ausgang definieren
while(1)
{
PORTB |= 1<<SERVO_2;
//Pin einschalten
_delay_us(1500);
//Positionsinformation einsetzen
PORTB &= ~(1<<SERVO_2);
//Pin ausschalten
_delay_ms(18);
//auf 20ms auffüllen
}
return 0; //wird nie erreicht
}
Der Aufbau ist noch immer der gleiche, also ein Servo an Pin B1 des AtMega32.
Ablauf:
Bei Einschalten des Netzteils dreht der Servo sich ca 2 mm (werden so ca 15° sein schätz ich mal) in die gewünschte Richtung.
Danach nichts mehr.
Beim herumspielen hab ich gerade festgestellt, das der Servo sich jedes mal, wenn ich die Servo-VCC-Leitung vom Netzteil abstecke und wieder anstecke erneut 15° dreht, bis er in Mittellage ist, danach zuckt er nur noch ganz leicht, verharrt aber in Mittellage.
Interessante neue Erkenntnis wie ich finde.
Kann das eventuell irgendwer deuten?
Ich "wackel" hier nicht mit dem Stecker des Servos (also kein Wackelkontakt im Anschluss), um das auszuschleißen habe ich die Spannungsversorgung über ein Steckbrett umgeleitet und stecke hier nur direkt am Steckbrett ab und an.
LG
ijjiij
PS: Mit beiden Servos das gleiche Ergebnis! Die Servos ansich sind nicht kaput und funktionieren einwandfrei.
Lesezeichen