PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geknackten Servo als Antrieb ??



khazad
15.12.2004, 14:06
Hi, Hab mir mit meinem Mega8 eine Grundschaltung auf meinem Steckbrett aufgebaut und würde jetzt ganz gerne 2 geknackte Servos (Elektronick umgangen und anschlag entfernd) als Antriebsmotoren verwenden. Mein problem ist jetzt nur wie bekomme ich das hin ?? ein weiteres Problem ist das der Servos bei 5V zu langsam dreht und ich ihn gerne mit 6 V betreiben möchte. aber wie Steuer ich ihn nun an das er auch rückwärts drehen kann also beide richtungen bin sehr neu auf dem gebiet währe toll wenn ihr mir da helfen könntet

mfg Maik

BooStar
15.12.2004, 15:09
Schau mal nach einer Halbbrücke oder Vollbrücke. Kannste fertig als L293D (bis ca. 1A) oder als L298 bis 4A kaufen.
Die 6V mußt Du aus der Vorsorgungsspannung (normal 12V) klauen und mit der PWM vom AVR runterregeln. Also 50% Abtastung für 6V

RCO
15.12.2004, 15:25
Warum umgehst du die Elektronik? Die eignet sich doch perfekt als Fahrtenregler.

MFG Moritz

khazad
15.12.2004, 17:31
Ich umgehe die Elektronik weil ich keine Ahnung habe wie ich sie benutzen kann. Wie gesagt bin halt nen Anfänger


Die 6V musst Du aus der Vorsorgungsspannung (normal 12V) klauen und mit der PWM vom AVR runterregeln.

öhm... mein Akku hat 1700mAh und 6V, 5 mal 1,2V also wieso 12V ? mein Spannungsregler wird so schon sau heiss und der AVR bleibt auch nicht gerade kühl... was ist denn ne Halbbrücke oder eine Vollbrücke ??

pwm ?, wie geht das mit dem Mega8 ?? kann der überhaupt mehr als 5V ab ??

mfg Maik

RCO
15.12.2004, 18:01
Also Heiß darf der AVR auf keinen Fall werden, dann ist da irgendwas falsch. :feuer

Ohne irgendwelche Last sollte auch der Spannungsregler nicht heiß werden, überprüf das lieber alles nochmal! Atmel sagt, du kannst den Mega8 im Bereich von 2.7-5.5V betreiben. Also ich würde die Servoelektronik als Fahrtenregler verwenden, dann brauchst du weder nen L293 noch sonst irgendwas. Du kannst den Steuereingang direkt an den AVr hängen. Elektronik drin Poti raus und durch 2 Widerstände ersetzen, aber dazu findst du auch genug im Forum. Was hast du dennn für Servos?

MFG Moritz

khazad
15.12.2004, 19:16
Hi erstmal danke für die Antworten.
Ich habe zwei Standart Servos wie sie eigentlich bei jeder Fehrnsteuranlage für RC Cars oder so mit geliefert werden.
Ich habe da sowas schon mal gelsen wegen dem Servo bin da aber nie so ganz durchgestiegen vorallem wie ich den am Avr anschliessen soll und wie man das dann Programmieren soll....

ich werde mal meine Schaltung in Eagle machen dann kannst du ja vllt sagen was daran nicht stimmt dauert aber bestimmt ne Stunde bin noch nicht so das Eagle ass


mfg Maik

khazad
15.12.2004, 20:00
So ich habe das Schema fertig habe noch mal alles verbindungen gelöst und wieder drann gemacht und jetzt werden beide nicht mehr war :-D komisch vielleicht hatte ich doch was falsch verbunden das es irgend wo nen kurtzen gab. Aber wie funzt den das nu mit dem Servo ?? hab im forum gesucht aber trotzdem nicht kapiert könnte das vielleicht noch mal einer für dumme erklären ??


mfg Maik



Edit: ich kann es nicht hoch laden

BlueNature
15.12.2004, 20:20
Also Heiß darf der AVR auf keinen Fall werden, dann ist da irgendwas falsch. :feuer

Ohne irgendwelche Last sollte auch der Spannungsregler nicht heiß werden, überprüf das lieber alles nochmal! Atmel sagt, du kannst den Mega8 im Bereich von 2.7-5.5V betreiben. Also ich würde die Servoelektronik als Fahrtenregler verwenden, dann brauchst du weder nen L293 noch sonst irgendwas. Du kannst den Steuereingang direkt an den AVr hängen. Elektronik drin Poti raus und durch 2 Widerstände ersetzen, aber dazu findst du auch genug im Forum. Was hast du dennn für Servos?

MFG Moritz

... ich denke er hat die Motoren direkt an den AVR angeschlossen. Das erklärt auch die langsame Drehzahl weil der Strom irgendwann zuregelt auf einen maximalen Wert am digitalen Port des AVR. Also ich würde den AVR mal tauschen und dann eine Endstufe mit L293D ansetzen. Dann klapts auch mit der Temparatur und auch der Drehzahl.

Grüsse Wolfgang

JanB
15.12.2004, 20:31
Guck mal hier:

http://www.madrat.de/html/funktion.htm

Gruß Jan

RCO
15.12.2004, 21:49
Also der Servo wird zuerst gehakt, dabei werd der "Stopper" entfernt. Das Poti wird ebenfalls entfernt, an seine Stelle treten 2 Widerstände, 2x halber Poti-Wert. Dadurch denkt der Servo quasi er wäre stendig in Mittelstellung. Wenn man ihm jetzt ein Signal gibt, das "rechts" von der Mittelstellung ist, wird er nach rechts drehen, er wird diesen Punkt natürlich nie erreichen deshalb dreht er immer weiter durch. Desto weiter das Angegebene Signal von der Mittelstellung weg liegt, desto schneller dreht er dort hin, so kann man die Geschwindigkeit regeln. Die Signale erhählt der Servo über die Steuerleitung + und - kommen ganz normal an die Spannungsversogung. Der Steuereingang kann direkt an den AVR gehängt werden (Der große Vorteil!).
Das ganze mit den Impulsen steht aber auch auf der seite von JanB.
Bascom hat für den AVR schon vorgefertigte Servo Befehle, die nur noch aus:


Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
und
Servo(1) = I


bestehen. Dabei könten rein theoretisch soviel Servos wie freie I/Os angeschlossen werden, aber irgendwann ist der AVR überfordert.
Hier also mal ein Servo-script für den AVR in Bascom.



'-----------------------------------------------------------------------
' (c) 2001-2003 MCS Electronics
' servo.bas demonstrates the SERVO option
'-----------------------------------------------------------------------

'Servo's need a pulse in order to operate
'with the config statement CONFIG SERVOS we can specify how many servo's we
'will use and which port pins are used
'A maximum of 16 servos might be used
'The SERVO statements use one byte for an interrupt counter and the TIMER0
'This means that you can not use TIMER0 anymore
'The reload value specifies the interval of the timer in uS
'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10

Config Servos = 1 , Servo1 = Portb.0 , Reload = 10

'we use 2 servos with 10 uS resolution(steps)

'we must configure the port pins used to act as output
Config Portb = Output

'finally we must turn on the global interrupt
Enable Interrupts

'the servo() array is created automatic. You can used it to set the
'time the servo must be on
Servo(1) = 10 '10 times 10 = 100 uS on
'Servo(2) = 20 '20 times 10 = 200 uS on
Do
Loop

Dim I As Byte
Do
For I = 0 To 100
Servo(1) = I
Waitms 1000
Next

For I = 100 To 0 Step -1
' Servo(1) = I
Waitms 1000
Next
Loop
End

Noch Fragen? ;-)

MFG Moritz

khazad
15.12.2004, 23:14
Hab das Programm in den AVr geladen aber da tut sich nichts...
hab es danach so versucht

$crystal = 4000000

Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
Config Portb = Output

Servo(1) = 10

Portb.2 = 1
Servo(1) = 50

funzt aber auch nicht was kann ich noch tun ??

Mfg Maik

RCO
16.12.2004, 10:04
Komisch, bei mir läufts. Porbier mal ne Schleife mit ändernden Werten:


$crystal = 4000000

Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
Config Portb = Output
do
Servo(1) = 200
wait 2
Servo(1) = 10
wait 2
loop

Da sollte sich dann aber was tun irgendwo zwischen 10 und 200 muss der Servo liegen!

MFg Moritz

khazad
16.12.2004, 12:45
Servo(1) = 200 wo für steht da eigentlich die 200 ? und was bedeutet die 10 bei Reload ?
werde das gleich mal mit deinem Code Probieren

mfg Maik

khazad
16.12.2004, 13:12
Leider funktioniert das mit deinem Code immer noch nicht vielleicht hilft es wenn ich euch sage das es eine Sanwa 1301 Servo ist.
Hoffe euch fällt noch was ein

mfg Maik

RCO
18.12.2004, 14:24
Also, ich habe eine dumme Sache übersehen, oben im Quelltext muss natürlich noch "Enable interrupts" stehen. Dies Servos können theoretisch an jeden beliebigen port, nicht nur den OSC gehangen werden. Allerdings fährt der servo nicht wie angegeben "wait 2" sondern länger in eine Richtung, ist vermutlich eine Folge der häufigen INterrupts.

MFG Moritz