INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Blinkcode in Klartext ausgeben
10.01.2017, 18:25
Beitrag #1
Blinkcode in Klartext ausgeben
Hi an die Forumsgemeinde

Ich bin neu hier im Forum und versuche mal mein Vorhaben so gut es geht zu beschreiben.

Zu mir: Bin gerlernter Elektriker und habe deshalb etwas Ahnung von der Materie, habe mich bis jetzt aber noch nie mit programmierung geschweigen denn dem Adruino auseinandergesetzt.

Zu meinem Vorhaben:
Ich würde mir gerne ein Gerät bauen womit ich das Motorsteuergerät meines Autos (Audi 80 bj. 92 ) auslesen kann. Das Steuergerät gibt die Fehlercodes ( falls Fehler vorhanden ) in jeweils einem 4 stelligen Blinkcode raus.

Bspl. Fehler 2345

blink blink pause =2
blink blink blink pause =3
blink blink blink blink pause =4
blink blink blink blink blink pause =5
2,5 sek. Pause
nächster Fehlercode
usw.

Zu den 4 stelligen Codes gibt es eine Liste mit dazugehörigen Fehlern.

Die Blinkcodes werden in 12V Gleichspannung rausgegeben.

Meine Vorstellung:
Mittels des Arduino und Adapterstecker fürs Steuergerät den Fehlercode auslesen und über ein LCD oder TFT Display in Klartext wieder geben.
Evtl. ist es ja auch möglich die Fehler zu speichern sodass man sie nach beendigung der Fehlerauslese ( 0000 ) auf dem Display abfragen kann.

Hoffe ich habe es einigermaßen verständlich rüber bringen können. Confused

Gruß Tim
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2017, 19:04
Beitrag #2
RE: Blinkcode in Klartext ausgeben
Hallo Tim
Da hast du bei mir was wieder ausgegraben, was ich vor Jahren mal machen wollte. Ich wollte das Auslesegerät für BMW Motorräder. Vielleicht mache ich mich jetzt mal darüber her.

Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2017, 21:00
Beitrag #3
RE: Blinkcode in Klartext ausgeben
Hi
Ja Top.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2017, 21:06 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2017 21:06 von rkuehle.)
Beitrag #4
RE: Blinkcode in Klartext ausgeben
Hallo Tim,

was bei deinen Angaben noch fehlt ist die Länge der Pausenzeit nach jeder Fehlerziffer / nach jeder Blinksequenz. Danach richtig sich eigentlich die Methode mit der man den Pin, auf dem die Signale ankommen, ausliest.
Bei relativ langen Pausen könnte man mit digitalRead() arbeiten, bei kürzeren Pausen vielleicht eher mit einem externen Interrupt.
Ein gutes Beispiel hierzu findet man ua. hier.
Anstatt fallender Flanken (FALLING) müsste man natürlich auf steigende Flanken prüfen (RISING). Die im Beitrag erwähnte ISR sollte am besten nur Variablen setzen die im normalen Programmcode ausgewertet werden und als volatile Variable deklariert wird. In der ISR dürfen / sollten auch keine delay() - und verwandte Aufrufe erfolgen (sollte man eigentlich grundsätzlich vermeiiden).
Wie man die Anzeige gestaltet ist erst einmal zweitrangig und kann danach angegangen werden. Zum speichern gibt es entsprechende SD - Karten - Shields.
Auf die Karten könnte man eine / mehrere Dateien schreiben welche die Codes enthalten und diese dann per LCD anzeigen.
Vielleicht hilft das ja ein wenig die Richtung zu finden.
Grüße Ricardo
PS: Über die Elektrik (gemeinsamer GND, Spannungsteiler etc.) brauche ich dir ja nichts zu sagen Smile

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2017, 21:29 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2017 21:34 von Borderwalker310.)
Beitrag #5
RE: Blinkcode in Klartext ausgeben
Hier mal eine Schaltung zum auslesen des Blinkcode mittels Prüflampe. Die Brücke muss für 5 sek gesetzt werden um den Auslesevorgang zu starten.
Nach jedem 4 Stelligen Blinkcode muss die Brücke erneut gesetzt werden um den nächsten Code abzufragen.
Die Brücke würde ich dann durch einen Taster realisieren.
Idealerweise würde es natürlich das Arduino übernehmen.
Der Blinkcode wir als 12V Gleichspannung ausgegeben was vermutlich noch die Schaltung eines Relais nötig macht.

Hier das Beispiel einer Fehlercodesequenz.

Fehler 2142 = Klopfsensor
Die Zeit zwischen dem ausblinken einer Ziffer weiß ich leider nicht.


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2017, 22:19 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2017 22:51 von Franz54.)
Beitrag #6
RE: Blinkcode in Klartext ausgeben
"Der Blinkcode wir als 12V Gleichspannung ausgegeben was vermutlich noch die Schaltung eines Relais nötig macht."

Ein Relais ist da nicht möglich. Das zieht zuviel Strom. Mehr als eine LED packt der Ausgang nicht. Ich würde mit dem Tackt einen Optokoppler beschalten, und Ausgangsseitig an dem Optokoppler dann gleich die 5 Volt für den Arduino treiben. Dann hast du eine wunderbare galvanische Trennung. Auch der Ground ist dann getrennt.

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.01.2017, 18:12 (Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2017 18:42 von Franz54.)
Beitrag #7
RE: Blinkcode in Klartext ausgeben
Ich habe mir gerade mal ein Programm zusammen genagelt mit dem ich diese Impulse genau auswerten will. Also damit erst mal nur die HIGH Impulse. Wenn das läuft mache ich mir noch die Aufzeichnung der Impulspause Zeiten dazu.

Aber ich habe schon mit dem Anfang Probleme.
Ich teste hier auf den Beginn vom HIGH Impuls und schreibe in "impulsHIGH" die Millis bei Impulsbeginn weg.
Dann teste ich auf Impuls Ende, schreibe dann wieder die Millis weg in "impulsLOW".
Dann "impulsLOW" - "impulsHIGH rechnen und das Ergebnis in "Millimessung" ablegen und Serial Printen.
Der Befehl "Serial.println(impulsLOW);" und der Befehl "Serial.println(impulsHIGH); sind nur zur Fehlersuche eingefügt. Obwohl die beiden Werte zu völlig unterschiedlichen Zeiten genommen und ausgegeben werden sind beide Werte immer "140", wodurch das eigentliche Ergebnis immer "0" ist ConfusedSad Ich komme nur nicht drauf, wo im Programm der Fehler ensteht Angry

Da hat doch sicher jemand eine Erklärung dazu was ich falsch mache?

Franz


Code:
unsigned long impulsHIGH =0;
unsigned long impulsLOW =0;
unsigned long Millimessung =0;

int pin = 7;
int messung =0;
int messungAlt =0;

void setup() {
  // put your setup code here, to run once:
pinMode(pin,INPUT);
Serial.begin(9600);
}

void loop() {
messung = digitalRead(pin);
  
  if (messung == HIGH && messungAlt == LOW) {
    impulsHIGH = millis;
    messungAlt = messung;
    Serial.println(impulsHIGH);
  }
  if (messung == LOW && messungAlt == HIGH) {
    impulsLOW = millis;
    messungAlt = messung;
    Millimessung = impulsLOW - impulsHIGH;
    Serial.println(Millimessung);
    Serial.println(impulsLOW);
  }

}

Entschuldigung, ich habe den Fehler gefunden. Beim auslesen der Millis mus der Befehl lauten "impulsHIGH = millis();" also die beiden Klammern habe ich vergessen


O.K. jetzt sehe ich schon mal die High- und Low- Impulszeiten. Muss ich nur noch einen Abschluss machen, wenn der letzte Low zu lange wird, dass dann das Programm merkt dass die Impulsserien zuende sind. Dann habe ich eine gute Vorlage um die Impulse zu erkennen, zu speichern und auszuwerten. Also mit passenden Text zur Fehlernummer zu erweitern und auszugeben. Natürlich dann aufs LCD Display. Immer eine gescannte Fehlernummer und den Klartext dazu. Dann die "Weitertaste" betätigen, dass die nächste Fehlernummer aufs Display kommt, wieder mit passenden Klartext dazu. u.s.w.

Franz

Code:
unsigned long impulsHIGH =0;
unsigned long impulsLOW =0;
unsigned long Millimessung =0;

int pin = 7;
int messung =0;
int messungAlt =0;

void setup() {
  // put your setup code here, to run once:
pinMode(pin,INPUT);
Serial.begin(9600);
}

void loop() {
messung = digitalRead(pin);
  
  if (messung == HIGH && messungAlt == LOW) {
    impulsHIGH = millis();
    messungAlt = messung;
    Millimessung = impulsHIGH - impulsLOW;
    Serial.print("LOW-Impuls= ");
    Serial.println(Millimessung);
  }
  if (messung == LOW && messungAlt == HIGH) {
    impulsLOW = millis();
    messungAlt = messung;
    Millimessung = impulsLOW - impulsHIGH;
    Serial.print("HIGH-Impuls= ");
    Serial.println(Millimessung);
    
  }

}

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.01.2017, 08:39 (Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2017 08:46 von Franz54.)
Beitrag #8
RE: Blinkcode in Klartext ausgeben
Ich habe mal bei meinem Programm getestet, was ein Loop durchgang in meinem derzeitigen Programm an microsekunden braucht. Wenn die IF´s alle nicht zutreffen ist die Schleife in 8 microsek. durch. Dann je nach Programmverlauf sind es bis 250 microsek. Der Loop ist natürlich schon länge als bei dem Programm hier oben. Aber es zeigte mir, dass es keine bedeutende Zeit ist. Also kein Problem bei der Feststellung der Impulszeiten. Zuerst habe ich die Loop Durchgänge in millis gemessen. Da kam natürlich egal ab IF´s zutrafen oder nicht, immer "0" raus Big Grin. Diese Messungen werde ich jetzt mal bei allen Programmen verwenden, um ein wenig auf optimierungen zu achten.
Ich kam darauf, weil ich mal den Watchdoc in ein Programm eingebaut habe, wo ich ihn auf 500ms einstellen musste, um nicht dauernd Neustarts zu bekommen, weil der Watchdoc abgelaufen ist.

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  atof array ausgeben Pet 6 910 27.11.2019 13:12
Letzter Beitrag: Pet
  String als autoscroll auf LCD ausgeben AnFi 17 2.215 29.08.2019 08:13
Letzter Beitrag: MartinZ
  Das Zeichen "°" (Grad) ausgeben Rockman 6 2.127 16.06.2019 16:39
Letzter Beitrag: Rockman
  MKR FOX 1200 - Spannung ausgeben Herby007 8 1.709 23.05.2019 00:47
Letzter Beitrag: Bitklopfer
  mehrdim. Arrays wert der ersten dimension ausgeben sepp01 19 2.865 14.10.2018 06:55
Letzter Beitrag: sepp01
  Serieller string zwischenspeichern und wieder ausgeben. Matt 15 4.419 03.03.2018 20:23
Letzter Beitrag: Tommy56
  Datei von SD Karte auf Display ausgeben dahans 30 7.522 06.02.2018 21:24
Letzter Beitrag: dahans
  ASCII Zeichen Seriell ausgeben huber5093 3 3.773 07.10.2017 20:35
Letzter Beitrag: Tommy56
  Char Werte ausgeben Scotch 5 4.426 31.03.2017 15:37
Letzter Beitrag: Scotch
  Zählerstand nur einmal ausgeben Fliega 11 6.785 21.02.2017 11:21
Letzter Beitrag: SkobyMobil

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste