DCC Servo decoder met Arduino voor dummy’s

Gestart door NTeering, 13 november 2015, 15:10:19 PM

adrievans

Citaat van: dani op 16 november 2015, 14:11:42 PMde compiler in de Arduino SDK zal je wel op je fouten wijzen en zorgen dat je ze kan verbeteren.

Weet ik maar het verschil zit tussen alles verbeteren of enkele dingen.
Heb trouwens iets gevonden waarbij de stappenmotor de draaibeweging van een potmeter volgt.
Iets om mee te proberen/vogelen.

NTeering

Hallo allemaal,

De Arduino servo decoder voor dummy's is nu nog makkelijker.
Je hebt de Arduino IDE niet meer nodig om decoder te configureren!  (y)
Er wordt nu gebruik gemaakt gemaakt van een terminal emulator; deze is geheel voor decoder aangepast.
Ook kun je de commando's sneller invoeren omdat er geen <enter> meer nodig is.
Uiteraard zijn er ook wat bugs uitgehaald en is wat functionaliteit toegevoegd.
De Arduini IDE is vernieuwd; nu wordt versie 1.6.6 geïnstalleerd.
De IDE is alleen nodig voor het uploaden van het decoder programma; dat gebeurt echter allemaal met gebruiksvriendelijke scriptjes.

Wat kun je er ook alweer mee?
•   Besturen van maximaal 12 servo's t.b.v.  wisselaansturing zonder puntstukpolarisatie of maximaal 9 servo's met puntstukpolarisatie.
De puntstukpolarisatie wordt gerealiseerd middels een extern relais.
•   Interactief, via beeldscherm en toetsenbord dus, configureren van de servo's. Dat is geheel onafhankelijk van de gebruikte DCC centrale. Hierbij is de Arduino software NIET nodig.
•   Van iedere servo apart kunnen de begin- en eindhoek op de graad nauwkeurig worden ingesteld.
•   Een random DCC adres (1-2048) toekennen aan iedere servo.
Dus niet noodzakelijkerwijs opeenvolgende adressen.
•   Iedere servo (max. 9) kan worden gekoppeld met een relais voor puntstukpolarisatie.
Bij het verdraaien van de servo zal, halverwege de verdraaiing, dit relais worden omgezet.
•   Een test optie. Hierbij gaan alle servo's een aantal malen heen-en weer gaan.
•   Vastleggen van 'inversie'. Hiermee kan worden ingesteld of een wissel bij bv een verdraaiing naar de kleinste hoek rechtdoor of afbuigend moet worden gezet. Dit is nodig omdat de servo op meerdere manieren gemonteerd kan worden.
•   Een documentatie optie waarmee alle instellingen worden getoond.
•   Het toekennen van een administratief nummer aan iedere servo.
•   Een reset optie waarbij alle instellingen uit het geheugen van de Arduino verwijderd worden.
•   Instelbare snelheid van de servo arm (5-50 msec. per graad). Deze is voor alle aangesloten servo's gelijk
•   Vastleggen van het DCC adres waarmee de decoder naar de configuratie toestand gaat. (Default 1000)
•   Een help optie toont alle commando's voor het configureren.
•   Een logging optie waarmee alle configuratiesessies worden bewaard.
•   Onafhankelijk van gebruikte busstructuur (LocoNet, S88 e.d) De aansturing is echter specifiek voor DCC.

Download hier alle nieuwe software (zipfile)

Download hier de nieuwe handleiding (pdf)

Download hier de installatiehandleidng (pdf)

Als je de Arduino IDE al geïnstalleerd hebt download hier dan de extra benodigde bestanden.

Bekijk hier een filmpje  filmpje van de installatie van de software.

Voorbeeld dialoog:


NTeering

Uit wat reacties is gebleken dat bij gebruik van een originele Arduino de meegeleverde CH340 drivers niet voldoen.
Daarom is de installatie wat aangepast.
Nu worden zowel de originele drivers als de CH340 driver geïnstalleerd.
Hiermee hoop ik de driver problemen te hebben opgelost.
Ook is er nu een complete installatie voor als je de Arduino IDE al hebt geïnstalleerd.

Beide installaties zijn getest op Windows 7, 8 en 10 (allen 64 bit) en met een Chinese Arduino.
Zelf heb ik geen originele Arduino en dus heb ik er ook niet mee kunnen testen.
Iemand anders wellicht?

Downloads:

Handleidng servodecoder
---------------------------
Software inclusief Arduino IDE 1.6.6
Installatie handleiding
----------------------------
Software zonder Arduino
Installatie handleiding
----------------------------
Alleen CH340 drivers

Mvg
Nico

minitreintje

Die drivers zijn inderdaad nodig bij Windows.
Zelf heb ik Linux dus kan je helaas niet helpen met testen. Ik heb ook een Chinese Arduino maar dan nog met de oude chip (Atmega16) welke origineel ook gebruikt wordt.
Maar die CH340 chip is goedkoper tegenwoordig en nu vind je die oude zo goed als niet meer aan de prijs van toen...

groeten,
Dylan
Märklin C-rail modulebaan met Arduino

NTeering

Inleiding
Het gebruik van een Arduino microcomputer in de modelspoorbouw is bij velen wel bekend.
Echter het daadwerkelijk zelf toepassen is voor de meesten een brug te ver.
Het programmeren of het doen van eenvoudige aanpassingen in een programma wordt toch als een groot probleem gezien.
Daardoor blijft de Arduino het domein van een zeer beperkte groep met wat meer technische kennis.
Dat is jammer, want met de Arduino kun je heel je modelspoorbaan goedkoop automatiseren.
Om de Arduino voor iedereen bereikbaar te maken heb ik daarom een programma gemaakt voor een Multifunctionele DCC decoder voor servo's en accessory's op basis van een Arduino.
Met dit programma is het niet meer nodig om zelf nog maar één letter Arduino-code te schrijven.
Deze decoder heb ik MARDEC genoemd en is een vervolg op de servo decoder zoals beschreven in dit draadje.

Net als bij iedere andere DCC decoder moet deze nog wel geconfigureerd worden. Dit configureren wordt meestal ten onrechte programmeren genoemd.
Om spraakverwarring te voorkomen gebruik ik de term programmeren voor het schrijven van de Arduino-code en de term configureren voor het uitvoeren van het programma. Bij dit configureren worden de servo's ingesteld.

Het programma werkt in twee verschillende 'toestanden'.
In de configureerstand kunnen de servo's en accessory's worden ingeregeld middels één-letter commando's vanaf het toetsenbord. Hierbij communiceert de MARDEC via een USB-kabel met de computer. Hier zijn dus geen DCC signalen voor nodig.
Middels een specifiek commando ('E') wordt overgegaan naar de bedrijfstoestand.
In de bedrijfstoestand worden de servo's aangestuurd met het DCC signaal. Er is dan geen USB-kabel meer nodig. Door het sturen van een specifiek, zelf te bepalen, DCC adres wordt weer overgeschakeld naar de configureerstand.

Waarom een Arduino?
De belangrijkste reden is de prijs. Je moet ze dan wel in China bestellen bij b.v. nl.Aliexpress.com
Een andere reden is het gemak waarmee alles geconfigureerd kan worden. Dat gebeurt geheel interactief en er is geen DCC-centrale voor nodig.

De installatie van alle software is zeer gebruiksvriendelijk. Hierbij wordt alle vereiste software in één keer geïnstalleerd. Ook het uploaden van het decoder programma naar de Arduino gaat geheel automatisch.

Mogelijkheden
De MARDEC decoder kent de volgende mogelijkheden:
•   Aansturen van maximaal 12 servo's t.b.v.  wisselaandrijving zonder puntstukpolarisatie of maximaal 9 servo's met puntstukpolarisatie. De puntstukpolarisatie wordt gerealiseerd middels een extern relais.
•   Het op 7 manieren aansturen van accessory's, waaronder aansturing van wisselspoelen en variabele PWM aansturing.
•   Interactief, via beeldscherm en toetsenbord dus, configureren van de servo's en accessory's. Dat is geheel onafhankelijk van de gebruikte DCC centrale. Hierbij is de Arduino software NIET nodig.
•   Van iedere servo apart kunnen de begin- en eindhoek op de graad nauwkeurig worden ingesteld.
•   Een random DCC adres (1-2048) toekennen aan iedere servo of accessory.
Dus niet noodzakelijkerwijs opeenvolgende adressen.
•   Iedere servo (max. 9) kan worden gekoppeld met een relais voor puntstukpolarisatie.
Bij het verdraaien van de servo zal, halverwege de verdraaiing, dit relais worden omgezet.
•   Voor iedere servo kan een aparte draaisnelheid worden ingesteld. Hierdoor kunnen servo's makkelijker voor andere doelen worden gebruikt dan alleen wisselaandrijving
•   Een test optie. Hierbij gaan alle servo's drie maal heen-en weer gaan en worden accessory's geactiveerd.
•   Vastleggen van 'inversie'. Hiermee kan worden ingesteld of een wissel bij bv een verdraaiing naar de kleinste hoek rechtdoor of afbuigend moet worden gezet. Dit is nodig omdat de servo op meerdere manieren gemonteerd kan worden.
•   Een documentatie optie waarmee alle instellingen worden getoond.
•   Het toekennen van een administratief nummer aan iedere servo/accessory.
•   Een reset optie waarbij alle instellingen uit het geheugen van de MARDEC verwijderd worden.
•   Instelbare default snelheid van de servo arm (5-50 ms. per graad).
•   Vastleggen van het DCC adres waarmee de decoder naar de configuratie toestand gaat. (Default 1000)
•   Vastleggen van het DCC adres waarmee de servo- en accessorystanden worden opgeslagen. Na een herstart worden de servo's en accessory's weer in deze stand teruggezet.
•   Accessory's kennen de volgende opties:
1.   Single steady. Hierbij is 'n pin permanent hoog of laag afhankelijk van de aansturing.
2.   Double steady. Zelfde als single steady, echter een tweede pin heeft de 'omgekeerde' waarde.
3.   Single flashing. Hierbij gaat een pin afwisselend hoog(aan) en laag(uit). De 'aan'-tijd en de 'uit-tijd zijn afzonderlijk instelbaar.
4.   Double flashing. Zelfde als single double, echter een tweede pin heeft de 'omgekeerde' waarde.
5.   Single one shot. Hierbij gaat een pin een korte instelbare tijd even hoog als de aansturing van laag naar hoog gaat.
6.   Double one shot. Hierbij gaat een pin een korte instelbare tijd even 'hoog' als de aansturing van laag naar hoog gaat en een andere pin als deze van hoog naar laag gaat. Hiermee kunnen dus ook wisselspoelen aangestuurd worden.
7.   Analoge (PWM) aansturing. Hierbij gaat een pin, in een apart instelbare tijd, van 0 tot een instelbaar maximum (max. 255) als de aansturing van laag naar hoog gaat en weer terug naar 0, in een apart instelbare tijd, als de aansturing van hoog naar laag gaat.
•   Een help optie toont alle commando's voor het configureren.
•   Een log-optie waarmee alle configuratiesessies worden bewaard.
•   Onafhankelijk van gebruikte busstructuur (LocoNet, S88 e.d). De aansturing is echter specifiek voor DCC.

Het programma zelf is Engelstalig. De handleidingen zijn in het Nederlands.
Uiteraard gaat het om een eerste beta versie. Dus ik ben bij deze verontschuldigd voor eventuele fouten.

Een voorbeeld dialoog:

MARDEC, the Multifunctional ARduino dcc DECoder
USB version 1.0

Specify number for this MARDEC
Enter value between 1 and 100: 1
This is your MARDEC number 1

Starting configuration of MARDEC 1

Please specify action
P/R/T/D/C/S/M/E/?: p

Specify pin number
3-12,14-19: 3
Pin is undefined. First specify DCC address

Set DCC address for pin 3
Enter value between 1 and 2048: 1
DCC Address set to 1

Specify Accessory(1) or Servo(2)
Enter value between 1 and 2: 2
Pin 3 set as Servo pin.
Servo 0 on pin 3 and address 1 set to 75 degrees

Specify action for Servo on pin 3
A/N/9/+/-/C/F/D/T/M/I/?/enter: -
LOW angle set to 74

Specify action for Servo on pin 3
A/N/9/+/-/C/F/D/T/M/I/?/enter: c
Servo 0 on pin 3 and address 1 set to 105 degrees
Angle set to HIGH: 105

Specify action for Servo on pin 3
A/N/9/+/-/C/F/D/T/M/I/?/enter: +
HIGH angle set to 106

Specify action for Servo on pin 3
A/N/9/+/-/C/F/D/T/M/I/?/enter: f

Specify frog pin for servo on pin 3
3-12,14-19: 19
Pin 19 set as frog pin for servo on pin 3

Specify action for Servo on pin 3
A/N/9/+/-/C/F/D/T/M/I/?/enter: t
Testing servo 0 on pin 3
Servo 0 on pin 3 and address 1 set to 74 degrees
Servo 0 on pin 3 and address 1 set to 106 degrees
Servo 0 on pin 3 and address 1 set to 74 degrees
Servo 0 on pin 3 and address 1 set to 106 degrees

Specify action for Servo on pin 3
A/N/9/+/-/C/F/D/T/M/I/?/enter:

Pin settings are saved!

Please specify action
P/R/T/D/C/S/M/E/?: p

Specify pin number
3-12,14-19: 4
Pin is undefined. First specify DCC address

Set DCC address for pin 4
Enter value between 1 and 2048: 2
DCC Address set to 2

Specify Accessory(1) or Servo(2)
Enter value between 1 and 2: 1
Pin 4 set as Accessory pin.

Specify mode for this accessory
Enter value between 1 and 7: 4
Mode set to Double Flashing.

Specify companion pin for accessory on pin 4
3-12,14-19: 18
Pin 18 set as companion pin for accesory on pin 4

Specify 'on' time:
Enter value between 100 and 5000: 300
'On' time set to 300 msec.

Specify 'off' time:
Enter value between 100 and 5000: 300
'Off' time set to 300 msec.

Specify action for Accessory on pin 4
A/N/H/L/M/C/?/D/T/F/R/enter: t
Testing accessory 0 on pin 4 in double flashing mode
Accessory 0 on pin 4 and address 2 started flashing
Accessory 0 on pin 4 and address 2 stopped flashing

Specify action for Accessory on pin 4
A/N/H/L/M/C/?/D/T/F/R/enter:

Pin settings are saved!

Please specify action
P/R/T/D/C/S/M/E/?: d

Settings of MARDEC number 1

Pin  3: Servo with DCC 1, Nr 0, Angles 74/106, Frog pin 19, no Inversion, Speed 25
Pin  4: Accessory with DCC 2, Nr 0, Double Flashing, Comp. 18, Time 300/300
Pin  5: not used
Pin  6: not used
Pin  7: not used
Pin  8: not used
Pin  9: not used
Pin 10: not used
Pin 11: not used
Pin 12: not used
Pin 14: not used
Pin 15: not used
Pin 16: not used
Pin 17: not used
Pin 18: Companion pin for pin 4
Pin 19: Frog pin for pin 3

Default Servo speed: 25 ms/step
DCC address to start configuration mode: 1000
DCC address to save servo settings: 1001

Please specify action
P/R/T/D/C/S/M/E/?:


In deze dialoog gebeurt het volgende:
- Selecteren van Pin 3
- Pin 3 als servo pin instellen
- Een DCC-adres toekennen aan pin 3 (1)
- De 'lage' hoek een graad aflagen.
- Met het C-commando de 'hoge' hoek selecteren.
- Deze hoek met één graad ophogen.
- Met het F-commando een 'frogpin' toekennen (aan deze pin komt het relais voor eventuele puntstukpolarisatie)
- Met het T-commando testen van de servo
- Met <enter> de wijzigingen opslaan en terug naar 'algemene commando's'.
- Met het D-commando een overzicht tonen.
- Selecteren van pin 4
- Pin 4 als accessory pin instellen met mode 4 (double flashing).
- Ingeven van de 'aan'-en 'uit'-tijden.
- Testen van de instellingen.
- Met het D-commando een overzicht van de instellingen weergeven.

Meer weten?
Bekijk dan deze downloads:

Downloads:

Handleiding MARDEC decoder
---------------------------
Alle MARDEC software inclusief de Arduino IDE 1.6.6
MARDEC Installatie handleiding (volledig)
----------------------------
MARDEC software zonder Arduino IDE
Installatie handleiding (MARDEC only)
----------------------------
Alleen CH340 drivers
Deze zijn nodig als je een Chinese Arduino hebt.

Wie durft?

More DCC fun with MARDEC!

Groetjes
Nico

Michiel

Indrukwekkend, en heel aantrekkelijk. Ik ga bij tijds MARDEC eens uitproberen.
Knap, compleet en zorvuldig werk naar de beschrijving te oordelen.
groetjes, Michiel ...een modelbaan bouwend: het station Brussel-Luxemburg in 1:160, en een paar videos.
TPIe - Belgische Staatsspoorwegen - DCC(Lenz) - Koploper - N(1:160) - code55(Peco) - zelfbouwer(50%)

PietB

Hi Nico,
ben je er hier mee gestopt?
En ga je alleen op BNLX verder?

grt Piet.

NTeering

Hallo Piet,

Nee, ik ben er zeker niet mee gestopt. Kijk maar op het BNLspoor forum.
Daar zijn we al aan pagina 27
http://forum.beneluxspoor.net/index.php/topic,68257.new.html#lastPost
Maar in Vlaanderen is kennelijk geen enkele belangstelling.
Niemand is serieus geïnteresseerd.

Mvg
Nico

minitreintje

Van mij is er wel belangstelling voor Arduino maar ik bouw mijn decoders zelf dus ja :p

Dylan
Märklin C-rail modulebaan met Arduino

Geert

Schaal H0 - digitaal zelfbouw - Favoriete Lok: V200 DB

NTeering

@Geert,
Waar volg je dan? Op deze site gebeurt niks

@Minitreintje,
Dan behoor je niet tot de doelgroep van de MARDEC.
Maar zijn alle Vlamingen dan Arduino goeroe?

Nico

Geert

Misverstanden Nico, op dit forum hebben we zelfs een topic enkel voor modelspoor en microcontrollers. Ik heb zelf al heel wat ervaring met DCC, en ken zelfs heel wat Vlamingen die daar ook iets van af weten.  ;)

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

dani

ik maak mijn spullen zelf en weiger als "dummy" door het leven te gaan

"voor iedereen"  was misschien wat zachter geweest
De kruik is te water gegaan...
De kruik is niet meer.

NTeering

De MARDEC is niet voor iedereen. Je moet wel een DCC centrale hebben.
Hij is ook niet voor al die slimmeriken die toch wel weten hoe een Arduino te gebruiken. De goeroes dus.
Maar wel voor de geïnteresseerde elektronica/Arduino leek die ook goedkoop en eenvoudig een multifunctionele dcc decoder willen gebruiken.
http://forum.beneluxspoor.net/index.php/topic,68257.new.html#lastPost


Valentijn


Ik ga hem binnenkort testen samen met een Arduino mini pro.
Maar eerst moet de bootloader van de mini pro vervangen worden door deze van een UNO om voldoende ram vrij te hebben om de mardec code te kunnen plaatsen.
De UNO zou nu onderweg moeten zijn uit China.

Valentijn
Groeten Valentijn - Loskaai - Okegem - Innes Mill - Luxor Sugarcane Valley - Cubana