Schnelle PWM mit langsamen ADC messen

OP #2315932
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(",)
(Firma: No RISC, no fun.) #2315993
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.
OP #2316228
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(",)

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