Forum: Mikrocontroller und Digitale Elektronik Impulszähler Starterkennung


von Paul (Gast)


Lesenswert?

Hallo Leute,

ich stehe vor einen Problem, wo ich leider noch keinen vernünftigen 
Ansatz gefunden habe.

Ich möchte Impulse zählen in einen festgelegten Zeitraum.
Ein ATtiny2313 soll von einen Münzzählgerät Impulse zählen.

Dieses Gerät gibt in einer festen Zeit unterschiedliche Anzahl von 
Impulsen in einer festen Zeitbasis von 100ms, je nach Münzstück.

Diese möchte ich auswerten um die Summe der Münzstücke zu addieren.

Meine Überlegungen bisher:
Ich nutze einen Timer und konfiguriere ihn mit externen Takt und lege 
dort mein Impulsausgang vom Münzzahler an.

Ein zweiter Timer kann mir helfen das Zeitfenster von 100ms zu 
erstellen.

Aber mir fehlt ein Ansatz, wie ich nun den uC sage wann diese 100ms 
eigentlich anfangen. Sie fangen ja mit dem ersten Impuls von dem 100ms 
Zeitfenster an und können ja jederzeit anfangen.

Hat jemand einen Denkanstoß für mich?

Ich bin über jede Hilfe dankbar.

von Karl M. (Gast)


Lesenswert?

Tipp: bitte zeichne eine Zeitdiagramm.

von Paul (Gast)


Angehängte Dateien:

Lesenswert?

Karl M. schrieb:
> Tipp: bitte zeichne eine Zeitdiagramm.

Danke für den Tipp, ich hatte bereits eins gezeichnet. Nicht 
professionell aber es macht deutlich was passiert.

Hab es im Anhang eingefügt.

von Karl M. (Gast)


Lesenswert?

Es gibt eine, die Erste steigende Flanke - das wäre aus Sicht des 
Diagramms der Start.

Richtig?

von Paul (Gast)


Lesenswert?

Es wäre sinnvoller ein Interrupt zu nutzen der ab der ersten 
Signalflanke vom Münzzähler die Zeit bis 100ms startet und dann die 
Anzahl der Impulse auswertet.

Was haltet ihr von der Lösung, sinnvoll?

von Paul (Gast)


Lesenswert?

Karl M. schrieb:
> Es gibt eine, die Erste steigende Flanke - das wäre aus Sicht des
> Diagramms der Start.
>
> Richtig?

Richtig, diese kommt aber irgendwann, also sobald eine Münze eingeworfen 
wird. Absolut zeitunabhängit.

Aber wenn eine Münze eingeworfen wird, gibt der Automat eine 
Impulsanzahl innerhalb der 100ms aus.

von Karl M. (Gast)


Lesenswert?

Du musst es programmieren, mach mal.
Und vergessen nicht deine Ideen vorher genau aufzuschreiben.
Draus entstehen dann Erfassungs-Zustände, die man in einen Automaten 
überführen kann.

von STK500-Besitzer (Gast)


Lesenswert?

Flanken ISR:
1. Flanke erkennen
2. läuft das 100ms-Intervall?
(noch) nicht?
2a. Interval-Timer starten
2b. Impuls-Zähler auf 0 setzen

3. Impuls-Zähler erhöhen

Interval-Ende-ISR
1. Impuls-Zahlerstand speichern (für Auswerteroutine)
2. Fertig-Meldung abgeben

Das wären zwei ISR: Eine wird aufgrund eine Flanke an einem IO-Pin 
ausgelöst, die andere beim Überlauf eines 100ms-Singleshot-Timers (kein 
automatisches Reset).

von Mario M. (thelonging)


Lesenswert?

Interrupts an prellenden Kontakten sind selten eine gute Idee. Schau Dir 
doch an, wie man eine Wählscheibe einliest, das ist das gleiche Prinzip.
https://www.instructables.com/id/Interface-a-rotary-phone-dial-to-an-Arduino/

von Sascha W. (sascha-w)


Lesenswert?

Mario M. schrieb:
> Interrupts an prellenden Kontakten sind selten eine gute Idee. Schau Dir
> doch an, wie man eine Wählscheibe einliest, das ist das gleiche Prinzip.
> https://www.instructables.com/id/Interface-a-rotary-phone-dial-to-an-Arduino/
Der beschriebene Münzzähler wird wohl kaum einen Ausgang mit 
mechanischem Kontakt haben.

Sascha

von Jörg R. (solar77)


Lesenswert?

Gehören die Threads irgendwie zusammen, unter 2 verschiedenen 
Gast-Usern?

Beitrag "Pulse auswerten und Kontakt schließen"

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.