Go Down

Topic: Drehzahlmesser am Moped - stürzt ab/friert unregelmäßig ein (Read 456 times) previous topic - next topic

Faddi

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 ;)

HotSystems

Dann zeige doch mal dein Schaltbild, wie du alles verdrahtet hast.
Speziell auch die Spannungsversorgung, diese ist an solchen Motoren immer stark verseucht.

Und was geht an 12Volt Wechselspannung ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Faddi

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.

Viele Grüße,
Marcus

Mahimus

Was ist denn ein "Standalone Arduino"?

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.

Edit: Mopedbatterie hat 9V?

Faddi

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 (?) ;)

Viele Grüße,
Marcus

HotSystems

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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Faddi

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?

Viele Grüße,
Marcus

HotSystems

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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

HotSystems

Was ist denn ein "Standalone Arduino"?
Schreibfehler, sollte wohl "Standalone ATmega" heißen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Faddi

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?


Viele Grüße,
Marcus

HotSystems

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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Faddi

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.

Viele Grüße,
Marcus

HotSystems

.....
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.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

OtmarK

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.

Mahimus

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.

Go Up