Lieber Besucher, herzlich willkommen bei: RCLine Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Chris Benndorf

RCLine User

  • »Chris Benndorf« ist der Autor dieses Themas

Wohnort: 67317 Altleiningen & 70567 Stuttgart

Beruf: Computerfredl

  • Nachricht senden

1

Samstag, 18. Juni 2005, 00:05

AVR - Servo-Tester

Hi,

nachdem ich gestern meinen Heli geschrottet habe, hat mich mal wieder die Bastel-Wut gepackt. Also habe ich ein altes Projekt wieder ausgegraben, dass ich schon mal angefangen hatte: einen Servo-Tester.

Ich weiss, da gibt es schon einige, aber ich will auch sehen, wieviel Strom ein Servo zieht. Das bloede ist nur, dass so ein Servo 1-2mS Strom zieht, dann 20mS nix mehr tut und mein ADC grundsaetzlich in der Tutnix-Phase den Strom messen will - und ich steh auf dem Schlauch und habe keine Idee, wie ich da ran gehe :dumm:

Kann mich jemand erleuchten ???
Heli: T-Rex 600 Pro Nitro/3G, 600 ESP/3G und 450 Pro/3G
Sender: Futaba FF-10 2,4GHz :D

wurpfel1

RCLine User

Wohnort: CH-rheintal

  • Nachricht senden

2

Samstag, 18. Juni 2005, 00:31

Hi Chris

es hat verschiedene timer in einem AVR. nimm den 16bit, oft timer01!! damit startest du unabhängig vom hauptprogramm das servo..
bin schon zu alt zum spielen.. macht aber gleichwohl spass ;-)

Chris Benndorf

RCLine User

  • »Chris Benndorf« ist der Autor dieses Themas

Wohnort: 67317 Altleiningen & 70567 Stuttgart

Beruf: Computerfredl

  • Nachricht senden

3

Samstag, 18. Juni 2005, 00:40

Hi Wurpfel,

soweit klar - der Servo wird ueber Timer 1 (16 Bit) und 2 Output Compare Register gesteuert. Das klappt auch einwandfrei.

Ich finde nur nicht den Trigger-Zeitpunkt fuer den ADC, damit der auch dann misst, wenn der Servo gerade Strom zieht. Ich habe immer 30 Messungen mit 0 mA und dann mal ein oder Zwei mit dem korrekten Strom.

THX
Chris
Heli: T-Rex 600 Pro Nitro/3G, 600 ESP/3G und 450 Pro/3G
Sender: Futaba FF-10 2,4GHz :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chris Benndorf« (18. Juni 2005, 00:40)


thmarx

RCLine User

Wohnort: D-06108 Halle

  • Nachricht senden

4

Samstag, 18. Juni 2005, 09:28

Hi Chris,
sehr interessante Sache. Das Servo zieht also nur in der Zeit Strom, wo der Servoimpuls Hi ist (also die besagten 1-2ms)? Das ist aber sicher nur bei analogen Servos so, digitale werden doch intern öfter als mit 20ms angesteuert?

Es handelts sich also um eine Art pulsierenden Gleichstrom. Dann musst du erstmal festlegen, welchen Strom Du messen willst - den Durchschnittsstrom während des gesamten Zyklus von 20ms oder den Spitzenstrom von 1-2ms?
(Ist ja dann so ähnlich wie bei den Motorstellern. Die haben auch einen pulsierenden Gleichstrom mit variabler Pulsbreite. Während der Hi-Phase fliesst der volle Motorstrom, während der Low-Phase kein Strom. Im Mittel stellt sich dann ein Strom ein, der zur Pulsbreite proportional ist.)

Welcher AVR benutzt Du?
Ich würde versuchen während des gesamten 20ms-Zyklus einige Strommessungen durchzuführen (so 64 oder 128, je nachdem wieviel SRAM zu Verfügung steht, möglichst gleichmässig über die 20ms verteilt). Daraus dann der Mittelwert=Durchschnittsstrom und der Maximalwert=Maximalstrom. Interessant wäre noch die zeitliche Beziehung zwischen Beginn des Impulses und Beginn des Stromfluss.

Gruss
Thomas
Thomas Marx

Chris Benndorf

RCLine User

  • »Chris Benndorf« ist der Autor dieses Themas

Wohnort: 67317 Altleiningen & 70567 Stuttgart

Beruf: Computerfredl

  • Nachricht senden

5

Samstag, 18. Juni 2005, 10:33

Hi Thomas :-)

Inzwischen bin ich wieder wieder mit meinen Experimenten ein bisschen weiter. Der Witz ist, das das Servo (Robbe S148 ) scheinbar erst das Signal liest und dann umsetzt. D. h. zu der Zeit, wo der AVR den Puls auf High hat, ist der Strom auf ca. 0 (noch sehr ungenaue Messung). Wenn denn das Signal auf Low geht, faengt das Servo an Strom zu ziehen - allerdings in Abhaengigkeit zu Position und Belastung - wobei eine staerkere Belastung zu laengerer Stromaufnahme fuehrt, und nicht unbedingt zu hoeherem Strombedarf... (Alle Angaben mit dem Oszi geschaetzt ;) )

Die Idee, ueber die ganzen 20mS mehrere Messungen zu machen, wird wahrscheinlich die einzig gangbare Loesung sein. Das werde ich nachher mal ausprobieren.

Ich benutze derzeit einen Mega163, den ich noch auf dem Steckbrett verdrahtet hatte. Wenn ich das fuer einen Kanal fertig habe, wollte ich es auf >=5 erweitern, damit man einen ganzen Flieger durchchecken kann. Dafuer werde ich dann wohl einen (dann) aktuellen 40poligen Mega benutzen und ihm ein Display spendieren.

Was mich auch gerade noch auf ein paar Ideen gebracht hat war folgende Webseite:
Servoswitch

Ein wenig veraendert, liessen sich damit die Servos eines Fliegers in der Luft messen und protokollieren - geniales Erweiterungsmodul zum Midi-Logger 8)
Heli: T-Rex 600 Pro Nitro/3G, 600 ESP/3G und 450 Pro/3G
Sender: Futaba FF-10 2,4GHz :D

thmarx

RCLine User

Wohnort: D-06108 Halle

  • Nachricht senden

6

Samstag, 18. Juni 2005, 11:15

Zitat

Ein wenig veraendert, liessen sich damit die Servos eines Fliegers in der Luft messen und protokollieren - geniales Erweiterungsmodul zum Midi-Logger

Deshalb finde ich es ja auch so interessant 8)

Du könntest auch den Analog Comparator benutzen, um den Beginn des Stromflusses zu erfassen: Eingang AIN0 auf eine Vergleichsspannung, den "Stromeingang" auf einen ADC-Eingang. Über den Analog Comparator Multiplexer lässt sich ein ADC-Eingang als negativer Eingang für den Comparator konfigurieren. (siehe Datenblatt Mega163, Seite 104; andere AVR's können das auch)
Dann weisst Du schon mal wann der Stromfluss beginnt. Anschliessend kannst Du einfach den Stromfluss messen. Der Comparator kann Dir dann auch Signalisieren wann der Stromfluss zu Ende ist.
Du könntest sogar den Analog Comparator mit dem Input Capture verbinden (Datenblatt Seite 43) und damit die Dauer des Stromflusses und der Pause erfassen.

Kann man verstehen was ich meine?

Gruss
Thomas
Thomas Marx

Chris Benndorf

RCLine User

  • »Chris Benndorf« ist der Autor dieses Themas

Wohnort: 67317 Altleiningen & 70567 Stuttgart

Beruf: Computerfredl

  • Nachricht senden

7

Samstag, 18. Juni 2005, 17:58

Hi Thomas,

mit dem Comparator habe ich gestern nacht schon rumprobiert, da ich genau den gleichen Gedanken hatte. Das hat nur in heillosem Chaos geendet, da der Servo schon ein ganz klein wenig Strom braucht. Mein derzeitiger Shunt ist bloss so dimensioniert, dass da beim 8bit-Betrieb des ADC nix gemessen wird. Der Comparator loest aber sofort und hochfrequent Interrupts aus ;-) So ganz ohne weitere Beschaltung scheint das nicht so das Wahre zu sein (und wir wollen ja keine Beschaltung :D ).

Jetzt (wenn ich wieder Zeit finde) werde ich mich erstmal an die Langzeitmessung machen...
Heli: T-Rex 600 Pro Nitro/3G, 600 ESP/3G und 450 Pro/3G
Sender: Futaba FF-10 2,4GHz :D