PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 8 servos mit bascom ansteuern



Roboman93
09.10.2008, 20:32
ich versuche gerade, meinem 4-beiner das laufen beizubringen. aller dings scheitere ich schon an der ansteuerung der servos. ich habe sie folgendermaßen initialisiert:


Config Servos = 8 , Servo1 = Portc.7 , Servo2 = Portc.6 , Servo3 = Portc.5 , Servo4 = Portc.4 , Servo5 = Portc.3 , Servo6 = Portc.2 , Servo7 = Portc.1 , Servo8 = Portc.0 , Reload = 20

dann gebe ich den befehl, nur ein servo zu bewegen:



Do
Servo(6) = 150
Wait 1
Servo(6) = 50
Wait 1
Loop


wenn ich das programm auf dem atmega 16 starte, bewegen sich aber alle servos in vollen ausschlag und zwar nicht flüssig, sonsern ruckweise und hören auch nicht auf, wenn sie die maximale stellung erreicht haben.

könnte das an den timern liegen?

mfg roboman

unleashed
09.10.2008, 21:22
Funktioniert der Code, wenn du nur einen Servo in der Config einträgst und ansteuerst?

wenn ja, könnte es an Bascom liegen und 8 Servos sind zu viel

wenn nein vllt. den reload umstellen

python_rocks
10.10.2008, 08:34
wenn ich das programm auf dem atmega 16 starte, bewegen sich aber alle servos in vollen ausschlag
Hallo roboman!

Probiere mal folgendes:
- Stelle einen Wert für jeden Servo ein.
- Nimm einen Quarz und stelle den AVR so ein, dass dieser verwendet wird.

mfg
Gerold
:-)

Roboman93
10.10.2008, 10:49
jetzt ha ich noch ein komisches problem. wenn ich alle servos auf mittelstellung fahre, gibts mir bei diesem code:


Servo(1) = 100
Servo(2) = 100
Servo(3) = 100
Servo(4) = 100
Servo(5) = 100
Servo(6) = 100
Servo(7) = 100
Servo(8) = 100


diese fehlermeldung:


line 16: index out of range[2]
line 16: Array index out of range[2]


das ergibt für mich keinen sinn, da sich die fehlermeldung auf das servo(2) und nicht auf das servo(1) bezieht, obwohl die alle gleich sind.

ich hoffe, da weiß jemand besser bescheid als ich.

mfg roboman

Roboman93
10.10.2008, 10:51
sorry, hatte nach dem test vergessen, bei config servos = die 1 durch ne 8 zu ersetzen.

mfg roboman

Roboman93
10.10.2008, 10:54
so, habs probiert, klappt aber immer noch nicht. alle servos bewegen sich ruckartig in vollausschlag. kann man nicht immer 4 servos auf einen timer setzen? kann man 2 mal config servos = 4 schreiben?

mfg roboman

python_rocks
10.10.2008, 11:56
klappt aber immer noch nicht
Hallo roboman!

Dann fehlt noch der Test mit einem höheren Systemtakt. Und vergiss nicht, die Zeile ``$crystal=...`` anzupassen. Sonst weiß Bascom nicht, mit welcher Frequenz du den µC betreibst und versaut das Timing für die Ansteuerung der Servos.

mfg
Gerold
:-)

Roboman93
10.10.2008, 13:18
ok, kanns leider erst in 1,5 wochen testen, weil ich jez wegfahre, aber danke für den tipp.

mfg roboman

Panzer4000
10.10.2008, 14:01
Hallo,

das mit den 4 Beiner fuzt gut. Lass dir helfen, aber gib mir mehr Input.

1. Crystal(Frequenz)
2.Reload= ist ein Wert in dem der µc bei Servo Befehle sendet.
3.ist Port als Ausgang definiert???
denke-50 der eine Anschloag 150 der andere. ( ist aber nicht immer genau.
auch wenn erst in 1,5 Wochen


Gruß