MODELLJERNBANEFORENINGEN I NORGE (MJF) - forum

  New Posts New Posts RSS Feed - Programmeringssporet
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

Programmeringssporet

 Post Reply Post Reply Page  <1 4567>
Author
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 06 januar 2017 at 01:23
Jakten på et effektivt servofeste for sporveksler.

Hittil har jeg brukt et 3d printet feste for servoer (lenger oppe i tråden).  Dette fungerer ok, men det krever justering av pianotråden mellom servo og sporveksel.  Jeg er på jakt etter et servofeste som kan skrues fast i sporvekselen uten noe justering, utenom i programvare.  For å få til dette tror jeg det er enklest med et gir basert på nedveksling med tannhjul.  Jeg har derfor printet ut noen tannhjul i forskjellige dimensjoner med forskjellige størrelse på tennene, for å teste ut dette :


Denne første prototypen drives av en standard micro servo med utslag 180 grader.  Nedgiringen gjør at den gule stangen, til venstre i bildet, kun beveger seg 5 millimeter.  Denne første prototypen er alt for stor, men hvis den fungerer funksjonellt, blir neste skritt å se hvor liten jeg kan lage en ny en.  Tenker å koble denne opp til en sporveksel, og teste litt før jeg går videre med dette.


Edited by programmeringssporet - 06 januar 2017 at 01:32
Back to Top
steinel View Drop Down
Medlem i MJF
Medlem i MJF
Avatar

Joined: 27 januar 2016
Location: Norge
Status: Offline
Points: 821
Post Options Post Options   Thanks (0) Thanks(0)   Quote steinel Quote  Post ReplyReply Direct Link To This Post Posted: 06 januar 2017 at 07:45
Det blir bra Smile

Jeg har planer om å bruke bitte små lineære servoer som på bildet. De kan enten kjøres som en servo, eller så kan all elekronikken fjernes. Men en passende seriemotstand kan de bare stå og dra bitte lite grann strøm når de treffer enden, eller evt kjøre de med en passe lang puls.

Har ikke sjekket så nøye enda, men de koster godt under 50 kroner pr stk med free shipping fra kina.


Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 07 januar 2017 at 12:39
Hei,

Ja jeg tror det blir bra - men er litt skeptisk til holdbarheten til PLA plastenhvis jeg lager det for lite. 
Hvis jeg må bestille deler printet i andre materialer, blir det kanskje for dyrt.

Jeg har litt troen på å forenkle, som du sier med kun å bruke en motor som står på kontinuerlig.  Det løser problemet både med justering og fjæringen.

På N-skala stasjonsmodulen, har sporplanen jeg jobber med for øyeblikket ca 65 veksler.  Sansynligvis blir det veldig trangt noen steder - alternativet ditt med en lineær servo blir da veldig aktuell.  Tenker også på små stegmotorer som et alternativ,  eller lineærmotorer, men de er litt dyre.  Gi meg gjerne tilbakemelding hvis du kjøper servoer, og du er fornøyd med leverandøren, men det skal vel litt til å bli like gode som digikey.no med leveranse på døren med UPS fraktfritt - ved bestilling over kr 420 (servoene jeg tester med nå koster fra 50 - 80 kroner avhengig av om de har drev av nylon, karbon eller metall)

Antar at belastningen til mitt bruk er minimal i forhold til f.eks. radiostyrte droner / fly.

Ved automatkjøring kan man kanskje regne med at en sentral sporveksel skifter opp til 4 ganger pr. minutt.  Det gir 240 ganger i timen.  Ved kjøring to timer i uken, gir det 100.000 skifter i løpet av fire år.  Må derfor lage en konstruksjon hvor det er enkelt å skifte slitedeler.

Tror jeg skal sette opp en test hvor jeg legger over hvert 3. sekund - da vil en ti timers test gi 12.000 skifter.
Back to Top
HelgeBe View Drop Down
Veteran
Veteran


Joined: 24 mai 2005
Location: Norway
Status: Offline
Points: 131
Post Options Post Options   Thanks (0) Thanks(0)   Quote HelgeBe Quote  Post ReplyReply Direct Link To This Post Posted: 07 januar 2017 at 21:21
Hei

Billige servoer og annet RC utstyr kan du f.eks. kjøpe fra www.hobbyking.com i Hong Kong. Jeg har handlet mye derfra både til meg selv og andre. En servo som sikkert kan gjøre nytten er denne: servo

De små lineær servoene er laget for å være spesielt lette. Jeg er usikker på levetiden til disse.

Pass på at du handler fra butikken i Hong Kong («Global») og ikke andre steder. Det gir de laveste prisene og rimeligst frakt.

Selv om disse servoene er små så har de et kraftig moment og kan sikkert dra løs en pens eller ødelegge den. I tilfeller hvor en servo driver noe som kan møte en mekanisk hindring har man derfor ofte en fjær eller noe annet i overføringen som gir etter ved for høy kraft, en såkalt «servoredder».

Normal vandring for en servo er 90°. Den kan gå lenger men da må man passe på at man ikke kommer til den indre mekaniske sperren eller enden på pot-meteret som sitter på utgående aksel.

Ved å lage en smart overføring kan man imidlertid sikre at bevegelsen aldri går over en bestemt lengde uansett hvor langt servoen dreier. Under har jeg prøvd å illustrere et eksempel med bruk av en eksenter på servoen og en returfjær. Ved å endre på forholdet mellom lengdene på armene kan du få den utvekslingen du vil.

Helge B.



Edited by HelgeBe - 07 januar 2017 at 21:24
Back to Top
HelgeBe View Drop Down
Veteran
Veteran


Joined: 24 mai 2005
Location: Norway
Status: Offline
Points: 131
Post Options Post Options   Thanks (0) Thanks(0)   Quote HelgeBe Quote  Post ReplyReply Direct Link To This Post Posted: 07 januar 2017 at 23:23
Hei

Takk for forslag angående vognbelysning. Det meste går meg imidlertid litt over hodet. Jeg behersker dessverre ikke programmering av hverken den ene eller det andre. Det kan synes som Train Tech sin løsning er basert på bruk av et akselerometer.

Forslaget om å bruke en IR sensor satt meg på ideen med å gjøre et lite forsøk. Jeg pillet ut innmaten fra et fjernstyrt juletrelys og la det oppe under taket inne i en vogn sammen med et AAA batteri. Selv om IR mottakeren peker oppover oppunder taket går det fint å slå av og på lyset med fjernkontrollen på god avstand og i forskjellige vinkler. En slik løsning ville være god nok for meg da jeg bare driver med manuell kjøring. Jeg hadde håpet jeg bare kunne hekte på noen flere lysdioder. Imidlertid så trekker denne saken 2,5 mA når lyset er av og det er for mye hvis man skal få akseptabel levetid på batteriet.

Så det jeg trenger nå er en liten dings som kan kobles sammen med en IR mottaker, som trekker minimalt med strøm i hvilemodus og som ikke behøver programmering, f.eks noe a la en 555 IC.

Helge B.
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 10 januar 2017 at 23:00
Helge,

Takk for info.  Løsningen med utveksling med forskjellige lengder på armene har jeg ikke tenkt på - det var en enkel og grei måte å gjøre det på.  Hovedargumentet mitt for denne relativt kompliserte tannjulsnedvekslingen, er at når den først er konstruert, kan jeg printe ut mange, og installerer dem fort.  Målet mitt er at det tar maks 30 minutter å  sette opp en ny servo.  For å få til dette må jeg standardisere.  N-skala Stasjonsmodulen min er basert på kuber 150 x 150 x 49 mm.  En komplett ferdig servostyring må derfor lett kunne monteres innenfor denne rammen med ferdige skruehull.  Hvis hver servostyring kommer ned i størrelsen 150 x 75 x 45, får jeg plass til to i hver kube.  Med en komplett servostyring mener jeg : Servo, nedveksling, fjæring, to mikrobrytere for polarisering og kanskje to mikrobrytere for posisjonstilbakemelding.  I tillegg til dette skal det også være plass til styringselektronikken.  Enten velger jeg en Arduino pr. styring, eller så styrer jeg en gruppe med servomoduler fra en Arduino.

Pris er selvfølgelig også avgjørende for om dette er fornuftig.  3D printing er tilnærmet gratis (< kr 10) når man ser bortifra kostnaden for selve printeren, koster plasten kr 300 pr. kilo.  Et tannhjul veier kanskje 10 gram.  Servoen som du linker til koster ca 25 kroner.  En "Arduino prosessor" ca. kr 20.  Det bør derfor være mulig å lage en komplett styring til omtrent kr 100 kroner pr stk. inkludert dekoder/styringselektronikk.  For 50 sporveksler blir totalkostnaden kr 5000,  eller kr 10000 hvis man regner med prisen for 3d printeren.

Når det gjelder vognbelysningen din ser jeg to aktuelle løsninger :
1.  Bruk ir-fjernkontrollen din, men legg til en reed kontakt for å slå på, og en reed kontakt for å slå av.  Du kan derfor få strømforbruk = 0, når anlegget ikke er i bruk, men krever at du sveiver over vognene med en magnet for å slå på fjernkontrollelektronikken.

2  Jeg vil også anbefale deg å vurdere MERG  PMP19 - Automatic Coach Lighting.
http://www.merg.org.uk/kits.php#sect31
Medlemmer kan kjøpe et bygggesett som du lodder sammen selv - men prosessoren leveres ferdig programmert.    Merg har også en bok - alle kan laste ned. 

http://www.merg.org.uk/ebook.php

Her er mange av kittene til MERG dokumentert med PMP 19 er desverre laget etter at boken ble laget - så den mangler.  Selve byggesettet koster 1,3 Engelske Pund.  Medlemskapet koster ca kr 200 for et år - inkludeet 3 - 4 blader i posten.

Jeg tror jeg har bruksanvisningen til PMP 19 på papir, så den kan jeg evt. skanne, men jeg tror du må være medlem for å få tilgang til mikrokoden / programmet til prosessoren.

Anbefaler egentlig alle å laste ned boken - her er det mye å lære og mange referansekretser som kan være greie. 

Her er en liste over byggesett, alt fra gasslampe simulator, servostyring til komplette DCC systemer.

http://www.merg.org.uk/kits.php#sect31


 
Back to Top
HelgeBe View Drop Down
Veteran
Veteran


Joined: 24 mai 2005
Location: Norway
Status: Offline
Points: 131
Post Options Post Options   Thanks (0) Thanks(0)   Quote HelgeBe Quote  Post ReplyReply Direct Link To This Post Posted: 11 januar 2017 at 22:31
Skal servoen og resten av mekanismen plasseres under sporveksleren?

Helge B.
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 12 januar 2017 at 23:00
Originally posted by HelgeBe HelgeBe wrote:

Skal servoen og resten av mekanismen plasseres under sporveksleren?

Helge B.


Primære tenker jeg å felle mekanismen med Servo inn i grunnplaten ved siden av sprovekselen.  Hensikten er å kunne montere dette fra oversiden.  Senere når jeg har dekket den med landskapsdetaljer, gjør jeg service og utskiftninger fra undersiden, men først må jeg lage en mindre mekanisme.
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 20 januar 2017 at 00:32
Den første prototypen (versjon 0) av servofestet er montert.  Den fungerer utmerket foreløpig men jeg har ikke testet den mye enda.  Foreløpig har jeg beholdt fjæren i Peco vekselen for å belaste servofestet maksimalt under utttestingen.  Som man kan se av bildet under, har jeg laget en ny litt lengre arm og laget fester for armen. 

Tre umidelbare svakheter med denne :

1. Størrelse på hele mekanismen - men dette var ikke fokus på denne første.
2. Lav utveksling og ingen fjæring, jeg må derfor benytte pianotråd mellom armen og sprovekselfor å få fjæring.
3. Mange skruer for å løsne armen for å gjøre justeringer.

Versjon 1, er forbedret på noen områder :
1.  Et ekstra tannhjul for høyere utveksling.
2. To skinner for glidemekanismen.  Planen er å koble armene sammen med pianotråd for å oppnå fjæring inne i mekanismen.

Denne versjonen er ikke helt ferdig enda, men jeg har prøvemontert den :

Her har jeg også laget en vinkelprofil som skal skrues fast til mekanismen og til sporveksel.  På denne måten kan jeg printe ferdig mekanisme med overføringsarm, og montere dette uten justeringer.

I perioden september - desember 2016, har jeg innkjørt tanklokomotiver, først to akslede, deretter treakslede uten løpeaksler.  Deretter  med tre drivaksler og løpeaksler, og i desember tanklokomotiver med 5 drivaksler.  Jeg kjører fremdeles prøvemodulen analog.  Den har 5 sidespor for hennsetting.  For å kunne ha flere analoge lokomotiver på sporet, laget jeg en hylle som koblet sammen prøvesporet, med sidesporet.  Foreløpig er det bygget med løse gamle rocoline skinner.  Det er på denne hyllen jeg nå tester ut servofestene, og da får jeg også noen nye sidespor, som jeg trenger nå som jeg i Januar starter inkjøring av tenderlokomotiver med tre drivaksler.

Jeg har også begynt å lage den versjonen av servofeste som jeg skal printe mange av.  Utfordringen jeg har hatt med å kombinere servo med tannhjul er plassbehov.  Jeg tror ikke jeg klarer å printe tannhjul som kan montereres direkte på servoakselen/tannhjulet.  Jeg har derfor montert tannhjulet på et servohorn.  Dette gir da stor omkrets og derved mange tenner på tannhjulet, som igjen gir lav utveksling.  Jeg har derfor montert tannhjulet over servohornet, og fått en alt for høy konstruksjon.  En løsning som jeg nå har valgt, er å montere tannhjulet under servohornet.  Jeg får derfor lavere høyde, og et relativt lite tannhjul, men kan ikke lage det så lite som ønskelig, fordi den nå ligger over deler av halsen til servoen.  Her er tegningen av konstruksjonen:


Og her er en uferdig versjon 2 :


Med denne får jeg en mye lavere konstruksjon, og jeg kan få samme nedveksling som prototypen, men mye mindre tannhjul :



En annen stor forbeding er at hele mekanismen skrues sammen uten bruk av balsaplate - som i de andre versjonene.  Hele mekanismen med sammenkobling til sporvekslel blir da laget med en servo, noen 3d printede deler, noen skruer og en kort rett pianotråd for fjæring.

Forskjellige versjoner av armen, kan da også gi forskellige plasseringer av mekanismen i forhold til sporveksel, under, eller på siden.




Edited by programmeringssporet - 20 januar 2017 at 00:47
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 06 februar 2017 at 03:43
Status Servo

Ting tar tid, men nå begynner jeg å føle at jeg har kommet frem til en prototype av den endelige versjonen.

I verkstedet mitt er det skråtak ved den ene kortveggen.  Der har jeg satt opp en hylleplate som er 25 cm bred.  Denne er i forbindelse med  benken med testmodulen.  Jeg har da fått et sidespor som skal gå fra testmodulen  til sidesporsmodulen som nå står mere eller mindre permanent montert 25 cm over arbeidsbordet.  Foreløpig er sporet ferdig fra testmodulen til hyllen.  Her legger jeg opp til 5 sidespor, som kan benyttes til oppstilling av lokomotiver, eller være utgangstasjon for et lite lokalt godstog som kan gå til Inglenooken på testmodulen.  Til dette trenger jeg 5 sporveksler med servostyring.


 
På bildet over  kan man se den gule første prototypen (0 versjonen) i midtten denne er koblet til sporveksel med en tradisjonell pianotråd som også gir fjæring.   For å belaste overføringen, har jeg valgt å ikke fjerne fjæren i Peco vekselen.

Til høyre for denne, er det en Arduino Uno som skal styre disse 5 sprovekslene.  Til Arduinoen har jeg laget en monteringsplate med dimensjon omtrent 95 x 65 mm.

Til høyre for Arduinoen er prototype 1.  Her er det et ekstra tanhjul.  Erfaringen med denne er at utvekslingen kanskje blir litt for høy – det blir for lite fjørpress på vekseltungene.  Hvis dette blir et stort problem bytter jeg ut det store tannhjulet med et mindre senere.  Dette er den første hvor hele mekanismen er printet i 3d-printeren inkludert festet til sporveksel.  Selve fjæringen, er en kort rett pianlotråd mellom glideskinnene.

Den neste jeg laget er nr 2 fra Venstre.  Her var målet å lage den liten.  95 x 65 mm og i underkant av 40 mm høy.  Den ble ok, men ganske kronglete å montere sammen.  Ved fullføring av prototype 1, kom jeg på ideen å plassere servoen på langs mellom glideskinnene – Denne versjonen har jeg derfor ikke planlagt å gå videre med, men planlegger å bruke denne ene jeg har laget, ved å montere den oprinnelige gule armen fra protoype 0.  Tannhjulet mangler for øyeblikket.  Det er utlånt til neste prototype.
Den neste var den som er helt til høyre.  Denne er stort sett skrudd sammen med deler som ble til overs fra de andre.  Jeg tror ikke jeg kommer  til å fullføre denne.  Hensikten var å teste ut servoplasserigen  mellom skinnene, og en forenklet ramme.

Til venstre er den nyeste, som egentlig kun er er forenkling og forminskning av den forrige, for å få den inn i min standardstørrelse på 95 x 65 mm.  Rammen er skrudd sammen av to deler.  Den underste som fester det store tannhjulet, og den øverste som består av sporene til glideskinnene. Servoen er også skrudd fast i denne.  I denne versjonen har jeg også optimalisert girutvekslingen.  Tannhjulet rundt servohalsen er så   liten jeg får den, og tannhjulet som driver armene er også forminsket.  Armen beveger seg nå ca 6 milimeter når servo beveger seg 180 grader.  Det som gjenstår nå på denne er pianotråden for fjæring og overføringsmekanismen til sporveksel.  Jeg skal også begynne forsøkene med montering av microbrytere for hjertestykkepolarisering på denne.   Jeg planlegger også en variant av denne, hvor armen går på tvers istedenfor, slik at den kan monteres som prototypen med gul arm, eller direkt under sporveksel.



Edited by programmeringssporet - 06 februar 2017 at 04:02
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 13 februar 2017 at 22:23
Trøbbel med Raspberry Pi og Arduinoer.

En Arduino og en Raspberry fungerer veldig bra sammen via USB kabel.  På Testmodulen min har jeg hatt problemer med å koble opp flere Arduinoer til en Raspberry.  Jeg har derfor endt opp med flere Raspberry'er, slik at å starte opp modulen, er en ganske omstendelig prosess.

Problemet med flere Arduinoer koblet opp mot en Raspberry, er at de ofte bytter navn, slik at jeg måtte omkonfigurerer programvaren min - etter en reboot.  I dag fant jeg løsningen.

1. Plugg inn den første Arduinoen i USB porten.
2. Finn navnet den bruker nå på Raspberryen med kommandoen :
dmesg | grep ttyACM

Normalt vil navnet komme opp som ttyACM0 - hvis du bare har et tilkoblet USB device./ Arduino

3.
cd /etc/udev/rules.d
sudo vi 99-usb-serial.rules


legg inn en linje for hvert usb device ( i mitt eksempel to Arduino Uno og en Adafruit Feather):
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0043", ATTRS{serial}=="9543731393435120C0E1", SYMLINK+="ttyUSB-ARD01"
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0043", ATTRS{serial}=="95530343335351D0A1A2", SYMLINK+="ttyUSB-ARD02"
SUBSYSTEM=="tty", ATTRS{idVendor}=="239a", ATTRS{idProduct}==="800c", SYMLINK+="ttyUSB-HH0"


4. I mitt tilfelle, hvor jeg har to stk Arduino UNO må jeg identifisere dem med serienummeret.  Dette finner jeg med kommandoen :

udevadm info --attribute-walk -n /dev/ttyACM0 | grep serial

Jeg får da opp to linjer.  Den første er et serienummer uten teksten ".usb".  Dette serienummeret legger jeg inn i første linje i filen over.
Deretter gjentar jeg dette for de neste Arduino UNO'ene.  (plugg inn og finn serienummer)
På Adafruit Feather fikk jeg ikke opp noe serienummer - så da  fjernet jeg serienummeret i filen, og la inn riktig idvendir og idproduct.  Dette finner jeg i andre avsnitt av outputten fra kommandoen :
udevadm info --attribute-walk -n /dev/ttyACM2

5.  sudo reboot

6. Jeg kan nå aksessere Arduinoen med navnet jeg la inn som alias i filen : /dev/ttyUSB-ARD01 istedenfor /dev/ttyACM0.  Navnet i filen er nå koblet til serienummeret til Arduinoen slik at det vil forbli uendret - selv om nummeringen av arduinoen endrer seg (/dev/ttyACM0, /dev/ttyACM1)

Tilsvarende problemstilling kan man også få f.eks. med JMRI (eller annen programvare)  og Loconet, Lenz Interface,  DCC++ etc..  Man kan da følge oppskriften, og endre oppsettet i JMRI til å benytte det nye serieportnavnet. (Andre interface bruker ofte /dev/ttyUSB istedenfor /dev/ttyACM)









Edited by programmeringssporet - 13 februar 2017 at 22:51
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 02 mars 2017 at 23:32
Serieproduksjon av servofester og NFC for G3.

Den største fordelen med 3D printing for meg, er når det skal lages mange like deler.  Den første tar noen timer i et tegneprogram.  Senere er det bare å sette igang printeren - samtidig som man kan gjøre andre ting.  Jeg har brukt ganske mange timer på å designe servofestet mitt, men nå er jeg igang med serieproduksjonen - hvis man kan kalle det, printeren klarer nok ikke mere enn et komplett servofeste på en kveld :



Her er først et bilde av en som er nesten ferdig :


Til vestre for tannhjulet kan vi se stangen som driver sporvekselen.  Denne er koblet til en kort pianotråd (over tannhjulet) som er koblet fjærende til en annen stang som drives av tannhjulet.

Til høyre for servoen, kan vi se den hvite mikrobryteren for hjertestykkepolarisering.  Det skal også være en på venstre side.  Her kan vi se enden av de to stengene.  Den ytterste på hver side styrer microbryteren.  Årsaken til at jeg har separate stenger for mikrobryterene, er at jeg ønsker at disse skal bevege seg lengre.

Her er en oversikt over hvordan rammen og hoveddrevet er konstruert (Servoen skal monteres på høyre side):




Tannhjullet er trippel:  Nederst er det største hjulet som drives av tannhjulet på servoen.  Over denne et litt mindre tannhjul som driver stengene som styrer mikrobryterne for hjertesykkepolarisering.  Øverst er det lille tannhjulet som driver selve sporvekselen.

Det å  få G3 vognene brukbare med NFC identifisering og Fleischmann profikobling har vært en lang prosess.  Her er par bilder.  Det første bildet viser et enkelt 3p printet løsning på koblingsproblemet.  og til høyre første prototypen av NFC feste (under sylinderen) med innbygget vekt.  Vekten ble litt for liten.




Dette ble løst ved å lage profilen litt større - slik at vekten kommer opp i 49 gram.  Her et bilde av de 5 siste vognene jeg modifiserte :


For å få en effektiv identifisering og pakking av vogner, har jeg nå bestemt meg for å også sette på NFC brikker på eskene til vognene.

For å få dette registrert på en rask måte har jeg bygget ut funksjonaliteten i NFC identifikasjonssystemet mitt.  Programmet er laget slik at hvis jeg plasserer en ukjent eske med RFID brikke over sensoren, vil den anta at dette er en eske og koble esken til den siste vognen som har passert sensoren, når jeg bruker det hvite RFID kortet, som jeg da bruker for å bekrefte at  jeg skal koble esken til vognen.  Det fungerer greit, men forutsetter at jeg kjører en og en vogn over detektoren.  Fremgangsmåten blir da :

1. Detekter vogn
2. Detekter ny eske
3. Bekreft med det hvite kortet.

Ganske effektivt - Alle 10 G3 vognene ble registrert i løpet av 30 minutter.
På bildet under kan vi se at jeg har montert RFID brikken utenpå eskene.  På bl.a. Fleischmann plastesker, har jeg festet dem på innsiden



Edited by programmeringssporet - 02 mars 2017 at 23:57
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 18 mars 2017 at 17:19
Jeg begynner omtrent å bli ferdig med RFID på G3, G10 og Gr20 vognene mine.  Den eneste jeg sliter litt med er en Fleischmann G10 hvor vognbunnen av metall er en sentral del av konstruksjonen.  Jeg har bestemt meg for å vente med denne foreløpig fordi jeg bare har en av dem.  Neste vogntype er Dresden.  Jeg har 3 stk Fleischmann.  Dette er en gammel Dresden.  Det ser vi bl.a. på at den ikke har noen skråforsterkninger.  Dørene kan åpnes - jeg valgt derfor å plassere vektene i enden av vognen.  3D profilen med muttere skyves ned i hver vognende og blir festet mellom vognende og den første loddrette forsterkningen.  Alt er satt sammen uten lim.

Jeg tror jeg også har funnet ut av hvordan jeg gjør det med åpne vogner.  Her er første prototype :

Jeg har erstattet vekten med en 3d printet profil, med plass til RFID brikke og to små skiver i hver ende.  Planen er å lage last med innebygget magneter, som gjør at de blir sittende fast mot skivene.  Jeg har ikke testet enda - hvordan magnetene påvirker RFID signalet.  Denne første prototypen ble ganske rå i utførselse. bl.a. fordi to av hullene ble feilplassert slik at jeg måtte forstørre dem med Dremelen.  Den ble også litt for tykk, slik at jeg har redusert tykkelsen med 0.25 mm på de andre.

I dag fikk jeg for første gang montert sammen en komplett prototype av MultiControlleren med Touch display.  Det manger fortsatt noen paneler, men funksjonelt er den mekanisk ferdig med  (fra toppen):

1. Et lite Touch display.
2. Fire trykknapper.
3. Retningsomstiller for Damplok.
4. Tre potensiometere : i Mitten Hastighetsregulator.  De på siden skal være bremser.


Selv om den er komplett, og alle ledningen er koblet til - gjenstår det mye.  JEg må videreutvikle programmet, slik at den bruker Touch displayet.  I første omgang vil det nok kun inneholde samme funksjonalitet som LED displayene.  Senere kommer grafikken og Touch input.

Som man kan se på bildet, ble det ganske mange ledninger å koble sammen.  Feilsøking må nok gjøres ved å demontere alt.  Jeg har imidlertid funnet et nytt Display som kobles direkte oppå en Arduino Feather.  På bildet under, ser vi at det er det samme displayet.


Men innmaten blir dramatisk mye enklere.  Alle koblingene mellom Display og Arduino er ferdig, slik at jeg kun trenger seks ledninger til å koble til Potesiometere og fire trykknapper.

På bildet kan vi også se til venstre den sorte kontakten til  koble til et Li-Po batteri.  Nederst til venstre er Micro USB, som benyttes til programmering, seriekommunikasjon og lading av Li-Po batteriet (Arduinoen har innebygget Lading for Li-Po).  Til høyre, kan vi også se den blanke SD-Kort leseren som jeg en gang i fremtiden skal benytte til å lagre bilder, for visning på displayet.

Ved å sette inn en Arduino Feather med Wi-Fi, kan jeg derfor enkelt lage en kontroller, som kan kobles trådløst til JMRI eller direkte til en z21.  Eksempelprogramvare for Arduino finnes på Internett.


Edited by programmeringssporet - 18 mars 2017 at 17:31
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 10 april 2017 at 21:33
Påskeprosjekt.

Jeg hadde planer om å jobbe videre med n-skala strekningsmodulen i påsken. pg.a. plassmangel ble det to andre små prosjekter :


For en stund siden fikk jeg tak i et Fleischmann digitalt startset med Multimaus.  Veldig godt egnet til å komme igang med digital n-skala.  Med dette skal jeg begynne å teste ut pc-styringen i forhold til bl.a.akselerasjon.

Hovedfokus blir imidlertid programvare for servostyring.  På bildet over, kan man se en komplett servostyring koblet til en Peco H0 veksel.  Styringen består av en Arduino Uno, med en strømmåler på toppen.  Over servoen har jeg festet en temperaturføler, og over denne et rele som styres fra Arduinoen, og kobler til strøm til servoen.

Når jeg tester dette får jeg tilbakemeldinger over USB porten, om hvordan servoen har det.  Her et eksempel :

V1:F: 0000086446 0086447040 :T 35 S 20 :MAMP  1.20 AVG 104.29 500.60 -0.20 :BUSV 4.16 AVG 4.71 MAX 5.01 MIN 3.84 :LOAV 4.16 AVG 4.72 MAX 5.04 MIN 3.84 :SHMV -0.01 AVG 13.19 MAX 59.45 MIN -0.01

forklaring :
V1 - Meldingsversjon
F: - full format, alle data, jeg har også et enklere format.  Dette formatet bruker for lang tid over serieporten.

Det neste 10 sifrede tallet er hvor lenge siden Arduinoen ble startet i millisekunder.
Det neste 10 sifrede tallet er hvor lenge siden Ardunoen ble startet i microsekunder.

Disse to tallene, kombinert med klokken på en Raspberry vil kunne fortelle meg nøyaktig når ting skjer.  Grunnen til at jeg har ganske mange sifres overlapp mellom millisekunder og microsekunder, er at microsekunder er ganske unøyaktig på Arduino UNO.

:T 35 - Er temperaturen på Servoen.
S 20 - Antall samplinger som ligger til grunn for denne statuslinjen
:MAMP 1.20 - er strømforbruket på servoen akkurat når meldingen ble sendt.
AVG 104.29 - er snittstrømforbruk for de siste 20 samplingene.
500 - er høyeste målte for de siste 20 samplingene
-0,20 - er laveste målte for de siste 20 samplingene.

:Busv 4.16 - Er input spenningen for øyeblikket - deretter kommer snitt, max og min.
(de neste spenningen er ikke så interessante)

Et interessant tall her er minimumsspenning på 3.84 Volt.  Dette har nok sammenheng med at jeg driver alt fra en USB port på PC'en for øyeblikket.  En annen ting jeg ser er at Servoen har veldig høyt strømforbruk i hvileposisjon.  Dette skyldes sansynligvis for mye treghet i mekanismen.

Input kommandoene er :
0 -posisjon 0 grader
9- posisjon 180 grader
1 - 8 : relativ posisjon mellom 0 og 180 grader (5 er omtrent i midten)

a    Servo no 1
b    2
c    3
d    4
e    5
f    6
g    7
h    8
i    9
j    10
k    11
l    12
m    13
n    14
o    15
p    16
q    query - statusinformasjon (linjen over)
r    sleep 25ms
s    sleep 100ms
t    sleep 500ms
u    power on - releet
v    power off - releet
w    precision move, fulgt av to hex sifre for å angi nøyaktig posisjon i hele grader.
x    Xtended Address 1
y    Xtended Address 2
z    Xtended Address 3
 
En enkel kommand kan da være :
a9 - flytt servo no 1 (a) til 160 grader.

En mere kompleks kommando :
uttqssa0ssqv   (spenningsrele på, vent 0,5 sekunder, to ganger, print statuslinje, vent 0,2 sekunder, velg servo 1, gå til posisjon 0 grader, vent 0,2 sekunder, print status, spenningsrele av)

Et annet eksempel :
xcw20 - :   x:Velg servo for tilleggskort no 1,c: servo nr 3 på dette kortet, w20: Sett servo i posisjon 32 grader (20HEX=32 desimalt)

Dette er et enkelt grensesnitt som kan styres fra en hvilken som helst terminalemulator, f.eks. den innebygde i Arduino IDE, for testing.  Jeg skal nå gå igang med å lage et program for Raspberryen, som først skal forsøke å optimalisere posisjonene, og deretter kunne styre servoen fra f.eks. JMRI ved å simulere DCC++, xPressNet e..l.




Edited by programmeringssporet - 10 april 2017 at 22:25
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 14 mai 2017 at 01:19
Sidesporet med Raspberry og tre Arduinoer

I dag byttet jeg ut Roco Multimaus og MERG DCC sentralen (for programmering) med DCC++.
På bildet har leg lagt bakplaten ned foran modulen.  På denne platen er det montert en Raspberry Pi 2 B som kjører min styringsprogramvare og JMRI Decoderpro.  Det er også montert en Arduino UNO med et Arduino Motorshield på toppen.  Denne kjører DCC++.  Skinnene som ligger til høyre, er et midlertidig programmeringsspor.  Jeg skal sette opp noen releer som skal koble sidesporet (det midtereste sporet i bildet) opp mot Programmeringsutgangen fra Motorshield/DCC++.


Til høyre ligger MultiControlleren.   Den er nå istand til å kjøre både Analog styring, og DCC++, men foreløpig kun med adresse 3 og hastighestssteppene 0,5,6,7,8,9,10 og 12.  Det fungerer greit sammen med DCC++ for prøvekjøring, selv om hastighetsstep 12 i 128 steps modus, som er det som støttes av DCC++ er ganske sakte.  Dette er selvfølgelig en ganske grei sak å endre.  På displayet kan vi se tre linjer:
1. Statuslinje - inneholder foreløpig ikke mye informasjon.
2. Informasjon om lokomotivet som styres.
3. Hastighet og bremseinformasjon: tre felt :
  a.  Posisjon på motorpotensiometer
  b.  Posisjon på bremsepotensiometer - skal nok endres til å vise trykk i bremseledning.
  c.  Simulert hastighet - her er det noe feil for øyeblikket - ved at gammel verdi ikke blir slettet.

Nederst i displayet er det 4 knapper for sporveksler.  De skal være grønne når sporveksel ligger rett.  Når man trykker på knappen blir den rød, inntil sporveksel rapporterer tilbake at den er lagt om, da blir knappen gul.  For øyeblikket viser den de servodrevne sprovekslene på hyllemodulen (401,402,403 og 404).  Den støtter foreløpig ikke DCC baserte sporveksler, men dette er også en enkel sak å implementere i programvaren, slik at selve sporveksel til sidesporet (701), som er en gammel RocoLine med Digital Pensemotor, fra et startsett - kan styres.

Retning styres med de sorte runde trykknappene.

Viktige funksjoner som mangler i denne versjonen av multicontrolleren er :
1.  Skjermbilde for å velge Lokomotiv.
2.  Skjermbilde for å styre Modulen, strøm av / på , Analog / Digital.
3.  Lys og Lydfunksjoner i lokomotivene.
4.  Porgrammering av CV.
5.  Vise spenning og strømforbruk.
6.  Vise sensorverdier.
7.  Implementere Akselerasjon og Bremsefunksjonen, også avhengig av togstørrelser og lokomotivtype

Øverst til venstre i bildet,  har jeg prøvemontert en Lasermåler og en Arduino UNO.  Denne rapporter avstanden til toget med 1 mm nøyaktighet i en avstand opp til ca 15 cm.  Den har også en lysmåler som er istand til å oppdage et svakt frontlys i et ROCO lokomotiv på ca 50 cm avstand i mørket.

Tidligere (i starten av bloggen) har jeg forsøkt med en ultralydmåler å automatisere instillingen av CV verdiene for motorstyring, men jeg tror dette blir enklere med Lasermåleren fordi den ser ut til å være mere nøyaktig.  For øyeblikket rapporteren den endringer av avstander på 2 eller flere milimeter opp til 10 ganger pr. sekund. 

Det som kan være litt interessant er at det med DCC++, er mulig å få et komplett digitalsystem for ca kr 300.  (kr 100 for en Arduino UNO fra kjell.com og ca kr 200 for et originalt Arduino Motorshield fra f.eks. digikey.no).  I tillegg trenger man en PC eller en Raspberry og evt et nettbrett eller en smarttelefon).  All programvaren er gratis, DCC++ og JMRI.  Oppsettet tar bare noen minutter med en liten endring på Motorshieldet og to ledninger som må kobles opp - alt dette uten lodding)


Edited by programmeringssporet - 14 mai 2017 at 01:59
Back to Top
Laurenz View Drop Down
Medlem i MJF
Medlem i MJF


Joined: 03 november 2004
Location: Norway
Status: Offline
Points: 636
Post Options Post Options   Thanks (0) Thanks(0)   Quote Laurenz Quote  Post ReplyReply Direct Link To This Post Posted: 14 mai 2017 at 14:51
Veldig spennende. Jeg har akkurat bestilt meg et motorshield for å kunne leke litt og bli kjent med DCC++ 
En ting som gjør det veldig fristende er muligheten til å kunne bygge sine egne kontrollere.
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 14 mai 2017 at 20:58
Hei,

En av de geniale tingene med DCC++ er den enkle protokollen i forhold til andre DCC systemer.  Dette ilustrerer nok også at de kommersielle DCC sentralene er utviklet for flere tiår siden. Da embedded utvikling var tungt og controllerene hadde lite ytelse.  Selv som f.eks. Roco  z21 er ganske nyutviklet, baserer den seg på den gamle Lenz ExpressNet protokollen fra DCC'ens tidligste år.  (Jeg har også problemer med å få JMRI til å fungere bra sammen med z21)

Hvis du har bestilt originalt Arduino Motorshield må du huske på bryte v-in koblinngen, som beskrevet i denne lenken :
https://github.com/DccPlusPlus/Documentation/blob/master/Motor%20Shield%20Pin%20Mappings.pdf

Jeg gjorde ikke det.  Det kostet meg en Arduino og brent strømføler på MotorShield, slik at jeg ikke kunne lese ut CV'er i en uke, mens jeg ventet på nytt MotorShield.

Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 22 mai 2017 at 01:10
På sidesporet - eller rettere sagt, på elektronikkdelen av sidesporet er det fremgang :



Til høyre kan vi se en ny versjon av programvaren i Multicontrolleren.  Den har fått tre nye knapper i displayet:
<0> og <1>,  er for å slå strømmen av og på i sporet.  Jeg har foreløpig valgt å merke knappen med selve DCC++ kommandoene for dette. (<0>, <1>).
Den siste knappen merket ADR, er for å velge DCC adresse. Denne midlertidige versjonen, kommer opp med en keypad hvor man kan velge adresser fra 1 til 9.

Det er ganske upraktisk å utvikle nye versjoner av programvaren - samtidig som jeg bruker kontrolleren.  Jeg har derfor laget en ramme som jeg skal skru fast i forkant av Sidesporsmodulen.  I denne kan jeg sette inn forskjellige prototyper, for testing.  Dette gjør det mye enklere å teste nye oppkoblinger og nye versjoner av programvaren.  Jeg tror jeg skal sette opp to eller tre rammer på Sidesporsmodulen.  Senere planlegger jeg å printe ut en kombinert ramme og frontpanel til modulen.

Helt øverst til høyre, man man se det 4 polete releet ¨med sokkel, som skal koble sidesporet over i programmeringsmodus.  Jeg har valgt 4 poler for også å isolere programmeringssporet, med en egen 20 cm langt spor som jeg gjør strømløst under programmering - for å unngå kortslutning hvis et tog kommer inn på sporet.  Jeg mangler 12 Volt strømforsyning i modulen før jeg kan gjøre dette ferdig.

Midt i bildet på en balsaplate gjør jeg en prøveoppkobling.  På større moduler får jeg en utfordring med avstander.  Servoledninger bør være korte max 30 cm.  Det samme gjelder I2C bussen.  Maksimum avstand meller sporveksler som kan drives av en Arduino, blir da 30 + 30 + 30 + 30 = 120 Centimeter.  Dette kan løses enkelt ved å koble to eller flere Arduinoer til Raspberryen, med opp til 5 meter lange USB ledninger.  Ulempen med det er klumpete kabler og mange connections fra f.eks. JMRI.  Jeg tester derfor ut god gammeldags RS232.  Jeg har fått tak i noen rimelige RS232 drivere med DB9 plugg.  Jeg har valgt å taste vanlig Ethernet (CAT5) kabel, med egne plugger istedenfor standard RS232 - DB9 ledninger.  Med en Arduino UNO, som i bildet kan ikke USB og RS232 brukes samtidig.  Da er en Arduino Leonardo grei å ha (rett nedenfor displayet), fordi denne kan kommunisere uavhengig med USB (Serial0) og RS232 (Serial1). Det samme gjelder Arduino Pro Micro.  Jeg har imidlertid bestemt med for å teste ut Teensy LC (Low Cost) istedenfor.  Denne kan dere se i det hvite Breadboardet nederst i midten.  Kretskortet rett over, er under utvikling.  Der skal det være tilkoblinger til tre serieporter og I2C buss, og noen andre tilkoblinger.  Planen er at Raspberryen skal kobles til USB porten på Teensy, og at serieporten på Raspberryen (GPIO header) skal kobles til en av serieportene på Teensy.  Begge to går på 3.3 Volt - slik at de kan kobles direkte sammen.  Jeg kan da ha JMRI kjørende og min egen programvare på den samme Raspberry'en.  Programvare i Teensy skal ta imot og sende kommandoer fra begge, og sende de videre til Arduinoen som kjører DCC++ via serieport. (Her må jeg lage en spenningsdeler på signalet fra Arduinoen (5V) til Teensy (10 KOhm på inngang, og 20KOhm til jord?).


Bildet under viser oppkoblingen av RS232 : RØD er 5 Volt (Dette blir også overført i kabelen - pinne tre), Brun og Sort er Jord, Orange er Transmit og Gul er Receive.



Edited by programmeringssporet - 22 mai 2017 at 01:30
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 26 mai 2017 at 23:35
Fordelen med å lage ting selv er at det virker !

Ulempen med å lage ting selv er at man tror at det ikke virker.  Dette er ihverfall konklusjonen min etter dagens tester :

1.    Jeg koblet opp 4 Pols releet til å koble programmeringssporet mellom Kjøre og Program utgangen til DCC++.  Til dette bruker jeg to poler.  Polene 3 og 4 benytter jeg til å bryte strømmen på en egen blokk, slik at jeg sikrer at ingen tog kommer inn på programmeringssporet når programmering er igang.  Etter denne oppkoblingen virket CV skriv, men ikke les.  Les virket kun på den skinnen som var koblet rett i DCC++ programmeringsutgangen.  Jeg byttet ut ledningene med tykkere ledninger.  Det hjalp ikke.  Deretter koblet jeg ut releet.  Det hjalp ikke.  Jeg tok skinnene fra hverandre.  Det hjalp ikke.  Jeg koblet den løse programmeringskinnen til programmeringssporet.  Da sluttet også det å virke.  Det var først da at jeg fikk misstanke om at det var noe feil med strømskinnen til ROCO (Skinne fra startsett med strøminnkobling).  Da denne ble fjernet fungerte alt.  Kan det være en Analog Strømskinne ?  Det bør det ikke være,  fordi jeg tror at jeg kun har 4 strøminnkoblingsskinner i gammel RocoLine utførelse – og alle kommer fra 4 forskjellige Digitale startset.  Dette tyder jo på at det er en kondensator i skinnen, som tillater CV skriv, men ikke les.  Konklusjon : Mine koblinger virker, men feil på en Roco skinne.

2.    Neste skritt var å sette opp Serieport konsentratoren.  Denne Arduino Teensy kan vi se midt i bildet.  Den er koblet til Raspberry’en via den hvite USB kabelen.  Denne forbindelsen bruker jeg til min styringsprogramvare.  Det går også en  hvit og en grå tynn ledning fra Teensyen til Raspberry GPIO.  Over disse kjører kommunikasjonen mellom JMRI (/dev/ttyAMA0) og teensy (Serial1).  Videre går det en Grå ledning fra Teensy til Arduino UNO med DCC++ og motorshieldet, for å sende kommandoene som kommer fra en av ingangene koblet til Rasberry’en.  Det går også en blå returmeldingsledning fra UNO’en til Teensy’en via en spenningsdeler (10K og 20K) for å redusere signalet fra 5Volt  (UNO) til 3Volt (Teensy)

3.    For å styre releet satt jeg først opp et Tinkerkit relekort (Orange) og koblet dette opp mot Teensyen (Utgangen driver spolen på det store releet).  Dette fungerte, bortsatt fra at Teensyen ofte gikk i heng når releet koblet fra.  Jeg flyttet derfor denne funksjonen til UNO’en og definerte dette som en Utgang i DCC++.  Det fungerte greit, men hadde noen tilfeller med at Teensyen fortsatt gikk i heng – selv om den ikke lenger var koblet til.  Det er sansynligvis støy på 5 Volt forsyningsspenningen som ødelegger.  Løsningen ser ut til å være å forsyne releet med en egen strømforsyning.  Jeg får 12 Volt fra en separat Laboratoriestrømforsyning som forsyner det store releet direkte, og det lille via 5 Volt spenningsforsyningen (Orange på et hvitt breadboard).  Denne oppkoblingen ser ut til å fungere stabilt.  Bildet under viser JMRI Decoderpro, som leser CV’er.  Vinduet under er Arduino Seriekonsoll,  hvor jeg ser alle meldingene fra og til JMRI, samtidig som jeg kan gi inn egne kommandoer i input feltet.


4.    Første forsøket på å styre den Digitale ROCO  Sporvekselen fra DCC++ fungerte ikke.  Den virker i Multimausen på adresse 1.  Jeg husket at det er noe offset ved bruk av JMRI, men fikk det ikke til å fungere med adressene 1,2, 3 og 4.  Jeg har googlet litt å funnet ut at offset skal være 4, slik at Multimaus adresse 1 – tilsvarer adresse 5 i andre DCC systemer.  Skal prøve dette neste gang.

5.    Neste skritt er å teste ut min programvare for styring, og utvide denne slik at den logger alle lesing som JMRI gjør – slik at den lærer hvordan hver enkel Digitaldekodertype bør leses. (Hvilke CV’er som er aktuelle).  



Edited by programmeringssporet - 26 mai 2017 at 23:38
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 04 juni 2017 at 16:18
Den eneste grunnen til at jeg ville bruke sporvekslen med innebygget Digitalmotor var fordi jeg trodde jeg skulle spare tid – men der tok jeg feil :

Jeg fikk ikke DCC++ til å kommunisere med min Roco Digital Turnout Driver.  Med Roco Multimaus hadde jeg programmert adressen til 1.  Etter å ha lest alt jeg fant om forholdet mellom Roco / ExpressNet nummerering i forhold til JMRI, og forsøket med å legge til 4, og tilslutt prøve alle adresser mellom 1 og 5, koblet jeg den til en Roco z21.  Da fungerte den igjen med Multimausen på adresse 1.  Neste skritt var JMRI.  Der fungerte den også via z21 – og da så jeg det, i Turnout tabellen.  Den ble oppfattet som adresse 0, og da jeg leste manualen til DCC++, så jeg også at den opererer med adresser fra 0 og oppover.  En rask tilbakekobling til DCC++ og jeg hadde kontroll med kommandoene <a 0 0 0> og <a 0 0 1>.
Forklaringen fant jeg også : http://www.dccwiki.com/Accessory_Address

DCC operer med  Decoder Addresser og Output Addresser.
Decoder adresser benyttes normalt.  Det er en 9-bits adresse til dekoderen.  En dekoder kan støtte opp til 4 sporveksler på denne adressen. I kommandoen <a 0 0 1>, er første nullen Decoder Addresse, den neste sier hvilken sporveksel, innenfor dekoderen, 1 tallet er posisjonen som sporveksel skal legges over til.  Når man benytter Decoder Adresser skal man da legge til 4 i Roco / XpressNet.

Roco’s Digitale Sporvekselmotor benytter ikke Decoder Addresser, men Output Addresser.  Da er det en 11-bits adresse for hver sporvekselmotor.  Så istedenfor å legge til 4, skal man nå legge til 1.  JMRI eller DCC++ adresse 0 blir da 1.

Nå som jeg vet hvilken kommando som skal sendes, er det bare å jobbe videre med programvaren til Multicontrolleren, slik at den både kan styre DCC veksler og Servo med Arduino styring.



Edited by programmeringssporet - 04 juni 2017 at 16:19
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 23 juni 2017 at 00:58
Programvare

For å komme videre med programvaren, var det nødvendig med noen flere knapper i TouchControlleren min.  Jeg har begynt å lage en ny versjon av programvaren, som støtter dynamisk oppsett av inntil 6 knapper i bredden.  Dette er ikke helt ferdig enda.  I mellomtiden har jeg laget et nytt midlertidig kjøredisplay for uttesting av sidespormodulen:



Funksjonen til knappene er :

<1> og <0> for å koble til/fra DCC kjørestrøm.
ADR for å gå inn i meny for å velge lokomotivadresse
T1+ og T1- for å legge om Turnout 1
F0 F1 +/- for å styre Lys og Funksjon 1 på Lokomotivet

Alt dette er som sagt midlertidig - den mangler f.eks. feedback i form av posisjon på sporveksel og Funksjoner

Jeg har oppdaget en stor svakhet med Sidespormodulens testelektronikk.  Det å plassere den på en egen plate, med mange ledninger mellom elektronikkplaten og selve modulen,  gjør det vanskelig å flytte den.  Jeg har derfor prioritert å endre dette :

Først har jeg laget 7 3D-printede rammer som skal dekke hele fronten av modulen.  Rammene er mellom 4 og 8 cm høye, og der skal det være plass til overvåknings LED og Displayer, samt input kontrollere.  Ved at jeg har delt dette opp i 7, kan jeg lage nye paneler når jeg får behov - uten å måtte printe ut alt på nytt.

jeg har også laget noen vinkelprofiler - som jeg bruker til midlertidig å skru fast Raspberry Pi og Arduinoer til fronten av modulen.

Modulen er nå flyttbar igjen - og jeg har full tilgang til elektronikken, for feilsøking, og endringer i programvaren .



Til høyre rett foran BR64 Lokomotivet, kan man også se en Lasermåler som er montert.  Denne står i 90 graders vinkel på sporet, og hensikten er å detektere tog og telle vogner.  På testmodulen har jeg brukt en vanlig IR reflekssensor, men jeg hadde ingen ekstra som fungerte godt, så da ble det en lasermåler - litt dur (ca kr 120) men det ser ut til at den fungerer utmerket til å detektere, og måle lengde på lokomotiver og vogner.  Under Lasermåleren har jeg plassert RFID sensoren som jeg måtte fjerne fra testmodulen, p.g.a. Aluminiumsprofilene.  Når programvaren blir ferdig vil jeg da kunne lese ut DCC adresser og identifisere vogner med RFID brikker. 


Når programvaren blir mere stabil, og koblingene blir mere faste, skal jeg flytte all elektronikken inn i bakveggen til modulen.  Jeg har derfor laget tilsvarende rammer i bakveggen, med samme festeskruehullavstand - men høyere rammer - slik at det blir plass til mere elektronikk (Rammene til høyre står i 90 graders vinkel  - slik av standardbredden på rammene - nå blir vertikalt istedenfor



Edited by programmeringssporet - 23 juni 2017 at 01:16
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 04 juli 2017 at 17:46
Basisfunksjonaliteten i MultiTouch Controlleren min fungerer ok, men jeg har ikke implementert  bremsefunksjonene enda.  Det er to grunner til det:
  1. lite minne i Arduino prosessoren.  For å implementere ny funksjonalitet, må jeg optimalisere bl.a. minneforbruket i eksisterende kode.
  2. Det er litt ustabilitet, sansynligvis fordi prøveledningene, som jeg har brukt til å koble til Potensiometrene har litt ustabile plugger.
P.G.A. dette og ønsket om å også ha et fastmontert betjeningspanel  på Sidesporsmodulen, har jeg begynt å lage en ny :


Som man ser av bildet er den basert på et likt betjeningspanel og LCD panel.  På bildet kan man også se Arduinokortet (Adafruit Feather M0), og et hvitt lite kort som er en I2C basert IO ekspander som jeg holder på å bygge – for å styre releer på Sidesporsmodulen.
På bildet under, kan man se hvor forskjellig den nye controlleren er :


Her kan vi se at antall ledninger er sterkt redusert.  En av grunnene er at den lille røde Arduinoen (Sparkfun Pro Micro) er erstattet med en Adafruit Feather som er plugget inn i LCD modulen – uten ledninger.   I tillegg til enklere oppkobling, har en langt raskere og kraftigere prosessor.  Istedenfor en liten 8 Bits prosessor, er det en 32 bits ARM M0 – riktignok, en av de aller minste ARM prosessorene, men mye mere kapasitet i forhold til en tradisjonell Arduino :

” At the Feather M0's heart is an ATSAMD21G18 ARM Cortex M0 processor, clocked at 48 MHz and at 3.3V logic, the same one used in the new Arduino Zero. This chip has a whopping 256K of FLASH (8x more than the Atmega328 or 32u4) and 32K of RAM (16x as much)!”
https://learn.adafruit.com/adafruit-feather-m0-basic-proto

Og så finnes det et Adafruit Feather kort med samme prosessor, men med innebygget WI-Fi.   Dette kombinert med innebygget LI-PO lading (Som det er i alle Adafruit Feather) gjør dette til en ideell plattformen for å lage en alternativ controller – istedenfor å kjøpe en ny ROCO WI-FI Multimaus.

Mellom LCD modulen og Arduinoen, har jeg også satt inn et ekspansjonskort , hvor jeg har loddet inn en seks pins plug:

Funksjonen til ledningene er :
1.    Rød      : +3.3 Volt, koblet direkte til hovedpotensiometer, og via motstander til de andre.
2.    Sort      : gnd. , koblet direkte til hovedpotensiometer, og via motstander til de andre.
3.    Hvit      :  koblet rett til Hoved-Potensiomenter (Throttle)
4.    Blå        :  Venstre Brems
5.    Grønn  :   Høyre Brems
6.    Lilla      :  Damplokreguleringen (Forover / Bakover)
De fire trykknappene er også koblet til potensiometrene med noen motstander, som gjør at jeg også kan detektere dem, med de samme tilkoblingene – slik at jeg sparer ledninger og antall innganger på Arduinoen.



Styringen av Sidesporsmodulen fungere bra, men jeg må koble ledningene mere permanent.  Første skrittet er relestryringen, som jeg skal styre via I2C bussen med en I2C IO Expander (MCP23008) og en 8 veis reledriver (ULN2803).  På bildet under kan man se at jeg har koblet I2C bussen fra Arduino Teensy til Expanderkortet, og videre til en INA219 Strømmåler. (grønn og Gul ledning for  I2C signalene, Rød og Sort  for strøm og jord).  Statusen på denne er at jeg har lagt inn funksjonalitet i koden på Teensy kortet til å sjekke om den får kontakt på adress 32 (IO Expanderen) og 64 (Strømmåleren), men jeg mangler fortsatt funksjonalitet i koden til å styre releene og lese av strømforbruket, og så må jeg også koble til releer og strømkilde.  Planen er å koble dette opp med mere permanente ledninger, istedenfor disse midlertidige prøveledningene – når jeg flytter elektronikken inn i bakveggen.


Men planen nå er å ta med meg den nye kontrolleren på ferie – så får vi se om jeg får tid til ny programvarefunksjonalitet på denne.



Edited by programmeringssporet - 04 juli 2017 at 17:53
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 14 juni 2018 at 14:01

DCC++, LaserMåler, Raspberry Camera og Automatisering

'Her ser det ut som om det har hendt lite det siste året.

Neida, det er kun oppdatering av bloggen som har manglet.  Utover høsten 2017 var sidesporet såpass ferdig at jeg kunne starte testing med Automatisk kjøring med DCC++.  Her deles styringen mellom en Arduino og en Raspberry Pi, med kommunikasjon over USB porten.  Denne kommunikasjonen må fungere 100 prosent hele tiden.  Hvis man f.eks. mister en oppdatering av en sensor, vil modellen i Raspberry Pi være feil, slik at hele systemet blir ustabilt helt til det evt. Kommer en ny statusmelding for denne sensoren.  Etter en del testing, fant jeg ut at min styringsprogramvare ikke var stabil nok.  Jeg startet derfor på nytt, med å lage et nytt USB grensesnitt i programvaren, og utover den bygget jeg funksjonaliteten på nytt, delvis ved å benytte eksisterende programkode – men veldig mye er nytt.

En annen grunn til å bygge på nytt – var ønsket om å lage et system, som er lett å sette opp for enkle automatiseringer – og som kan utvides etterhvert.  Jeg har derfor laget en fasedelt implementering :

 

1.      1. Enkle Scripts som kun sender meldinger til Digitalsystemet – ingen tilbakemelding benyttes.

2.       2. Scriptbasert men også Støtte for tilbakemelding – slik at man kan  lage både enkle og avanserte kjøremønstre.

3.      3. Multitasking – flere scripts/tog  kan kjøre samtidig.

4.       4.Interlocker – hvert skript/tog må be om resurser (f.eks. blokker før de kan starte)

5.      5. Automatisk kjøring til et bestemt sted på anlegget, uten at det må defineres skript for dette.  Dette forutsetter at styreprogramvaren, har en funksjon for å ta vare på definisjonen av hele anlegget, med alle spor, og hvordan de er koblet sammen.  Det må også være en funksjon hvor systemet kan lære hvordan hvert enkelt lokomotiv oppfører seg, og hvordan det bør styres.  En annen viktig funksjon er at systemet hele tiden vet med størst mulig nøyaktighet hvor hvert enkelt lokomotiv og vogner befinner seg.  Fase 5 vil være inndelt i underfaser, hvor det sansynligvis vil komme flere faser etterhvert.

6.       6.Automatisk optimalisering av CV’er for motorstyring.  Dette er en fase som går i parallell med de andre, og som også kan deles inn i underfaser.  Første underfaser kan f.eks. være :

a.       Lese inn CV verdier.

b.       Bestemme dekodertype.

c.       Forstå dekodertyper.

d.       Analysere prøvekjøringer, og endre CV’er etter ønskede egenskaper.

e.       Generere prøvekjøringer.

 

Status på sidesporet i dag er at fase 1,2 og 3 er ferdig og uttestet til å fungere stabilt.  Fase 4 er implementert – og testet litt.  Ikke funnet noen feil eller begrensninger enda.  5 er litt implementer ved at jeg har laget en kommando, f.eks. : STOP AT BLOCK 702 000 METER 020 , som betyr at toget skal stoppe i BLOCK 702, 0 meter og 20 milimeter fra blokkens startpunkt, men jeg er fortsatt avhengig av et skript for å starte lokomotivet.  Funksjonen er også avhengig av å vite hvor langt toget kjører i løpet av et sekund på de aktuelle hastighetstrinnene.  Dette begynner å fungere, men for øyeblikket stopper lokomotivet opp til 2 centimeter feil.


Bildet inder viser Sidesporsmodulen med noen ekstra skinner, 6 IR-sensorer, en Laser avstandsmåler for selve sidesporet, og et Raspberry Pi camera - som skal brukes til posisjonsbestemming v.h.a. bildeanalyse.


Første forsøk på bildeanalyse.  Den første sorle linjen traff ganske bra,  den under fant noe rødfarge i fjellveggen istedenfor.


fortsetter under : (forumproblem med lange innlegg?)





Edited by programmeringssporet - 14 juni 2018 at 14:32
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 14 juni 2018 at 14:33
Fase 1 – Denne var ganske enkel å få til.  Jeg måtte lage et program som kan koble seg opp mot Arduinoen via USB serieport, og lese en fil med et skript.  Denne skriptfilen inneholder kun to typer kommandoer :
1.    DCC++ kommandoer. F.eks. strøm på fjernet større/mindre tegn, virker dårlig i html side)  :1  eller kjør tog: t1 3 20 1 .  Oversikt over DCC++ kommandoer finner man her : https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation
2.    En pausekommand.  Her bruker jeg min gamle kommando som jeg har brukt i scriptene mine i mange år, feks : WAIT SEC 003, som medfører at skriptet venter tre sekunder før neste kommando.
Her er et enkelt eksempel  på et script som skrur på strømmen,  benytte DCC adresse 3 for å : skrur på lyset, starter toget, som kjører i et minutt, før det stopper, tar en pause, og kjører bakover i 15 sekunder før det stopper, og tilslutt skrur av strømmen :



Programvaren er også veldig enkel:  for hver linje I scripted, blir det enten sendt videre over serieporten, hvis kommandoen starter  med ‘<’, eller hvis linjen starter med ‘WAIT SEC ‘ vil programmet vente det oppgitte antall sekunder før det fortsetter med neste linje i scriptet.

Jeg vet ikke om dette var interessant å lese om – men planlegger å komme ut med mere informasjon utover, og tenker også å legge ut deler av styringsprogramvaren (Men da bør den vel kanskje støtte bla. Roco Z21 / z21 /start for å ha interesse for flere ?)  -  Argumentet for en slik enkel styring istedenfor f.eks. JMRI og Rocrail, er veldig lav terskel for å komme igang med enkle autmatiseringsscript.  Jeg tenker også å senere skrive litt om erfaringer med DCC++,  både positive og nesten katastrofale begrensninger. (f.eks. max 12 lokomotiver med JMRI, uten å restarte JMRI)

Litt av elektronikken i modulen :





Edited by programmeringssporet - 14 juni 2018 at 14:37
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 20 juni 2018 at 18:45
Test av DCC++ uten motorshield.

Hvis man ønsker tilbakemeldinger / sensorer som skal brukes i RocRail eller JMRI kan DCC++ på Arduino være et rimelig alternativ.  Jeg har nå testet å bruke en Arduino UNO uten motorshiled, hvor jeg har installert DCC++.

Etter at DCC++ er latet opp i Arduinoen, kan man gå inn i Arduino terminalen,  sette denne til 115200 Baud, nederst til høyre.

Sjekk om man får kontakt med kommandoen :
< s > - (liten, omsluttet av mindre enn og større enn paranteser,  du får da en statuslinje tilbake.
< S 411 13 1 > - definerer  sensor 411 på pinne 13,( den med led).  hvis du nå kobler en ledning mellom 13 og gnd, vil du få meldingen < Q411 > , samtidig som LED slukker.  Når du fjerner ledningen vil du få meldingen < q411 >  samtidig som LED tennes.  Det er greit å bruke pinne 13 siden man får tilbakemelding med LED'en, men det er viktig å huske på at pinne 13 ikke kan brukes hvis man installerer Arduino Motor Shield.

Her er en liste over de forskjellige pinnen som kan benyttes :

2

4

6

7

16 – A2 - Navnet i DCC++ er 16, men den fysiske pinnen er merket A2

17 - A3

18- A4

19- A5

Med et endret Motorshield, eller uten Motorshield kan også disse pinnene benyttes
8
9

Uten Motorshield kan også disse pinnene benyttes :

12
13
14 – A0
16 . A1

Jeg har testet alle disse pinnene, og de fungerer, slik at man kan koble til opp til 14 sensorer på en Arduino UNO,  Ganske rimelig kr 100 + en USB kabel.

Noen andre kommandoer som man trenger :

< e >- liten e ,  slett alle definisjoner,
< E > - stor E, lagre sensordefinisjonene permanent
< S > - Liste opp alle sensordefinisjoner
< Q  >- deteksjonsstatus på alle sensorer





Edited by programmeringssporet - 20 juni 2018 at 19:01
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 30 august 2018 at 01:46
Ferieplanen

Inspirert av de mange Z-Skala koffertanleggene, bestemte jeg meg for å lage noe tilsvarende i N-Skala.
Jeg tok skinnene fra et startsett, printet en del 3D profiler og puttet alt i en Aluminiumskoffert fra Biltema. (Det er vel kun biltema som selger aluminiumskofferter i plast?).

Biltema har også noen fine bokser som passer veldig bra til N-Skala materiell.  Slik ser kofferten ut :



Hvis vi tar ut boksene med lok og vogner, kan vi se hvordan jeg har festet skinnene til 3D profilene.  Når jeg har fått skrudd alt sammen, vil hele anlegget være i tre deler som det er plass til i kofferten, sammen med materiell og styring - og som det tar ca. 1. munutt å sette opp.

Styringen er basert på en Raspberry Pi og en Arduino med Motorshield og DCC++.


Edited by programmeringssporet - 30 august 2018 at 01:48
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 08 september 2018 at 22:25
Ferieerfaringer

I dag var det regn, så da ble det videre sammenskruing av feriesporet.  To av tre deler er nå kjørbare.  Her er et bilde av hvordan de ser ut når de kommer ut av kofferten :

Og her er de satt sammen forprøvekjøring.  Foreløpig er det Roco Multimaus som gjelder, men vi kan også se huset hvor det bor en Arduino UNO med Motor Shield, som skal kjøre DCC++.  Jeg har også en Raspberry Pi for JMRI og annen programvare.  Vi kan også se en av IR-sensorene i et hjørne.  Det gjenstår å skru opp tre til, i hvert sitt hjørne, og koble dem til Arduinoen :


Den siste delen er enda ikke skrudd sammen.  Den er like stor som de andre, med to rette spor og et sidespor, slik at det blir en oval med sidespor når jeg tar den er klar.


Edited by programmeringssporet - 08 september 2018 at 22:27
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 09 oktober 2018 at 00:30
Da er sommeren og ferietiden over.

Ferieanlegget ble ganske funksjonelt ferdig skrudd og koblet sammen.  På bildet under kan man se den nest siste kjørekvelden.  Her er svingmodule kompletert med en modul med rettstrekninger.  På den siste kjørekvelden ble denne midtmodulen delt i to på langs og forlenget, slik at alle modulene består av 2 X 4 plater. Lenderetningen på midtmodule er dreid 90 grader i forhold til svingmodulene slik at det blir en fremre og en bakre modul.  Her plate er på 11x11 cm, slik at hver modul blir 44 x 22 cm, og passer inn i kofferten, som er nøyaktig 44cm lang innvendig.  breden er ca 30 cm.  Hele anlegget blir da 44 x 88 cm :


Det er kun svingmodulen til høyre som er ferdig sammenskredd.  Det kan vi se på forsterkningene som er skrudd fast for å stabilisere modulen.

Et lite problem med Arduino er å få til en rimelig og effektiv permanent tilkobling av ledninger.  Jeg har benyttet Screw Shield til dette.  Det fungerer greit, men tar mye plass, både i høyden og bredden.  For et par uker siden oppdaget jeg at kjell.com har en annen grei løsning på dette :


med tilhørende ledninger :


PÅ bildet under kan man se at jeg har byttet ut den ene (grønne) Screw Shielden med Quici-Click kontaktene.


Hva gjenstår ?
  1. Anlegget mangler landskap
  2. En effektiv måte å skru sammen de fire modulene - denne jobber jeg med.
  3. Jeg mangler programmeringsspor,  jeg måtte derfor ta i bruk Multimausen for å omprogrammere,  da jeg oppdaget alle tre lokomotivene jeg hadde med meg hadde adresse 3.
  4. Raspberry Pi er ikke konfigurert - jeg kjører derfor JMRI på Laptoppen.
  5. En IR-Sensor er tilkoblet, men ikke konfigurert i DCC++.
  6. Automatisert kjøring er ikke ferdig
  7. Pensen har ikke motor
Erfaringen med manuell kjøring var også interessant.  I forhold til H0 var kjøreegenskapene på Fleischmann V100 lokomotivet litt skuffende.  Lokomotivet kommer fra Digitalt startsett.  Hovedproblemet virker å være liten vekt.  Det var også litt problemer/rykking ved kjøring over pensen.  Denne pensen har hjertestykke av plast - Jeg håper de nye Fleishmann pensene fungerer bedre. 

Jeg har også med meg to store amerikanske diesellokomotiver fra Atlas, med innebygget dekoder.  Dette er faktisk de to første DCC lokomotivene jeg kjøpte for over 20 år siden.  De kjører mye bedre, selv om de er litt vanskelig å styre, (de mangler BEMF).




Edited by programmeringssporet - 09 oktober 2018 at 00:47
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 17 oktober 2018 at 18:20
Sidesporet - Fase 2

Sidesporet har fungert veldig bra.  Hovedfolkusen har vært å ta i bruk nye lokomotiver. Lokomotivet plasseres på sidesporet slik at alle CV'er kan leses.  Deretter automatisk kjøring for å analysere stopp og start, samt å beregne skalahastighet i forhold til DCC hastighetsstep.

Jeg har fokusert på små og mellomstore damplokomotiver.  Neste gruppe er store damplokomotiver type Gammeltysker og Stortysker.  Skinnene på sidesporsmodulen er montert et par cm over platen, for å få den til å passe med de andre modulene.  Her har jeg brukt ROCO Line skinner og noen enkle 3D printede støtter.  Dette er en midlertidig løsning som kun fungerer med ganske lette lokomotiver.  Jeg har derfor laget et nytt mere solid skinneunderlag, og erstattet skinnene med Peco code 100.  Foreløpig bare i hovedsporet, men snart skal jeg også gjøre det tilsvarende på sidesporet.  Jeg har også lagt inn noen isolatorer, slik at jeg kan gjøre noen skinnestykker strømløse, både for Analog kjøring, og for å teste strømopptak og stay-alive kondensatorer.  For å styre dette trenger jeg noen releer.  Jeg fant noen kort med 4 releer og I2C grensesnitt til ca kr 80 (20 pr. rele).  Helt grei pris, med hovedgrunnen til at jeg valgte disse kortene er I2C grensesnittet.  I2C har jeg nevnt tidlligere, så kort fortalt : det er en enkel buss med kun 4 ledere mellom kortet og Arduinoen som styrer det.  Alle kortene må ha forskjellige I2C adresser, slik at Arduinoen kan styre mange kort med de samme 4 lederene.  Det er ikke noe iveien for å koble opp f.eks. 100 kort til en Arduino, slik at man totalt får styring av 400 releer fra en Arduino.  Her er et bilde av to kort som jeg har koblet opp mot skinnestykkene :


I denne modulen styres flere ting fra den samme I2C bussen.  I bildet under har jeg montert relekortene, men enda ikke koblet opp I2C bussen i de hvite kontaktene.  Vi kan imidlertid se I2C bussen som kommer ned fra Arduinoen øverst til høyre i bildet, og går ned til et relestyringskort, og deretter videre til en Strøm og Spenningsmåler.  Spenningsmåleren er montert på et gult 3d printet feste, som jeg måtte flytte for å få plass til relekortene.  Den skal også erstattes av de fire målerene som ligger foran modulen.



Det siste bildet viser status nå.  Releene er ikke koblet til I2C bussen, men det haster ikke fordi jeg har koblet det slik at skinnene får strøm når releet ikke er aktivert (NC utgangen).



Vi kan også se at jeg har montert en spenningsstabilisator (rød Led) som leverer 12 Volt tiil elektronikken og noen av releene.  Helt til venstre kan vi se Laboratoriestrømforsyningen som leveres strøm til DCC++ og spenningsstablisatoren.  5 Volt komponentene får imidlertid fortsatt spenningen via Raspberry Pi'ens USB inn / Utganger.

Modulen er nå tilbake på plass.  Neste skritt er programvareutvikling, og da kommer den store utfordringen med denne modulen, og det er at elektronikken ikke er tilgjengelig under drift, fordi den er plassert på baksiden av modulen, som står inn mot en vegg.   Dette og ønske om å kunne teste nye programvarevarianter på en enkel måte gjør at jeg nå er igang med å lage en dedikert modul for programvareutvikling og testing.  mere om denne neste gang.


Edited by programmeringssporet - 17 oktober 2018 at 18:32
Back to Top
programmeringssporet View Drop Down
Veteran
Veteran


Joined: 12 desember 2013
Status: Offline
Points: 405
Post Options Post Options   Thanks (0) Thanks(0)   Quote programmeringssporet Quote  Post ReplyReply Direct Link To This Post Posted: 27 oktober 2018 at 00:48
Konsolidering
Jeg har nå 7 jernbane moduler med Arduino styring. 4 er H0 - de tre andre N-skala.

Ti lsammen bruker jeg 15 Arduinoer, som kjører 12 forskjellige programmer. Noen av programmene er egentlig identiske, men jeg har ofte videreutviklet med ny funksjonalitet, for nye funksjoner, uten at programvaren er oppdatert på alle modulene.  Dette er et stort problem som jeg må gjøre noe med. 



Planen er å redusere til tre programmer :
1.    DCC++ - uendret
2.    RFID leser.
3.    Min nye universelle programvare.

Min universelle programvare er den jeg har laget i løpet av de siste årene.  Versjon 1 styrer testmodulen, med Likestøm.  Versjon 2.0 styrer strekningsmodulen med pulset likestrøm (PWM).  Versjon 2.11 – styrer kommunikasjonen på sidespormodulen og komuniserer bl.a med DCC++, JMRI og en Arduino som kjører versjon 3, for kommunikasjon mot CAN bussen. (bl.a. for kommunikasjon mot Hyllemodulens Can bus kontrollerte sporskifter.

Min Universelle programvare er under utvikling på den nye Utviklingsmodulen.  Status nå er at den kan kommunisere med en Raspberry Pi med min proprietære kommunikasjonsprotokoll og kommunisere med diverse sensorer via I2C grensesnittet.  Jeg har også plukket fra hverandre DCC++ programvaren, og er i ferd med å legge inn funksjonaliteten fra DCC++ for å styre et analogt lokomotiv.  Jeg kan da styre et analogt lokomotiv fra JMRI via DCC++ protokollen.  Denne minimumsversjonen er testet fra JMRI og fungerer greit.  Jeg håper å ferdigstille denne programvaren ganske raskt, og jeg planlegger at dette skal fungere på en Arduino UNO med et Adafruit I2C Motorshield. 

Denne første versjonen skal brukes på Utviklingsmodulen for å kunne styre et Analogt lokomotiv.  Deretter starter utvikling av støtte for releer og sensorer via I2C bussen.  Etter at dette er ferdig, vil jeg flytte til en større Arduino med flere serieporter og mere minne.  Den kan da etterhvert benyttes på de andre modulene også – og fungere som en front-end prosessor for DCC++, som da kjører på en annen Arduino, og kommuniserer over en serieport.  På bildet under kan man se Utviklingsmodulen med diverse arduinoer og forskjellige I2C sensorer og et I2C relekort.  Det store firkantede hullet er planlagt for en lavt montert Arduino Mega.  Foreløpig er det ingen skinner på modulen.  Jeg har bestemt med for å prøve Kato N-skala skinner denne gangen.



Arduino Mega 2560
DCC++ støtter Arduino UNO og Arduino Mega.  Foreløpig har jeg kun benyttet UNO av to grunner : pris og mulighet for å bytte prosessor uten lodding.  En original UNO koster hos Kjell & co kr 230, men de har også kloner til kr 100.  Arduino Mega selger de kun i originalversjon til kr 500.  Fra Kina kan man kjøpe mange billige kloner, men jeg syntes det er enklere å bestille fra f.eks. digikey.no.  Der har de originalen for ca kr 350 og kloner for kr 212.  De lagerfører ikke klonene så der er det 4 ukers leveringstid.

Jeg har oppdaget at conrad.com nå leverer til Norge.  Der koster en Mega klone 17 Euro, men da kommer frakt, importgebyr og mva. I tillegg.  De har også Kato skinner og mye annen modelljernbane.  Jeg skal derfor forsøke å legge inn en bestilling hos dem.  Her er en lenke som sammenligner Arduino UNO og Arduino Mega 2560.
https://www.arrow.com/en/research-and-events/articles/arduino-uno-vs-mega-vs-micro

Hovedgrunner for at jeg vurderer Arduino Mega er : minne (Sram) antall serieporter, 5 Volt logikk og støtte i DCC++, men det er også greit med 40 ekstra tilkoblinger, som kan brukes til  f.eks. sensorer.




Edited by programmeringssporet - 27 oktober 2018 at 00:52
Back to Top
 Post Reply Post Reply Page  <1 4567>

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 12.05
Copyright ©2001-2022 Web Wiz Ltd.

This page was generated in 0,079 seconds.