nieuwe Arduino sturing in aanbouw

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

perk

Citaat van: Geert op 17 december 2022, 10:24:36 AM
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

Je kent het gezegde toch, "wat je zelf doet duurt langer, kost meer en is al eens uitgevonden"
of was dat iets anders   ;)

Maar wat ik zelf doe, begrijp ik beter en kan ik aanpassen naar wil.

Geert

Citaat van: perk op 17 december 2022, 10:31:57 AM
Maar wat ik zelf doe, begrijp ik beter en kan ik aanpassen naar wil.

Dat klopt, daarom dat ik de software van LocoNet voor PIC µC zelf heb geschreven om zo het proces van data overdracht beter te begrijpen.

Overigens er bestaan bibliotheken voor Arduino voor LocoNet communicatie.

Geert
Schaal H0 - digitaal zelfbouw - Favoriete Lok: V200 DB

perk

Ik ben in ieder geval weer een stapje verder, het is duidelijk dat die Softserial geen betrouwbare basis is in mijn concept.
Het zou eventueel nog op te lossen zijn door bi-directioneel 'ACK' boodschappen te sturen en checksums, maar daar heb ik allemaal geen zin in.   Het is nu al lastig genoeg, mijn doel is modelbouw en deze sturing is daar maar een klein onderdeel van.

Trouwens geen slecht woord over Loconet of andere sturingen, ik ken die totaal niet (buiten van naam) en heb ze ook nooit bestudeerd.  Dit projectje is eigenlijk gegroeid uit mijn eerste sturing toen ik nog geen CS2 had en uit de hand gelopen na een tijdje toen bleek dat ik een meer modulair systeem wou.

Ik pruts graag met Arduinos en basis electronica, echt een programmeur ben ik niet.    Er is genoeg te vinden op het internet als code, ik leen zeker ook van anderen en van tuturials. 
Mijn code ziet er niet efficiënt uit, maar er is genoeg geheugen in de MEGA over.   

Over een andere boeg dus, met de MEGA als bouwblok.

Dit is nu het concept.

2022-12-16_09-39-21 by Patrick Verret, on Flickr

de code van de NANO eindpunt is aangepast aan de MEGA, daarbij is de replicator functie toegevoegd en enkele condities opgelost die de zaak blokkeerden.
Wat ik dan heb zijn de NANO als zuivere eindpunten, en een keten van MEGA's die tegelijk het signaal kunnen repliceren en verdelen, en tegelijk als eindpunt kunnen dienen.
Uitsluitend door gebruik van de UART seriële poorten.  Het blijft unidirectioneel en zonder checksum, maar dat lijkt niet direct nodig.

Het nadeel is de iets hogere prijs en afmetingen van de MEGA, het voordeel is dat ie veel meer poorten heeft en dus een flexibelere module is (tot 48 servo's dacht ik)

In testopstelling ziet het er zo uit :

2022-12-16_09-35-37 by Patrick Verret, on Flickr

en het werkt ook : https://www.youtube.com/watch?v=SSNL6qCaAA8

Wat doet dit nu?

1) luisteren naar DCC accessoire sturing op de baan en hierop reageren door indien het adres is toegekend aan een drukknop, de LED's aan te passen, interne statemachine aan te passen en ongeacht dat alles toch door te sturen naar de eindpunten.
2) input te krijgen van drukknoppen, en dit door te sturen.
3) NEOPIXEL leds aan te sturen die tonen welke state elke drukknop is

maar met enkele gadgets.

De drukknoppen zijn gelinkt aan een DCC adres (we gaan ervan uit een uniek adres)
Elke drukknop kan ook een impuls sturing zijn (aangepaste kleur LED), voor ontkoppelrails, korte bewegingen, ... lichtjes die uitgaan na een tijdje.   de impulstijd is individueel instelbaar.
Via de serial(0) is er een Menu op de control unit om servo's te ijken, met andere woorden een MIN en MAX positie in te stellen (die kan omgedraaid zijn).  Je kan dat dus met de laptop aan de control unit doen en moet niet onder de baan bij elke arduino gaan. 
Er zit wat muziekjes op  8)  Dit geeft betere bevestiging van de drukknoppen
Natuurlijk software de-bouncing van die drukknoppen

Elk eindpunt blijft minimaal hebben :

  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)

Mijn plan naar de toekomst is nog eens soort 'AI' module te schrijven voor de centrale unit die dan seinbeelden gaat generen op basis van de stand van de statemachine.
Dit ga ik doortrekken naar de MEGA eindpunten zodat je door het sturen van 1 adres een keten van acties kan veeroorzaken, of vb een sub-programma opstarten voor een laspost simulatie met timers op een paar leds. 

Op onze baanplan gaat dat wellicht zijn dat als de wissels in een bepaalde configuratie staan, de seinbeelden aangepast worden en de poort naar het industrieterrein open gaat.

Ik verwacht dat zo een module niet te moeilijk te schrijven is, gebaseerd op de variabelen (boolean)  in SW die ik al heb die aangeven dat een bericht binnengekomen is.
MAAR eerst moet ik verder aan de baan werken en modules in elkaar steken vandaag.    Programmeren is voor in de week 's avonds.


Geert

#18
Blijven volharden Patrick, het is een proces van vallen en opstaan, en veel bijleren tijdens dit proces.

Ik ga wat tips geven over mijn leerproces i.v.m. hardware en software waar ik naartoe wil:

Probeer het eenvoudig te houden, mijn eerste ontwerpen waren ook zoveel mogelijk in en uitgangen op 1 PCB met verschillende functies (seinen, wissels terugmeldingen enz..) , daar ben ik van terug gestapt. 1 functie per PCB en max. 16 in/uitgangen

Geen software instelling van adressen in jouw geval DCC adressen per PCB, doe ik nu via DIP switches. (i.v.m. snel vervangen defecte PCB)

Zo weinig mogelijk connectoren en/of verbindingen tussen de verschillende hardware componenten. Slechte verbindingen zijn het moeilijkst te achterhalen als iets niet werkt. Het principe van Arduino verbindingen met test draadjes zijn mooi om te testen, maar een  bron van ergernis


Citaat van: perk op 17 december 2022, 11:03:59 AM
Het zou eventueel nog op te lossen zijn door bi-directioneel 'ACK' boodschappen te sturen en checksums, maar daar heb ik allemaal geen zin in.   Het is nu al lastig genoeg, mijn doel is modelbouw en deze sturing is daar maar een klein onderdeel van.

Ik heb ook nooit begrepen wat het nut is bij DCC dataoverdracht van een Checksum, er bestaat geen mogelijkheid om data overdracht fouten terug te melden naar de centrale... (overigens bestaat wel bij LocoNet, ook voor DCC opdrachten via LocoNet :D )
Geert
Schaal H0 - digitaal zelfbouw - Favoriete Lok: V200 DB

raf

Ik volg Geert zijn redenatie
Elke wissel heeft zijn eigen sturing en deze stuur ik via een oude decoder v1 v2 v3
Dus per decoder heb ik 4 uitgangen dus 4 wissels
Licht is het zelfde printje andere software en deze krijgen over een draad dag of nacht.
S'avonds gaat deze draad naar nul potentiaal en dan begint elk printje zijn eigen routine af te lopen .
Tot het morgen word en de draad weer positief word.
Maar moeilijk kan ook en ik blijf dit volgen

gr raf
If I make mistakes in "spelling"
Remember it's the pen, that's bad
Don't lay the blame on me.

perk

Ja, totaal akkoord over de draadjes, dat was beter met de nano kroonsteenshield.
Ik moet daar nog eens over nadenken voor de Mega.

Maar ik heb geen ervaring met het zelf maken (of laten maken) van PCB

Geert

#21
Er zijn adapters voor nano naar kroonsteentjes, maar dat wis je wel, kun je zelf niet ontwerpen en maken voor die prijs.

PCB's ontwerpen is een leerproces, laten maken stelt niet veel voor. Begin dit jaar was dat (het laten maken) 1,5€ per PCB 100/100mm dubbelzijdig voorgeboord en al...

Geert
Schaal H0 - digitaal zelfbouw - Favoriete Lok: V200 DB

dani

Citaat van: Geert op 17 december 2022, 16:29:20 PM
Er zijn adapters voor nano naar kroonsteentjes, maar dat wis je wel, kun je zelf niet ontwerpen en maken voor die prijs.
Volgens mij zijn die zelfs al te zien op zijn foto's :)


Voor de Mega kan je  van die dubbelrij contactjes kopen en daar een stuk flatcable aan solderen...


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