Forum: Mikrocontroller und Digitale Elektronik Servo zittert nur an C-Control Mikro


von Andi (Gast)


Lesenswert?

Hallo Zusammen,

ich hätte eine Idee für ein lustiges Projekt, aber es möchte nicht 
klappen.
An meinen Gartenteich möchte ich einen Zwerg mit einer Angel stellen.
Per Bewegungsmelder soll sich der Zwerg dann wenn jemand vorbei geht, 
schnell wegdrehen und die Angel schleudern.
Und da ich aus meiner Modellbaukiste noch viele Servos habe, wollte ich 
einen solchen unter den Zwerg schnallen.

Mit meiner C-Control Mikro und dem Entwicklngsboard habe ich es nun 
probiert.
Schliesse ich einen Servo an und nehme das Beispielprogramm aus der 
CControl-CD funktioniert es einwandfrei.
Sobald ich am Poti am Baord drehe, dreht der Servo einwandfrei mit.

Mein Problem ist aber, dass sobald ich den Code verändere, der Servos 
gar nichts macht, stehen bleibt, oder zittert.
Er soll ja eigenlich nur einmal schwenken, dann für 5 Sekunden warten 
und dann zurück in die Ausgangsposition.
Also dacht ich mir in etwa so (zum Test mit Taster an Port 3).
#Start
Programmblablabla
Pos2=20
if Taster=off then
    Pos2=100
    pause 1000
end if
goto Start

Hier ist der Beispielcode, der einwandfrei funktioniert und den ich 
eigentlich nur mit o. g. code modifiziere:
'--------------------------
'------ I/O PORTS ---------
'--------------------------
define POS1     byte[1]
define POS2     byte[2]
define SERVO1   port[4]
define SERVO2   port[5]
define ADC6     ad[6]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
define ADJ2     byte


'---------------------------------------------------
'------ DRIVER INIT POR PAGE AND PORTS -------------
'---------------------------------------------------
SYS FD34h 'PAGE0
'SYS FC37h 'PAGE1
SERVO1=off
SERVO2=off
'---------------------------------------------------

'--------- SETTING SERVO 1 POSITION ---------------
POS1=100
'--------- SERVO 2 POSITION ADJUSTABLE ------------
#los
ADJ2=ADC6/2
'--------- LIMIT SERVO POSITION TO 100 ------------

if ADJ2<=100 then POS2=ADJ2
if ADJ2>100 then POS2=100
goto los
syscode "SERVO_P4P5.s19"

attributes

end attributes

Hat jemand eine Idee?

Dank Euch und Pfürt Euch
Andi

von Gaagli (Gast)


Lesenswert?

Simulier dein Programm mal (im Kopf). Was passiert, wenn du Taster 
gedrückt hältst? Das muss reichen. Viel Spaß!

von MaWin (Gast)


Lesenswert?

Der Servo muss dauernd (alle 25msec) seine Impulse (von 1 bis 2 msec 
Dauer) bekommen.

von Andi (Gast)


Lesenswert?

Hey Hallo Danke Ihr Beiden.
Da ich nach dem Tastendruck das Programm eh in eine Pause schicke, ging 
ich davon aus, das passt schon.

Aber Dank Eurer Antworten habe ich jetzt 2 neue hoffnungsvolle Ansätze. 
Das könnte es ja wirklich sein.

DANKE
Andi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.