INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
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);
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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>

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

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=EEPROM.read(0);
}

void loop(){
  if (digitalRead(tasterPin1) == LOW)
  Servo_move(Servo_Pin, Stellung1);
  if (digitalRead(tasterPin2) == LOW)
  Servo_move(Servo_Pin, Stellung2);
  delay(20);
}

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);
  }
  EEPROM.write(0, Stellung_bisher);
}

gruß lorenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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.
Also ab damit in den EEPORM:
...

iiiih....mit der Farbe wird der Code beim antworten ja sowas von unleserlich Angry wech damit...

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...Undecided

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 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ATtiny und Servo Bibliothek malsehen 9 303 15.10.2016 18:09
Letzter Beitrag: malsehen
  Servo soll nur in Ruhelage stoppen Sven1996 1 235 19.08.2016 14:37
Letzter Beitrag: StephanBuerger
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 751 16.07.2016 11:43
Letzter Beitrag: Binatone
  Servo und PWM Ausgabe F2Ingo 4 490 17.06.2016 14:53
Letzter Beitrag: F2Ingo
  Hilfe bei Servo-steuerung Innocence 7 803 23.02.2016 11:00
Letzter Beitrag: hotsystems
  Servo.h lässt sich nicht einbinden ^^ EvilBen 5 694 08.02.2016 18:07
Letzter Beitrag: hotsystems
  Weichensteuerung mit Servo RCudino 21 3.014 05.01.2016 18:04
Letzter Beitrag: Markus0815
  Servo per Serieller Mointor ansteuern iggy 1 814 03.08.2015 03:08
Letzter Beitrag: yasi
  Servo.h und Digitalservos fs82 29 5.998 11.06.2015 18:59
Letzter Beitrag: fs82
  Fehler bei Servo-Bennenung?? Leberwurst 2 729 11.06.2015 05:33
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste