Im deutschen Arduino-Forum wurde die letzten Tage auch das Zittern eines Servos diskutiert. Die Angebote Lösung scheint sehr elegant zu sein: http://forum.arduino.cc//index.php?topic=193284.15
Die Arduinobibliotheken kenne ich nicht (leider kann ich nicht sagen . . .). Auch Deinen RB-65PG kenne ich nicht, scheint aber ein analoger Servo zu sein.Code:float temp = analogRead(tempPin); temp = (float)(1023 - temp)*10000/temp; temp = 1/(log(temp/10000)/3975+1/298.15)-273.15;
Hast Du die Servoversorgung von der gleichen Stromquelle wie den Controller? Dann wäre das ein Problem . . . Hast Du GND von Servo und GND vom Controller verbunden (klick mal) - sonst schon wieder ein Problem.
Mir kommt so vor, dass Du hier einen Logarithmus berechnest und sonst ein bisschen floating point. Vermutlich braucht dieser Rechenschritt (dazu diese FP-Rechnungen) ne halbe Sekunde oder mehr - in der Zeit will der Servo schon mal so ungefähr zehn neue Informationen haben. Wenn er die nicht bekommt, dann schmollt er - merkt man meist daran, dass er (fast) garnix macht.
Ciao sagt der JoeamBerg
Im deutschen Arduino-Forum wurde die letzten Tage auch das Zittern eines Servos diskutiert. Die Angebote Lösung scheint sehr elegant zu sein: http://forum.arduino.cc//index.php?topic=193284.15
Die Arduinobibliotheken kenne ich nicht (leider kann ich nicht sagen . . .) ...Interrupt abschalten damit Servos nicht zittern halte ich doch eher für recht unelegant.Im deutschen Arduino-Forum ... Zittern eines Servos diskutiert. Die Angebote Lösung scheint sehr elegant ...
Die verlinkte, längere Diskussion beruhigt mich in meiner Aussage, dass ich die Bibliotheken nicht kenne . . . Da hänge ich lieber die Zeit rein, bis ich die Wünsche der Servos begriffen habe und einigermassen weiß, was ich tue. Zumal interruptgetriebene Servobewegungen nach meiner Meinung das einzig Richtige sind - bei der Frequenz von 50 Hz ist das ja auch eher sterbenslangweilig für den Servo. Ich betreibe meine 10-Servo-Platine (ausbaubar bis 16..20) mit mehreren Interrupts und der Möglichkeit das Ganze a) über I²C und b) über UART zu steuern. Auflösung theoretisch 0,4 µs Pulslänge, praktisch sind das besser als 0,4 Grad Servobewegung bzw. 9 Bit (hier ein bisschen Code dazu). Servos sind kleine und "mittlere" aus Billigserien (3,95 bis 15 Steine). Immerhin kann ich dann mit etlichen Servos simultan wahlweise full speed oder SlowMotion fahren (Video).
Dies nur als Bemerkung, warum ich kaum fertige Bibliotheken verwende.
Ciao sagt der JoeamBerg
Lesezeichen