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
> 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.
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
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.
Ist der Benzindurchflussmesser eher voluminös oder eher zierlich, so dass man den an einem Motorrad verbauen könnte?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.