Björn
15.02.2009, 16:03
Hallo!
Ich habe ein Servo an einem ATmega8 angeschlossen. Dieses wird über Bascom mit dem Befehl Servo angesteuert.
Es funktioniert auch einwandfrei, aber das Servo zieht im Leerlauf (also keine Positionveränderung) sehr viel Strom. Die Schaltung läuft mit einem LM7805 der von 12V auf 5V regelt. Auf der 12V Seite fließen 0,3A, auch wenn das Servo sich gerade nicht bewegt. Allerdings macht das Servo auch dann Geräusche.
Der LM wird folglich richtig heiß. Ist das normal so? Kann ich mir nicht vorstellen.
Der Code sieht so aus:
$regfile = "m8def.dat"
$crystal = 14745600
$baud = 9600
Config Servos = 1 , Servo1 = Portd.5 , Reload = 10
Dim Servorueck As Bit
Servo(1) = 50
Servorueck = 0
'Der Ausdruck mit Controldata heißt hier sinngemäß Taster an/aus
Do
[...]
If Mid(controldata , 2 , 1) = "1" And Servorueck = 0 Then
Servorueck = 1
Servo(1) = 150
Waitms 400
Elseif Mid(controldata , 2 , 1) = "0" And Servorueck = 1 Then
Servorueck = 0
Servo(1) = 50
Waitms 400
End If
Loop
End
[...]
Hardware technisch ist das Servo mit + an 5V, mit - and GND und mit dem Signal direkt am AVR.
Das Servo ist ein Graupner C507 und sollte im Leerlauf (lastfrei) 5mA aufnehmen.
Wisst ihr was ich falsch mache?
Grüße, Björn
Ich habe ein Servo an einem ATmega8 angeschlossen. Dieses wird über Bascom mit dem Befehl Servo angesteuert.
Es funktioniert auch einwandfrei, aber das Servo zieht im Leerlauf (also keine Positionveränderung) sehr viel Strom. Die Schaltung läuft mit einem LM7805 der von 12V auf 5V regelt. Auf der 12V Seite fließen 0,3A, auch wenn das Servo sich gerade nicht bewegt. Allerdings macht das Servo auch dann Geräusche.
Der LM wird folglich richtig heiß. Ist das normal so? Kann ich mir nicht vorstellen.
Der Code sieht so aus:
$regfile = "m8def.dat"
$crystal = 14745600
$baud = 9600
Config Servos = 1 , Servo1 = Portd.5 , Reload = 10
Dim Servorueck As Bit
Servo(1) = 50
Servorueck = 0
'Der Ausdruck mit Controldata heißt hier sinngemäß Taster an/aus
Do
[...]
If Mid(controldata , 2 , 1) = "1" And Servorueck = 0 Then
Servorueck = 1
Servo(1) = 150
Waitms 400
Elseif Mid(controldata , 2 , 1) = "0" And Servorueck = 1 Then
Servorueck = 0
Servo(1) = 50
Waitms 400
End If
Loop
End
[...]
Hardware technisch ist das Servo mit + an 5V, mit - and GND und mit dem Signal direkt am AVR.
Das Servo ist ein Graupner C507 und sollte im Leerlauf (lastfrei) 5mA aufnehmen.
Wisst ihr was ich falsch mache?
Grüße, Björn