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
  WEMOS Motorshield funzt nicht Rumpl-X 8 219 07.06.2017 21:10
Letzter Beitrag: Tommy56
  LCD geht nicht - keine Ahnung warum?? DL1AKP 12 460 15.05.2017 13:17
Letzter Beitrag: DL1AKP
  433mHz Funkmodule senden/empfangen nicht metzgefa 2 474 06.05.2017 13:30
Letzter Beitrag: metzgefa
  SD Karte wird nicht erkannt Maxi290997 6 281 31.03.2017 06:05
Letzter Beitrag: Bitklopfer
Sad Sketch funktioniert auf dem Mega 2560 nicht Frank1234 16 703 26.03.2017 14:15
Letzter Beitrag: oOSpikeOo
  Mein Skript macht nicht das was es soll ;( DerMatze79 4 332 16.03.2017 22:19
Letzter Beitrag: MicroBahner
  Servo macht komische Sachen Jochenv 7 373 08.03.2017 00:23
Letzter Beitrag: Jochenv
Rainbow File geht nicht zum compilieren!!!! Jocky 7 388 19.02.2017 20:01
Letzter Beitrag: Binatone
  IRremote bringe ich nicht zum laufen Franz54 5 327 19.02.2017 11:56
Letzter Beitrag: Tommy56
  Servo-Ansteuerung über einen Push-Button Aubergine83 1 265 16.02.2017 19:49
Letzter Beitrag: georg01

Gehe zu:


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