nieuwe Arduino sturing in aanbouw

Gestart door perk, 04 december 2022, 16:20:50 PM

perk

In het verleden heb ik mijn vorige baan uitgerust met Arduino servosturing gekoppeld aan de CS2.
Mijn code en ontwerp waren eigenlijk meer een samenraapsel van patches en aanpassingen, niet iets dat op termijn kan groeien.
Dit heb ik nu aangepast met een nieuw modulair ontwerp, gebaseerd op 3 elementen.

Arduino DCC setup by Patrick Verret, on Flickr

1) Centrale DCC ontvanger (moet ik nog terug schrijven)
2) Nano repeaters die simpelweg serieel het protocol verdelen
3) Nano eindpunten, die luisteren naar de seriele datastream, pikken hun DCC addres en payload eraf en reageren gepast.
Dit eindpunt heeft :

  3 volledige seinbeelden , telkens 2 DCC adressen met instelbare knippervertraging (tegenspoor) per sein
  3 digitale 1 pin outgangen, met instelbare knippervertraging per uitgang, telkens 1 DCC adress
  3 servo's met individuele vertraging, reagerend op telkens 1 DCC adress (0 of 1)

pcb test eindpunt by Patrick Verret, on Flickr

Seriële signalen zonder versterking zijn niet (in theorie) gemaakt voor erg ver te gaan, maar in het verleden was een meter geen probleem en ik heb deze setup met draden van 5 meter getest.   De jitter op de servo komt volgens mij van een te zwakke voeding en misschien wat interferentie (in het verleden aangepakt met capaciteit naar de grond)

Video'tje van de test :

https://youtu.be/khJhz6-GyUc

De repeater Nano werkt ook al, maar de centrale DCC ontvanger moet ik nog in elkaar steken.  Daar de CS2 kapot is, gaat deze centrale MEGA een mix van DCC ontvanger, accessoire schakelaar en fake seinbeeld generator worden.



Havoc

Stevig projectje. Waarom geen rs-485 voor de seriële verbinding, dat gaat tot 1km of zo zonder veel problemen als je niet te snel wil gaan (100 kbps in dat geval).
Met vakantie voor onbepaalde duur.

Geert

#2
Mooi project, 

Met een goedkoop MAX232 converter van TTL naar RS232 spanningsniveau ( en andersom) kan je ook al verder in afstand geraken.

Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen

perk

ik weet het, ik zou een RS232 printje ertussen kunnen zetten.  Maar in werkelijkheid lijkt het gewoon niet nodig te zijn.
Mijn modules liggen toch maar een metertje van elkaar.   En door het principe van een repeater gaat het signaal in ere gehouden worden indien ik de baan ooit verhuis en groter maak.

Het is nog steeds redelijk basis programmeerwerk.   Geen interrupts en soms ook niet eens een loop. (loops zijn cool, maar binnen 6 maand weet ik niet meer hoe ik al die dingen ontworpen heb en de berekeningen zijn). ah ja, en GEEN delay();  8)

Ik vind het de moeite om zelf iets te maken, want het geeft buiten veel knutselplezier, ook de mogelijkheid om dingen op maat te automatiseren of laten bewegen.
Mijn nieuwe baan gaat een stoomdepot(je) hebben, en ik heb al ideeën voor animaties, opengaande poorten, lassers...

Vele wegen leiden naar Rome, maar ik wou geen 800 euro voor een CS3 neertellen.  En in het nieuwe concept van onze baan is dat niet echt nodig, we gaan ons meer concentreren op scenery in plaats van computer rijden (wat ik ook echt wel leuk vind)

Nu alleen nog die centrale unit doen, maar dat komt wel goed.   Ik heb eerst deze middag een behuizing in elkaar gelijmd, dan kan ik de schakelaars en LEDS direct erin vijzen, ipv op een testboard en stukje voor stukje laten werken.

dani

hmmm  , interessant projectje, deze ga ik zeker en vast volgen !!!

Seriële communicatie RS-232 tot een meter of 3 (of zelfs meer) mag in principe geen probleem zijn als je kabels afgechermd zijn .
Gebruik je in je repeater dan de "native" serial poort (gardware serial) als invoer en dan een softSerial als uitvoer naar de volgende in de ketting ?
Let dan wel op dat er vertragingen (miniem weliswaar) kunnen optreden hierdoor en je soms even langer gaat moeten wachten om commando's door te seinen.
Maar in principe kan het prima werken zo.

Je zou ook kunnnen overwegen om een BUS  systeem op te zetten (bvb via I2C communicatie ). Dan stuurje gewoon de data op de bus draden en elke "repeater" wordt dan gewoon een apart stationnetje met een eigen adres die  "zijn" data oppikt.    Maar misschien is dit inderdaad overkill in dit geval an voldoet jouw oplossig ruimschoots.   Het is uiteindelijk ook geen hyper snelle switching die je nodig hebt.

Ik heb zelf mijn  wissel sturing met Arduino Mega's (2580) gemaakt  namelijk 1 master en 3  "volgers".  Daarbij maak ik gewoon gebruik van de 3 extra seriële poorten op de  Mega.  Aangeziek ze op dezelfde plaat zitten ('kabellengte max 50 cm)  is dat geen probleem.

In principe kan ik met mijn huidige setup via DCC signaal naar de master tot maximaal 90 wissels (30 per Mega) aansturen alsook enkele servo's en andere items.
Er is ook mogelijkheid tot invor via een klaviertje en er is een LCD display aanwezig.   Een IR afstandsbediening is voorzien om ook van op een afstandje  een wissel manueel te kunnen verleggen
Tenslotte is er ook een RFID lezer op aangesloten om met een "access badge" te werken waar in de toekomst evntueel ook "rijroutes" kunnen worden voorgeprogrammeerd.



Ik volg je op de voet ....

https://www.youtube.com/watch?v=940aCGJpGFg

https://www.youtube.com/watch?v=gq8FsCshVHk

De kruik is te water gegaan...
De kruik is niet meer.

perk

wow Dani,

jouw setup is toch nog wel een serieus niveau hoger dan hier.   

Zo ambitieus ben ik niet.   IC2 interconnectie heb ik bekeken, maar in principe is dat voor nog kortere afstanden en dat risico wou ik niet nemen.

Ik gebruik inderdaad de echte seriele poort voor te ontvangen, en softserial voor replicatie.  Ik heb het nog niet kunnen testen met meer dan 2 'eindnano's maar de mogelijkheid bestaat dat ik toch even een virtuele pauze moet nemen tussen doorsturen, ik ga daar best in de centrale MEGA al een provisie in software voor maken (goede tip).  Alhoewel door de UART voor ontvangst te gebruiken daar al een buffering op moet zitten.

Oorspronkelijk wou ik meer met MEGA's werken, omwille ook van het grotere geheugen en de meerdere echte seriele poorten.   Maar de kleine nano's met hun kroonsteentje zijn super handig.
En ik wou een meer verdeelde sturing in plaats van teveel kabeltjes op 1 arduino terugbrengen.    Dat resulteerde hier in draadjes spagetti en interferentie.
Nu is het doel telkens een kleine NANO dicht bij de wissels te zetten, veel kortere kabeltjes voor de seinen ook.

Het seriele protocol (als je het dat kan noemen, want het is echt simpel) kan momenteel maar byte adressen aan, dus ik zit vast aan 255 DCC adressen.
Voor mijn doel is dat genoeg, indien nodig kan ik het nog uitbreiden door die code eens grondig te herwerken maar ik wil liever tijd spenderen aan andere zaken nu.
Het is altijd balanceren waar je tijd in steekt, en soms moet ik zeggen 'het is goed genoeg'

Ik had nog een ethernet shield liggen en het kriebelde even om dit op de centrale eenheid te integreren...   en bluetooth in plaats van kabeltjes... en een tft scherm.
Er zijn echt bijna geen grenzen meer aan wat mogelijk is met die dingen.  Ik heb ooit zo eens iets gemaakt met RF en serieel om gewichtmeting te doen van de bijenkast in de tuin en dat door te sturen en te loggen in het huis.   Uiteindelijk niet gelukt omdat de ijking steeds verliep.

Bij de modeltrein setup liep ik tegen de limitatie van de libraries aan.   Ik heb vroeger conflicten gehad tussen de DCC, softserial, PWD led sturing en de servo libraries.
Iets met overlappende timers als ik de verhalen van anderen op het internet lees, niet evident om op te lossen.
Daarom is het soms handig voor mij om de verschillende functies in verschillende Arduino's onder te brengen.

Aiai  :o, nu dat ik je post eens herlees en dat deeltje van de IR afstandsbediening zie begin ik weer te twijfelen.   Ethernet servertje, kleine website met knopjes... zou wel een mooi alternatief zijn indien de baan groeit, in plaats van de echte knopjes op 1 plaats.

dani

Citaat van: perk op 05 december 2022, 11:37:38 AM
Aiai  :o, nu dat ik je post eens herlees en dat deeltje van de IR afstandsbediening zie begin ik weer te twijfelen.   Ethernet servertje, kleine website met knopjes... zou wel een mooi alternatief zijn indien de baan groeit, in plaats van de echte knopjes op 1 plaats.

Een  ESP32  met daarop een html interface en een link naar de master arduino... 
Dat zal bij mij de volgende uitbreiding kunnen worden.
Maar anderzijds kan ik via de smartphone koppelen op mijn Ecos en daar de wissel adressen rechstreeks aanspreken dus is het wat "redundant"
Om te rijden zonder centrale zou het handig zijn, maar dan rijden er geen loks want die zijn ook digitaal :)

Er zijn inderdaad weinig grenzen alleen je  inventiviteit en de hardware beperkingen (poorten en data overdracht) en soms zoals je aanhaalde de compatibiliteit met de verschillende libraries onderling. 
Voor de IR  besturing heb ik zelf een kleine simpele library gemaakt, om te kunnen gebruiken met de oude IR afstandsbediening van mijn telenet decoder
De kruik is te water gegaan...
De kruik is niet meer.

dani

Citaat van: perk op 05 december 2022, 11:37:38 AM
Het seriele protocol (als je het dat kan noemen, want het is echt simpel) kan momenteel maar byte adressen aan, dus ik zit vast aan 255 DCC adressen.

Je kan natuurlijk ook doen zoals ik en op je master Arduino een mapping maken tussen DCC adressen  en de fysieke uitgangen.
Bij mij zitten de wissels op  DCC 701-790   maar de mapping is echt naar fysieke poorten op slave 1, 2 of 3   (bvb  1.1--1.30  ...    2.1--2.30  ... 3.1--3.30 )
De kruik is te water gegaan...
De kruik is niet meer.

perk

die mapping had ik vroeger, dan keek de centrale Arduino op welke seriele poort de servo stond en stuurde een positie door ipv een DCC payload.
Daar wou ik nu vanaf om meer modulair naar de toekomst te gaan.

dani

strak plan !!!  komt goed zo te horen
De kruik is te water gegaan...
De kruik is niet meer.

svvander

Prullen zegt 'm dan  ;D Dat is toch al een serieus knappe opstelling!
Sven Vandersmissen HO - AC - Belgisch (en al wat op het Belgische net verschijnt) - Tijdperk IV - V -VI
Voorzitter MSC De Locloods VZW (https://www.de-locloods.be/) - info@de-locloods.be

perk

AAAAAHHHHHGGGG  :o :o :o :o

alles werkt bijna, ik heb mijn controlepaneel gebouwd.
Drukknoppen, software debouncer, Neopixel leds, statemachine, DCC ontvanger, impulssturing, zelfs sound... alles bijna af.  Gewoon nog een menutje om de servo's te kunnen ijken.

MAAR

werkt prima als ik de MASTER (zie tekening eerder) direct aan de Eindnano hang.
werkt ook prima als ik de laptop aan de USB poort van de replicator laat hangen (waarom, geen idee)

ECHTER

als het systeem zonder laptop autonoom werkt met de replictor ertussen, werkt het meestal.   Maar niet altijd.
Ik heb gemerkt dat de replicator uitgaande data sturing het soms niet doet.   Onvoorspelbaar soms.  Meestal ok, maar soms ook niet (hatelijk he) en dan weer wel.

Ik heb een hoop trucjes van het internet geprobeerd, maar tot de conclusie gekomen dat de SoftSerial functie niet betrouwbaar is hiervoor.
Data 2x versturen helpt niet, baudrate naar 9600, delay(1) ertussen, zelfs met maar 1 Softserial instance dropt ie soms uitgaand verkeer.

Ik geef dit op ... dat gooien we het over een andere boeg.
Iets duurder en groter om in te bouwen, ik ga een MEGA gebruiken als replicator en eindpoint tegelijk.   

Dan kan ik daisy chain setup maken, eigenlijk mijn oorspronkelijk idee.

De eerste tests met een MEGA als replicator lijken goed te gaan, nu weeral een hoop functies tesamen proberen te gieten .

stay tuned .


dani

Inderdaad  je zegtr het zelf, SOftSerial werkt niet alijd goed.
Daar was ik een beetje bang voor.  Daarom gebruik ik in mijn setup ook  Mega2580  Arduino's.
Dan heb je in totaal 4 "echte" seriële poorten beschikbaar en die zijn net dat kleine beetje meer betrouwbaar.
Deze vertrouwen op interrupts en niet op software caption en "overschot van cyclustijden".
Maar ook daar moet je opletten want er is altijd de Serial0 die prioriteit krijgt op de rest.

Ik ben benieuwd naar je Next Step, en hoe je het gaat doen, ik volg van heel dicht bij


SUCCES MAN !!    Komt wel goed,   en  bekijk het positief, je hebt toch weer wat bijgeleerd !
De kruik is te water gegaan...
De kruik is niet meer.

dani

Citaat van: perk op 15 december 2022, 21:36:04 PM
AAAAAHHHHHGGGG  :o :o :o :o
stay tuned .



....   en in "supporter" mode aan de zijlijn met sjaal, muts en toeter !
De kruik is te water gegaan...
De kruik is niet meer.

Geert

Citaat van: perk op 15 december 2022, 21:36:04 PM
Dan kan ik daisy chain setup maken, eigenlijk mijn oorspronkelijk idee.

Eigenlijk kom je dan zo uit op het internet van het modelspoor aansturingen 'LocoNet'  ;)

Geert
Schaal HO - digitaal zelfbouw - Favoriete Lok: V200 DB
Huidig project: LocoNet 16 poorten ingangen/uitgangen