PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rn-minicontroll servo zuckt nur



sreuss
07.09.2009, 19:30
Hallole zusammen,

habe ein RN-Minicontroll Board und will damit später mal mehrere Servos ansteuern, jedoch habe ich schon bei einem Servo das Problem das wenn ich das Programm aus der Hilfe in meinen Controller einspiele das der Servo nur zweimal kurz, und immer in die gleiche Richtung zuckt.
Habe leider keinen mit dem gleichen Problem gefunden. Hoffe mir kann Trotzdem jemand helfen.

Vielen Dank schon mal


$regfile = "m168def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
$hwstack = 32
$framesize = 32
$swstack = 32

Dim Center As Integer
Dim Servopos As Integer
Dim Left As Integer
Dim Right As Integer
Left = 50
Right = 150
Center = 100
Servopos = Center

'Servo config
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10

'as an option you can use TIMER1

'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1

'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

'ende Servo config

Do
Print "Servo Test"
Wait 1

Servopos = Center
Servo(1) = Servopos
Wait 10

Servopos = Left
Servo(1) = Servopos
Wait 10

Print "Rechtsdrehung"
For Servopos = Left To Right Step 10
Servo(1) = Servopos
Wait 10
Next
Wait 10

Print "Linksdrehung"
For Servopos = Right To Left Step -10
Servo(1) = Servopos
Wait 10
Next
Wait 10

Print "Mitte"
Servopos = Center
Servo(1) = Servopos

Loop

Horstel
08.09.2009, 09:18
Hast du den Servo an einer eigenen Versorgungsspannung ?
Es könnte sein das der Servo zu viel Strom zieht wenn er sich bewegt und dadurch die Versorgungsspannung des Controllers kurz zusammenbricht und sich der Controller resettet. Und dann beginnt das Spiel von vorn ;)

Suggarman
08.09.2009, 15:58
Folgendes fällt mir auf:

Servo(x) ist eine Byte-Variable, vielleicht stört die Integer-Variable
50 und 150 könnten bereits außerhalb des möglichen Stellbereiches liegen. Teste mal 80 bis 120.
Wozu gehst du den Umweg über Servopos?
10 Sekunden Pause sind zum Testen recht lang.
Servos brauchen eine eigene Stromversorgung.
Masse Servo muss an Masse Controller.

Viel Erfolg.

Stefan

sreuss
08.09.2009, 20:06
Hi,

das ging ja super schnell mit einer antwort, und es scheint jetzt auch zu funktionieren. Habe den Servo jetzt direkt an mein Netzteil geklemmt. Dachte es reicht wenn ich das Netzteil voll hochdrehe ( auf 12 V ).

Was mir allerdings noch etwas komisch vor kommt ist das der Servo erst gegen den Uhrzeigersinn auf Anschlag dreht. Danach dreht der Servos schon hin und her. Zumindest auf die Left und Right Positionen, Center Position funkt jedoch nicht.

Grüßle

Suggarman
09.09.2009, 09:07
Hi,

das ging ja super schnell mit einer antwort, und es scheint jetzt auch zu funktionieren. Habe den Servo jetzt direkt an mein Netzteil geklemmt. Dachte es reicht wenn ich das Netzteil voll hochdrehe ( auf 12 V ).


12 V am Servo? Und das lebt noch? Üblicherweise laufen Servos ca. mit 4-7 V :-)

sreuss
09.09.2009, 16:21
:) ne hatte die 12V am Board und den Servo dann am ganz normal angesteckt.
Jetzt wo ich den Servo direkt am Netzteil habe läuft es nur mit 6V

High Light
09.09.2009, 20:30
Hey,

i sag mal danke, kann zwar nix zum Thema mehr beitragen,
aber der Quellcode hat mir sehr weiter gebracht.

Eine Frage habe ich, kennt sich hier jemand mit Lipos aus?
Vlt kann sich ja jemand bei mir melden.

Gruß High Light

sreuss
09.09.2009, 21:54
Also das ist der aktuelle Stand der Funzt. zur abwechslung auch mal *g*



$regfile = "m168def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
$hwstack = 32
$framesize = 32
$swstack = 32

Dim Center As Integer
Dim Pos1 As Integer
Dim Pos2 As Integer
Dim Pos3 As Integer
Center = 105
Pos1 = 30
Pos2 = 180
Pos3 = 140


'Servo config
Config Servos = 1 , Servo1 = Portd.2 , Reload = 10


Config Portd = Output




'finally we must turn on the global interrupt

Enable Interrupts

'ende Servo config

Do
Servo(1) = Center
Waitms 1000

Servo(1) = Pos1
Waitms 1000

Servo(1) = Center
Waitms 1000

Servo(1) = Pos3
Waitms 1000

Servo(1) = Center
Waitms 1000

Servo(1) = Pos2
Waitms 1000

Loop