MODELLJERNBANEFORENINGEN I NORGE (MJF) - forum

  FAQ FAQ  Søk i forum   Arrangement   Registrer ny bruker Registrer ny bruker  Logg inn Logg inn

Programmeringssporet

 Svar Svar Side  <1 456
Forfatter
  Tråd Søk Tråd Søk  Innstillinger for tråd Innstillinger for tråd
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 06 januar 2017 kl. 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.


Endret av programmeringssporet - 06 januar 2017 kl. 01:32
Til toppen
steinel Se rullemeny
Medlem i MJF
Medlem i MJF
Avatar

Medlem siden: 27 januar 2016
Land: Norge
Status: Utlogget
Points: 679
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér steinel Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 06 januar 2017 kl. 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.


Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 07 januar 2017 kl. 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.
Til toppen
HelgeBe Se rullemeny
Veteran
Veteran


Medlem siden: 24 mai 2005
Land: Norway
Status: Utlogget
Points: 112
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér HelgeBe Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 07 januar 2017 kl. 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.



Endret av HelgeBe - 07 januar 2017 kl. 21:24
Til toppen
HelgeBe Se rullemeny
Veteran
Veteran


Medlem siden: 24 mai 2005
Land: Norway
Status: Utlogget
Points: 112
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér HelgeBe Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 07 januar 2017 kl. 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.
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 10 januar 2017 kl. 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


 
Til toppen
HelgeBe Se rullemeny
Veteran
Veteran


Medlem siden: 24 mai 2005
Land: Norway
Status: Utlogget
Points: 112
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér HelgeBe Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 11 januar 2017 kl. 22:31
Skal servoen og resten av mekanismen plasseres under sporveksleren?

Helge B.
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 12 januar 2017 kl. 23:00
Sitat: HelgeBe HelgeBe skrev:

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.
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 20 januar 2017 kl. 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.




Endret av programmeringssporet - 20 januar 2017 kl. 00:47
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 06 februar 2017 kl. 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.



Endret av programmeringssporet - 06 februar 2017 kl. 04:02
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 13 februar 2017 kl. 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)









Endret av programmeringssporet - 13 februar 2017 kl. 22:51
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 02 mars 2017 kl. 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



Endret av programmeringssporet - 02 mars 2017 kl. 23:57
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 18 mars 2017 kl. 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.


Endret av programmeringssporet - 18 mars 2017 kl. 17:31
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 10 april 2017 kl. 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.




Endret av programmeringssporet - 10 april 2017 kl. 22:25
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 14 mai 2017 kl. 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)


Endret av programmeringssporet - 14 mai 2017 kl. 01:59
Til toppen
Laurenz Se rullemeny
Medlem i MJF
Medlem i MJF


Medlem siden: 03 november 2004
Land: Norway
Status: Utlogget
Points: 513
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér Laurenz Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 14 mai 2017 kl. 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.
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 14 mai 2017 kl. 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.

Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 22 mai 2017 kl. 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.



Endret av programmeringssporet - 22 mai 2017 kl. 01:30
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 26 mai 2017 kl. 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).  



Endret av programmeringssporet - 26 mai 2017 kl. 23:38
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 04 juni 2017 kl. 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.



Endret av programmeringssporet - 04 juni 2017 kl. 16:19
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 23 juni 2017 kl. 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



Endret av programmeringssporet - 23 juni 2017 kl. 01:16
Til toppen
programmeringssporet Se rullemeny
Veteran
Veteran


Medlem siden: 12 desember 2013
Status: Utlogget
Points: 313
Innstillinger for innlegg Innstillinger for innlegg   Thanks (0) Thanks(0)   Sitér programmeringssporet Sitér  SvarSvar Direkte Link til dette innlegget Sendt: 04 juli 2017 kl. 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.



Endret av programmeringssporet - 04 juli 2017 kl. 17:53
Til toppen
 Svar Svar Side  <1 456
  Del innlegg   

Forum: Forumtillatelser Se rullemeny

Forum Software by Web Wiz Forums® version 11.06
Copyright ©2001-2016 Web Wiz Ltd.

Denne siden ble generert på 0,093 sekunder.