H0 Modelspoor Forum

Modelbaanbesturing => Elektronische en digitale techniek => Topic gestart door: Rob op 22 oktober 2019, 14:40:50

Titel: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Rob op 22 oktober 2019, 14:40:50
Afgelopen Kerst had ik onder de kerstboom een pendeltreintje rijden. Dat was een eenvoudige opzet met aan één kant een stukje geïsoleerd spoor met een diode. Van hier uit werd dan een tijdje (letterlijk tijd) gereden naar de andere kant van het pendelbaantje, gestopt bij een halte en dan weer terug tot op het geïsoleerde deel.

Vandaag heb ik dat idee even wat netter uitgewerkt. Misschien omdat er enige vraag naar is  :D, maar om ook te kunnen pendelen naar en van de halte bij de Inglenook Sidings rangeerpuzzel.

Een en ander staat op film.


Het idee is dat er ruimschoots rijtijd is naar het geïsoleerde deel van de rails om zeker te stellen dat de trein daar altijd aankomt. Vanaf dit deel gaat het dan naar de andere kant van de pendelbaan volgens (vrij nauwkeurige) instellingen van snelheid en tijd om precies op de halte te komen. Het voordeel van deze opzet: er zijn geen terugmeldingen nodig. Het is wel nodig dat de trein betrouwbaar en voorspelbaar rijdt, en dat het spoor niet te lang is en/of er voldoende marge is waar gestopt wordt (lang perron).

Hier het aansluitschema van de voeding, Arduino en motorcontroller.

(http://www.xs4all.nl/~robvd/Forum/PendelSchema.jpg)


Dan de code. Bovenin dit programma'tje zijn de rijsnelheden en wachttijden in te stellen. "Heen" is van het geïsoleerde deel naar de halte, "Terug" is weer naar het geïsoleerde stukje spoor.

/* PENDELAUTOMAAT MODELTREIN
 *
 * Rob van Deursen

 * De motorbesturing gebeurt over 2 'analoge' uitvoer pinnen. Hier wordt met pulsbreedte modulatie
 * de (effectieve) uitgangsspanning ingesteld.
 * Elke rij-richting heeft 1 pin waarmee de pulsbreedte tussen 0 (uit) en 255 (maximaal) wordt geregeld.
 *
 * De pendelautomaat werkt op een deel van een spoor, waar aan één zijde een rail is geïsoleerd en met
 * een diode de stroom slechts in één richting kan lopen. Dit is het vertrekpunt.
 *
 * Bij het opstarten van de automaat wordt eerst naar het vertrekpunt gereden, ook als de trein daar al staat.
 * Hiermee wordt ervoor gezorgd dat na een onverwachte stop van de automaat weer vanuit de uitgangspositie wordt gereden.
 *
 * versie 0.1 - 22 oktober 2019
 * ForumVersie (zonder geluidsfuncties)
*/

// ------------- Instellingen en definities -----------

// === instellingen pendelbedrijf ===
#define rijtijdHeen      13    // tijd in seconden op volle snelheid heenweg
#define snelheidHeen      3    // snelheid heenweg (1-9)
#define optrekkenHeen false    // optrekken op heenweg ja/nee (true/false)

#define rijtijdTerug     20    // tijd in seconden terugweg. Ruim nemen, zodat trein altijd op stroomloos deel komt.
#define snelheidTerug     6    // snelheid terugweg (1-9)
#define optrekkenTerug  true   // optrekken op terugweg ja/nee (true/false)

#define wachttijdBestemming   0 // Wachttijd (seconden) zonder stroom op bestemming (lichten uit)
#define wachttijdVertrekpunt  5 // Wachttijd (seconden) op stroomloos deel zonder stroom
#define wachttijdAankomst    10 // Wachttijd na aankomst (met lichten nog aan)
#define wachttijdVertrek     10 // Wachttijd voor vertrek nadat lichten aan zijn.

// === rij karakteristieken ===
// gebruiksinstellingen
#define lusVertraging        30 // vertraging  in ms in de hoofdlus
#define acceleratieStap       0.025   // stappen waarin snelheid toe- of afneemt
#define aanloopPWM      50.0   // Pulsbreedte waarde (0-255) om aanloopweerstand motoren te overwinnen
#define maxPulsBreedte  250    // Maximale pulsbreedte voor de rijstroom (255 of kleiner, met geluid: max 250)
#define lichtAan             -1.375   // snelheid om licht aan te zetten (kleiner dan 0, snelheid 0 is aanloopPWM motoren)

// === Instellingen motor controller ===
// uitvoer pinnen
#define richtingPin1     10    // pinnen voor vooruit en achteruit (dit moeten beide PWM pinnen zijn)
#define richtingPin2      9


// -------------- Variabelen ----------

// regeling van snelheid en richting
unsigned long richting = 0;          // rijrichting
float snelheid = 0;                  // huidige snelheid
float gewensteSnelheid = 0;          // gewenste snelheid
float acceleratie = acceleratieStap;
int richtingPin[] {richtingPin1,richtingPin2}; // pinnen voor vooruit en achteruit (PWM pinnen)

// Arrays voor instellingen per rijrichting
int rijSnelheid[]{snelheidTerug, snelheidHeen};    // maximale snelheden per richting
double rijtijd[]    {1000*rijtijdTerug, 1000*rijtijdHeen};      // rijtijden per richting
bool optrekken[] {optrekkenTerug, optrekkenHeen};  // optrekken j/n
double wachttijd[]  {1000*wachttijdVertrekpunt, 1000*wachttijdBestemming};  // wachttijden stroomloos

// Overige variabelen
int t=0;                             // algemene teller voor for... loops
int waardePWM;                       // huidige waarde van de pulsbreedte.
int vorigeWaardePWM;                 // vorige waarde van de pulsbreedte.


//--------------- Setup na starten Arduino ---------------------

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);     // ingebouwde led op pin 13 uit
  digitalWrite(LED_BUILTIN, LOW); 
 
  // in- en output pinnen initialiseren
  pinMode (richtingPin[0], OUTPUT);
  pinMode (richtingPin[1], OUTPUT);
 
}

// --------------- Hoofd lus Arduino ---------------------------

void loop() {
  // lichten aan en wachten op vertek
  snelheid = lichtAan;
  SnelheidNaarPWM () ;
  delay (1000*wachttijdVertrek);

  // wegrijden
  gewensteSnelheid = rijSnelheid[richting];
  if (optrekken[richting]) {                   // optrekken gewenst
    acceleratie = acceleratieStap;
    while (snelheid < gewensteSnelheid) {
      SnelheidAanpassen();
      SnelheidNaarPWM ();
      delay(lusVertraging);
    }
  }                                            // niet optrekken
  else {
    snelheid = gewensteSnelheid;
    SnelheidNaarPWM ();
  }
  // rijden (op topsnelheid)
  delay (rijtijd[richting]);

  // afremmen en wachten na aankomst.
  gewensteSnelheid = lichtAan;
  acceleratie = - acceleratieStap;
  while (snelheid > gewensteSnelheid) {
    SnelheidAanpassen();
    SnelheidNaarPWM ();
    delay(lusVertraging);
  }
  delay (1000*wachttijdAankomst);

  // stroomloos wachten
  snelheid = 0;
  gewensteSnelheid = 0;
  SnelheidNaarPWM ();
  delay (wachttijd[richting]);

  // rijrichting wisselen
  richting = !richting;
}

//---------------- Functies --------------------

// SNELHEID NAAR PWM OMREKENEN EN OP JUISTE PIN ZETTEN
// naar een pulsbreedte en op de juiste uitvoer pin gezet.
void SnelheidNaarPWM () {
  if (snelheid != 0) {
    waardePWM = aanloopPWM + (maxPulsBreedte-aanloopPWM)/9 * (snelheid);
  }
  else {
    waardePWM = 0;
  }
  analogWrite(richtingPin[richting == 0],0);      // niet richting pin altijd uit
  if (abs(waardePWM - vorigeWaardePWM) >1) {      // significante verandering PWM
                                                  // voorkom onnodig PWM schrijven: dit verandert de puls

    analogWrite(richtingPin[richting],(waardePWM)); // PWM op richting pin
    vorigeWaardePWM = waardePWM;                  // onthou vorige waarde
    //Serial.print(waardePWM);
  }

}

// ===

// SNELHEID AANPASSEN
// Deze functie berekent de nieuwe snelheid op basis van de
// ingestelde acceleratie.


void SnelheidAanpassen() {
  if (abs(snelheid - gewensteSnelheid) <= (acceleratieStap / 2)) {
    snelheid = gewensteSnelheid;
    acceleratie= 0;
  } else {
    snelheid += acceleratie;
  }
  if (snelheid == 0 && gewensteSnelheid == lichtAan ) {
    snelheid == lichtAan;
  }
}
// ===

// --------------- einde schets ----------------


Rob
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: mark mms op 23 oktober 2019, 07:37:32
Rob is top  ;)

Bedankt.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Henry op 23 oktober 2019, 07:46:53
Ziet er prima uit, ben zelf op zoek naar een simpele pendelautomaat.
Kan deze voor de voeding op een gewone trafo, helaas was de pendelautomaat bij de elektronica webshop uit verkocht.
Wat ik nu zie kan het voor mij ook prima doen, is dit te koop.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Rob op 23 oktober 2019, 17:41:10
Ha Mark,
Graag gedaan.

Hoi Henry,

Ja, deze pendelautomaat kan op een gewone trafo. Wissel- of gelijkstroom, dat maakt niet uit.
De onderdelen zijn allemaal te koop. Bij elkaar kost dat een kleine 20 euro (inclusief verzenden) als je dat in Nederland online koopt. Dan heb je het een dag of 2 later in huis.
Bij Ali Expres kopen kan ook. Dan zal de totaalprijs rond een tientje uit komen, maar ben je snel 6 weken verder....

Verder zul je de Ardino IDE (programma om Arduino te programmeren) op je computer moeten installeren, maar die is gratis te downloaden.

Als je dit ziet zitten, kan ik wel een lijstje opstellen.

Rob
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Henry op 23 oktober 2019, 18:04:47
Hallo Rob

Bedankt voor je reactie, zal mijn zoon even laten kijken die is wat handigere met deze materie  :D.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: TrixExpressfan op 13 januari 2022, 17:45:08
Hallo Rob,
Dank je voor je reactie op YouTube.
Heb je er ook een aansluitschema van gemaakt ??
Kun je dat hier nog vermelden aub.

Alvast mijn dank

MVG,
Leo Hamelinck
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: PietB op 14 januari 2022, 01:36:58
Hele creatieve oplossing Rob.
Klasse.

grt Piet.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Rob op 14 januari 2022, 16:58:17
Hoi Leo,

Heb je er ook een aansluitschema van gemaakt ??

Bedoel je zoiets als dit?

(http://www.xs4all.nl/~robvd/Forum/PendelSchema.jpg)


Rob
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: TrixExpressfan op 15 januari 2022, 14:17:45
Hallo Rob,

Ik denk dat ik het ga snappen.
Ik was in de veronderstelling dat er aansluitingen aan de rails zaten, maar dat wordt door tijdinstellingen geregeld door de Arduino, toch?
Je ziet van Arduino is mijn kennis nog niet erg groot, helaas.
Mag ik als ik vragen heb contact met je opnemen ?

Dank voor je reactie.
En succes met een volgend project.

MVG
Leo Hamelinck
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Rob op 16 januari 2022, 15:35:09
Hoi Leo

Ik was in de veronderstelling dat er aansluitingen aan de rails zaten, maar dat wordt door tijdinstellingen geregeld door de Arduino, toch?
Oh, je bedoelt de aansluiting van de rails. Een één kant van het pendeltraject is de rails is één spoorstaaf onderbroken en daaroverheen zit een diode. Dit zorgt er oor dat de trein op de 'terugweg' hier altijd stopt en alleen weer wegrijdt als de stroom is omgekeerd voor de 'heenweg'. Met deze stroomonderbreking begint elke cyclus met exact dezelfde beginsituatie. Een ingebouwd ijkpunt, zeg maar.
De uitgang van de pendelautomaat zit dan ergens in het midden van het pendeltraject.
Mag ik als ik vragen heb contact met je opnemen ?
'Tuurlijk. Hert beste kun je dan even een PB'tje (persoonlijk bericht) sturen via dit forum.

groet,
Rob
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Rob op 16 januari 2022, 16:43:26
Hierbij nog even de aansluiting van de pendelautomaat op de rails.

(https://www.xs4all.nl/~robvd/Forum/PendelAutomaatAansluiten.jpg)

Rob
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: TrixExpressfan op 4 februari 2022, 13:11:24
Hallo Rob,
Excuus voor mijn late reactie.
Het was mij al duidelijk, maar nu zeker geen vragen meer.
Dank je wel.
Ik volg je projecten op YouTube.
Mooi werk, mijn complimenten.
MVG
Leo
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Jan Trein op 5 februari 2022, 03:11:17
Het is een leuke variant op de oorspronkelijke R. Paisley schakeling (zoals ik 'm ken),
goedkoop, effectief, en identiek voor alle treinen.

Toch is het zinvol om ook Tams-online in de gaten te blijven houden.
Tams ontwikkelt elektronica voor zowel analoogrijders als digitaalrijders.

Een van die ontwikkelingen loopt al jaren (en men komt daarin steeds verder):
Pendelautomatiek (https://tams-online.de/epages/642f1858-c39b-4b7d-af86-f6a1feaca0e4.sf/de_DE/?ObjectPath=/Shops/642f1858-c39b-4b7d-af86-f6a1feaca0e4/Categories/%22Know%20How%22/Glossar#Pendelautomatik) op basis van een locdecoder, en die decoder kan zowel analoog als digitaal functioneren.

De basis Tams truc berust niet op een diode aan de rails, maar op een magneet naast of tussen de rails, en een hallsensor of reedcontact in de loc.
Dat is de omgekeerde manier van de analoge toepassing van reedcontact (tussen de bielsen)
en magneet (onder aan de loc).

Als je erover nadenkt, dan zie je de genialiteit van de omkering.
 
Als een loc met reedcontact (of hallsensor) over een magneet rijdt,
dan schakelt een "rijrichting-relais" in de loc om,
en daardoor rijdt de trein de andere kant uit (pendelt).

De decoder maakt een wachttijd mogelijk, rijrichting omkering, of iets anders, in te stellen in een digitale omgeving,
waarna de instelling analoog zo blijft werken.
Dat komt uiteraard duurder uit dan jouw manier (want elke pendeltrein heeft minimaal 1 decoder nodig),
maar is wel individueel per trein in te stellen.
Treinen zonder reedcontact (of zonder decoder, of zonder daartoe ingestelde decoder) negeren de pendelopdracht.

Wat handiger uitpakt, is situatie bepaald.
Voor een simpel berg (eind-)station waar alle sporen eindigen op een stootblok, volstaat jouw oplossing prima.

In een schaduwstation waar trek-duwtreinen kunnen pendelen (kopstation-rol van doorgaand spoor),
in plaats van (zoals getrokken treinen wel moeten) door een lus te (moeten) rijden, kan het wel uit maken hoe je het doet.
Ook loc-omloop en loc-wissel als pendelmethode wordt analoog ineens een stuk simpeler te realiseren.   
 
Uit Tams verklarend woordenboek (Glossar):
Citaat
Onze Loc-decoders van de  Serie 30+ hebben een geïntegreerde Pendelautomatiek.
Zo'n decoder heeft 2 schakelingangen.
Die ingangen bepalen de eindhaltes en de tussenhaltes van het pendelbedrijf.
De Pendelautomatiek kan aan een functietoets worden toegekend, en is op die manier in- en uitschakelbaar.

Afhandeling:
Zodra de toegekende schakelingang aangesproken wordt doordat reedcontact of hallsensor
onder in de loc een magnetisch veld waarneemt bij de rails, remt de locomotief af met een ingestelde remduur.
Na een ingestelde wachttijd vertrekt de locomotief met een vooraf ingestelde optrekversnelling.
Afhankelijk van de instelling kan de rijrichting wisselen of niet.

Als je zo'n loc analoog laat rijden, dan werkt de decoder ook, mits de functie vooraf is ingesteld.

Tams waarschuwt 3rail rijders dat je die decoder niet moet toepassen in een analoge omgeving waarin je andere locs met behulp van een rijrichting omkeringspuls van rijrichting laat wisselen, omdat de elektronica daar niet goed tegen kan.

Ik weet dat jij niet met Märklin rijdt (jij rijdt DC), maar als je dat wel zou doen, dan moet je voor het kunnen toepassen van Tams elektronica alle locs ombouwen naar DC (met minimaal 2 diodes, 1 per veldspoel), want omgebouwd volstaat het simpel ompolen om de andere kant op te kunnen rijden, en dan heb je die stroomstoot dus niet meer nodig.
Drierail-DC (het lijkt het oude Trix Express wel, maar dan slimmer) ....
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Bert op 5 februari 2022, 09:42:36
Is er ook een simpele analoge methode voor Marklin?
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Theo op 5 februari 2022, 10:03:56
Marklin rijdt van oudsher met wisselstroom van 12 Volt, en omkeren doe je met een puls geven van 24 Volt wisselstroom.
Er zijn wel schakelingen te bedenken voor een pendeldienst, maar dan moet je zelfs iets ontwerpen.
Ik weet niet of er voor marklin standaard schakelingen hiervoor te koop zijn.

In de (oude) loc's zit bij marklin wel een een gelijkstroommotor, de binnenkomende wisselstroom wordt in de lok met een gelijkrichter omgezet in gelijkspanning.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Bert op 5 februari 2022, 10:34:08
Bedankt voor de tip. Daar moet ik wat voor kunnen maken. Had ook zelf kunnen bedenken om mijn oscilloscoop even op de baan te zetten ;D
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Jan Trein op 5 februari 2022, 16:45:25
simpele analoge methode voor Marklin?
Dat is nou juist de marketing-grap:

Analoge Märklin (3-rails) rijders leerden kijken naar de keerlusproblemen (van 2-rails rijders)
als hoofdreden om voor 3-rail te kiezen.
Zelf hebben ze een pendelprobleem want daarvoor heeft Märklin zelf analoog nooit in de jaren '80 wat gemaakt (de 6600 elektronische pendelautomaat).

Nog steeds in alle discussies over of 3-rail dan wel 2-rail pedagogisch beter is,
hoor je dit vermeende argument tegen 2-rail rijden, maar je hoort nooit iets over het pendelprobleem bij 3-rail.
En het is toch echt duidelijk dat je voor pendelen minder ruimte (minder diepe tafel) nodig hebt dan voor een keerlus,
en ook dat pendelen een goedkopere oplossing is dan een keerlus.

De simpelste analoge 3rail oplossing voor het pendelen bestaat uit een monostabiel relais dat schakelt
op basis van een contactrails (of eventueel schakelrails), dat tijdens het aantrekken 24 volt op de rails zet
(de omschakelpuls). Die puls kan op 3 manieren gemaakt:
1. met een aparte trafo, b.v. een beltrafo van 24 volt of een stekkertrafo uit de kringloop van 24 vDC, 1A secundair.
2. elektronisch met een condensator (die ontlaadt als het relais aantrekt)
3. door een draadje af te tappen in een Märklin AC-trafo voor de 24 volts AC puls spanning.

(volgorde: oplopend is meer voorkennis vereist, en ook minder geld)

Analoge Märklin locs (gemaakt vanaf ongeveer 1950)  rijden op zowel AC als DC,
maar schakelen de rijrichting af fabriek met de AC-puls,
tenzij je ze aanpast met een diode per veldspoel, want dan rijden ze op DC
en schakelen ze niet met een puls, maar door ompoling van de stroom.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Bert op 5 februari 2022, 17:27:51
Interessante info!
3-rail is voor mij als”herintreder” een logische keuze daar, uit het verleden, een hele zooi van aanwezig is. Ook nog eens C-rail, vind ik zelf niet het meest fraaie.

Dan het volgende, ik had het over analoog maar heb digitaal, Delta.
Complicerende factor….?
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Jan Trein op 5 februari 2022, 18:16:16
had het over analoog maar heb digitaal, Delta.
Complicerende factor….?
Ik ben niet de juiste persoon om het goed uit te leggen, en het draadje van Rob is evenmin de juiste plaats daarvoor.

Het antwoord is natuurlijk: Ja, dat werkt compleet anders, dat is, analoog beschouwd, de complicatie.

In Delta Digitaal heeft elke loc een decoder, met beperkte mogelijkheden, en voor de rest is die loc een blackbox (je weet niet wat erin zit, en je kunt alleen via de decoder de loc aansturen).

Digitaal pendelen kun je  op verschillende manieren doen, maar de analoge manier komt nou net niet in aanmerking.
Voor een digitaal rijder ligt de beperking van Delta juist in de adressen en functies die je kunt gebruiken.

Als je PC-software gebruikt of enigerlei andere vorm van een digitale centrale (besturingssysteem),
dan regelt de besturing dat bevel (of die bevelen).
Doe (heb) je dat niet dan heb je een decoder nodig die kan pendelen
(dat geldt ook als je alleen een Mobile station hebt, want dat is geen centrale).

In een digitale centrale (Central Station, meer recente Uhlenbrock System, Tams, Ecos) kun je pendelen configureren.
Je hebt dan geen fysieke module nodig zoals Rob die hier voorstelt (sterker nog, dat werkt niet).
Je moet weten hoe je digitaal dat pendelend rijgedrag instelt en conditioneert.

Het voordeel van Delta is dat je van die rijrichting omschakelpuls bent verlost.
De rijrichting wordt elektronisch via de decoder afgehandeld.
En dus is een Tams-online loc-decoder wel degelijk een optie als je geen centrale hebt.

Keerzijde is dat digitaalrijders Tams loc-decoders (samen met die van Uhlenbrock en dus ook Piko)
vaak rekenen tot het slijk onder de decoders: goedkoop, slecht afstelbaar (qua lastregeling), geldverspilling.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Theo op 5 februari 2022, 20:58:59
Als je analoog rijdt kun je een keerlus eenvoudig maken met marklin (3-rail) en met 2-rail weer makkelijk heen en weer pendelen zoals je al aangaf.
Ieder systeem heeft zijn eigen voordeel.
Maar wat ook nog kan, is het diodeblok uit de loc halen en nu op gelijkspanning te rijden op marklin rails met marklin locs.
Nu heb je beide voordelen ineen, een keerlus en heen en weer pendelen zonder poespas.

Ge Theo.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: nico op 5 februari 2022, 21:41:50
Märklin heeft een eigen analoge pendel en anders is er ook van esu een analoge pendel automaat. Kijk op google: marklin analoog pendel automaat.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Jan Trein op 6 februari 2022, 02:47:09
Je bedoelt de 6000 of 6600 analoog? Ja, dat klopt. Dat was ik even kwijt.
Die kwamen op de markt toen het digitale tijdperk al was begonnen.

Op youtube vind je ook zelfbouw analoge pendelautomaten.
Die kunnen minder, maar zijn wel iets goedkoper.

Van andere merken zijn er allerlei analoge pendelautomaten (geweest).
o.a. van Tams (Helios) en Mecktronics (Wieringerwaard).
Daarvoor betaalde je de hoofdprijs voor een beperkte oplossing voor pendelen.

Wat al die oplossingen met elkaar gemeen hebben is dat ze ouderwets analoog zijn:
één oplossing voor alle treinen gelijk, door de rijspanning te manipuleren.

Robs oplossing is daarbij goedkoper dan Märklin 6600 (https://www.digital-train.com/Digital/Maerklin/Maerklin_6600_UK.pdf), Helios (https://tams-online.de/WebRoot/Store11/Shops/642f1858-c39b-4b7d-af86-f6a1feaca0e4/MediaGallery/15_Download/Anleitungen_NL/51/HELIOS_Handleiding_2020_05_NL.pdf), Mecktronics (https://www.mecktronics.nl/index.php?item=&action=page&group_id=10000003&lang=NL) en veel andere analoge pendelmachines.
Bert moet daar met z'n Delta Digitaal gewoon niet aan beginnen. Het gaat nu eenmaal niet samen.

Maar wat die Tams decoders uit de serie 30+ doen, kan individueel per loc verschillen (ook analoog).

Dat maakt het duurder, tenzij je denkt Hou die decoder maar zelf, we jatten alleen het trucje terug
(magneet tussen de rails, reedcontact en relais in de loc), en waarvoor zouden we dat trucje nou specifiek kunnen inzetten?
B.v. de binnenverlichting aan- en uitschakelen, rijrichting van de loc op de baan omkeren (in plaats van de rijbaan ompolen), ontkoppelen van een wagensleep. 
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Bert op 6 februari 2022, 10:23:09
Bedankt voor alle reacties!
Denk dat ik 2 opties heb:
1. Geen pendel
2. Separaat spoor analoog Marklin of “zelfs” DC
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Rob op 6 februari 2022, 16:03:11
Wat een informatieve berichten. ???

Dat idee van de omschakelaar in een analoge lok doet me opeens weer herinneren dat ik zoiets vroeger (kleine 50 jaar geleden) in een 0 schaal trein op batterijen had. Eigenlijk nog simpeler. Die loc had een schakelaar aan de zijkant met 3 standen: vooruit - uit - achteruit. Die kon met een paaltje langs het spoor worden omgeschakeld. Bij vooruit rijden duwde het paaltje de schakelaar naar achteren (achteruit), en aan de andere kant werkte het precies omgekeerd. De loc stil zetten moest dan met de hand.

Zoiets kun je vast ook subtiel en in h0 maken. Als was het maar aan een niet zichtbare kant (zijkant of onderkant) van de trein. En stil zetten doe je door de stroom er af te halen.

Rob
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Jan Trein op 6 februari 2022, 21:46:06
... vroeger (kleine 50 jaar geleden) in een 0 schaal trein op batterijen had.
Eigenlijk nog simpeler. Die loc had een schakelaar aan de zijkant met 3 standen: vooruit - uit - achteruit.
Zoiets had ik met een loc met een veer erin. Die had een palletje in de cabine met drie standen: vooruit - uit - achteruit.
Je moest de veer opwinden om de loc (schaal A0) te laten rijden.
En dan moest je met je b=vingertjes friemelen in de stookstand naar dat uit te trekken palletje.

Dan is digitaal pendelen een stuk makkelijker geworden. Dat stel je gewoon op de PC in, in de software configuratie.
En dus ook duurder, want centrale (of software) moet alle te verwachten rijpatronen al hebben voorzien, en heeft alle mogelijke melders nodig, om te weten waar een trein is om die configuratie toe te kunnen passen.

Denk dat ik 2 opties heb:
Dat denk ik niet. Ik denk dat er veel meer digitale opties zijn dan analoge.
Duurder dan analoge opties kunnen zijn. Maar meer dan analoog hoe dan ook mogelijk is.
Zelfs meer dan met Analoog Arduino.

Want digitaal rijden betekent dat je elke loc apart kunt identificeren, configureren en besturen.
Analoog kun je hooguit categorieën of types (van treinen of locs) onderscheiden, configureren en besturen.

Die categorieën hebben een magneetje laag, midden, hoog, of een reedcontact (of hallsensor) laag. midden of hoog.
Een signaal (van een sensor: schakelrails, contactrails, lichtsluis, lichtweerstand, echosensor) schakelt een schakeling die iets doet met rijsnelheid en/of rijrichting en/of wachttijd op een stuk rails.

Delta Digitaal zit daar ergens tussenin. Beide manieren kunnen: de categorale aanpak én de individuele aanpak.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Theo op 7 februari 2022, 10:52:36
Een arduino werkt met een pic waarin je zelf het programma zet.
Met een arduino moet je dus ook een (Marklin) decoder kunnen maken.
Arduino's moeten gewoon alle code's die in het digitale systeem worden gebruikt kunnen lezen en/of uitsturen.
Alleen de vraag is hoe bouwen ze bij b.v. Marklin z'n code op en hoe zetten ze deze op de rails? Ik heb geen idee?????
Of werken ze met aparte draadjes?
Als weet hoe de code worden opgebouwd kun je zelf met een arduino een decoder nabouwen.

Gr Theo
Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Theo op 7 februari 2022, 11:10:49
Als je kijkt naar deze decoder van Marklin zie je dat hij 3 draadjes heeft, dit lijkt verdacht veel op de I2C code en dit is een standaard code.
(https://i.postimg.cc/W4P5qwLN/Decoder.jpg)
Deze zou dus met een arduino na te bouwen zijn.
En als deze kan na bouwen kan je de rest van het digitale systeem ook zelf aanvullen met arduino's die van alles gaan doen.


Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Bert op 7 februari 2022, 12:36:50
Dat zou een interessante ontwikkeling zijn. Hoop dat de experts erin duiken
Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Dirk T op 7 februari 2022, 14:39:43
Als weet hoe de code worden opgebouwd kun je zelf met een arduino een decoder nabouwen.

Daarvoor kun je de Märklin/Motorola library (https://github.com/Laserlicht/MaerklinMotorola) gebruiken.
Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Theo op 7 februari 2022, 21:12:49
Bedankt voor je snelle informatie.
Als ik me wat verder in het DCC systeem verdiep kom ik al gauw op verschillende systemen:
Märklin-Motorola
Märklin-systems mfx
Fleischmann FMZ
Trix Selectrix
Lenz DCC
ZIMO

Al deze systemen hebben een eigen opbouw van de digitale "0" en "1".
Met een PIC (b.v de Arduino) zijn deze wel in te lezen.
(https://i.postimg.cc/7YVFyz1h/plaatje.jpg)

Na 87 us kun je het verschil lezen tussen een O en een 1.


Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Dirk T op 7 februari 2022, 21:37:04
Even een kleine verheldering in de spraakverwarring die ik in je bericht zie.

Er zijn een aantal digitale protocollen op de modelbaan. Bijvoorbeeld:

- Selectrix (vooral populair bij schaal N, wordt o.a. gesproken door de Intellibox)

- Märklin Motorola, kortweg MM (een van de oudste protocollen voor modelbaanbesturing, wordt door de meeste multiprotocol centrales gesproken)

- FMZ (alleen Fleischmann, kon naast digitale loks ook 1 analoge aansturen, maar al jaren in onbruik geraakt)

- DCC (bedacht door Lenz, en inmiddels het meest gebruikte protocol, gesproken door vrijwel alle centrales)

- MFX (typisch Märklin, bedoeld om eenvoudig te zijn maar veroorzaakt daardoor juist veel problemen)


Zimo is geen protocol. Zimo is een fabrikant van decoders (voor DCC en voor DCC/MM en tegenwoordig ook MFX). Uhlenbrock, ESU, D&H, Train-o-Matic, Tran, Lenz, en nog een boel anderen zijn ook decoder fabrikant.

De Arduino library waar ik de link van gaf, decodeert het MM protocol. Voor DCC heb je een andere library nodig. En als ik het zo gauw goed zie, is het plaatje dat je getekend hebt van het DCC protocol.

Let op dat bij het DCC protocol de polariteit van de aansluitdraden niet uitmaakt. Dat is wel zo prettig, want daardoor kun je een lok achterstevoren op de baan zetten en werkt alles toch gewoon. Om dat voor elkaar te krijgen wordt niet "hoog" of "laag" gedetecteerd, maar wordt gekeken wanneer er flanken (dus wisselingen in de polariteit) voorbijkomen. Je kunt dus niet kijken van "wat was het 87us geleden en wat is het nu", je moet kijken wanneer er een flank is in het signaal, en na hoeveel tijd de volgende flank is. Extra complicatie: de railcom cut-out verstoort de afwisseling van de flanken en moet daarom ook gedetecteerd worden.
Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Jan Trein op 8 februari 2022, 19:19:56
En om deze bron dan er nog maar even in te slingeren: Klaas Zondervan (https://people.zeelandnet.nl/zondervan/digispan.html) documenteerde de digitale protocollen (het stuk is oud, Klaas noemt Zimo daarin nog als protocol):

1. Märklin-Motorola
1a. Märklin-systems mfx
2. Fleischmann FMZ
3. Trix Selectrix
4. Lenz DCC
5. ZIMO
Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Theo op 8 februari 2022, 20:06:19
Heb ik het goed dat Marklin Motorola toch wel het meest wordt gebruik?

Ik ben inmiddels wel begonnen om de Duitse beschrijving te vertalen in het Nederlands, leest een stukje makkelijker.

Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Dirk T op 8 februari 2022, 21:32:25
.. (het stuk is oud, Klaas noemt Zimo daarin nog als protocol)

Dat is inderdaad oud, maar het klopt nog steeds. Er staat daar nog dat Märklin niet erg mededeelzaam is over MFX. Inmiddels hebben ze het protocol vrijgegeven.

Zimo als protocol is geflopt. De kans dat je dat ooit tegenkomt is zeer minimaal. Als je nu Zimo zegt, dan heb je het over een merk decoders, vooral DCC, maar ook DCC/MM en DCC/MFX

Mocht je ooit Delta tegenkomen, dat zijn Märklin-Motorola (kortweg MM) decoders van de eerste generatie en met een heel beperkt aantal adressen. Dan heb je binnen MM nog MM I en MM II (MM 1 en MM 2). MM I kan 1 functie (meestal frontsein) aansturen, MM II kent er 5. Door een lok 2 adressen te geven kan MM II tot 8 functies komen, mits ook de centrale dat ondersteunt. Als we nu over MM spreken bedoelen we gewoonlijk MM II.

Heb ik het goed dat Marklin Motorola toch wel het meest wordt gebruik?

Daar heb ik geen cijfers van, maar ik betwijfel het ten zeerste. Het is wel zo geweest, maar dat is zo'n 25, 30 jaar geleden. MM I kwam in 1985 op de Europese markt en is wat betreft mogelijkheden best achterhaald, en ook MM II met 5 of eventueel 8 functies is ingehaald door de tijd.

Märklin leverde vroeger MM decoders (eerst MM I, later MM II), maar dat is opgevolgd door MFX. MFX decoders verstaan overigens wel MM. In de nieuwste locs van Märklin kun je af-fabriek decoders aantreffen die MFX en DCC verstaan.

De niet-Märklin wereld was 30 jaar geleden een wirwar van MM, FMZ, SX en nog het een en ander waaronder zelfbouw, tot Lenz DCC introduceerde en het protocol vrij gaf. Later heeft de NMRA DCC geadopteerd.
Sindsdien gebruikt de niet-Märklin wereld vooral DCC, en ook een klein maar groeiend deel van de Märklin rijders geeft de voorkeur aan DCC. In schaal N kom je naast DCC ook het oudere Selectrix (afgekort tot SX) veel tegen.

Mijn indruk is dan ook dat DCC het meest gebruikte protocol is, en zeker gezien het feit dat de nieuwste MFX decoders tevens DCC verstaan verwacht ik dat het aandeel DCC alleen maar toe zal nemen.
Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Jan Trein op 10 februari 2022, 00:06:02
Later heeft de NMRA DCC geadopteerd.
Een open standaard heeft meer overlevingskans dan een verborgen standaard.
Daarom zal Märklin de mfx-code hebben moeten vrijgeven.
Sinds de NMRA DCC adopteerde, is er een open standaard DCC ontstaan.
Zo vind je sites boordevol info zoals Open DCC  (Duitstalig) (https://www.opendcc.de/) en Wiring Ford DCC introduction (Engelstalig) (https://wiringfordcc.com/intro2dcc.htm).
En je kunt er net zo diep induiken als je wilt. Al jaren.

Doe ik niet. Ik rij analoog. Maar ik loer wel om de hoek.  ;D

Een citaat uit de :
 (https://nl.wikipedia.org/wiki/Digital_Command_Control=wikipedia[/url)
Citaat
Het DCC-systeem werd oorspronkelijk ontwikkeld door Lenz Elektronik GmbH in de jaren tachtig voor twee fabrikanten, Märklin en Arnold.
Het eerste systeem dat door Lenz werd geproduceerd, verscheen op de markt in het voorjaar van 1989 voor Arnold (N)
en midden 1990 voor Märklin (Z, H0 en 1).[1]

Märklin en Arnold zegden de overeenkomst op wegens problemen met de octrooien,
maar Lenz ging verder met ontwikkelen

Ik heb zo'n idee dat de wikipedia in het Nederlands op dit punt wat achter loopt, op de anders sprakige collegae.
Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: PietB op 10 februari 2022, 01:30:45
Het gaat al lang niet meer over die pendel automaat........jammer hoor.
Titel: Re: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Theo op 10 februari 2022, 13:56:20
Het is misschien wel handiger om een nieuw lijntje te openen.
Ik zal het lijntje "DDC protocol inlezen met PIC of Arduino" noemen.
Titel: Re: Pendelautomaat met Arduino - voor analoge rijders
Bericht door: Rob op 10 februari 2022, 19:57:54
Bedankt Theo,

Ik ben er voor om de draadjes "schoon" te houden en andere onderwerpen een eigen topic te geven.
Dan is het ook allemaal weer wat makkelijker terug te vinden.

Voor het DCC gebeuren, zie: http://www.h0modelspoor.nl/index.php?topic=4351.msg67115#msg67115 (http://www.h0modelspoor.nl/index.php?topic=4351.msg67115#msg67115)

Rob