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
Geschwindigkeit modifizierter Servo zu hoch
24.05.2015, 21:37 (Dieser Beitrag wurde zuletzt bearbeitet: 24.05.2015 21:43 von murdok1980.)
Beitrag #1
Geschwindigkeit modifizierter Servo zu hoch
Hallo,
ich habe einen Servo modifiziert damit er 360 grad dreht, also Anschläge entfernt, Poti nach draußen gelegt und in Nullstellung fixiert. Ich möchte es gern nach links und rechts ansteuern, sodass es aber extrem langsam dreht. Folgenden Code habe ich verwendet.
Code:
#include <Servo.h>

Servo myservo;  // create servo object to control a servo

void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop()
{
  
  myservo.write(89);                  // rotate counterclockwise full speed
  delay(20000);                          
  myservo.write(90);                  // stop
  delay(1000);
  myservo.write(91);                 // rotate clockwise full speed
  delay(20000);
  myservo.write(90);                  // stop
  delay(1000);
  
}
Jetz braucht er für eine Umdrehung ca 20 Sekunden, ich möchte es aber noch langsamer. Bei einem normalen Servo geht das aber ich brauche die 360 Grad.
Geht das irgendwie zu machen?

Mit nachfolgendem Code kann ich einen normalen Servo extrem langsam laufen lassen.
Code:
int servoPin = 9; // Steuerpin für den Servo
int minPulse = 1300; // Minimalposition des Servos
int maxPulse = 1700; // Maximalposition des Servos
int pulse = 0; // Aktueller Pulswert
int servoSpeed = 1; // Bewegungsgeschwindigkeit

int refreshTime = 100; // Kurze Erfrischungszeit dazwischen

boolean updown = true; // Gehts jetzt Hoch oder Runter

void setup() {
pinMode(servoPin, OUTPUT); // Servopin ist ein Ausgabepin
pulse = minPulse; // Position des Servos startet auf Minimum
Serial.begin(9600); // Serielle Verbindung zur Kontrolle
}

void loop() {

// Neuer Puls nach der eingestellten Pause

if(updown) {
pulse = pulse+servoSpeed;
if(pulse >= maxPulse) {
updown = false;
}
} else {
pulse=pulse-servoSpeed;
if(pulse <= minPulse) {
updown = true;
}
}

digitalWrite(servoPin, HIGH); // Puls beginnt
delayMicroseconds(pulse); // Länge des Pulses bestimmt die neue Servoposition
digitalWrite(servoPin, LOW); // Puls endet

delay(refreshTime);
}
Genau so langsam möchte ich den modifizierten Servo laufen lassen. Hänge ich den modifizierten Servo hier dran, dreht der erst schnell, wird immer langsamer, wechselt die Richtung läuft schön langsam los wird schneller usw.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 00:49
Beitrag #2
RE: Geschwindigkeit modifizierter Servo zu hoch
So das Problem mit der Geschwindigkeit habe ich zum Teil hinbekommen. Nun das nächste Problem Schalte ich Button PIN1 so dreht sich der Servo schön in die eine Richtung langsam, lasse ich los und drücke Button PIN2 so dreht sich der Servo in die andere Richtung nur halt viel zu schnell. Ich finde den Fehler im Code nicht. Kann mal jemand drüber schauen.
Code:
/*
Servo Steuerung eines gehackten Servos


*/
int buttonPIN1 = 2;              // Anschluss Taster, Schalter oder Multiswitch
int buttonPIN2 = 3;              // Anschluss Taster, Schalter oder Multiswitch
int servoPin = 9;               // Steuerpin für den Servo
int minPulse = 500;             // Minimalposition des Servos
int maxPulse = 2500;            // Maximalposition des Servos
int pulse = 0;                  // Aktueller Pulswert
//int servoSpeed = 1;           // Bewegungsgeschwindigkeit
int val = 0;                    // variable for reading the pin status

int refreshTime = 15;           // legt Geschwindigkeit fest

const int buttonPin1 = 2;
const int buttonPin2 = 3;
int buttonState = 0;

void setup()
{
  pinMode(servoPin, OUTPUT);    // Servopin ist ein Ausgabepin
  pulse = minPulse;             // Position des Servos startet auf Minimum
  pinMode(buttonPIN1, INPUT);    // legt Art des Einganges fest
  pinMode(buttonPIN2, INPUT);    // legt Art des Einganges fest
}

void loop()
{
  val = digitalRead(buttonPin1);  //
  if (val == LOW)
{
  digitalWrite(servoPin, LOW); // Puls beginnt
  delayMicroseconds(pulse); // Länge des Pulses bestimmt die neue Servoposition
  digitalWrite(servoPin, HIGH); // Puls endet
  delay(refreshTime);
}
  val = digitalRead(buttonPin2);  //
  if (val == LOW)
{
  digitalWrite(servoPin, HIGH); // Puls beginnt
  delayMicroseconds(pulse); // Länge des Pulses bestimmt die neue Servoposition
  digitalWrite(servoPin, LOW); // Puls endet
  delay(refreshTime);
}



}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 05:15
Beitrag #3
RE: Geschwindigkeit modifizierter Servo zu hoch
Moin,
da kannst du coden soviel du willst Big Grin
Wenn du einem Servoverstärker die Rückkopplung wegnimmst was du mit dem fixieren vom Poti ja getan hast dann dreht der Verstärker bei der kleinsten Differenz volle Kanne auf. Das ist simple Regelungstechnik.
Wenn du aber sauber einstellbare Ausschläge bis oder über 360 Grad benötigst dann empfehle ich dir ein Segelverstellservo....das kann das von Haus aus. Diese Servos gibt es mit 1,5 bis 4..5 Umdrehungen...einfach die Beschreibung dazu vergleichen.
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
25.05.2015, 07:28 (Dieser Beitrag wurde zuletzt bearbeitet: 25.05.2015 07:32 von murdok1980.)
Beitrag #4
RE: Geschwindigkeit modifizierter Servo zu hoch
(25.05.2015 05:15)Bitklopfer schrieb:  Moin,
da kannst du coden soviel du willst Big Grin
Wenn du einem Servoverstärker die Rückkopplung wegnimmst was du mit dem fixieren vom Poti ja getan hast dann dreht der Verstärker bei der kleinsten Differenz volle Kanne auf. Das ist simple Regelungstechnik.
Wenn du aber sauber einstellbare Ausschläge bis oder über 360 Grad benötigst dann empfehle ich dir ein Segelverstellservo....das kann das von Haus aus. Diese Servos gibt es mit 1,5 bis 4..5 Umdrehungen...einfach die Beschreibung dazu vergleichen.
lg
bk

Aber warum funktioniert es dann in die eine Richtung?
Der poti ist Mittelstellung fixiert damit der Servo in beide Richtungen drehen kann. Das haben doch schon viele vor mir so gemacht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 09:03
Beitrag #5
RE: Geschwindigkeit modifizierter Servo zu hoch
(25.05.2015 07:28)murdok1980 schrieb:  ..

Aber warum funktioniert es dann in die eine Richtung?
Der poti ist Mittelstellung fixiert damit der Servo in beide Richtungen drehen kann. Das haben doch schon viele vor mir so gemacht.

...Zufall, Glück...aber technisch nicht erklärbar...

Sicher es gibt welche wo so ein Sero als Miniaturantrieb für ein Modellboot nehmen...da ist es dann auch egal ob der Motor ein bischen schneller oder langsamer dreht.
Auf jeden Fall ist ein Servo für diesen Fall Zweckentfremdet.

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
25.05.2015, 09:47
Beitrag #6
RE: Geschwindigkeit modifizierter Servo zu hoch
Ok lassen wir das mal so im Raum stehen. Für meine Anwendung brauch ich einen Getriebemotor, den ich bis auf minimum 1/min runterregeln kann. Vielleich kannst du mir ja auf der Basis weiterhelfen. Hab auch schon mal probiert die komplette Servoelektronik entfernt und nur den Motor an ne H-Brücke (293D) angeschlossen. Da bekomme ich die Geschwindigkeit aber nicht weit genug runtergeregelt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 09:49
Beitrag #7
RE: Geschwindigkeit modifizierter Servo zu hoch
was bedeuet 1/min ?

1 Umdrehung oder 1 Grad pro Minute ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 09:52
Beitrag #8
RE: Geschwindigkeit modifizierter Servo zu hoch
(25.05.2015 09:49)HaWe schrieb:  was bedeuet 1/min ?

1 Umdrehung oder 1 Grad pro Minute ?

ich meine eine Umdrehung pro Minute.
Ich hab noch mal mit der ersten Variante probiert und steh kurz vor des Rätsels Lösung.
Es geht als doch mit dem Code. Wenn du willst zeig ich dirs dann.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Star ATtiny Servo SOS SOS hansanne1310 1 49 Heute 22:15
Letzter Beitrag: hotsystems
  Servo über Temperatur steuern querkopf71 3 38 Heute 19:21
Letzter Beitrag: hotsystems
  ATtiny und Servo Bibliothek malsehen 9 306 15.10.2016 18:09
Letzter Beitrag: malsehen
  Servo soll nur in Ruhelage stoppen Sven1996 1 239 19.08.2016 14:37
Letzter Beitrag: StephanBuerger
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 757 16.07.2016 11:43
Letzter Beitrag: Binatone
  Servo und PWM Ausgabe F2Ingo 4 493 17.06.2016 14:53
Letzter Beitrag: F2Ingo
  Hilfe bei Servo-steuerung Innocence 7 813 23.02.2016 11:00
Letzter Beitrag: hotsystems
  Servo.h lässt sich nicht einbinden ^^ EvilBen 5 705 08.02.2016 18:07
Letzter Beitrag: hotsystems
Question HC-05 zu Android Bluetooth Geschwindigkeit Test Kai H. 0 380 24.01.2016 20:41
Letzter Beitrag: Kai H.
  Weichensteuerung mit Servo RCudino 21 3.022 05.01.2016 18:04
Letzter Beitrag: Markus0815

Gehe zu:


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