Forum: Mikrocontroller und Digitale Elektronik ADC gleichzeitig mit AC - Mega 8


von E. M. (hias)


Lesenswert?

Hallo!

Ich benutze den ADC eines Mega8 um Strom zu Messen.
Den ADC-Wert brauche ich fortlaufend für die Berechnung anderer Größen.

Gleichzeitig möchte ich aber den AC nutzen um einen Interrupt beim 
überschreiten eines Spannungswertes zu erhalten.

In meinen Überlegungen tauche ich jetzt auf folgendes Problem.
Angenommen ich messe alle ms den Strom. Die Wandlung dauert eine gewisse 
Zeit. Das heißt würde wärend dieser Zeit ein Spannungswert die Schwelle 
überschreiten, würde kein Interrupt ausgelöst werden.

Das heißt aber im Folgeschluss: Ich darf den Strom nicht zyklisch 
messen.
Aber wie dann? Irgendwelche Ideen?

Hinzuzufügen ist, dass ich auf den Interrupt möglichst schnell reagieren 
muss. Würde ich erst nach einer AD-Wandlung auf einen Interrupt 
reagiern, wäre dies zu spät.

MfG Hias

von Compy (Gast)


Lesenswert?

Vielleicht kannste mit dem Analogvergleicher ja was anstellen?

von Johannes M. (johnny-m)


Lesenswert?

Eder Matthias wrote:
> In meinen Überlegungen tauche ich jetzt auf folgendes Problem.
> Angenommen ich messe alle ms den Strom. Die Wandlung dauert eine gewisse
> Zeit. Das heißt würde wärend dieser Zeit ein Spannungswert die Schwelle
> überschreiten, würde kein Interrupt ausgelöst werden.
Sagt wer? Der ADC ist eine Peripherie-Einheit, die quasi unabhängig vom 
Programm und sonstigen Komponenten vor sich hintuckert. Während die 
Wandlung läuft kann der Rest des AVR machen, was er will. Und 
selbstverständlich kannst Du auch den Analog-Komparator benutzen, um auf 
Schwellwerte zu reagieren. Der Komparator hat primär nichts mit dem ADC 
zu tun (außer, wenn Du den Mulitplexer für den Komparator brauchst oder 
den ADC mit dem Komparator triggern willst).

von Compy (Gast)


Lesenswert?

Ja...aber ich denk, er macht sich sorgen, wenn ne Stromspitze während 
der Approximation des ADC auftritt, die womöglich untergeht. Der 
Vergleicher arbeitet meines Wissens nach doch nicht zeitdiskret, der 
vergleicht doch in echtzeit und ohne "Wandlungsphasen", in denen was 
untergehen könnte.

von Johannes M. (johnny-m)


Lesenswert?

@Compy:
Ich verstehe das derzeit so, dass Metthias denkt, dass während einer 
Analog-Digital-Wandlung kein Analog-Komparator-Interrupt bearbeitet 
werden kann (siehe letzter Absatz im OP). Dem ist aber nicht so.

von Compy (Gast)


Lesenswert?

Ach mensch ich Dummkopf
>den AC nutzen

hab mich verlesen, nä. Klar schmeißt der AC (AC!) mit Unterbrecher um 
sich, wenn er was zu vermelden hat...

Allerdings gewinnt im Zweikampf der ADC (aDc!), dessen Unterbrecher sind 
nämlich wichtiger (Prioritäten...)

von Johannes M. (johnny-m)


Lesenswert?

Compy wrote:
> Allerdings gewinnt im Zweikampf der ADC (aDc!), dessen Unterbrecher sind
> nämlich wichtiger (Prioritäten...)
Sollte im Normalfall kein Problem sein, wenn der ADC-Interrupt-Handler 
ausreichend kurz ist... (was für Interrupt Handler generell ratsam ist). 
Und wenn es extrem wichtig ist, dann kann man auch den ADC-Handler 
unterbrechbar machen, dann gehen höchstens ein paar wenige Takte 
verloren. Da der ADC als eher langsam anzusehen ist, sollte nicht die 
Gefahr bestehen, dass er seinen eigenen Interrupt-Handler unterbricht 
und so Stackprobleme verursacht.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Wenn man die ADC-Werte zyklisch pollt und nicht den ADC-Ready-Interrupt 
nutzt, kann man dem Analog-Komparator das Zepter in die Hand geben und 
mit dessen Interrupt sehr schnell auf Peaks reagieren.

von E. M. (hias)


Lesenswert?

Ich hab euch den entscheidenden Teil nicht gesagt.
Ich brauch den Multiplexer um die Vergleichsspannungen auszuwählen.
Ich habe 4 Spannungen die ich mittels ADMUX mit einem Wert vergleiche.
Davon wird immer nur eine Spannung mit der Referenzspannung verglichen.

Das Problem besteht also darin:
Falls ich mittel zyklischer Abfrage den ADC-Wert abfrage, muss ich den 
richtigen Pin mittels ADMUX auf den AD Wandler schalten. Somit muss ich 
den AC  schonmal deaktivieren um nicht falsche Ergebnisse zu erhalten. 
Ich kann erst nach der Wandlung wieder den AD einschalten und mit ADMUX 
den entsprechenden PIN mit dem AC "verbinden".

Welche Lösungen gibts für dieses Problem?

MfG Hias

von Peter D. (peda)


Lesenswert?

Eder Matthias wrote:

> Welche Lösungen gibts für dieses Problem?

Das Problem überhaupt erstmal feststellen!


Ob der ADC oder der Komparator schneller ist, ist vollkommen irrelevant.

Du mußt erstmal festlegen, wie lang ist der Spannungsimpuls minimal, der 
erkannt werden soll.
Und dann, wie lang kann die Reaktionszeit darauf maximal sein.


Erst danach kann man feststellen, ob der ADC oder Komparator es wuppen 
kann oder keiner von beiden.


Peter

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Welche Lösungen gibts für dieses Problem?

Einen guten Programmierstil ;-) Es kommt immer drauf an, was man machen 
will und ob das Timing noch hinhaut. Wenn nicht, muß ein externer MUX 
her.

von E. M. (hias)


Lesenswert?

Peter Dannegger wrote:
> Eder Matthias wrote:
>
>> Welche Lösungen gibts für dieses Problem?
>
> Das Problem überhaupt erstmal feststellen!
>
>
> Ob der ADC oder der Komparator schneller ist, ist vollkommen irrelevant.
>
> Du mußt erstmal festlegen, wie lang ist der Spannungsimpuls minimal, der
> erkannt werden soll.
> Und dann, wie lang kann die Reaktionszeit darauf maximal sein.
>
>
> Erst danach kann man feststellen, ob der ADC oder Komparator es wuppen
> kann oder keiner von beiden.
>
>
> Peter

Um nochmal genauer zu werden:
Wann einer der 4 Spannungen den Schwellwert überschreitet kann man nicht 
vorhersehen. Theoretisch dürfte dieses "Signal" nicht über 10kHz liegen.
Das ganze ist aber keinesfalls regelmäßig.
Es kann doch also immer passieren, dass während einer AD-Wandlung die 
Schwellspannung überschritten wird.
Oder liege ich da falsch?

Hias

von Peter D. (peda)


Lesenswert?

Eder Matthias wrote:

> Um nochmal genauer zu werden:
> Wann einer der 4 Spannungen den Schwellwert überschreitet kann man nicht
> vorhersehen. Theoretisch dürfte dieses "Signal" nicht über 10kHz liegen.

"theoretisch" und "dürfte" haben in einer Projektbeschreibung nichts 
verloren. Wir kennen Dein Signal nicht.

Wenn Du Deine Anforderungen nicht genauer beschreibst, kann man nichts 
dazu sagen.


> Es kann doch also immer passieren, dass während einer AD-Wandlung die
> Schwellspannung überschritten wird.

Passieren kann vieles, solange Du es nicht spezifizierst und 
nachrechnest.


Wenn Du den Multiplexer umschaltest, hast Du immer Abtastpausen, egal ob 
mit ADC oder Komparator.

Wenn Du keine Lust zum Ausrechnen hast, mußt Du eben extern nen LM339 
ranpappen.


Peter

von mehrfacher STK500-Besitzer (Gast)


Lesenswert?

Kannst du das mal aufmalen?

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.