Hallo in die Runde, ich bin in den letzten Zügen mit einem Arduino Nano einen Tacho mit Drehzahlmesser zu bauen. Der Tacho funktioniert tadellos mit dem 2,4 Adafruit TFT. Evtl. erinnert sich noch einer an den Post mit dem Display und zu langem schreiben der Zahlen wegen der Libary ….. ? Das ist gelöst und eine große Zahl am Tacho schreiben dauert nun ca. 20 s und eine kleine 7 ms. Maximal also 47 ms und je nachdem wie schnell man fährt aller zig Sekunden die hunderter Meter als kleine Zahl. Ein Timer (1ms) ist für das Zählen der ms bis zum nächsten Impuls/ Interrupt in Verwendung. Der zweite Timer derzeit für das Update vom TFT aller 0,2 oder 0,3 s glaub ich. Nun habe ich 3-4 Windungen mal um das Zündkabel gemacht mit der anliegenden Schaltung. Das Signal sieht wie im Bild aus. Zur Weiterverarbeitung bin ich mir nicht ganz schlüssig, ob ich mit dem Impuls einen Ausgang high setzen soll, der beim nächsten Impuls auf low geht, so dass ich mit pulseIn() die Zeit messe (Standgas 2000 upm) also 30 ms warten oder ob ich den zweiten Interrupt nutzen sollte und mit der Flanke die Zeit hole und bis zum nächsten Impuls warte und wieder die Zeit hole und damit die Drehzahl berechne. Bezüglich Prozessorauslastung/ Abarbeitung fehlen mir leider etwas die Erfahrungen und ich wäre für Hilfe/ Ratschläge dankbar. Danke.
:
Bearbeitet durch User
Schalte doch die beiden 4V7 Z-Dioden antiseriell, damit am Ausgang auch wirklich 4,7V erreicht werden. Bei deiner Z-Diodenschaltung kommen die Impulse nie über 0,7V und die Flussspannung der Gleichrichterdiode wird so kaum erreicht. Wenn die Gleichrichterdiode eine hohe Sperrspannung aushält, dann genügt auch eine einzige Z-Diode parallel zum Kondensator, weil sowieso nur positive Impulse ausgelesen werden.
:
Bearbeitet durch User
Daniel E. schrieb: > IMG_1269.jpeg http://www.ko4bb.com/getsimple/index.php?id=tds2xx-screen-dump-release-notes
Daniel E. schrieb: > Zur Weiterverarbeitung bin ich mir nicht ganz schlüssig, ob ich mit dem > Impuls einen Ausgang high setzen soll, der beim nächsten Impuls auf low > geht, so dass ich mit pulseIn() die Zeit messe (Standgas 2000 upm) also > 30 ms warten oder ob ich den zweiten Interrupt nutzen sollte und mit der > Flanke die Zeit hole und bis zum nächsten Impuls warte und wieder die > Zeit hole und damit die Drehzahl berechne. So kompliziert, verstehe ich nicht. Habe schon ein paar mal Drehzahlmessungen auf Atmegas gemacht: Dazu benutzt man den Timer1 im Input Capture Mode: https://www.mikrocontroller.net/articles/High-Speed_capture_mit_ATmega_Timer Beim Auslösen des Interrupts wird der 16-Bit Wert einfach in einer Variable abgelegt. Berechnung der Drehzahl erfolgt dann erst beim Refresh des Displays, also erst wenn man den Wert braucht. Nutzt man dann noch den Overflow-Interrupt von Timer1 so kann man den Timer per Software von 16 auf 24 Bit erweitern. Damit habe ich schon Motordrehzahlen mit einer Genauigkeit von 2U/min und einer Samplingrate von 1000Hz auf einem Nano gemessen. Allerdings ohne Anzeige.
Daniel E. schrieb: > Nun habe ich 3-4 Windungen mal um das Zündkabel gemacht mit der > anliegenden Schaltung. Das Signal sieht wie im Bild aus. Merkwürdig. Eigentlich begrenzen die Dioden auf 0.7V, die nachfolgende frisst 0.7V und der Kondensator wird nie entladen, es sollte also eine Dauerspannung bon vielleicht 0.1V anliegen. Ums nicht abgeschirmte Zündkabel vor dem Verteiler misst man normalerweise durch kapazitive Kopplung die Spannung, nicht den Strom. Es tut dann ein hochohmiger Vorwiderstand und die 'Spule' ist am anderen Ende gar nicht angeschlossen Ein ordentlich programmierter AVR hat jedenfalls keinerlei Problem, motorentypische Drehzahlen und Tachogeschwindigkeiten zu messen, es wird üblicherweise sogar durch einen Kurbelwellensensor die 60-fache Frequenz gemessen. Man kann durch schlechte Programmierung natürlich auch einen 3GHz Core damit überlasten.
> So kompliziert, verstehe ich nicht. > > Habe schon ein paar mal Drehzahlmessungen auf Atmegas gemacht: > Dazu benutzt man den Timer1 im Input Capture Mode: > https://www.mikrocontroller.net/articles/High-Speed_capture_mit_ATmega_Timer > > Beim Auslösen des Interrupts wird der 16-Bit Wert einfach in einer > Variable abgelegt. > Berechnung der Drehzahl erfolgt dann erst beim Refresh des Displays, > also erst wenn man den Wert braucht. Klingt sehr gut, macht meine 1ms zählen überflüssig und bringt bei hohen Geschwindigkeiten noch mehr Genauigkeit, danke für den Hinweis 👍
> Merkwürdig. > > Eigentlich begrenzen die Dioden auf 0.7V, die nachfolgende frisst 0.7V > und der Kondensator wird nie entladen 🙄 stimmt, so war die Sache eigentlich nicht geplant … der Kondensator ist sehr klein in der Kapazität, Wert muss ich schauen
Daniel E. schrieb: > Klingt sehr gut, macht meine 1ms zählen überflüssig und bringt bei hohen > Geschwindigkeiten noch mehr Genauigkeit Für Deine Anwendung ist ein Capture-Eingang nicht zwingend notwendig. Schon ein PCINT eines beliebigen Pins und ein 8 Bit Timer bringen genug Auflösung und Genauigkeit für diese niedrigen Frequenzen. Soetwas funktioniert dann schon auf einem ATtiny45. Stichwort: reziproker Frequenzzähler.
Hallo zurück, so wie ich den Nano verstehe bietet dieser nur einen Capture INPUT IPC bei Pin 12/ 8 mit Timer 1. Damit kann ich ja genau die Drehzahl messen. Für die Radumfangsgeschwindigkeit/Zeit bräuchte ich einen zweiten Capture Eingang, welchen es nicht gibt. Also entweder mit weiter die ms zählen oder ich müsste bei HIGH Signal einen Timer lesen und beim nächsten HIGH Signal nochmal und mir die zweit zwischen den Events ausrechen. Liege ich da richtig ? Danke.
Daniel E. schrieb: > Für die Radumfangsgeschwindigkeit/Zeit bräuchte ich einen zweiten > Capture Eingang, welchen es nicht gibt. Nein, brauchst du nicht, du musst nur programmieren können.
Daniel E. schrieb: > Für die Radumfangsgeschwindigkeit/Zeit bräuchte ich einen zweiten > Capture Eingang, welchen es nicht gibt. Mi N. schrieb: > Für Deine Anwendung ist ein Capture-Eingang nicht zwingend notwendig. Schon ein wenig betagt: http://mino-elektronik.de/fmeter/fm_software.htm#bsp4
> > Nein, brauchst du nicht, du musst nur programmieren können. Du meinst das ? bei HIGH Signal einen Timer lesen und beim nächsten HIGH Signal nochmal und mir die zweit zwischen den Events ausrechen?
Daniel E. schrieb: > Du meinst das ? bei HIGH Signal einen Timer lesen und beim nächsten HIGH > Signal nochmal und mir die zweit zwischen den Events ausrechen? Fast. Nicht bei HIGH, sondern bei einer Flanke, die man beim Input Capture einstellen kann. Der Timer läuft dauerhaft durch. Der Input Capture speichert den Zeitpunkt in Hardware, da kann die CPU das relativ entspannt auslesen, speichern und irgendwann berechnen.
Grüße in die Runde, den Timer 1 capture hab ich programmiert 👍 und mit dem Frequenzgenerator läuft es. Das signal geht final auf einen Komparator mit Hysterese, bei 4 V kippt er und Hysterese ist 1 V. Die damalige Schaltung hat sich als ungünstig erwiesen und ich habe anliegende realisiert. Die 15 V Suppressordiode werde ich gegen 7-9 V Typ final tauschen. Leider kommt es vor, dass die Spannung gelegentlich sehr lange ins Minus geht und dort verbleibt. Die Aufnahme anbei war mit einer 5.1 V Supressordiode gemacht. Hat jemand eine Idee und Abhilfe ? Vielen Dank.
Hinweis: Man kann kleine Prozessoren gewaltig entlasten, wenn man intelligente ("HMI") Displays verwendet. NEXTION gibts auch in 2.4". Diese Displays haben einen eigenen Controller und Speicher, werden per RS232/UART über Kommandos gesteuert. Vom Hersteller gibts eine grafische IDE dazu ...
:
Bearbeitet durch User
Hallo, Du solltest mal in der Fahrzeugelektronik suchen! Eingangsstufe in CMOS 4000...11 aufbauen bzw. IMG-1922jpeg ! FF und Tiefpass, sicher kannst Du dann Impulse für die digitale Verarbeitung abgreifen. Um 1970..75 hat man so gemessen. ELV Elektor Drehzahlmesser mit UAA170/180
Daniel E. schrieb: > Das signal geht final auf einen > Komparator mit Hysterese, bei 4 V kippt er und Hysterese ist 1 V. Die Eingänge eines ATmega haben schon einen Schmitttrigger mit einer Hysterese von einigen 100 mV. Siehe Datenblatt. Da muß man keine Schaltung verwenden, die nach Übersteuerung in irgendeiner Sättigung verharrt. Zusätzlich kann man die Hysterese per Hardware vergrössern und auch noch eine Totzeit nach Erkennen eines Impulses einfügen.
Signalleitung über Diode an Plus bzw. GND. Dioden je nach Anforderung von einfach bis speziell.
Danke für das Feedback. Leider hat sich noch keiner dazu geäußert, warum die Signallinie von Zeit zu Zeit ins negative geht ? Jemand eine Idee ?
Egon schrieb: > Leider hat sich noch keiner dazu geäußert, warum die Signallinie von > Zeit zu Zeit ins negative geht ? Welche Schaltung? Und - auch sehr wichtig - wo angeschlossen? Also bitte einen Gesamt-Schaltplan.
Wastl schrieb: > Oh mann ..... was oh mann? alle Massen sind verbunden, der Draht ist um das Zündkabel gewickelt, BNC Anfang ist die 15 V Z Diode gegen Schirm das BNC Ende (gesamte Länge 1 m) ist am Fahrzeug einseitig an Masse angeschlossen, wo auch am Ende das Oszi mit der Diode dran angeschlossen ist. Weitere Fragen ?
Daniel E. schrieb: > Weitere Fragen ? Ja. Das Display weiter oben sieht so süß aus. Kann man das auch essen? Ganz cool auch die Drehzahlanzeige; da ist wohl gerade der Rückwärtsgang eingelegt. Wastl schrieb: > Oh mann ..... Siehste, das haste jetzt davon! Was fragst Du auch für komisches Zeugs?
Egon schrieb: > Jemand eine Idee ? Die Eingangsstufe ändern? Hiermit konnte ich vor langer Zeit prima die Drehzahl vom 50er Roller messen: Beitrag "Zündimpuls Ottomotor mit Arduino UNO auswerten"
> Hiermit konnte ich vor langer Zeit prima die Drehzahl vom 50er Roller > messen: > Beitrag "Zündimpuls Ottomotor mit Arduino UNO auswerten" Danke für die Verlinkung, grundsätzlich ein Ansatz, ich vermisse eindeutig den Überspannungsschutz hierbei... Er hat es gefunden.. Läuft es jetzt immer noch stabil oder überhaupt, wäre noch die Frage... Danke
Hallo,
Egon
> Leider hat sich noch keiner dazu geäußert, warum die Signallinie...
oh doch, man muss sich nur freimachen von diesen fachmännischen
Lesebewertungen!!
Die ganze Eingangsstufe ist falsch und unsinnig. Es soll die Spannung
auf "15V" begrenzen??! (evtl. 3V3) Was ist das für ein Arduino? der wird
gegrillt. Die Diode am Ausgang ist über, wenn so abgesichert wird wie
von mir beschrieben. Ein CMOS Gatter hat dies intern schon, evtl. noch
eine ESD Absicherung.--jahrelang damals im Betrieb.
Achtung: Feuchtigkeit und defekte Kabel sind immer der Tot der
Schaltung!
Aber es gibt, wie auch schon von anderen da gelegt, weitaus bessere
Kopplungsmöglichkeiten am Fahrzeug bis hin zum Lin- oder Can-Bus.
Egon schrieb: > Dieser hier, alles mit Masse verbunden. Hier wird die Spannung auf +15V begrenzt. Das ist für den Mikrocontroller viel zu viel. Der Eingang des Mikrocontrollers wirkt elektrisch wie ein Kondensator mit ca. 5 pF Kapazität. Die Diode (oben rechts) leitet positive Spannung zum Mikrocontroller. Damit wir der Kondensator (im Mikrocontroller) geladen. Um den Eingang wieder zu entladen, brauchst du weitere Bauteile, oder musst das per Software erledigen. Ansonsten bleibt der Eingang Stundenlang auf HIGH. Negative elektromagnetische Felder werden von der Schaltung erst ab ca. -1,2V durch die beiden Dioden abgeleitet. Der Eingang des Mikrocontroller hat allerdings Schutzdioden, die schon ab 0,6V leiten. Elektromagnetische Felder müssen nicht zwingend von der Zündleitung kommen, denn sie sind überall in der Luft vorhanden. Es fehlt eine Strombegrenzung. Du riskiert, mindestens den Mikrocontroller zu zerstören, eventuell auch weitere Bauteile, die damit verbunden sind. Es macht keinen Sinn, diese Schaltung ohne Mikrocontroller auszumessen. Dann misst du irgendwas, nur nicht das, was später funktionieren soll. Auch solltest du die Eigenschaften deines Messgerätes kennen und berücksichtigen, wie es das Signal beeinflusst. Meine Multimeter würden das Signal wahrscheinlich so stark verändern, dass die Schaltung während der Messung nicht funktioniert. Ich habe den Eindruck, dass hier ein grundlegendes Verständnis von Stromkreisen fehlt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.