Forum: Mikrocontroller und Digitale Elektronik ATMega als Impulszähle (µs-Bereich)


von Sören K. (fluxkompensator)


Lesenswert?

Hallo,

Ich möchte mit einem µC gerne eine Schaltung realisieren, die einzelne 
Impulse zählt, die relativ schnell aufeinander kommen. (µs-Bereich) Die 
Impulse werden vorher mit einem Halteglied o.Ä. auf Rechteckform 
gebracht.

Die Frage die sich mir stellt ist ist die, wie lange der Highpegel bei 
den günstigeren, geläufigen µC's (ATMega8/16/32) am Eingang anliegen 
muss, damit er erkannt wird und wie weit die Impulse auseinander liegen 
müssen, damit sie noch als einzelne Impulse erkannt werden. (Zeitliches 
Auflösungsvermögen?)

Wie errechnen sich diese Werte? Oder stehen sie in den Datenblättern?

Grüße,
S.

von Hmm (Gast)


Lesenswert?

>Oder stehen sie in den Datenblättern?
Was hast Du denn bei Deinen Versuchen die Angaben im Datenblatt zu 
suchen gefunden?

von ahem (Gast)


Lesenswert?

Was koennte denn eine minimale Zeit fuer Pulslaenge und Abstans detn ?

von Sören K. (fluxkompensator)


Lesenswert?

Hallo,

Ich kenne mich mit µC's überhaupt noch nicht aus und weiß daher auch 
nicht, an welcher Stelle des riesigen Datenblattes ich überhaupt 
nachsehen muss. Vorstellen könnte ich mir, dass die höchstmögliche 
zählbare Frequenz durch den eigentlichen Rechentakt begrenzt ist, 
allerdings wird die reale doch eine ganze Ecke tiefer liegen?
Vielleicht kann mir ja doch jemand helfen.

Grüße,
S.

von Klaus (Gast)


Lesenswert?

Normalerweise (bestimmt!) stehen alle relevanten Angaben im Datenblatt.

Mit AVR uC kenne ich mich nicht speziell aus.
Aber:
Externe Frequenzen oder Impulse lassen sich mit der "Timer" Einheit 
messen.
Entweder als Zähler (counter mode) oder -wie wahrscheinlich in deiner 
Anwendung nötig, bei "unregelmäßigen Einzelimpulsen"- mit dem "input 
capture mode".
Die max. zulässige Frequenz bzw. Impulsbreiten stehen im Datenblatt.
Üblicherweise sind die generell niedriger als die interne Taktfrequenz 
des uC, ofmals z.B. nur max. 1/4 der internen Taktfrequenz.
Diese interne Taktfrequenz wiederum kann identisch zur einem 
angeschlossenen Quarz sein (direkter Oszillator), oder aber der uC hat 
eine "PLL", also eine höhere (mögliche) interne Taktfrequenz als der 
Quarz.
Als weitere Lösung könnte man die Impulse an den externen 
Interrupt-Eingang legen; das sinnvoll, wenn direkter "input capture 
mode" einer / der Timereinheit nicht vorhanden ist.

Mehr lässt sich nur aussagen, wenn du deutlich exakter beschreibst, 
welche Art von Impulsen erfasst werden müssen.
Ist es ein wiederholendes Signal?
Oder muss "exakt" jeder einzelne Impuls erfasst werden?
Sinnvoll wäre auch die Angabe, welchen exakten Typ von uC du momentan 
vorgesehen hast.

von Manfred S. (mandinice)


Lesenswert?

Hallöchen

Denke hab' vor kurze mal gelesen :

Der Pegel muss beim AVR mindestes 2.5 Taktzyklen anliegen damit z.B. der 
Timer den Takt erkennt.
Also bei einem Qartz mit 10 Mhz wären das wohl 0.25 usec.

hmg
Mandi

von Sören K. (fluxkompensator)


Lesenswert?

Hallo,

Die Pulse kommen regelmäßig. Es geht darum, zu erfassen, wenn ein Impuls 
nicht gekommen ist.

Anwendung: Thema meiner Studienarbeit ist die Entwicklung einer Logik 
zur Erfassung von nicht-erfolgten Zündungen von Zündspulen, die vorher 
einigen Stress-/Alterungstests unterzogen wurden.
D.h. die Spule wird mit realistischer Geschwindigkeit mit Spannung 
versorgt (Bereich um 100Hz), der Lichtbogen wird optisch detektiert und 
anschließend auf Rechteckform gebracht.
Am Ende habe ich also 12 Spannungen (pegel high/low) (2 kommen immer 
gleichzeitig), deren Impulse ich zählen möchte, um sie anschließend auf 
dem Mikrocontroller mit dem Referenzimpuls zu vergleichen und damit 
schlussendlich auf den Zustand der Zündkerze zu schließen.

Da die Zahl der erfolgten Zündungen um ein vielfaches größer sein wird 
als die Zahl der nicht-erfolgten Zündungen wäre es sicher auch eine 
Möglichkeit, Referenztakt und Signal per XOR zur vergleichen und dann an 
den Controller zu geben, dann müsste man nur die fehlgeschlagenen 
Zündungen zählen. Allerdings hätte ich am liebsten auch die "Rohdaten" 
der einzelnen Impulse gezählt.

Einen konkreten µC habe ich noch nicht ausgewählt, da ich nicht weiß, 
wie ich ihn zu dimensionieren habe. Natürlich will ich nicht unnütz 
einen Mega128 einsetzen, wenn es auch der 8er tut... mal extrem 
ausgedrückt.
Da der 32 allerdings relativ günstig zu haben ist und die Ausgabeform 
(evtl LCD?) noch nicht feststeht, würde ich wohl auf den setzen, wenn er 
für die obigen Kriterien ausreicht.

Ach ja:
Die Auflösung im µs-Bereich habe ich zuerst angesprochen, da das für ein 
nachfolgendes Projekt interessant wäre, wofür man den Code eventuell nur 
erweitern müsste.

Ich hoffe, dass ihr mir helfen könnt,
S.

von Sören K. (fluxkompensator)


Lesenswert?

Manfred Schön wrote:
> Hallöchen
>
> Denke hab' vor kurze mal gelesen :
>
> Der Pegel muss beim AVR mindestes 2.5 Taktzyklen anliegen damit z.B. der
> Timer den Takt erkennt.
> Also bei einem Qartz mit 10 Mhz wären das wohl 0.25 usec.
>
> hmg
> Mandi

Das würde ja bedeuten, dass ATMega 8/16/32 locker ausreichen selbst für 
den µs-Bereich. Korrekt?
Sind diese Typen für meine Anwendung in Ordnung?

Viele Grüße,
S.

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.