Forum: Mikrocontroller und Digitale Elektronik Schnelle PWM mit langsamen ADC messen


von Marcel K. (viewer)


Lesenswert?

Hallo Forumgemeinde,
ich habe eine LED die mit einem PWM gedimmt wird. Es handelt sich um den 
16Bit Timer (no prescale) des ATMega128 der mit 16MHz getacktet wird. 
Jetzt habe ich einen Shunt mit dem ich den Strom messen möchte. Jetzt 
habe ich das Problem, dass ich den Strom nur bei einer Duty-Cycle von 
ca. 20% messen kann. Wenn ich den Strom messen möchte, aktiviere ich den 
Timer-Overflow-Interrupt. Wenn der Timer, mit dem ja das PWM-Signal 
erzeugt wird, seine 65.536 erreicht, wird der Interrupt ausgelöst. In 
diesem Interrupt starte ich dann eine ADC-Messung. Klar dass ich dann 
nur einen Vernünftigen Wert erhalte, wenn das PWM-Signal lang genug 
ansteht da der ADC eine viel kleinere Messfrequenz hat.
Jetzt ist meine Frage ob jemand eine Möglichkeit kenn, das der ADC genau 
dann misst, wenn der PWM gerade erst einen duty-Cycle erledigt hat.

Viele Grüße,

Marcel(",)

von j. c. (jesuschristus)


Lesenswert?

Mach doch die PWM Frequenz kleiner.

von Michael A. (Gast)


Lesenswert?

Miß doch den mittleren Strom über einen Tiefpaß und verrechne das mit 
deinem DC.

von Thomas E. (thomase)


Lesenswert?

Was versprichst du dir von dieser Messung?

Die Spannung ist immer gleich. Somit ist auch der Strom immer gleich.
Ob nun 1 ms, 2s oder 3 Tage.

mfg.

von Andreas K. (derandi)


Lesenswert?

Strom messen? Wozu, bei PWM gibts doch eh nur an und aus.

von Michael (Gast)


Lesenswert?

Der Gewinner ist "Michael S."

So macht man das.

von Max D. (Firma: No RISC, no fun.) (metalfan)


Lesenswert?

Vom adc sollte bekannt sein wann er seinen sample&hold macht (nach dem 
start), steht im db. Entweder nimmst du den anderen comapre um den adc 
so zu triggern, dass er sampled wenn der strom (fast) maximal ist (und 
dann im leerlauf konvertiert), oder du weichst aus (wenn du keinen 
compare mehr freihast) auf ein _delayms() oder _delayus() um den adc so 
richtig zu zielen und hoffst darauf, dass niemand dazwischen 
interrupted.

von Max D. (Firma: No RISC, no fun.) (metalfan)


Lesenswert?

Anmerkung an alle "schlauen" hier: vlt. dimmt er ja per pwm + Spule

von Andreas K. (derandi)


Lesenswert?

Hört sich aber nicht so an, wäre bei einer LED auch nicht wirklich 
praktikabel.

Wo bleibt eigentlich falk mit der Netiquette? Pläne sagen mehr als 
tausend Worte!

von Marcel K. (viewer)


Lesenswert?

Hallo zusammen,
@j.c.
Ich kann mit der Frequenz leider nicht runter.

@Thomas Eckmann
Danke für Deinen Hinweis. Darauf wäre ich von selbst nicht gekommen!

@Andreas K.
Ich möchte den Strom messen, damit der maximale LED-Strom nicht 
überschritten wird. Der Strom sollte besser nicht den Nennstrom im 
Datenblatt überschreiten.

Ich wollte es extra nicht erwähnen, da es eigentlich nicht zum Problem 
dazu gehört. Ich treibe mit dem PWM-Signal einen LED-Treiber (ISL97801). 
Dieser kann über einen Spannungsteiler einen LED-Strom vorgeben. Dieser 
wiederum erzeugt ein PWM-Signal mit der die LED getrieben wird. In der 
Experimentierphase möchte ich den eingestellten Strom halt gerne 
kontrollieren bevor ich mich in der endgültigen Schaltung auf den 
eingestellten Strom verlasse. Das tut aber nicht zur Sache! Mich hat es 
einfach interessiert, wie ich einen PWM-Strom messen kann. Mein Problem 
ist es, dass bei einer sehr kleinen „duty cycle“ die Spannung am Shunt 
halt nicht richtig gemessen werden kann.

@Max D.
Ich glaube das ist die rettende Idee. Ich habe bei den zwei 16-bit- 
Timer jeweils noch den 3. Output Compare übrig. (die anderen sind mit 
den RGBW- Farben belegt) Diesen OCxC müsste ich kurz vor erreichen des 
Overflows setzen, so dass eine ADC-Messung genau bei 1-5 / 65.536 
gemessen wird. Danke für den Tipp.

Meld mich wenn ich ein Ergebnis habe.

Danke auch an die anderen,
Viele Grüße,
Marcel(",)

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.