Forum: Mikrocontroller und Digitale Elektronik Drehzahlerfassung mit Atmega32 in C


von Dirk S. (derdork)


Lesenswert?

Hallo zusammen.
Ich weiss dass das Thema tw. schon des öfteren Angesprochen wurde, 
allerdings nicht in meiner Konfiguration.

Ich habe einen Verbrennungsmotor (0-15000 u/min)bei dem ich aus dem 
Steuergerät ein 12V Rechteck als drehzahlsignal bekomme.
Dieses Drehzahlsignal möchte ich nun auf einem Grafikfähigen Display 
ausgeben.

Das Rechteck würde ich mit einem Spannungsteiler (2,2k / 3,9k) auf den 
Maximalwert 5V begrenzen (bei 13.8V).

Meine angedachte Herangehensweise:
- Drehzahl über T1 (PB1) über Counter erfassen
- Drehzahl entsprechend der Pulse/umdrehung runterrechnen bzw. 
Hochrechnen
- Umrechnen auf u/min
- Ausgabe auf dem Display

Ist es sinnvoll den T1 dafür zu verwenden? Wenn ja - im 16Bit Mode (wert 
kann ja >255 werden)

Gleichzeitig möchte ich Eine Gruppe von LEDs ansteuern (0-3000 1.LED, 
3000-5000 2. LED, 5000-7000 3. LED, 7000-12000 4. LED, 13500: Blinken 5. 
LED). Dazu würde ich eine Endlosschleife laufen lassen, die immer den 
aktuellen Registerwert vom T1 mit den Grenzwerten vergleicht und dann 
entsprechend die LEDs einschaltet.

Habt ihr Tipps / Hinweise?
Vielleicht ein paar Code-Snippets?

Würdet ihr das ganze anders realisieren?
Ggf. Soll gleichzeitig mit dem A/D Wandler auch noch eine Spannung 
gemessen und angezeigt werden - auf dem selben Display.
Dazu Hinweise?

Grüße

von Helmut L. (helmi1)


Lesenswert?

>Das Rechteck würde ich mit einem Spannungsteiler (2,2k / 3,9k) auf den
>Maximalwert 5V begrenzen (bei 13.8V).

Schlecht da so dein Eingang nicht gegen Spannungsspitzen geschuetzt ist.
Besser ist es zum unteren Widerstand noch eine Z-Diode von 4.7V parallel 
zu schalten.

Gruss Helmi

von Gast4 (Gast)


Lesenswert?

Softwaretechnisch wuerde ich das auch etwa so angehen.
Ich wuerde aber darauf achten, dass das Messen, das Umrechnen und das 
Anzeigen sauber getrennte Module mit klaren SW-Schnittstellen sind.

Hardwaremaessig ist die Abschottung des uC gegen alles was im Bordnetz 
umherfliegt, extrem wichtig und etwas aufwendig. Also an der Stelle 
nicht sparen.

Gast4

von Dirk S. (derdork)


Angehängte Dateien:

Lesenswert?

Ich muss es nochmal pushen.
wir haben das Problem dass wir keine Anständige Messung hinbekommen.
Die Variable (obwohl global Deklariert), wird im Interrupt mit Werten 
gefüllt, existiert im Hauptprogramm nicht mehr.

Jemand der weiter weiss?

Grüße

von Magnus Müller (Gast)


Lesenswert?

Hast du schon einmal mit dem Gedanken gespielt, deinen Code zu 
kommentieren?

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.