Liste der Anhänge anzeigen (Anzahl: 1)
Und schon wieder ein Servotester, aber ein erweiterter
Ich möchte einen Servotester bauen, der die Stellgeschwindigkeit eines Servos messen kann. Denkbar sind Erweiterungen wie Strommessungen und Ansprechgeschwindigkeit; veränderbare Versorgungsspannung für Servo. Brauch ich jedoch (noch) nicht und es soll bei der Stellgeschwindigkeit bleiben.
Auf die Idee kam ich schon vor längerer Zeit, als ich an einem Modelcraft Top Line Mini Servo ES-05 festzustellen glaubte, daß die Auslenkung von der Mittenstellung nach links länger dauerte als von der Mitte nach rechts (kann auch umgekehrt gewesen sein).
Vermutlich wird es, wie meistens bei mir, bei einem Prototypen bleiben, der mir jedoch Klarheit verschaffen soll. Außer der Stellgeschwindigkeitsmessung sollen noch die maximalen Auslenkungen festgestellt werden können und die Totzeit abgeschätzt werden können.
Weil ich auch noch gesehen hatte, daß das 50Hz Servosteuersignal in eine PWM mit gleicher Frequenz umgesetzt wird und dann zu Ansteuerung des Motors genutzt wird, soll auch das 50Hz Steuersignal in der Frequenz veränderbar sein. Da gibt es auch Auswirkungen auf die Stellgeschwindigkeit und Stellbereich, zumindest bei dem ES-05.
Realisierung: Das Servo wird auf eine Platte mit Winkelskala geschraubt. Ein paar Zentimeter gegenüber des Servos wird in der Skala von unten eine CNY-70 Reflexlichtschranke angebracht. Aus Pappe wird ein 60° Winkel ausgeschnitten und auf dem Servohorn angebracht. 60° weil die Herstellerangaben der Stellgeschwindigkeiten sich meist auf 60° beziehen. Jeder andere Winkel ist schnell hergestellt. Zur Stellgeschwindigkeitsmessung wird das Servo in Mittelstellung gebracht (1,5ms Pulse) und der Pappwinkel auf dem Servohorn per Hand so verdreht, daß er mit einem Schenkel gerade über dem CNY-70 steht. Eine Kontroll LED zeigt den Schaltzustand des CNY an. Nun kann die Messung per Knopfdruck gestartet werden. Servo dreht und die Zeit, bis der andere Schenkel des Winkels den CNY erreicht, genommen. Ausgabe der Meß/Einstellwerte auf LCD oder über UART zum PC.
Maximale Auslenkungen werden einfach auf der Skala abgelesen. Zur Totzeitabschätzung soll es einen Feineinstellungsregler geben, der die Servopulse in 1µs Schritten ändern kann und man horchen muß, ob sich schon was rührt.
µC: ATtiny44A mit BASCOM programmiert
Hauptbedienelemente:
Ein Poti zu Änderung der Servosignalpulsfolge von 5ms bis 50ms (Standard sind 20ms)
Ein Poti zum Grobeinstellen der Pulsweite von 500µs bis 2500µs in 10µs Schritten.
Ein Feineinstellungsregler zum Ändern der Pulsweite in 1µs Schritten.
Mindestens zwei Tasten für Messung nach links und Messung nach rechts.
Mehr wird sich wahrscheinlich bei der Programmierung ergeben.
Hier ein Photo der Platte noch ohne Skala aber mit eingebautem CNY-70, Servo und Papp/Papierwinkel.
Anhang 25992
Gruß
Searcher
Liste der Anhänge anzeigen (Anzahl: 2)
Trotz Wetter habe ich noch ein wenig weiter gemacht und ein paar Meßwerte vom Hyperterminal in angehangene Datei kopiert.
Das (noch nicht ausgereifte) Meßprogramm ist auch angehangen. Falls jemand Lust hat, kann er sich da mal durchwühlen und Feedback geben.
Es läuft folgendermaßen:
Timer1 im Tiny44 wird im Mode15 mit 1Mhz betrieben (fast PWM, OCR1A as TOP, OC1B als PWM Ausgang)
Mit einem Poti und Drehencoder wird OCR1B gesetzt um die Länge des Servopulses zu beeinflussen. Servo ist an OC1B angeschlossen. Mit dem anderen Poti wird OCR1A gesetzt um die PWM Frequenz einzustellen.
Mit einer Taste wird die Zeit des Durchlaufs eines 60° Winkels im Linkslauf gemessen. Mit einer zweiten Taste das Gleiche im Rechstslauf. Dazu ist der Winkel so angebracht, daß im Linkslauf die fallende Flanke der Reflexlichtschranke, die am Input Capture Pin des Tiny angeschlossen ist, als Start- und Stopsignal hergenommen werden kann. Im Rechtslauf die steigende Flanke.
- Vor Beginn der Messung zB für Linksdrehung, wird eine sinnvolle Pulsweite zB. 1800µs eingestellt. Das Servo dreht entsprechend in seine Stellung.
- Dann wird der linke Winkelschenkel von Hand über die Lichtschranke gebracht - Ausgang Lichtschranke = LOW. LED auf Breadboard erlischt.
- Taste für Linksdrehungsmessung drücken.
- Servo dreht nach rechts bis Ausgang Lichtschranke high ist.
- Die aktuelle Pulsweite, die nun etwas mehr als 1800µs beträgt wird nochmals um 200µs verlängert - Servo dreht noch weiter nach rechts, quasi als Anlauf für die folgende Linksdrehung.
- Die aktuelle Pulsweite wird um 1000µs reduziert und dadurch die Linksdrehung begonnen.
- Passiert die linke Kante des linken Winkelschenkels den CNY-70 beginnt die Zeitnahme.
- Passiert die linke Kante des rechten Winkelschenkels den CNY-70 stoppt die Zeitnahme, Linksdrehung stoppt und Servo auf die Ausgangsposition (Pulsweite zB. 1800µs) zurückgefahren.
- Meßwert ausgegeben und noch auf einen Tastendruck gewartet um den Meßmodus zu beenden.
Rechtsdrehungstest funktioniert sinngemäß mit 1200µs und Start mit rechtem Winkelschenkel über dem CNY-70.
Youtubelink: Video zur Verdeutlichung für eine Linksdrehmessung.
Die Zeit wird mit dem Input Capture Feature des Timer1 genommen, indem bei ICP Interrupts das ICR Register gesichert wird und zusammen mit den gezählten Timeroverflows seit Meßstart verrechnet wird.
Im Meßprotokoll wird außer der Laufzeit noch die ungefähre Position des Servos zum Start der Zeitmessung in µs (die festgestellte Pulsweite bei dem die Lichtschranke high wurde, siehe Punkt 4. weiter oben) und der Pulsabstand in ms ausgegeben.
Abgesehen von der Streuung der Meßwerte sehe ich folgendes:
Rechtslauf ist langsamer als Linkslauf
Meßserien zu verschiedenen Zeitpunkten (nach Einschalten der Meßapparatur oder bei warmgelaufenem Servo oder nach Kaffeepause oder...) gestartet bringen nahe beieinander liegende Zeiten, die aber insgesamt von einer anderen Serie größere Abweichungen haben können.
Ein noch nicht sicher erkannter Effekt bei langen Pulszeiten:
Bei der Justierung von Hand des Winkels über der Lichtschranke vor Meßbeginn ist es nicht egal, wie weit die Kante vom Schaltpunkt des CNY entfernt ist. Im Meßprotokoll ist der Abstand erkennbar an den StartPW Werten. Je weiter diese von 1800µs entfernt sind, desto weiter war die Kante des Winkel von dem Zeitmeßstart (Schaltpunkt des CNY) entfernt.
Dann werden die Laufzeiten länger?
Progamm? Methode? Ungenauer Aufbau?
Fremdlicht spielt keine Rolle!
Noch nicht bei kurzen Pulszeiten beobachtet.
Gruß
Searcher
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo,
@oberallgeier: Hab nichts hinzuzufügen und bin mir auch bewußt, daß diese Servos eigentlich für Fernsteuermodelle gedacht sind.
Zitat:
Zitat von
Manf
Was wäre ein Vorgang? Vielleicht eine Winkeländerung um 60°. Der Vorgang könnte besser Aufgenommen werden wenn eine Lochscheibe eine Codescheibe, ein Zahnrad eben mehrere Aufnahmen über den Winkelbereich zulässt. (Speicher-Oszilloskop ...)
Danke! Das hab ich gleich aufgenommen und es hat mir den letzten Anstoß gegeben nochmal an der HW zu murksen. Hat glaub ich schon was gebracht. Leider paßt der 60° Winkel da so eben nicht mehr drunter und muß da noch was machen. Mal sehen, was es dann für weitere Möglichkeiten gibt.
Das Servo wurde mit Pulsweite 1800µs versorgt und dann auf 1200µs gesetzt was ganz grob den 60° entspricht. Also Beschleunigung und Abbremsen innerhalb der 60°. Nur ganz oberflächliche Aufzeichnung zum Testen der Gabellichtschranke.
Hatte noch eine Codescheibe aus einem CD-Rom mit Gabellichtschranke. Etwas geringe Auflösung, aber man kann sehen, daß die Beschleunigung über ca. 50ms geht. Könnte bei meinen bisherigen Tests zu kurz geschätzt gewesen sein. Beide Oszillogramme unter gleicher Ansteuerung des Servos mit unterschiedlicher Zeitbasis genommen.
Anhang 26066 Anhang 26067 Anhang 26068
Hatte nicht gedacht, daß der thread solche Ausmaße annimmt.
Gruß
Searcher