Ausgänge

Da immer mehr Zusi User von einem 1:1 Führerstand mit träumen, soll es zumindest an Datenaustausch nicht hapern.
Nachricht
Autor
Benutzeravatar
nonesense
Beiträge: 507
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgänge

#61 Beitrag von nonesense »

Ein erster Ansatz:
Bild

Benutzeravatar
Achim Adams
Beiträge: 1239
Registriert: 05.06.2004 23:06:03

Re: Ausgänge

#62 Beitrag von Achim Adams »

So stell ich mir einen Fahrpultbau vor:

zunächst die Elektronik und die programmiertechnische Anpassung herstellen, anschließend ein Gehäuse drumrum bauen!

Gratuliere!

funkheld
Beiträge: 305
Registriert: 15.09.2010 11:52:44

Re: Ausgänge

#63 Beitrag von funkheld »

Hallo, grüss dich.
Ich habe jetzt das VS-Express 10 installiert.
Kannst du bitte mal deine Demo von VS zur Vebindungsaufnahme mit dem Board hier mal reinstellen?

Danke.

Gruss

Benutzeravatar
nonesense
Beiträge: 507
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgänge

#64 Beitrag von nonesense »

Hallo,

Von Firmata bin ich wieder weg. Das hatte zwar wie man oben sieht sehr gut funktioniert, Probleme machen aber Spezialitäten wie Schrittmotoren, I²C oder Servos.
Also habe ich kurzerhand mein eigenes Protokoll geschrieben. Den Part für den Arduino präsentiere ich jetzt.

Code: Alles auswählen

#include <Servo.h>         // Damit wir auch Servos ansteuern können.
Servo servoHLL;            // So heißt der Servo für die Hauptluftleitung
Servo servoHLB;            // So heißt der Servo für den Hauptluftbehälter
Servo servoBZD;            // So heißt der Servo für den Bremszylinderdruck
byte  inputByte[2];        // [0] gibt das Ziel, [1] den Wert an
void setup()
{
  servoHLL.attach(22);    // Den 3 Servos wird der Pin zugewiesen, an dem sie angeschlossen sind
  //servoHLB.attach(x);
  //servoBZD.attach(x);
 
  Serial.begin(9600);      // Der serial port soll mit 9600 bps starten
  pinMode(4, OUTPUT);      // LM "Sifa" soll an Pin 4
  pinMode(5, OUTPUT);      // LM "Türen" soll an Pin 5
  pinMode(51, OUTPUT);      // LM "Bef. 40" soll an Pin 7
  pinMode(39, OUTPUT);     // LM "500Hz" soll an Pin 11
  pinMode(29, OUTPUT);     // LM "1000Hz" soll an Pin 11
  pinMode(31, OUTPUT);     // LM "O" soll an Pin 12
  pinMode(41, OUTPUT);     // LM "M" soll an Pin 13
  pinMode(53, OUTPUT);     // LM "U" soll an Pin 13
}

void loop()
{
  if (inputByte[0]=='w'){                    // Wenn wir an erster Stelle ein "w" empfangen, möchte der PC wissen, ob wir wirklich
    Serial.println("I am a drivers desk");   // der Arduino  für das Fahrpult sind. Das bestätigen wir mit "I am a drivers desk""
    if (inputByte[1]=='w'){                  // Wenn an zweiter Stelle ebenfalls ein "w" kommt, sollen wir akustisch quitieren
      tone(5, 1000, 100);
      delay(200);
      tone(5, 1000, 100);
    }
  }
  if (inputByte[0] == 'V'){                  // "V" für Geschwindigkeit
    analogWrite(6,inputByte[1]);             // Wir geben den Wert von 0 - 255 PWM an Pin 6 aus
  }
  if (inputByte[0] == 'P'){                  // "P" für PZB, stellvertretend für alle Leuchtmelder
    LmPZB(inputByte[1]);                     // Wir geben das Byte an eine Funktion, die die 8 Bits je einem Digitalausgang zuordnet
  }
  if (inputByte[0] == 'L'){                  // "L" für Hauptluftleitung
    servoHLL.write(inputByte[1]);            // Wir weisen dem entsprechenden Servoobjekt seinen Wert zu
  }
  if (inputByte[0] == 'H'){                  // "H" für Hauptluftbehälter
    servoHLB.write(inputByte[1]);            // Wir weisen dem entsprechenden Servoobjekt seinen Wert zu
  }
  if (inputByte[0] == 'B'){                  // "B" für Bremszylinder
    servoBZD.write(inputByte[1]);            // Wir weisen dem entsprechenden Servoobjekt seinen Wert zu
  }
}

void serialEvent() {                        // Es sind uns Daten vom PC zugespielt worden
  for (byte i=0; i<2;i++){
    inputByte[i]=Serial.read();             // Wir weisen inputByte[0] Das Ziel und inputByte[1] seinen Wert zu
    delay(3);                               // Da es seine Zeit braucht, bis der PC alles sendet, warten wir zwischen den Bytes etwas ab
  }
  Serial.flush();                           // Falls aus irgend einem Grund nun noch Datan im Lesepuffer sind, löschen wir diese jetzt
}

void LmPZB(byte LM){
  if ((LM&1) > 0){digitalWrite(53, HIGH);}//U
  if ((LM&1) == 0){digitalWrite(53, LOW);}
  if ((LM&1) > 0){digitalWrite(41, HIGH);}//M
  if ((LM&1) == 0){digitalWrite(41, LOW);}
  if ((LM&2) > 0){digitalWrite(31, HIGH);}//O
  if ((LM&2) == 0){digitalWrite(31, LOW);}
  if ((LM&4) > 0){digitalWrite(51, HIGH);}//Bef
  if ((LM&4) == 0){digitalWrite(51, LOW);}
  if ((LM&16) > 0){digitalWrite(39, HIGH);}//500
  if ((LM&16) == 0){digitalWrite(39, LOW);}
  if ((LM&32) > 0){digitalWrite(29, HIGH);}//1000
  if ((LM&32) == 0){digitalWrite(29, LOW);}
  if ((LM&64) > 0){digitalWrite(4, HIGH);}//Sifa
  if ((LM&64) == 0){digitalWrite(4, LOW);}
  if ((LM&128) > 0){digitalWrite(5, HIGH);}//nicht benutzt
  if ((LM&128) == 0){digitalWrite(5, LOW);}
}
Hier das VB.Net-Projekt
Vielen Dank an Andreas Karg für die Vorarbeit auf TCP-Seite und F. Schn. für die Übersetzung nach VB-Syntax.
So sollte das dann aussehen:
Bild

Gruß
Jens
Zuletzt geändert von nonesense am 13.11.2012 23:13:51, insgesamt 6-mal geändert.

funkheld
Beiträge: 305
Registriert: 15.09.2010 11:52:44

Re: Ausgänge

#65 Beitrag von funkheld »

...Zusi-TCP-COM-Arduino.zip...
Also , die Seite kommt mir nicht so Vertrauensvoll vor, ... mit einloggen..anmelden und...

Danke.

Gruss

Benutzeravatar
nonesense
Beiträge: 507
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgänge

#66 Beitrag von nonesense »

a) Scheint wohl neu zu sein, dass man sich auch für das herunterladen anmelden muss.

b) Ist 4Shared dennoch Vertrauenswürdig

c) Kann ich es dir auch per Mail schicken

Gruß
Jens
Zuletzt geändert von nonesense am 16.04.2012 14:45:49, insgesamt 1-mal geändert.

Benutzeravatar
Michael Franz
Beiträge: 683
Registriert: 21.11.2001 16:36:15
Wohnort: Rennerod

Re: Ausgänge

#67 Beitrag von Michael Franz »

Ich kann es bei mir hosten wenn gewünscht.
Es grüßt aus dem schönen Westerwald

Michael

Benutzeravatar
SgtMcExodus
Beiträge: 220
Registriert: 27.03.2012 17:56:48
Aktuelle Projekte: Studium
Wohnort: Berlin

Re: Ausgänge

#68 Beitrag von SgtMcExodus »

Vielleicht sollte noch darauf hingewiesen werden, dass die .exe im Ordner \ZuSiTCPDemoAPPVBA\bin\Release liegt, da nicht unbedingt jeder mit VB vertraut ist ;D
Zuletzt geändert von SgtMcExodus am 16.04.2012 21:26:58, insgesamt 1-mal geändert.

Benutzeravatar
nonesense
Beiträge: 507
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgänge

#69 Beitrag von nonesense »

Jemand, der nicht mit Vertraut ist, muss sich vertraut machen.
Schließlich muss man sich das Programm für seiner Hardware anpassen.

Und Außerdem ist es die \ZusiTCPDemoAppVBA\bin\DebugZusiTcpNachArduino.exe

Gruß
Jens
Zuletzt geändert von nonesense am 16.04.2012 20:22:46, insgesamt 1-mal geändert.

Benutzeravatar
Michael Franz
Beiträge: 683
Registriert: 21.11.2001 16:36:15
Wohnort: Rennerod

Re: Ausgänge

#70 Beitrag von Michael Franz »

Hier kann die Datei ohne Anmeldung heruntergeladen werden.
Zuletzt geändert von Michael Franz am 13.11.2012 16:29:40, insgesamt 2-mal geändert.
Es grüßt aus dem schönen Westerwald

Michael

Benutzeravatar
nonesense
Beiträge: 507
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgänge

#71 Beitrag von nonesense »

Und funkheld? Funktioniert es bei dir?

Gruß
Jens

Benutzeravatar
SgtMcExodus
Beiträge: 220
Registriert: 27.03.2012 17:56:48
Aktuelle Projekte: Studium
Wohnort: Berlin

Re: Ausgänge

#72 Beitrag von SgtMcExodus »

@nonesense Der Tacho ist aber noch nicht kalibriert oder?

Benutzeravatar
nonesense
Beiträge: 507
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgänge

#73 Beitrag von nonesense »

Nur Softwaretechnisch. Das hat den Nachteil, dass nicht alle 255 Stufen genutzt werden können.
Den zu kalibrieren ist aber kein Akt. Dafür braucht man nur ein Potentiometer zusätzlich.

Gruß
Jens

Benutzeravatar
Oliver Lamm
Beiträge: 3102
Registriert: 04.01.2002 15:02:17
Aktuelle Projekte: Aachen - Neuss für Zusi3
Wohnort: Essen
Kontaktdaten:

Re: Ausgänge

#74 Beitrag von Oliver Lamm »

Nur Softwaretechnisch. Das hat den Nachteil, dass nicht alle 255 Stufen genutzt werden können.
Den zu kalibrieren ist aber kein Akt. Dafür braucht man nur ein Potentiometer zusätzlich.
Hi Jens,

den Deuta Tacho den ich hier habe musste ich mittels einer Stützkurve kalibrieren. Die Geschwindigkeit ist zumidest bei den drei mir vorliegenden Modellen nicht linear zur anliegenden Spannung. Ich habe das 15 Stützpunkte eingefügt und dazwischen mit Geraden interpoliert. Das geht super.

Oli
Oliver Lamm
mail(AT)oliverlamm(DOT)de

Benutzeravatar
nonesense
Beiträge: 507
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgänge

#75 Beitrag von nonesense »

Oliver Lamm hat geschrieben: Die Geschwindigkeit ist zumidest bei den drei mir vorliegenden Modellen nicht linear zur anliegenden Spannung.
Ja, das ist bei meinen auch auch so. Ich bezog mich jetzt auch nur auf den Vollausschlag bei maximaler Spannung (5V).

Die nicht lineare Kennlinie rührt daher, dass die alten Tachos in echt von einem Wechselspannungsgenerator am Rad angesteuert werden. Dabei ändert sich nicht nur die Spannung, sondern auch die Frequenz, was für Drehspulmesswerke ungünstig ist.

Gruß
Jens

funkheld
Beiträge: 305
Registriert: 15.09.2010 11:52:44

Re: Ausgänge

#76 Beitrag von funkheld »

Melde mich verspätet.

Jup danke, funktioniert jetzt wunderbar.

Gruss

Benutzeravatar
nonesense
Beiträge: 507
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgänge

#77 Beitrag von nonesense »

Gab's sowas schon?...
Video

Gruß
Jens

Ludmilla132
Beiträge: 10
Registriert: 13.02.2011 13:09:17
Wohnort: Bad Blankenburg

Re: Ausgänge

#78 Beitrag von Ludmilla132 »

hab eben mein Arduino Mega2560 bekommen....

Verbindung mit TCP-Server1.4 ist möglich, aber eine Verbindung zum Arduino nicht.
Da kommt eine Fehlermeldung mit dem Inhalt:

An dem Port scheint kein Gerät angeschlossen zu sein!

Edit: Jetzt kommt ne andere Fehlermeldung:

An dem Port scheint das falsche Gerät angeschlossen zu sein!


Ist aber doch dran, ich seh es doch....USB-Kabel geht vom Arduino zum USB-Anschluss von meinen Läppi (Vista) bzw.
zum PC (WinXP)...

Gerätemanager zeigt mir als Anschluss Com12 an. ZusiTcpNachArduino.exe kann ich es auch auswählen. und dann kommt die Fehlermeldung...

Kann mir jemand verraten was ich da wieder falsch mache?

Mfg und Danke im Voraus

Frank
Zuletzt geändert von Ludmilla132 am 25.06.2012 14:43:22, insgesamt 1-mal geändert.

Benutzeravatar
nonesense
Beiträge: 507
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Ausgänge

#79 Beitrag von nonesense »

Hast du auch die Firmware in den Arduino hochgeladen?
...ich meine den langen C-Code oben.

Gruß
Jens

Ludmilla132
Beiträge: 10
Registriert: 13.02.2011 13:09:17
Wohnort: Bad Blankenburg

Re: Ausgänge

#80 Beitrag von Ludmilla132 »

ja hab ich....bin vorhin weg gegangen und hab den PC angelassen, komm wieder, probier weiter und aufeinmal geht es......



frag mich ja nicht....

aufjedenfall funktioniert es...

Antworten