Forum: Mikrocontroller und Digitale Elektronik uC Erkennung PWM oder konstantes High Signal


von M.E. (Gast)


Lesenswert?

Hallo zusammen,
ich suche eine Software-Möglichkeit, die mir dabei hilft, dass ich über 
einen Mikrocontroller Eingang erkennen könnte, ob jetzt PWM oder eine 
konstante Gleichspannung am Eingang anliegt.

Eventuell könnte ich mir einen Timer oder dergleichen vorstellen, nur 
bin ich mir dabei unsicher, da ich noch keine großen Erfahrungen im 
Bereich Mikrocontroller programmieren besitze.

Zu den beiden Signalen:
Gleichspannung liegt bei 5V.
PWM hat eine Amplitude von 5V und eine Frequenz von 90Hz bis 5kHz.

Liebe Grüße
Max

von Frank K. (fchk)


Lesenswert?

Es gibt verschiedene Möglichkeiten:

1. Du könntest das Signal per Tiefpass (R-C oder L-C Filter) glätten und 
dann mit einem ADC-Eingang die Spannung messen.

2. Du nimmst ein Flipflop wie dieses:
https://www.ti.com/lit/ds/symlink/sn74lvc1g74.pdf
CLK schließt Du an das PWM-Signal an, D auf VCC. Mit einem negativen 
Puls auf CLR löscht du das Flipflop. Wenn das PWM-Signal anliegt, wird 
es beim nächsten Wechsel von low auf high den High-Wert von D eintakten, 
und das Flipflop wäre gesetzt. Bei einem Dauer-Ein würde das nie 
passieren, und das Flipflop wäre gelöscht.

3. Dein Controller hat vielleicht sogenannte CCP-Eingänge 
(Capture-Compare). Die können einen Timer ansteuern.

4. Dein Controller hat vielleicht Pins, die bei einem Pegelwechsel einen 
Interrupt auslösen können. Ein Interrupt reicht ja zur Detektion.

fchk

von nurmalso (Gast)


Lesenswert?

wie unterscheidest du denn dann zwischen DC und 100% PWM?
und eine PWM hat in der Regel eine feste Frequenz.
Vielleicht magst du etwas mehr über dein Eingangssignal erzählen?

von M.E. (Gast)


Lesenswert?

nurmalso schrieb:
> wie unterscheidest du denn dann zwischen DC und 100% PWM?

Sobald PWM einmal erkannt wurde am Eingang (natürlich muss die PWM 
zwischen 1-99% Duty liegen), möchte ich per Software, durch z.B. einer 
Variable in den Zustand bleiben, sprich wird einmal PWM am Eingang 
erkannt, soll alles weitere auch als PWM interpretiert werden. Erst 
durch einen Tasterdruck oder dergleichen, möchte ich den Zustand 
verlassen und wieder Fragen welche Art von Spannung (PWM 1-99% oder DC) 
liegt am Eingang.

nurmalso schrieb:
> und eine PWM hat in der Regel eine feste Frequenz.

Die Frequenzen ändern sich nicht mitten im Betrieb, sondern ich möchte 
den Frequenzbereich abdecken. Entweder liegt 90Hz an oder 1kHz...

von M.E. (Gast)


Lesenswert?

Vielen Dank Frank für die Aufzählungsmöglichkeiten.

Frank K. schrieb:
> 3. Dein Controller hat vielleicht sogenannte CCP-Eingänge
> (Capture-Compare). Die können einen Timer ansteuern.

Könnte ich z.B. mit einem CCP Eingangen folgendes Abfragen:

- wenn DC anliegt: miss z.B. 5 mal den Eingang, ist die Spannung 
konstant 5mal High? Wenn ja dann liegt ein DC Signal am Eingang

oder wenn PWM anligt, miss z.B. 5 mal den Eingang, gibt es einen einen 
Pegelwechsel? Wenn ja dann liegt PWM an.

von Der müde Joe (Gast)


Lesenswert?

Mit einem Monoflop. Die PWM triggert dieses Monoflop immer wieder an, 
bei einem reinen DC-Signal dann nicht mehr. Der Ausgang des Monoflops 
kippt dann in die andere Lage, und bleibt so. Das Monoflop muss 
natürlich an die Grundfrequenz der PWM und an die minimalen und 
maximalen Puls- und Pausenverhältnisse angepasst werden, dass das 
Monoflop auch bei der kleinsten Pause noch nicht auslöst.

Beitrag #6582601 wurde von einem Moderator gelöscht.
von Peter D. (peda)


Lesenswert?

Der müde Joe schrieb:
> Mit einem Monoflop.

Wozu unnötig Hardware dranpappen?
Der MC kann das doch einfach selber feststellen, z.B. mit 
Pin-Change-Interrupt und Timer.
Man kann auch den ADC nehmen. Bei PWM liefert er 0V oder VCC, bei DC 
irgendwas dazwischen.

Beitrag #6582616 wurde von einem Moderator gelöscht.
von Georg M. (g_m)


Lesenswert?

M.E. schrieb:
> wenn DC anliegt: miss z.B. 5 mal den Eingang, ist die Spannung
> konstant 5mal High? Wenn ja dann liegt ein DC Signal am Eingang
>
> oder wenn PWM anligt, miss z.B. 5 mal den Eingang, gibt es einen einen
> Pegelwechsel? Wenn ja dann liegt PWM an.

Der Mikrocontroller kann nicht nur zwischen DC und PWM unterscheiden, 
sondern zwischen z.B. 60% und 70% PWM.
Der Mikrocontroller hat einen Timer und kann die Impulsbreite messen, 
die Messergebnisse speichern und vergleichen.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ich entnehme der Aufgabenstellung das das PWM Signal nicht vermessen 
werden muss. Es soll nur zwischen High und PWM unterschieden werden.

Vorschlag. Du fragst zyklisch oder auf deinen Tastendruck hin einen 
Eingangspin mit einer Abfragezeit der längsten zu erwartenden 
Periodendauer ab. Bleibt es High, ja dann ist das High. Wechselt es auf 
Low, dann weißt du hier liegt eine PWM an.

von Dietrich L. (dietrichl)


Lesenswert?

Veit D. schrieb:
> Vorschlag. Du fragst zyklisch oder auf deinen Tastendruck hin einen
> Eingangspin mit einer Abfragezeit der längsten zu erwartenden
> Periodendauer ab. Bleibt es High, ja dann ist das High. Wechselt es auf
> Low, dann weißt du hier liegt eine PWM an.

Diese Lösung ist aber nicht sicher.
Wenn es dumm läuft, wird das PWM-Signal immer im High-Zustand abgefragt. 
Auch wenn es unwahrscheinlich ist kann es doch etliche Abfragen dauern, 
bis man auf ein Low trifft.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.