Forum: Mikrocontroller und Digitale Elektronik Timer mit Atmega16 (Problem)


von Anna (Gast)


Lesenswert?

Hallo zusammen,

da ich gerade mich in die Programmierung von Microkontroller einarbeite 
und bei meinem Vorhaben nicht weiter komme, erhoffe ich mir hier etwas 
Hilfe.

Wie in mehreren Beiträgen hier im Forum bereits diskutiert, habe ich vor 
einen Kontroller zu bauen, der die Motordrehzal eines KFZ, die 
Geschwindigkeit und den Spritverbrauch misst und auf ein Display 
ausgibt. Als Microkontroller wollte ich den Atmega16 verwenden. Die 
Programmiersprache ist C.

Für die Ermittlung der Messwerte habe ich 2 Induktive Näherungsschalter 
aus der Industrie und einen Durchflussmesser. Nach Datenblatt sind die 
Näherungsschalter  für eine Frequenz von bis zu 20kHz geeignet und der 
Durchflussmesser gibt pro durchflossenen Liter 1880 Impulse aus. Alle 
Komponenten benötigen eine 12-24V Betriebsspannung und geben am 
Signal-Ausgang eine um 2V verringerte Eingansspannung als 
Rechteckspannung aus. Mittels einer Optokoppler-Schaltung habe ich 
bereits die Rechteckspannung auf 5V reduziert und mit einem Oszilloskop 
überprüft.

Das ermitteln der Messwerte wollte so gestalten, das bei einer 5V-Spitze 
ein Timer startet und bei einer weiteren 5V-Spitze der Timer wieder 
gestoppt wird. Der Wert des Timers soll dann in eine Variable 
geschrieben werden, denn ich dann über eine Rechnung auf das Display 
ausgeben kann.

Wie man Werte aus einer Variablen über eine Rechnung auf ein Display 
ausgibt ist kein Problem. Ich weiß bloß nicht wie ich so einen Timer 
programmieren soll. Habe mir schon alle Beiträge und Quelltexte 
durchgelesen bin aber nicht viel schlauer als vorher.

Mir würde erstmal ein einfacher Quelltext zum Üben und testen reichen, 
womit ich einen Timer starten und wieder stoppen kann und der die 
verstrichene Zeit in eine Variable schreibt.

Vielen Dank im voraus

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> Mir würde erstmal ein einfacher Quelltext zum Üben und testen reichen,
> womit ich einen Timer starten und wieder stoppen kann und der die
> verstrichene Zeit in eine Variable schreibt.

Hmm, das ist in etwa der Inhalt der 5.-6. Lektion eines beliebigen AVR 
Tutorials.

Oft ist das Beispiel sogar etwas praxisnäher ausgeführt, d.h. man 
programmiert eine Uhr, eine Uhr mit Alarm, eine Stoppuhr oder einen 
Suppentimer.

Vielleicht magst du dich an meiner Beispieluhr orientieren:
http://www.mikrocontroller.net/articles/Pollin_Funk-AVR-Evaluationsboard#Uhr

In meinem Beispiel ist ein Atmega8 bei 12 MHz verwendet worden und das 
muss an deine AVR-Hardware (Atmega16, Taktrate?, welches Board?) 
angepasst werden.

Technisch gesehen kann man den Timer durchlaufen lassen. Wenn man den 
Timerstand beim Start und Stopp des Signals kennt, kann man die Dauer 
des Signals durch die Differenz Stopp-Start berechnen. Bei 
durchlaufendem Timer lassen sich so auch mehrere Signaldauern parallel 
messen und/oder andere Aufgaben (Bsp. Anzeige alle xxx ms) anstossen.

von Michael Wilhelm (Gast)


Lesenswert?

Zur Messung der Umdrehung bietet sich der Input-Capture Pin an. In 
diesem Modus wird bei einem Flankenwechsel Low -> High oder High -> Low 
das Timerregister automatisch gesichert. In der Hauptroutine wird dann 
gerechnet. Ob der Timer sich dann selbstständig zurückstellen kann, weiß 
ich ad hok nicht.

Das mit der Benzinmengenmessung denke ich ist das größere Problem. Da 
gibt es wohl einen Benzinrücklaufschlauch, damit bei plötzlichem 
Gaswegnehmen nicht das ganze geförderte Benzin verbrannt werden muss 
(Auskuppeln und Bremsen würde mit einem aufheulen des Motors quittiert 
werden).

MW

von Anna (Gast)


Lesenswert?

Erstmal vielen Dank für eure schnellen und konstruktiven Vorschläge.

Bin gerade dabei die Uhr durchzuarbeiten die Stefan gepostet hat. Zur 
Benzinverbrauchsmessung: Es ist ein VW Käfer. An dem Auto gibt es keine 
Benzinrückführung, der Motor nimmt sich nur so viel wie er braucht.

Getaktet ist mein Atmega mit 8MHz. Hatte hier noch so einen Quarz rum 
liegen. Ebenfalls benutze ich das Pollin-Board zum Programmieren des 
Kontrollers.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Ist der Benzindurchflussmesser eher voluminös oder eher zierlich, so 
dass man den an einem Motorrad verbauen könnte?

von Anna (Gast)


Lesenswert?

Der Durchflussmesser ist ca 50x50x50 mm groß und es gibt ihn bei Conrad. 
Ja ja ich weiß, Conrad ist hier nicht so beliebt.

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.