forum logo image
caferacer-forum.de - Das Forum für Petrolheads, Garagenschrauber, Ölfinger, Frickelracer und Alteisentreiber

Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Technische Fragen und Antworten, Tipps und Tricks für Profis und Bastler
BMWfahrerWNSTR

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von BMWfahrerWNSTR »

👍😳 tolle Sache !

Benutzeravatar
Mäusemanne
Beiträge: 2
Registriert: 18. Jan 2021
Motorrad:: Guzzi NF 1971
Norton Navi 1961
DKW RT250/2 1954
BMW R69/S 1967
Troika SR80 1982
usw.
Wohnort: Remstal

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von Mäusemanne »

Gute Idee ! Überwachst du auch den Lampenstrom, um bei defekter Birne schneller zu blinken ?
Gruß Manni
Gruß aus dem schwäbischen Regenwald
Manne

Benutzeravatar
brummbaehr
Beiträge: 958
Registriert: 27. Sep 2016
Motorrad:: Honda CX 500/650
Wohnort: 41836 Hückelhoven
Kontaktdaten:

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von brummbaehr »

nein

Benutzeravatar
k3po
Beiträge: 298
Registriert: 25. Apr 2015
Motorrad:: Honda CB900F, Bol d'Or (1982)
Honda CB400NC (1983)
Wohnort: ....am Rand des Nordschwarzwald ;-)

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von k3po »

Wir brauchen Unterstützung! :P

Passt grad gut zum Elektronik Thema. Geht im Kern um Ignitech TCIP4 / Datalogger, Dashboard per Bluetooth, und Steuerung im Prinzip ähnlich M-Unit. Das ganze ist ein OpenSource Projekt auf GitHub und wird von Jacob Geigle (techie66) programmiert. Ich hatte Jacob im internationalen CB1100F board kennengelernt. Eigentlich wollte ich selbst einen Datenlogger auf Arduino oder Bluepill Basis realisieren, Jacob war da allerdings schon weiter unterwegs, konnte aber die TCIP4 nicht auslesen. Mein Schwerpunkt ist die Ignitech TCIP4 also haben wir uns zusammen getan. Ich habe die Grundlagen des seriellen Kommunikationsprotokolls 'reengineered', so dass wir nun ohne die Ignitech Konfigurationssoftware mit der TCIP4 sprechen können.

Das Ganze basiert auf einem RPi als 'Zentrale' und einer Android APP als Dashboard. Man kann auch zusätzlich Arduinos als weitere Sensoren anschließen. Alles ist modular aufgebaut und man muss nicht alles aufbauen.
Im Moment liegt der Schwerpunkt auf dem Datenlogging aus der Ignitech um Optimierungen an der Zündkurve / Kennfeld rausfahren zu können. Gesten wurde eine rudimentäre CAN Bus Funktionalität eingebaut, damit man CAN Bus Teilnehmer auslesen und mitloggen kann (ist grad speziell für mich, weil ich hier einen Ignitech WB2 Lambdacontroller rumliegen habe).

Ich selbst kann zwar Code lesen und habe schon kleinere Microcontroller Projekte selbst realisiert, das was Jacob da allerdings macht, ist programmiertechnisch für mich dann doch in einer anderen Liga. :) Der arme Kerl ist also im Moment auf sich alleine gestellt. Ich helfe halt beim Testen und setze ihm immer neue Flausen in den Kopf. :mrgreen:

Schaut einfach bei Interesse mal in seinem Github Repository unter https://github.com/techie66 vorbei. Und wenn Ihr euch dann auch noch in irgendeiner Weise dort einbringen wollt / könntet, wäre das echt mega!

So long und viele Grüße

Kurt

Benutzeravatar
Eumel
Beiträge: 186
Registriert: 28. Aug 2017
Motorrad:: Buell XB12R Firebolt 2004
Honda CBF1000 (SC58) 2006
Honda CB450S (PC17) 1988
Kawasaki Z650SR
Verkauft: Honda NTV 650 Revere (RC33) 1989
Wohnort: Stuttgart

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von Eumel »

Also wirklich Zeit zum helfen hab ich jetzt nicht aber warum verwendet ihr einen Raspi? Um bissle Bluetooth und Data Logging zu machen ist das doch dezent übertrieben oder?

Ich hab was Ähnliches nur ohne Logging für ne 1100 Monster gemacht. Mechanik fehlt noch aber elektrisch geht es. Logging über einen Openlog und Bluetooth über einen ESP wäre kein Problem. Nur Android kann ich nicht
https://www.caferacer-forum.de/viewtopi ... 24&t=28755
:!: Hier könnte Ihre Werbung stehen :!:

Benutzeravatar
k3po
Beiträge: 298
Registriert: 25. Apr 2015
Motorrad:: Honda CB900F, Bol d'Or (1982)
Honda CB400NC (1983)
Wohnort: ....am Rand des Nordschwarzwald ;-)

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von k3po »

Eumel hat geschrieben: 29. Apr 2021 Also wirklich Zeit zum helfen hab ich jetzt nicht aber warum verwendet ihr einen Raspi?
Naja, auf die HW hatte ich dann keinen Einfluß mehr. Das war dann schon gesetzt. Es wird im Endausbau ja viel mehr als ein bisschen loggen.
Ich selbst hatte mit einem Arduino angefangen und wollte dann auf einen STM32. Mein Hauptpunkt ist hat das direkte loggen von der Ignitech. Dazu hat Jacob eine C-Library geschrieben welche ich adaptieren wollte.

Aber danke für deinen Input!

Gruß Kurt

Dragon
Beiträge: 4
Registriert: 22. Jan 2020
Motorrad:: Kawasaki, ZX-7R, 1998

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von Dragon »

brummbaehr hat geschrieben: 28. Apr 2021 Bissel ruhig geworden hier im Fred.

Habe mir ein Blinker-Ei ähmm.. Blinkrelais :grinsen1: für Tasterbetätigung gebastelt.
Sau geil, haben muss. Stellst du uns dein Blinker-Ei zu Verfügung?
VG
Axel

Benutzeravatar
brummbaehr
Beiträge: 958
Registriert: 27. Sep 2016
Motorrad:: Honda CX 500/650
Wohnort: 41836 Hückelhoven
Kontaktdaten:

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von brummbaehr »

Was verstehst Du unter "zu Verfügung stellen"?

Anbei der Code:

Code: Alles auswählen

/*
Programmierung auf ATTiny85, Pins gemäß Anordnung
24.04.2021

P2   Eingang Blinker Rechts
P3   Eingang Blinker Links
P4   Eingang Neutral/Kupplung

P0   Ausgang Blinker Rechts
P1   Ausgang Blinker Links
*/

#include <Bounce2.h>

#define Switch 0 // 0 --> Tastersteuerung, 1 --> Schalter
#define BLINKPINRIGHT 0 // digitaler Ausgang rechter Blinker
#define BLINKPINLEFT 1 // digitaler Ausgang linker Blinker
#define BUTTONRIGHT 2 // digitaler Eingang rechter Taster
#define BUTTONLEFT  3 // digitaler Eingang linker Taster
#define NEUTRAL 4 // digitaler Eingang Neutral/Kupplung

#define WARNBLINKPRESSTIME 2000 // Zeitdauer Tastendruck um Warnblinken ein zu schalten
#define LONGKEYPRESSTIME 300 // Zeit ab der ein Tastendruck "lang" ist
#define BLINKCOUNT 4 // Anzahl der Blinkimpulse bei kurzem Tastendruck
#define BLINKDELAY 400 // Blinkintervall
#define NEUTRALCOUNT 5 // Anzahl der Blinkimpulse nach dem die Maschine wieder los fährt

Bounce Bleft = Bounce();
Bounce Bright = Bounce();
Bounce Bneutral = Bounce();


void setup()
{
// Eingänge
Bleft.attach(BUTTONLEFT, INPUT_PULLUP);
Bleft.interval(20);
Bright.attach(BUTTONRIGHT, INPUT_PULLUP);
Bright.interval(20);
Bneutral.attach(NEUTRAL, INPUT_PULLUP);
Bneutral.interval(100);

// Ausgänge
pinMode(BLINKPINLEFT, OUTPUT);
pinMode(BLINKPINRIGHT, OUTPUT);
}

void loop()
{
Blinker();
}

//***** Blinker *****
void Blinker()
{
static int blinkstate=0; // Blinkstatus in den untersten 2 Bits
static unsigned long startBlinkMillis=0; // Zeitpunkt beim Setzen des Blinkers
static byte shortButtonPress=false; // Wird true sobald ein kurzer Tastendruck erkannt wurde
static byte longBeamPress=false; // Wird true sobald ein langer Tastendruck erkannt wurde
static boolean blinkPhase=false;
static boolean currentOn=false;
static unsigned long startNeutralMillis;
static boolean Neutral = false;


Bleft.update();
Bright.update();
Bneutral.update();

if (!Switch)  // ********* Tastersteuerung ***********
{
  //********* Blinker links *************  
  if (Bleft.fell())        //Blinker links wurde soeben gedrückt
  {
    startBlinkMillis=millis();
    if (blinkstate==0b00) // Wenn Blinkstatus "AUS"
    blinkstate=0b10; // Blinker Links setzen
    else
    blinkstate=0b00; // Blinker ausschalten
    shortButtonPress=false; // Flag für kurzen Tastendruck löschen
  }
  
  //********** Blinker rechts ***********
  if (Bright.fell())      //Blinker rechts wurde soeben gedrückt
  {
    startBlinkMillis=millis();
    if (blinkstate==0b00) // Wenn Blinkstatus "AUS"
    blinkstate=0b01; // Blinker Rechts setzen
    else
    blinkstate=0b00; // Blinker ausschalten
    shortButtonPress=false; // Flag für kurzen Tastendruck löschen
  }
  // Sonderfall Warnblinker wenn Links/Rechts länger als WARNBLINKPRESSTIME gedrückt
  if (!Bleft.read() || !Bright.read()) // && Bneutral.read())
  if ((millis()- startBlinkMillis) > WARNBLINKPRESSTIME)
  blinkstate=0b11;
  
  // Sonderfall kurzer Tastendruck beim Links- oder Rechtsblinken
  if (((Bright.read() && millis()-startBlinkMillis<LONGKEYPRESSTIME && blinkstate==0b01) || (Bleft.read() && millis()-startBlinkMillis<LONGKEYPRESSTIME && blinkstate==0b10)) && Bneutral.read())
  shortButtonPress=true;
  
  // Prüfen, ob nach Einschalten mit kurzem Buttondruck die Blinkdauer abgelaufen ist
  if (shortButtonPress && (millis()-startBlinkMillis)>=(BLINKCOUNT*2-1)*BLINKDELAY && (blinkstate==0b01 || blinkstate==0b10))
  blinkstate=0b00; // falls ja, Blinken hier automatisch beenden

  // Keinen Leerlauf mehr, und Kupplung losgelassen, jetzt nur noch kurz weiter Blinken
  if (Bneutral.rose() && blinkstate){
    startNeutralMillis=millis();
    Neutral = true;
  }
  if (Neutral && (millis()-startNeutralMillis)>=(NEUTRALCOUNT*2-1)*BLINKDELAY && (blinkstate==0b01 || blinkstate==0b10)){
    blinkstate=0b00; // falls ja, Blinken hier automatisch beenden
    Neutral = false;
  }
  if (Bneutral.fell() && blinkstate){ // Wird die Kupplung wieder gezogen, dann Blinken nicht ausschalten
    Neutral = false;
    shortButtonPress=false;
  }
   
}

else   // ********* Schaltersteuerung *********
{    
  if (!blinkstate)
    startBlinkMillis=millis();
    
  //********* Blinker links *************  
  if (!Bleft.read())   // Blinker links
  blinkstate |= 0b10;  // Blinker Links setzen
  else
  blinkstate &= 0b01;  // Blinker Links ausschalten
  
  
  //********** Blinker rechts ***********
  if (!Bright.read())  // Blinker rechts
  blinkstate |= 0b01;  // Blinker Rechts setzen
  else
  blinkstate &= 0b10;  // Blinker Rechts ausschalten
}

if (((millis()-startBlinkMillis)/BLINKDELAY)%2==0)
blinkPhase=true;
else
blinkPhase=false;

// Soll der linke Blinker gerade an sein?
currentOn=bitRead(blinkstate,1) && blinkPhase;
if (digitalRead(BLINKPINLEFT)!=currentOn)
digitalWrite(BLINKPINLEFT,currentOn);

// Soll der rechte Blinker gerade an sein?
currentOn=bitRead(blinkstate,0) && blinkPhase;
if (digitalRead(BLINKPINRIGHT)!=currentOn)
digitalWrite(BLINKPINRIGHT,currentOn);
}
Und hier das Schaltbild:
Schaltbild.jpg
Du kannst auch ein fertiges Ei von mir haben.
Schick mir ne PN
Du musst registriert und eingeloggt sein, um die Dateianhänge dieses Beitrags sehen zu können.

Dragon
Beiträge: 4
Registriert: 22. Jan 2020
Motorrad:: Kawasaki, ZX-7R, 1998

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von Dragon »

brummbaehr hat geschrieben: 15. Mär 2022 Was verstehst Du unter "zu Verfügung stellen"?
Super genau das was ich suche. Danke für das Angebot, aber ich bräuchte dann schon drei davon, damit meine Frau auch ihre beiden Mopeds bestücken kann.
Außerdem überlege ich das in mein nächstes Projekt (Cockpit) einzubinden. Da sind ja auch alle Drähte schon vorhanden.
Vielen Dank für deine Tolle Idee.
VG
Axel

Benutzeravatar
brummbaehr
Beiträge: 958
Registriert: 27. Sep 2016
Motorrad:: Honda CX 500/650
Wohnort: 41836 Hückelhoven
Kontaktdaten:

Re: Elektronik Bastelei mit Arduino (Selbstbau Tacho, DZM etc)

Beitrag von brummbaehr »

Kannst auch 3 Eier haben kein Problem :wink:
Ich habe da mal ein paar Platinen fertigen lassen :stupid:
P1020398.JPG
Du musst registriert und eingeloggt sein, um die Dateianhänge dieses Beitrags sehen zu können.

Antworten

Zurück zu „Elektrik/Beleuchtung“

Axel Joost Elektronik