www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Drehzahlsignal "aufbereiten" für Frequenzmessung?


Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Helfer,

erstmal ein großes Kompliment an euch. Habe schon oft hier mitgelesen 
und viele nützliche Tipps und Anregungen durch euch und dieses Forum 
erhalten.

Auch für meine Schaltung, die mit einem Atmega16 Frequenzen messen soll, 
was prinzipiell auch gut funktioniert, zumindest mit dem 
Geschwindigkeitssignal oder einem Frequenzgenerator.

Benutze dazu die Input-Capture-Funktion des Timer 1, ausserdem habe ich 
auch noch einen weiteren Timer als Zeitbasis laufen. Als 
Geschwindigkeitssignal erhalte ich ca. 70Hz bei 100KMH, als 
Drehzahlsignal sind es ca. 3,3Hz pro 100RPM. Diese Werte habe ich einem 
Werkstatt-Handbuch meines Wagens entnommen und konnte diese auch mit 
meiner Stromzange(mit Frequenzmessfunktion) verifizieren.

Das Messen des Geschwindigkeitssignals funktioniert tadellos. Sowohl 
wenn ich im Capture-Interrupt nur die eintreffenden Flanken in einer 
Variablen aufaddiere und über den anderen Timer jede Sekunde ausgebe und 
zurücksetze, als auch über die Periodendauermessung mit ICR1.

Die Drehzahlmessung liefert mir hingegen keine brauchbaren Ergebnisse, 
bei beiden Methoden nicht. Selbst bei der Zählmethode schwankt der Wert 
(scheinbar willkürlich) um mindestens 25Hz pro Sekunde??? :/ Bei der 
Periodendauermessung ändern sich die Werte so schnell, das ein Ablesen 
vom Display gar nicht mehr möglich ist.

Beide Signale kommen auf demselben Weg (aber jeweils nur eins von 
beiden)
in den Controller. Über einen 10K-Serienwiderstand an ICP(PB0) mit 
aktiviertem Pullup.

Kann es wirklich sein, dass das Drehzahlsignal soviel mehr mit Störungen 
behaftet ist als das Geschwindigkeitssignal und deswegen die Flanken 
nicht richtig erkannt werden?? Das Drehzahlsignal kommt laut Schaltplan 
aus dem ICM(Ignition Control Module), das Geschwindkeitssignal direkt 
vom VSS(Vehicle Speed Sensor). Habe leider kein Oszilloskop zur Hand um 
mir die Signale anzusehen.

Da die Stromversorgung meiner Schaltung noch nicht KFZ-fest ist, 
betreibe ich den ATMega testweise über eine Batterie (Masse der Batterie 
ist auch mit Fahrzeugmasse verbunden)
Wäre für jeden Tipp dankbar.

MFG

Danny

Autor: 318ishonk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Danny,


um zu beurteilen, warum das Drehzahlsignal nicht präzise gemessen wird, 
wäre ein Oszilloskop schon sehr nützlich.

Variante a) Wenn Du ein Notebook und einen Line-/Mikro-Eingang hast, 
dann könntest Du Umsonst-Software nutzen, die ein Oszilloskop mittels 
Soundkarte realisiert (suche auf mikrocontroller.net). Mit über 40kHz 
Abtastrate kann man Drehzahlsignale "messen" (zumindest qualitativ, 
nicht unbedingt millivolt-genau) und darstellen (nur leicht verfälscht, 
weil die gemeine Soundkarte keine Gleichspannungen messen kann).

Variante b) Mach einen kurzen Aufruf im Forum und schau, ob jemand in 
Deiner Nähe mit einem Oszilloskop vorbeikommen mag. Musste nur sagen, wo 
ungefähr Du wohnst; logisch. Derartige Begegnungen bringen auch noch 
viele andere Mehrwerteffekte weil Leute mit Oszilloskopen vielleicht 
schonmal selbst so eine Schaltung gebaut haben...

Variante c) Du könntest das Drehzahlsignal auch mit einem LM2917 in eine 
Gleichspannung wandeln die Du mittels ADC misst. Diese LM2917 schlucken 
schon ziemlich viele lutige Signalformen und sind auch für den rauen 
KFZ-Alltag konzipiert. Keine prozentgenaue Messung, aber wer braucht das 
schon?

liebe Grüße

318ishonk

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne Angabe der Ausgangsbeschaltung lässt sich wenig dazu sagen.

Ist diese für beide Signale wirklich identisch ?

Wie sind die Spannungspegel ?

Hängt am Ausgang des Geschwindigkeitssignals auch Dein realer Tacho ?

Ist ein Drehzahlmesser vorhanden oder ist der Drehzahlausgang evtl. 
"offen" ?

Otto

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danny schrieb:
> Beide Signale kommen auf demselben Weg (aber jeweils nur eins von
> beiden)
> in den Controller. Über einen 10K-Serienwiderstand an ICP(PB0) mit
> aktiviertem Pullup

Damit verringerst Du schon mal den Störspannungsabstand. Der Atmel hat 
sowieso schon eine ziemlich niedrige Schaltschwelle fürs Auto (Stichwort 
Masseversatz).

Ich würde wie folgt vorgehen:
Amplitude des Drehzahlsignals ermitteln. Bei der niedrigen Frequenz gehe 
ich mal davon aus daß es der Drehzahlausgang von der Motorsteuerung ans 
Getriebe ist. (2 Pulse / TDC).
Über Spannungsteiler so anpassen daß der Atmel ca bei der halben 
Spannung schaltet. Der Längswiderstand muß dabei den Strom auf 0,5 - 1mA 
Begrenzen falls 12-16V anliegen.

Den internen Pull-up auf jeden Fall ausschalten. Falls ein Pull-up 
benötigt wird dann einen externen verwenden je nach "Endstufe" an 5V 
oder 12V. (Vor dem Serienwiderstand). Im Pull up dürfen im Auto ruhig 
mal so 10 mA fließen. (Bei 12V ca 1 KOhm).

Die Masseleitung direkt vom ICM abgreifen um den Masseversatz gering zu 
halten.

Falls das nicht ausreicht noch mit einem Filter-Kondensator 
(Zeitkonstante ca 1 ms) filten + Schmitt Trigger verwenden.

Gruß Anja

Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank erstmal für die schnellen Antworten.


318ishonk schrieb:
> Variante a) Wenn Du ein Notebook und einen Line-/Mikro-Eingang hast,
> dann könntest Du Umsonst-Software nutzen, die ein Oszilloskop mittels
> Soundkarte realisiert

Die Idee mit dem Software-Oszilloskop hört sich verlockend an, 
allerdings müsste ich da wohl auch erstmal eine geeignete 
Schutzbeschaltung bauen, um die Soundkarte vor Schäden zu bewahren?!?

Otto schrieb:
> Ohne Angabe der Ausgangsbeschaltung lässt sich wenig dazu sagen.
>
> Ist diese für beide Signale wirklich identisch ?

Ja, ich habe eine Schraubklemme, die mit dem Capture-Eingang des Atmega 
verbunden ist, dort kann ich dann abwechselnd entweder das Kabel vom 
Geschwindigkeitssensor oder das vom Drehzahlmesser anschliessen. 
Zwischen dieser Schraubklemme und den Kabeln mit den Signalen habe ich 
noch ein Steckbrett dazwischen, wo sich momentan nur der 
Serienwiderstand befindet.

Otto schrieb:
> Wie sind die Spannungspegel ?
>
> Hängt am Ausgang des Geschwindigkeitssignals auch Dein realer Tacho ?

Spannungspegel beim Drehzahlsignal liegt bei 12V, beim 
Geschwindigkeitssignal muss ich morgen nochmal messen.

Ja, beide Signale sowie Masse habe ich direkt auf der Rückseite vom 
Kombiinstrument an den Analoginstrumenten angezapft.

Anja schrieb:
> Über Spannungsteiler so anpassen daß der Atmel ca bei der halben
> Spannung schaltet. Der Längswiderstand muß dabei den Strom auf 0,5 - 1mA
> Begrenzen falls 12-16V anliegen.

Das mit dem Spannungsteiler zusammen mit dem RC-Filter + Schmitt-Trigger 
werde ich mal ausprobieren, muss nur die Bauteile dafür noch besorgen 
(ich sollte mir echt mal ein Sortiment zulegen) ;)

Aber wegem dem Spannungsteiler: Ich dachte für den Capture-Eingang wären 
die 12V wegen der internen Schutzdioden kein Problem und nur ein 
Serienwiderstand zur Strombegrenzung nötig?!?

Anja schrieb:
> Den internen Pull-up auf jeden Fall ausschalten. Falls ein Pull-up
> benötigt wird dann einen externen verwenden je nach "Endstufe" an 5V
> oder 12V.

OK, da das Drehzahlsignal eine Amplitude von 12V hat und der interne 
Pullup nach 5V geht, leuchtet mir ein dass das eventuell Probleme geben 
könnte (obwohl mir die Geschichte mit den Pullups immer noch nicht zu 
100% klar ist).
Aber wenn ich jetzt einen Spannungsteiler auf 5 Volt hätte, wo wäre dann 
der Vorteil eines externen Pullups im Vergleich zum internen??

MFG

Danny

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danny schrieb:
> Aber wenn ich jetzt einen Spannungsteiler auf 5 Volt hätte, wo wäre dann
> der Vorteil eines externen Pullups im Vergleich zum internen?

Nehmen wir mal folgenden Fall an. Dein Drehzahlausgang liefert als 
Low-Pegel nicht 0V sondern 1V. (Vielleicht hast Du ja Glück und kannst 
den realen Pegel bei Motorstillstand messen). Dein Serienwiderstand hat 
10k der interne Pullup hätte ca 50k. -> an deinem CCP-Pin hast Du als 
Low-Pegel 1V + (5V - 1V) * 10K (10K + 50K) = 1,666 V. Die Schaltschwelle 
des Eingangs liegt bei 5V Versorgung irgendwo zwischen 1V und 3V (also 
z.B. bei 2V) -> Dein Störspannungsabstand ist typ. 0,333V. (bzw. im 
worst case -0,666V ... 1.333V)
Mit externem Pull-up gibt es keine Beeinflussung des Pegels am CCP-Pin 
durch den Serienwiderstand -> Störspannungsabstand geht auf 1V typ (bzw. 
Worst Case 0 .. 2V).
Mit Spannungsteiler 1:1 und externem Pull-up wäre der Low-Pegel am 
CCP-Pin 0,5V und damit im sicheren Bereich.

Gruß Anja

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.