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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.