Hallo,
ich benötige eure Hilfe bei der Programmierung des Sketches für meinen VDV Drehzahlmesser aus einem Setra S315. Den Drehzahlmesser selbst habe ich mithilfe des IRF520 MOS Driver Moduls und einem 10k Widerstand zwischen dem Signal und dem 24V Netzteil erfolgreich angeschlossen. Als Sketch benutze ich aktuell KOMSI 2.4 von Pulle76 (das möchte ich, wenn möglich so beibehalten)
Beim testen ist mir jedoch aufgefallen, dass der Drehzahlmesser sich nur beim Geschwindigkeitsport des Arduinos mitbewegt und an seinem eigentlichen RPM Port einfach gar nichts passiert. Deshalb gehe ich davon aus, dass es nur am Sketch selbst liegen kann.
Hat jemand da eine Idee wie man das entsprechend umschreiben kann, damit es so funktioniert wie ich das brauche?
Mach einen Compilierbaren - vollständigen Sketch der die beiden Ausgänge ansteuert und lade den hoch. Ein einfacher Testsketch.
Mach einen Schaltplan aus dem wir die Beschaltung von Tachometer und Drehzahlmesser erkennen
Mach Bilder von deinem Aufbau aus dem wir alle Verbindungen deiner Komponenten erkennen
-Verlinke das Datenblatt deines IRF520 MOS Driver Moduls
verlinke alle anderen Forenposts die du zu diesem Thema sonst wo gemacht hast damit wir uns jene Zeit sparen können, die sich andere schon gemacht haben
So und damit funktioniert der Drehzahlmesser am PWM Pin 10 der eigentlich für die Geschwindigkeit gedacht ist. Am eigentlichen RPM Pin (PWM Pin 9) passiert aber absolut nichts und es leuchet am Mosfet Board nicht mal die LED, vertausche ich die beiden Pins ich Sketch verschiebe ich das Problem auch nur um die beiden Pins. Und das ist eigentlich nur das Problem
Also in dem zip sind viele Sachen drin.
Unter anderem auch der Hinweis, das die Software nicht über andere Kanläle verteilt werden darf...
Du hast den lights_and_servo.ino genommen?
Da ist aber kein Pin 8 drin, der benutzt wird.
Also musst Du schon zeigen, wie Dein Sketch aussieht.
Ansonsten ist das nur raten auf niedrigstem Niveau.
Im Übrigen liegen deine Bilder ganz schlecht bei irgendeinem Hoster. Da verschwinden Sie und kein Mensch wird später wissen, was sich dahinter verborgen hat.
Tausch die Links gegen echte Bilder, damit man auch eine Ahnung davon bekommt, was Du da hast.
Und nochwas:
Wenn Du den schon gelesen hast, warum holst Du Dir das selbe Problem rein, wie dort besprochen? Irgend einen Logiclevel Mosfet irgendwo in der Schublade?
Deshalb lade ich ja nicht den Sketch hoch und verlinke nur den Download vom Entwickler direkt
Ne, ich habe den lights_and_non_servo genommen, da ich diesen Sketch jetzt schon seit über einem Jahr benutze mit meinem Tacho und da gabs bisher keine Probleme (dieser ist direkt am PWM Pin 10 angeschlossen und GND ebenfalls direkt am Arduino)
Der sieht aktuell so aus, wie er im Download ist, weil ich alles was nicht funktioniert hat wieder rückgängig gemacht habe
Ich weiß leider nicht wie man hier im Forum sonst die Bilder hochladen kann
Ne, habe leider keinen anderen gerade hier. Aber ich kann mir nicht vorstellen, dass dies das Problem ist, weil dann dürfte der doch gar nicht laufen oder?
Bei den Bildern geht das mit dem Button rechts neben dem </> Symbol.
Es spricht nichts dagegen, den Code weiterzuverwenden, aber ich würde das definitiv anders lösen. Aus den 600 Zeilen kommen effektiv keine 100 raus.
Mir ist nicht klar, warum für Pin 6 bis 8 die PWM auf knapp 32Khz gesetzt wird...
TCCR4B = (TCCR4B & 0xF8) | 0x01 ;
Aber die entscheidene Stelle ist ja:
Wenn auf Pin 10 was geht und auf Pin 9 nicht, dann ist mindest zu debuggen, um zu sehen, was überhaupt ankommt.
Da der Serielle Monitor aktiv ist, also erstmal das value holen:
In beide Funktionen eine Ausgabe rein:
Serial.println(value);
Wenn der da immer gleich ist, dann muss natürlich noch das mapping entsprechend getauscht werden.
Evtl. kommt ja nicht die RPM sondern schon ein geteilter Wert an?
Tatsächlich nicht, denn Pulle76.de ist die Originalseite (Ich habe es nur als Direktdownload verlinkt, weil man sonst nur die Version 2.1 bekommt) Naja ist ja jetzt auch egal,
Das habe ich zumindest so probiert, ich weiß aber nicht wo dann die Ausgabe davon abgespeichert wird. Habe nur vom Server Programm was die Daten empfängt und mit dem Arduino umsetzt nur mal die Servostellwerte die dort beim Empfang stehen, wenn ich in OMSI einen Bus im Leerlauf habe:
Garnicht.
Die wird angezeigt.
in der IDE oben auf WERKZEUGE - SRIELLER MONITOR
Unten rechts da bitte drauf achten, das 115200 ausgewählt ist. Dann den Sketch hochladen und die Daten ausgeben lassen.
Der Wert wird etwas schwanken.
Dann den Pin tauschen und das gleiche Spiel nochmal.
Was für Werte bekommst Du und kannst Du sagen was der Gegenwert (rpm) das ist?
Problem ist hier, das das Server Programm den Zugriff auf den Monitor in der IDE blockiert und ohne das Programm arbeitet der Sketch nicht. Oder sollte ich in dem Monitor in der Zeile was reinschreiben?
Perfekt!
Die haben nämlich noch weitere Serielle Ports.
Wir müssen jetzt auf dem ersten eine Senderoutine und auf dem zweiten eine Empfangsroutine schreiben.
Also auf dem ersten im Setup zusätzlich:
Serial1.begin(115200);
und die Ausgaben in den Funktionen ebenfalls auf Serial1 setzen.
Auf dem zweiten Mega das abgewandelte Beispiel "Multserial":
void setup()
{
Serial.begin(115200);
Serial1.begin(115200);
}
void loop()
{
// read from port 1, send to port 0:
if (Serial1.available())
{
int inByte = Serial1.read();
Serial.write(inByte);
}
}
Jetzt nur noch beide Arduinos verbinden:
GND mit GND und RX1 mit TX / bzw TX1 mit RX
Beide Arduinos jeweils anstecken.
Auf den erstzen seinen Code - dann auf den zweiten den Code, dann den SerMon aufmachen.
Ein paar werte durchlaufen lassen.
Was kommt bei raus?
OK, habe das Multiserial aktiviert bekommen und bin jetzt so vorgegangen:
Das 1. Arduino (COM17) mit KOMSI drauf hat von mir im Sketch bei void Setup unter Serial.begin(115200) den Eintrag Serial1.begin(115200) bekommen und am RX Anschluss eine Verbindung zum 2. am TX1 Anschluss. TX habe ich am 2. bei RX1 angeschlossen und GND an GND.
Das 2. Arduino (COM18) habe ich mit copy & paste deinen Sketch von oben verpasst.
Nun habe ich versucht die Werte auszulesen aber es werden einfach keine eingetragen..
(Ich habe das 1. Arduino (COM17) ganz normal mit dem Server Programm verbunden und OMSI gestartet und vom 2. (COM18) den SerMon geöffnet)
Die Frage ist habe ich das jetzt falsch verkabelt oder habe ich das falsch?:
Ach... ich hab mich vertan.
Der Mega mit KOMSI kommuniziert über RX/TX mit dem PC. (COM 17)
Zur Übertragung nimmst Du Serial1
Auf dem Empfänger kommuniziert der auch über RX/TX mit dem PC (COM18)
Also Verbindungen: GND - GND; RX1 - TX1; TX1 - RX1
Dann den Seriellen Monitor auf COM18 öffnen.