Print Page | Close Window

Stillverk V2.0

Printed From: MJF Forum
Category: Modelljernbane i alminnelighet
Forum Name: Digitalstyring, datastyring og automatikksystemer
Forum Description: Alt om digital og automatisk styring av modelljernbane
URL: http://forum.mjf.no/forum_posts.asp?TID=11083
Printed Date: 22 november 2024 at 07:15
Software Version: Web Wiz Forums 12.05 - http://www.webwizforums.com


Topic: Stillverk V2.0
Posted By: hflesche
Subject: Stillverk V2.0
Date Posted: 10 mars 2021 at 19:18
Første versjon av mitt "stillverk" ble laget på 90-tallet. Tradisjonelle vippebrytere koplet mot vekselmotor sørget for den delen av styringen. I tillegg ble vippebrytere brukt for andre styringssignaler som retningsstilling av blokkstrekninger og innkjør/utkjør.




Elektronikken ble bygget opp av logiske kretser som styrte signalene. Ikke så veldig avansert, men noenlunde riktige signalbilder ble satt på hovedsignaler og forsignaler.

I mine øyne er dette stillverk versjon 0.


For tre år siden gjorde økt kompetanse og tilgjengelig teknologi at et mer avansert stillverk kunne se dagens lys. Versjon 1.0 er beskrevet i denne tråden:
http://forum.mjf.no/jeg-ble-s-inspirert-stillverk_topic10550_post17075268.html?KW=#17075268" rel="nofollow - http://forum.mjf.no/jeg-ble-s-inspirert-stillverk_topic10550_post17075268.html?KW=#17075268

Stillverket fungerte, men det ble ikke integrert mot den stasjonen det skulle styre. To hovedgrunner:
1. stasjonen var langt fra ferdig.
2. stasjonen var ikke planlagt med stillverket fra begynnelsen av. Det var ikke avsatt fysisk plass og kassen jeg hadde plassert elektronikken i, var for stor til å bli integrert. 

Der stoppet prosjektet midlertidig opp i en halvferdig tilstand. 
 
Jeg slet med å finne den ultimate måten for kopling av ledninger mellom stillverket og resten av stasjonen. Og min løsning var lite vedlikeholdsvennlig og neppe særlig pålitelig, noe påfølgende bilde viser. I tillegg hadde noen elektronikkomponenter en tendens til å begynne å koke, hvilket tydet på underliggende designfeil.



På slutten av fjoråret ble det blåst liv i gamle prosjekter. På stasjonen ble det lagt spor og annen infrastruktur ble laget til. Stillverket ble redesignet og splittet i en paneldel og en kontrolldel, begge med hver sin arduino som hjerne. Enkel UART kommunikasjon mellom de. En arduino nano er mer enn nok for panelet, mens en mega-klone brukes til kontroll fordi den må ha mer enn en seriell port.
Jeg har også økt min kompetanse på elektronikkområdet og designet enkle kretskort til bruk som byggeklosser. Kortene er produsert ved fabrikk og således av mye bedre kvalitet enn det jeg lager selv.

Stillverk V2.0 så dagens lys.

Panelet med ramme er litt mindre enn den kassen jeg hadde i V1.0, og nå var det plass til å felle det inn i siden på en modul samt plass til nødvendige kort på innsiden av modulveggen. Noe ledningsførsel blir det. Tross alt er det noen lys som skal ha strøm og noen stillere som skal gi posisjon. Men at det nå er vedlikeholdbart, har jeg fått bevist ved at en led som var røket, ble skiftet uten problemerr. Feilsøking på stillere har vært foretatt. Programvaren i arduinoen har blitt oppdatert flere ganger. Har et eget kort som den kan plugges inn i (kortet som er synlig oppe til høyre) og da er det minimalt med koplinger som skal gjøres for å medbringe arduinoen til opplasting av ny programvare. (Stor forskjell fra V1.0 der alle pinner måtte frakoples hvis arduinoen skulle tas ut.)

For hovedenheten sin del er det for det meste basert på I2C kommunikasjon ut til kort for styring av signaler og veksler, samt deteksjon av belagte spor. Dette forenkler kablingen.
Kommunikasjon med tilgrensende stasjon (blokkstyring) er p.t. arv fra tidligere oppsett og er separate signaler som hver krever sin pinne på arduinoen. Ikke så veldig avansert, men nok til å kunne retningsstille og vise fri/belagt for blokkene på A og B siden.
Det er planlagt å implementere meldingstrafikk over seriell linje i stedet, da kan det åpnes opp for mer avansert fjernstyring av stasjonen utover den automatiske gjennomkjøringen som er implementert nå.

Stillverket er oppe og går. Togveier og dvergtogveier kan legges, veksler legges om om nødvendig. Togbevegelser detekteres og signaler rives. Programvaren er feilfri (ihvertfall inntil det motsatte er bevistWink). Jeg har måtte gjøre noen tilpasningsfortolkninger til gjeldende regelverk for å få det til å fungere i min sammenheng, ellers er det mest mulig forbildetro.

Et prosjekt som er fullført, jeg må si meg fornøydClapClapClap.





-------------
Helge F.



Replies:
Posted By: Laurenz
Date Posted: 11 mars 2021 at 18:18
Det ser veldig bra ut!


Posted By: hflesche
Date Posted: 13 mars 2021 at 10:57
Originally posted by Laurenz Laurenz wrote:

Det ser veldig bra ut!

Takk, LaurenzSmile

Litt mer om designet. Her er blokkdiagram som viser hovedkomponentene og forbindelser.


Strømforsyning er 12V AC som er delt opp i flere kretser og gjort tilgjengelig overalt på anlegget. Har laget strømforsyningsenheter som likeretter og konverterer til 5V DC, regulert.

Betjeningspanelet først:
Indikator er bare en annen måte å si LED på.
Stillere er vippebrytere og trykknapper. Noen brytere er fjærende on-off-on, noen vanlige on-off.
Debounce filter er for å få ren av-på signal fra stillere. Egetdesignet kort med Schmitt triggere.
I/O Expander er kort med MCP23017 brikker. Ved å bruke de brikkene, trengs kun to ledninger (bus) for data og en ledning for interrupt. Bruk av interrupt gjør at stillerposisjoner leses kun når de betjenes.
Shift registre er for styring av LED. HC595 brikke basert egetdesignet kort. Da kan man styre 8 led pr kort, og det trengs kun tre ledninger fra arduinoen. Kortene kan kjedes, jeg bruker 7 kort for panelet.
PWM generator brukes for å dimme intensiteten på LED'ene. Egetdesignet kort, og tilkoplete potmetre gir mulighet for å regulere. Shiftregistrene er organisert slik at grønne LED er koplet til ett sett av kort, tilsvarende for hvite, og et kort tar rød, gul og blå. Da kan jeg regulere intensiteten på de tre gruppene separat.
Panel kontroller er en arduino nano. Har laget et kort til den og, slik at ledninger er koplet på kortet og arduinoen settes inn med alle sine pinner i tilsvarende sokler på kortet. Lett å ta arduinoen med seg til PC'en ved oppdatering av programvaren.
Amperemeteret vises på panelbildet. Det måler og viser omleggingsstrømmen på vekselmotorene. 

På hovedpanelet er det noe tilsvarende som på betjeningspanelet. Strømforsyning og Debounce filter er lik.
Kontrolleneheten er en arduino mega klone.
I/O Expander er delvis lik, men bruker og MCP23017 brikke på egetdesignet kort for styring av LED på dvergsignalene.
Hovedsignal og dvergsignal lager jeg selv. Har fått produsert et kretskort for dvergsignal basert på overflatemonterte LED.
Surren er et 12V relé fra Biltema som får vekselstrøm fra et annet relé. Det gir fra seg en kraftig surrelyd når det aktiveres (lurer på hvor lenge det vil holde...).
Motorstyring er kort med L9110 brikker kjøpt på eBay.
Vekselmotorene er Tortoise, de gir og sin posisjon tilbake til arduinoen.
Detektorene er strømdetektorer (spoler) koplet opp med egetprodusert kort.

Alle enhetene er koplet med felles jord. Det forenkler noe. Mens kommunikasjon med hovedpanelet er uten felles jord, og der brukes optokoplere for å ha galvanisk skille. Kommunikasjonen er p.t. basert på 5 statussignaler den ene veien og 3 den andre (dette pga arv fra et tidligere oppsett). Blir nok erstattet av UART forbindelse og meldingsbasert informasjonsutveksling (en dag i fremtiden...).




-------------
Helge F.


Posted By: hflesche
Date Posted: 09 april 2021 at 07:16
Tenkte jeg kunne ta noe mer om detaljer, hvis det er interesse for det. Begynner med strømforsyningen.

Jeg har lagt 12V AC tilgjengelig i hele anlegget. Fra den tar jeg ut strøm til de forskjellige forbrukerene. Hovedsakelig har jeg nå standardisert på 5V DC, men det er noen få unntak som bruker 12V DC.
Tidligere satte jeg opp likeretter etc som separate enheter, så gikk jeg over til å lage mer sammensatte egenproduserte kort. Siden jeg hadde en bestilling på andre spesialkort nylig, inkluderte jeg også strømforsyningskort og fikk mer profesjonelt utseende kort. Resultatet ser dere på bildet.

Kortet er enkelt. Det har en 12V AC inngang, en inngangssikring, en brolikeretter, LED indikatorer på at spenning er til stede før og etter likeretteren, og en 7812 spenningsregulator med kondensatorer for å få det til 12V DC. Ett uttak for 12V DC om behov, og så går det gjennom en DC-DC konverter (ferdiggkjøpt fra eBay) som konverterer til 5V DC regulert. Konverteren gir ikke effekttap som en 7805 spenningsregulator ville gitt.
I hovedsak bruker jeg dupont plugger for tilkopling mot forbrukere, men har og tatt med noen skrutilkoplinger om det er behov for litt større ledningsdimensjon eller på annet vis en fastskrudd kopling.



-------------
Helge F.


Posted By: hflesche
Date Posted: 15 april 2021 at 19:34
Litt om sporfeltdeteksjon. Under Stillverk V1.0 vurderte jeg ulike måter å detektere tog på: Optisk, magnetisk eller strøm. Landet egentlig ikke helt og la opp til en blanding av magnetiske detektorer for ankomst av tog, og strømdetektorer for opptatt sporfelt på stasjonsområdet (spor I og II).
Magnetisk deteksjon betød at det måtte legges ned reed-kontakter eller Hall-effekt detektorer på utvalgte steder i skinnegangen, og magneter påsatt rullende materiell. Forlot den tankegangen ifm Stillverk V2.0 og har gått kun for deteksjon av strømforbruk.

Her er inndelingen i sporfelt med plassering av detektorer, samt hvordan det er koplet opp. Sentralt er DCC delt opp i ulike områder med hver sin kortslutningsbeskyttelse. Fordeling ut til områdene gjøres med to 2.5 mm2 ledninger til hvert av områdene. Sort ledning er felles, mens hvit ledning er den som går gjennom kortslutningsbeskyttelsen og som blir splittet og fordelt ut til de enkelte sporfeltene. Den sorte vises med tykkere grønn strek på koplingsskjemaet. Anlegget er delt opp i forskjellige moduler med sukkerbiter på den ene (eller begge) siden(e) av modulgrensesnittet slik at det går an å ta anlegget fra hverandre uten å måtte klippe ledninger. Når et sporfelt strekker seg over flere moduler, brukes andre ledningsfarger enn hvit for å holde styr på hva som skal koples sammen. S2 og S6 er blokkstrekningene koplet til stasjonen (navnsetting er arv fra tidenes morgen).


Strømdetektor ble beskrevet i en artikkel i MJ-bladet for noen år siden. Med utgangspunkt i det som stod der, tilpasset jeg kretsen til 5V DC og de komponentene jeg har. Laget så et kort for 4 detektorer. 
Her er skjema:


Jeg har to utgaver av detektorspolen. Den ene er montert på et lite kretskort. Kortet har påloddet en SMD motstand som må loddes av, og har pinner for enkel tilkopling av ledning videre til detektorkortet. Den andre utgaven er uten kretskort.

Her er bilder av spole og detektorkretskort, etterfulgt av et stemningsbilde av operativt kort som viser deteksjon.







-------------
Helge F.


Posted By: Laurenz
Date Posted: 17 april 2021 at 17:43
Takk for at du deler. Jeg synes det er veldig interessant, selv om jeg ikke har nok kunskapp til å bygge noe lignende. Dette ser veldig proffesionelt ut. Gøy!


Posted By: hflesche
Date Posted: 21 april 2021 at 19:23
Brytere gir ikke ren av-på overgang. På engelsk kalles problemet "bounce" og man benytter teknikker for å "debounce". Vet ikke hva som er korrekt fagterminologi på norsk, har sett "prelle" og "sprette" i bruk. "Avspretting" klinger unektelig litt rart i mine ører. Ber man Google Translate om å oversette artikler om temaet, får man mange morsomme tekstlige konstruksjoner.

Det er to hovedmåter å kjøre "debounce" på, i programvaren eller med elektronikk. I stillverket er det mange brytere, og jeg benytter meg av interrupt for å detektere at de betjenes. Da synes jeg det er enklest å bruke elektronikk for "debounce".
Mange mulige kretser finnes, tar man et kjapt søk på nettet, kommer det opp mer eller mindre anvendelige tilnærminger. Jeg har valgt å bruke schmitt-triggere i 74HC14N brikker og fått produsert kretskort. Hvert kort har 6 innganger/utganger og pull-up motstander slik at utgangssignalet holdes høyt inntil bryteren legger inngangen til jord. Her er skjema:


Ved ulike kombinasjoner av motstand og kondensator, setter man ønsket "debounce" forsinkelse. Jeg har ikke gjort uttømmende eksperimenter, men målte med oscilloskop på en vippebryter en gang i tiden, og kom til at kombinasjonen 1 Mohm og 10 nF funket bra for den brytertypen jeg bruker. Det gir verdier mellom 4 og 14 ms.

Her er bilde av et kort:



Bruker disse kortene også i kombinasjon med sporfeltdetektorkortene. Antok først at jeg trengte lenger debounce for å ta høyde for kontaktproblemer mellom hjul og skinner, men jeg hadde liggende noen ferdigloddete kort med 4-14 ms debounce og de har funket. Så får tiden vise om det holder i lengden.

Legger til et bilde hvor detektorkortet er koplet sammen med debounce-kortet:




-------------
Helge F.


Posted By: hflesche
Date Posted: 22 april 2021 at 21:04
For lesing av stillerene på betjeningspanelet bruker jeg ekspansjonskort. Det er flere grunner til det. En er antallet, det er 33 inputsignaler som skal leses og det overstiger med god margin antallet som kan koples mot en arduino nano (som jeg foretrekker i denne sammenhengen). Ledningsførsel kan forenkles da antall ledninger som trengs mellom arduinoen og ekspansjonskortet er få i sammenligning med antall I/O kortet kan håndtere.
Jeg bruker ferdigkjøpte kort med adresserbare MCP23017 brikker på, og I2C kommunikasjon mellom arduino og brikken. Den brikken kan håndtere 16 stk I/O, og kan konfigureres fra programvaren til å være både input og output. I tillegg har den interrruptfunksjon, som jeg også har tatt i bruk. 

Her ser vi en preiser som ivrig betrakter et slikt kort mens flere nysgjerrige flokker seg i bakgrunnen:


Når en stiller betjenes, legges den mot jord. Signalet filtreres for "bounce" gjennom bryterpanelkortet (aka debounce-kortet) og setter tilkoplet port på ekspansjonskortet til jord (lav). (Portene er satt til "høy" med innebygget pull-up). Endringen fra høy til lav genererer en interrupt, som igjen får programvaren til å lese stillerposisjonene og kommunisere avleste posisjoner til kontrollenheten (se tidligere innlegg som viser at betjeningspanel og kontrollfunksjon er i hver sin arduino).
Ofte må to stillere betjenes samtidig for å få ønsket effekt (eks: legging av togvei). Stillerene blir aldri lagt på samme mikrosekund, men begge vil generere interrupt slik at når nr 2 gir interrupt, leses begge stillere som aktivert og det kommuniseres til kontrollenheten.
Interrupt gis og når en stiller går fra aktivert til deaktivert slik at det og kommuniseres til kontrollenheten.

Oppkopling av stillere mot debounce-kort og videre mot ekspansjonskort vises her:


Jeg går ikke nærmere inn på bruk av I2C for kommunikasjon. Det finnes mange artikler og annen dokumentasjon på nettet. Datablad for MCP23017 kan være litt tung lektyre for enkelte, men det er forklarende artikler også. For programmeringen sin del bruker jeg tilgjengelig bibliotek som forenkler konfigurering og lese/skrive-operasjoner vesentlig. 
Vær bare obs på en ting med MCP23017. Den fungerer utmerket når det kun er den brikken som er tilkoplet I2C-bussen. Forsøk på å kople til andre I2C enheter går ikke bra. (dette finner man også info om i ymse forum på nettet).


-------------
Helge F.


Posted By: hflesche
Date Posted: 27 april 2021 at 20:51
Det er 52 lamper (LED) på betjeningspanelet. Skift-registre koplet i serie benyttes for å kontrollere dem. 74HC595N brikken, som jeg bruker, gir 8 utganger og koples i serie med neste brikke.  Jeg kunne brukt det samme kortet som brukes til lesing av stillere (MCP23017), men på 74HC595 kan det gis et inngangssignal som styrer når utgangene er påslåtte. Det bruker jeg til å regulere lysintensiteten utover det som oppnås ved valg av formotstand, ved et pulsbreddemodulert signal.

Også her har jeg laget og fått produsert egne kretskort for min bruk. Tre ledninger trengs fra arduinoen i tillegg til +5V DC og GND, viderekopling til neste kort i serien er inkludert. På kortet er det også plassert en ULN2803 Darlington Array slik at det kan brukes til å drive enheter som trenger mer strøm enn det skift-register brikken kan levere.
Her er to versjoner av kortet, den eldste til venstre er uten muligheten for å ta inn signal for styring av utgangene. Den nyeste til høyre har også fått digitale utganger som gjør at kortet kan brukes uten behov for Darlington brikken.


Her vises hvordan kortene er koplet og hvilke lamper de styrer. For å kunne justere lysintensiteten har jeg samlet hvite, grønne og øvrige på hver sine kort, og har da uavhengig intensitetsjustering for hver av de tre.



På bildet er skiftregisterkortene koplet i serie fremhevet, sammen med de tre kortene som produserer det pulsbreddemodulerte styresignalet (nede til høyre). De sistnevnte kortene har tre potmetre montert ved siden av betjeningspanelet for lett tilgang til lysjustering. De kortene er og laget for mer allsidig bruk, derfor er ikke alle komponentene påsatt i den utgaven som brukes her.




-------------
Helge F.


Posted By: hflesche
Date Posted: 06 mai 2021 at 20:47
Det er behov for kommunikasjon mellom stasjoner for blokkstyring. I tillegg kan det være greit å ha mulighet for fjernstyring. Det er noen designvalg man må gjøre. Skal man ha punkt-til-punkt forbindelser? Eller skal man ha en sentral enhet og nav-eike forbindelser? Skal man ha en buss? Hvilken kommunikasjonsstandard legger man seg på? Mmm. Det er ingen optimal fasit; det avhenger av smak, behag, kompetanse, lommebok og hva man har fra før.

Pga arv, så er det per nå implementert en primitiv punkt-til-sentral forbindelse for stillverket. En leder pr signal, og signalet er enten på eller av. En pin pr inngående og utgående signal på arduinoen. Enkelt og greit, men det skalerer ikke opp hvis man vil ha mange ulike signaler overført. 
Jeg har laget meg noen kort med optokoplere for å ha galvanisk skille og unngå å måtte ha felles jord for hele anlegget. Kortene har indikatorer for hvert signal for monitorering av status på kommunikasjonen. 
Her er et bilde som viser 5 signaler den ene retningen og 3 av 4 i bruk den andre retningen:


Men det er ikke slik jeg vil ha det. Jeg vil legge om til meldingstrafikk over en UART forbindelse. Det er da kun behov for to kryssete ledere for sende (TX) og motta (RX) og felles jord. Eller slik jeg gjør det med optokoplere, blir det 4 ledere (RX, TX, +5V og GND). 
Siden jeg har verktøy til å lage nettverkskabler, holder jeg meg til RJ45 plugger (evt RJ11/RJ12).
Har fått produsert kort for forbindelsen, her er skjema:


Og her er kortet i sine 3 deler:


Innledningsvis var jeg litt skeptisk til å bruke PC817 optokopler. Jeg hadde en drøss liggende, så jeg testet at jeg fikk tilfredsstillende hastighet og ledningslengde før kortene ble satt i produksjon. PC817 er ikke så veldig rask, og det som skal være en firkantpuls, blir til noe som mer ligner på en sagtannpuls. Men bekymringen var grunnløs. Har testet med to stk arduino koplet mot hverandre, hhv 2m og 10m Cat 5 ledning og maksimal hastighet jeg kunne sette (921600 baud), uten overføringsfeil i meldingene.

Meldingsprotokollen har jeg ikke satt opp ennå. Mellom betjeningspanelet og kontrollenheten baserer meldingsprotokollen seg på kringkastingsprinsippet. Det er da ingen kvittering for at en melding har kommet frem til mottaker, og det sendes full status på alle verdier i meldingene hver gang man sender.
For blokkstyringen sin del regner jeg med å ha ulike meldinger og skille mellom kvittering for mottak og respons på mottatt melding. Og selv om mine kommunikasjonseksperimenter var vellykkete, tenker jeg på å legge inn enkel feildeteksjon i meldingene.


-------------
Helge F.



Print Page | Close Window

Forum Software by Web Wiz Forums® version 12.05 - http://www.webwizforums.com
Copyright ©2001-2022 Web Wiz Ltd. - https://www.webwiz.net