Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Bouwbeschrijving Pec ex Dec van FRIE door TonM
Vandaag om 23:20:35
Eén leuke of mooie trein/spoor foto van je vakantie. door Hans van de Burgt
Vandaag om 23:08:01
De projecten van Ruben (NL H0) door Ruben90
Vandaag om 23:05:04
YaMoRC YD8248 Servodecoder door Steven Loosman
Vandaag om 22:53:25
Mijn eerste H0-modeltreinbaan in aanbouw door MichielB
Vandaag om 22:32:26
Aanpassen baanplan bestaande baan door MichielB
Vandaag om 22:25:43
Hoeveel treinen op Piko Trafo 55008? door Modeltreinmulder
Vandaag om 22:23:20
NS2900-serie / Staatsmijnen SM 150-serie (H0) door jandcargo
Vandaag om 22:19:39
booster vraag door Patrick Smout
Vandaag om 22:05:38
Aachenau West door MichielB
Vandaag om 22:02:43
Da's Daz 2 door Huup
Vandaag om 22:02:43
Toon hier je nieuwe (model-) spooraanwinst(en)... door Gino
Vandaag om 22:02:38
Industrieel smalspoor inspiratiedraadje door defender
Vandaag om 21:51:12
Modeltreinwinkels in Berlijn. door grossraumwagen
Vandaag om 21:45:44
Nederland jaren 50 op basis van mijn roots door defender
Vandaag om 21:22:09
Nederlandse plattelandssfeer op een zolderkamer door MarcoK1999
Vandaag om 19:58:23
ByPass Junction, een Amerikaanse modelbaan in N door RobVille
Vandaag om 19:21:30
Rhätische Bahn in 0m; van Filisur naar Stuls door defender
Vandaag om 19:08:33
Molenbaan (werktitel) door defender
Vandaag om 19:03:45
BR-18.6 Schaal-0. door Sven
Vandaag om 18:23:28
Onlangs gespot - gefotografeerd, de foto's door wob
Vandaag om 18:04:05
Van British Railways Class 58 naar ACTS 5814 in 0 door tijgernootje
Vandaag om 17:42:24
Vijfhuis (v.h. Frotterdam) door Huup
Vandaag om 17:29:32
US diorama in H0 door Wim Vink
Vandaag om 16:47:48
De bouw van mijn modelbaan in Thailand door wob
Vandaag om 16:40:13
Artitec vierdeurs stalen D door gtw6016
Vandaag om 16:34:00
CIWL of toch niet?? Maar wat dan wel? door Hans van de Burgt
Vandaag om 16:30:02
Rijnstraat door Huup
Vandaag om 15:47:38
Göhrener Viaduct, een begin, Project 13 door Ronald Halma
Vandaag om 15:40:21
DDAR op basis van een Artitec DDM door Gerco van Beelen
Vandaag om 15:23:07
  

Auteur Topic: MARDEC, de Multifunctionele ARduino dcc DECoder.  (gelezen 390319 keer)

Servé

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1768
  • Niks kan tippen aan een E1700
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #105 Gepost op: 08 March 2016, 17:16:33 »
Ik heb 2x Serial.print() in het servo-deel ge-comment, dus het heeft geen invloed op het programma gehad.

Daar roep je wat! Daar heb ik gisteravond mee lopen spelen, helemaal vergeten :-\  Een snelle test leert het volgende:

#define    kONE_Max         64 --> Werkt NIET
#define    kONE_Max         80 --> Werkt WEL

Hier zouden we misschien Karst even lief aan moeten kijken wat de pulsbreedte van de "1" is. Morgen zal ik de DR5000 mee naar school nemen en even aan de scoop hangen, kan ik meten wat de pulsbreedte is.

Ik ga nog even verder testen.
Vriendelijke groet, Servé.

NTeering

  • Offline Offline
  • Berichten: 1039
    • ARduino Controlled MOdel RAilway
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #106 Gepost op: 08 March 2016, 17:28:50 »
Ik heb Henk een library gestuurd met de aanpassing van Servé.
Gaat Henk nu ook :D worden of blijft het  :-X ?

Servé

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1768
  • Niks kan tippen aan een E1700
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #107 Gepost op: 08 March 2016, 17:29:28 »
Als "#define    kONE_Max" 68 of hoger is, werkt hij bij mij, lager werkt niet... Die 68 is buiten de range die volgens de NMRA gespecificeerd is. Mijn vermoeden gaat toch in de richting van het "te druk zijn" van de decoder, waardoor hij niet op tijd de flank kan detecteren.
Vriendelijke groet, Servé.

Goosie

  • Offline Offline
  • Berichten: 167
    • www.henkdegans.nl
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #108 Gepost op: 08 March 2016, 17:36:06 »
Halelujah!!!
Tranen in de ogen, hij doet het!!!
Is de DR5000 nu MARDEC compatibel? (y) (y) (y) ;D
Met vriendelijke groet,

Henk de Gans

Servé

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1768
  • Niks kan tippen aan een E1700
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #109 Gepost op: 08 March 2016, 17:40:57 »
Andersom, de MARDEC is nu DR5000 compatibel :D

Het werkt ja, maar het is niet "netjes". Ik wil de komende dagen toch nog wat tests uitvoeren om te achterhalen waarom de MARDEC buiten de NMRA-specificaties werkt.
Vriendelijke groet, Servé.

Goosie

  • Offline Offline
  • Berichten: 167
    • www.henkdegans.nl
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #110 Gepost op: 08 March 2016, 17:44:12 »
Andersom, de MARDEC is nu DR5000 compatibel :D

Het werkt ja, maar het is niet "netjes". Ik wil de komende dagen toch nog wat tests uitvoeren om te achterhalen waarom de MARDEC buiten de NMRA-specificaties werkt.

Karst had nogal wat wantrouwen richting de library die in de MARDEC gebruikt wordt, en stelde een andere voor. Ik begrijp echter van Nico dat dit niet ze makkelijk effe om te gooien is in de source? Komt de stabiliteit wellicht wel ten goede, en dat is toch wel belangrijk lijkt me!
Met vriendelijke groet,

Henk de Gans

NTeering

  • Offline Offline
  • Berichten: 1039
    • ARduino Controlled MOdel RAilway
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #111 Gepost op: 08 March 2016, 17:59:33 »
Mooi dat het nu ook voor Henk weer werkt.  (y) (y)
Ik zal die aangepaste library in het package opnemen.

De NMRA library in de MARDEC stoppen is wellicht een betere oplossing.
Maar vooralsnog zie ik daar geen gat in. Anders kom ik nooit toe aan m'n eigen baan bouwen ;D

Nico

FransS

  • Offline Offline
  • Berichten: 115
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #112 Gepost op: 08 March 2016, 18:58:50 »
Mannen...even Nederlands. Ik kan goed schaken, mijn huis schilderen, snel fietsen en een modeltreinbaan bouwen. Bovendien krijg ik 21 wissels met de arduino aan de praat.
Ik wil eigenlijk over stappen van de intellibox naar de DR5000.
Maar vanaf post 106 begrijp ik er geen (........) meer van.
Kan ik dat ding nu ongestraft kopen of niet. Als dat gedonder oplevert van ga ik gewoon door met mijn intelliboxje  :'(
Kreten als: NMRA library, Als "#define    kONE_Max" 68 of hoger is, Ik heb 2x Serial.print() in het servo-deel ge-comment, dus het heeft geen invloed op het programma gehad.
Dit is toch een forum voor Dummy modelspoorders....................................of niet.

Frans
Op de klei rijden ook treinen

Servé

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1768
  • Niks kan tippen aan een E1700
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #113 Gepost op: 08 March 2016, 19:00:56 »
Kort gezegd: Het werkt nu, ook met de DR5000 ;)
« Laatst bewerkt op: 08 March 2016, 19:04:36 door Servé »
Vriendelijke groet, Servé.

Goosie

  • Offline Offline
  • Berichten: 167
    • www.henkdegans.nl
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #114 Gepost op: 08 March 2016, 19:06:58 »
Mannen...even Nederlands. Ik kan goed schaken, mijn huis schilderen, snel fietsen en een modeltreinbaan bouwen. Bovendien krijg ik 21 wissels met de arduino aan de praat.
Ik wil eigenlijk over stappen van de intellibox naar de DR5000.
Maar vanaf post 106 begrijp ik er geen (........) meer van.
Kan ik dat ding nu ongestraft kopen of niet. Als dat gedonder oplevert van ga ik gewoon door met mijn intelliboxje  :'(
Kreten als: NMRA library, Als "#define    kONE_Max" 68 of hoger is, Ik heb 2x Serial.print() in het servo-deel ge-comment, dus het heeft geen invloed op het programma gehad.
Dit is toch een forum voor Dummy modelspoorders....................................of niet.

Frans

Haha Frans,

Je kunt met een gerust hart lekker zo'n DR5000 kopen!
En hij gaat gewoon werken met je servos die je net aan de gang hebt met je MARDEC.
Nico zal de aangepaste library mee verpakken in zijn pakket, dus jij hoeft je daar geen zorgen om te maken.
Er is goed werk verricht door Nico en Serve, en laten we vooral de prima ondersteuning van Karst namens Digikeijs niet vergeten!


Met vriendelijke groet,

Henk de Gans

Karst Drenth

  • Offline Offline
  • Berichten: 10482
  • NS blauw, groen, rood, bruin, grijs en standgroen
    • Plan U op Sleutelspoor
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #115 Gepost op: 08 March 2016, 19:21:41 »
Dit is toch een forum voor Dummy modelspoorders....................................of niet.

Nee... :P  dwz niet uitsluitend ;)

@Serve,

Ben wel benieuwd wat jij echt meet als 1-tijd. Kan natuurlijk zijn dat mijn scoopje niet helemaal 100% is...


Grtzz,

Karst

Servé

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1768
  • Niks kan tippen aan een E1700
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #116 Gepost op: 09 March 2016, 10:43:04 »
Zo, even de scoop aangezwengeld. Dit zijn de meetwaardes van een halve periode (linksonder):

Dit is een "0":


(126 uS)


Dit is een "1":


(61 uS)

Allemaal netjes binnen de NMRA specificaties. Het wordt dus toch graven in de MARDEC-code...
Vriendelijke groet, Servé.

NTeering

  • Offline Offline
  • Berichten: 1039
    • ARduino Controlled MOdel RAilway
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #117 Gepost op: 09 March 2016, 11:40:19 »
@Servé
Bedoel je te zeggen dat de waarde van 64 voor kONE_Max voldoende zou moeten zijn omdat je 61 uS gemeten hebt?
Dan is het eventueel graven in DCC_Decoder.cpp maar niet in de MARDEC.ino lijkt me.

Vraagje.
Als je waarde toch op 80 zet kan dat dan 'gevaar' voor de wat minder snelle centrales?
M'n DaisyII doet het overigens ook prima op die 80.

Nico

Karst Drenth

  • Offline Offline
  • Berichten: 10482
  • NS blauw, groen, rood, bruin, grijs en standgroen
    • Plan U op Sleutelspoor
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #118 Gepost op: 09 March 2016, 12:04:53 »
Citaat van: Servé
Dit is een "0":


(126 uS)

Da's zoals verwacht.



Citaat van: Servé
Dit is een "1":

Citaat van: Servé

(61 uS)

Allemaal netjes binnen de NMRA specificaties. Het wordt dus toch graven in de MARDEC-code...

Hmm... dat zou beter 2uS minder kunnen zijn ;) :P Maar idd nog ruim binnen de specs.

Citaat van: NTeering
Bedoel je te zeggen dat de waarde van 64 voor kONE_Max voldoende zou moeten zijn omdat je 61 uS gemeten hebt?
Dan is het eventueel graven in DCC_Decoder.cpp maar niet in de MARDEC.ino lijkt me.

In principe correct Nico, maar het kan ook zijn dat DCC.Loop() niet voldoende vaak aangeroepen wordt. In tegenstelling tot de NMRA library, gaat DCC_Decoder voor het opbouwen van het packet er van uit dat DCC.Loop() dit doet ( 1 van mijn bezwaren ;) ) De NMRA library doet dit in de interrupt routines en levert het paketje pas af als het compleet is. Dan kun je dus wel complete pakketjes missen, maar geen individuele bits zoals bij DCC_Decoder.

Citaat van: NTeering
Vraagje.
Als je waarde toch op 80 zet kan dat dan 'gevaar' voor de wat minder snelle centrales?
M'n DaisyII doet het overigens ook prima op die 80.

Kan geen enkel kwaad. alles is zo goed als goed, zolang je maar binnen de helft van een minimaal 0 bit blijft. Door die waarde iets te verhogen, ben je meteen gewapend tegen DCC-sigalen die wat minder 'stijg- en daalsnelheid' hebben b.v. als gevolg van een grote belasting op de baan.

Citaat van: NmraDcc.cpp
//------------------------------------------------------------------------
// DCC Receive Routine
//
// Howto:    uses two interrupts: a rising edge in DCC polarity triggers INTx
//           in INTx handler, Timer0 CompareB with a delay of 80us is started.
//           On Timer0 CompareB Match the level of DCC is evaluated and
//           parsed.
//
// INTx triggers on falling edge, bit-sampling always based upon the just ELAPSED period.
//   and then restarts the time measurement
//
// ISR(TIMER0_COMPB_vect) only samples the current line status when match occurs.
// timing is based upon the well-defined 58us half-period-time
// of a DCC '1' bit, with a maximum 64us for a valid '1'.
// The '0' bit is NOT well defined.
//
//                           |<------116us----->|
//                           |<-58us->|
//
//           DCC 1: XXXXXXXXX__________XXXXXXXXXX__________XXXXXXXXXX_________
//                           ^-INTx
//                           |---64us--->|
//                                       ^Timer-INT: reads one
//
//           DCC 0: XXXXXXXXX____________________XXXXXXXXXXXXXXXXXXXX__________________
//                           ^-INTx
//                           |---------->|
//                                       ^Timer-INT: reads zero
//           
//------------------------------------------------------------------------

// The Timer0 prescaler is hard-coded in wiring.c
#define TIMER_PRESCALER 64

// for a 16MHz cpu: TIMER_PRESCALER * 1000000L / F_CPU = 4. Hence every 4us we receive a 'tick'
#define us2ticks(us) (us / (TIMER_PRESCALER * 1000000L / F_CPU))
#define DCC_BIT_SAMPLE_PERIOD us2ticks(64)

Dit is de manier hoe de NMRA library e.e.a. uitlegt. alleen...

void ExternalInterruptHandler(void)
{
  TIFR0  |= (1<<OCF0B); // Clear  Timer0 Compare Match B Flag
  OCR0B   =     TCNT0 + DCC_BIT_SAMPLE_PERIOD ; // reload compare register
  TIMSK0 |= (1<<OCIE0B); // Enable Timer0 Compare Match B Interrupt

.... tijdens het afhandelen van de interrupt, loopt de hardware clock door. Dus moet de Sample Period bij die doorgelopen clock opgeteld worden. Dit ies iets dat de DCC_Decoder niet doet. Met andere woorden, de DCC_Decoder compenseert niet voor de 'latency' ( verwerkingstijd ) van de interrupt- en 'loop' routines. Daardoor is die kONE = 64 waarschijnlijk te kort ;) En... de resolutie van de Arduino micros() is 4uS. dus 1 tikje mis ( bij 61uS ) en je bent die 64 al voorbij. Dit lijkt te kloppen met Serve's observatie dat kONE = 68 wel werkt :)

Ik denk dat ik de '1-tijd' van de DR5000 naar 59 uS ga brengen, om in de toekomst deze soort van problemen te voorkomen :)

Grtzz,

Karst
« Laatst bewerkt op: 09 March 2016, 14:51:46 door Bert van Gelder. Reden: Quote gerepareerd »

TinTin

  • Offline Offline
  • Berichten: 110
    • Swiss-N-Trak
Re: MARDEC, de Multifunctionele ARduino dcc DECoder.
« Reactie #119 Gepost op: 09 March 2016, 15:12:28 »
Goed om te zien dat de MARDEC steeds verder wordt verbeterd  (y)

Ik ben nog even terug gegaan naar mijn eerste insteek, een shield waarop alles aangesloten kan worden.
Omdat deze toch iets groter is dan alleen het voedingsgedeelte dacht ik dat de pcb-tjes een stuk duurder zouden zijn maar dat scheelt maar $0,50 per pcb.

hierbij wat ik er van gebakken heb:



gr. Erwin