Archiv verlassen und diese Seite im Standarddesign anzeigen : einfache servoansteuerung
rocketman123
25.11.2007, 15:19
ich möchte einen billigen Servo den ich bei conrad bestellt habe mit meinem atmega8 zu laufen bekommen.
ich hab auch schon ein Grundprogramm für bascom gefunden
Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
Config Portb = Output
Enable Interrupts
Servo(1) = 100
Servo(2) = 100
waitms 1000
ich weiss nur nicht wie ich es ergänzen muss dass der servo beim beschalten eines Eingangs nach links dreht und beim beschalten eines anderen Eingans nach rechts dreht.
wie muss ich den servo eigentlich genau anschließen:
+ 5V, - GND, signal PWM ? (welcher Ausgang am atmega8 )
mfg
oberallgeier
25.11.2007, 15:52
Schau mal ob Dir das hier hilft:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=326430#326430
oder dies:
http://www.ais.fhg.de/ARC/3D/download/report/node6.html#SECTION00613000000000000000
oder vielleicht hier:
https://www.roboternetz.de/wissen/index.php/Servos
aber das hast Du ja schon gefunden.
Und das "links" oder "rechts" ist bei mir so definiert: links gehts mit der kurzen Zeit, also Rampenlänge 1 ms oder so, rechts gehts mit der langen Zeit - 2 ms.
rocketman123
25.11.2007, 17:07
gibts da vielleicht irgenwo ne seite wo jede Anweisung erklärt ist oder kann mir jemand so ein beispeilprogramm geben bzw. erkären was ich alles nach und nach programmieren soll. bin noch nicht so fit in basic bzw. c?
mfg
rocketman123
26.11.2007, 20:09
also ich hab gelesen das man bei den servos immer ein PWM signal von 20ms länge und bestimmten spitzen braucht.
für links 2ms rechts 1ms und mitte 1,5ms.
ich hab jetzt n kleines Programm erstellt
$regfile "m8def.dat"
$crystal = 8000000
Config Portb = Output
Do
Portb.2 = 1
Waitus 2
Reset Portb.2
Waitus 2000
Loop
Der servo rückelt beim Fahren und er fährt nicht in eine richtung beim erreichen fährt er wieder langsam zurück und so weiter.
kann es daran liegen das ich keinen externen quarz benutze?
ich hab auch schon mit den zeiten variiert jedoch komm ich auf kein ergebnis.
PWM ist direkt am ausgang PORTB.2 angeschlossen. + und - direkt am servo. richtig so?
mfg
oberallgeier
27.11.2007, 00:10
also ich hab gelesen das man bei den servos immer ein PWM signal von 20ms länge und bestimmten spitzen braucht.
für links 2ms rechts 1ms und mitte 1,5ms.Genau das ist richtig.
... Der servo rückelt beim Fahren und er fährt nicht in eine richtung beim erreichen fährt er wieder langsam zurück und so weiter ...Kannst du mal Deine Schaltung posten?
Klingt irgendwie als hätte der Servo nicht genug Saft. Kenn ich. Du musst etwa folgende Schaltung verwenden (hab ich mir mal in den Quellcode "gemalt" :) ):
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=34751&highlight=
dort ist im letzten Beitrag von mir die Schaltung ungefähr gezeigt. Du brauchst sicherlich eine separate Leitung für die Servoversorgung. Damit das ganze elektrisch stabil ist, kannst/sollst/musst Du GND von Servo und controller verbinden.
So ein Servo kommt kaum unter einem halben Ampere aus.
milkbubi
27.11.2007, 13:46
Hi,
also ich hatte vor ein paar Tagen auch das erste mal... mit Servos.
Dieser Code:
Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
Config Portb = Output
Enable Interrupts
Servo(1) = 100
Servo(2) = 100
waitms 1000
funktioniert schon. Die Sache ist nur, dass man vorher nicht weiß wo die Endwerte für den Servo liegen. Ich hab mit 1 MHz am M32 angefangen, da waren die anschläge 9 und 49 (ungefähr). Bei 16MHz waren sie höher 30 und 90 (ungefähr). Wenn du jetzt außerhalb der Grenzen fährst dann entsteht dieses ruckeln. Also einfach Werte zwischen 0 und 150 ausprobieren. Am einfachsten so:
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Config Portb = Output
Dim i as byte
Enable Interrupts
do
for i = 0 to 150 step 10
Servo(1) = i
waitms 1000
toggle portb.1
next
loop
Der Code sendet jetzt im Sekundentakt werte von 0 bis 150 an den Servo. Außerdem kannst du an Portb.1 eine Led hängen (mit Widerstand) und am ein und ausschalten mitzählen wo er gerade ist.
mfg milkbubi
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.