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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Andi (Gast)


Bewertung
0 lesenswert
nicht 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)


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

von MaWin (Gast)


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

von Andi (Gast)


Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.