Hallo,
für mein S51-Mokick habe ich mir einen Drehzahlmesser (3-stellige 7-Segmentanzeige als 1000er, 100er und 10er) mit Uhr- und Tankanzeige (OLED) und Leerlaufkontrolle (LED) gebaut. Verbaut sind ein „Standalone-Arduino“, eine RTC 3221 und ein Optokoppler 4N35, der das 12V Wechselspannungssignal der Frontlichtspule aufnimmt und ein 5V Signal an einen Interrupteingang weitergibt. Es sind Drehzahlen zwischen ca. 1500 bis max. 8000 Umdrehungen/min zu erwarten. Die 12V Wechselspannung wird von 6 rotierenden Magneten im Polrad über der Frontlichtspule erzeugt.
Ich weiß, dass ich die Möglichkeit habe die Signale in einem bestimmten Zeitraum zu zählen oder die Zeit zu messen, die für eine bestimmte Anzahl Impulse verstreicht. Ich habe mich (erstmal) dazu entschieden, die fallenden Flanken der Wechselspannung innerhalb von 500ms zu zählen. So müssen nämlich statt wie bei „CHANGE“ nur halb so viele Impulse gezählt werden und ich finde den Programmcode für das Impulszählen etwas einfacher. Bei einer ganzen Umdrehung und den 6 Magneten werden also „nur“ 3 Impulse gezählt – ich habe mir in meiner Ahnungslosigkeit einen Vorteil davon erhofft
Seit gestern habe ich den Drehzahlmesser am Moped verbaut (Stromversorgung geht über die Mopedbatterie) und er zeigt auch plausible Werte an, im Leerlauf ca. 1900 Umdrehungen bis ca. 7500 Umdrehungen bei Vollgas - die Schwankungen sind i.d.R. so im Bereich +/-50, für mich auch völlig in Ordnung. Ab und an gibt´s Ausreißer, so dass auch mal kurzzeitig über 9.000 angezeigt werden.
Das würde mich jetzt aber erstmal gar nicht so extrem stören - mein Problem ist, dass sich der Standalone-Arduino nach einiger Zeit aufhängt: Die 7-Segmentanzeige friert ein und zeigt nur noch die erste Zahl an und das OLED (Uhrzeit) bleibt auch eingefroren. Mal kann ich 15 Minuten ohne Probleme fahren bei auch langen Strecken mit über 7.000 Umdrehungen und mal hängt er sich nach wenigen Minuten oder gar paar Sekunden bei ca. 2000 oder 5000 Umdrehungen auf. Wenn ich die Zündung aus und wieder anstelle (Strom aus/an am Drehzahlmesser), geht er wieder normal bis zum nächsten Ausfall.
Ich vermute, dass es irgendwie mit den Interrupts zusammenhängt, weil ich den Aufbau schon mehrmals stundenlang am Schreibtisch laufen hatte. Dies allerdings ohne die Drehzahl dauerhaft laufen zu lassen, sondern nur von Hand mit dem „Sensorkabel“ (was jetzt an die 12V Wechselspannung geht) an + 12V rangehalten und wieder abgezogen - da hatte ich nicht ein einziges Mal so einen „freeze“. Habt ihr evtl. Anregungen/Tipps für mich?
Viele Grüße,
Marcus
PS: Der Code passte hier nicht mehr rein, daher ist er im Anhang
PPS: Bin zwar schon länger im Forum, aber trotzdem ein Anfänger. Habt bitte etwas Nachsicht
Dann zeige doch mal dein Schaltbild, wie du alles verdrahtet hast.
Speziell auch die Spannungsversorgung, diese ist an solchen Motoren immer stark verseucht.
Hi,
ich habe nur eine Fritzing-Grafik, weil ich mit Schaltbildern nicht klar komme und da auch nicht durchblicke. Die habe ich im Anhang eingefügt. Die Mopedbatterie ist als 9V-Block dargestellt.
Eine Alarmanlage habe ich auch an dieser Batterie hängen, wo mit Hilfe eines Kompressors eine Fanfare loströtet, das funktioniert reibungslos. Der Kompressor soll als Spitzenstrom 20A ziehen, das gibt keine Probleme. Von daher hätte ich gedacht, dass die Stromversorgung über die Mopedbatterie keine Probleme macht. Die Alarmanlage ist natürlich nicht bei laufendem Motor aktiviert
Die 12V von der Lichtspule gehen zum einen natürlich ans Frontlicht (35W), ans Rücklicht (5W) und als drittes an den Optokoppler Eingang "1" (LED Anode). Die restlichen (maximal) 2W werden am Spannungsregler verbraten.
Mit einem Nano hatte ich mal vergleichbare Probleme, als er an einem 12V Netzteil hing. Seit ich einen "Step Down" Spannungsregler zur Versorgung des Nano nutze ist es viel besser.
Im Allgemeinen helfen auch Kondensatoren zwischen Vin und GND, wobei ich glaube, dass die Spannung der Batterie kaum einbrechen dürfte und der Kondensator daher hier keinen positiven Effekt hat. Würde mich mal interessieren was die anderen dazu meinen.
Hi,
die Mopedbnatterie hat 6V, die 9V Blockbatterie ist auf der Fritzing-Grafik nur symbolisch.
Die Spannungsversorgung habe ich genau wie bei meiner Alarmanlage mit einem Low Dropout Spannungsregler realisiert. Wenn der Alarm losgeht, zieht der Kompressor bis zu 20 Ampere von der Batterie. Die Spannung bricht dabei aber nicht so weit ein, als dass der Low Dropout Regler nicht mit klar käme. Ich hatte dort ursprünglich einen anderen Regler, verbaut, damit klappte das tatsächlich nicht.
Wenn die Spannungsversorgung am Arduino beim Loströten der Fanfare nicht einbricht, sollte sie beim "normalen Betrieb" mit Drehzahlmesser erst recht nicht einbrechen... denke ich (?)
Prima, dass du dir die Mühe mit der Schaltung gemacht hast, wenn auch nicht sehr viel zu erkennen ist.
Da die Alarmanlage nur im Stand betrieben wird, ist die nicht von den Störungen betroffen.
Für die Spannung des Controllers solltest du dir ein KFZ-Filter besorgen, welches den größten Teil der Störungen eliminiert.
Die gibt es rel. preiswert im Netz
Und es geht nicht um einen Spannungseinbruch, sondern um sehr hohe Spannungsspitzen, die deine Elektronik stören.
Hi,
am Drehzahlmesser bastele ich - mit Unterbrechungen - jetzt schon fast 2 Jahre rum. Die Grafik habe ich für mich und möglichst schnelle Wiedereinstiege gemacht.
Ich weiß leider nicht, was der Entstörfilter genau ist. Wenn ich danach google, finde ich aber auch etwas zu USB-Dosen und (Wechsel-)Spannungsreglern/Gleichrichtern. Am Moped habe ich sowohl eine USB-Ladebuchse, als auch einen Spannungsregler mit Gleichrichter. Hieße das, ich könnte den Drehzahlmesser auch daran anschließen und die Sache wäre damit schon entstört? Ansonsten bliebe als dritte Möglichkeit, zumindest zum Testen, ihn mit Batterien zu betreiben. Oder bringt´s das alles nicht und ich brauche noch etwas ganz anderes?
Dann google mal nach KFZ Entstörfilter, da gibt es eine große Auswahl.
Dieses Filter direkt an die Batterie anschließen und dann erst in deine Elektronik.
Moin,
ah sorry, die Frage hatte ich überlesen. Ich weiß nicht mehr, woher ich die "Bauanleitung" davon hab. Ich habe damals mehrere ausprobiert und die jetzige für gut befunden und sie hat sich bereits in mehreren Projekten bewährt (z.B. Carrera Driver Display, Alarmanlage).
Ich habe so viel Ahnung davon, dass ich dir die Frage nichtmal beantworten und nur auf diese Seite verweisen kann: https://www.arduino.cc/en/main/standalone
(Ob es genau diese Bauanleitung war, weiß ich nicht mehr - ich habe mir meine "Bewährte" zu Hause abgespeichert )
Für mich als Laie ist das einfach ein "Standalone Arduino", eben weil ich nichtmal den Unterschied zum "Standalone ATmega" weiß. Ich meine, das stand damals bei der Bauanleitung mit bei und ich habe die Benennung für mich so beibehalten ... oder einfach falsch gemerkt
Nach den KFZ-Entstörfiltern habe ich gesucht, ich weiß aber nicht, ob ich die auch für eine 6V Mopedbatterie nehmen kann? Bei jedem Filter steht, dass die für 12V sind :o
edit:
Was mir gerade noch eingefallen ist: So lange ich noch keinen Entstörfilter habe, könnte ich ja die Signalleitung für den Interrupt abziehen. Wenn ich dann noch Programmabstürze habe, dann kann das Problem ja eigentlich schonmal nicht an den Interrupts liegen, was ich ja ursprünglich vermutet hatte. Wenn ich dann aber keine Abstürze mehr hätte, würde das aber eher gegen Störungen durch die Bordelektronik sprechen und das Problem läge doch am Interrupt?
Ganz einfach, Arduino ist eine geschützte Marke, somit darfst du und andere Hersteller ihre Produkte nicht so nennen.
Standalone Atmega328 sagt dann aus, der Chip wird ohne ein bekanntes Board verbaut.
Die Entstörfilter sind auch für 6 Volt geeignet und solltest du unbedingt einbauen, damit dein Projekt vernünftig läuft.
In einem Verbrennungsmotor entstehen Spannungsspitzen bis zu ca. 100 Volt die damit von deiner Elektronik fern gehalten wird.
Hi,
achso - ja dann "Standalone Atmega"
Ich habe mir just einen Entstörfilter bestellt, der wird voraussichtl. morgen ankommen. Dann bin ich ab morgen Nachmittag über das Wochenende auf Mopedtour unterwegs und kann leider erstmal nicht weiter berichten.
Es ist nicht, dass ich nicht an die Störeinflüsse glauben würde - sonst hätte ich mir jetzt nicht den Entstörfilter bestellt. Ich klammere mich nur an jeden Strohhalm und versuche möglichst alle Fehlerquellen auszuschließen: Ich habe beim Stöbern über google von Problemen bei "Serial.print" und Interrupts, bzw. "noInterrupts()" gelesen. Da hatten Leute auch Probleme mit Abstürzen und "Freezes", scheinbar genau wie bei mir. Könnte das bei mir auch der Fall sein mit meinem OLED und dem "display.print"? Ich werde das Aussetzen der Interrupts ausklammern und das auch einmal testen, denn ich weiß gar nicht, ob das überhaupt notwendig ist.
Faddi:
.....
Ich klammere mich nur an jeden Strohhalm und versuche möglichst alle Fehlerquellen auszuschließen: Ich habe beim Stöbern über google von Problemen bei "Serial.print" und Interrupts, bzw. "noInterrupts()" gelesen. Da hatten Leute auch Probleme mit Abstürzen und "Freezes", scheinbar genau wie bei mir. Könnte das bei mir auch der Fall sein mit meinem OLED und dem "display.print"? Ich werde das Aussetzen der Interrupts ausklammern und das auch einmal testen, denn ich weiß gar nicht, ob das überhaupt notwendig ist.
Das genannte Problem hat mit deinem Problem nichts gemeinsam.
In Serial werden auch Interrupts verwendet, die sich dann mit weiteren Interrupts beharken.
Wenn nach der Entstörung der Betriebsspannung weiterhin Probleme auftreten, muss man die untersuchen.
Auch auf der Interruptleitung können natürlich Störungen vorhanden sein, die dein System beeinflussen.
Ich würde noch ein paar Keramik-Kodensatoren verbauen. Die Elkos sind Wickelkondensatoren und haben eine relativ hohe Induktivität, sind also für Spannungsspitzen ungeeignet.
Wie sieht denn dein Signal von der Lichtspule aus? Ist das Wechselspannung? Hier würde ich auch was ändern (Filter). Vielleicht kannst du dir das Signal mal mit dem Oszi anschauen.
Wie ist denn deine Kabelführung? Die Leitung von der Lichtspule sollte nicht parallel zu den anderen Verbindungen liegen.
HotSystems:
In einem Verbrennungsmotor entstehen Spannungsspitzen bis zu ca. 100 Volt die damit von deiner Elektronik fern gehalten wird.
Bist du sicher, dass die 100V auch bis an die Batterie kommen (könnten)? Ich habe auf meinem Moped onboard schon einen Spannungsregler und bin auch recht sicher, dass der direkt hinter der Lichtmaschine hängt und für alles was dran hängt die Spannung auf ~14V oder sowas begrenzt (weiß ich aber nicht sicher zugegebenermaßen). Hätte jetzt gedacht das ist auch üblich, weil alles andere gefährlich für Verbraucher/Batterie wäre?! Klär mich gern auf wenn du zu dem Thema mehr weißt als ich.
Mahimus:
Bist du sicher, dass die 100V auch bis an die Batterie kommen (könnten)? Ich habe auf meinem Moped onboard schon einen Spannungsregler und bin auch recht sicher, dass der direkt hinter der Lichtmaschine hängt und für alles was dran hängt die Spannung auf ~14V oder sowas begrenzt (weiß ich aber nicht sicher zugegebenermaßen). Hätte jetzt gedacht das ist auch üblich, weil alles andere gefährlich für Verbraucher/Batterie wäre?! Klär mich gern auf wenn du zu dem Thema mehr weißt als ich.
Hi,
also was ich jetzt schonmal sagen kann ist:
Wenn ich das Signalkabel für den Interrupt abziehe, stürzt der Atmega trotzdem ab.
Morgen kommt hoffentlich der Entstörfilter an, dann baue ich den noch fix vor der Mopedtour ein.
Faddi:
Hi,
also was ich jetzt schonmal sagen kann ist:
Wenn ich das Signalkabel für den Interrupt abziehe, stürzt der Atmega trotzdem ab.
Morgen kommt hoffentlich der Entstörfilter an, dann baue ich den noch fix vor der Mopedtour ein.
Viele Grüße,
Marcus
Na dann ist schon mal klar, dass es nicht (allein) der Interrupt-Pin ist.
Allerdings die Frage, an welcher Stelle hast du das Kabel abgezogen ?
Am Motor ? Dann ist der Eingang offen und kann noch Störungen empfangen.
Am Chip ? Dann liegt es def. mit an der Betriebsspannung.
Moin,
das Kabel hatte ich hinter dem Spannungsregler (von der Lichtspule her gesehen) abgezogen. Vom Eingangspin des Optokopplers lag dann das ca. 0,5m lange Kabelende frei.
Es gibt Neuigkeiten! Ich will den Tag nicht vor dem Abend loben und der Langzeittest wird´s zeigen, aber:
Ich habe gestern nochmal eine Kleinigkeit (?) am Code angepasst und konnte eben gerade zum aller ersten Mal ohne Absturz zur Arbeit fahren. Zudem hatte ich auch keine Ausreißer der Drehzahlanzeige in die 9000er Drehzahlen wie noch vor wenigen Tagen, sondern die Schwankungen waren bei +/-50. Bei Vollgas schöne 7200, wenn ich im Windschatten anderer Fahrzeuge etwas schneller als normal fahren konnte auch 7600 Umdrehungen, im Stand 1800 - also eigentlich perfekt
Ich habe ja drei 7-Segmentziffern, die die 1000er, 100er und 10er der Drehzahl anzeigen. Was passiert, wenn sich der Atmega doch mal "verzählt" und es Ausreißer, wie ich sie letztens hatte, in die 9000er Drehzahlen geht? Was passiert bei Drehzahlen >= 10.000? Kann dadurch das Schieberegister aus dem Tritt kommen und der Atmega daher abstürzen? Ich weiß es jedenfalls nicht und habe daher dem Programm einfach eine Begrenzung hinzugefügt, dass bei Drehzahlen >=9500 die Drehzahl auf 9500 begrenzt wird.
Das erstmal als ein hoffnungsvolles Update meines Problems...