Forum: Mikrocontroller und Digitale Elektronik Drehzahlmessung Interrupt (Lima W-Klemme) und das Restprogramm?


von Tobias N. (silberkristall)


Lesenswert?

Hallo,

Ich will mittels Interrupt die Drehzahl der Lima an der W-Klemme messen. 
Und was ist mit dem Restprogramm?

Lima W-Klemme -> NPN -> Interrupt PIN

Bei jedem LOW wird nun ein zähler ein hochgezählt. Alle 2 sek das ganze 
dann auf Upm umgerechnet.

Nun wird ja bei jedem Interrupt das Hauptprogramm unterbrochen. Das 
wären bei 1000 Upm also 1000 mal in der Minute.

Wo ist da nun noch zeit für I2C oder weitere Messungen, ADC usw.

Ich kann mir das einfach nicht vorstellen wie schnell der uC das 
berechnet.

Wie kann man da noch Timings einhalten.

Es geht um einen ATMega 128 mit 12Mhz Quarz.

von gvs (Gast)


Lesenswert?

Nicht per Pin-Change Interrupt. Einfach auf einen Zählereingang, das 
macht die Hardware alles für dich. Du musst dann nur per Timer den 
Zähler nach der Torzeit abfragen, das geht dann per Interrupt.

Timing für ASM:
Tabelle im Datenblatt im Anhang Befehle.

von spess53 (Gast)


Lesenswert?

Hi

>Es geht um einen ATMega 128 mit 12Mhz Quarz.

Immer noch dein unseliger Bordcomputer?

Beitrag "Projekt: Bordcomputer"

So wie ich das in den etlichen letzten Beiträgen von dir gelesen habe, 
bekommst du eigentlich nicht wirklich etwas selbst in die Reihe. Such 
dir ein anderes Hobby.

MfG Spess

von Chris (Gast)


Lesenswert?

Tobias N. schrieb:
> Nun wird ja bei jedem Interrupt das Hauptprogramm unterbrochen. Das
> wären bei 1000 Upm also 1000 mal in der Minute.
>
> Wo ist da nun noch zeit für I2C oder weitere Messungen, ADC usw.
>
> Ich kann mir das einfach nicht vorstellen wie schnell der uC das
> berechnet.

In dieser besagten Minute hat der µC ganze 720 Millionen Takte zeit 
etwas zu berechnen; da stört ein kleiner Interrupt überhaupt nicht

von Tobias N. (silberkristall)


Lesenswert?

Also wenn ein Interrupt dann ein Takt ist dann könnte der millionen upm 
zählen und diese dann noch berechnen!?

von Ulrich F. (Gast)


Lesenswert?

Kenne das Auto nicht, aber eine Riemenscheibenübersetzung von 1:2 
Motor:Lima
dürfte recht üblich sein.
Max Drehzahlen (ca. 14.000) der Lima werden selten erreicht.
Werte um 10.000 dürfen auf der Dosenbahn zu erwarten sein.

Da die Lima etliche Pole hat, dürfte das die Frequenz nochmal ca. ver 6 
fachen.
*ohne Gewähr, die 6 sind geschätzt*

(10.000*6)/60 = 1000Hz

12.000.000/1000 = 12.000

12.000 Takte zwischen den Interrupts
Das ist so viel auch nicht.
Auch kann es sich zwischendurch als notwendig erweisen die Interrupts ab 
zu schalten.

>Einfach auf einen Zählereingang...
Das würde ich auch vorschlagen.
Spart Ressourchen
Vergisst keine Ereignisse, wenn Interrupts kurzzeitig gesperrt.
(überläufe erkennbar)

von m.n. (Gast)


Lesenswert?

Ulrich F. schrieb:
> 12.000 Takte zwischen den Interrupts
> Das ist so viel auch nicht.
> Auch kann es sich zwischendurch als notwendig erweisen die Interrupts ab
> zu schalten.

Ohne es näher zu begründen, gehen mir diese Aussagen gegen den Strich.
Ein Beispielprogramm mit einem ATmega88 
Beitrag "einfache Drehzahlmessung mit ATmega88" deckt den Bereich 0,3rpm 
- 15Mrpm ab.
Es ist auch egal, ob man eine oder 100 Messungen/s macht. Es muß nur 
minimal eine Periode gemessen werden.

Wie in der Schaltung gezeigt, nimmt man ICP1 und als Eingänge die des 
analog Komparators. Damit kann man auch Signale mit kleinerer Amplitude 
gut aufbereiten.

von Ulrich F. (Gast)


Lesenswert?

m.n. schrieb:
> Ohne es näher zu begründen, gehen mir diese Aussagen gegen den Strich.
Mir gehen unbegründete Striche auf den Geist!
;-)  ;-)  ;-)  ;-)

von Gad Z. (gad)


Lesenswert?

Hallo Tobias
Das Thema Drehzahlmesser wird wohl nie aufhören hier :-)
Ich habe gerade meine Drehzahlmessung fertig gestellt und sie 
funktioniert recht gut.

Damit Du mal ein Gefühl bekommst was ein AVR so alles leisten kann,
schreibe ich Dir hier mal alle Funktionen auf, die bei mir laufen.

Module 1000 Hz
-PID Position Controller für DC Motor
-Position Control für Servo (PWM-Ansteuerung)
-SPI 3 Sensoren auslesen
-TWI 5 Sensoren lesen / schreiben
-UART Trace (bis zu 120 Bytes je Millisekunde an PC schicken)

Module  100 Hz
-Berechnung Drehzahl (0-20000 U/min mit Auflösung 1 U/Min
-Berechnung Geschwindigkeit (0-300 km/h mit Auflösung 0,1 km/h)

Die Drehzahlimpulse werden dabei über ein PIN Change Interrupt abgefragt 
weil ich keine Timer für Zählaufgaben frei habe.
Ausserdem habe ich ja für Geschwindigkeit auch noch Impulse zu zählen.

Trotz dieser Interrupts schafft der Atmel alle seine Aufgaben, ok wenn 
auch mit 20 Mhz getaktet :-)

von Tobias N. (silberkristall)


Lesenswert?

Ok, also ist das schon einer der gut was "ab" kann :) Genau so kriege 
ich nen gefühl was/wieviel er kann.

Also mein ATMega128 muss halt noch mit 5 weiteren ATMegas sowie dem 
Display per i2c reden. Und von dem Farbtouch TFT hat der schon viel zu 
tun. Dann wäre es vll. doch sinniger einen mega8 ans i2c zu hängen und 
den die Drehzahlmessung machen lassen. Denn ausser dem Display und den 5 
AVRs muss er auch noch ne SD-Karte lesen, einen vs1053b füttern, einen 
si4735 steuern und dann noch 41 I/O s behandeln.

Achso und 5 ADCs auswerten.

: Bearbeitet durch User
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.