BeneluxSpoor.net forum

Vraag en antwoord => Elektronica en analoog => Topic gestart door: Juroen op 16 mei 2020, 22:12:23

Titel: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 16 mei 2020, 22:12:23
Ik ben bezig een bedieningstableau voor de wissels van mijn baan te maken. De hardware is gelukt, met de elektronica worstel ik; ik krijg het niet werkend. Hierbij vraag ik hulp.

Ik krijg een foutmelding dat de arduino geen contact heeft met de centrale (dcc state 255).

Er zijnop het forum enkele andere draadjes die ook over een bedieningstableau met een arduino gaan. Die heb ik gelezen en helaas vond ik daar geen oplossing. Met het bedieningstableau wil ik de wissels van mijn baan met tuimelschakelaars bedienen. De stand van de tuimelaar geeft de stand van de wissel weer.

Idee is om het bedieningstableau als een DCC-slave te bouwen en met een Xpressnet-kabel als slave aan te sluiten.
Ik stuur de baan met multimaus, met twee roco versterkers, één als hoofdversterker , één als booster. ExpressnetLi van Rosoft als computerinterface. Automatische sturing met koploper, maar soms wil ik gewoon zelf de wissles bedienen.

De basis van mijn tableau vond ik op internet:
https://sam95.fr/blog/2017/02/04/tco-xpressnet-avec-un-arduino/
De ontwerper heeft een filmpje op internet:
https://www.youtube.com/watch?v=rDMbxj29I_c&feature=emb_logo
Software te vinden op:
https://github.com/nzin/xpressnet_arduino

Ter illustratie
(https://images.beneluxspoor.net/bnls/tco-voor-en-binnen.jpg) (https://images.beneluxspoor.net/bnls/tco-voor-en-binnen.jpg)

Doos met tuimelschakelaars, chinese arduino mega 2560 en een MAX485-module.
Er is geen functioneel verschil tussen de rode en de blauwe schakelaars. Ze zijn allemaal DPDT ON-ON.

(https://images.beneluxspoor.net/bnls/tco-details.jpg) (https://images.beneluxspoor.net/bnls/tco-details.jpg)

De zwarte draden zijn aangesloten op een GND pin.
De geel/rood/blauw gekleurde draden gaan naar input_pullup pins.
Ik heb er twee als test aangesloten. Als ik die bedien dan reageert de arduino.

Gebruikt schema (bron http://www.sam95.fr/wp-content/uploads/2017/01/TCO_bb.jpg)
(https://images.beneluxspoor.net/bnls/TCO_bb.jpg) (https://images.beneluxspoor.net/bnls/TCO_bb.jpg)

Xpressnet contactdoos
Van de RJ12 interface heb ik vier draden aangesloten:
+ 12 V
A
B
GND
Ik heb twee poorten parallel: één poort naar de centrale, op de andere poort kan ik een extra multimaus aansluiten.

Bij het foutzoeken heb ik de aansluiting A en B omgewisseld, maar dan raakt de extra multimaus in de war. Ik denk dus dat het nu goed zit.

Dit werkt:
Met de extra multimaus op de parallele poort kan ik wissels en treinen bedienen. Hieruit concludeer ik dat de contactdoos juist is aangesloten.
De voeding van de arduino en het max485 bordje heb ik nagemeten en zijn beide in orde.
Bij het bedienen van de aangesloten tuimelschakelaar krijgt de arduino de juiste input.

Ik twijfel of ik de verbinding tussen arduino en max485 juist heb:
In de Xpressnet library zie ik dat die pin9 gebruikt als communicatie naar het max485 bordje.
De gebruikte sketch definieert pin 3. Kan dat wel?
Overigens: ik heb in de sketch pin3 in pin9 gewijzigd, maar dat leverde niks op.

Op mijn arduino zitten o.a. de volgende pins die alsvolgt aan de max485 zitten:
      Arduino   -   485
-   RX1 18   -   DI
-   TX1 19   -   RO

Hopelijk hebben deskundigen aanknopingsunten om adviezen te geven.
Bij voorbaat dank voor suggesties.

Groet Juroen

Titel: Re: wisselbedieningstableau met arduino mega voor dcc; hulp gevraagd
Bericht door: meino op 16 mei 2020, 23:24:57
Dag Juroen

moet RX niet aan RO en TX aan DI zitten?

Groet Meino
Titel: Re: wisselbedieningstableau met arduino mega voor dcc; hulp gevraagd
Bericht door: Juroen op 16 mei 2020, 23:40:45
Meino,

Dank voor je reactie.

Hoewel ik dat niet heb opgeschreven heb ik wel getest of 't werkte als ik de RX met RO verbond en TX aan DI.
Dat kon vrij eenvoudig door de pennenrij om te draaien. Dat hielp helaas niks.

Er is daar wel iets wat ik niet snap. De arduino heeft pinnen voor RX1 en TX1, maar ik las ergens (ik denk dat 't in de xpressnet library was) ook iets over pinnen RX0 en TX0. Die heeft mijn chinese arduino niet, of tenminste, ik heb ze nog niet gevonden.

Verder schrijft de franse meneer, van wie ik de sketch heb gekopieerd:
Pin RO van de module connectée à la pin 19 (RX1) de l’arduino
Pin DI van de module connectée à la pin 18 (TX1) de l’arduino

Echter, bij mijn arduino is RX1 18 (en geen 19) en TX1 19 (en geen18).

De arduino heeft ook een RX- en een TX-led. Bij het geven van een input licht er één op (weet nu even niet welke) de andere doet niets.
Wellicht is dat een aanknopingspunt?


Groet Juroen
Titel: Re: wisselbedieningstableau met arduino mega voor dcc; hulp gevraagd
Bericht door: meino op 17 mei 2020, 00:09:18
Dag Juroen

ik heb dat uit het volgende artikeltje Arduino Mega met MAX485 (https://www.instructables.com/id/RS485-Serial-Communication-Between-Arduino-Mega-an/),
Ik weet dat de Mega meerdere tx en rx pinnen heeft. Standaard tx0 is pin1 en rx0 is pin0. Verder op twee van mijn Mega's is tx1 19, rx1 18, rx2 17, tx2 16, rx3 15 en tx3 14. Maar op een andere is tx1 18 en rx1 19.
Ik heb daar zelf nooit opgelet omdat ik de rx1-3 en tx1-3 zelf niet gebruik, alleen tx0 en rx0 voor de serieele monitor (via de USB poort).
De formele mapping voor de Mega 2560 is rx1 19, tx1 18, rx2 17, tx2 16, rx3 15 en tx3 14.  Ik ben bang dat de opdruk van die chineese kloon niet klopt.
Ik hoop dat je hier wat aanhebt.

Groet Meino
Titel: Re: wisselbedieningstableau met arduino mega voor dcc; hulp gevraagd
Bericht door: Juroen op 17 mei 2020, 00:12:02
Dank,

Ga ik morgen mee verder!
Titel: Re: wisselbedieningstableau met arduino mega voor dcc; hulp gevraagd
Bericht door: Remco_Nzo op 17 mei 2020, 11:14:23
Ik heb er recent ook een gemaakt, maar de software van 'nzin' is een beetje achterhaald.
Hij schrijft
Citaat
because xpressnet is a 9bit serial protocol. Standard Arduino SDK don't provide 9bits. But someone reimplement a 9bit Serial library (I put it into the arduinoSdk directory).

Ik heb de bibliotheek van Philipp Gahtow gebruikt.
Deze is nog in actieve ontwikkeling en wordt door veel projecten gebruikt, doet het met de laatste versie van de Arduino programmeer omgeving. Hij kan zowel op de Mega, Uno en Nano gebruikt worden.
En daarom kun je bijvoorbeeld ook met een Nano een "STOP" button langs de baan te maken.

http://pgahtow.de/wiki/index.php?title=XpressNet

Hij had een aparte voor slave als voor master, maar de laatste versie kan beiden aan. Ik heb dat niet gebruikt, die van mij is nog gebaseerd op de laatste 'client-only' library http://sourceforge.net/projects/pgahtow/files/Arduino%20%28v1.0%29%20libaries/XpressNet.zip

Remco.
Titel: Re: wisselbedieningstableau met arduino mega voor dcc; hulp gevraagd
Bericht door: Remco_Nzo op 17 mei 2020, 11:45:05
Zoals ik schreef heb ik hem ook van de Mega gemaakt
(https://images.beneluxspoor.net/bnls/display2.jpg) (https://images.beneluxspoor.net/bnls/display2.jpg)

Als schakelaar heb ik touchsensors van Ali gekocht
(https://images.beneluxspoor.net/bnls/display3.jpg) (https://images.beneluxspoor.net/bnls/display3.jpg)
Die liggen onder de houten triplex plaat
Daar zie je dus niets van na montage

(https://images.beneluxspoor.net/bnls/display4.jpg) (https://images.beneluxspoor.net/bnls/display4.jpg)

En dan ziet aan de voorkant het er zo uit
(https://images.beneluxspoor.net/bnls/display1.jpg) (https://images.beneluxspoor.net/bnls/display1.jpg)

Wellicht too much info:
Ik heb in mijn code, naast de normale adressen die door de touch-sensors geschakeld worden,  ook 'virtuele' DCC adressen gemaakt waarmee een straatje geschakeld wordt.
Bijvoorbeeld adres 101 waarmee een DCC 12+13 allebei geschakeld worden.
En dat maakt dan niet uit of je die 101 schakelt met het TCO of met de multimaus.
En daarnaast ook nog een virtuele DCC adressen gemaakt waarmee een wissel 'gelocked' wordt. De TCO bewaakt dan of de wissel wel in de juiste stand (blijft) staan. Als iemand/iets hem omschakelt dan zet de software hem meteen weer terug in de juiste stand.

Als je wilt kun je een kopie van mijn sketch krijgen ter leeiring ende vermaeck
Stuur me dan even je email-adres via PM

Remco.
Titel: Re: wisselbedieningstableau met arduino mega voor dcc; hulp gevraagd
Bericht door: Juroen op 17 mei 2020, 13:29:37
Heren,

Dank voor de reacties. Waarschijnlijk heb ik het me iets te eenvoudig voorgesteld. Ik zag namelijk in de sketch van nzin een rijtje van pinnen en een rijtje met DCC-adressen, en dacht daarmee voldoende te kunnen instellen:

int Aig[]          = { 0,10,12,20,21,22,23,24,25,30,31,32,33,34};  // Adresse DCC des aiguillages
int Bt[]           = {23,24,25,26,27,28,29,30,31,32,33,34,35,36};  // Bornes de la carte ARDUINO

Vervolgens het aantal tuimelschakelaars opgeven en klaar.
Als dit nu op mijn situatie zou aanpassen, dan dacht ik het werkend te hebben.

Waarschijnlijk speelt ook nog mee dat ik weinig kennis / ervaring met code heb. >:(

Ik had ook geen idee dat de sketch van nzin verouderd zou zijn. Aan de andere kant, als het klopt dan zou ik verwachten dat 't werkt.

Wat heb ik ondertussen geprobeerd:
- aantal verschillende combinaties in aansluitingen tussen de MAX485 (Di en R0) en de arduino (TX0, RX0, TX1, RX1).
- controle van soldeerverbindingen (zijn OK).
- de library "Xpressnet_Lib_Weiche" besturdeerd en daarmee een beetje zitten spelen.

Tot slot
Wat ik nog raar vind: als ik een sketch naar de arduino upload gaat dat goed. Als ik vervolgens een parameter aanpas en opnieuw wil uploaden, dan duurt het uploaden veel langer en lijkt de IDE vast te lopen. Dan trek ik de USB-steker uit de COM-poort, opnieuw IDE starten en uploaden.
-> Zou er iets met de arduino zijn?
-> Zou het helpen als ik een originele arduino koop?

Remco,
Ik ben zeker geïnteresseerd in je sketch, daar kan alleen van leren; zal een PB sturen.
Ik besef dat het schakelen met tuimelschakelaars anders werkt dan met momentschakelars, maar daar is vast iets op te vinden.

Groet Juroen

Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: meino op 17 mei 2020, 14:25:09
Juroen,

ik denk niet dat het helpt om een originele te kopen, ik heb diverse van die klonen in gebruik en tot nu toe nooit een probleem mee gehad. 
Wel een opmerking, ik zou RX0 en TX0 niet gebruiken. Die worden ook voor de serieele poort over de USB gebruikt. Het zou kunnen dat er nu een conflict in de schets zit als je met de bootloader een nieuwe schets probeert te uploaden, terwijl die pinnen aan iets anders zijn toegewezen. Dus controleer de schets en de bibliotheek daarop. Aangezien er een verschil is met RX1 en TX1 t,o,v de formele pin layout, zou ik eens proberen om de verbinding met de MAX485 via RX@/RX3 en TX2/TX3 te laten lopen. Waarschijnlijk moet je dan wel iets in de bibliotheek/schets aanpassen. Want de gebruikte pinnen moeten ergens aan de bibliotheek verteld worden.

Groet Meino
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Remco_Nzo op 17 mei 2020, 15:33:31
Kijk eerst eens of je berichten kunt ontvangen met je huidige hardware-opstelling (kruipen, dan lopen, dan rennen)

Ik stel het volgende voor.
1) probeer een 'blink' sketch te laden (dus ledje aan je Mega) en deze laten knipperen.
2) download de Xpressnet client library v2.1 (zie link hierboven)
en pak deze zipfile uit in je "documenten/Arduino/Libraries/"

3) in "documenten/Arduino/Libraries/XpressNet/examples" zit een sketch "XpresNnet_Sniffer"

Deze sketch gebruikt
Serial0 (=usb) voor het versturen van de info naar je scherm
Serial1 (= 18/19) voor de max485
De sketch toont je via "Hulpmiddelen, Seriele monitor" alle berichten die de Arduino ziet voorbijkomen op de x-bus. (dus met je multimaus schakelen en zien dat het bericht langs gekomen is)
Daarmee kun je zien of de RX1 (=pin 19) + TX1 (= pin 18)  pinnen van de max485 op de juiste pinnen van de Mega zijn aangesloten.
De pin RE/DE heb je nog niet nodig omdat we nu alleen nog aan het luisteren zijn.

Voor de volgende stap (verzenden) kun je aan de library vertellen met
#define XNetSRPin 5 // op welke pin zit de RE/DE aangesloten.
Ik heb daar inmiddels verschillende pinnen voor gebruikt 2,5,9,10,.... (welke je kiest lijk niet kritiesch te zijn, net welke je handig vind)
en dan zou je kun je dus ook een berichtje kunnen verzenden.

Ook daarvoor is een voorbeeld-sketch aanwezig (Xpressnet_Lib_weiche) maar helaas zit daar een kleine 'bug' in (schakelt maar 1 kant op).
Maar je kunt ook deze weer prima gebruiken om te kijken of het ledje braaf omgaat als je hem schakelt met de multimaus - en of je dus het de wissel kan bedienen (ik weet even niet meer of het alleen rechtdoor of alleen afbuigend schakelt).
Dan is dus je hardware-opstelling in orde.

En daarna wordt het software knutselen.
Remco




Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 17 mei 2020, 15:56:59
Dank, voor de hulp, ik ben ermee aan de slag.

Uitgangssituatie
De arduino had een sketch voor het wisseltableau geladen. Tijdens het testen van de schakelaar die ik heb aangesloten zag ik op mijn beeldscherm dat de arduino de input keurig registreerde. Daaruit maak ik op dat ik de arduino netjes aan de juiste COM-poort heb gekoppeld.

Kruipen
Verbinding tussen arduino en Xpressnet losgekoppeld. Blink sketch geopend in de IDE (uit de voorbeeldenmap). Bij het uploaden naar de arduino krijg ik een foutmelding ‘de geselecteerde seriele poort bestaat niet of is niet aangesloten’.
Nou ja, USB eruit, IDE afsluiten. IDE opnieuw gestart, COM-poort aangesloten, Sketch ‘blink’ geladen.

De led knippert. Ik kan ook nog de knipperfrequentie aanpassen. Dit begint op kruipen te lijken.
Nu ga ik met stap 2 van Remco aan de slag. Ik kom erop terug.

 Groet Juroen
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Remco_Nzo op 17 mei 2020, 16:03:58
Nice. Overigens had ik eerst ook tuimelschakelaars (die zonder middenstand).
Maar het nadeel daarvan is dat je met de multimuis (of de pc) de wissel ondertussen in een andere stand gezet kan hebben. Je schakelaar komt dan niet meer overeen met de werkelijkheid. Ging ik me te veel aan ergeren.

En daarom heb ik nu dus ook ledjes toegevoegd om de wisselstand weer te geven.
Ik heb de stand van de ledjes nu aan de berichten op de xbus aangesloten (net als het icoontje op de multimaus), maar denk dat ik een keer ga veranderen naar de oplossing waar Klaas het altijd over heeft (op basis van terugmelding = de werkelijke fysieke stand)

Remco,
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 17 mei 2020, 20:28:47
Leren luisteren

Ik heb eerst alle verbindingen van de Xpressnet contactdoos losgehaald. Nu heb ik geen parallelle poorten meer, maar alleen vier verbindingen (12 A, B, GND) naar de arduino/Max485.

De draad naast de 12V (volgens mij is dat A) heb ik op A van MAX485 en B op B.
12V en GND gaan naar de arduino. Arduino voedt de Max485 met 5V.

R0 van MAX485 zit nu op TX1 19. DI van MAX485 zit nu op RX1 18.

Ik las in de sniffer library:
Connect MAX485 RE/DE to Pin 9 - or set it fix to "GND" => 'read'
Vervolgens heb ik dus RE/DE op een GND pin aangesloten.

Nu geeft de seriële monitor onderstaande beeld:
XpressNet Sniffer
 AccInfo
I-3 Slot: 0x1C3 0x42 0x00 0x81 0xC3 AccInfo
D-3 Slot: 0x163 0x42 0x00 0x15 0x57 AccInfo
I-2 Slot: 0x142 0x42 0x01 0x80 0xC3 AccInfo
D-2 Slot: 0x1E2 0x42 0x01 0x05 0x46 AccInfo
I-3 Slot: 0x1C3 0x42 0x00 0x81 0xC3 AccInfo
D-3 Slot: 0x163 0x42 0x00 0x15 0x57 AccInfo
I-2 Slot: 0x142 0x42 0x01 0x80 0xC3 AccInfo
D-2 Slot: 0x1E2 0x42 0x01 0x05 0x46 AccInfo
Enz, enz

Als ik de RE/DE pinnen verbind met pin 9 van de arduino blijft de seriële monitor ‘lopen’.

Volgens mij begin ik te luisteren.  ;) Nu de adviezen terug lezen voor de vervolgstap.

Groet Juroen
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Remco_Nzo op 17 mei 2020, 21:03:43
Prima. Je kunt terwijl de sniffer loopt ook nog met de multimaus een wissel omzetten - dat krijg je dan ook te zien (of een loc bedienen)
Remco.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 17 mei 2020, 21:37:36
Klein beetje lopen

Ondertussen heb ik de sketch van nzin terug op de arduino geladen.

Hiermee kan ik nu al enkele wissels bedienen. Ook de noodknop werkt; tenminste ik kan met de noodknop de spanning van de baan halen. Bij een tweede keer indrukken gebeurt er niks. Dat moet dan met een multimaus.

Ik kan dus nog niet rennen ;)

Ik vermoed dat er twee fouten waren:

1 de doorverbinding op de parallele Xpressnet-contactdoos was onjuist
2) De pinnen TX1 en RX1 op mijn chinese arduino waren onjuist aangesloten.

Ik denk dat ik met de sketch van nzin de zaak verder ga aansturen. Ik snap welke parameters ik moet ingeven.

@ Remco,
Als het niet al te veel werk is ben ik nog wel benieuwd naar jouw software!

Nogmaals dank aan de deskundigen voor het meedenken.

Groet Juroen
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Remco_Nzo op 17 mei 2020, 22:09:10
Helemaal geweldig (y)
Ik stuur je morgen de sketch.

Remco.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 21 mei 2020, 14:54:27
Het werkt!  ;D Maar nog niet helemaal. ???

Ik kan nu met mijn zelfgemaakte bedieningstableau mijn wissels en ontkoppelservos bedienen.
Nogmaals dank voor de ondersteuning.

Er is nog één ding wat niet helemaal naar wens gaat.
Wellicht kan ik dat met hulp van het forum ook nog oplossen.

Toelichting van de besturing van mijn baan
Ik heb een roco startset (multimaus met versterker 10764).
Voor de communicatie met de PC gebruik ik een XpressnetLi van rosoft.
Op de PC gebruik ik Koploper 9.4.
Op de XpressnetLi heb ik een maultimaus als slave aangesloten.

Wat gaat er mis
Als ik het bedieningstableau (met de arduino) aansluit op het Xpressnet terwijl de XpressnetLI is verbonden met de PC raakt koploper van slag.
Andersom ook:
Als ik de XpressnetLi (met USB) op de PC aansluit en Koploper opstart terwijl het bedieningstableau al is aangesloten werkt de communicatie met Koploper niet.
Ik kan dan bijvoorbeeld geen wissels en lokomtieven met Koploper bedienen, de terugmelding klopt niet met de stand van de treinen.

Als ik alleen het bedieningstableau of alleen de verbinding met de PC maak, dan werkt het wel.

Om de fout te herstellen moet ik de XpressnetLi opnieuw configureren.
Daarbij lijkt het erop alsof het configuratieprogramma 'zoekt' naar de juiste baudrate en vervolgens geen XpressnetLi vindt.
Pas na een paar pogingen lukt het de XpressnetLi te configureren.

Het XNetAddress van de arduino staat op '15'.

Disclaimer: wat hieronder volgt, is de analyse van een leek.

Zou het iets te maken kunnen hebben met de baudrate van de arduino?
De XpressnetLi werkt met een vaste baudrate van 9600.
Ik heb al in de Xpressnet library zitten neuzen maar daar kan ik niet vinden hoe de baudrate ingesteld/bepaald wordt.

Ik hoop dat er een aantal aanknopingspunten voor advies zijn.

Bijvoorbaat dank,

Juroen.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Ronald Koerts op 21 mei 2020, 16:02:20
Even een vraag: Heb je ook de arduino met de usb aangesloten op dezelfde PC? Zo ja: Waarom? Moet ook werken zonder aansluiting op de PC.

Groet Ronald.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 21 mei 2020, 16:29:28
Ik zie nu dat ik niet duidelijk was.

Als ik alleen het bedieningstableau of alleen de verbinding met de PC maak, dan werkt het wel.

Dat klopt niet niet, ik bedoel:

Als ik alleen het bedieningstableau of alleen de verbinding met de modelbaan maak, dan werkt het wel.

Ik sluit tijdens het rijden alleen de XpressnetLi aan op de PC. Dat is immers de interface.

De arduino in het bedieningspaneel sluit ik alleen aan op de PC als ik software wil aanpassen.
Altijd zonder verbinding met de modelbaan.

Als ik klaar ben met software instellingen, dan verbreek ik eerst de verbinding met de PC (arduino in het paneel is dan uit) en pas daarna sluit ik mijn paneel als slave aan op het Xpressnet van de modelbaan.

Groet Juroen.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Ronald Koerts op 21 mei 2020, 16:32:57
Hoe voed je de Arduino?
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 21 mei 2020, 16:35:22
De arduino in het bedieningspaneel krijgt voeding uit de Xpressnet verbinding.

Van de vier draden zijn de buitenste +12 V en GND.

Groet, Juroen.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Ronald Koerts op 21 mei 2020, 16:46:22
Niet doen. Dat ben je de bus aan het overbelasten. Je kan beter de arduino los voeden met een aparte voeding.

Zie ook dit document van Lenz (http://www.tlacanada.com/TLA/LI-101F%20Installation%20Disk/XpressNet%20and%20LI101F.PDF) (de bedenker van XpressNet):

Citaat
XpressNet devices can be powered directly from the XpressNet or powered through an external supply. The XpressNet device can be powered directly from the L and M 12 volts connections if the device draws less than 20mA when powered. This limit is to allow the bus to power multiple devices. If the devise requires more power than an external supply should be used.

Groet Ronald.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 21 mei 2020, 17:31:39
Ronald,

Dank.

Ik ga het eens doen met een externe voeding op mijn paneeltje.
Mijn bevindingen zal ik wederom hier melden.

Groet Juroen.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 21 mei 2020, 17:56:02
Test uitgevoerd met externe voeding

Voor de diverse mardecs heb ik voedingen die 12V leveren. Daarvan heb ik er één toegewijd aan de voeding van mijn paneeltje.

De resultaten zijn gelijk.
Zonder Koploper werkt het maar als ik de interface naar de computer maak raakt het spul in de war:

- Wissels en lokomotieven bedienen met Koploper werkt niet meer.
- Het scrollen met de multimaus naar andere lokomotieven werkt traag.
- Lokomotieven reageren niet op de multimaus.
- Koploper sluit niet meer goed af (je baan is nog actief wil je nog even wachten); terwijl ik de juiste volgorde aanhoud.

USB van de XpressnetLi uit de computer en het werkt weer.

Zodirect de XpressnetLi opnieuw configureren; dan zal die ook wel weer werken.

Groet Juroen
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Marcel112 op 21 mei 2020, 18:01:46
Juroen,

Heb je de nog open staande eXpressNet plug al eens "kortgesloten"?
Helaas houdt het protocol namelijk niet van "losse eindjes" De laatste connector moet dus ook worden "gebruikt" met een kleine verbruiker.

Op het forum meerdere oplossingen voor te vinden.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 21 mei 2020, 18:25:07
Marcel,

Als ik mijn paneel heb aangesloten is er geen open Xpressnet-verbinding meer.

Die had ik in den beginne wel: in de behuizing heb ik een dubbele RJ12 aansluiting. Aanvankelijk had ik die parallel aangesloten. Dat is ondertussen niet meer zo.

Ik meen dat voor een open verbinding een aflsuitweerstand van 120 Ohm nodig is.

Groet Juroen.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Ronald Koerts op 21 mei 2020, 20:49:49
hoi,

De resultaten zijn gelijk.

Je hebt toch wel de de draden bij de 12 volt uit het Xpressnet-deel gehaald? En zit de A/B configuratie van je MAX485 wel goed? Klopt die wel?

Groet Ronald.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 21 mei 2020, 20:58:12
jazeker,

Ik heb de 12V en GND uit het Xpressnet contradeel gehaald en aan 12 V gekoppeld (polariteit vooraf getest).

De aansluitingen A en B heb ik gecontroleerd en kloppen met de schema's en de aanduiding op het MAX485 bordje.

Kan ik, bij wijze van test, A en B omdraaien?
Of gaat er dan iets (waarschijnlijk) kapot?

Zou gewaardeerd worden als iemand hierover kan adviseren.

Overigens,
ik ging ervan uit dat A en B wel goed moesten zitten (naast dat ik het ook controleerde) omdat 't anders niet zou werken.
Die aanname klopt misschien niet.  ???

Groet Juroen
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Ronald Koerts op 21 mei 2020, 21:15:35
Bij de meeste Max485-bordjes mag je een soldering aanbrengen om de juiste A/B kanaal toe te wijzen. Als die niet werkt mag je die weer wijzigen.

Groet Ronald
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: gruspoor op 21 mei 2020, 21:19:01
Als je de A en B van een RS485 omdraait dan werkt het niet, er zal (als alles verder goed is aangesloten) niets defect raken. RS485 is een zwevende verbinding, de GND is een eventuele 3e draad.
Groetjes Gert

Soest in H0

Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: meino op 21 mei 2020, 22:15:12
Misschien een gekke vraag. Ik meen me te herinneren dat je op het XpressNet een Master mag hebben en meerdere slaves. Ik weet dat er ook voor de Arduino 2 bibliotheken ion omloop zijn, een voor een Arduino als master en een voor een Arduino als slave. Is het misschien zo, dat zowel Koploper als het paneel zich als master gedragen waardoor ze afzonderlijk werken maar niet beide tegelijkertijd?

Groet Meino
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Hans sprinter op 21 mei 2020, 22:49:33
Meino, nee, Arduino noch Koploper zijn master, maar hebben een Xpressnet nummer tussen 1 en 31. In dit geval is de Muis de master...
Ik denk dat je de situatie met een Multimuis door elkaar haalt. Bij de Lenz centrale is deze Master, en kan de Xpressnet bus volgens de oude
specificatie 350mA levereen, terwijl dit voor V3.6 meer lijkt te zijn. Ik voed nu 4 Mega's als TCO en dat geeft bij de MM geen problemen.
Ik heb dus een aardig schakelboxje werken, helaas nog niet alle schakelaars binnen, maar alles werkt al en is getest.
Ik heb eigen printen laten maken in China, en die werkten eerst ook niet, maar daar bleek een foutje in de schema's te zitten,
veroorzaakt door een onduidelijk moeder schema. Fout opgespoort, en alles werkt op de Xpressnet bus voeding en mijn arduino sniffer detecteerd alle commando's
correct. Ik gebruik de basis van https://www.gadis.cz/dcc/tco.htm
Helaas was dat maar tot 256 wissels geschikt en heb uj deze uitgebreid tot 1024. Ook de railstraten werken en ik heb een vrij programmeerbare versie gemaakt.
Leuk spul en werkt erg makkelijk!
Groetjes, Hans

PS: de capaciteit van de ATmel op de Multimuis is erg beperkt, hetgeen zich uit in ophangen. Als je de muis blijft gebruiken zul je inderdaad conflicten blijven ondervinden.
Deze worden met name door koploper veroorzaakt. Wat deze op de bus "flikkert" is ongelooflijk, en het lijkt erop of alle locomotieven uit koploper constant worden aangestuurd,
en die hoeveelheid kan de muis weer niet aan. Helaas zelf moeten ondervinden tijdens het testen. De muis slaat geregeld vast, oorzaak het gekoppelde koploper. Even een arduino sniffer aan je DCC hangen, dan herken je zo wat er gebeurd....
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: meino op 21 mei 2020, 23:53:18
Is het niet zo dat de master dan de ExpresNet nummers toewijst? En hoe gebeurd dat, volgorde van de connectoren? Het lijkt er dan op dat de Arduino code van het paneel daar niet goed mee omgaat en op de een of andere wijze het zelfde ExpressNet nr als Koploper aanneemt. Ik ga er van uit dat Koploper hier wel  goed mee overweg kan.

Groet Meino
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Remco_Nzo op 22 mei 2020, 00:11:44
Ik verdenk de 120 ohm weestand op de Ali module.

In de documentatie van Lenz staat
The ends of the XpressNet Network lines A and B should be
connected to the resistor, which is enclosed with the LZV100. The
resistor has a value of 120 Ohm

In het schema http://pgahtow.de/wiki/index.php?title=XpressNet (http://pgahtow.de/wiki/index.php?title=XpressNet) zie je ook dat deze optioneel is.

Ik denk niet dat je meerdere van die 'terminators' tegelijk (dus parallel) tussen A/B moet leggen.
Mijn vermoeden is dat er al 1 zit in de PC interface-module. Dus losse TCO + MM gaat prima, PC module er nog bij -> totale weerstandswaarde te laag.

Remco.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 22 mei 2020, 08:15:14
Ik ga met beide suggesties aan de slag:

1) in de code van de arduino een ander Xpresnet-adres instellen
2) eens kijken hoe ik de 120 Ohm weerstand uit mijn Max484 bordje kan halen.

Ik heb nog een derde bedacht:
3) een kijken hoe het met RocRail werkt. Ik heb een deel van mijn baan en enkele loc's in RocRail. Het is niet voldoende om de baan mee te besturen maar kan ik er eens wat mee proberen.

Overigens,
Het MAX485 bordje heeft aan de uitgang naar de arduino vier weerstanden van 10k naar VCC.
Die staan niet op het schema ven pgatow.

Hopelijk kan k later vandaag weer verslag doen van mijn bevindingen.

Groet, Juroen
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 22 mei 2020, 16:28:26
Beste meedenkers,

Hierbij een bericht over de testjes van vandaag.

1) In de code van de arduino een ander Xpresnet-adres ingesteld
Het was adres 15, gewijzigd in 29: geen verandering.

2) Gekeken hoe het met RocRail werkt.
In eerste instantie werkt RocRail goed, na aansluiten van mijn bedieningspaneel geeft RocRail in het veld linksonder allerlei foutmeldingen. Wissels en lokomotieven via RocRail bedienen werkt niet meer. XpressnetLi opnieuw geconfigureerd om een en ander weer werkend te krijgen.

3) De 120 Ohm weerstand uit mijn Max484 bordje gehaald
Ha, ha, dit begint erop te lijken: (y) Koploper actief, en nu blijft alles werken.
Er treden geen foutmeldingen meer op, de XpressnetLi blijft in bedrijf.
Ook kan ik Koploper netjes afsluiten en weer opstarten.

Er is nog één ding wat niet werkt:
Als ik met het bedieningspaneel wissels bedien, dan laat Koploper dit niet zien.
Als ik met een multimaus (master of slave) wissels bedien, dan laat Koploper dit wel zien.

Ik denk dat ik hier voorlopig mee kan leven; het is wel mooi zo.  ;D
Waarschijnlijk gaat het over een tijdje toch kriebelen; dan zal ik eens de Tsjechische site gaan bekijken .

Nogmaals alle meedenkers bedankt.

Groet, Juroen
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Remco_Nzo op 22 mei 2020, 18:41:24
Je schrijft 1 ding nog niet werkt - en mijn vermoeden is dit patroon in de code

Citaat
        sendSwitchCommand(turnout,1,1);
        sendSwitchCommand(turnout,1,0);

Dit is volgens de spec omdat je een opdracht voor het aanzetten van de magneet moet geven, en even later weer een opdracht om de magneet uit te zetten. Er zijn zat decoders die dat met een korreltje zout nemen en zelf wel bepalen hoelang ze de magneet bekrachtigen (en dus dat uitzet bericht gewoon negeren), maaaaaaaaaaar
Ik heb ook gevallen gelezen waarbij er apparaten op de bus het 'negeerden/oversloegen' als de aan/uit te snel achter elkaar kwam.
Het is maar net hoe dat merk de specs geinterpreteerd en geimplementeerd heeft.

Dus je zou die theorie eens kunnen testen door in je ino op alle plekken waar er meteen achter elkaar twee sendSwitchCommands worden aangeroepen daar een korte delay tussen te stoppen. Ik heb in mijn code ontdekt dat een delay van bijvoorbeeld 10ms nog te weinig was in mijn situatie. Ik heb hem (uit mijn hoofd) nu op 100ms staan.

Remco.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Juroen op 22 mei 2020, 21:13:03
Remco,

In de ino van nzin vind ik nergens een tweetal opvolgende instructies.

Wel staan er enkele delays in met verschillende waarden (bv 1, 10, 20) die eenzelfde functie hebben (bij een wissel-instructie). Die heb ik allemaal eens op 150 gezet.

Dat was geen succes, het leidde er toe dat de commando's vertraagd doorkomen.
Irritant. Ook leidde dit niet tot terugmelding in Koploper.

Ik heb ze nu allemaal op 20 ms gezet en het werkt naar wens, maar nog zonder visuele terugmelding in Koploper.
Zoals ik eerder vandaag al schreef, ik kan ermee leven.

Ook met mijn zoon nog even gespeeld; de een bediende de wissels en de ander reed met een trein.
Leuk tweemansbedrijf.

Groet Juroen
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: meino op 22 mei 2020, 22:45:05
Juroen

een vraagje, Als Koploper een wissel omzet, krijgt de Arduino dat via een XpresNet cpmmando te horen. Maar als jij via een drukknop de Arduino een wissel laat omzetten, meld de Arduino dat dan ook d.m.v een XpressNet commando aan de Centrale?
Mijn ervaring is dat als de Centrale dat weet, dat Koploper dat dan ook weet. Ik heb de indruk dat de centrale niet geinformeerd wordt.

Groet Meino
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Remco_Nzo op 23 mei 2020, 00:45:26
@Meino,

het programma in de arduino is een xpressnet-slave, net als de multimaus. Hij stuurt dus geen DCC opdrachten naar de wissels, maar X-BUS pakketjes naar de centrale -> en die maakt daar DCC opdrachten van voor de wisseldecoder.
Lang antwoord voor : ja (maar begrijp nog steeds niet waarom het uitmaakt)

@Juroen,
ALs je in de toekomst toch eens het verder wilt gaan onderzoeken : ke zou met een tweede arduino de 'xpressnet-monitor' sketch kunnen laden en dan 'opnemen' wat de x-bus precies ziet als je de wissel omzet met de multimaus en wat hij ziet met het omzetten door TCO. Je zou daar (als het goed is) geen verschil in de logging mogen zien.

Maar leuk dat het gelukt is. Veel plezier met spelen toegewenst
Remco.
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd en gekregen
Bericht door: Juroen op 23 mei 2020, 17:09:25
Eind goed, al goed?

Ik kon het nog niet loslaten. Vooral de opmerking van Remco:

Je schrijft 1 ding nog niet werkt - en mijn vermoeden is dit patroon in de code

Dit is volgens de spec omdat je een opdracht voor het aanzetten van de magneet moet geven, en even later weer een opdracht om de magneet uit te zetten.

Vervolgens ben ik op een Frans forum eens gaan neuzen en kwam ik uit op onderstaande draadje:

http://forum.locoduino.org/index.php?topic=266.15

Daar constateert iemand dat er in de code die ik gebruik een stukje ontbreekt. Ik heb dat toegevoegd zoals ik denk dat het het bedoeling is. Et voila:
1) de wissels kan ik bedienen met multimaus, Koploper en mijn TCO;
2) als ik met mijn TCO de wissels bedien zie ik dat terug op multimaus en Koploper;
3) ik kan Koploper netjes afsluiten en weer opnieuw opstarten.
 (y)

Wat heb ik veranderd?

Oude code:

  // --- Commande pour Boutons à levier --------------------------------------------
  for (int i = NbrePoussoirs*2 +1; i < NbrePoussoirs*2 + NbreLevier +1; i++)
    {
    if (BtEtat != BtEtatAncien)
      {
        Serial.print("Aiguillage ayant l'adresse DCC "); Serial.print(Aig);
        Serial.print(" (Arduino "); Serial.print(Bt);
        BtEtatAncien = BtEtat ;
        XpressNet.setTrntPos (0x0, Aig-1, BtEtat );
        delay (20);
      }
    }

Nieuwe code (in vet de wijziging (een -8 en een regel):

  // --- Commande pour Boutons à levier --------------------------------------------
  for (int i = NbrePoussoirs*2 +1; i < NbrePoussoirs*2 + NbreLevier +1; i++)
    {
    if (BtEtat != BtEtatAncien)
      {
        Serial.print("Aiguillage ayant l'adresse DCC "); Serial.print(Aig);
        Serial.print(" (Arduino "); Serial.print(Bt);
        BtEtatAncien = BtEtat ;
        XpressNet.setTrntPos (0x0, Aig-1, BtEtat-8 );
        delay (20);
        XpressNet.setTrntPos (0x0, Aig-1, BtEtat );
        delay (20);

      }
    }

Groet Juroen
Titel: Re: Wisselbedieningstableau met Arduino mega voor DCC; hulp gevraagd
Bericht door: Remco_Nzo op 23 mei 2020, 18:47:04
 (y)
Remco.