Re: RC Signal in Microcontroller auswerten - einfachste Schaltung

Knolles ELEKTRONIK Forum

Geschrieben von Theodor Wadelow am 25. Oktober 2020 14:04:01:

Als Antwort auf: Re: RC Signal in Gleichspannung wandeln - Noch eine Schaltung geschrieben von Christian am 25. Oktober 2020 11:29:12:

Hallo Christian,

> Krass wie gut Du Dich damit auskennst, Kompliment!
Danke, das geht runter wie Öl ;-)

> Stimmt, ich hatte gar nicht genau geschrieben was ich vorhabe und warum ich die Gleichspannung benötige:
> Ich möchte einen Senderkanal benutzen um damit mit einem µC (ATMEGA328P) eine Last ein und auszuschalten. D.h. es sollen nur zwei Signalzustände erfasst werden, minimale PPM 1ms und maximum 2 ms. Jetzt mein > Problem, ich habe "nur" noch einen echten analogen Eingang am µC frei mit dem ich diese zwei Zustände unterscheiden möchte.
> Daher wäre es egal ob 1V und 3V, Hauptsache eine Differenz die der µC erkennen kann.

Oh Mann !
1) Größerer Microcontroller -> PWM digital lesen! Die Dinger sind nicht sooo teuer !
2) Hättest Du das mal vorher gesagt … aber immerhin eine nette Fingerübung ;-)
3) siehe hier:
4) Welcher Pin ist es exakt? ADC6 oder ADC7?



Für größeres Bild bitte hier klicken.

Ich nehme an, der ATMEGA38 ( Arduino/Arduino Nano ?) kann zwischen 0.2 und 0.4V exakt genug sampeln.
Tipp: siehe Datenblatt, Table 24-3. Voltage Reference Selections for ADC und setzt REFS0 = REFS1 = 1 -> 1.1V internal Voltage reference.

Im Mikrocontroller müsstest Du dann z.B. so alle 5ms sampeln und mitzählen ob z.B. 10 aufeinanderfolgende Samples (50ms, etwas mehr als 2 Perioden) alle unter ca. 320mV oder über ca. 400mV sind.
Dafür empfehle ich erstmal 2 getrennte Zähl-Variablen. Jeder der Zähler, der nach einem Smapling nicht erhöht wird, wird wieder auf 0 resettet.
Wenn eine der Zähl-Variablen über die besagte 10 kommt, dann setzt Du entsprechend eine 3. Variable (dein "Ergebnis") auf 0 oder 1.

Die exakten Spannungen interessieren dich nicht, schreib' dir zum Testen ein Programm, das die gesampelten Werte (200 pro Sekunde bei 1 Sample alle 5ms) ausgibt und gucke Dir die Samplewerte an.
Mache bitte nicht den Fehler, im Microcontroller Mittelwerte bilden zu wollen. Wenn ein Wert über z.B. 320mV ist dann ist das kein sauber erkanntes "Low / 0%" mehr und du musst weiter sampeln.
Die exakten Sample-Werte für die obere und untere Grenze kannst du dann mit einem bischen Ausprobieren selbst anpassen.

Für optimales Sampling würde ich eine Sample-Intervall verwenden wollen, da möglichst teilerfremd zu den 50 Hz entsprechend 20ms ist.
20ms hat die Teiler 5 und 2 und 2, da bietet sich ein Sampling mit 3 und 7 an:
-> 7ms Intervall sind noch im Mittel knapp 3 Samples pro 50Hz-Intervall. Das sollte reichen, ist aber ein bischen wenig, für meinen Geschmack.
Alle 3 ms zu Sampeln gibt im Mittel 7 Samples pro 50Hz-Intervall. Genau richtig, wenn deine Software-Struktur es hergibt, so oft zu sampeln.
Dann natürlich nicht bis 10 Zählen (was 30ms wären) sondern lieber bis 15 (was 45 ms wären, knapp über 2 Perioden).
Natürlich gehen auch Sampling -intervalle wie z.B. 3.5ms (7÷2) oder 5.5ms (11÷2) oder 4.5ms (3×3÷2), nur sollte das Sampling nicht 'zufällig'
immer synchron zu den 50Hz z.B. exakt die Maxima oder Minima des Sägezahns erwischen.

Ach, und dann teste das unbedingt noch mit verschiedenen Betriebsspannungenen am Modellbau-Empfänger, falls du nicht eien Spannungswandler (BEC)
verwendest. Nicht dass das versagt, wenn die Eingangspulse mal nur mit 4,5V kommen weil die Empfänger-Batterie schwach ist.

-Theo

Antworten:

Knolles ELEKTRONIK Forum

| ©www.HobbyElektronik.de | ©Knolle_P | (©Oliver Pering) |