hallo liebes forum,
ich habe ein problem mit einer servo-steuerung über arduino. über zwei
potentiometer soll ein servo gesteuert werden. ein poti ist für die
stellung des servos, der zweite poti realisiert eine "shutter"-funktion,
also der servo bewegt sich von seiner ausgangsstellung 30° nach links
und wieder zurück. über den poti wird die geschwindigkeit dieser
bewegung gesteuert. (ca. von 0/min bis 20/min)
mein programm dazu ist vielleicht nicht das schönste und schlankeste,
funktioniert jedoch eigentlich. es hatte den makel, dass das einlesen
des poti-wertes über analogRead schwankende werte liefert und der servo
damit etwas zuviel hin- und herspringt. um dieses problem zu beseitigen,
wollte ich neben einer hysterese die werte des potis 10x hintereinander
einlesen lassen und dann mitteln.
und da sitze ich jetzt seit stunden vor und komm nicht weiter:
mein programm liefert mir zu jedem zeitpunkt (über serielle ausgabe
tausendfach gegengecheckt) für alle größen die richtigen werte; also die
stellung der potis werden zu jedem zeitpunkt richtig erkannt; die
berechnungen kommen hin; das programm hängt sich nicht auf, sondern
liefert stets alles so, wie es sein soll. jedoch: der servo bewegt sich
nicht - kein mucks zu hören oder zu sehen.
nehme ich hingegen im code das zehnmalige auslesen und mitteln des
poti-wertes weg, stellt sich der motor, wie er soll (dann machen aber
die schwankenden poti-werte probleme...)
nun habe ich gesucht und wenig gefunden; ein delay hinter analogRead
bringt nichts.
vermutlich hat es was mit der größe des potis zu tun (180k)..? aber wenn
das der grund sein soll, verstehe ich nicht, warum ich mir meine werte
direkt vor und nach dem befehl myservo.write() ausgeben lassen kann, und
sie immer stimmen, der motor sich mit diesen werten jedoch nicht bewegt.
wie gesagt, kürze ich die mittelung raus, funktioniert es. und die
mittelung funktioniert auch...
weil es im gleichen aufbau mit weniger analogRead alles klappt, schließe
ich eine zu geringe stromversorgung als fehlerursache aus...
über anregungen wäre ich sehr dankbar, ich versteh es einfach nicht.
was macht dieses analogRead mit dem arduino? warum wäre 10k poti besser
als 180k?
gute nacht euch allen und danke für etwaige hilfe,
carsten
und ich bin noch anfänger, bitte nicht über den schlampigen code
schimpfen...
p.s. nochmal nachgemessen: der arduino sendet einfach kein signal am
servo-pin. doch es liegt nicht am pin, der funktioniert beim
servo-beispielprogramm einwandfrei...