Motorrad Drehzahlmesser ansteuern.

So sieht das Bild auf dem Scope aus.

Einstellungen sind:

Amp/div: 2 mV Time/div: 1 ms

Mit dem Signal rennt der Drehzahlmesser? :fearful: :fearful: :fearful:

Das würde bedeuten, Du hast ca. 6 mV Amplitude bei ca. 180 Hz :wink:

Check bitte die Einstellungen am Scope nochmal und auch, welches Teilerverhältnis der Tastkopf hat.

Das Tastverhältnis ist 1x. Ich habe das Messgerät nicht benutzt, weil ich damit nicht umgehen kann.
Wenn mir einer grob beschreiben kann was ich machen muss, wäre es hilfreich.

Zudem habe ich auf dem Breadboard noch was anderes versucht.
Habe an den Arduino Ausgang einen NPN gelegt mit dem ich dann einen anderen PNP ansteuer.

Du hast also Transistoren da..

Dann bau doch mal fix eine Gegentaktendstufe!

Diese ist geeignet: Schaltplan Quelle
Den FET lass weg, und anstatt dessen, den Drehzahl Input deines DZM da anschließen.
Die Schaltung tuts mit 12V genauso gut, wie mit 15V - 30V

Dann biste fertig, mit rum eiern.

:smiling_imp: Brauchst auch keine 2 Foren mehr mit deinem Unwissen über Transistorgrundschaltungen zu belästigen. :smiling_imp:
(tut mir leid, musste mal raus)

So, ich baue das mal eben nach. Danke schon mal für die ganze Hilfe.

Ich nochmal :slight_smile:

Nur zum Verständnis bezüglich Deines 1. Bildes: dieses Ding bekommt Saft aus Deinem Netzteil und Du hast diesen Generator an den Drehzahlmesser-Eingang gelegt.

Richtig?

Ja genau.

Und zu dem Oszilloskop. Bei mir hatten sich die Knöpfe von der Y Achse auf dem Stift gedreht.
Wenn jemand was damit anfangen kann.

Ich würde (hab ich schon gesagt dass ich da faul bin? :smiling_imp: ), die angehängte Variante zuerst versuchen. Wenn der Eingang des DZM nicht zu niederohmig ist sollte das reichen.

Drehzahlmesser.jpg

Mit R2 kannste rumspielen, je hochohmiger desto weniger Stromverbrauch aber auch ggfls. weniger Sicherheit bei der Anzeige.

Ich würde (hab ich schon gesagt dass ich da faul bin? :smiling_imp: ), die angehängte Variante zuerst versuchen.

Ich auch.

Jo, haste ja schon vorher geschrieben. Da war ich etwas umnachtet mit meinem ersten Bildchen, aber gemeint haben wir immer schon das gleiche 8)

Habe den oben genannten Schaltplan jetzt mal nachgebaut. Leider funktioniert es nicht.

Ich habe am Oszi jetzt die Spannung gemessen mit der der DZM anfängt zu arbeiten. Sprich die Amplitude am Generator so weit zurückgedreht bis der DZM nicht mehr ging, dann wieder auf bis der DZM anfängt wieder zu funktionieren.

Dies habe ich dann gemessen, und ein Bild davon gemacht.

1,6 Kästchen bei 2V/div und 1 x Tastkopf

Das wären dann 3,2V oder? Also müsste ich am Arduino Pin eine Spannung von über 3,2V haben damit es funktioniert.

Mache ich irgendwas grundlegendes falsch?

Check mal' ob der DZM am Generator auch mit 5V rennt. Wenn ja geht's auch mit dem arduino direkt.

Habe die Amplitude so weit hochgedreht, bis ich 2,5 Kästchen hatte. Sollten dann ja 5V sein bei 2V/div
Damit rennt der DZM

Dann geht's auch direkt am arduino.
Zeig den Sketch und wie Du verkabelt hast. Massen verbunden?

Mein momentaner Aufbau sind folgend im Bild auf.

Pin 3 am Arduino geht auf die Basis eine npn Transistors, der widerrum Masse ein den Tachoeingang setzt.
Das funktioniert auch soweit richtig.

Pin 2 am Arduino geht auf anraten direkt auf den DZM Eingang drauf.

/*
  SimPC RCC - Basic V2
  Alle Einstellungen werden vom Programm RCC gemacht.

  All settings are made by the RCC program.

  used pre PIN Values:
  2 = prpm       RPM Tacho
  3 = pkmh       SPEED Tacho
  5 = pful       FUEL Tacho
  6 = ptmp       TEMP Tacho
  7 =  Button[0]  - disabled
  8 =  Button[1]  - disabled
  9 =  Button[2]  - disabled
  14 = Button[3] - disabled
  15 = Button[4] - disabled
  A0 = poti1     - disabled
  A1 = poti2     - disabled
*/

#include <EEPROM.h>
#include <Tone.h>

String ver = "2.0.0.0";
const int nChar = 30;

// DataMaping Values in EEPROM
int maxSpdSim, minSpdTacho, maxSpdTacho;
int maxRpmSim, minRpmTacho, maxRpmTacho;
int maxFuelSim, minFuelTacho, maxFuelTacho;
int maxTempSim, minTempTacho, maxTempTacho;

// Pins Cockpit
int pkmh; // preconfigure to Pin 3
int prpm; // preconfigure to Pin 2
int pful; // preconfigure to Pin 5
int ptmp; // preconfigure to Pin 6

// Pins Analog und Button as Input
int Axis[2];   // disabled
int Button[5]; // preconfigure to Pin 7,8,9,14,15 and disabled
int AxisEnabled; // disabled

//Tone
Tone kmh;
Tone rpm;

//Vars
int ButtonState[5];
int LastButtonState[5] = {LOW, LOW, LOW, LOW, LOW};
long lastDebounceTime[5] = {0, 0, 0, 0, 0};
long debounceDelay = 5;
int reading[5] = {0, 0, 0, 0, 0};
int average[2] = {0, 0};
int oaverage[2] = {0, 0};

String inString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete

String sTmp = "";
String sOut = "";
String spartA[2] = {"x=", "y="} ;
String spartE = "";

void setup() {
  inString.reserve(nChar);
  Serial.begin(38400);

  checkEEPROM();

  readEEPROM();

  pinMode(pful, OUTPUT);
  pinMode(ptmp, OUTPUT);

  // benötigte Pins der Buttons auf Input setzen
  for (int x = 0; x < 5; x++) {
    pinMode(Button[x], INPUT);
  }

  rpm.begin(prpm);
  kmh.begin(pkmh);

  // Vorbelegung auf 50°c
  analogWrite(ptmp, 85);
  // Vorbelegung auf 30 Ltr.
  analogWrite(pful, 95);
}


    //SPEED
    else if (inString.substring(0, 2) == "SS") {
      int vSpeed = inString.substring(2, 5).toInt();
      int Speed = map(vSpeed, 0, maxSpdSim, minSpdTacho, maxSpdTacho);
      if (Speed > maxSpdTacho) {
        Speed = maxSpdTacho;
        kmh.play(Speed);
      }
      else if ((Speed <= maxSpdTacho) && (Speed >= minSpdTacho)) {
        kmh.play(Speed);
      }
      else if (Speed < minSpdTacho) {
        kmh.stop();
      }
    }
    //RPM
    else if (inString.substring(0, 2) == "RR") {
      int vRPM = inString.substring(2, 6).toInt();
      int Rpm = map(vRPM, 0, maxRpmSim, minRpmTacho, maxRpmTacho);
      if (Rpm > maxRpmTacho) {
        Rpm = maxRpmTacho;
      }
      if (Rpm < 25) {
        Rpm = 0;
      }
      rpm.play(Rpm);
    }
    //FUEL
    else if (inString.substring(0, 2) == "FF") {
      int vFUEL = inString.substring(2, 5).toInt();
      int Tankinhalt = map(vFUEL, 0, maxFuelSim, minFuelTacho, maxFuelTacho);

      if (Tankinhalt > maxFuelTacho) {
        Tankinhalt = maxFuelTacho;
      }
      if (Tankinhalt < minFuelTacho) {
        Tankinhalt = minFuelTacho;
      }
      analogWrite(pful, Tankinhalt);
    }
    //TEMP
    else if (inString.substring(0, 2) == "TT") {
      int vTEMP = inString.substring(2, 5).toInt();
      int Temperatur = map(vTEMP, 0, maxTempSim, minTempTacho, maxTempTacho);
      analogWrite(ptmp, Temperatur);
    }
    // Gear
    else if (inString.substring(0, 2) == "GG") {
      // Display your Geardata
    }
    inString = "";
    stringComplete = false;
  }
}


void loop() {
  readdata();
  serialReadEvent();
  writeAxisInput();
  CheckButtonPress();
}


}

Die Basis braucht nen Vorwiderstand!

Und mach nen simplen Sketch für den DZM der einfach nur ein Rechteck raushaut. Dann weisst Du, ob es grundätzlich funktioniert.

Ich habe diesen Sketch geschrieben um den DZM zu testen.
Das mit dem Basiswiderstand teste ich dann heute Abend nach der Arbeit.

Danke.

/******************************************************************
 Created with PROGRAMINO IDE for Arduino - 06.02.2017 02:31:28
 Project     :Rechteckgenerator
 Libraries   :
 Author      :
 Description :Rechteckgenerator mit Serialcominstruments
******************************************************************/

#include <EEPROM.h>


int dzm = 9;    
unsigned long hz = 0;
int addr = 0;
byte value;

void setup() {
Serial.begin(19200);
value = EEPROM.read(addr);
addr = addr + 1;
  if (addr == EEPROM.length()) {
    addr = 0;
  }


}

void loop() {
  
  for (long hz = 0 ; hz <= 65000; hz += 100) {
    
    
    tone(dzm, hz);
    Serial.print(hz);
    Serial.println("Hz");
    Serial.println("");
    SendString(1,hz);
    Serial.println("");
    SendPage(1);
    EEPROM.write(addr, hz);
    addr = addr + 1;
    if (addr == EEPROM.length()) {
    addr = 0;
  }
    delay(50);
  }


  for (long hz = 64000 ; hz >= 0; hz -= 100) {

    tone(dzm, hz);
    Serial.println(hz);
    Serial.println("Hz");
    Serial.println("");
    SendString(1,hz);
    SendPage(2);
    Serial.println("");
    EEPROM.write(addr, hz);
    addr = addr + 1;
  if (addr == EEPROM.length()) {
    addr = 0;
  }
    delay(50);
  }
}



void SendString(byte InstrNo, int MValue) {
  Serial.print('#');
  Serial.print(InstrNo);
  Serial.print('M');
  Serial.print(MValue);
  Serial.print('<');
}

void SendPage(int Page) {
  Serial.print('#');
  Serial.print('S');
  Serial.print('P');
  Serial.print(Page);
  Serial.print('<');
}

Ach Du liebe Güte, wasn das für ein Monsterverhau????

Schieb doch erst mal ein Rechteck raus, ohne dieses ganze überflüssige Drumrum.