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
Servo Positionierung klappt nicht
30.03.2015, 18:03
Beitrag #17
RE: Servo Positionierung klappt nicht
Hallo,
eigentlich gehen alle belibigen Modellbauservo ob Digital oder Analog ist wurscht. Auch der Preis ist egal. Bei meinen Servo (3€) konnte ich den 90 grad verstellwinkel nahezu verdoppeln mit der Servo lib. Hast das mal mit nem pinMode(9,OUTPUT) in der setup vor dem servoattach probiert?

Gruß Sven

Nichts auf der Welt ist unnütz, es kann im schlimmsten Fall immer noch als schlechtes Beispiel dienen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2015, 19:58 (Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2015 20:06 von Eichner.)
Beitrag #18
RE: Servo Positionierung klappt nicht
Vergiss das mit dem pinMode, hab da was verwechselt.
Aber versuch mal damit deinen Servo anzusteuern.

[code]
/**
* Precision servo positioning.
*
* Uses timer1 in phase and frequency correct PWM mode
* Doesn't use interrupts, so should be immune to interrupt issues.
*
* Chris Parish 2010
*
*/
//The standard timings for servos are 1.5ms for center, 1ms and 2ms for the full extents of travel
//however, most modern servos can operate an extended range, this can be as wide as 0.5ms to 2.5ms
//Consult the documentation for your servo for further details
#define SERVO_LOWER_LIMIT 1000
#define SERVO_UPPER_LIMIT 2000
#define SERVO_CENTER 1500
//Set your servo travel here. In standard mode most servos travel approx 90 degrees (45 either side of center)
#define SERVO_ANGLE_LOWER 0
#define SERVO_ANGLE_UPPER 90
const int servo = 9;
int angle;
void setup()
{
//Set up the timer------------------------
//TCCR1A register
TCCR1A = 0; //clear the register completly
TCCR1A |= _BV(COM1A1) | _BV(COM1B1); //set the required bits
//TCCR1B register
TCCR1B = 0; //clear the register completley
TCCR1B |= _BV(WGM13) | _BV(CS11); //set the required bits
//TCCR1C register
TCCR1C = 0; //clear the register completley
//Set the top limit - Complete frame length
ICR1 = 20000; //In this mode (assuming that you are running at 16mhz) The values are set in microseconds.
//Set the output compare registers which dictate the servo position
OCR1A = SERVO_CENTER; //1.5ms pulse, center the servo
OCR1B = SERVO_CENTER; //1.5ms pulse, center the servo
//Set pins 9 and 10 to output the waveform to the servos
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
}
void loop(){}
void setServoAngle(int servo, int angle)
{
//constrain the angle measurement
angle = constrain(angle, SERVO_ANGLE_LOWER, SERVO_ANGLE_UPPER);
//convert the angle measurement into a pulse length
angle = map(angle, SERVO_ANGLE_LOWER, SERVO_ANGLE_UPPER, SERVO_LOWER_LIMIT, SERVO_UPPER_LIMIT);
//write the angle to the appropreate servo output (1 or 2 -aka- 9 or 10)
if (servo == 1 || servo == 9)
{
OCR1A = angle;
}
else if (servo == 2 || servo == 10)
{
OCR1B = angle;
}
}
int getServoAngle(int servo)
{
int pulse;
int angle;
if (servo == 1 || servo == 9)
{
pulse = OCR1A;
}
else if (servo == 2 || servo == 10)
{
pulse = OCR1B;
}
return map(pulse, SERVO_LOWER_LIMIT, SERVO_UPPER_LIMIT, SERVO_ANGLE_LOWER, SERVO_ANGLE_UPPER);
}
[code]

Steuert den Servo ohne Lib


Alternativ kannst Du auch Parameter an die Lib übergeben in der dein Servo angesprochen werden darf.

myservo.attach(Pin,1000,2000)

Gruß Sven

Nichts auf der Welt ist unnütz, es kann im schlimmsten Fall immer noch als schlechtes Beispiel dienen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.03.2015, 07:56 (Dieser Beitrag wurde zuletzt bearbeitet: 31.03.2015 08:05 von Hallmackenreuther.)
Beitrag #19
RE: Servo Positionierung klappt nicht
Hallo Sven und danke für den Code.

Immerhin hat sich etwas geändert. Der Servo dreht sich um ca 90 Grad, und zwar egal, was für einen Wert ich eintrage.

So langsam hab ich das Gefühl, dass ich mich einfach nur dämlich anstelle. Es keimt Frust auf Wink

Ich bestell jetzt mal ein paar Servos quer durch die Bank und dann teste ich nochmal.
Danke bis hierhin, ich melde mich wieder....

<edit: Ich hab grad einen Servotester bekommen: http://www.conrad.de/ce/de/product/20696...rvo-Tester aber auch mit dem funktioniert der Servo nicht wie ich mir das vorstelle: Wenn ich den Tester auf "manuell" stelle, fährt er bei einer bestimmten Potistellung auch nur volle 180 Grad, oder er ruckelt vor sich hin.... ich glaube und hoffe, das liegt am Servo.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.03.2015, 11:41
Beitrag #20
RE: Servo Positionierung klappt nicht
Hier gibt es Infos zur Steckerbelegung der Servos. Das solltest du mal verifizieren.

Aber nach deiner Beschreibung könnte in deinem Servo auch das Poti einen Schuß haben. Wie alt ist denn das Servo bzw. wann wurde es das letzte mal benutzt und brav seinen Dienst getan ?
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
08.04.2015, 10:20
Beitrag #21
RE: Servo Positionierung klappt nicht
Falls nochmal jemand nach dem Problem sucht:

Es ist offensichtlich so, dass die Servos schlichtweg nicht bei 0 anfangen und bis zum Wert X hochfahren.

Mit mehreren Servos hab ich die Erfahrung gemacht, dass man einfach das Beispiel aus der Servo Library laufen lässt ( aber langsamer als im Orginal ) und sich die Werte notiert, in denen sich der Servo bewegt.

In meinem Fall ( Savöx SH-0255MG ) bewegt sich der Servo genau zwischen den Werten von 26 bis 161 => 135 Grad,
was genau der Herstellerangabe entspricht.

Von diesen Werten ausgehend, kann ich jetzt den Winkel gradgenau anfahren.

Problem gelöst ! Vielen Dank für die Beiträge und Tips !
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino lässt sich nicht installieren bergfrei 4 145 20.11.2016 18:34
Letzter Beitrag: bergfrei
  Arduino Mega 2560 läuft nicht Wolfgang50 6 184 13.11.2016 10:50
Letzter Beitrag: Wolfgang50
  Ardublock übertragt nicht an IDE oder UNO R3 tobi83 5 340 16.10.2016 14:07
Letzter Beitrag: Pit
  ATtiny und Servo Bibliothek malsehen 9 305 15.10.2016 18:09
Letzter Beitrag: malsehen
  Upload funktioniert nicht Levi 5 242 22.09.2016 20:19
Letzter Beitrag: hotsystems
  ESP8266 tuts nicht sowerum 7 393 19.09.2016 21:01
Letzter Beitrag: sowerum
  If-Bedingung funktioniert nicht bei Serial1.write Datatom 6 223 16.09.2016 20:36
Letzter Beitrag: Datatom
  Servo soll nur in Ruhelage stoppen Sven1996 1 237 19.08.2016 14:37
Letzter Beitrag: StephanBuerger
  SD Karte wird nicht erkannt... Maxi290997 2 203 16.08.2016 14:36
Letzter Beitrag: Maxi290997
  Arduino lässt sich nicht mehr beschreiben Maxi290997 15 976 07.08.2016 11:40
Letzter Beitrag: Maxi290997

Gehe zu:


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