web counter

Analoge servosturing

Beladen kolenwagons

Digitale servosturing

Digitale servosturing via Marklin Motorola protocol

Wissels aansturen met een MS1

Zelfbouw LocoNet projecten


 

Contact:
Geert.Giebens(at)gmail.com



 

S88 TERUGMELDERS

 

NIEUW: LocoNet projecten

Deze beschrijving van  de diverse terugmelders en S88 bus vereist een minimale basiskennis van digitale elektronica. Ook is de wijze van voorstelling ontstaan uit een door mij reeds eerder geprogrammeerde terugmelders in PIC microcontrollers. De opbouw van het terugmeld en detectie principe is dan ook uiteindelijk bedoeld om de assembler software beter te kunnen begrijpen.

DISCLAIMER: Ik kan geen garantie bieden betreffende de juistheid van informatie op de website, noch aansprakelijk gesteld worden voor de schade die, rechtstreeks of onrechtstreeks, het gevolg is van informatie verkregen van deze site.

Inhoud:

Van terugmeldbit naar een eenvoudige terugmelder:
                Terugmeldbit
                Schuifregister
                S88 bus
Een terugmelder voor 8 drukknoppen met eenvoudige elektronica (zonder microcontroller!)
Een terugmelder met massadetectie
Een terugmelder met massadetectie in een PIC-microcontroller         
                Assembler program
                Printje

Met stroomdetectie
Een S88 Master (om zelf S88 bus signalen op te weken en terugmeldingen weer te geven via LED's)
Een S88 Volger (om de data uit de S88 bus te halen en door te sturen naar LED's)
Een terugmelder op basis van stroomdetectie in een PIC-microcontroller
                 Principe stroomdetectie en terugmelder met microcontroller (µC) technologie

                 Problemen en oplossingen
                 Minimum en maximum stroom detectiegrens
                 Praktische uitwerking op print
                 Extra's
                 Kostprijs schakeling
 

Van terugmeldbit naar een eenvoudige S88 terugmelder:

Terugmeldbit:

De basis bestaat uit een Data Flip-Flop, in het kort als D F-F geschreven, maar meestal als D Flip-Flop uitgesproken. Deze D  F-F heeft als eigenschap dat hij  één databit ‘Q’ kan onthouden. De inhoud van ‘Q’ kan afkomstig zijn van de logische waarde op ingang ‘D’ maar kan ook afkomstig zijn van de logische waarde op ingang ‘Q IN’.  Zoals in het schema hiernaast voorgesteld wordt de data op ingang ‘D’ aangeboden via een weerstand en een schakelaar. Is de schakelaar dicht dan staat er een logische ‘0’ (massa) op ingang ‘D’, is de schakelaar open dan staat er een logische ‘1’ (+5V via R=10k) op ingang ‘D’.  De logische waarde op ingang ‘D’ zal pas ingelezen  en opgeslagen worden in databit ‘Q’ als de logische toestand op ingang ‘LEES D’ van ‘0’ naar ‘1’ gaat. Wordt ook wel eens voorgesteld als: ‘de data wordt ingelezen bij een positieve flank (‘0’-->’1’) op ingang LEES D’.  Dit is de eerste manier hoe ‘Q’ aan zijn data komt. De tweede manier is dezelfde zoals hiervoor beschreven maar nu is de data afkomstig van de logische waarde op ingang ‘Q IN’.  De data van deze ingang wordt in ‘Q’  gelezen door middel van een positieve flank op ingang ‘SCHUIF Q’.  Tenslotte  moeten we ook nog weten dat de logische waarde van databit ‘Q’ ook op uitgang ‘Q UIT’ staat.  Tabel 1 geeft dit allemaal weer. Zo één blokje zoals hiernaast getekend noem ik voor het gemak ook een ‘terugmeldbit’.

 

Schuifregister:

We gaan nu een stapje verder. Als we nu meerdere terugmeldbits in serie plaatsen en wel zodanig dat telkens ‘Q IN’ verbonden wordt met ‘Q UIT’ van de volgende, zoals het schema hiernaast, dan staan we op het punt een terugmelder te creëren. Een in serie gekoppelde reeks  databits wordt in de digitale techniek ook een schuifregister genoemd.
Voor de duidelijkheid gaan we elk terugmeldbit nummeren van 1 tot in principe heel veel, maar we zullen ons voorlopig beperken tot 8 (standaard microcontrollers werken ook intern met 8 bits).  Het schema is vereenvoudigd tot enkele terugmeldbits, de rest moet je er maar bij denken…
We gaan weer de twee manieren van data inlezen bespreken zoals hiervoor maar nu voor de acht terugmeldbits te samen. Als er een positieve flank komt op ‘LEES D’ dan zullen alle 8 terugmeldbits tegelijkertijd hun respectievelijke ingang ‘D’ lezen en in hun databit ‘Q’ plaatsen. Elke ‘Q uit’ krijgt de logische waarde van zijn databit ‘Q’. In tabel2 hieronder voorgesteld in de eerste rij.
Bij de tweede manier haalt ‘Q1’ zijn data van ‘Q1 IN’. Maar ‘Q1 IN’  is  verbonden aan ‘Q2 UIT’, en daar staat de logische waarde van ‘D2’ op. En we kunnen zo verder gaan ‘Q2 IN’ is verbonden met ‘Q3 UIT’ en daar staat de logische waarde van ‘D3’ op enz… Enkel  de logische waarde op ‘Q8 IN’ is niet bepaald. Als deze de laatste is in een reeks, dan is het best deze een logische waarde te geven, meestal ‘1’ via een weerstand van 10kOhm. Op het moment dat er een positieve flank komt op ‘SCHUIF Q’ zal ‘Q1’ de logische toestand overnemen van ‘Q2 UIT’ = ‘D2’, ‘Q2’ zal de logische toestand overnemen van ‘Q3 UIT’ = ‘D3’ enz…  Uiteindelijk zal ‘Q8’ een logische  ‘1’ inlezen. Het inlezen van de logische toestanden van hun buur gebeurd wel tegelijkertijd. Op tabel 2 hieronder zie je op regel twee dat Data ‘D8’  tot en met  ‘D2’ een plaatsje zijn opgeschoven. Data van ‘D1’ is verdwenen. Geven we weer een positieve flank op ‘SCHUIF Q’ dan zal de data weer opschuiven, dit verklaart waarom ik deze ingang ‘SCHUIF Q’ heb genoemd
. Na 7 positieve flanken op ‘SCHUIF Q’ (jawel 7) staat ‘D8’ op ‘Q1 UIT’.


 

S88 bus:

Een centrale kan via een S88 bus deze terugmelder als het ware bedienen en de data die telkens verschijnt op ‘Q1 UIT’ inlezen via ‘DATA UIT’. De S88 bus geeft de opdracht de data op ingangen ‘D’ te lezen in de terugmeldbits. De S88 bus gaat ook de opdracht geven de data te laten doorschuiven. Maar, het S88 protocol (=afspraak) doet dat iets anders dan zoals ik dat hiervoor beschreven heb. Het S88 protocol kent geen afzonderlijke ‘LEES D’  en ‘SCHUIF Q’ opdracht. Wat deze S88 bus wel heeft is een ‘CLOCK’ en ‘LATCH’  signaal. Dit werkt zo: op het moment dat er een positieve flank komt op de ‘CLOCK’ dan moet de schuifregister iets gaan doen. Dit is afhankelijk van de logische toestand van het ‘LATCH’ signaal. Is ‘LATCH’=‘1’ dan zal de schuifregister de data op de ‘D’ ingangen lezen, is ‘LATCH’=‘0’, dan zal de schuifregister 1 positie opschuiven. (zie tabel 3) Daarvoor moeten we ons schema wel iets aanpassen met enkele logische poorten. Ik veronderstel dat je vertrouwd bent met zulke poorten zodat ik daar geen woordje uitleg moet bij plaatsen. 

 

De centrale gaat er ook voor zorgen dat heel dit proces van data inlezen en dan doorschuiven regelmatig herhaald wordt. Het tijdsdiagram hieronder maakt dit duidelijk voor 8 bits. Ook zit er op de S88 bus een voedingsspanning bestaande uit massa en +5V. Deze voeding kunnen we gebruiken om de terugmelder van werkspanning te voorzien.

              

 

Een terugmelder voor 8 drukknoppen met eenvoudige elektronica: (zonder microcontroller!)

Nu hebben we toch geluk zeker dat er een IC bestaat die een 8 bit-terugmelder allemaal al in zich heeft. Namelijk  een 4014 CMOS IC. (ik veronderstel dat Marklin het S88 protocol heeft afgestemd op deze reeds bestaande 4014 chip?) Een 4014 is een 8 bits schuif register met 8 data ingangen. De logische schakeling intern op deze chip is een klein beetje anders dan zoals ik deze beschreven heb, maar het resultaat blijft hetzelfde. Deze terugmelder is geschikt voor schakelaars of voor drukknoppen met verbreekcontact. Zo is het bijvoorbeeld met MR-direct mogelijk een hele wisselstraat aan te sturen met één S88 terugmeldcontact.  Een bedingingspaneel met drukknopen, schakelaars en lichtjes blijft toch zijn charme behouden hé. Ook kunnen ze zo gecombineerd worden met PC sturing.

 

De schakeling is zo eenvoudig dat iedereen dit wel moet kunnen nabouwen. Het handigst is een stukje strokenprint waar je hier en daar wat koper weghaalt. Wil je  meer dan 8 terugmeldcontacten dan zet je er gewoon dezelfde schakeling er  achter en je hebt er al 16. De meeste centrales werken met blokken van telkens 16 terugmeldcontacten. Er zijn twee versies, je kan deze maken met SIL weerstandsnetwerken of met afzonderlijke weerstanden. Hou rekening met de breedte als je connectoren gebruikt, zo kan het zijn dat je het strokenprintje iets breder moet nemen!  Het is ook mogelijk een printje zelf te ontwerpen en te ontwikkelen. Ik ben zeker geďnteresseerd in de layout er van.

 

Maar omdat de meeste centrales werken met 16 terugmeldbits per terugmelder kan je deze combineren met een tweede er naast.

 

Een foto maakt veel duidelijk, dit is er eentje met weerstanden en 8 terugmeldbits:

Wat kost zoiets voor 8 terugmeldcontacten: (anno 2012)

1x 4014 IC Conrad nr. 172707-60  0,76€
1x IC voet 16pin Conrad nr. 189529-8A  0,19€
een weerstandje van 10kOhm kost per stuk 0.02€. Bij Conrad nr. 404160-8A moet je deze wel  per 100 stuks kopen 1,89€
2x SIL 1+4x10k Conrad nr. 416037-8A  2x0,15€= 0,30€    of 8xR=10kOhm = 0,16€
strokenprintje 1/8 van eurocard = 0,7€

Pakweg 1,65€ ŕ  1,79€. Wat zit er niet in deze prijs, deze van de connectoren. Dat laat ik over aan de gebruiker. Het goedkoopst is gewoon geďsoleerde draadjes direct op de print solderen. Je kan ook duurder gaan met schroefverbindingen of zelfklemmende verbindingen. Het belangrijkste is dat de pitch afstand (afstand tussen elk klemmetje) 2.54mm is.

 

Een terugmelder met massadetectie:

De terugmelder die we tot hiertoe besproken hebben geeft de toestand op ingangen ‘D’ weer enkel en alleen maar op het moment van een positieve flank van ‘LEES D’. Kortstondige pulsen kunnen zo gemist worden. Bijvoorbeeld  deze van reed-contacten, Ook vuile sporen (of wielen) kunnen bij 3 rail systemen er voor zorgen dat er net geen massa op ingang ‘D’ staat bij een ‘LEES D’ opdracht. Om er voor te zorgen dat de schakeling ook kortstondige pulsen kan detecteren gaan we er een Set Reset flip-flop (SR F-F) aan toevoegen. Deze SR F-F heeft twee ingangen, als de Set ‘S’ ingang hoog wordt dat zal uitgang ‘Q’ van de SR F-F logisch 1 worden en blijven. Als ingang Reset ‘R’ hoog wordt dan zal uitgang Q van de SR F-F logisch ‘0’ worden en blijven. Dus als de ‘S’ ingang een kortstondig puls krijgt, dan zal de SR F-F geset blijven.

Omdat we in de modelspoorwereld een massacontact willen detecteren doordat de wielen een verbinding maken tussen een geďsoleerde spoorstaaf en de massa (3rail), hebben we hier eigenlijk een signaal dat van logisch ‘1’ naar ‘0’ gaat. De SR F-F kan enkel geset worden bij een logische ‘1’. Daarom moet we het signaal logisch gaan omkeren, ook inverteren genoemd. Deze invertor is dat bolletje voor de ‘S’ ingang. Het meetprincipe die de massa detecteert, ook al is deze maar kortstondig noemt men massadetectie. Nu zitten we daar wel met een SR F-F die geset blijft, ook al is er al lang geen massacontact meer aanwezig. De S88 bus heeft daar gelukkig een oplossing voor. Direct na de ‘LEES D’ opdracht zal de centrale via de S88 bus een positieve puls geven die alle SR F-F’s reset. Daarvoor heeft de S88 bus een ‘RESET’ lijn. De SR F-F’s kunnen dan terug massacontacten detecteren.  Zie tijdsverloop van de S88 bus nu met ‘RESET’ signaal. Praktisch worden SR F-F’s gebruikt die geset worden als het ingangssignaal ‘0’ wordt. Dit is al handig, maar dit geld ook voor de reset ingang van deze SR F-F’s. Vandaar dat de ‘RESET’ van de S88 bus eerst nog geďnverteerd moet worden op de schakeling. (niet schematisch voorgesteld!) Aan de ingang van het te detecteren signaal kan je best ook een condensator mee parallel plaatsen met het te detecteren contact. Kortstondige stoorpieken en ruis worden zo weg gefilterd.  Gebruik je de schakeling voor massadetectie van 3 rail systemen, dan is het aan te raden in serie met het te detecteren signaal een weerstand van 1kOhm te plaatsen. Dit voorkomt dat de detectieschakeling eventueel de lokstroom moet gaan leveren, iets wat sommige IC’s nog zwarter maakt dan ze al zijn…  
In wezen zijn alle terugmelders gebaseerd op massadetectie. Ook deze die gekend zijn als stroomdetectie. Bij stroomdetectie is de stroom die een spanningsval creëert over dioden, die meestal via opto-couplers de ingang van de SR F-F naar de massa schakelt. Symbolisch voorgesteld door eerste ingangsschakeling schema.

Het tijdsdiagram hieronder geeft het beeld weer van de diverse signalen op een S88 bus. Let wel elke centrale heeft mogelijk een andere timing, maar de volgorde is wel belangrijk!


Praktische terugmelders met massadetectie zijn al voldoende beschreven en te vinden op internet. Het ligt niet in mijn bedoeling ook zo eentje verder functioneel uit te werken. Maar we gaan deze schakeling, zoals we ze nu al hebben, omzetten naar een programma die we in een PIC microcontroller kunnen steken.

 

Een terugmelder met massadetectie  in een PIC microcontroller:

Wat willen we bereiken: een zo eenvoudig mogelijke terugmelder met een minimaal aan onderdelen die ongevoelig is voor ruis, stoorpieken en slechte wiel contacten. Met minimaal bedoel ik dat dan ook letterlijk, alles wat te programmeren valt zal ook geprogrammeerd worden. Flip Flops, schuifregisters maar ook condensators. En nog meer zelfs, we gaan achter die geprogrammeerde condensators geprogrammeerde schmitt-triggers hangen.  En dit steken we in  een PIC microcontroller die zo 32 massadetecties kan uitvoeren en doorschuiven via een standaard S88 bus.

Zoiets dus:

Wordt omgezet naar dit:

Op het aangepaste schema zien we dat de D F-F en SR F-F er nog op staan. Ook de ‘CLOCK’ en ‘LATCH’ ingangen zijn nog aanwezig. Bij een positieve flank op ‘CLOCK’ ingang roept deze een interrupt program op die afhankelijk van de logische toestand van ‘LATCH’ ingang data inleest in de schuifregisters of de inhoud ervan doorschuift. Wat er verdwenen is de ingangscondensator. Deze is vervangen door een teller die telt tussen 0 tot 255. Met tussen bedoel ik dat deze omhoog of omlaag kan tellen en dit afhankelijk van de logische toestand aan de ingang. Is er massa detectie, dan telt de teller omhoog tot maximum 255. Is er geen massadetectie dan telt de teller omlaag tot 0. De teller werkt net zoals een condensator. Maar i.p.v. lading op te slaan worden hier bitjes geteld. Wanneer wordt de flip-flop nu geset?  Op het moment dat de teller 192 bereikt bij het omhoog tellen zal de flip flop geset worden. Wanneer wordt hij nu gereset?  Bij het omlaag tellen als deze teller 64 bereikt. Deze manier van schakelen noemt men in de elektronica een schmitt-trigger. In de elektronica schakelt de schmitt-trigger wel op spanningsniveaus! Wat voor voordelen hebben we hiermee? Als er massacontact via de wielen even verbroken wordt door vuil op de sporen dan moet de teller al eerst terugtellen tot 64 om de flip flop te resetten. Dat lukt zelden. Ook stoorsignalen en ruis moeten al minstens ľ van de tijd de ingang aan de massa houden om de flip-flop te setten. Ook dit zal zelden voorkomen. Omdat de schmitt-trigger de SR F-F set maar ook reset, hebben we de S88 bus ‘RESET’ signaal niet nodig.

 

Toch even uitrekenen over welke tijdsintervallen we spreken:

De PIC 16F887 interne klokfrequentie is 8MHz dat geeft 2000000 (twee miljoen) instructies per seconde.

De S88 CLOCK ingang genereerd een interrupt die bij een schuiftoestand 50 instructies nodig heeft. (Ik hou rekening met de extra tijd voor o.a. GOTO CALL enz…) Bij een S88 CLOCK van 9kHz (MR-Direct) heeft de µC 9000x50= 450000 instructies per seconde nodig om de interrupts te verwerken. Dit trekken we af van 2000000 en dit geeft een overschot van 1550000 instructies per seconde voor de tellers.

De meest voorkomende toestand van een ingang is +5V en de teller staat op 0 en doet niets. Hiervoor zijn maar 6 instructies nodig. Moet hij wel tellen dan geeft dat 10 instructies. Omdat we 32 ingangen moeten testen geeft dit 32*6 = 192 instructies om alle 32 ingangen te testen. Dit testen herhaald zich in een ‘loop’ die zich 1550000/192= 8070 keer per seconde herhaald. Komt ook overeen met 8070Hz of 1/8070= 124µs per loop.

Hoe lang duurt het nu om een massacontact te detecteren? Wel, als de teller van 0 tot 192 telt dan set de SR F-F zich pas op 192 maar telt wel voort tot 255. De SR F-F set zich dus pas na 124x192= 23800µs (24ms). En als er eenmaal geteld is tot 255 en er is een slecht wielcontact dan mag deze ook 24ms duren voordat de SR F-F gereset wordt.

Er is in het schema nog iets toegevoegd. Namelijk van ‘DATA IN’ wordt een copy gemaakt tijdens het interruptprogramma. Dit heb ik toegevoegd om te voorkomen dat bij het door elkaar gebruik van verschillende terugmelders er eventueel problemen ontstaan bij het inlezen van de logische waarde van ‘DATA IN’ . De schakelsnelheid van andere terugmelders is anders. Zo kan een terugmelders op basis van CMOS-logica (de commerciële) de ‘DATA UIT’ op de S88 bus al aangepast hebben voordat deze op basis van µC de ‘DATA IN’ ingelezen heeft. Deze met µC lezen eigenlijk de data al in die bij de volgende schuifopdracht moest ingelezen worden. Wat de software nu doet is data op de ‘S88 DATA IN’ al op voorhand inlezen om zo deze problemen te voorkomen. Het inlezen van ‘DATA IN’ is even vertraagd met tijd ‘t’ (zie schema hierboven). Het volgend tijdsdiagram maakt dit duidelijk:

Assembler program:

Er staat voldoende toelichting bij het assembler programma om het programma verloop te kunnen volgen. Omdat deze microcontroller met bytes werkt (8bits per byte) zijn de 32 SR F-F’s onderverdeeld in 4 Bytes nl. FFB1; FFB2; FFB3 en FFB4, zo ook de 32 bit schuifregister: SCHUIFB1 t.e.m. SCHUIFB4. Het programma is ook geschreven met gebruik van MACRO’s. MACRO BITTEST leest elke ingang in en zal aan de hand van de logische waarde de teller verhogen of verlagen, en zal indien nodig de SR F-F’s setten of resetten. Deze software is o.a. getest met MRDirect; Intellibox II.

ASM CODE (versie maart 2012)

HEX FILE (versie maart 2012)

Printje:

Veel stelt zulk printje ook weer niet voor, neem een stukje van een strokenprint en neem hier en daar wat koper weg. Ook kun je meerdere µC op één printje combineren zodat je 64 en zelfs 96 massadetectie terugmeldingen op een stuk eurocard krijgt.

Achterzijde strokenprintje is de eenvoud zelf, even met het slijpschijfje er over om wat koper weg te nemen en solderen maar:

Een bestukt printje:

Kostprijs voor 32 massaterugmelding (anno 2012)

Een PIC 16F887 2,60€
Een 40 pin IC voetje 0.122€
Een SIL weerstandsnetwerk van 8x10k kost bij Velleman  = 0.112€x4= 0,448€
32 weerstandjes van 1kOhm kost 0.02€x32=0.66€
en eentje van 10kOhm = 0.02€
Een stukje strokenprint 1€

Of samen (zonder de prijs van connectoren) = 4,85€ of 0,15€ per terugmeldcontact.

 

Met stroomdetectie

Een correspondent uit Italië heeft op voorgaand ontwerp een deel toegevoegd om ook te kunnen gebruiken met stroomdetectie. Ik heb toelating gevraagd en gekregen om dit ontwerp ook hier te plaatsen. De uitleg bij het ontwerp is in het Engels. (E-Mail adres correspondent kan je bij mij opvragen)


Informations about S88_32 PCB assembly


1) RJ45-8X (S88N) connections to digital controller and from other feedback modules via standard Ethernet patch cables.

2) Supply of module via S88N line, 5 or 12 Vdc (regulator on-board). See ref. 6c for details.

3) Inputs can work either with on-board occupancy detector or as standard inputs; optoinsulation in both modes.

4) Can be fitted as:
- 32 occupancy detectors;
- 16 occupancy detectors and 16 NO contacts;
- 32 NO contacts;

5) Several digital power allowed: only one line intercepted:
- Single input for each channel (ex. for sections powered via semaphore switch);
- common power for each group of eight input (ex. for normal sections);
- mixed power mode allowed in groups of 16;
All the power sources can be different (i.e. separate boosters).

6) a) Assembly variants, referred to input #1:
- Occupancy detector: B1 installed and R1 = 22 to 33 ohm, not critical;
- NO contact: B1 not installed, R1 = 15K-33K ohm, OK1 can be replaced with cheaper or AC type ones;
Note: a supply voltage is required; can be used a -12/15 Vcc (negative respect to common) or the standard
digital voltage

b) Assembly notes
R34: Not used

c) If power is 5 Vdc (S88): - IC1, C1, C2, C5 and C6 not used;
- Place a jumper (wire) across IC1 pins In and Out (the external ones).

d) Alternative: R16-R24 (on solder side) or RN2;
R25-R32 (on solder side) or RN1;
R35-R42 (on solder side) or RN3;
R43-R50 (on solder side) or RN4.

7) Common power line, referred as inputs 1-8:
- Close (solder) jumpers SJ1 to SJ8 (on component side);
- Use a 5.08 pitch screw headers.
Pay attention to the proper headers or connectors placement: the soldered pin has to be NOT on the soldered jumper

8) Single power line: referred as inputs 1-8:
- Leave SJ1 to SJ8 open;
- Use a 2.54 pitch screh header;
- The input pin is the one corresponding to SJx. If swapped the detector will work, but with less sensitivity.

I hope that the drawings can clear all doubts.

In the attached photo you can see a 2-row 41612 Din connector:I used this one because in my application I found better a removable connection rather than 32 screw headers; furthermore, 2.54 pitch connectors are rather expensive, and not so easy to find in blocks bigger than 3-4 places.

s88_32_conn1.pdf

s88_32_conn2.pdf

Eagle 6 files:

s88_32.brd

s88_32.sch

s88_32b.brd

s88_32b.sch

 

Een S88 Master:

Het idee om een S88 Master is ontstaan om de diverse S88 microcontroller projecten eenvoudiger te testen zonder dat er een centrale aan te pas moet komen. De S88 master genereert zelf de benodigde S88 signalen op de S88 bus en zal de eerste 32 ontvangen contacten uitsturen naar LED’s. Ook is dit een deel van een project om een digitale centrale zelf te bouwen. Het is een redelijk eenvoudig projectje geworden en we gebruiken hiervoor weer de PIC µC 16F887. De nodige ,weliswaar beknopte, uitleg programma staat in de assembler code. Bij de praktische uitvoering heb ik 4 keer een 10 LED bar gebruikt om telkens maar 4 keer 8 LED’s (samen 32) uit te sturen. Ik had ze gewoon nog ergens liggen vandaar…. Een zwarte tape heb ik over de overtollige LED’s geplakt. Verder veel uitleg hoeft het printje niet. Ik heb weer gekozen voor een strokenprintje waar hier en daar stroken doorgeslepen zijn. Zelf uit te zoeken hoe je dat best doet, de foto’s en schema zijn duidelijk genoeg. Voor de waarde van voorschakelweerstand R voor elke LED (LED wel getekend als diode) is afhankelijk van de maximale stroom door de LED volgens zijn specificaties. Maar je moet ook rekening houden met de maximale stroom die de µC kan leveren per uitgang en in totaal. Per pin kan de µC 25mA leveren maar voor alle pinnen tegelijker tijd is dit maximum 90mA. Omdat het theoretisch mogelijk is dat alle 32 LED’s aangestuurd kunnen worden, komen we zo uit op pakweg 3mA per LED. Softwarematig heb ik dit opgevangen door maximum 8 LED’s aan te sturen maar door snelle rotatie naar de volgende 8 LED’s enzovoort valt dit niet op. Zo kunnen we per LED ongeveer 12mA aansturen maximum.


 

ASM code S88 Master


Een S88 Volger:

Uit een S88 Master is een S88 Volger ontstaan. Op diverse modelbouwforums had ik al opgemerkt dat er behoefte is om de signalen tussen de S88 bus van de centrale naar diverse S88 terugmeldunits te kunnen volgen. Om zo bijvoorbeeld een LED sporenplan aan te sturen waar het treinenverloop mee op te volgen is. Ook voor testdoeleinden kan het nuttig zijn de terugmeldingen te kunnen volgen tussen centrale en S88 terugmelders. De schakeling is zodanig opgebouwd dat je kan kiezen welke block van 32 stuks terugmeldingen je wil visualiseren. Dit kan je door een brug aan te leggen naar de massa op ingang schakelaar op de µC. Dit doe je als de schakeling nog niet op spanning staat! Zo gauw je de schakeling op spanning brengt zal de software 1 voor 1 om de 2 seconden een LED aansturen. De eerste LED is voor de eerste 32 terugmeldingen. LED 2 voor terugmeldingen 33 tot 64 enzovoort en dit in een oneindige lus. Als je de brug onderbreekt bij de bijhorende LED zal de schakeling deze reeks van 32 terugmeldingen visualiseren. Deze instelling wordt opgeslagen in EEPROM zodat je dat niet telkens weer moet doen. Zo gauw de brug onderbroken is, werkt de schakeling net zoals de S88 master als hiervoor maar dan zonder opwekking S88 signalen. Let ook op de schakeling is de DATA In en DATA OUT lijn niet onderbroken. De schakling leest gewoon mee, of ‘volgt’ de signalen op de S88 bus. Let ook op dat je deze schakeling (of meerder volgers) enkel kunt plaatsten tussen de centrale en de terugmeldunits. Het spreekt vanzelf dat achteraan de S88 na de laatste terugmeldunit er geen data staat op de DATA IN pin.

ASM code S88 volger

 

Een terugmelder op basis van stroomdetectie in een PIC-microcontroller: (update 7/12/2014)

Noot: deze terugmelder met stroomdetectie werkt enkel voor locomotieven die aangestuurd worden met een digitaal signaal. Het gebruikte digitaal protocol zelf, maakt niets uit.
 


Principe stroomdetectie en terugmelder met microcontroller (µC) technologie:

Het principe van stroomdetectie is eigenlijk heel eenvoudig. Elke elektrische verbruiker die stroom nodig heeft, zal een spanningsval creëren over een diode die in serie staat met de verbruiker. Bij Silicium diodes is deze spanningsval 0,6 ŕ 0,7 Volt. Het is deze spanningsval die we gaan meten met een analoge ingang van een µC. De meeste terugmelders, werken met een veelvoud van 8 ingangen, gewoonlijk 16 ingangen. Daarom gebruiken we een µC die 16 analoge ingangen heeft.


Problemen en oplossingen:

Als er geen stroomafname is, dan is de geďsoleerde rail en de kabel naar de detectieprint vatbaar voor het oppikken van stoorspanningen. Aan de printzijde worden deze stoorspanningen afgeleid naar de massa via een weerstand van 10kOhm. Zeer krachtige stoorspanningen worden door de software eruit gefilterd.

De digitale voeding voor verbruikers bestaat uit wisselende polariteit op de aansluitklemmen naar de rails (het is deze wisselende polariteit die de digitale instructies bevatten) . De µC die we gebruiken kan enkel positieve spanningen meten op zijn analoge ingang. Daarom zal de µC moeten weten wanneer er een positieve polariteit staat op de rails. Deze wordt digitaal ingelezen. Enkel als er een positief signaal op de rails staat wordt er spanning gemeten. Sommige stoorspanningen worden door de digitale voeding zelf opgewekt. Een stroomvoerende draad kan bij snelle polariteitwissel (digitaal signaal van + naar - en omgekeerd) via elektro- magnetische werking een spanning opwekken op een aanliggende draad. Nu zal de software nooit een spanningsmeting uitvoeren tijdens dit moment. De software wacht even tot het digitaal signaal al even geen polariteitwissel heeft ondergaan. Het gaat wel over µs...

Slecht wielcontact, of slecht slepercontact, kan er voor zorgen dat er net geen spanningsval gemeten wordt over de diode. Om dit soort fouten op te vangen worden er heel veel analoge metingen uitgevoerd op zeer korte tijd. De analoge meting met een µC kan zeer snel uitgevoerd worden, weliswaar ten koste van de juistheid, maar dit is hier niet van belang of er nu 0,62V of 0,63 V over een diode staat. Alle metingen boven 0,5V worden aanzien als een diode in geleiding en dus stroomdetectie.
Uit softwarematige analyse uit zeer veel metingen (zie ook massadetectie met µC) kan de µC besluiten of er wel een terechte stroomdetectie is, en/of er niet te veel stoorsignalen op de ingang aanwezig zijn.


Minimum en maximum stroom detectiegrens:

De minimumstroom detectiegrens: Deze is proefondervindelijk vastgesteld door weerstanden over de rails te plaatsen en zo te kijken bij welke weerstand er geen detectie meer was. Boven 150kOhm was er geen detectie meer. De testen zijn uitgevoerd met een digitaal signaal met pulsen van -18V en +18V (MS2), dit geeft een minimum detectiestroom van 120µA.

De maximum detectiestroom is vastgelegd door de gebruikte dioden. Bij de 1N4001 is deze stroom 1A. Andere typen Si-dioden kunnen de maximum detectiestroom beďnvloeden.

Bij gebruik van Germanium of Schottky diode kan de spanningsval veel lager zijn. Hiervoor moet in het assembler program constante ‘DREMPELSPANNING’ aangepast worden. Waarde in te vullen in mV.
 

Het principe van metingen met een µC wordt ook deels hier uitgelegd.


Praktische uitwerking op print:

Het is mogelijk deze schakeling onder te brengen op een strokenprint, maar dan moet je het zelf praktisch uitwerken. Eenvoudiger was voor mij deze schakeling uit te tekenen voor een enkelzijdige PCB. De afmetingen van het ontwerp passen dan nog op 1/3 van een Euroformaat PCB. (Euroformaat= 16 op 10cm)

 

Op dit filmpje kan je de schakeling in testopstelling zien. Hier wordt gebruik gemaakt van de S88 Master (rechts) om de S88 bus signalen te genereren. Het is met Marklin C-rails, en het is op de middengeleider waar de stroom op gemeten wordt. De baan is ingedeeld in secties, en elk sectie wordt terug gemeld. (het is maar een testopstelling waar ik de software en hardware uitvoerig kon testen en indien nodig verbeteren) De functie van de LED's op de terugmeldprint wordt hieronder uitgelegd.
 

Extra’s:

Er zitten in de software en hardware enkele extra’s in. Er waren nog 4 in- uitgangen over. Met 4 weerstandjes en 4 LED’s kan je een toestand van de bezetmelders, digitaal signaal en S88 bus weergeven. Deze hoeven niet op de PCB aangebracht te worden, maar kan toch soms handig zijn. (zie rode omcirkeling onderstaande schema)

Gele LED3 (zie ook filmpje) geeft de goede werking van de S88 bus weer. Zonder goede werking van de S88 bus is er geen goede terugmelding. De signalen die gevolgd worden zijn de CLOCK en de LATCH (geen RESET is niet nodig bij terugmelders met µC) Ontbreekt er een van die signalen, dan zal de LED uitgaan. In principe wordt ook de massa en de +5V van de S88 bus gecontroleerd, immers zonder deze kan de LED nooit branden ;)

Gele LED4 geeft aan dat er een digitaal signaal vanuit de centrale aanwezig is. Ook dit signaal moet aanwezig zijn, tenminste het positieve deel, om een eventuele stroomdetectie te kunnen detecteren.

Groene LED1 geeft weer dat er een terechte stroomdetectie inkomt. Na één seconde gaat de LED wel uit, ook al is de stroomdetectie nog aanwezig. Dit is zo uitgevoerd omdat er natuurlijk ook nog andere stroomdetecties kunnen opkomen.

Rode LED2 is net het tegenovergestelde van LED1, deze geeft gedurende 1s aan dat er een stroomdetectie is verdwenen.

LED1 en LED2 zijn handig om een stroomdetectie te testen zonder centrale, je moet dan wel massa en 5V voorzien.
 

Hieronder zie je de plaats van de componenten op het PCB:

 

Hieronder zie je de componenten met het spiegelbeeld van de koperzijde.

 

Het PCB in PDF formaat. (versie kan nog iets wijzigen!)

 

Foto's, meer uitleg en ASM code volgen nog.


Kostprijs schakeling : (Conrad anno 2014)

Dioden 1N4001: 32 stuks (koop ze per 100!) 0,04 x 32 = 1,28€ (162213-89)   (D1-D32)
IC voet: 28pin 0,41€ (183812-89)
IC PIC 16F1516 2,01€ (651584-89)
Rnetwerk 10k 2 x 0,39 = 0,78€ (414310-89)  (RN1-RN2)
R1k 16 x 0.027 = 0,432€ (koop ze per 100!) (404047-89)  (R1-R16)
R100k 0,04€  (R17)
Condensator 0,1µF 0,22€ (530037-89)  (C1)
Schroefconnectors 6x3pinnen = 0,25 x 6 = 1,5€ (731891-89)   (X1-X2)
Male connector 2 x 6 pinnen 0,13€ (741119-89)   (SV1-SV2)
Printplaat 1/3 europrint 0,927€ (525080-89)

7,73€ totaal

Extra's: 4 LED's en 4 weerstanden van 330 Ohm (R19-R22)