mikrocontroller.net

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


Autor: Anna (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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_Fun...

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.

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anna (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

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

Autor: Anna (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.