Forum: Mikrocontroller und Digitale Elektronik mc-Roadbook: Tachosignal entstören


von lowbob (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Mikrocontroller.net Forum!

Vorweg: Ich bin im Bereich Mikrocontroller und Schaltungen ein Anfänger.

Mein Vater fährt Motorrad und wollte für "Rallyes" eine Schaltung um per 
Tastendruck ein Roadbook (Papierrolle mit der Route) Vorwärts- und 
Rückwärts spulen zu können. Leichtsinnigerweise habe ich Unterstützung 
zugesagt und nun hat sich das Projekt um verschiedene Features 
erweitert, z.B. zwei Tripzähler und dass einzelne Stationen des 
Roadbooks über einen Sensor erkannt werden.
Der Zählerstand der Tripzähler wird mit jeweils vier 7-Segment Anzeigen 
ausgegeben. Zum weiterzählen der Tripanzeige wird das Tachosignal des 
Motorrads genutzt. Pro Radumdrehung werden sechs Impulse übertragen bei 
denen die Spannung von ~4,9V auf ~0,95V fällt. Logischerweise nutze ich 
also einen Interrupt der bei fallender Flanke auslöst.
Damit die Zählerstände erhalten bleiben, habe ich - nach Empfehlung 
eures EEPROM-Artikels - versucht eine Pufferschaltung zu nutzen. Auch 
hier wird wieder ein Interrupt bei fallender Flanke auslöst.
Zum Testen/Programmieren nutze ich einen Arduino UNO, der 
Mikrocontroller wird dann entnommen und auf der von mir angefertigen 
Platine eingesetzt.
Schaltplan und Platine sind angehangen. Momentan ist die Schaltung am 
Motorrad über Dauerplus angeschlossen.

Problem 1: Je nach Betriebszustand des Motorrads inkrementieren sich 
die Zähler, obwohl sich das Rad nicht dreht.
Motor aus, Zündung aus: langsames [Geister]inkrementieren.
Motor aus, Zündung an: kein sichtbares [Geister]inkrementieren.
Motor an, Zündung an: schnelles [Geister]inkrementieren.
Ich bin mir sicher, dass das an meiner Schaltung liegt. Ich habe bereits 
nach Lösungen gesucht, aber finde nur Artikel/Hinweise fürs Entprellen. 
Das hilft mir meiner Meinung nach nicht weiter. Kann sein das ich falsch 
liege oder zu doof zum richtigen Suchen bin, daher die...
Frage : Wie bekomme ich das Signal entstört?

Problem 2: Die Zählerstände nicht erfolgreich gespeichert.
Bei einem Test auf dem Breadboard hat alles ohne Probleme funktioniert - 
auf der Platine aber nicht. Auf dem Breadboard hatte ich aber auch nur 
die Minimalbeschaltung am Mikrocontroller. Am Quellcode habe ich nichts 
geändert.
Frage : Seht ihr einen Fehler, der das erklärt?
Nebenfrage : Wie kann ich den ATMega328 auf der Platine am besten 
"debuggen"?
Die beiden Pins die vom Arduino zur Seriellen Kommunikation genutzt 
werden sind belegt - aber ich habe etwas über SoftwareSerial gelesen. 
Würde das funktionieren? Wenn ja, wie kann ich am Besten die Signale 
abgreifen (Lackdraht an die Pins?)?

TL; DR : Wie entstört man ein Tachosignal von einem Motorrad?

Entschuldigung für den langen Text - ich hoffe ihr habt alle Infos die 
ihr braucht um zu helfen.
Danke schonmal.

von otto (Gast)


Lesenswert?

Hallo,

Problem 1: der Tachoeingang hat keinerlei Schutzbeschaltung - welche Art 
von Sensor wird verwendet?

Problem 2: BOD aktiviert?

Gruss Otto

von otto (Gast)


Lesenswert?

Zu Problem 2: es sollte auch nicht die 5V-Betriebsspannung sondern eher 
die Eingangsspannung des Spannungsreglers oder KL15 (Zündung) zum 
detektieren des Spannungsausfalls verwendet werden (mit geeigneter 
Schutzbeschaltung)

von lowbob (Gast)


Lesenswert?

Danke schon mal für die Rückmeldung.

Zu Problem 1: Der Sensor ist halt der vom Motorrad (KTM 990 EFI) - 
soweit ich weiß ein Hall-Sensor. Ich greife ja aber nicht direkt den 
Sensor ab, sondern erst später. Ich nehme also an, dass das 
ursprüngliche Signal bereits durch ein Steuergerät "aufbereitet" wurde.
(siehe 
http://s142.photobucket.com/user/srad600/media/990/ABS%20wiring/KTM_990_ABSRouting1_zpsaab03e0f.jpg.html)

Zu Problem 2: Nicht die Betriebsspannung als Eingang zu nehmen ist eine 
gute Idee. Ist diese Annahme richtig: C1 verlangsamt den schnellen 
Abfall der Spannung am Interrupt-Pin und verzögert somit das auslösen 
des Interrupts?
Was ist als Schutzschaltung zu empfehlen? Ein Linearspannungsregler?
Mit der Abkürzung BOD kann ich nichts anfangen, sorry - was meinst du 
also mit "BOD aktiviert?"

von Michael (Gast)


Lesenswert?

Google "BOD mikrocontroller"
Erstes echtes Sucheregbnis nach Werbung zeigt, was es ausgeschrieben 
heißt und dann einfach obige Webseite nutzen, um entsprechend weiter zu 
suchen...

von lowbob (Gast)


Lesenswert?

OK, danke Michael.
Ich hatte gestern natürlich nach BOD gesucht, aber ohne Mikrocontroller 
als Zusatz - da hab ich nichts relevantes gefunden. Mein Fehler - 
Entschuldigung.

"Der Arduino" (und damit der ATMega328P) hat BOD per default aktiviert 
(Level1 = 2,7 V).
Spielt das überhaupt eine Rolle? Ich nutze ja das externe Signal zum 
Auslösen eines Interrupts und - zumindest so gedacht - dann die 
Pufferschaltung um noch lange genug die Spannung für das schreiben 
aufrecht zu erhalten.

von otto (Gast)


Lesenswert?

Du solltest den Tacho-Eingang mit einem Reihenwiderstand von ca. 10k 
gegen Überspannung und einem Kondensator von ca. 10n gegen Störungen 
sichern.

Weiterhin solltest du herausfinden, ob und wie sich das Nutzsignal vom 
und Störsignal unterscheidet.

Dein Interrupt zum Schreiben wird erst dann ausgelöst, wenn bereits die 
Controller-Versorgung zusammenbricht.

Du solltest also besser das Zusammenbrechen der Eingangsspannung 
auswerten - wieder über Reihenwiderstand und Kondensator als 
Mindestschutzbeschaltung.

von lowbob (Gast)


Lesenswert?

Danke otto.

Ich werde die Schaltung wie von dir empfohlen anpassen.

Die Eingangsspannung (deren Wegfall ich erkennen möchte) beträgt 12V. 
Das kann ich natürlich nicht direkt anschließen. Was kann ich dafür dann 
nehmen? Spannungsteiler? Spannungsteiler mit Zenerdiode? 
Linearspannungsregler?

von otto (Gast)


Lesenswert?

Vom Mess-Eingang über einen 10k-Widerstand auf den Portpin. Von diesem 
auf einen 10n-Kondensator gegen Masse. Ängstliche setzen hierzu 
antiparallel noch gerne eine 4V7-Zenerdiode.

von lowbob (Gast)


Lesenswert?

Ich habe bezüglich Problem 1 ein bisschen "experimentiert".

Wie empfohlen habe ich einen Widerstand und einen Kondensator verbaut. 
Resultat: Weniger falsche Tachosignale, aber leider noch immer im 
inakzeptablen Bereich. Ich konnte es auf die Schnelle nicht an der 
Platine löten und habe es daher als externe Minischaltung vor den 
Pinanschluss geklemmt. Wie groß ist der Einfluss dadurch?

Des weiteren ist mir aufgefallen, dass wegen dem Spannungsabfall an D7 
der ATMega nur mit ~4,2V betrieben wird (auch AREF). Ich bin mir nicht 
sicher, inwiefern das einen Beitrag zum Problem leistet/leisten kann.

Ich das ganze noch einmal mit einer Minimalschaltung probiert 
(Versorgung über einen L7805; ATMega; eine 7-Segment-Anzeige direkt am 
MC und das Tachosignal über 10kOhm an den Interrupt-Pin, dort dann noch 
einen 10n Kondensator auf Masse).
Resultat: Alles funktioniert wie gewünscht - keinerlei Störungen, auch 
nicht wenn der Motorrad-Motor läuft.
Es muss also an meiner Platine/Schaltung liegen. Habe ich die sehr 
empfindlich für Störungen designt?

von otto (Gast)


Lesenswert?

Das Problem der zu geringen Vcc könntest du versuchsweise durch das 
überbrücken der Diode eliminieren.

Die korrekte Funktion von Schaltreglern ist stark layoutabhängig - evtl. 
werden die Störungen durch diesen verursacht.

Um dies auszuschließen könntest du deine Platine versuchsweise mit einem 
Linearregler versorgen.

Sollten die Störungen dann nicht mehr vorhanden sein, solltest du die 
Kapazität des ausgangsseitigen Elko mal verkleinern.

Bringt dues nichts, versuche die Masseführung zu optimieren.

von otto (Gast)


Lesenswert?

Zuerst solltest du mal ohne jede Änderung messen,  ob vcc im Rhythmus 
der Störung schwankt.

von lowbob (Gast)


Lesenswert?

Noch einmal eine Rückmeldung: Ich habe die beiden Probleme "gelöst".

Problem 2 so wie otto es beschrieben hat: Eingangsspannung statt der 
Spannungswandler-Spannung zur Erkennung des Ausfalls nutzen.

Problem 1 konnte ich nur indirekt lösen: Ich habe einen eigenen 
Reed-Sensor verbaut und bin somit vom Tachosignal unabhängig.

Vielen Dank für die Hilfe an otto.
Ich hatte mir ein bisschen mehr Input von diesem Forum erwartet und weiß 
bis jetzt noch nicht, was ich falsch gemacht habe, dass hier niemand 
außer otto was geschrieben hat. War es zu einfach, eine Frage die schon 
1000 Mal geklärt wurde oder...?!

Nun ja - noch einmal Dank an otto.
Schönen Tag noch an alle.

von Max B. (theeye)


Lesenswert?

Hast du dir mal die Lösungen anderer, etablierter, selbst entwickelter 
Kettenöler angesehen? Natürlich meine ich solche, die die Ölung der 
gefahrenen Strecke anpassen. Ich kenne da zwei Systeme:
1. Per montiertem Magnet + Reedkontakt
2. Abgreifen des Tachosignals

Vermutlich kannst du dir da was für dein Projekt abgucken ;-)

Gruß Max

von lowbob (Gast)


Lesenswert?

Ja, mein Vater hat einen McCoi, dessen PCB/Schaltung habe ich mal 
angeschaut und versucht es nachzuvollziehen. (siehe 
http://www.mccoi-forum.de//files/schandplan_761.gif)
Ich habe es aber offensichtlich nicht verstanden, denn meinem 
Verständnis nach dürfte nie ein Signal durch die Schottky-Diode an den 
MC gelangen...mir ist unklar, wie die Schaltung funktioniert.

von otto (Gast)


Lesenswert?

Hallo,

der Reed-Kontakt liegt gegen Masse, im Controller ist der Pull-Up 
aktiviert - dann geht es.

Gruß otto

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
Noch kein Account? Hier anmelden.