Go Down

Topic: [solved] Servo zittern bei I2C LCD Verwendung (Read 1 time) previous topic - next topic

Olvo

Mar 09, 2015, 12:34 pm Last Edit: Mar 10, 2015, 01:12 pm by Olvo
Habe hier gerade das Problem entdeckt das ich meine Servos zittern wenn ich via I2C gleichzeitig ein LCD Display "füttere"

Hat hier jemand eine Idee, wie ich dieses Problem elegant beheben kann?

Würde es vielleicht schon aufhören wenn ich das LCD nicht via I2C bespiele, sondern konventionell?
oder sollte ich die Servo Libary meiden und die Servos direkt aus dem Code ansteuern?

SerialQ

Hi!

Definier mal was du mit zittern meinst und gib uns mal eine Übersicht über deine Beschaltung.
Evtl. hängt es auch mit der Versorgung zusammen (zu wenig Leistung für beides).
Betreibst du beides über den Arduino-5V Pin?

LG
Follow me on my adventures and see how I´m reinventing the wheel.
visit my blog
[http://serial-q.blogspot.co.at]
or see my instructables
[http://www.instructables.com/member/SerialQ]

Klaus_ww

Du solltest mal schauen, wie Du den Servo und das LCD mit Strom versorgst - und uns dann verraten.
Freizeit-Programmierer mit moderatem Ehrgeiz besseren Code zu schreiben.

Serenifly

LCDs können durch die LED-Hintergrundbeleuchtung mehr Strom ziehen als man denkt.

Olvo

Mit zittern meine ich, das die Servos in Ruheposition (Stillstand) um ca 2-3Grad hin- und her zittern.

Spannungsversorgungs Probleme schließe ich aus, da die Servos genau so wie das LCD eine vom Arduino unabhängige Spannungsquelle haben.
Es ist auch so das wenn ich das LCD nicht mit Daten füttere das Problem sofort aufhört.

Vermute das es beim füttern des LCD ein interupt verwendung findet, welches die Servo PWM stört.
Das äußert sich auch dadurch dass wenn ich nur im 5sek Takt Daten an das LCD gebe auch das zittern nur alle 5sek kurz auftritt.

SerialQ

Du kannst, sofern du das LIB verwendest, versuchen ob das Problem behoben ist wenn du nach anfahren der Wunschposition "myservo".detach() aufrufst und vor anfahren "myservo".attach("PIN"). Kann schon sein, dass du ein paar Interferenzen einfängst die den Komparator in der Servo beeinflussen...
evtl. mal schauen ob du die Verkabelung optimieren kannst.
Follow me on my adventures and see how I´m reinventing the wheel.
visit my blog
[http://serial-q.blogspot.co.at]
or see my instructables
[http://www.instructables.com/member/SerialQ]

Olvo

Wenn ich den Servo aber nicht mehr ansteuere verliert er doch auch seine Haltekraft. Das wäre recht ungeschickt, da sie nie Lastlos sein werden.

SerialQ

Stimmt...
Aber wenn die dauernd Last drauf hat bzw. dauernd etwas in eine Richtung des Servohorns drückt wird die immer Versuchen über den Komparator nachzuregeln.
Ich hatte das Problem bei einer Linearübersetzung und hab das dann mit detach() behoben. aber da drückt dann nichts auf das Servohorn. Ich kann dir am Abend mal schauen ob die Servo nachgibt/ob noch haltekraft vorhanden ist... ansonsten bin ich da auch ratlos.
Ohne LCD versucht die Servo nicht nachzuregeln? Sicher, dass es mit dem LCD zusammenhängt?
Liefer uns mal eine Schaltung und den Sketch...

LG
Serial
Follow me on my adventures and see how I´m reinventing the wheel.
visit my blog
[http://serial-q.blogspot.co.at]
or see my instructables
[http://www.instructables.com/member/SerialQ]

guntherb

Die Servolib wird vom I2C gestört.

Eines von beiden solltest du weglassen.

Wenn es nicht allzuviele Servos sind, kannst du die auch "zu Fuß" ansteuern.

ich hatte mir mal eine Funktion geschrieben, weil ich eben genau das gleiche Problem hatte.
Allerdings waren es bei mir nur 2 Servos.



Grüße
Gunther

Olvo

#9
Mar 09, 2015, 03:37 pm Last Edit: Mar 09, 2015, 07:49 pm by Olvo
Dann müsste das eine konventionelle Ansteuerung des LCD ohne I2C das Problem doch auch beheben?

Olvo

Also der Ansatz von guntherb fand ich gut, jedoch bei 3 unterschiedlichen Servos zu aufwendig.

Ich habe jetzt den I2C Controller vom Display entfernt und es konventionell angeschlossen. Das zittern hat jetzt aufgehört und die Servos stehen ruhig im Stillstand.

Go Up