PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : servoansteuerung



zwerg1
12.01.2005, 10:17
Hallo

Wie kann ich mit einem ATmega8 einen oder mehrere Servos ansteuern?
bitte helft mir

x-ryder
12.01.2005, 14:43
mit was proggste denn?

bascom basic, c oder asm?

Gottfreak
12.01.2005, 19:22
bitte helft mir

Das musst du echt nicht immer so auffordernd dranhängen.
Anderer Vorschlag: Hilf dir selbst: Die Forensuche nach "Servo" im Forum "AVR RISC"(also hier) führt auf mehrere sehr ausführliche Beiträge(Vorteil: Du musst nicht auf die Antwort warten bzw. kannst deine Frage gleich genauer stellen, wenn du schon was zum Thema gelesen hast.).

zwerg1
13.01.2005, 14:12
@x-ryder
naj ich programmier lieber mit Basic (bin aber noch nicht so gut)

@Gottfreak
das ist halt meine Art immer eine Aufforderung irgendwo dranzuhängen wo sie eigentlich nicht hinpasst.
Kannst z du mitr mal die genauen Links geben? (ich find die nicht die du mir gesagt hast)

Gottfreak
13.01.2005, 19:29
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=3198&highlight=servo
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=4242&highlight=servo


naj ich programmier lieber mit Basic (bin aber noch nicht so gut)

Dann guck' mal in der Bascom-Hilfe(das hat nämlich(soweit ich weis, hab' ich selber noch nicht benutzt) schon fertige Servo-Befehle)

x-ryder
13.01.2005, 19:51
siehe: "config servos"

und das ganze läuft so:


config servos=2, servo1=portb.1, servo2=portd.5, reload=10

servo(1)=200 'ganz rechts
servo(2)=100 'ganz links

Martin

zwerg1
14.01.2005, 16:03
danke das werd ich mal probieren

zwerg1
14.01.2005, 16:04
aber wie schließe ich das an?

x-ryder
14.01.2005, 17:32
schwarz -> masse
rot -> +5V
gelb/weiß -> signal (bei meinem ersten servo wäre das dann portb.1)

Martin

Arne
14.01.2005, 21:33
Hallo,

wenn ich folgenden Code

config servos=1, servo1=portb.1, reload=10
servo(1)=150

ausführe, sollte doch der Servo in der Mittenstellung anhalten?!

Hardwaremäßig ist der Servo an 5V angeschlossen und das Impulssignal direkt an Portb.1 gelegt.
Bei mir fährt das Servo aber nur an den Anschlag und will immer weiter.
Ist der Servo kaputt oder mache ich etwas falsch?!

x-ryder
14.01.2005, 21:35
ich nehme an du hast KEIN "enable interrupts" drinne!

14.01.2005, 21:57
der gesamte Code lautet:
'Test zur Ansteuerung von Servos

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


Servo(1) = 150

FoCus
15.01.2005, 19:08
20 Servos mit einem ATMega8

http://www.4finger.net/~smay/avr/servomaster/
http://www.4finger.net/~smay/avr/servotester/


Gruss
Michael

zwerg1
18.01.2005, 14:22
@x-ryder
brauch ich den Befehl:
ENABLE INTERRUPTS auch wenn ich ein
Servo ansteuere?

x-ryder
18.01.2005, 14:24
jepp (ich bin ein nicht sichbarer leertext)

zwerg1
19.01.2005, 10:10
ok danke das werd ich mal probieren

Björn
14.02.2005, 18:43
Moin, habe diesen COde:
$regfile = "m8def.dat"
$crystal = 1000000

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


Servo(1) = 150

Das Servo tickert nur so - woran kann's liegen?
BJörn

incertius
21.02.2005, 20:21
Hi Björn,
ich weiss es auch nicht genau, aber ich glaube du solltest noch folgendes unten an deinen Code anbringen:

Do
Loop

Und gib anstatt "config Portb = Output" einmal "config Pinb.1 = Output" ein!

Ich hoffe ich konnte dir helfen.

Björn
25.07.2005, 19:59
Muss das leider nochmal aufgreifen - funst nähmlich immer nocn nicht.



$regfile = "m8def.dat"
$crystal = 7372800

Config Portb = Output

Enable Interrupts

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

Do
Servo(1) = 150
Loop


Nicht das geringste Zeichen am Servo.

Gruß, Björn

Kjion
25.07.2005, 22:59
Hast du mal versucht Reload auf 20 Millisekunden hochzusetzen ??

Manche Servos wollen nun einmal die 20 Millisekunden Pause haben ( schon selbst ausprobiert ).

MfG Kjion

Michael
26.07.2005, 00:35
Hallo Kjion,
der Reload bezieht sich auf die Auflösung des Servoimpulses. Die Wiederholdauer von 20-25ms ist fest.
Impulslänge = Servowert*Reloadwert(in µS)
Gruß, Michael

Baumschubser
26.07.2005, 00:38
Ich probiere grade auch nen Servo laufen zu lassen.
Wenn ich oben genannten Code verwende, dreht sich mein Servo auf Mittelstellung - aber nur von links aus. Ab 90° bleibt er einfach stehen.

Benutze ich das Codebeispiel aus der Bascom Hilfe dreht sich der Servo aus jeder Stellung immer an den linken Anschlag (0°). Ich erhalte jedes mal eine ruckelnde, zeitlich langsamer werdende Bewegung.

Was gibt eigentlich "Servo(1) = x" an? Die Pulsbreite?
Jedenfalls treten für unterschiedliche x-werte keine veränderungen bei mir auf.
Kann vielleicht jemand ein kurzes Programm posten, mit dem ich den Servo gleichmäßig in beide Richtungen drehen lassen kann, eventuell noch Geschwindigkeitsänderung inbegriffen? Dies würde mir zum Verständnis des Ganzen sehr helfen. Mit der Suche hab ich leider nichts gefunden, was mir wirklich weiterhelfen konnte.

Mfg Baumschubser