PWM einlesen

OP #3415767
Lesenswert?

Hallo Zusammen,
Ich möchte ein PWM Signal in einen Arduino uno einlesen. Ich versuchte 
die über pulseIn() Funktion, das Problem dabei ist, dass mein Signal von 
2us bis 500us variabel ist und die pulseIn() Funktion erst ab ca. 10us 
funktioniert.

Danach liess ich das Signal analog über einen Tiefpass 2. Ordnung ein. 
Dies funktionierte Grundsätzlich nicht schlecht, doch das Problem bei 
dieser Methode ist dass ich logischerweise den Wechsel des Signals von 
100% zu 0% nicht sauber detektieren kann weil durch den Filter das 
Signal träge wird.

Meine Frage ist:
Soll ich das Signal über einen Interrupt Eingang einlesen und auswerten 
oder den Filter so anpassen dass die Zeitkonstante kleiner wird und ich 
ev. ein Rippel auf dem Signal hätte aber dafür den Sprung erkenne? 
(Dieser stört nicht da mich nur die Vorderste stelle interessiert….)

Sehe ich das richtig dass die Interrupt Lösung meinen Kontroller mehr 
belastet? Oder ist das einlesen des ADC genauso rechenintensiv?

Gibt es noch eine andere Möglichkeit das PWM Signal einzulesen?

Vielen Dank für eure Rückmeldung.
Gast #3415832
Lesenswert?

Svenska schrieb:
> PWM nutzt man, um eine analoge Spannung mit einem digitalen Pin
> auszugeben.

Das sollte man, ohne Hintergrundinformationen nicht so verallgemeinern.

Jeder Modellbauservo wird mit einem PWM-Signal gesteuert, dessen 
High-Dauer die Information über die Position enthält. Dabei ist also die 
Dauer analog, aber nicht die Spannung, die ein TP daraus erzeugen 
würde, da die Information nicht im Duty-Cycle Kodiert wird.
Gast #3416292
Lesenswert?

Oliver R. schrieb:
> Und das hat man damals gemacht, weil sich das PWM-Signal besser erzeugen
> und über Funk übertragen lies als ein Analoges.

Vor allen Dingen lassen sich damit mehrere Kanäle im Zeitmultiplex als 
Pulskette ("Summensignal") übertragen.

ggg schrieb:
> Kein Plan, ob der Arduino das kann.
Der Arduino besitzt einen ATmega328. Input capture per HW und 
anschließender Interrupt zum Auswerten, ohne den Prozessor groß zu 
belasten, sollte kein Problem sein, sofern die Wiederholfrequenz nicht 
zu hoch ist. Um die maximale Auflösung zu erreichen, wäre ein 16-bit 
Timer die richtige Wahl.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren