Eigenbauzentrale mit vorgefertigten Microcontrollerboards

Eigenbauzentrale mit vorgefertigten Microcontrollerboards

Postby marcelb » 01.03.2010, 20:45

Hallo zusammen,

Nach x nachfragen, bitten an Hersteller von Digital Zentralen, habe ich mich entschlossen ein Selbstbauprojekt zu starten.

Da ich mich nicht als Elektroniker bezeichnen würde, viel meine Wahl auf die Arduino Plattform welche eine Reihe von vorgefertigten Microcontrollerboards zur Verfügung stellt.

Das Ergebnis und eine Beschreibung des System findet Ihr hier:
- http://developer.berlios.de/projects/microsrcp/

Gruss
Marcel
Last edited by marcelb on 09.06.2013, 20:07, edited 1 time in total.
marcelb
 

Arduino SRCPServer fehler biem Compilieren

Postby Hermann » 21.03.2010, 18:12

Hallo,

ein schönes Projekt. Mich wundert das noch keiner etwas dazu geschrieben hat.
Ich habe mir die Software heruntergeladen und installiert.
Mit meinem Pollinboard, einem Bootloader und einem ATMega168, konnte ich Eingänge einlesen, Ausgänge ansteuern und Servos über die Tastatur von einer Endstellung in die andere Endstellung Steuern. Als ich aber versucht habe den vorhandenen Code vom SRCPServer zu Compilieren, Einstellungen ATMega328 kamen Fehlermeldungen:

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp: In member function 'void shell::SRCPShell::run()':

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:56: error: 'endl' was not declared in this scope

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:66: error: no match for 'operator<<' in 'Serial << (char)c'

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:72: error: no match for 'operator<<' in 'Serial << (char)c'

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp: In member function 'void shell::SRCPShell::dispatch(char*)':

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:100: error: no match for 'operator<<' in 'Serial << "I2C addr:id: "'

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:102: error: 'endl' was not declared in this scope

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:109: error: no match for 'operator<<' in 'Serial << "FB "'

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:109: error: 'endl' was not declared in this scope

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:111: error: no match for 'operator<<' in 'Serial << "GA "'

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:111: error: 'endl' was not declared in this scope

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:113: error: no match for 'operator<<' in 'Serial << "GL "'

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:113: error: 'endl' was not declared in this scope

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:125: error: no match for 'operator<<' in 'Serial << "EEPROM pos: "'

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:128: error: no match for 'operator<<' in 'Serial << (int)device.srcp::device_config_t::args[i]'

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:129: error: 'endl' was not declared in this scope

C:\Dokumente und Einstellungen\Hermann-Josef\Eigene Dateien\Arduino\libraries\shell\SRCPShell.cpp:138: error: no match for 'operator<<' in 'Serial << rc'


Gibt es nicht die Möglichkeit nur mit der Seriellen Komunikation des SRCPServers?

Gruß
Hermann-Josef

Software:
arduino-0018
microSRCP-4-arduino0-91
Ponyprog
Hardware:
Pollinboard mit Com3 an ISP und Com4 an Serieller Schittstelle CPU
ATMega168
Rocrail Banana Pi, Rocnetnode, OpenDCC-Z1-USB, OpenDCC-Decoder, Servo-Decoder, Rocgui WINXP-SP3 Intel D 2,8
Hermann
 

Arduino SRCPServer fehler biem Compilieren

Postby marcelb » 21.03.2010, 22:23

Hallo Hermann-Josef,

Es fehlt die Streaming.h Datei aus patch Verzeichnis. Siehe auch die ReadMe.txt Datei im Hauptverzeichnis.

Code: Select all
-------Readme.txt -----------------
patch/WMemory.cpp in Verzeichnis hardware/cores/arduino der
Arduino IDE kopieren.

Optional: nur um Debugging einzuschalten, patch/Streaming.h
wie oben kopieren und in WProgram.h hinter #include "HardwareSerial.h"
die Zeile #include "Streaming.h einfuegen.


Serial.print war mir zu primitiv, mit dem Import von Streaming.h kann

Code: Select all
 Serial << .... << endl;


wie in C++ verwendet werden.

Serielle Kommunikation ist bei SRCP nicht vorgesehen, nur Ethernet. Heisst RocRail kann kein SRCP via Serieller Schnittstelle, deshalb ist es auch nicht vorhanden.

Wenn dies einmal funktionieren würde, müssten zumindestens die SRCP Befehle (ohne Rückmeldung) funktionieren.

Meine Erfahrungen mit Serieller Kommunikation und "gekauften" Zentralen sind jedoch alle schlecht (verschlucken Rückmelder), deshalb war es ein leichtes für mich darauf verzichten zu können.

Als Ethernet Shield habe ich folgende Boards getestet:
    http://www.nkcelectronics.com/arduino-ethernet-shield.html
    http://www.nkcelectronics.com/nkc-ethernet-shield-for-arduino-mega--duemilanove--diecimila-diy-kit.html

Den zweiten kann ich nur empfehlen, der funktioniert auch mit dem Arduino Mega.

Von Pollin habe ich mir das AVR-NET-IO Board angeschaut, dort müsste jedoch zuerst die Ansteuerung des Ethernet-Chip programmiert werden (Freiwillige? :) )


Gruss
Marcel
marcelb
 

SRCP Servosteuerung

Postby Hermann » 08.07.2010, 22:34

Hallo,

nachdem ich den SRCP-Server am laufen habe, habe ich mich an die Servosteuerung gemacht. Ein ATMega168 für 4 Servos und 8 Rückmeldungen.
Es Funktioniert alles, nur möchte ich das die Servos langsamer laufen, gibt es eine CV füe diese Funktion?

Gruß
Hermann
Rocrail Banana Pi, Rocnetnode, OpenDCC-Z1-USB, OpenDCC-Decoder, Servo-Decoder, Rocgui WINXP-SP3 Intel D 2,8
Hermann
 

Postby RainerK » 09.07.2010, 07:13

Hallo Hermann,

eine CV für die Geschwindigkeit von Servos ist nicht genormt. :!:
Bei den Servo-Decodern, die ich bisher gesehen habe und die mit CV's programmiert werden,
kocht jeder Entwickler/Hersteller sein eigenes Süppchen. :roll:

Ich erinnere, dass ich schon mal "Servo-CV's" zwischen ca. 40 - 60 und 130 - 140 gesehen habe. :idea:
Aber helfen tut Dir das auch nicht wirklich. :cry:
Schau mal bei mehreren Herstellern und nimm dann, was Dir gefällt :coding:

EDIT:
So hat die NMRA die CV's für DCC-Acessory-Decoder genormt:
http://www.nmra.org/standards/DCC/stand ... 0Variables

CV33 - CV81 kannst Du als "Manufacturer" nach Belieben verwenden.
48 CV's sollten für die Parameter von 4 - 8 Servos ausreichen.

Wenn jeder Servo in dem Decoder eine eigene Adresse erhält, reicht es sogar,
um jedem Servo per CV's eine eigene "Kurve" zu programmieren.

Andererseits musst Du ja die NMRA-Norm nur soweit einhalten, dass der Decoder die DCC-Daten lesen kann.

Es grüßt RainerK
RainerK
 

Postby Hermann » 09.07.2010, 20:18

Hallo RainerK

Die Ansteuerung der Servos ist kein DCC Decoder.
Es ist ein Prozessor mit eigenem Programm, der über den I2C-Bus mit dem SRCP-Server verbunden ist. Ich habe mich für diese Variant entschieden weil der Aufbau der Schaltung auf einer Lochrasterplatine möglich ist und nur wenige Bauteile benötigt.
Zusätzlich zu den 4 Servoausgängen gibt es noch 8 Digitaleingänge um z.b. die Stellung der Servos zu erfassen.

Gruß
Hermann
You do not have the required permissions to view the files attached to this post.
Rocrail Banana Pi, Rocnetnode, OpenDCC-Z1-USB, OpenDCC-Decoder, Servo-Decoder, Rocgui WINXP-SP3 Intel D 2,8
Hermann
 

Postby RainerK » 09.07.2010, 21:28

Hallo Hermann,

mit einer solchen proprietären Lösung hat sich IMHO allerdings die Frage nach einer CV erledigt.

Es grüßt RainerK
RainerK
 

Postby marcelb » 09.06.2013, 20:05

Hallo zusammen,

habe das Projekt überarbeitet, die wichtigsten Links sind:
* https://github.com/mc-b/microSRCP - Sourcen (oben hat es einen ZIP Download Button)
* https://github.com/mc-b/microSRCP/wiki - Dokumentation

Bitte beachtet auch die Hinweise im Wiki.

Gruss
Marcel
marcelb
 

Re: Eigenbauzentrale mit vorgefertigten Microcontrollerboard

Postby papabaer » 17.02.2018, 13:42

Hallo und guten Tag an Alle,

bin durch Zufall auf das Projekt microSRCP gestoßen. Und möchte es gerne zur Steuerung von Märklin Magnetartikeln, wie Weichen und Signalen mittels Rocrail verwenden.

Habe hier im Forum gelesen, dass "Tom" dies schon realisiert hat.

Bin leider nicht der extreme Programmierer und bräuchte Hilfe bei der Anpassung der Libraries für die Signal und Weichenansteuerung, da am Schaltausgang das Signal nur als Impuls für max. 250ms anstehen darf, da ansonsten die Spulen der Antriebe durchbrennen können.

In Rocrail kann man die Schaltzeit für Weichen und Ausgänge einstellen, aber wie bekomme ich die auf meinen Arduinoausgang, hier bleiben dieAusgänge dauerhaft angesteuert.

Wäre für jede Hilfe dankbar!!!

Freundliche Grüße
Papabaer
papabaer
 

Re: Eigenbauzentrale mit vorgefertigten Microcontrollerboard

Postby vikr » 24.02.2018, 20:32

Hallo,
papabaer wrote:In Rocrail kann man die Schaltzeit für Weichen und Ausgänge einstellen, aber wie bekomme ich die auf meinen Arduinoausgang, hier bleiben dieAusgänge dauerhaft angesteuert.

Hhm, willst Du jeden Antrieb direkt mit einem Relais am Arduino ansteuern oder willst Du die Decoder Deiner Weichen und Signale ansteuern?

Im Gegensatz zu den Triebfahrzeugen, bei denen über das Gleissignal sowohl die Energie als auch die Steuerinformation transportiert wird, kannst Du bei dem Zubehör wählen, ob Du die Energie getrennt von der Steuerinformation zum Antrieb bzw. Decoder senden willst.
Der zur Weiche oder zum Signal gehörende Decoder schaltet den Strom auf den Antrieb für die Zeit durch die in Rocrail eingestellt ist (oder bei etlichen Decodern im Decoder selbst eingestellt werden kann).
Der Leistungsausgang des Arduinos selbst (meist einem zusätzlich angeschlossenem sogenanntem Motorshield als H-Brücke mit eigenem Netzteil) muss dauerhaft Digital-Betriebstrom liefern, solange bei Rocrail der "Fahrstrom" eingeschaltet ist (und natürlich kein Kurzschlussschalter anspricht).

MfG

vik
vikr
 


Return to Zentralen (DE)