Pages: [1]   Go Down
Author Topic: ontime bei PWM messen  (Read 986 times)
0 Members and 1 Guest are viewing this topic.
AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1141
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Kann ich mit einem Artuino Interrupt eingang sowohl die steigende und die fallende Flanke auswerten.
Um bei einspritzdüsen die Ontime zumessen und zu einem Prozentualen verhältniss zu setzen.
Bei meinem Projekt geht es um einen Boostcontoller der soll jetzt erweitert werden um einen Eingang der das aktuelle Signal der Düsen auswertet und dann wenn man an 98% Ontime der Düsen ist den Ladedruck zurücknimmt. Hat jemand schon etwas in der richtung gabaut die maximale Frequenz liegt bei ca 200Hz (2Einspritzeiten pro Umdrehung max 6000 U/min).
danke für die Infos
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3495
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Klar geht das. Guckst Du hier:

http://www.arduino.cc/en/Reference/AttachInterrupt

Was die maximale Frequenz angeht: das hängt davon ab was Du im IRQ Handler so alles treibt. Ich habe hier einen sehr schlanken für mein Projekt und der läuft mit 10 kHz (und verbraucht dann aber auch schon satte 10% der Gesamtrechenleistung). Aber bei 200 Hz hast Du pro Periode 50000 Zyklen zur Verfügung, da kann man schon was rechnen.

Wenn Du statt den Arduino Libs direkt auf die Ports losgehts (Atmel Datenblatt beachten), dann kannst Du vermutlich sogar noch bei 100kHz (also 160 Zyklen pro Periode) noch was brauchbares machen.

Es ist also genug Luft da.

Andererseits: bei 200 Hz brauchst Du vermutlich überhaupt keine Interrupts. Da kannst Du auch Pollen. Daß Du den Arduino dann nicht schlafen schicken kannst sondern dauern Strom verbrauchst sollte ja kein Problem sein wenn das Ding im Auto läuft. Da sind die 100-200 mW ja wohl kein Problem.

Gruß, Udo
Logged

Check out my experiments http://blog.blinkenlight.net

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3495
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nur so ein Gedanke: angenommen man bekommt die Signale auf einem Pin rein (und der Pin bleibt bei stehendem Motor auf low), dann könnte man ja grob so loslegen:

1) warten bis pin auf high geht
2) microsekunden Zähler auf merken (t0)
3) warten bis pin auf low geht
4) Zählerstand merken (t1)
5) warten bis pin auf high geht (oder t1-t0 > 1s)
6) Zählerstand merken t2
7) Verhältnis ausrechnen (t2-t1) zu (t1-t0) (bzw: bei Timeout von 5 Verhältnis auf 100% setzen); aufpassen, daß hier nicht durch 0 dividiert wird.
smiley-cool Bei Bedarf den Ladedruck runternehmen
9) wieder bei 1 weitermachen

Geht bei 200 Hz locker ohne Interrupts

Mikrosekunden liest man mit micros() aus.

Sollte nicht so schwierig sein smiley
Logged

Check out my experiments http://blog.blinkenlight.net

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1141
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Genau wie in dem dritten Post wollte ich das machen und bei 6000 Zyklen pro sec. baruche ich mir ja dann keine Gedanken zu machen. Mit Interupts kann ich aber keine Zeiten messen da millis und micros laut refrence nicht mehr weiterlaufen sonmdern erst bei detach interupt. Aber ich werde es mal so versuchen ich brauche die Reglung sowieseo erst ab einer gewissen Last auf dem Motor die durch den Lufmassenmesser gemessen wird.
ICh werde berichten. Mien Project lief erst auf einem 2k9 Ardino wird jetzt aber auch ein Seeeduino Mega portiert da mehr I/O´s dig und Analog  vorhanden sind und ich weiterhin das NokiaLCD von Nuelectronics nutzten will.
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3495
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Die laufen schon weiter, auch ohne detach. Sie laufen nur nicht weiter so lange Du in Deinem Interrupt bist. D.h. solange Deine Interrupts sehr schnell abgearbeitet werden kannst Du die schon nutzen.

Seeduino Mega ist eine gute Wahl smiley
Logged

Check out my experiments http://blog.blinkenlight.net

Pages: [1]   Go Up
Jump to: