gelöst - Rückmelder für RS-Bus mit ARDUINO

#1 von chrisabi , 24.03.2022 17:29

Hallo liebe ARDUINO Fans,

Ich habe mich an einen Nachbau eines Rückmelders über LENZ RS-Bus gewagt. Basis des Nachbaus sind Veröffentlichungen unter github. Das Projekt läuft auf einem ARDUINO nano. Die Schaltung meiner Baugruppe ist angehangen.

Eigentlich klappt alles auch hervorragend, aber ich habe ein für mich momentan unlösbares Phänomen. Solange ich die Baugruppe mit der Spannungsversorgung über eine Rechner USB-Schnittstelle betreibe, läuft die Kopplung der Baugruppen an die Zentrale perfekt an.( natürlich erfolgt in diesem Fall keine Versorgung über die baugruppeneigene Spannungsversorgung) . Betreibe ich die ganze Baugruppe an der vorgesehenen Spannungsquelle, kommt keine Kopplung zustande.

Ich habe schon verschiedene Spannungsquellen, vom Wechselspannungstrafo über Schaltnetzteil bis zur gemeinsamen Versorgung mit der Zentrale versucht, ohne Erfolg. Bemerkt habe ich allerdings, dass es eine Verbindung über die Masse der beteiligten Geräte geben muss. Beim gemeinsamen Spannungsanschluss an die Zentrale reicht schon ein Pol, über Spannung am Arduino nachzuweisen.

Zur Hardware noch ein Kommentar. Die Versorgung des Arduino erfolgt über den VCC-Pin, da ein Spannungsregler L7805 vorgeschaltet ist. Gegen Masse messe ich VCC mit 4,9V, was für einen sicheren Betrieb ausreicht.

Ich hoffe, dass aus den Reihen der Arduino Spezialisten und Hardware-Gurus mir jemand einen Tipp zur Ursache geben kann.


Viele Grüße

Christian

Dateianlage:
Sie haben nicht die nötigen Rechte, um die angehängten Dateien zu sehen

chrisabi  
chrisabi
Regionalbahn (RB)
Beiträge: 28
Registriert am: 11.09.2017
Spurweite N
Stromart Digital

zuletzt bearbeitet 11.04.2022 | Top

RE: Rückmelder für RS-Bus mit ARDUINO

#2 von volkerS , 24.03.2022 19:31

Hallo Christian,
die Spannungsquelle für deinen RM darf keine Verbindung mit anderen Baugruppen haben.
Der RS-Bus zur Zentrale muss komplett isoliert sein, eigentlich durch die beiden Optos gegeben.
Wo hast du die Spannungsversorgung am Arduino angeschlossen? Definitionsgemäß gibt es nur VIN und +5V.
Ein VCC gibt es nicht.
Volker


chrisabi hat sich bedankt!
volkerS  
volkerS
ICE-Sprinter
Beiträge: 5.048
Registriert am: 14.10.2014


RE: Rückmelder für RS-Bus mit ARDUINO

#3 von chrisabi , 24.03.2022 19:54

Hallo Volker,

ja, RS ist über die Optokoppler vom Rest getrennt.
+5V = VCC. VIN ist ja nur für Spannungen größer 5V und kleiner 9V DC. Ich habe aber einen L7805 als Spannungsregler eingesetzt. Dieser regelt die Spannung auf etwas mehr als 4,9V


Viele Grüße

Christian


chrisabi  
chrisabi
Regionalbahn (RB)
Beiträge: 28
Registriert am: 11.09.2017
Spurweite N
Stromart Digital

zuletzt bearbeitet 24.03.2022 | Top

RE: Rückmelder für RS-Bus mit ARDUINO

#4 von apras , 24.03.2022 21:38

Hallo Christian

Deine Beschreibung / Schaltung ist mir nicht ganz klar. Einerseits schreibst Du das Du Vin (Pin 15) benutzt für die Stromversorgung der Arduino, aber in deiner Schaltung ist 5V (Pin 12) am 7805 angeschlossen.

Normalerweise kriegt der Arduino Spannung entweder über den USB Eingang (5V) oder den Vin Pin (Pin 15). Der Arduino 5V Pin (Pin 12) ist ein SpannungsAUSGANG. Der Vin Pin soll gespeist werden mit mindestens 7V (weil der Arduino schon selber ein 7805 ähnlicher Komponent hat).

Der Arduino 5V Pin (Pin 12) soll also NICHT mit dem 7805 verbunden sein, aber mit den 5V Eingang der RS-Bus Schaltung.

Natürlich soll GND der Arduino mit GND der RS-Bus Schaltung verbunden sein.

Ich hoffe dies hilft dir weiter.

Grüsse,
Aiko


Grenzbahnhof Gibtsnicht: 12 Meter lang, Weinert Mein Gleis, TC10 und Loklift
Loklift im Eigenbau


chrisabi hat sich bedankt!
 
apras
InterRegio (IR)
Beiträge: 113
Registriert am: 17.11.2016
Ort: Enschede, Niederlande
Gleise Rocoline, Weinert Mein Gleis, Tillig Elite
Spurweite H0
Steuerung Traincontroller, Lenz
Stromart DC, Digital


RE: Rückmelder für RS-Bus mit ARDUINO

#5 von moppe , 24.03.2022 23:24

Zitat von apras im Beitrag #4

Normalerweise kriegt der Arduino Spannung entweder über den USB Eingang (5V) oder den Vin Pin (Pin 15). Der Arduino 5V Pin (Pin 12) ist ein SpannungsAUSGANG.


Sicher?
https://store.arduino.cc/products/arduino-nano

FAQs

Power

The Arduino Nano can be powered via the Mini-B USB connection, 6-20V unregulated external power supply (pin 30), or 5V regulated external power supply (pin 27). The power source is automatically selected to the highest voltage source.


Klaus


"Meine" Modellbahn:http://www.modelbaneeuropa.dk
Dänisches Bahnforum: http://www.baneforum.dk
PIKO C4 "Horror Gallery": http://moppe.dk/PIKOC4.html


 
moppe
Trans Europ Express (TEE)
Beiträge: 7.544
Registriert am: 07.08.2011
Homepage: Link
Ort: Norddeusche halbinsel
Gleise Roco, PECO, Märklin/Trix, PIKO,
Spurweite H0, H0e, N, Z
Steuerung Z21, Lenz, MpC Gahler+Ringsmeier, Games on Track/Faller
Stromart AC, DC, Digital, Analog


RE: Rückmelder für RS-Bus mit ARDUINO

#6 von apras , 24.03.2022 23:37

Zitat von moppe im Beitrag #5
Zitat von apras im Beitrag #4

Normalerweise kriegt der Arduino Spannung entweder über den USB Eingang (5V) oder den Vin Pin (Pin 15). Der Arduino 5V Pin (Pin 12) ist ein SpannungsAUSGANG.


Sicher?


Nein, nicht 100%.
Ich lese verschiedenes hierüber, abhängig von welche Nano man hat (Original, China Clone).
Aber immerhin, 5V am Ausgang einer Schaltregler ein zu speisen würde ich lieber nicht machen.

Mein Vorschlag wäre es Schrittweise zu testen. Wenn die Schaltung funktioniert wenn der Arduino und RS-Bus Hardware ūber USB vom Computer gespeist werden, versuche dann als nächster Schritt stat Computer ein 5V USB powersupply am USB Port an zu schließen.

Was passiert dan?
Groet, Aiko


Grenzbahnhof Gibtsnicht: 12 Meter lang, Weinert Mein Gleis, TC10 und Loklift
Loklift im Eigenbau


 
apras
InterRegio (IR)
Beiträge: 113
Registriert am: 17.11.2016
Ort: Enschede, Niederlande
Gleise Rocoline, Weinert Mein Gleis, Tillig Elite
Spurweite H0
Steuerung Traincontroller, Lenz
Stromart DC, Digital


RE: Rückmelder für RS-Bus mit ARDUINO

#7 von e69-fan ( gelöscht ) , 25.03.2022 07:13

Hallo,
Mal zusammengefasst:

Das wichtigste ist eine stabile Versorgungsspannung mit 5 Volt.

Ich habe das wie folgt gelöst:

Steckernetzteil mit z.B. 12V / 1A ---> Stepdownregler auf 5 Volt ---> 5V Out auf zwei 5pol. Waagoklemmen

Arduino Nano auf 5 Volt und GND angeklemmt nicht auf VCC ( eigener Spannungsregler der mehr wie 5V benötigt)

An die "5V Waagoverteilung" schließe ich jeweils Plus / Minus von Servos, Sensoren, Relais, Display etc. an. Aber Achtung es gibt auch Teile mit 3,3 V.
Die 3. Leitung kommt an den jeweiligen Pin.

Zur weiteren Absicherung verwende ich als Verbindung zwischen Computer und Arduino nur ein USB - Kabel mit durchtrennter 5V Leitung. (Adapter)

So kann nicht zweimal 5V eingespeist werden ( Arduino Uno und Mega sind da sehr empfindlich, der NANO hat eine Schutzdiode aber die kann ja mal defekt sein.

Als Erweiterung gab es noch ein Volt / Amperemeter nach dem Stepdownregler und so erkenne ich ob irgendein Teil zu viel "Strom zieht".

Schönen Tag - Wolfgang


e69-fan
zuletzt bearbeitet 25.03.2022 07:39 | Top

RE: Rückmelder für RS-Bus mit ARDUINO

#8 von chrisabi , 25.03.2022 08:34

Hallo,
zunächst vielen Dank für die Hinweise. Ich werde meine Einspeisung testweise ändern und die Versorgung auf VIN mit einem L7809 legen. Über das Ergebnis werde ich berichten.

Falls es funktioniert ist es für mich trotzdem rätselhaft. Schaut man sich den Stromlaufplan eines Nano an, findet man hinter dem VIN einen Spannungsregler, der seinen Ausgang am PIN +5V hat. Soweit ist das alles richtig. Die gesamte weitere Versorgung aller Schaltkreise liegt aber ebenfalls auf dem Signal +5V. Auf dieser Basis sollte es eigentlich gleichberechtigt sein, unter der Voraussetzung einer sicher geregelten Spannung.


Viele Grüße

Christian


chrisabi  
chrisabi
Regionalbahn (RB)
Beiträge: 28
Registriert am: 11.09.2017
Spurweite N
Stromart Digital


RE: Rückmelder für RS-Bus mit ARDUINO

#9 von chrisabi , 25.03.2022 09:54

Hallo,

die ersten Versuche habe ich durchgeführt. Wie von mir (fast) erwartet ergibt sich keine Änderung des Verhaltens bei der Einspeisung über VIN mit 9,5V DC. Der Rest der Schaltung liegt am +5V Ausgang des NANO. Keine Kopplungsaufnahme.

Die Einspeisung mit 5V DC über die USB-Buchse habe ich noch nicht versucht. Dazu muss ich mir etwas einfallen lassen, wie ich das realisieren kann. Wahrscheinlich nur über das "Schlachten" eines Kabels.


Viele Grüße

Christian


chrisabi  
chrisabi
Regionalbahn (RB)
Beiträge: 28
Registriert am: 11.09.2017
Spurweite N
Stromart Digital


RE: Rückmelder für RS-Bus mit ARDUINO

#10 von e69-fan ( gelöscht ) , 25.03.2022 10:51

Hallo Christian,

noch mal verständlicher zusammengefasst:

Du kannst den Arduino nano, etc. auf 3 Arten mit Spannung versorgen - aber nur mit jeweils einer Variante gleichzeitig. Dann bist Du auf der sicheren Seite.

1. Pin 5 Volt und GND mit konstanten 5 Volt.
oder
2. mit höherer Spannung aus einem externen Netzteil an VIN
oder
3. USB Anschluß mit 5 Volt

Was Du bei Deinen Versuchen eventuell nicht beachtet hast, ist die maximale Strombelastung der einzelnen Ein- Ausgangspins ( analoge und digitale Ein- Ausgänge), die liegt bei ca. 20mA pro Pin.
Wenn Du über VIN die 5V herstellst oder nur über die USB Buchse, wirst Du mit mehreren Servos, Motoren, Sensoren schnell die maximale Belastung erreichen und der nano arbeitet fehlerhaft oder verschiedet sich.

Darum ein stabiles Netzteil mit ausreichend Leistung - den Ausgang mit einem Step-Down Regler auf 5 Volt heruntergeregelt und wie Pos. 1 anschließen.
Über diese 5 Volt kannst Du alle Servos, Motoren, Sensoren versorgen.

Es gibt auch USB Adapter USB A- Stecker auf USB A-Buchse, da brauchst Du nur den +5Volt Pin entfernen und musst nicht an den Kabeln rumbasteln.

Servus - Wolfgang


chrisabi hat sich bedankt!
e69-fan

RE: Rückmelder für RS-Bus mit ARDUINO

#11 von chrisabi , 25.03.2022 12:22

Hallo Wolfgang,

Alles richtig, was du schreibst, aber ich habe weder Servos noch andere Belastungen an den PINs. Wie ich schon schrieb, speise ich momentan über ein 9V -Schaltnetzteil am VIN. Das Netzteil hat ausreichend Leistung.
Die Ursache muss woanders zu suchen sein.
an einen Defekt des Nanos glaube ich eigentlich nicht.


Viele Grüße

Christian


chrisabi  
chrisabi
Regionalbahn (RB)
Beiträge: 28
Registriert am: 11.09.2017
Spurweite N
Stromart Digital


RE: Rückmelder für RS-Bus mit ARDUINO

#12 von Domapi , 25.03.2022 12:24

Die meisten Nano Klone haben eine eingebaute Diode, um den USB-Stromkreis und die direkte Nano-Versorgung zu entkoppeln.

Alle von mir bislang verbauten Nanos konnte ich problemlos an USB und parallel angeschlossener Stromversorgung über 5V oder Vin betreiben.


Viele Grüße
Martin

- Mein Trennungsbahnhof: viewtopic.php?f=64&t=152275
- Drehscheibensteuerung auf Arduinobasis "LocoTurn": https://wiki.mobaledlib.de/anleitungen/b...v10/150_inhalte


PatrikL hat sich bedankt!
 
Domapi
EuroCity (EC)
Beiträge: 1.435
Registriert am: 22.09.2015
Ort: Nämberch
Gleise Ohne Pickel
Spurweite H0
Steuerung Mit Hirn und Verstand
Stromart DC, Digital

zuletzt bearbeitet 25.03.2022 | Top

RE: Rückmelder für RS-Bus mit ARDUINO

#13 von e69-fan ( gelöscht ) , 25.03.2022 14:00

Hallo Martin,

ich gebe Dir natürlich recht, aber ich hatte schon defekte Dioden und dann kam das Ende bei zweifacher Einspeisung.
Darum schrieb ich von der "sicheren Seite".

Servus - Wolfgang


e69-fan

RE: Rückmelder für RS-Bus mit ARDUINO

#14 von apras , 25.03.2022 20:22

Hallo Christian

Vielleicht suchen wir in die falsche Ecke.

Du schreibst:

Zitat von chrisabi im Beitrag #1

... läuft die Kopplung der Baugruppen an die Zentrale perfekt an.
... kommt keine Kopplung zustande.



Was genau meinst Du hiermit? Werden die RS-Bus polling Pulses von deine Schaltung empfangen, aber werden die von dir gesendete RS-Bus berichte nicht vom Lenz Master Station / Handregler empfangen / angezeigt?

Wenn Du nicht sicher bist ob Du etwas empfängst, kannst Du der Monitor sketch vielleicht probieren (in die Examples). Wenn von irgendwo ein RS-Bus signal gesendet wird, sollte der Monitor die RS-Bus Adresse zeigen.

Alternativ kann die Library dich auch einige information geben über die Qualität des empfangenen Signal.
Ist der boolean "rsSignalIsOK" true oder false? hasst Du "parityErrors" oder "pulseCountErrors"?

Oder sind die oben genante Variables gut, funktioniert der Empfang, wird auch etwas gesendet, aber zeigt de Lenz Handregler nicht das was empfangen wurde?

Eine klare Beschreibung was genau passiert könnte vielleicht hilfreich sein.

Grüsse

Aiko


Grenzbahnhof Gibtsnicht: 12 Meter lang, Weinert Mein Gleis, TC10 und Loklift
Loklift im Eigenbau


chrisabi hat sich bedankt!
 
apras
InterRegio (IR)
Beiträge: 113
Registriert am: 17.11.2016
Ort: Enschede, Niederlande
Gleise Rocoline, Weinert Mein Gleis, Tillig Elite
Spurweite H0
Steuerung Traincontroller, Lenz
Stromart DC, Digital


RE: Rückmelder für RS-Bus mit ARDUINO

#15 von chrisabi , 26.03.2022 13:55

Hallo Aiko,

Ich versuche die Fragen zu beantworten und das Verhalten zu präzisieren:

1. Aufbau: Hardware wie auf deiner Homepage beschrieben (siehe auch Anlage in #1), Prozessor ARDUINO NANO 328. Der RS-Bus ist an eine LENZ LZV 100 angeschlossen, keine weiteren Busteilnehmer.

2. Sketch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 

#include <Arduino.h> // wird von der RSbus.h gefordert
#include <RSbus.h> // RS-Bus Library
 
// Die folgenden Parameter spezifizieren die verwendete Hardware und die RS-Bus Adresse
const uint8_t ledPin = 13; // Pin für RS_LED
const uint8_t RsBus_USART = 0; // USART-0 wird verwendet. Beim NANO TX1
const uint8_t RsBus_RX = 2; // INT0 wird benutzt, PIN 2
const uint8_t RS_Address = 74; // Wert zwischen 65 und 128 (1 bis 64 ist Weichen vorbehalten)
 
/* Initialisierung des Objektes
Das RSbushardware Object ist verantwortlich für den RS-Bus ISR und USART.
Das RSbusConnection Object behandelt den Datenkanal mit der Verbindung zum Master und stellte das Telgramm zusammens
*/
extern RSbusHardware rsbusHardware; // This object is defined in rs_bus.cpp
RSbusConnection rsbus; // Per RS-Bus address we need a dedicated object
 
byte Gleis[] = {5, 6, 7, 8, 9, 10, 11, 12}; // Anschlüsse Gleisabschnitte
uint8_t SendByte; // Byte für das Senden an Zentrale
uint8_t oldSendByte; // Byte aus vorherigender Übertragung an Zentrale
int i = 0; // Laufvariable
 
/**************************************************************************
setup
***************************************************************************/
void setup()
{
rsbusHardware.attach(RsBus_USART, RsBus_RX);
rsbus.address = RS_Address; // Adresse zwischen 1(65)... 128
for (i = 0; i <= 7; i++) // Schleife für
{
pinMode(Gleis[i], INPUT_PULLUP); // PIN Definitionen, mit pullup, da Eingänge über opencollector gegen GND schalten
}
pinMode(ledPin, OUTPUT); // Definition LED-PIN
SendByte = 0;
} // Ende SETUP
 
/**************************************************************************
Hauptprogramm
***************************************************************************/
void loop()
{
if (rsbusHardware.rsSignalIsOK) // Prüfen ob RS-Signal anliegt
{
digitalWrite(ledPin, HIGH); // RS-Bus Signal ist gültig
}
else
{
digitalWrite(ledPin, LOW); // RS-Bus Signal ist nicht gültig
}
for (i = 0; i <= 7; i++) // Schleife für Abfragen der Eingänge
{
if (!digitalRead(Gleis[i]) == HIGH) // Abbildung der belegten Gleisabschnitte in SendByte, negiert da PULLUP!!
{
bitSet(SendByte, i); // Falls HIGH Bit in Sendebyte setzen
}
else
{
bitClear(SendByte, i); // sonst Bit in SendByte löschen
}
} // Ende Schleife
if (SendByte != oldSendByte) // Prüfen ob eine Veränderung der Belegtmeldung der Gleisabschnitte
{
oldSendByte = SendByte; // Umspeichern des aktuellen Wertes in alten Wert
rsbus.send8bits(SendByte); // Library puffert das SendByte für nächste Übertrageung
}
 
/**************************************************************************
RS-Bus Anforderung
***************************************************************************
Falls eine RS-Bus Anforderung startet oder nach Fehler, ist es notwendig alle Rückmeldedaten zum Master zu senden*/
 
if (rsbus.feedbackRequested) rsbus.send8bits(0); // Bei Neuanlauf bzw nach Fehler werden Daten zur Zentrale gesendet
rsbusHardware.checkPolling(); // Prüfen RS-Bus Telegramme anliegen
rsbus.checkConnection(); // Prüfen ob Puffer Daten enthält und senden diese an ISR und USART
}
 



Problemdarstellung:
Fall 1: Stromversorgung der Schaltung erfolgt über die USB-Schnittstelle.
Alles funktioniert einwandfrei. Die Meldung aus "rsSignalIsOK" ist true, die LED an PIN 13 leuchtet.
"parityErrors" oder "pulseCountErrors" werden nicht ausgewertet. Der Empfang aller 8 Bit an der Zentrale ist einwandfrei, die Anzeige erfolgt in einer Modellbahnsoftware und nicht auf einem Handregler. Kein weiteres Gerät befindet sich am XPRESSNET (nur PC-Kopplung).

Fall 2: Stromversorgung für Arduino und RS-Bus-Auskoppung erfolgt über VIN bzw +5V des Arduino.
Die Meldung aus "rsSignalIsOK" ist false, die LED an PIN 13 leuchtet nicht. Lediglich bei Prozessoranlauf bzw RESET erfolgt ein kurzes aufleuchten. Die Pollingwerte kommen richtig in der Zentrale an (TX LED blinkt).

Bisherige Prüfungen für Fall 2:
+5V und GND liegt an allen notwendigen Punkten (Arduino VIN, +5V, Optokoppler). GND ebenfalls. Platinenfehler und eventuelle Kurzschlüsse zur GND können definitiv ausgeschlossen werden.
Nicht geprüft wurde die ARDUINO-Platine auf eventuelle Fehler bei der Umschaltung USB-VIN bzw. USB-+5V.

Vermutung:
1. Library und Sketch sind in Ordnung ( möglicherweise ist der Sketch optimierbar)
2. Hardwaredefekt des Arduino

Den letzteren Punkt habe ich nunmehr in Verdacht und werde morgen einen UNO einsetzen und das Verhalten erneut prüfen. Ich berichte dann.

Im Moment habe ich nur einen Prototyp aufgebaut und kann deshalb den Monitor nicht einsetzen, was ich auch nicht für unbedingt als notwendig erachte, da die Verbindung und der Bus läuft, wenn die Spannungsversorgung über den USB- Anschluss erfolgt.

Einzige Unsicherheit die ich habe ist die Angabe im Sktech auf Zeile 7: const uint8_t RsBus_USART = 0. Es ist vollkommen egal, welchen Wert man hier einträgt, es geht immer bzw. nie.

Ich hoffe dir einigermaßen deine Fragen beantwortet zu haben und bedanke mich nochmals für die hervorragende Library.

Viele Grüße
Christian


Viele Grüße

Christian


chrisabi  
chrisabi
Regionalbahn (RB)
Beiträge: 28
Registriert am: 11.09.2017
Spurweite N
Stromart Digital

zuletzt bearbeitet 26.03.2022 | Top

RE: Rückmelder für RS-Bus mit ARDUINO

#16 von volkerS , 26.03.2022 15:40

Hallo Christian,
wenn du an Vin 5V messen kannst wenn du das Board via USB versorgst ist der Spannungsregler defekt.
Im Web finden sich verschiedene Pläne für den Nano mit unterschiedlichen Spannungsreglern deren Gehäuseanschlüsse mechanisch identisch aber elektrisch unterschiedlich sind. Bei China Clonen kann da schon mal ein falscher Regler den Weg auf die Platine gefunden haben.
Da ja bei dir definitiv nichts funktioniert, wenn du an +5V die Versorgungsspannung anlegst, was lt. Arduino zulässig sein soll, wäre eine Möglichkeit dass du, mehr kaputt machen kann man ja nicht, den Spnnunsregler auslötest.
Vielleicht funktioniert ja dann dein Board wenn du die externen 5V dann an +5V anschließt.
Volker


volkerS  
volkerS
ICE-Sprinter
Beiträge: 5.048
Registriert am: 14.10.2014

zuletzt bearbeitet 26.03.2022 | Top

RE: Rückmelder für RS-Bus mit ARDUINO

#17 von apras , 26.03.2022 17:16

Hallo Christian

Interessant.

Dein Sketch sieht (mit einer Ausnahme) gut aus. Es funktioniert wenn es gespeist wird vom Computer über USB. Daher sollte es eigentlich auch funktionieren wenn es aus eine andere Quelle gespeist wird.

Folgendes sollte aber geändert werden:

Zitat
if (!digitalRead(Gleis[i]) == HIGH)


Mein Compiler gibt dafür ein Warning: logical not is only applied to the left hand side of comparison.
Also entweder "if (digitalRead(Gleis[i]) != HIGH)", oder "if (!(digitalRead(Gleis[i]) == HIGH))" oder "if (digitalRead(Gleis[i]) == LOW)"

Um ganz sicher zu sein, kannst Du vielleicht versuchen was passiert mit dem Beispiel "Example_including_RSBus_check"?
In diesem Beispiel wird jede Sekunde ein Byte gesendet. Wird das empfangen, egal wie der Arduino gespeist wird? oder siehst Du hier kein unterschied?

Zitat von chrisabi im Beitrag #15

Einzige Unsicherheit die ich habe ist die Angabe im Sktech auf Zeile 7: const uint8_t RsBus_USART = 0. Es ist vollkommen egal, welchen Wert man hier einträgt, es geht immer bzw. nie.


RsBus_USART sollte schon 0 sein. Ein andere wert sollte (beim 328 Prozessor) eigentlich nicht funktionieren. Wenn es trotzdem funktioniert verstehe ich das also nicht und sollte ich dies vielleicht nochmals überprüfen.

Etwas anderes was Du probieren kannst, ist die "alte" version der Library (RSBUS_USES_SW_4MS). Probier mal im file "RSbusVariants.h" den Anfang vom Zeile 80 "//" zu entfernen.

Und was meinst Du genau mit:
Zitat von chrisabi im Beitrag #15

Die Pollingwerte kommen richtig in der Zentrale an (TX LED blinkt).


Der TX LED ist doch auf dem Arduino Board? Das heist also "nur" das den Arduino sendet, aber nicht ob der (Lenz) Zentrale etwas empfangt. Oder habe ich das falsch verstanden?

Ist im fall 2 (Speisung nicht über den USB bus) trotzdem etwas am USB port angeschlossen, oder ist nichts angeschlossen? Da der UNO/NANO nur eine USART hat, wird dieser auch immer benützt für Serial Kommunikation über USB. Wenn etwas am USB anschluss hängt, könnte das also für Störungen sorgen.

Zitat von chrisabi im Beitrag #1

Bemerkt habe ich allerdings, dass es eine Verbindung über die Masse der beteiligten Geräte geben muss. Beim gemeinsamen Spannungsanschluss an die Zentrale reicht schon ein Pol, über Spannung am Arduino nachzuweisen.


Dies verstehe ich auch nicht ganz. Meinst Du das Fall 2 (Speisung nicht über den USB bus) funktionieren kann wenn Du Masse vor Arduino verbindet mit der masse vom LZV 100??

Wenn es zum testen hilfreich wäre wenn ich dir einer meiner RS-Bus Platinen schicke, dann mache ich das gern. Irgendwie sollten wir dies doch hinkriegen, oder?? :-)

Aiko


Grenzbahnhof Gibtsnicht: 12 Meter lang, Weinert Mein Gleis, TC10 und Loklift
Loklift im Eigenbau


 
apras
InterRegio (IR)
Beiträge: 113
Registriert am: 17.11.2016
Ort: Enschede, Niederlande
Gleise Rocoline, Weinert Mein Gleis, Tillig Elite
Spurweite H0
Steuerung Traincontroller, Lenz
Stromart DC, Digital


RE: Rückmelder für RS-Bus mit ARDUINO

#18 von chrisabi , 27.03.2022 19:13

Hallo Aiko,

vielen Dank für die Antworten.

Den Sketch habe ich korrigiert, die Warnung habe ich tatsächlich übersehen. Danke für den Hinweis. Es funktionierte aber trotz der fehlenden Klammern.

Zitat
RsBus_USART sollte schon 0 sein. Ein andere wert sollte (beim 328 Prozessor) eigentlich nicht funktionieren. Wenn es trotzdem funktioniert verstehe ich das also nicht und sollte ich dies vielleicht nochmals überprüfen



Nicht notwendig, wahrscheinlich mein Fehler. Ich habe das heute noch einmal probiert, es funktioniert tatsächlich nur mit

1
 
 const uint8_t RsBus_USART = 0
 



Zitat von apras im Beitrag #17
Um ganz sicher zu sein, kannst Du vielleicht versuchen was passiert mit dem Beispiel "Example_including_RSBus_check"?
In diesem Beispiel wird jede Sekunde ein Byte gesendet. Wird das empfangen, egal wie der Arduino gespeist wird? oder siehst Du hier kein unterschied?



Das habe ich schon gemacht, denn mit diesem Beispiel habe ich die Library versucht zu verstehen. Das Verhalten ist identisch.

Inzwischen habe ich den Nano im Verdacht, dass sich auf der Platine ein Bauteil sich beschädigt ist. Möglicherweise habe ich versehentlich irgendwann einmal beide Spannungsversorgungen (USB und externe Einspeisung) gleichzeitig benutzt und damit den NANO zerstört. Leider schaffe ich es erst in der kommenden Woche mich mit dem Tausch des NANO zu beschäftigen. Ich werde dann berichten und wir können weiter nachdenken oder jubeln.

Vielen Dank für dein Angebot zu Platinen, ich versuche es erst einmal mit meinem Layout. Ich bin überzeugt, dass es irgendwann laufen wird.


Viele Grüße

Christian


chrisabi  
chrisabi
Regionalbahn (RB)
Beiträge: 28
Registriert am: 11.09.2017
Spurweite N
Stromart Digital

zuletzt bearbeitet 27.03.2022 | Top

RE: Rückmelder für RS-Bus mit ARDUINO

#19 von joachimkr , 27.03.2022 19:24

Hallo,

Jeder PC mit Metallgehäuse ist über PE geerdet.
Oft genug ist der Minuspol der inneren Spannungen mit diesem Pol verbunden.
Das ist bei USB gern mal ein Problem.

Ist die Lenz Baugruppe erdfrei?

Gruß,
Joachim


In jeder Hinsicht Technik-affin 😎


 
joachimkr
EuroCity (EC)
Beiträge: 1.100
Registriert am: 12.11.2015
Ort: Hamburg
Spurweite H0, G
Stromart AC, Digital

zuletzt bearbeitet 27.03.2022 | Top

RE: Rückmelder für RS-Bus mit ARDUINO

#20 von apras , 28.03.2022 10:42

Hallo Christian

Zitat von chrisabi im Beitrag #18

Inzwischen habe ich den Nano im Verdacht, dass sich auf der Platine ein Bauteil sich beschädigt ist. Möglicherweise habe ich versehentlich irgendwann einmal beide Spannungsversorgungen (USB und externe Einspeisung) gleichzeitig benutzt und damit den NANO zerstört. Leider schaffe ich es erst in der kommenden Woche mich mit dem Tausch des NANO zu beschäftigen. Ich werde dann berichten und wir können weiter nachdenken oder jubeln.



Um sicher zu sein on der Nano beschädigt ist oder nicht, wurde ich den Arduino "Blink" Beispiel probieren. Wenn "Blink" läuft unabhängig ob der Stromversorgung via USB oder direkt geschieht, ist der Nano wahrscheinlich in Ordnung.

Wenn der Nano in Ordnung ist, wurde ich als nächstes probieren ob das RS-Bus signal gut empfangen wird. Dazu kannst Du im Interrupt Service Routine (ISR) in die Datei "sup_isr_sw.cpp" eine Zeile hinzufügen der den LED einschaltet. Der ISR sollte mehrfach pro Millisekunde angerufen werden, was heist das der LED sofort brennen soll wenn es ein RS-Bus signal sieht. Zugleich solltest Du im Haupt Sketch einige Zeilen hinzufügen die 1 x pro Sekunde den LED wieder ausschalten.
Wenn das Resultat ist das der LED trotzdem brennt, werden RS-Bus Pulses tatsächlich mehrfach pro Millisekunde empfangen. Wenn nicht, dan empfängst Du kein RS-Bus Signal.

Wenn ein RS-Bus Signal empfangen wird, gibt es wieder mehrere Möglichkeiten zum testen, aber vielleicht ist es besser Schritt für Schritt zu gehen.
Vielleicht eine dumme Bemerkung, aber bist Du sicher das das RS-Bus signal nicht umgedreht ist?

Letzte Bemerkung: wenn Du öfters mit Arduino's spielt, kann ich dir raten ein Logic Analyzer zu kaufen. Ein USB 8 kanal analyzer für 24 MHz kostet zwischen 5 bis 10 Euro in China, und in Deutschland etwa 12 Euro. Damit kannst Du genau verfolgen was im Prozessor rein geht, und was raus kommt.

Grüsse
Aiko


Grenzbahnhof Gibtsnicht: 12 Meter lang, Weinert Mein Gleis, TC10 und Loklift
Loklift im Eigenbau


chrisabi hat sich bedankt!
 
apras
InterRegio (IR)
Beiträge: 113
Registriert am: 17.11.2016
Ort: Enschede, Niederlande
Gleise Rocoline, Weinert Mein Gleis, Tillig Elite
Spurweite H0
Steuerung Traincontroller, Lenz
Stromart DC, Digital


RE: Rückmelder für RS-Bus mit ARDUINO

#21 von chrisabi , 11.04.2022 17:29

Hallo,

mit Aikos Unterstützung ist es mir gelungen den Fehler zu finden und die Anwendung zum Laufen zu bringen. Ursache war eine Leiterzugunterbrechung zu einem Schaltkreis. Erfolgte die Einspeisung über die USB- Schnittstelle, war die Verbindung Zwischen ARDUINO +5V PIN und dem Schaltkreis hergestellt, bei interner Versorgung jedoch nicht.

Blöder Fehler, aber passiert schon mal bei selbst geätzten Platinen und Nutzung von press'n peel Folien.

Vielen Dank an die Unterstützer, vor allen Dingen an Aiko.


Viele Grüße

Christian


chrisabi  
chrisabi
Regionalbahn (RB)
Beiträge: 28
Registriert am: 11.09.2017
Spurweite N
Stromart Digital


   

Wieviele Aux sind am Lopi 5 DCC (59620) angelötet? Gelöst!
Märklin m83 & m84 mit schaltpult schalten

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz