PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servomesstester (Servotester und –messaufbau)



oberallgeier
05.09.2013, 11:55
Ein Servotesterquellprogramm
das ist kein Spaß, mein lieber Mann,
das bringt viel Murx und Leid und Weh,
zeigt soo viel Tücken an mein´m C,
Und wenns dann läuft und man was bessert
ist das Ergebnis ganz verwässert,
mit gänzlich andern Resultaten
wo wir die richtigen schon hatten
da denkt man doch den Teufel auch
ich steh bald to-tal auf dem Schlauch.

Mein Servo-Messtester. Der Servotester mit Messfunktion. Nun ist er in einem Stadium, dass erste Messungen durchgeführt wurden.

......
http://youtu.be/e9BL4yV9dsg

Welche Messungen sollen durchführbar sein?
o Drehmoment
o Stromaufnahme als Funktion des Drehmomentes
o (Stromaufnahme dynamisch über den Verfahrweg ist geplant)
o Positionsabweichung als Funktion des Drehmomentes
o Drehgeschwindigkeit
o Drehbeschleunigung bei Start und Positionseinlauf ohne Last
o Positioniergenauigkeit (auch bei zwei, drei ausgesuchten Winkeln, z.B. links, mitte, rechts)
o Wiederholgenauigkeit der Position ohne Last
o Verhalten bei geänderten Pulslängen bei üblicher Periodenlänge
o Verhalten bei geänderter Periodenlänge bei gleichen Pulslängen
o Verhalten bei geänderter Periodenlänge bei verschiedenen Pulslängen
o Evtl. Messpunkte/-reihen bei 6V statt der meist durchgeführten 5,0 V
o Interessierende Messungen werden teilweise auch mit Last gefahren, vermutlich 0,5 Nennmoment, evtl. auch 0,2 und 0,8 oder 1,0

Warum diese Messungen?
o Einige technische Angaben sind bei Servos selten oder gar nicht zu finden. Manche Angaben sind nicht glaubhaft und sollen überprüft werden
o Positionsabweichung und Stromaufnahme als Funktion des Drehmomentes sind vorrangig interessant für Roboterbauer. Hier hatte ich beim ArchieKopf manche Fragen die von Datenblättern nicht gelöst wurden
o Etliche Messungen werden einfach nur zur Befriedigung der eigenen Neugier dienen, manche zum Überprüfen der Streuung von Eigenschaften baugleicher und bauunterschiedlicher Typen
o Viele interessierende Messungen werden vermutlich nicht durchgeführt werden; Aufbau, Durchführung und Auswertung sind doch etwas zeitaufwendig

Technische Daten:
o Messvorrichtung mit Support zur Aufnahme verschieden(st)er Servotypen und –größen
o Ansteuerung über vorhandene 10-Servo-Platine
o Servotester mit Ausgabe über LCD und UART, Eingabe über drei Tasten und UART. Ein- und Ausgabemethoden sind abhängig von der jeweiligen Aufgabe (z.B. keine Listenausgabe übers LCD)
o Servoversorgung über 70S05
o Ansteuerungsstandard: Periode 20 ms, Puls 0,5 ms bis 2,5 ms
o Drehmomentauflösung 0,2 Ncm (0,1962 Ncm, Waage 1 g/div, 20 cm Hebelarm)
o Genaue Hebellänge durch Kontaktwalze zwischen Hebelarm und Waage
o Drehwinkelmessung durch Potentiometer ca. 10 Bit mit 1,0 ms Auflösung (bei SlowMotion evtl. längere Messabstände), Potentiometer im Messkopf eingebaut
o Positionsmessung mit Präzisionsmessuhr
o Messung von drei Werten (signed short – uint16_t) mit je 990 oder 1590 Messpunkten
o Anzeige der laufenden Messwertaufnahme durch LED
o Einfach- oder Mehrfachfahrt zu vorgegebenen Winkeln und/oder Geschwindigkeiten
o Menue mit derzeit folgenden Wahlmöglichkeiten
........ 2 UART conn Start der UART-Kommandozeile
........ 4 rote LED schalten 0/1
........ 6 Servo ± Servoposition verstellen ±
........ 7 Srv± Po1 Servoposition ± einstellen für Position 1
........ 8 Srv± Po2 Servoposition ± einstellen für Position 2
........ 9 Test Inc Stellen von Test Increment, max = 190, 190 äquival. full speed
........12 Tst Strt Testlauf Starten von Pos 1 nach Pos 2, SFgt-mal, Inc ...
........13 Default Defaultwerte (akt. Pos 1 = 3000, Pos 2 = 5000, 4mal, Inc 30)
........17 Listenausgabe der Messwerte
........18 Timeoutflag setzen off/on


Danke an alle, die mitgeholfen haben, danke besonders Sternthaler für Mitdenken, Mit-(Korrektur-)lesen, und mehr.

Sternthaler
05.09.2013, 23:50
Da ist er ja endlich.

Hallo oberallgeier,

wie ich sehe, ist dein 'erster Schuß' natürlich nicht in den Ofen, sondern eher in die Oberliga gegangen. Ich bin gespannt, wann die nächsten Messreihen hier erscheinen.
Auf das dir die Ideen für deine Messwertaufnahmeliste nie zu Ende gehen.

Gruß vom Sternthaler

oberallgeier
06.09.2013, 08:27
... Ich bin gespannt, wann die nächsten Messreihen hier erscheinen ...ine spätabendliche Messfahrt (5,0V, lastfrei, full speed) mit meinem High-Torque Servo 1501MG (siehe dieses Posting) (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=583165&viewfull=1#post583165) läßt vermuten, dass der langsamer ist als spezifiziert. Jedenfalls brachte er es bei meiner aktuellen 5V-Versorgung grad mal auf 0,25sec/60° bei einer 90°-Messfahrt. Mal sehen, was er bei 6,0 V schafft; bei diese Spannung sind als no load running Speed 0.14sec/60° spezifiziert . . . (und auch hier ist, wie üblich, kein Stromverbrauch genannt).

......26327

Seine Regelabweichung bei Last ist dafür wie erhofft/erwartet sehr gering. Und deswegen hatte ich den ja gekauft.


... Auf das dir die Ideen für deine Messwertaufnahmeliste nie zu Ende gehen ...Mal so : die Idee wie ich von der RS232 ohne Umweg über Terminal, guttenbergisches past´n´copy ins Exceldiagramm komme, die fehlt mir noch. Denn diese Listenwerte muss ich derzeit noch mit Handarbeit reinpopeln, zwar in Blöcken zu je 200 Daten (a 3 Werten), aber immer noch einiger Aufwand.

Searcher
06.09.2013, 20:03
Alle Daumen hoch d(^_^)b Sowas hab ich mir immer gewünscht ;)


... ohne Umweg über Terminal, guttenbergisches past´n´copy ins Exceldiagramm komme, die fehlt mir noch ...

Bei so etwas versuche ich es über Textdateien mit .csv Endung. Wenn die Daten darin durch Semikolon (Spalten) und Carrige Return, Line Feed (Zeilen) getrennt sind genügt bei zB. EXCEL 2003 ein Doppeklick darauf und die Daten sind im Spreadsheet. Daten werden bei mir in dem Format an Hyperterminal geschickt. Dort kann man einstellen, daß die Daten in einem Textfile (eben die .csv Datei) mitprotokolliert werden.

Involviert immer noch ein Terminal und vielleicht machst Du das auch schon so, sonst fällt mir nur noch ein, eine eigene PC oder sogar EXCEL Applikation zu schreiben.

Gruß
Searcher

Klebwax
07.09.2013, 06:39
@Oberallgeier

mir erschließt sich dein Diagramm nicht so ganz. Da ich die Legende zu den Kurven nicht richtig lesen kann (insbesondere zur zweiten und dritten Kurve), weiß ich nicht wirklich, was sie anzeigen.

Da ich unter Linux arbeite, ist meine Lösung Daten auf dem PC anzuzeigen für dich (EXCEL klingt nach Windows) möglicherweise nicht machbar. Ich habe ein kleines C Programm, das an der seriellen lauscht und auf die Startmeldung wartet, die ich am Anfang eines Datensatzes schicke. Es liest dann zeilenweise die Daten und schreibt sie passend für das Anzeigeprogramm (z.B. gnuplot) in eine Datei. Wenn die Endemeldung kommt, beendet es sich. Ich starte dann das Plotprogramm mit dieser Datei. Mit einem passenden printf() könnte dabei auch ein Format für EXCEL erzeugt werden. Dazu bräuchtest du aber einen C Compiler für Windows.

MfG Klebwax

oberallgeier
07.09.2013, 10:24
Hi Klebwax, danke für die offene Kritik. Du hast Recht - es war mein erster Versuch auch Texte und Kurven in einem YuTV-Video anzuzeigen. Klappt wirklich nur mit sehr bescheidener Qualität. Tut mir leid, dass das so schlecht rauskommt - und mit den bescheidenen Beschreibungen auch eher für die Katz ist.

... mir erschließt sich dein Diagramm nicht so ganz ... Kurven nicht richtig lesen kann ...Dann versuch ich´s mal hier ausführlich, die Diagramme kann man hoffentlich mit der folgenden Erklärung trotzdem lesen.

Zur Servoansteuerung:
Es werden aktuell 8 Servos angesteuert, Servo 1 bis 8. Gemessen wird stets Servo 7. Der entsprechende Servopointer wird vom Timer1A alle 2,56 ms weitergeschaltet - bei 8 Servos kommt also jeder Servo alle 20,48 ms dran. Mit der Weiterschaltung wird Timer1B gestartet mit der jeweils gewünschten Pulsvorgabe und es wird der entsprechende Servopin eingeschaltet. Mit Ablauf von Timer1B wird der Servopin ausgeschaltet.

Aufbau der Messung
- Während der Messdauer werden im Abstand von je 1 Millisekunde Werte erfasst, eine höhere Auflösung ist theoretisch möglich, praktisch aber wohl nicht nötig und wegen des deutlich höheren Datenaufkommens mit dem vorhandenen Controller auch schwierig.
- Die Werte werden in drei Wertefelder eingetragen und nach Ablauf der Messung als Liste ausgegeben (siehe Liste).
- Erfasst werden 999 (oder bis zu 1599) Gruppen von je 3 int16-Werten. Das sind in den vorgelegten Diagrammen die Werte für Servopointer, ADC-Wert und Boardzeit in 50µs-Zeitschritten. Das Format int16 für den Servopointer hat programmtechnische Gründe, die anderen Werte benötigen das Format für ihre Größe.
- Die Messung wird nach Startfreigabe erst gestartet, wenn Servo 2 aktiv ist - damit ist ein Vorlauf der Datenerfassung von rund 10 ms (von Servo2 bis Servo7) gewährleistet, BEVOR der erste, neue Positionswert für die Messfahrt an Servo7 abgegeben wird. De fakto startet der protokollierte Servolauf also rund 10 ms nach Beginn der Aufzeichnung und dokumentiert den Zustand in dieser Zeit VOR dem Start der Messung. Damit kann man sicher die Verzögerungszeit der Bewegung ab Eingabe eines Positionswertes erfassen.
- Die Messung erfolgt nach zwei Verfahren. Einmal ist "full speed" möglich. Dabei wird lediglich der Zielpunkt des Servos ausgegeben, der Servo fährt mit der vollen Geschwindigkeit entsprechend seiner Auslegung. Zweitens ist die "SlowMotion" möglich. Dabei wird bei JEDER neuen Servoperiode ein neues Ziel gesetzt, das zwischen 1 und 189 ticks von der aktuellen VORGABE (nicht dem aktuell erreichten Punkt!) entfernt ist. Hier sind Werte unter 10 kaum sinnvoll, aber praktisch möglich. Die (bisher getesteten) Servos reagieren (erst) auf Fortschrittswerte zwischen 10 und 15 Incremente. Bei Vorgabe von Increment 190 ticks wird full speed gefahren, also eine Zielvorgabe - egal wieviel Perioden die Fahrt bis dahin dauert.
- Die Messung wird mit Eintrag des letzen Datentripels beendet.
- Zur optischen Anzeige der Datenerfassung wird während der Messung eine Signal-LED eingeschaltet.
- Nach Ende der Messung können in einem gesonderten Menuepunkt die aufgezeichneten Daten vom Terminalfenster in die Tabellenkalkulation übertragen werden, siehe Tabellenspalten C, D, E und F.

Auswertung:
- Die interne Boardzeit Izeit_1 läuft bis 20000 (entsprechend 1 Sekunde), daher muss für eine saubere Diagrammdarstellung der Wert bei mehreren Izeit_1-Perioden - je nach Datenumfang in Schritten von 20000 erhöht werden, siehe Tabelle Zeile 10 ab Spalte I.
- Mit der korrigierten Boardzeit (zeit/tupsi) wird die Laufzeit der MEssung in Millisekunden (Faktor 0,05) errechnet, Spalte K. Die Drehgeschwindigkeit des Servos in ΔADC/Δms wird errechnet. Für die bessere Sichtbarkeit wird dieser Wert mit dem Geschwindigkeitsfaktor N8 multipliziert und mit dem Faktor N9 im Nullpunkt verschoben.
Die Darstellung des ADC-Wertes des Messpotentiometers über die Messzeit im Diagramm ist die blaue, etwas aufgedickte Linie.
- Die schrecklichrosa Linienflut ist die Geschwindigkeit. Wegen der sehr geringen Unterschiede im ADC-Wert und des kleinen Zeitschrittes ist das nur ein mickriges Hin-und-Her das sehr wenig Aussagekraft hat. Daher die Trendlinie als gleitender Durchschnitt der letzten zehn Perioden. Erst daraus kann sinnvoll auf den >momentanen< GEschwindigkeitsverlauf des Servos geschlossen werden.
- Die Laufzeit von Position 1 (Abfahrt, im Tabellenblatt SrvZat) nach Position 2 (Ziel, im Tabellenblatt SrvZbt) ist durch Ablesen des Diagramms oder aus der Tabelle zu erfassen. Hier bietet das Diagramm eine eindeutige Hilfe wegen des sichtbaren Kurvenverlaufes ACD und gleitender Durchschnitte.

Die Tabelle (Excel) mit Diagramm 04-Sep13-15h00_inc-30.xls habe ich im Original beigelegt, als Beispiel - Übersicht zum Erklären - ist ein Dump einer weiteren Messauswertung für meinen High-Torque beigelegt.

Hoffentlich nutzt diese Beschreibung für ein besseres Verständnis der Messwerte.

oberallgeier
07.09.2013, 12:51
Auffallend bei meinen Servomessungen ist die beachtliche Verzögerung von Übergabe der Servosollposition an den Pulstimer bis zum Beginn der Servobewegung. Ich hatte mir deswegen statt der Boardzeit (Izeit_1 - aus dem Heartbeat) die Servosollposition des Messervos - Servo Nr 7 - als drittes Datum ausgeben lassen.

Anschließend eine Messfahrt mit dem High-Torque Servo 1501MG und full speed. Von Übergabe der Servosollposition an den Timer bis zum Beginn der Bewegung habe ich 65 ms ± 2 ms gemessen. Das sieht auf den ersten Blick riesig schlecht aus.

Ich rechne mal nach:
Übergabe der Servosollposition an den Servotimer während der Laufzeit des Servopulses 6. Runde 2 ms später, mittlerweile zeigt der Servopointer auf den Messservo Nr.7, wird dieser Wert in den Timerspeicher OCR1B geschrieben

// - - - - - - - - - - - - - - - -
switch (Svpt) // Servo[Svpt] wählen + dessen Rampe starten
{ //
case 1: SetBit ( PC, Servo1 ); break;
case 2: SetBit ( PC, Servo2 ); break;
case 3: SetBit ( PC, Servo3 ); break;
case 4: SetBit ( PC, Servo4 ); break;
case 5: SetBit ( PC, Servo5 ); break;
case 6: SetBit ( PC, Servo6 ); break;
case 7: SetBit ( PA, Servo7 ); break;
case 8: SetBit ( PA, Servo8 ); break;
case 9: SetBit ( PA, Servo9 ); break;
case 10: SetBit ( PA, Servo10); break;
default: break; // hierher würde noch n Fehlerflag passen
} // Ende switch (Svpt)
// - - - - - - - - - - - - - - -
// OCR1B = Srv_tm[Svpt]; // Stellwert ist durch Rampenwert Srv_tm definiert
und der zuständige Puls gestartet.

Etwa 2 ms später, die maximal mögliche Standard-Pulszeit ist abgelaufen, KÖNNTE der Servo merken, was los ist. Nehmen wir mal an, er wartet bis eine Standardperiode vollständig abgelaufen ist - oder bis ein neuer Puls kommt, also 20 ms.

Bisher sind also ca. 20 ms vergangen seit der Controller dem Servo das nächste Wunschziel angegeben hat.

Nun könnte der Motor loslaufen. Bei meinen Motoren aus dem ES-05-Servo hatte ich (im System MiniD0 und Dottie) eine Motorzeitkonstante von 8 bis 12 ms gemessen. Dies ist die Zeit zum Hochlaufen des Motors bis nahe Endgeschwindigkeit. Der grössere Motor des HighTorque darf länger brauchen, sagen wir mal wieder 20 ms. Dann könnte noch etwas Getriebespiel dazu kommen, nochmal zehn Millisekunden.

Mittlerweile sind also 50 Millisekunden vergangen, seit der controller dem Servo das nächste Wunschziel angegeben hat. Da sind die gemessenen 65 ms ja einigermassen glaubhaft.

Darüber sollten wir nachdenken *ggg*.

oberallgeier
24.09.2015, 11:01
Ein zweiter Servotester ist entstanden; eigentlich war der Anlass der vorhandene ardu-nano-Clone für weniger als fünf Steine.

Aufgabe
Baue einen Servotester mit Anzeige von Periodendauer und Pulsdauer in µs oder in Ticks. Pulsdauer sollte bis rund 3 oder 4 ms einstellbar sein.

Hardware:
Anschlussklemmen
78S05...... Typ "S" - weil Servos schon recht hungrig sein können
nano-Clone
TrimmPoti 10k
3 Tasten
1 LED (Power, Heartbeat-LED stellt der nano)
2 3x1-Pfostenstecker ....R RX-GND-TX, SDA-GND-SCL
Wannenstecker 2x10
LCD 16x2

Software wie bei meinen üblichen Ansteuerungen, diesmal aber ohne Slowmotion. Die LED-Anzeige bringt typisch Ticks (16 MHz, clk/8, 1 Tick sind daher 0,5 µs) für die Periode, 20 ms entsprechen 40 000 Ticks = Standardeinstellung, und einen Bereich des Pulses von z.B. als einfachsten Fall (ADCnetto*5+1 => 1 ... 5116 bzw.) 0,5 µs bis 2,55 ms.

Damit ist eine Ansteuerung über Poti simpel möglich zwischen den genannten Pulslängen - Werte die bei meiner geringen Servoauswahl die Grenzen der Servos deutlich übersteigen. Ein Erreichen der Grenze wird aktuell auf einen ADC-Wert genau (± 2,5 µs) diagnostizierbar über den Stromverbrauch des Testers und spätestens über die Geräusche beim Erreichen des inneren Anschlags.

Dumm, dass der nano nur mit 16 MHz tickt, da muss ich immer auf meine typischen 20M umrechnen. Trotzdem ist es für mich sehr praktisch die tatsächlichen, elektrischen und mechanischen Grenzen des jeweils individuellen Servos ausmessen zu können.

Insgesamt kommt mir das so praktisch vor, dass ich mittlerweile einen Rumpf der Software auf den Servocontroller-Platinen von Archie peu-à-peu einbaue, Ansteuerung erfolgt dort über einen Allzweckpfostenstecker 2x3, der mir eine Pfostenreihe Vcc-ADC3-GND zur Verfügung stellt. Der entsprechende Test-Stecker trägt das Test-Poti . . . und hier sind wegen des arbeitenden 20 MHz-Quarzes auch keine Umrechnungen mehr nötig.

Michael
24.09.2015, 15:02
Darüber sollten wir nachdenken *ggg*.
So ein Servo wird, wenn es analog ist, einen Tiefpass drin haben, der Störungen ausfiltert.
Wenn es digital ist, macht er das eben mit dem internen Controller. Erst wenn der Puls 3 mal hintereinander die plötzliche Abweichung zeigt, dann wird sie auch genommen. (nur vermutet)
Kannst du noch feststellen, welche Verzögerung deine Messeinrichtung hat? (Winkel, Strom)
Ändert sich die Ansprechzeit, wenn du die Periodendauer auf 10ms verkürzt?

Gruß, Michael

oberallgeier
24.09.2015, 16:49
... Kannst du noch feststellen, welche Verzögerung deine Messeinrichtung hat? (Winkel, Strom)
Ändert sich die Ansprechzeit, wenn du die Periodendauer auf 10ms verkürzt? ...Über Verzögerung bei der Bewegung habe ich ja schon oben berichtet (https://www.roboternetz.de/community/threads/62904-Servomesstester-%28Servotester-und-%C2%96messaufbau%29?p=585630&viewfull=1#post585630), eher qualitativ. Die Strommessungen erfolgten bisher immer ziemlich piano mit dem Labornetzteil, das Vorhaben einer Erfassung über (Hall-)Sensor und Controller ist bisher leider nicht realisiert worden.

Messtechnisch habe ich auch die Ansprechzeit nicht weiter untersucht. Eine gewisse Ahnung von der Funktion haben wir seit loki (https://www.roboternetz.de/community/threads/52460-Servo-Geschwindigkeitsregelung?p=506821&viewfull=1#post506821) mit unterschiedlichen Periodenzeiten experimentierte, siehe auch Servo-Wissen (http://rn-wissen.de/wiki/index.php?title=Servos#Ansteuerung:_Signalform_und _Schaltung) im RN - ab ".. Von der Standard-Pulsdauer 20 ms kann je nach Servomodell erheblich abgewichen werden .." - der zweite Absatz im Link. Das hatte ich ins Wiki übernommen nachdem ich das grob bei meinen Servos auch festgestellt hatte.

Dein Anstoß sagt nun, dass ich vielleicht doch mal noch ein paar Messungen mit dem "großen" Tester machen müsste, denn nur der hat auch eine externe Winkelmessung - mit nem Poti aus nem Servo und die entsprechend schnelle Messung mit ausreichend langer Messdauer. Aber dazu müsste ich endlich mal auch ne schnelle Messung der Stromaufnahme realisieren. Ohhh je, grad läuft bei mir der Projektabschnitt "Geschwindigkeitsanpassung von Archie aufgrund von Entfernungs- und Abstandssensoren". Und da klappts nach Problem mit den zwei SRF02 Abstände zu erfassen und per UART-Telegramm an die Motorplatine (MoCo - MotorController) zu senden - einschließlich positiven Test zum Telegrammempfang. Es gibt so viel zu tun (und die Arme sind grad vom Klettern recht lahm...).

Sternthaler
26.09.2015, 21:12
Hossa oberallgeier,

dann bau doch mal servounterstützte Arme. Die werden nicht so schnell lahm und du hast mehr Zeit für andere Dinge ;)

Wenn du aber am "großen" Tester doch schon eine Winkelmessung machen kannst, dann sollte es doch ausreichen eine Änderung derselben zu messen und halt nur die Zeit vom 'Absenden' der neuen Zielposition bis zur ersten registrierten Winkelmessung zu nehmen. Und Schwups ist die Bestätigung messbar.
Michaels Annahme könnte dann auch verifiziert werden. Faktor 3 der 20 ms als Grundgedanke plus ein wenig Laufzeit deiner CPU und Mechanik sollte somit reproduzierbar bei deinen schon gefundenen 63 bis 67 ms nun automatisch zig mal für eine Statistik wiederholbar sein.

Viele Grüße
Sternthaler

oberallgeier
27.09.2015, 00:09
.. ausreichen .. die Zeit vom 'Absenden' der neuen Zielposition bis zur ersten registrierten Winkelmessung zu nehmen ..Hallo Sternthaler,

diese Arbeit hatte ich doch schon längst gemacht. Dazu gabs ja auch reichlich Bildchen, die sind nur mit dem Ende meines Bildservers in unbekannten Energien der elektronischen Datenverarbeitung verschwunden.

Hier mal - ein Bild der Sorte hervorgeholt. Dabei sieht man prächtig den Verzug zwischen dem Sprung bei OCR0B und der Radgeschwindigkeitsänderung. Sowohl beim Sprung aufwärts als auch beim Abschalten der PWM.

......30719

Ist das Bild so wie ihr meint? Michael und Sternthaler?

Anm.: Izdiff-12 ist die Zeit zwischen einem Interrupt und dem nächsten am Encoder auf der Welle von Motor 12.[/QUOTE]
Nachtrag : (leider wichtige Angabe zur Messung vergessen):
Motoren . . . . . . . . CARSON 502001, 2 Stück
.. . . . . . . . . . . . . . Servo "Hack 2", d.h. nur Motor und Getriebe, ohne Servoelektronik
Fahrzeug . . . . . . . . MiniD0 (0,15l-Coladose mit Einbauten)
.. . . . . . . . Gewicht 152 g, fahrbereit, mit Karosserie - d.h. "originaler Vollausbau", keine Schleppkabel
Testdurchführung . . Teststart durch IR-Fernsteuerung als Task
.. . . . . . . . . . . . . . Motorüberwachung/Datenaufnahme startet
.. . . . . . . . . . . . . . Abtastrate/Messfrequenz 10 ms
.. . . . . . . . . . . . . . Fahrbahn Melaminharzplatte
.. . . . . . . . . . . . . . 5 ms nach Start Datenaufnahme werden BEIDE Motoren gestartet
.. . . . . . . . . . . . . . Nach Testfahrt wird Fahrzeug gestoppt
.. . . . . . . . . . . . . . Im Stop werden die Daten per UART ausgelesen (neuer IR-Befehl)
.. . . . . . . . . . . . . . Diagramm zeigt Interruptabstand Encoder rechts = Motor 12 = Izdiff-12
.. . . . . . . . . . . . . ... . . . .. . . . . Fahrwert/PWM => OCR0B = 0 oder 255
.. . . . . . . . . . . . . ... . . . .. . . . . VRad12 = theoret. Fahrgeschwindigkeit ohne Schlupf

oberallgeier
27.09.2015, 09:31
Testbedingungen nachgetragen

Michael
27.09.2015, 09:42
diese Arbeit hatte ich doch schon längst gemacht. Dazu gabs ja auch reichlich Bildchen, die sind nur mit dem Ende meines Bildservers in unbekannten Energien der elektronischen Datenverarbeitung verschwunden.
tut mir leid, aber nicht vorhandene Bilder überzeugen mich nicht.
Mach deine Messungen doch einfach nochmal?


Ist das Bild so wie ihr meint?
ich komme irgendwie nicht mit VRad12 mm/s nicht zurecht.
Ein Servo kann ich doch nicht in mm/s messen, eher die Winkelgeschwindigkeit, so wird es auch allgemein beworben und verglichen.
Hier z.B., das Servo 1501MG hat 140ms/60°, also 428°/s (~7,5 rad/s) https://www.pololu.com/product/1057
Wo in deinem Aufbau (Video Beitrag #1) misst du eigentlich VRad?
Ich sehe dort einen Hebelarm auf eine Waage. Zum statischem Drehmoment kommt dann auch noch die Gewichtskraft des Hebelarms (mit negativem Vorzeichen)

In der Grafik steht auch was von "wird gestoppt ohne Bremse" Was hat OCR0B für eine Funktion?
Du gibst dem Servo doch ständig Pulse, nicht nur während der Messung?
Ohne Pulse funktioniert der Regelkreis im Servo nicht, Messungen in diesem Zustand sind daher nicht vergleichbar.

Gruß, Michael
Nachtrag:

Nachtrag : (leider wichtige Angabe zur Messung vergessen):
Motoren . . . . . . . . CARSON 502001, 2 Stück
.. . . . . . . . . . . . . . Servo "Hack 2", d.h. nur Motor und Getriebe, ohne Servoelektronik
es geht gar nicht mehr um Servos?
Nur noch um ausgeschlachtete Getriebemotoren mit eigener Ansteuerung?
Wozu dann der ganze Thread?

oberallgeier
27.09.2015, 10:53
... es geht gar nicht mehr um Servos? Nur noch um ausgeschlachtete Getriebemotoren mit eigener Ansteuerung ...Genau. Denkst Du denn, dass ein Servo eine andere Motorkonstante bekommt, wenn man beim Test den kompletten Antriebsstrang beibehält und nur die elektrischen Ansteuerung ändert? Es geht hier um die ersten Millisekunden der Motorbewegung - und die habe ich mit der Servoelektronik eben NICHT im Griff. Beim Servo MIT Elektronik muss ich z.T. fast eine volle Periode warten bis die Elektronik vom Puls mitgeteilt bekommt, dass der Servo anlaufen soll. Über diesen Verzug hatte ich weiter oben berichtet.

Für eine Information über Pulsakzeptanz des Servo und Anlaufen des Servomotors bräuchte ich Abgriffe im Servo - existieren nu mal nich.

Sternthaler
27.09.2015, 18:19
Hi oberallgeier,

leider muss ich Michael bestätigen, dass auch ich mit der Beschreibung und dem Bild nicht ganz folgen kann. (Tut mir Leid.)

Trotzdem meine Interpretation vom Bild und dem OCR0B. Kennst du ja nicht anders ;)
Wenn OCR0B für die Bestimmung der Servopulslänge zuständig ist, dann änderst du bei ca. 4/5 ms im Bild die Vorgabe. (Laut Bildtext nach 5 ms)
Nun finde ich im Bild aber als 'Antwort' vom Servo den von dir angegeben Wert 'VRad12' schon bei ca. 10 bis 12 ms in Bewegung. Wenn also dieser Wert am Poti (Servoachse extern und somit der vermisste Abgriff am Servo?) abgenommen wird, dann reagiert das Servo doch schon nach ca. 6 bis 8 ms!

Ich interpretiere bestimmt nicht richtig, aber du wirst das schon klarstellen.

Gruß
Sternthaler

Michael
27.09.2015, 19:24
ich vermute, dass das Bild in Beitrag #12 für das gehackte Servo steht.
OCR0B ist einfach nur der Ausgang, der den Motor des Servos (über Treiber) einschaltet. (lila)
Die orange Kurve mit den kleinen Dreiecken zeigt dann die Geschwindigkeit und die dunkelblaue den Kehrwert davon (Inkrementalgeber, Zeit/Weg)
nach ca. 4ms schaltet OCR0B auf 100%, die erste Reaktion am Messwertaufnehmer für die Geschwindigkeit kommt 6ms später. Die Endgeschwindigkeit ist nach weiteren ca. 40ms erreicht.
Ich finde das gar nicht so schlecht, aber das sagt erstmal nichts über die Motorkonstante aus.


aber du wirst das schon klarstellen.
na das hoffen wir doch jetzt alle ;)

Gruß, Michael

oberallgeier
28.09.2015, 08:30
Eigentlich wollte ich ja nur meine neue Version eines Servotesters auf der Basis des nano-Clones vorstellen, die einfach ist und mit hoher Auflösung die mechanischen und zeitlichen Ansteuerungsgrenzen eines Servos aufzeigt. Damit sind die Fertigungstoleranzen individueller Servos zu bestimmen. Diese Frage stammte aus dem von mir begleiteten Jugend-forscht-Team.

Vermutlich hatte ich die anschließende Fragen nicht verstanden und/oder falsch beantwortet - mit vorhandenen Ergebnissen. Weiteren Aktivitäten zu Servofragen muss ich schieben, mein aktuelles Teilprojekt klemmt wie üblich an allen Enden und Ecken - dabei sind Servos nicht betroffen. Also bis später - ich stolpere ja immer wieder heftig über offene Servothemen.

Sorry für die Ungereimtheiten.

nikolaus10
28.09.2015, 12:47
Hallo

Vielleicht hilft als Inspiration das folgende umgestzte Servotester Projekt:

http://modelltruck.net/showthread.php?54357-Servotester-und-Me%C3%9Fger%C3%A4t-mit-Arduino-amp-Display&highlight=servotester

73

oberallgeier
04.01.2018, 10:48
Nun läuft mein neuester Servotester (https://dl.dropbox.com/s/h8w0octz6pj6a1b/DSC03920-800Px.jpg?dl=0) auf Grundlage eines Nanoclones (16 MHz bzw. 20 MHz). Da bereits zahlreiche fertige Lösungen vorgestellt wurden (Beispiel: Link oben von nikolaus10 (http://modelltruck.net/showthread.php?54357-Servotester-und-Me%C3%9Fger%C3%A4t-mit-Arduino-amp-Display&highlight=servotester)) möchte ich gern wissen:
Frage: machts Sinn macht NOCH SO EIN Spielzeug ausführlich(er) vorzustellen? Der "Schaltplan" ist simpel (https://dl.dropbox.com/s/3uml4v72idgkpj2/Schaltskizze.jpg?dl=0), nen Hexcode gäbs dazu (für 16 MHz).

Aufgabenstellung (Definitionen siehe hier (http://rn-wissen.de/wiki/index.php?title=Servos#Ansteuerung:_Signalform_und _Schaltung)):

a) Teste allgemein die Funktion (ziemlich trivial)
b) Preisgünstiger Aufbau
c) Bestimme Pulslänge für unteren Anschlag in µs *)
d) Bestimme Pulslänge für oberen Anschlag in µs *)
e) Testbereich: Pulslängen von 0 µs bis ca. 3000 µs
f) Messung der Stromaufnahme des Servos
g) Wählbare Periodenlänge (Periode, nicht Puls- bzw. Zykluszeit!) 5 ms bis 30 ms
*) Alternativ in Ticks = CPUclks - je nach Quarz. Code nur für 16 MHz resp. 20 MHz


Es läuft a) bis f) zufriedenstellend. Die Variation, Punkt g), muss noch besser werden - wird auf nem 20Mhz-Clone noch getestet. Die UART-Ausgabe bringt nur die Signatur. Als LCD ist ein 2x16-Display, Display-Elektronik_DEM16226SYH-LY, angeschlossen. Der zweite Servoanschluss läuft parallel zum ersten.

Die Hauptpunkte sind c) und d). Dabei wird durch das Potentiometer ein Bereich von 0 (!) bis 2046 µs erreicht. Die gewünschten Zeiten sind mit nem DSO bestätigt. Die 2000 µs genügen nicht immer, ich habe Servos die bis ca. 2300 µs fahren können. Per Tastendruck ist daher der Bereich (durch einen Offset auf den gemessenen Poti-/ADC-Wert) zu wechseln auf 1000 µs bis 3046 µs. Ein einfacher Jumper erlaubt das Einschleifen eines Amperemeters.

Bilder (Links):
Gesamtaufbau, Pulslänge 1000 (https://dl.dropbox.com/s/h8w0octz6pj6a1b/DSC03920-800Px.jpg?dl=0) µs
Ausschnitt, Pulslänge 2501 ticks à 0,4 (https://dl.dropbox.com/s/lhyzcu0k43pukx3/DSC03921-800Px.jpg?dl=0) µs
Ausschnitt, Pulslänge 2330 µs (Offset aktiv (https://dl.dropbox.com/s/f6y5j4ksyqhkoi2/DSC03923-800Px.jpg?dl=0))