Arduino,Servo. ungewollte Bewegung..
|
26.09.2014, 08:59
Beitrag #1
|
|||
|
|||
Arduino,Servo. ungewollte Bewegung..
Hallo ,
wende mich mal an alle die mit Arduino und ATtinys ihre Modelle betreiben. Auf meiner Anlage setze ich zwecks Belebung den Arduino UNO bzw. ATtiny ein. Lichtsteuerung, Kinderschaukel, Hebebühne, Weichen, Türen und Tore. Aber mit einem Sketch liege ich im Klinsch. Wenn die Spannung eingeschaltet wurde und ich einen Taster betätige fährt das Servo immer erst in eine Stellung und dann sofort zurück. Erst jetzt gehorcht das Servo auf jeden Tastendruck. Mit der Zeit hat man sich darauf eingestellt. Aber es ist doch oft nervig. Wer kann den Sketch anpassen, damit diese ungewollte Bewegung entfällt. Siehe Video und Sketch. https://www.youtube.com/watch?v=1FV_v-ye...e=youtu.be Das Servo wird mit zwei Tasten angesteuert. MfG Georg. //---------------------------------------------------------------------- // Servo Georg //---------------------------------------------------------------------- // Der Taster muß den Pin auf Ground/Masse/Minus schalten, /*** Atmega328 Konfiguration hier!!! ***/ /* int tasterPin1 = 8; //Taster1 an Pin 8 angeschlossen int tasterPin2 = 9; //Taster2 an Pin 9 angeschlossen int Servo_Pin = 12; //Servo an Pin 12 */ /*** Alternative 8-pinnige ATtiny45 Anschlusskonfiguration hier ***/ // von hier... int tasterPin1 = 8; //Taster1 an IC Pin 2 des Attiny 45 int tasterPin2 = 9; //Taster2 an IC Pin 3 des Attiny 45 int Servo_Pin = 12; //Servo an IC Pin 5 des Attiny 45 // bis hier int Stellung1 =50; //ServoStellung 1 (Einstellbar zwischen Min 0° bis max.180° Winkel, auf) int Stellung2 = 165; //ServoStellung 2 (Einstellbar zwischen Min 0° bis max.180° Winkel, zu) int Stellung_bisher; // Für Vergleich const int Warten = 19; // 19 MilliSekunden Warten nach Stellschritt. Nicht verändern! void Servo_move(int servo,int Stellung_Neu); //------------------------------------------------------------- void setup() { pinMode(tasterPin1, INPUT); //tasterPin1 (Pin 8) wird als INPUT definiert pinMode(tasterPin2, INPUT); //tasterPin2 (Pin 9) wird als INPUT definiert digitalWrite(tasterPin1,HIGH); // Interen Pullupwiderstand aktivieren digitalWrite(tasterPin2,HIGH); // Interen Pullupwiderstand aktivieren pinMode(Servo_Pin,OUTPUT); Stellung_bisher=Stellung1; // Ruhestellung } //------------------------------------------------------------- void loop() { if (digitalRead(tasterPin1) == LOW) Servo_move(Servo_Pin, Stellung1); if (digitalRead(tasterPin2) == LOW) Servo_move(Servo_Pin, Stellung2); delay(20); } //------------------------------------------------------------- /*** Ab hier nichts ändern, bestimmt das Timingverhalten!!! ***/ void Servo_move(int servo,int Stellung_neu){ int Schritt; if (Stellung_neu == Stellung_bisher) return; Schritt = (Stellung_neu > Stellung_bisher) ? 1 : -1; while(Stellung_bisher != Stellung_neu){ Stellung_bisher+=Schritt; // Servo stellen digitalWrite(servo,HIGH); delayMicroseconds((Stellung_bisher * 10)+500); digitalWrite(servo,LOW); delay(Warten); } } |
|||
26.09.2014, 09:59
(Dieser Beitrag wurde zuletzt bearbeitet: 26.09.2014 17:16 von Corvus.)
Beitrag #2
|
|||
|
|||
RE: Arduino,Servo. ungewollte Bewegung..
Änder in setup() die Zeile
Stellung_bisher=Stellung1; mal in folgendes: Stellung_bisher=Stellung2; gruß lorenz |
|||
27.09.2014, 22:46
Beitrag #3
|
|||
|
|||
RE: Arduino,Servo. ungewollte Bewegung..
Per PN schriebst du, dass es mit der Änderung auch nicht funktioniert. Die Position des Servos kann dein Controller nach einem Neustart nicht wissen.
Also ab damit in den EEPORM: Zitat:#include <EEPROM.h> gruß lorenz |
|||
27.09.2014, 23:06
Beitrag #4
|
|||
|
|||
RE: Arduino,Servo. ungewollte Bewegung..
(27.09.2014 22:46)Corvus schrieb: Per PN schriebst du, dass es mit der Änderung auch nicht funktioniert. Die Position des Servos kann dein Controller nach einem Neustart nicht wissen. iiiih....mit der Farbe wird der Code beim antworten ja sowas von unleserlich ![]() Aso, nicht vergessen im setup() Abschnitt das Servo mal so 10 Zyklen lang mit Position1 anzusteuern damit auch alles durchinitialisiert ist. Wobei ich die Syntax in der Servo-move Routine nicht wirklich ganz verstehe... ![]() Wobei normalerweise ein Servo alle 20mS einen Impuls erwartet welcher hier ja nur ausgegeben wird wenn eine Stellungsänderung ansteht. Wurde das denn mit dem verwendeten Servo zusammen denn auch ausgiebig getestet das es unschädlich ist wenn das Servo lange Zeit keinen Impuls bekommt ? lg bk 1+1 = 10 ![]() ![]() |
|||
28.09.2014, 11:46
(Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2014 15:13 von Lothar.)
Beitrag #5
|
|||
|
|||
RE: Arduino,Servo. ungewollte Bewegung..
Hallo,
danke für die Erweiterung des Sketch. Ich habe diesen in den Arduino geschrieben. Den Arduino mit Externer Spannung versehen, die Taster und das Servo angeschlossen. Leider ist das ungewollte Zucken nicht ganz weg. siehe Video. https://www.youtube.com/watch?v=fYomcyRd...e=youtu.be MfG Lothar |
|||
28.09.2014, 12:00
(Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2014 12:06 von Thorsten Pferdekämper.)
Beitrag #6
|
|||
|
|||
RE: Arduino,Servo. ungewollte Bewegung..
Hi,
von wegen EEPROM: Man sollte IMHO beachten, dass das EEPROM nicht beliebig viele Schreibzyklen aushält. Gruß, Thorsten Hi, nochwas: Hast Du in setup das Servo mal explizit auf Stellung1 gefahren? Gruß, Thorsten Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen. |
|||
28.09.2014, 14:17
(Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2014 14:18 von Lothar.)
Beitrag #7
|
|||
|
|||
RE: Arduino,Servo. ungewollte Bewegung..
Hallo Thorsten,
wie darf ich das verstehen --- auf Stellung 1 gefahren. Wie im Video gesehen. habe ich das Servo mal auf Tor auf gefahren. Spannung ausgeschaltet, etwas gewartet dann Spannung ein und den Taster , Tor zu betätigt. Genauso -- Tor zu, Spannung aus, Spannung ein, Taste Tor auf betätigt. Immer wenn die Spannung eingeschaltet wird zuckt das Servo. Beim Spielen wird natürlich nicht dauernd die Spannung ein / aus geschaltet. Läuft so ab. Ich möchte um 19 Uhr spielen, dann wird die Anlage mit Spannung versorgt. .. Servos zucken. Beim weiteren Verlauf reagieren die Servos normal. Um 21 Uhr wird die Anlage Spannungsfrei geschaltet. Am nächsten oder übernächsten Tag Spannung wieder ein und die Servos zucken, egal ob das Tor auf oder zu ist. Die extreme Bewegung wie im Video oben ist es nicht mehr. MfG Lothar |
|||
28.09.2014, 14:21
Beitrag #8
|
|||
|
|||
RE: Arduino,Servo. ungewollte Bewegung..
Hi,
stelle mal die aktuelle Version Deiner setup-Funktion hier rein. Gruß, Thorsten Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen. |
|||
|
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste