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.
Hallo, Problem 1: der Tachoeingang hat keinerlei Schutzbeschaltung - welche Art von Sensor wird verwendet? Problem 2: BOD aktiviert? Gruss Otto
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)
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?"
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...
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.
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.
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?
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.
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?
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.
Zuerst solltest du mal ohne jede Änderung messen, ob vcc im Rhythmus der Störung schwankt.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.