Impulse mit Atmel Controller empfangen und auswerten

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 21 12 2025  11:47:42      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Impulse mit Atmel Controller empfangen und auswerten
Suche nach: controller (3563)

    







BID = 68722

X-Plod

Neu hier



Beiträge: 25
Wohnort: Salzgitter
Zur Homepage von X-Plod ICQ Status  
 

  


Hallo

Ich bin in diesem Gebiet Neueinsteiger und habe mich einwenig durch Tutorials gekämpft.
Ich habe einen ATmega8 Microcontroller und möchte folgendes realisieren:

Mein Auto hat ein Tacho, welches Impulse bekommt und diese umwandelt (Drehzahlmesser und Geschwindigkeitsanzeige).
Nehmen wir mal an, ich bekomme 500 Impulse pro 100 Meter. Wie werte ich diese mit dem Controller aus? Mein größtes Problem ist die Sache mit der Zeit. Ich muss ja STrecke durch Zeit dividieren. Nur wie wie sage ich meinem Programm, dass es ab einer gewissen Stelle die Zeit zählen soll? Dafür kenn ich noch keine Befehle.

Wäre über jede Hilfe erfreut. Eventuell auch noch andere Tutorials etc.

mfg

BID = 68746

Jornbyte

Moderator



Beiträge: 7336

 

  

Es gibt verschiedene Lösungen. Die Impulse würde ich auf INT0 legen und Zählen.
Der interne Timer sollte als Software- oder Hardwarelösung ausgeführt werden . Nun gibt es da bei beiden Nachteile, da der INT0 keine Priorität hat. Jeder Interrupt unterbricht die Softwarelösung für die Zeit des Zählens. Der Timer könnte Zeitgleich mit einem INT0 Interrupt eintreffen, damit kommt es unweigerlich zu Fehler in der Berechnung. Wie groß die sind hängt vom verwendeten Quarz ab.
So, wie ist nun das Proggi aufzubauen in der Softlösung:
Timer für z.b. 0,5 s starten
INT0 erlauben
Ist Zeit vorbei?
Wenn Nein weiter warten
Wenn Ja -> Berechnen und Anzeigen
Alles von vorne

INT0:
Zählen
****************************
Mit Timer/Counter:
Timerinterrupt erlauben
Timer für z.b. 0,5 s starten
INT0 erlauben
Hier warten

INT0:
Zählen

Timerint:
INT0 ausschalten
Berechnen und Anzeigen
INT0 einschalten

Das ist zwar hier recht einfach mit ein paar Zeilen beschrieben, so ist es aber nicht.
Du hast das Problem mit der Zeit angesprochen, das ist einfach. Mal ein Beispiel für 0,5 Sekunden warten bei 16 Mhz Quarz und das als Softlösung:

ldi R17, $48
w0: ldi R18, $BC
w1: ldi R19, $C4
w2: dec R19
brne w2
dec R18
brne w1
dec R17
brne w0
; -----------------------------
; delaying 6 cycles:
ldi R17, $02
w3: dec R17
brne w3
nop
nop

für den Timer habe ich ein kleines Proggi geschrieben, ist im Uplod


_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 68748

Marc10k

Stammposter



Beiträge: 273
Wohnort: Erkelenz
Zur Homepage von Marc10k

Du könntest die Zeit zwischen 2 Pulsen messen und daraus die Geschwindigkeit ableiten. Oder du nimmst einen bestimmten Zeitabschnitt (z.B. 100ms) und zählst dann alle einkommenden Pulse, wobei die erste Möglichkeit wohl eleganter ist. Beides kann mit Hilfe von Timern erreicht werden.

Zu 1:
Ersten Puls abwarten, Zähler starten, 2. Puls kommt Zähler stoppen. Zählerwert ist dann abhängig von der Geschwindigkeit.

Zu 2:
Die Impulse kannst du auf ein Interrupteingang geben und in der Interruptroutine zählen. Den Timer so einstellen das er alle z.B. 100ms ein Interrupt ausgibt und dann in die Routine springt wo der Zählerstand verrechnet wird.

BID = 68772

Jornbyte

Moderator



Beiträge: 7336


Zitat :
Zu 2:


Also wie ich es beschrieben habe

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 68797

Marc10k

Stammposter



Beiträge: 273
Wohnort: Erkelenz
Zur Homepage von Marc10k

Genau. Nur ich war nicht ganz so schnell. wawand

So ist es halt im Leben:
Manchmal verliert man und manchmal gewinnen die anderen! :

BID = 68866

X-Plod

Neu hier



Beiträge: 25
Wohnort: Salzgitter
Zur Homepage von X-Plod ICQ Status  

So, habe das mal nachgemessen. Es kommen pro Umdrehung des Rades 4 Impulse an. Radumfang beträgt 195cm

Bei einer Geschwindigkeit von 250km/h (mehr brauch ich nicht) kommen die Impulse mit einer Frequenz f von 142,5 Hz an. Welchen Quarzoszillator würdet ihr mir für diesen Bau empfehlen? Mein ATmega8 kann bis zu 16 MHz vertragen. Nur hab ich hier irgendwo mal gelesen, dass es nicht so gut sei, den Controller mit seiner Maximalfrequenz zu betreiben. Doch warum nur? Hätte gedacht, dass ich den mit 16 MHz nehme, da ich dann sicher sein kann, dass bei der Untersuchung, ob Masse anliegt oder nicht, kein Impuls ignoriert wird.

mfg

BID = 68867

Jornbyte

Moderator



Beiträge: 7336

Den Controller kannste ohne Bedenken mit der max. Frequenz betreiben. Beim Hersteller und in den Datenblättern befindet sich kein Hinweis auf so eine Aussage.

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 68873

ERDI-Soft

Stammposter



Beiträge: 200
Wohnort: Offenburg
Zur Homepage von ERDI-Soft ICQ Status  

Ich würde in deinem Fall sogar den internen Oszillator nehmen. Spart dir drei Bauteile (Quarz + 2 Kondensatoren.)
Und bei ner Frequenz von max. 150 Hz würde wahrscheinlich ein 1MHz-Takt reichen.
Wenn du also den internen Oszillator auf 4MHz einstellst, reichd das vollkommen. Spart sogar noch Strom. (Obwohl dich das woh lkaum interessieren dürfte, da ja genug Saft vorhanden ist, wenn das Auto fährt. Oder hast du ne Megawattstereoanlage im Auto? )


@Marc10k: Ja, ja, das Leben ist hart aber ungerecht.
_________________
Wie immer gilt: Erst googeln, dann fragen!

[ Diese Nachricht wurde geändert von: ERDI-Soft am 11 Mai 2004 15:38 ]

BID = 69021

X-Plod

Neu hier



Beiträge: 25
Wohnort: Salzgitter
Zur Homepage von X-Plod ICQ Status  

Ich habe nochmal eine Frage:

Das Signal, was die Frequenz überträgt, wird beim Impuls auf Masse geschaltet. Jetzt suche ich eine Möglichkeit, dieses Signal am Prozessor zu erkennen.

Ich habe gedacht, dass ich die Strippe vom Impulsgeber an den I/O Port anschließe. Dann wird zwischen I/O Port und Masse ein Kondensator geschaltet. Ebenfalls wird zwischen I/O Port und +5V ein Widerstand geschaltet. Doch wie sind diese Bauelemente zu dimensionieren? Welchen Wert sollten sie haben und warum? Kann mir das einer freundlicherweise kurz verdeutlichen? Kapiers im Moment einfach nicht.

mfg

BID = 69037

Jornbyte

Moderator



Beiträge: 7336

Abgesehen vom Pegel des Impulses, der TTL kompatibel sein sollte, kannst du sagen ob der Pin Low oder High auswerden soll. Dafür gibt es die ASM Befehle sbis und cbis.

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 69043

X-Plod

Neu hier



Beiträge: 25
Wohnort: Salzgitter
Zur Homepage von X-Plod ICQ Status  

Was heißt TTL kompatibel? Es kommt beim Impuls eine Masseverbindung zustande! Brauche da also keinen Spannungswandler oder ähnliches. Und wie meinst du das mit den ASM Befehlen? Das der Controller den Pin High oder Low auswerten kann, ist mir klar! Nur ich brauch da ja einen High/Low Unterschied bei Impuls/Nichtimpuls. Wie ich den Zustande bekomme, möcht ich zurzeit wissen.

mfg

BID = 69545

X-Plod

Neu hier



Beiträge: 25
Wohnort: Salzgitter
Zur Homepage von X-Plod ICQ Status  

Ich habe eine Frage. Ich wollte den Impulsgeber mit einem Pullup Widerstand an den Eingangspin des Atmels anschließen.
Zwischen Eingangspin und Ub+ kommt ein Pullupwiderstand und das Impulssignal kommt dann direkt an den Eingangspin. Nur wie muss ich den PullUp Widerstand dimensionieren? Welchen Wert sollte der haben und wonach richtet sich das?

mfg


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 18 Beiträge im Durchschnitt pro Tag       heute wurden bisher 1 Beiträge verfasst
© x sparkkelsputz        Besucher : 187858770   Heute : 6373    Gestern : 21855    Online : 269        21.12.2025    11:47
10 Besucher in den letzten 60 Sekunden        alle 6.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0524389743805