Eigenbauzentrale mit vorgefertigten Microcontrollerboards

Post Reply
marcelb
Posts: 58
Joined: 04.02.2009, 14:57

Eigenbauzentrale mit vorgefertigten Microcontrollerboards

Post by 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.

Hermann
Posts: 70
Joined: 09.11.2008, 14:48
Location: Bonn

Arduino SRCPServer fehler biem Compilieren

Post by 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'

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

marcelb
Posts: 58
Joined: 04.02.2009, 14:57

Arduino SRCPServer fehler biem Compilieren

Post by 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: 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

Hermann
Posts: 70
Joined: 09.11.2008, 14:48
Location: Bonn

SRCP Servosteuerung

Post by 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

RainerK
Moderator
Posts: 3956
Joined: 29.04.2009, 09:31
Location: Sprockhövel (zwischen BO u. W)
Contact:

Post by 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

Hermann
Posts: 70
Joined: 09.11.2008, 14:48
Location: Bonn

Post by 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
Attachments
SRCPServo168.sch.pdf
(13.58 KiB) Downloaded 24 times

RainerK
Moderator
Posts: 3956
Joined: 29.04.2009, 09:31
Location: Sprockhövel (zwischen BO u. W)
Contact:

Post by 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

marcelb
Posts: 58
Joined: 04.02.2009, 14:57

Post by 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

papabaer
Posts: 2
Joined: 17.02.2018, 13:11
Location: 67472 Esthal

Re: Eigenbauzentrale mit vorgefertigten Microcontrollerboard

Post by 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

vikr
Posts: 418
Joined: 20.05.2012, 09:53

Re: Eigenbauzentrale mit vorgefertigten Microcontrollerboard

Post by 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

Post Reply

Return to “Zentralen (DE)”