Programmeringssporet
Printed From: MJF Forum
Category: MJ-Weblogger
Forum Name: Weblogger
Forum Description: Personlige dagbøker for bygging av kvart- halv eller trekvartferdige prosjekter. Her gjelder spesielle regler som du kan lese om i øverste innlegg inne på dette delforumet.
URL: http://forum.mjf.no/forum_posts.asp?TID=8269
Printed Date: 22 november 2024 at 02:53 Software Version: Web Wiz Forums 12.05 - http://www.webwizforums.com
Topic: Programmeringssporet
Posted By: programmeringssporet
Subject: Programmeringssporet
Date Posted: 12 desember 2013 at 12:27
En byggeblogg med et litt anderledes fokus.
Jeg har
vært passiv bruker av forumet siden det ble opprettet. Modeljernbane har jeg drevet med i 40
år. Digitalforsøkene ble startet for ca
20 år siden. Etter noe eksperimentering
med selvbygde sentraler og to digitale N-Skala lok, endte jeg opp med to Roco H0
Startset med DB BR 80 lokomotiver( http://www.worldrailfans.info/Articles/Europe/GBR80.shtml" rel="nofollow - http://www.worldrailfans.info/Articles/Europe/GBR80.shtml
). Noen ekstra skinner, og det ble en
grei to spors rundbane anlegg med kryss og sidespor. Noe senere ble også hovedanlegget klargjort
for digital kjøring. Lenz PC interface,
og to nye ROCO startsett ble også innkjøpt.
Samtidig startet digitalisering av bl.a. Lima, Heljan og ROCO lok. Som mange vet, støtter ikke de enkle ROCO
sentralene programmeringsspor - kun programmering på hovedsporet, og ingen
støtte for utlesing av konfigurasjonen (CV).
I 2007
begynte jeg å bygge moduler med FREMO grensesnitt. Programmeringssporet er plassert på en av
disse modulene Denne modulen er en
snumodul som står i den ene enden av anlegget.
Modulen følger ikke FREMO standarden på andre punkter enn grensesnittet. Hele modulen, bortsett fra FREMO
grensesnittet, benytter Trix skinner.
Hittil
har programmeringen blitt gjort ved at et rele kopler fra resten av anlegget
når jeg har behov for å programmere lokomotiver på programmeringssporet. I denne bloggen vil jeg skrive om hva som
skjer på og ved programmeringssporet, og hvilke tekniske løsninger jeg
velger. Jeg har også tenkt å ta dere med
både langs hovedlinjen og inn på noen sidelinjer der også andre interessante
løsninger benyttes. I dette første
innlegget kommer her et bilde av programmeringssporet med mitt første H0
digitallok : Roco DB BR 80 fra startsett .
På bildet er det også to midlertid plasserte krettskort : et Vellemann ( http://www.velleman.eu/" rel="nofollow - http://www.velleman.eu/ ) kort for optisk spordeteksjon, og også et
Arduino kort ( http://no.wikipedia.org/wiki/Arduino" rel="nofollow - http://no.wikipedia.org/wiki/Arduino )
som benyttes for blokkdetektering.
Vellemann kortet er koplet til PC serie port via en Optokopler. Arduino kortet har USB.
Her er
også et bilde av ferdig loddede kretskort som jeg skal teste ut på programmeringssporet, ( http://www.merg.org.uk/merg_resources/cbus-dcc.php" rel="nofollow - http://www.merg.org.uk/merg_resources/cbus-dcc.php
), og en Raspberry PI ( http://no.wikipedia.org/wiki/Raspberry_Pi" rel="nofollow - http://no.wikipedia.org/wiki/Raspberry_Pi
).
Neste blogginnlegg vil inneholde mere
om disse kretskortene, og hvordan de er tenkt benyttet.
|
Replies:
Posted By: Thobbe
Date Posted: 12 desember 2013 at 14:12
Jeg er skikkelig interessert i blokkdeteksjon med arduin. Men jeg skjønner ikke noen ting som helst av programmering...
Dette ser skikkelig spennende ut!
|
Posted By: programmeringssporet
Date Posted: 13 desember 2013 at 00:34
Hei Thobbe,
For å komme igang med Arduino. Start her :
http://arduino.cc/en/Guide/Windows
Etter at du har fått blink eksemplet til å fungere, kan du teste ut DigitalSerialRead.
Ved å kombinere disse to eksemplene, har du en en-blokks spordetektor. Du trenger også noen komponenter pr detektor. For DCC kan du f.eks. bruke disse :
4n25 (Ikke kjøp mange av denne - det er enklere med firedoble optokoplere) https://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?item=75-205-90&toc=0&q=4n25
brolikeretter https://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?item=70-001-74&toc=0&q=brolikeretter
motstand https://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?item=60-243-38&toc=0&q=motstand+10k
Når du har fått dette til å fungere - kan jeg vise deg hvordan du enkelt utvider til f.eks. 8 blokker. Videre
utbygging er litt mere komplekst. Jeg har 24 detektorer pr. Arduino,
men det er av historiske årsaker - En Arduino kan sikker greie mange
tusen blokker.
Her er min eksempelkode : (Ikke testet fordi jeg ikke har tilgang til Arduino . der jeg er i dag)
/* Enkel detektor, sjekker status på pinne 2 Tenner intern LED (også Pinne 13) eller slukker avhengig av Pinne 2 Sender også ut en 0 eller 1 til PC via USB port */ // setup kjøres en gang og brukes til initsiering av pinner og serie port: void setup() { // Sett pinne 13 til UT (Pinne 13 er også intern LED: pinMode(13, OUTPUT); // Sett opp serieport (USB og Pinne 0 og 1) Hastighet 9600: Serial.begin(9600); // Sett opp detektor pinne 2 til INN: pinMode(2, INPUT); } // Etter at setup er kjørt, vil prosessoren gjenta loop så lenge den kjører void loop() { //Les sensorpinnen (2) og legg resultatet i variabelen sensorValue: int sensorValue = digitalRead(2); //Send resultatet til PC via Serie Port / USB: Serial.println(sensorValue, DEC); // Tenn, eller Slukk LED på pinne 13, avhengig av sensorValue : if (sensorValue==0) digitalWrite(13, LOW); else digitalWrite(13, HIGH); // vent 1/10 sekund, og gjenta etterpå : delay(100); }
|
Posted By: einjen
Date Posted: 15 desember 2013 at 00:13
Heisann.
Jeg har, helt uavhengig av denne tråden, kjøpt dette startsettet for noen dager siden: http://www.robonor.no/mage/default/arduino/kits/arduino-inventors-kit.html" rel="nofollow - http://www.robonor.no/mage/default/arduino/kits/arduino-inventors-kit.html
Skal brukes til å styre LED-tavle.
Kan det brukes til MJ-formål også?
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: bkv1
Date Posted: 15 desember 2013 at 11:20
Hei interedssant blogg.
Har nylig begynt å spekulere rundt autmasjon og blokkstyring til min N-skala bane. Kan Arduino spille noe rolle her? Jeg har tenkt i retning RFID for å holde styr på hvilke blokker som er opptatt, men er i tvil om dette er en god ide. Hilsen Bjørn
------------- Hilsen Bjørn
N-skala, Peco 55, Digikeijs DR5000, JMRI. Tysk diesel nyere tid
|
Posted By: Thobbe
Date Posted: 15 desember 2013 at 17:04
Jeg tror.hvertfall det finnes billigere metoder enn rfid. Men jeg har vært inne på tanken selv. Da vil man jo kunne se hvor hvert enkelt tog befinner seg, og ikke bare om et sporfelt r belagt eller ikke.
|
Posted By: programmeringssporet
Date Posted: 16 desember 2013 at 22:01
16. Desember 2013
Hyggelige
og nyttige kommentarer på bloggen. Siden
det er mest spørsmål rundt Arduino, vil jeg fokusere på dette denne
gangen. Vil først nevne at jeg også har
gjort noe eksprementering med Arduino og RFID.
Tanken min rundt dette er å ha lesere ved utkjøring fra stasjoner, for å automatisk registrere
togsammensetning. For øyeblikket tror
jeg ikke jeg går videre med dette, fodi det trolig er enklere å løse dette i programvare
ved at styringen har full oversikt over alle vogner til enhver tid, og å
benytte optiske vogn eller akseltellere for å være sikker på hvor mange og
derved hvilke vogner som er med i toget.
I fremtiden kan det vel også være aktuelt med DCC dekodere, med
tilbakemelding i alle vogner.
Først en
oversikt over bruksområder for Arduino på en modeljernbane: (se også http://www.siliconvalleylines.com/downloads/ModelRailroadingWithArduino.pdf" rel="nofollow - http://www.siliconvalleylines.com/downloads/ModelRailroadingWithArduino.pdf )
Jeg utvikler / benytter Arduino på følgende
områder :
·
DCC
analysator 2 mikrosekunders oppløsning , kun positive eller negative
pulser. Realtime inn i database for
senere analyse. Jeg Kommer med mere informasjon i et senere blogginnlegg.
·
Block
Detector. Strømdetektering, Se litt info
lenger opp. Kommer senere med mere info.
·
Ultralyd
avstandsmåling – et 1 times prosjekt, se mere nedenfor i dette innlegget.
Planer – som kan implementeres med Arduino kort, Arduino prosessor
eller med andre prosessorer (f.eks. Microchip PIC):
·
Amperemeter
DCC og andre kilder
·
Spenningsmåler
DCC
·
DCC
programmerer
·
Relestyring
·
Ledstyring
·
LCD
Display styring
·
Pulsmotorstyring
( http://modelrail.otenko.com/arduino/controlling-your-trains-with-an-arduino" rel="nofollow - http://modelrail.otenko.com/arduino/controlling-your-trains-with-an-arduino
)
·
DCC
decoder.
·
Servostyring.
Andre :
·
OpenLCB/NMRAnet Developer and
Early Adopter Kit. Eksperimentsett for NMRAnet /
OpenLCB ( http://nmranet.org/" rel="nofollow - http://nmranet.org/ )
·
DCC Command Station ( http://www.oscale.net/en/simpledcc" rel="nofollow - http://www.oscale.net/en/simpledcc
)
·
Rfid
http://blog.arduino.cc/category/wireless/rfid/" rel="nofollow -
Ultralyd avstandsmåling – Et godt eksempel på hvor effektivt det er å
utvikle enkle løsninger med Arduino.
Jeg var en tur hos Kjell og
Company( http://www.kjell.com/" rel="nofollow - http://www.kjell.com/ ) i Sverige
i helgen. De har i det siste fått et bedre utvalg av Arduino kort og tilbehør ( http://www.kjell.com/Sok?query=arduino" rel="nofollow - http://www.kjell.com/Sok?query=arduino )
. Jeg kjøpte bl.a. en Ultralyd sender og
mottager ( http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/avstandssensor-p87891" rel="nofollow - http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/avstandssensor-p87891 )
til SEK 49.90. I dag brukte jeg en time på å teste denne ut. Tanken er å sette den i enden av
programmeringsporet, for å måle avstand til Lokomotivet, og bruke dette til å beregne
hastigheten. Målet er en helt
automatisert beregning av dekoderens hastighetsparametre. I løpet av en time i dag fikk jeg programmert
Arduino kortet, koplet til sensor og gjort noen tester på arbeidsbenken. Det ser ut til at deteksjon med avstand fra 4
– 20 cm fungerer bra. Har testet med DB
BR 215 Diesellok og DB BR 80 damplok, både forfra og bakfra. Tror jeg skal få til lengre avstander med en
mere nøyaktig/fastmontert plassering av sensoren.
Har også gjort en liten endring i det medfølgende eksempelet for å få høyere
oppløsning. Her er status etter dagens
arbeid.
/*
Tilkopling :
Sensor: Arduino:
VCC 5 V
Trig Digital input 4
Echo Digital input 2
Gnd GND
*/
int
inputPin=2; //ECHO pin
int
outputPin=4; //TRIG pin
void
setup()
{
Serial.begin(9600);
pinMode(inputPin, INPUT);
pinMode(outputPin, OUTPUT);
}
void
loop()
{
digitalWrite(outputPin, HIGH); //Trigger ultrasonic detection
delayMicroseconds(10);
digitalWrite(outputPin, LOW);
float distance = pulseIn(inputPin, HIGH); //Read ultrasonic reflection
distance=distance/58;
Serial.println(distance); //Print distance
delay(100);
}
Har også fullført MERG kortene. Og
gjort den første utlesingen av CV’er fra et lokomotiv. Mere om dette neste gang.
http://programmingtrack.no-ip.org/locodb/DB2151298.pdf" rel="nofollow - http://programmingtrack.no-ip.org/locodb/DB2151298.pdf
|
Posted By: programmeringssporet
Date Posted: 27 desember 2013 at 13:26
Har lastet ned og installert gratisprogrammet Fritzing (http://fritzing.org) Dette har jeg brukt for å dokumentere en enkel blokkdetektor for DCC med Arduino. Her kommer resutatet:
|
Posted By: programmeringssporet
Date Posted: 02 januar 2014 at 02:03
Hvorfor denne Bloggen ?
Hvorfor leker vi med tog ? Eller hvorfor leker vi i det hele tatt. Det er vanlig å dele lek for barn inn i tre grupper : 1) Funksjonslek, hvor det viktigste er at muskler og sanser er i funksjon 2) Fiksjonslek (eller illusjonslek) leke far, mor og barn, leke butikk, leke tog osv.). Her spiller fantasien en stor rolle. 3) Konstruksjonslek, (bygge med klosser, grave i sand, klippe og klistre, modellere, tegne, skrive, snekre, sy osv.
Modelljernbane dekker de to siste gruppene. Det som har vært viktigst for meg er muligheten til å lære nye ting. Det begynte med å forstå basis EL-teknikk, senere elektronisk styring, Digitale kretser, og programmering. Norge har et stort behov for teknisk kompetanse fremover, og der er satt igang flere initiativer for å få til dette. Et av dem er ”Lær Kidsa Koding”. ( www.kidsakoder.no). Utfordringen med hobbyprogrammering, blir for mange hva skal man lage ? Styring av modelljernbane er løsningen – og kanskje den viktigste grunnen til at 10 åringen bør drive med modelljernbane ?
Hva skal så til for å komme igang med elektronikk ? Da jeg begynte med dette måtte man sette sammen elektroniske kretser med transistorer og motstander, eller integrerte kretser. I dag inneholder de aller fleste elektroniske styringer, minst en microprosessor/mikrokontroller. Denne kontrolleren erstatter mange separate komponenter og integrerte kretser, men de har vært ganske kompliserte å programmerer. Her kommer Arduino inn som en viktig løsning.
Arduino er et lite kort med en microkontroller som den viktigste komponenten. Arduino ble laget for å gjøre det mulig for ikke-teknikere å lage kontrollerkretser. De fleste versjonene av Arduino har en USB tilkobling. Denne koples til PC, for strømforsyning, nedlasting av programmer og tilbakemeldinger. Og alt dette får man for omtrent kr 200. Selve prosessoren koster under kr 50 – slik at det er mulig å lage ganske rimelige løsninger med Arduino. Ofte er det fornuftig å prototype på et Arduino kort, og senere bygge løsningene med en separat prosessor.
De fleste startet med et Led-blink program. Det kan lett utvides til trafikklysstyring, belysningsstyring, signalstyring eller enkel togstyring. De enkle Arduino kortene er laget med en ganske enkel 8-bits. prosessor med begrenset kapasitet, så etterhvert som logikken blir mere kompleks må man videre.
Alternativet kan være Arduino Mega, som har en kraftigere prosessor (ATmega2560) med mere minne, flere I/O porter og bl.a. 4 Serieporter (Com porter). Andre alternativer er Chipkit Uno32 (Pic basert 32 bits controller) eller Arduino Due som en 32bit CortexM3 ARM microcontroller – og da har vi prosessorytelse som en middels smart Phone. Disse to siste kortene har tre ulemper i forhold til de to første: 1. De kjører på 3 Volt – istedenfor 5 Volt, gjør tilkopling litt vanskeligere, 2. De er litt dyrere. (kr 150 – 500). 3. Prosessoren kan ikke tas ut av kortet. Feilkopling som fører til ødelagt prosessor gjør derfor kortet ubrukelig. Det blir også dyrt/vanskelig å lage en ”produksjonsversjon” av løsningen med en løs prosesser.
Sparkfun har en nyttig side for å velge Arduino kort : https://www.sparkfun.com/arduino_guide
Microchip lager også mikrokontrollere. Disse kan også programmeres ganske enkelt (Assembly, C, Basic, JAL), men krever litt investering i programmeringsutstyr. Og ganske kompleks oppsett av utviklingsmiljø på PC’en. Dette er teknologien som er benyttet av mange d.i.y. DCC sentraler : TMW - http://www.webring.org/l/rd?ring=modelrailroading;id=20;url=http%3A%2F%2Ftmw.dreamhosters.com%2F MiniDCC - http://www.trainelectronics.com/miniDCC/index.htm NanoX - http://usuaris.tinet.cat/fmco/nanox_en.html#nanox_orig MERG - http://www.merg.org.uk/
TMW, var den første jeg bygget – den er idag uaktuell, fordi nyere alternative har mere funksjonalitet. MiniDCC har jeg aldri prøvd fordi den ikke dekker mine behov (PC grensesnitt).
NanoX skal jeg bygge en dag. Den er glimrende for de som benytter ROCO lokmaus II, eller Multimaus. Kan bygges i flere alternative versjoner med PC interface og feedback, og utlesing av CV variable. Veldig rimelig løsning for å oppnå noe av det samme som ROCO z21, men den krever noe mere arbeid og PC programvare som JMRI eller Rocrail. Det eneste vesentlig argumentet for z21/Z21, som jeg ser det, er de nye Kamera Lokomotivene som ROCO kommer med.
MERG – Er en komplett løsning for modelljernbanestyring. Den er distribuert over mange forskjellige kort – slik at man kan bygge kun det man har behov for. Mitt behov i første omgang er å kunne programmere og lese ut CV variable, resten av modelljernbanen min styres med ROCO Lokmaus II/ Multimaus, og Lenz PC interface. For programmeringssporet trenger man en DCC sentral. Og et PC interface. Skjema, byggebeskrivelse, og Print Layout ligger klart for nedlastning fra http://www.merg.co.uk/index.php . Medlemmer av MERG kan også kjøpe ferdige byggesett. Etter litt rask hoderegning, kom jeg til at det var like rimelig å melde seg inn, og bestille byggesettene. (medlemmer kan også kjøpe komponentene til rimelige priser).
Medlemsskapet kostet 25 Pund. En uke etter at jeg hadde registert meg, og betalt, fikk jeg tilgang til å bestille byggesettene http://www.merg.co.uk/kits.php . Jeg bestilte
- Kit 81: RS232 Interface (CAN-RS) 10,50 Pund. - Kit 91: DCC Command Station with CBUS Interface 26,80 Pund.
Frakt kostet 3,50 Pund. Totalt ble det under kr 650 (400 for pakken og 250 for medlemskapet) levert hjem i postkassen.
Alternativene jeg vurderte, var å kjøpe en Lenz Digitalsentral, SPROG II (http://www.sprog-dcc.co.uk/) .eller å bygge en SPROG I (http://www.sprog-dcc.co.uk/oldsprog/sprog.htm ), men valgte til slutt å gå for MERG CBUS, fordi den kan brukes til så mye mere.
Byggingen av settene gikk fort, ca 30 minutter pr. sett. Testprosedyren før montering av controller tok ca en time. Deretter ble det litt stop, før jeg forstod at neste skritt var å installere JMRI (http://www.jmri.org/ ). Installerte denne på en Windows PC, og koplet til via en USB – Serieport Adapter. Started DecoderPro3, og konfiguerte denne for MERG. Fungerte ikke til å begynne med, før jeg forsto at Baud rate måtte endres fra 57000 til 115200.
Hvis man setter inn ”Jumper 7” på ”Command Station”, vil den innebygde boosteren aktiveres. Da vil den gule LED2 Lyse. Ved å slå av og på DCC strømmen i DecoderPro på PC, fikk jeg derved en visuell kontroll på om DecoderPro kommuniserte med ”Command Station”. Neste skritt var å fjerne ”Jumper 7” slik at den ble konfigurert for programmeringssporet. Da var det bare å sette igang å lese ut dekoder konfigurasjonene mine. Jeg tenkte å starte med å gi et av DB BR80 lokkene mine æren av å være først ute med dette, men fikk ikke kontakt – på tide å ta service på det lokket igjen. Prøvde da å lese ut fra et DB BR 215, og det fungerte fint.
Neste skritt var å installere JMRI på en Raspberry PI, og det gikk også greit – mere om Raspberry PI og JMRI neste gang.
|
Posted By: ses
Date Posted: 02 januar 2014 at 09:12
Posted By: programmeringssporet
Date Posted: 03 januar 2014 at 00:54
Hyggelig med tilbakemelding !
Lek i form av rollespill, er vel kanskje det vi kaller trafikkspill ?
Her kommer en ganske kortfattet oppskrift på hvordan installere JMRI på Raspberry Pi : Jeg kobler sjelden Skjerm, tastatur og mus til Raspberry Pi. hvis du gjør det kan du hopper over pkt 4,7 og 10
1. Last ned Raspian fra 20 Desember 2013 : http://www.raspberrypi.org/downloads unzip
2. Lag boot image på SD kort . Her kommer oppskrifte for å lage fra en Linux PC . Oppskrifter for Windows PC’er finnes på nettet. Du må være sikker på navnet til SD brikken. På min Linux PC ble det sde. Bruk fdisk for å sjekke. Hvis du gjør feil – er det stor sjangse for at Linux installasjonen blir overskrevet/ødelagt. fdisk /dev/sde dd bs=1M if=2013-12-20-wheezy-raspbian.img of=/dev/sde
3. Sett SD kortet i Raspberry Pi kople til nettverk og strøm. Alle LED’ene skal tenne i løpet av kort tid.. Hvis kun en rød lyser, mangler nettverk.
4. Logg inn via SSH Hvis di bruker Windows som desktop – kan du laste ned putty fra : http://www.putty.org/
5. Konfigurer Raspberry Pi : Sudo raspi-config Kjør valgene 1,2,3,4
ââââââââââ⤠Raspberry Pi Software Configuration Tool (raspi-config) ââââââââââââ Setup Options â â â 1 Expand Filesystem Ensures that all of the SD card s â 2 Change User Password Change password for the default u â 3 Enable Boot to Desktop/Scratch Choose whether to boot into a des â 4 Internationalisation Options Set up language and regional sett â 5 Enable Camera Enable this Pi to work with the R â 6 Add to Rastrack Add this Pi to the online Raspber â 7 Overclock Configure overclocking for your P â 8 Advanced Options Configure advanced settings â 9 About raspi-config Information about this configurat â â â <Select> <Finish> â ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
6. Installer RXTX. JMRI er utviklet I Java. Java er allerede installert på Raspberry. RXTX gir serieport støtte for JAVA. sudo apt-get update sudo apt-get install librxtx-java
7. Installer og start VNC Server (Hvis du ikke har koplet til Skjerm, tastatur og mus). sudo apt-get install tightvncserver tightvncserver vncserver :0 -geometry 1920x1080 -dept 24
8. Download JMRI for Linux http://jmri.sourceforge.net/download/index.shtml#prod-rel
9. Pakk ut JMRI tar -zxvvf JMRI.3.6-r24520.tgz
10. Logg inn med VNC Logg inn til Raspberry med VNC (Hvis du bruker Windows, som arbeidstasjon, kan du laste ned vnc fra : http://www.realvnc.com/products/open/4.1/winvncviewer.html
11. Start DecoderPro cd JMRI ./DecoderPro3
Har også montert sammen MERG kortene - og Raspberry Pi.
På bildet ser vi den grønne platen hvor hele styringen er montert. Den består av, fra Høyre :
- Summer for Merg Sentralen
- Merg DCC Sentral
- to Serieport grensesnitt for MERG Cbus.
- to Raspberry Pi
- En Zotac mini PC (X86 basert CPU) som kan benyttes til bl.a. å kjøre Windows programvare.
Zotax'en er ikke skrudd fast - fordi jeg er usikker på om jeg trenger den - men det er greit å vita at jeg har plass.
Andre ting i bildet er, et midlertlig programmeringsspor - denne gangen med en Pico DB BR 218 Marklin Trafo, og TRIX analog kontroller, er midlertidig strømforsyning for MERG kortene.
Det sorte krysset til venstre for Trix kontrolleren, er CAN bus plugger med T-ledd og terminator. Tenker å bruke disse pluggene der det er behov for å trekke CAN bussen mellom forskjellige Moduler/seksjoner Pluggene. De er egentlig laget for CAN buss i båter (NMEA 2000), men de bør fungere like bra i modelljernbane sammenheng, selv om de er vanntette. ( http://www.maretron.com/products/cabling.php )
Den store Blå boksen helt øverst er en dobbel USB - RS 232 overgang, som skal koples til LENZ / Roco styringen.
|
Posted By: programmeringssporet
Date Posted: 06 januar 2014 at 22:47
Har fått noen meldinger om installasjonsproblemer.
Her kommer en automatisert oppskrift på hvordan installerer JMRI på Raspberry Pi: Lisens : http://jmri.sourceforge.net/COPYING Denne erstatter pkt. 6,7,8, og 9 i oppskriften over :
wget programmingtrack.no-ip.org/setup.sh . ./setup.sh
Den tar 15 - 20 minutter å kjøre. Svar Y når den spør, og oppgi et passord (VNC) når den spør om det. Hvis den feiler, kan den kjøres på nytt.
|
Posted By: programmeringssporet
Date Posted: 11 januar 2014 at 22:55
Programmeringssporet fjernet.
Programmeringsporet er tatt opp, og lagt opp ned på arbeidsbenken. Årsaken er lodding av ledninger. En av de geniale tingene med Trix skinner, er at det er tilkopling til begge skinnestrenger under skinnen. Marklin / Trix har egne kabelsko som passer, men jeg foretrekker å lodde ledningene direkte til koblingspunktene. På bildet under, på den nederste skinnen har jeg loddet på en brun ledning. En annen fin ting med Trix skinnene, er at det er ordentlig kopling mellom skinnene, og derfor ikke behov for skinnelasker. Det jeg syntes er aller mest genialt med skinnene, er hvor lett det er å kople strøm til skinnekrysset i sporveksler. På sporvekselen under, kan dere se en svart kontakt til venstre, som flyttes mellom to posisjoner i trepins pluggen avhengig av om man ønsker strøm i skinnekrysset. Ganske ironisk at det er Marklin / trix som har løst tilkopling til skinnekrysset for to-skinne drift på den enkleste måten.
Programmeringssporet er nå delt i fire elektriske blokker. Etter sporskifter, er det først en sikkerhetsblokk på 10cm, som er en avkoblerskinne, deretter en blokk på 30cm, en blokk på 1,5 cm og til slutt en blokk på 30 cm. Alle blokkene er issolert for blokkdetektor på begge skinnestrengene.
Blokken på 1,5 cm er for å detektere om hvert enkelt hjul tar opp strøm. På bildet under ser dere også en liten IR detektor. (Kemo B215, kan bl.a. kjøpes på www.conrad.de) Denne skal jeg benytte som akseldektor, plassert midt på 1,5 cm blokken, jeg vil da få kontroll på hvor mange akslinger lokomotivet har, og om de har et godt strømopptak på hvert jul.
Status nå er at sporveksel med strømkopling til skinnekryss og motor er montert. Programmeringssporet er også tilbake på plass, og IR detektor er plassert. Neste steg er kopling av kjørestrøm via detektor og rele, for skille mellom programmeringsstrøm (fra Merg DCC) og kjørestrøm (fra ROCO 10761).
|
Posted By: programmeringssporet
Date Posted: 18 februar 2014 at 15:37
Fremgang
siste måned på programmeringssporet
Kan
rapportere om fremgang på to områder : programvare
og maskinvare.
På
maskinvaresiden, har jeg valgt å benytte en Arduino Uno for kontroll av
programmeringssporet. Den skal :
1. Styre rele for kopling mellom
kjørestrøm og programmeringsstrøm.
2. Sporbelegg deteksjon, 4 blokker ,
med detektering på begge skinnestrenger.
3. To , eller flere optiske
detektorer.
4. Ultralyd avstands /
hastighetsmåling.
Jeg gjør
også noen forsøk med lydmåling, for å se om jeg kan måle støyforskjeller med forskjellige dekoderinstillinger.
En
Arduino Uno, har 13 Digitale inn/ut porter og 6 analoge innganger. To av de digitale portene går til
seiekommunikasjon, slik at det kun er 11 ledige. Jeg trenger flere. Jeg har derfor valgt å teste ut en I2C basert
I/O Expander. Microchip MCP 230008 ( http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en021393" rel="nofollow - http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en021393
)har jeg liggende, og de kan skaffes fra flere leverandører. Priser fra ca. USD 1 – NOK 30. Jeg har aldri brukt disse så en
prøveoppstilling ble laget.
Adafruit
har et Arduino bibliotek for MCP230008 og et eksempelprogram ( https://github.com/adafruit/Adafruit-MCP23008-library" rel="nofollow - https://github.com/adafruit/Adafruit-MCP23008-library
) . Det fungerte på første forsøk. Nå er det bare litt lodding som står igjen
for å få blokkdetektoren til å fungere.
Programvare
tar ofte litt lengre tid enn planlagt.
Status nå er at jeg benytter JMRI på Raspberry Pi for å lese lokomotivkonfigurasjonen,
samtidig som min egen programvare logger
ved siden av. De første testene på en
web applikasjon er oppe å kjører på http://10.0.0.139:81/dynamic.php?system=ENGINEDB&page=10000&id=0" rel="nofollow - http://programmingtrack.no-ip.org/dynamic.php?system=ENGINEDB&page=10000&id=0" rel="nofollow - http://programmingtrack.no-ip.org/dynamic.php?system=ENGINEDB&page=10000&id=0
Men her
er det fortsatt mye å gjøre, både på feilhåndtering, layout og
funksjonalitet. Første skritt er å lese
CV’er for å identifisere hvilket lok som er satt på programmeringssporet. Neste skritt er å kunne endre adresser fra
Nettbrettet. Deretter skal det lages
programvare for å kjøre automatiske målinger av start, stop, og hastighet, og
så kommer det første store målet, som er å automatisere innstillingene av Cvene
for motorkontroll – basert på de automatiske kjøretestene.
|
Posted By: programmeringssporet
Date Posted: 20 februar 2014 at 16:37
Og her er
loddingen påbegynt. Bildet viser
Arduinoen oppe til høyre - Hovedkortet
til Venstre.
Øverst på
hovedkortet, skal jeg lodde inn en sokkel for Arduino Prosessoren, når prototypingen av programvaren er ferdig.
MCP23008
er plassert omtrent på mitten av kortet, og Nederst er det sokler for 2,
4-doble optokoplere.
I denne
testoppkoplingen, har jeg koplet til 5 V via en 3k3 motstand for å drive
optokopleren.
Den som
jeg var usikker på, var om MCP230008’erns interne Pullup motstander på 100k var
tilstrekkelige til å trekke signalet opp (tidligere har jeg brukt en 10k
motstand for dette) . Det ser ut til å
fungere bra.
Nå under
testingen brukes den gule LED’en på Arduinoen for å se at detektoren
fungerer. Arduinoen er programmert med
denne Sketchen. (Kan kun sjekke en
detektor – Pinne 10 på MCP230008)
#include <Wire.h>
#include "Adafruit_MCP23008.h"
// Basic pin reading and pullup test for the MCP23008 I/O
expander
// public domain!
// Connect pin #1 of the expander to Analog 5 (i2c clock)
// Connect pin #2 of the expander to Analog 4 (i2c data)
// Connect pins #3, 4 and 5 of the expander to ground
(address selection)
// Connect pin #6 and 18 of the expander to 5V (power and
reset disable)
// Connect pin #9 of the expander to ground (common ground)
// Input #0 is on pin 10 so connect a button or switch from
there to ground
Adafruit_MCP23008 mcp;
void setup() {
mcp.begin(); // use default address 0
mcp.pinMode(0, INPUT);
mcp.pullUp(0, HIGH);
// turn on a 100K pullup internally
pinMode(13, OUTPUT); // use the p13 LED as debugging
}
void loop() {
// The LED will
'echo' the button
digitalWrite(13,
mcp.digitalRead(0));
}
|
Posted By: programmeringssporet
Date Posted: 27 mars 2014 at 10:11
Fremgang
siste måned på programmeringssporet
Jeg har
eksperimentert videre med Ultralyd avstandsmåleren. På gulvet detekterer den et H0 lokomotiv med
opp til 3,2 meters avstand. Installert
på programmeringssporet detekterer den opp til 22 centimeter. Det er egentlig ikke noe stort problem fordi
det er de siste centimeterene før stopp, og rett etter start som er viktig, men
jeg har en mistanke om at det er hodet på en bolt som reflekterer
signalet. Skal forsøke å se om jeg kan
bli kvitt denne.
Kortet for
styringen av programmeringssporet er funksjonellt ferdig. Først ble det en testoppkopling for å teste
relestyring, som brukes for å veksle mellom kjørestrøm fra Roco sentralen, og
programmering via MERG kontrolleren.
De siste komponentene er loddet på
kortet. Nå gjenstår det bare å
legge til sokkel for Arduino prosessoren
og tilkopling av ledninger, men dette
vil jeg vente med inntill kortet med programvare er ferdig. Jeg har derfor fullført testingen av kortet :
Etter
dette har jeg montert alt sammen midlertidig ved siden av programmeringssporet,
og koplet opp en USB kabel mellom Arduinoen
og Raspberry Pi. Med denne
oppkoplingen kan jeg teste ut kortet sammen med omkringliggende komponenter, og
ha et godt miljø for utvikling av programkoden på kortet: Jeg utviker på Raspberry PI, via en VNC
klient, og laster ned v.h.a. USB kabelen, slik at det bare tar noen sekunder å
teste nye versjoner av programkoden.
Arduino
programkoden har allerede gjennomgått flere revisjoner. Den første versjonen var for å teste relestyringen,
ved at den slo av og på releet hvert 5 sekund.
Neste versjon sjekket alle de 8 spordetektorene ved å sende statusen til
en terminalemulator en gang pr. Sekund.
Deretter ble det en versjon for å teste Ultralyd avstandsmålingen. Nå er jeg igang med den endelige versjonen. Den fungerer ved at det sendes en kommando
til Arduinoen, som returnerer med et svar.
Kommandoer som er implementert i dag er:
- Q01VM
- Query 01 Version Major
- Returnerer versjonsnummeret for
programvaren. Svarer med: M01P2
- Q01VS
- Query 01 Version Subversions
- Returner releasenummer for programvaren : M0123
- Q01U1
- Query 01 Ultrasonic 1
- Skal returnere informasjon fra
Avstandsmåleren
- Q01TA
- Query 01 Track All
- Returner svaret fra alle spordetektorer. Det kan også spørres om hver enkelt med
meldingen Q01Tn, hvor N=0 – 7.
Utviklingen av programkoden på Raspberry har
også gjort fremskritt. Et av de første
behovene er å finne ut hvilken Decoder type, som er installert i hvert enkelt
lokomotiv. De fleste decoderprodusenter
benytter CV 7, software version number på en fornuftig måte. Utfordringen min er at jeg har ganske mange
dekodere fra ESU, som er ganske forskjellige, men hvor ESU har lagt inn samme
verdi i CV 7. Dette gjelder så
forskjellige dekodere som, LokPilot v. 2
3 og 4, Loksound dekodere, ROCO 10745 (fabrikkinstallert i mange ROCO
startsett) i forskjellige versjon, og mange av dekoderne som selges som
Bachmann 3-Function decoder 36-553. Etter lesing av manualer, fra
dekoderleverandørene og JMRI dokumentasjonen, samt egen testing har jeg laget
denne tabellen (fortsatt ikke helt komplett)
Hele
tabellen ligger her:
http://programmingtrack.no-ip.org/EsuRocoBachmannCVlist20140324.xls" rel="nofollow - http://programmingtrack.no-ip.org/EsuRocoBachmannCVlist20140324.xls
Programkoden
er kommet så langt at den klarer ved hjelp av å lese ut forskjellige CV’er, og
om nødvendig forsøke å skrive til noen CV’er,
å finne ut om det er en basic decoder (ESU, Roco eller Backmann), og
hvem av dem det er, eller om det er en
av de mere avanserte dekoderene. Det
gjenstår fortsatt funksjonalitet
for å finne forskjeller mellom Lokpilot
2,3,3 og LokSound. Tilsvarende
funksjonalitet for Lenz og Zimo kommer senere.
Etter at
jeg har funnet ut hvilken dekoder som er i loket, har jeg også laget
funksjonalitet for å identifisere om loket har vært innom programmeringssporet
før, og eventuelt programmerer CV’er fra en liste. Måten jeg benytter er å sjekke dekodertype,
hvis denne støtter lange adresser benyttes denne for å identifisere loket. For NSB lok benytter jeg lokets 3 (med en
null foran) eller 4 sifrede nummer, for
tyske lok benytter jeg typenummeret f,eks 218, og legger til kontrollsifferet,
slik at jeg får 4 sifre. Det gjenstår å
se hvor mange kolisjoner jeg får. For de
dekoderene som støtter det, vil jeg benytte et løpenummer i CV 106 (User
identification) .
Hensikten
med alt dette, er å kunne ta vare på historikk på CV’er, for å kunne
sammenlikne kjøreegenskapene for de ulike lokene, med ulike dekodere. Når programmeringssporet, er ferdig med
sensorer vil jeg få en automatisert dokumentasjon av dette. Status i dag : http://programmingtrack.no-ip.org/dynamic.php?system=ENGINEDB&page=10000&id=0" rel="nofollow - http://programmingtrack.no-ip.org/dynamic.php?system=ENGINEDB&page=10000&id=0
Til slutt
har jeg også funnet dokumentasjon på hvordan styre vendeskiver med Arduino: http://www.rmweb.co.uk/community/index.php?/topic/78578-dcc-controlled-peco-turntable-project/" rel="nofollow - http://www.rmweb.co.uk/community/index.php?/topic/78578-dcc-controlled-peco-turntable-project/
|
Posted By: Dag Cato
Date Posted: 27 mars 2014 at 12:27
Hei Programmeringssporet. Det er interessant å lese framskrittene dine. Jeg har endelig skaffet meg en liten Pi og når jeg får litt luft i timeplanen skal jeg prøve å få den til å kjøre JMRI frittstående. Men et spørsmål. Det du holder på med nå virker det nesten som du kan gjøre via JMRI? Hvorfor da lage alt fra scratch? Fordi JMRI savner funksjonalitet du trenger eller enkelt greit fordi du kan og det er gøy?
MVH DC
------------- MVH
DC
Steinsnes? Hvilken Steinsnes?
|
Posted By: programmeringssporet
Date Posted: 29 mars 2014 at 00:32
Hei DC,
Veldig
hyggelig med tilbakemeldinger – er ofte vanskelig å selv vurdere om det man
skriver er av interesse for andre.
Det enkle
svaret er vel at jeg gjør det fordi det er gøy, men hvis jeg skal forsøke å
forsvare det litt, kan jeg utdype :
JMRI er en
glimrende CV editor for å lese og skrive CV verdier. Jeg har koplet opp JMRI i parallell til
egenutviklet programvare slik at jeg kan lese ut og skrive, og se hvilke
kommandoer som blir generert over serieporten.
Mine
viktigste argumenter for å lage en egen programmerer, er :
1. I JMRI kan man lese ut og lagre CV’er
på (XML) filer, slik at man manuelt kan se hvilke endringer man har gjort,
eller legge tilbake gamle instillinger.
Jeg vil istedenfor filer, lagre innstillingene i en database (MySQL)
slik at jeg kan ta ut rapporter, sammenlike, og gjøre mere komplekse
operasjoner som f.eks. resette dekoder
til fabrikkinstillinger og deretter programmere inn gamle verdier for f.eks.
CV1, lange adresser, ol, uten å gjøre dette som manuelle steg i JMRI)
2. Jeg ønsker å autmatisk sette
parametre for styringen, både CV i
lokket, men også parametre i styringsprogrammet for å oppnå jevneste og mest
mulig forbildetro, hastighet, aksellerasjon og bremsing. JMRI har en automatisk hastighetsmåler som
måler tiden mellom to punkter, og derved beregner konstant hastighet for toget (eller
egentlig gjennomsnitlig). Jeg håper å få
til en nøyaktig måling av retardasjon og akselerasjon v.h.a. Ultralyd
avstandsmåling. Denne målingen vil jeg
gjøre fra enden av programmeringssporet, og når jeg/eller programmet er fornøyd
med profilen, vil jeg lagre den, og benytte den under kjøringen senere.
3. JMRI DecoderPro er en PC
applikasjon, som ikke kan benyttes på nettbrett. Jeg lager grensesnitt slik at det kan brukes
på PC, iPad, iPhone, Android etc. I
tillegg tror jeg at jeg vil kople til en enkel fjernkontroll (type TV) med
enkle funksjoner, som f.eks:
·
0
– Identifiser Lok på programmeringsspor.
·
1
– Les og lagre alle CV’er i lokket.
·
2
– Tildel og programmer en midlertidig unik adresse for loket, slik at det kan
prøvekjøres.
·
3
- Kjør testprogram for lokomotiv, for å grovinstille CV’er
·
4
– Kjør avansert testprogram for fininstiing av CV’er
Andre
ting jeg har sett at jeg kan lage bedre enn JMRI er dekodertype
identifisering. JMRI kan f.eks. ikke
skille mellom ESU dekodere som f.eks. Lokpilot, Loksound, Basic, Roco 10745 i
forskjellige varianter, og Bachmann 3-function.
Mine
viktigste argumenter for å lage et eget styringssystem, er:
(her er jeg litt på tynn is fordi jeg ikke har
sett mye på alternative løsninger) :
1. Da jeg begynte med dette for ca. 30
år siden fantes det ikke noe alternativ.
Den gangen så jeg litt på CMRI, men valgte å lage egne blokkkontrollere
med DC styring under MS-DOS. Dagens
versjon av styringen er laget i løpet av de siste 15 årene, men støtter
fremdeles scriptene som jeg laget for 30 år siden.
2. Ambisjonsnivået er relativt høyt. F.eks.
lag en tidtabell hvor lokaltoget starter fra utgangstasjonen hver time (mellom
06:00 og 23:00), og returner klar til innsats nesten to timer senere. (slik at
det er behov for minimum to togsett).
Det betyr at jeg ikke kan lage script for hvert enkelt tog, men lage
generelle script for å kjøre etter tidtabellen, og andre script som finner ut
hviket materiell som skal brukes i denne avgangen. Andre funksjoner, eller separate programmer er
f.eks. togekspeditør på en stasjon (må løse komfikter i forhold til sporbruk
ved forsinkelser/ekstratog), lokfører som kjører toget etter
signalene/rutetabellen, og signalstyring / linjeblokk. Alle programmene kommuniserer via TCP/IP,
slik at de kan kjøres på en eller flere PC’er.
Jeg kan også velge hvilken funksjon jeg selv vil utføre manuelt. (Neida jeg er ikke ”helt” ferdig med alt
enda).
3. Ønsker å automatisere
skiftebevegelser og samenstilling av godstog (Her er jeg avhengig av bedre
kontroll med lokegenskapene – ref. Egen programmerer)
f.eks. er en av de viktigste kundene et
aluminiumsverk (samme produksjonsnivå/produkter som Årdal Verk), som har behov
for levering av riktig mengde Aluminium oksid og Kull (for anodeproduksjon), og transportkapasitet
for ferdige aluminiumsprodukter. (20000 – 200000 Tonn pr. År avhengig av
årstall) og Anoder. (10 femtitals vogner
med last på 10 tonn hver, per dag – eller nyere vogner med 80 tons kapasitet på
2000 tallet)
4. Ønske om norske signalbilder og
stillverk. Ved å selv lage programvaren,
kan jeg få norske signalbilder uten avansert elektronikk, men overlate kompleksiteten
til programvaren.
|
Posted By: programmeringssporet
Date Posted: 04 juni 2014 at 09:53
Status Juni 2014 Dette handler om timing
Ultralydavstandsmåleren
er installert, og ser ut til å fungere greit i avstandsområdet 4 – 21 cm. Jeg kan derfor måle hvor langt lokomotivet
kjører etter en stop kommando.
Arduino
programmet er nå i tredje versjon. Den
første versjonen sjekket spordetektorene og rapporterte status. Opprinnelig hadde jeg tenkt å installere en
optokopler for vekselstrøm, slik at både positive og negative DCC pulser kunne
detekteres. Følsomheten viste seg å være
for dårlig på denne, slik at jeg byttet
til to andre som jeg hadde
liggende. TLP521-4, er en 4 dobbel optokopler som fungerte bedre, men den har
kun en diode pr. Kanal, slik at den kun detekterer den ene fasen av DCC
signalet. En les vil derfor fungere 50
prosent av gangene.
Neste
versjon av programmet gjorde derfor et hundre les for hver av de 8 kanalene,
slik at sjansen for at det blir detektert er over 99 prosent. Problemet som nå oppstod er at en les totalt
tar 450 millisekunder for 8 detektorer.
Den
tredje versjonen av programmet, har fått 20 konfigurasjonsvariable. Et av dem sier hvor mange ganger det skal
leses, før det konkluderes med at sporet er tomt. Ved å lese 9 ganger blir sansynligheten: 50 +
25 + 12,5 + 6,25 +3 ,12 + 1,56 + 0,78 +
0,39 + 0,19 = 99,8 prosent. I praksis
ser det ut til at sansynlighetene er over 90 prosent. Og der er godt nok, hvis jeg detekterer ofte
nok, slik at feildeteksjon kan korrigeres
fort nok.
Diagrammet
viser litt om dette. På toppen viser det
av en les fra Arduinoen tar mellom 25 og 76 millisekunder. Dagens versjon gjør tre les : Henter
spordeteksjonsstatus for alle 8 spor(Q01TA),
Henter distanse i cm for Ultralydmåleren (Q01U1) , og den tredje henter
desimal cm fra Ultralydmåleren (Q01CW).
Dette tar tilsammen 200 millisekunder, slik at jeg burde kunne lese 4 –
5 ganger i sekundet. Jeg har opså lagt
inn debugginginformasjon som forteller meg at hver enkelt les over I2C tar 460
mikrosekunder. Hvis jeg klarer å
redusere denne tiden til under 116 mikrosekunder, kan jeg synkronisere lesen
med DCC signalet for å oppnå sikker detektering. For øyeblikket kjører jeg I2C bussen med
100khz frekvens på kontrollsignalet.
Arduinoen støtter også 400khz, slik at det skal være mulig å å komme ned
mot 120 mikrosekunder. Tror også at det
er mulig å optimalisere ytterligere ved å erstatte AdafruitMCP23008 library,
med mere effektiv kode. Dette er
foreløpig ikke prioritert fordi det fungerer nogenlunde ok med dagens
implementasjon. Andre alternative
løsninger er å sette inn en kondensator etter opptokopler, eller bruke en mere avansert krets istedenfor
MCP23008, enten en Arduino eller en PIC prosessor. Etter at jeg har optimalisert I2C trafikken
(som i dag tar ca. 50 millisekunder) kan jeg gå løs på USB
optimasliseringen. I dag tar en les 25
millisekunder, ved å øke hastigheten fra 9600 Baud til 116000 Baud, vil nok
også denne tiden gå ned.
Programvaren
på Raspberryen er også forbedret ved at den måler tider og kan brukes til å
konfigurere Arduinoen. Her har jeg
oppdaget en eller annen feil som gjør at jeg kun klarer å lese status 1 gang pr
sekund, istedenfor 4 – 5 ganger i sekundet.
Så dette må jeg prioritere å finne ut av.
|
Posted By: programmeringssporet
Date Posted: 06 juni 2014 at 23:29
Lokomotiv Test 01
Dette er
en enkel test som kjører det testede lokomotivet forover i 20 sekunder, ut av
programmeringssporet på hastighetstep 4 med spedstepmode 14. Stopper lokomotivet, og kjører tilbake inn i
programmeringssporet og stopper når den innerste spordetektoren oppdager
lokomotivet. Ved å kjøre testen mange
ganger og sjekke avstanden med Ultralydmåleren for jeg ut statistikk over hvor
nøyaktig kontrollen er. Det har
etterhvert begynt å fungere, men stopposisjonen er ganske unøyaktig –
sansynligvis bl.a. fordi jeg kun leser ut sensorene en gang per sekund. Her er en liten tabell, over avstanden i
centimeter, Ultralydsensoren har målt for de siste testene:
149 Test001StopPosition 13
150 Test001StopPosition 3
151 Test001StopPosition 5
152 Test001StopPosition 18
153 Test001StopPosition 19
154 Test001StopPosition 18
155 Test001StopPosition 3
156 Test001StopPosition 15
157 Test001StopPosition 6
158 Test001StopPosition 12
Ikke
impoenerende presisjon her, men et greit utgangpunkt. For hver kjøring får jeg også ut en rapport om
hastigheter og responstider under testen.
Her er et eksempel fra den siste kjøringen :
KMHSensor002001
|
0,00
|
KMHSensor003001
|
46,35
|
KMHSensor003002
|
43,85
|
KMHSensor004001
|
58,88
|
KMHSensor004002
|
56,38
|
KMHSensor004003
|
0,00
|
KMHSensor006005
|
0,00
|
KMHSensor007005
|
30,90
|
KMHSensor007005
|
30,90
|
KMHSensor007006
|
29,23
|
KMHSensor008005
|
39,25
|
KMHSensor008006
|
37,58
|
KMHSensor008007
|
0,00
|
Test001StopPosition
|
12,00
|
Test001StopPosition
|
12,00
|
TestrunMessages
|
441,00
|
TestrunMessagesSec
|
8,48
|
TestrunSec
|
52,00
|
TestrunUltrasonic
|
59,00
|
TestrunUltrasonicSec
|
1,18
|
TimerSensor002001
|
0,00
|
TimerSensor003001
|
2,00
|
TimerSensor003002
|
2,00
|
TimerSensor004001
|
2,00
|
TimerSensor004002
|
2,00
|
TimerSensor004003
|
0,00
|
TimerSensor006005
|
0,00
|
TimerSensor007005
|
3,00
|
TimerSensor007005
|
3,00
|
TimerSensor007006
|
3,00
|
TimerSensor008005
|
3,00
|
TimerSensor008006
|
3,00
|
TimerSensor008007
|
0,00
|
UltraSpeed001[164854:6.0:19.0:13.0]
|
9,40
|
UltraSpeed002[164855:0.0:13.0:13.0]
|
0,00
|
Forklaringer
til tabellen :
TimerSensor002001 – Tidsforbruk fra
spordetektor 002 til 001. Her er en svakhet ved at den kun beregner
hele sekunder.
KMHSensor003001 – Hastighetsmåling fra
spordetektor 003 til 001. Unøyaktig
fordi den benytter TimerSensor (Uten
desimaler)
Test001StopPosition – Ultralydmålerens avstandsmåling
I hele cm.
UltraSpeed001[164854:6.0:19.0:13.0]
|
9,40
|
-
Hastighetsberegninger pr sekund fra 20 cm til stopp.
I Eksempelet over
o 164854 klokkeslett
o 6.0 – Centimeter, kjørt siste sekund.
o 19.0:13.0 – Hvor lokomotivet kjørte fra og til på
dette sekundet.
-
Vi ser derfor at
lokomotivet bråstoppet her. Og det stemmer lokomotivet ble kjørt i skiftemodus.
TestrunSec – Hele testen tok 52 sekunder.
TestRunMessages – 441 meldinger gjennom systemet i løpet av testen.
TestrunMessagesSec -8,48
meldinger pr. Sekund
TestRunUltra – 59 avstandsmålinger
i løpet av testen.
TestrunUltraSec – 1,18 avstandsmålinger
pr. Sekund – Derfor er unøyaktigheten i alle målinger på nesten et sekund. - Så
her er det bare å jobbe videre med å få opp frekvensen.
|
Posted By: programmeringssporet
Date Posted: 23 juni 2014 at 22:46
En programfeil er fikset, slik at jeg nå får 4
målinger pr. Sekund, og da blir noyaktigheten bedre Stopposisisjonen blir 21 – 22 cm. Neste forbedring blir å også se på
milimeteravstander her.
258 Test001StopPosition 22
259 Test001StopPosition 21
260 Test001StopPosition 21
261 Test001StopPosition 22
Har også
forbedret analyseprogrammet til å regne med microsekunder, slik at tidene blir
mere nøyaktig.
Her er
rapporten for kjøring nr 260:
Vi ser av
TestrunUltrasonicSec at vi leser ut detektor og avstander nesten 4 ganger i
sekundet. Vi ser også av TestrunMessagesSec
at det går nesten 30 meldinger pr. Sekund (mot tidligere 8). Noen nye måleparametre er kommet til :
TestrunBackendResponseMax 97 millisekunder – Lengste responstiden fra kortet .
TestrunSocketResponseMax 261 millisekunder – Lengste responstid
for TCP/IP pakker – her må det gjøres forbedringer
TestrunDccMessages 7
– Meldinger sendt til Roco sentralen / Lenz interfacet
TestrunDccMessagesError 0 -
Error Status fra Roco sentralen / Lenz interfacet
TestrunDccMessagesOk 7
– OK status fra Roco sentralen / Lenz interfacet
Av en
eller annen grunn har jeg ”mistet” et måleparameter :
UltraSpeed001
– må finne ut hva som har hendt med denne.
Andre forbedringspotensiale er hastighetsmålingen mellom blokkene – og hvorfor
får jegnegativ hastighet – tror årsaken kan være en feilkopling av blokkene.
KMHSensor002001 -22.13280922200384
KMHSensor003001 18.58940065368651
KMHSensor003002 16.820897225768025
KMHSensor004001 29.39840015737303
KMHSensor004002 26.641563788341905
KMHSensor004003 16.413954481672526
KMHSensor006005 -682.5388177608281
KMHSensor007005 16.965907762041148
KMHSensor007006 16.027296992780073
KMHSensor008005 17.749610682756636
KMHSensor008006 16.975522859413246
KMHSensor008007 21.4086326620066
Test001StopPosition 21
TestrunBackendResponseMax 97
TestrunDccMessages 7
TestrunDccMessagesError 0
TestrunDccMessagesOk 7
TestrunMessages 928
TestrunMessagesSec 27.47894588631593
TestrunSec 33.77131
TestrunSecOld 34
TestrunSocketResponseMax 261
TestrunUltrasonic 131
TestrunUltrasonicSec 3.906173358120538
TimerSensor002001 -0.226415
TimerSensor003001 4.9871
TimerSensor003002 5.213515
TimerSensor004001 4.005769
TimerSensor004002 4.232184
TimerSensor004003 1.526506
TimerSensor006005 -0.007342
TimerSensor007005 5.464323
TimerSensor007006 5.471665
TimerSensor008005 6.634692
TimerSensor008006 6.642034
TimerSensor008007 1.170369
|
Posted By: programmeringssporet
Date Posted: 06 august 2014 at 00:41
Raspberry
Pi og JMRI
Oppstart
etter sommerferie, begynte med korrupt SD brikke på en av Raspberry’ene. Dette er den tredje SD brikken som er ødelagt
i løpet av et år hos meg (fordelt på 5 Raspberry Pi). Backup er ikke så dumt, alternativt, som jeg
gjør er å ikke lagre viktig informasjon på SD brikken, og ha automatiserte
rutiner for å reinstallere. Jeg har
derfor forbedret den automatiske installasjonsprosedyren for JMRI, og samtidig
oppgradert til siste versjon av JMRI, 3.8.
Denne har jeg lagt inn i min automatiske installasjonsprosedyre. Hvis noen vil prøve er kommandoene :
wget programmingtrack.no-ip.org/setup010308.sh . ./setup010308.sh
Resten er
som før – se blogg 6 Januar 2014
Programmmeringssporet
For å få
mere nøyaktige malinger, startet jeg feilsøking I grensesnittet mot Roco
sentralen. Etterhvert fant jeg så mange
programmeringsfeil (som jeg selv har laget for 8 år siden), at jeg konkluderte
med at det var på tide å programmere dette på nytt. Har nå ferdig en prototype som fungerer mye
bedre, men foreløpig kun støtter 14 Step, lokomotivkontroll. Rapporten fra den siste testen viser at
maksimal responstid for TCP/IP meldinger nå er nede i omtrent 0,1 sekund. Alle målinger blir derfor mye mere
nøyaktig. Det kan man bl.a se på
hastighetsmålingene. Here er rapporten
for kjøring nr 388.
KMHSensor002001
|
19.24
|
KMHSensor003001
|
34.58
|
KMHSensor003002
|
36.23
|
KMHSensor004001
|
34.52
|
KMHSensor004002
|
35.78
|
KMHSensor004003
|
34.29
|
KMHSensor006005
|
18.22
|
KMHSensor007005
|
34.27
|
KMHSensor007006
|
36.09
|
KMHSensor008005
|
31.80
|
KMHSensor008006
|
32.89
|
KMHSensor008007
|
25.09
|
Test001StopPosition
|
7.00
|
Test001StopPosition
|
7.00
|
TestrunBackendResponseMax
|
90.00
|
TestrunDccMessages
|
7.00
|
TestrunDccMessagesError
|
0.00
|
TestrunDccMessagesOk
|
0.00
|
TestrunMessages
|
789.00
|
TestrunMessagesSec
|
27.84
|
TestrunSec
|
28.34
|
TestrunSecOld
|
29.00
|
TestrunSocketResponseMax
|
119.00
|
TestrunUltrasonic
|
117.00
|
TestrunUltrasonicSec
|
4.18
|
TimerSensor002001
|
0.26
|
TimerSensor003001
|
2.68
|
TimerSensor003002
|
2.42
|
TimerSensor004001
|
3.41
|
TimerSensor004002
|
3.15
|
TimerSensor004003
|
0.73
|
TimerSensor006005
|
0.28
|
TimerSensor007005
|
2.71
|
TimerSensor007006
|
2.43
|
TimerSensor008005
|
3.70
|
TimerSensor008006
|
3.43
|
TimerSensor008007
|
1.00
|
UltraSpeed001[141950,32:1.0:19.0:20.0]
|
-13.04
|
UltraSpeed002[141950,79:0.0:19.0:19.0]
|
0.00
|
|
Posted By: Dag Cato
Date Posted: 06 august 2014 at 09:51
Hei, lurer på hvordan du stenger ned RPien din? Kutter du bare strømmen eller tar du en kontrollert avslutning? Det er mye skriverier på nett om ødelagte minnekort ved ukontrollert avslutning.
------------- MVH
DC
Steinsnes? Hvilken Steinsnes?
|
Posted By: einjen
Date Posted: 06 august 2014 at 10:58
hvilken linux-variant har du brukt når du installerer JMRI på Rasberryen?
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: einjen
Date Posted: 06 august 2014 at 16:07
Tenkte jeg skulle forsøke setup-skriptet ditt, men får ikke til å koble til serveren/DNS du har angitt.
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: Dag Cato
Date Posted: 06 august 2014 at 19:50
Raspbian
------------- MVH
DC
Steinsnes? Hvilken Steinsnes?
|
Posted By: programmeringssporet
Date Posted: 07 august 2014 at 00:11
Hei Einar og Dag Cato,
Jeg
kjører Raspian (2014-06-20-wheezy-raspbian.zip) fordi den er den eneste som
støtter Hardfloat i Java. Før denne
støtten kom, var ytelsen enda dårligere.
Forrige
gang SD kortet ble korrupt startet det med at ”sudo shutdown” ikke fungerte, slik at jeg måtte ta strømmen,
men jeg tror at SD kortet allerede var korrupt, og årsaken til at shutdown, og
mange andre kommandoer ikke fungerte.
Generelt
er det ikke å anbefale å ta strømmen på en Raspberry uten å stoppe den
først. Dette er nok årsaken til mange
korrupte SD kort, men jeg har også opplevd at jeg etter å ha gjenbrukt et
tidligere korrupt SD kort, fikk en ny crash etter kort tid - dette skyldes trolig at kortet var
utslitt. For å unngå å miste data ved
crash, benytter jeg en USB minnepinne
for lagring av data. Eksempel :
mkdir
/mnt/sda0
mount
/dev/sda0 /mnt/sda0
cd
/mnt/sda0
For å
frigjøre
umount /mnt/sda0
Har enda
ikke opplevt korrupt minnepinne, etter å
ha kjørt en applikasjon på Raspberry i snart to år som logger en ny fil hvert 15. sekund. (Ikke MJ
relatert) – men har brukt opp to SD kort på denne maskinen.
Har også
planer om å teste ut med en USB SSD disk for å kjøre mySql.
....
” Tenkte
jeg skulle forsøke setup-skriptet ditt, men får ikke til å koble til serveren/DNS
du har angitt.”
Hvis du
får opp bildene i bloggen skal du også få tak i installasjonsscriptet. Er det på arbeidsstasjonen din, eller på
Raspberry du ikke får tilgang ?
Hvis det
kun er på Raspberryen, har du kanske vært inne å endret nettverksoppsettet til
statisk IP ? og ikke fått DNS riktig ?
Det jeg har valgt å gjøre, er å kjøre Raspberryen med dynamisk IP
(default), og etter installasjon, gå inn i Router boksen, og reservere IP
adresse for Raspberryen. Fordelen med
dette er at ved en nyinstallasjon får Raspberryen samme ip adresse.
Vedlagt
begge scriptene – hvis du fortsatt ikke får tilgang.
http://programmingtrack.no-ip.org/setup010308.sh" rel="nofollow - exec > >(tee logfile.txt)
sudo apt-get update
sync
sync
sudo apt-get install librxtx-java
sudo apt-get install tightvncserver
sync
sync
wget programmingtrack.no-ip.org/JMRI.3.8-r26527.tgz
wget programmingtrack.no-ip.org/startVNC.sh
sync
sync
tar -zxvvf JMRI.3.8-r26527.tgz
sync
sync
#tightvncserver
sync
sync
vncserver :0
-geometry 1920x1680 -depth 24 -dpi 96
http://programmingtrack.no-ip.org/startVNC.sh" rel="nofollow - http://programmingtrack.no-ip.org/startVNC.sh
# sudo apt-get install tightvncserver
#tightvncserver
vncserver :0
-geometry 1920x1080 -depth 24 -dpi 96
|
Posted By: einjen
Date Posted: 07 august 2014 at 09:42
Hei. Får ikke tak i skriptet hverken fra hjemme eller jobb. Ikke nettsiden heller.
Einar
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: programmeringssporet
Date Posted: 05 september 2014 at 22:22
Avsporinger
På tur i Europa i sommer, fant jeg ut at tilbudet til Roco på startsett med hvit z21 var for godt til å ikke slå til. Slik ser det ut under bordet nå :
Jeg er fortsatt ikke helt fornøyd med presisjonen på stopp. Jeg vil derfor finne ut hva som skjer, ved å lage en dekoder hvor jeg kan få tilbakemelding når en kommand er mottatt av dekoder på skinnene. Har derfor laget et eksperimentkort og montert dette på en godsvogn - mere om dette kommer senere.
For de av dere som ikke har klart å laste ned oppsettet mitt: Dette skylder en feil hos ISP, som nå er rettet (Beklager at det tok tid - Server står geografisk ganske langt fra der jeg normalt er)
|
Posted By: programmeringssporet
Date Posted: 06 september 2014 at 21:02
Hvordan
gjøre enkle ting vanskelig.
Første
forsøket med z21 gikk ikke veldig bra.
Jeg pakket opp startsettet, koplet opp z21 boksen og ruteren som fulgte
med. For å oppgradere firmware til siste
versjon lastet jeg også ned siste versjon av z21 Maintenance tool på PC’en. For å oppgradere måtte jeg også kople den
medfølgende ruteren til nettet mitt. Koplet
til strømmen på begge enhetene og forsøkte å få kontakt fra PC’en. Og det fungerte selvfølgelig ikke. Adressen til z21 skal være 192.168.0.111, men
den svarte ikke engang på ping. Dagen
etter gjorde jeg et nytt forsøk. Jeg
hadde nå en mistanke om at noen hadde pakket opp settet før jeg kjøpte det, og
endret adressene, både på router og z21 boksen fordi de kjørte med feil
oppsett. Istedenfor 192.168.0.x nett,
var router satt opp med LAN range på 192.168.1.x nett. Hadde ikke lyst til å forsøke å endre router
oppsettet, men etter en stund gikk det et lite lys opp for meg : 192.168.0.x nettet var jo den samme adressa
rangen jeg benytter på nettet mitt. Tok
derfor bort den medfølge routeren og koplet z21 boksen rett i den andre
routeren, og da fungerete alt. Så anbefalt fremgangsmåte for å sette opp z21
boksen, bør derfor være :
- Kople opp z21 og medfølgende router uten å
kople routeren til hjemmenettverket.
- kople opp PC mot router og forsøke
å pinge 192.168.0.11.
- hvis hjemmenettverk ikke kjører på
192.168.0.x adresser kan den medfølgende router koples til hjemmenettet. Hvis hjemmenettet kjører på 192.168.0.x,
sjekk om det er noen devicer som har adressen 192.168.0.111, hvis ikke er det bare å kople z21 rett inn i
hjemmerouteren, men pass på at dhcp range ikke overlapper med 192.168.0.111
Mitt
router oppsett er :
Router Ip
address 192.168.0.1
Ip Subnet
mask 255.255.255.0
DHCP
192.168.0.200 – 192.168.0.253
Status på
z21 boksen min nå er at den er opp i nettverket – men ikke koplet til
anlegget. Har testet ut å kjøre lok med
iPad (uten at noe fysisk lok kjører) og det fungerer. JMRI har foreløpig ikkeordentlig støtte for z21,
men det er på vei i de siste utviklingsversjonene. Protokollen som benyttes mot z21 er basert på
å pakke inn det gamle Lenz serieport grenssnittet inn i http://en.wikipedia.org/wiki/User_Datagram_Protocol" rel="nofollow - UDP pakker. Jeg har laget et lite testprogram som kopler
seg opp, og gjør enkle kommandoer som ”Track Power on/off” etc.
Utfordringen
min nå er at jeg har tre potensielle DCC sentraler, og jeg må bestemme med for
hvilke jeg vil benytte for kjøring og programmering : Roco LokMaus II/Multimaus, z21 eller MERG ?
Her er
oppsettet mitt som det er i dag :
|
Posted By: programmeringssporet
Date Posted: 10 oktober 2014 at 01:51
Arkitekturvalg
Jeg har
nå tre forskjellige Digital Sentraler :
- Roco Lokmaus II/Multimaus
- Roco Z21
- Merg CBUS-DCC ( http://www.merg.org.uk/merg_resources/cbus-dcc.php" rel="nofollow - http://www.merg.org.uk/merg_resources/cbus-dcc.php
)
Hvem av
dem jeg skal bruke er ikke et strategisk valg, men noe jeg kan endre på når jeg
måtte ønske. Det som er viktigere, er å bestemme meg for om jeg ønsker å benytte DCC
som styringssystem, og på hvilke områder jeg vil gjøre det. Det er helt klart at analog likestrøm (og
vekselstrøm) ikke er aktuelt, men det er greit å ha mulighet til prøvekjøring
av analoge lok på deler av anlegget. Det
som er mere spennene er å se på alternative måter å styre lokomotivene på. Det mest interessante er hvis man kan få dem autonome (selvstyrende). Google har laget autonome biler som er ute å
kjører på veiene allerede, og det eksperimenteres med autonome seilbåter som skal
seile over atlanteren ( http://www.microtransat.org/tracking.php" rel="nofollow - )
Det å få
et tog på en modeljernbane til å være autonomt, er en mye enklere oppgave. Den eneste utfordringen er plassen inne i et
H0 lokomotiv. Jeg har derfor vurdert å
kjøpe et G-Skala startset, og montere en Raspberry Pi inn i lokomotivet. Andre alternative platformer, er også litt
for store for H0:
Arduino og Arduino board-kompatible :
- Arduino UNO - 75 x 53 x 15 mm
- Arduino Yún - 68.6 mm × 53.3 mm
- ChipKit
uno32 - 75 x 53 ?
- FRDM-K64F - 75 x 53 ?
Alternativt ikke compatible kort:
Bortsett
fra fysisk størrelse er det også forskjellige prosessorer og programvare på de
forskjellige kontrollerene. En standard
Arduino er lite aktuell fordi den har liten kapasitet, men det som gjør den
interessant er miniversjonene av denne, men da er prosessoren loddet fast. . Yun, har to prosessorer, en som kjører
Arduino og en prosessor som kjører Linux, så den er interessant, men har to
ulemper : høy pris og ikke mulig å bytte brikker – fordi de er loddet fast.
De andre
kortene har høyere ytelse og er basert på ARM prossessorer (ARM prosessorer
sitter i stort sett alt av moderne mobiltelefoner og nettbrett - både Apple iOS
og Android. Raspberry Pi har også ARM) Det er kun Chipkit som har ARM prosessoren i
en standard 28 Pin DIP utførelse - slik at den kan taes ut og plugges inn i et egenutviklet kort, og de har en miniversjon: Fubarino® Mini 5.1
cm x 1.9 cm, men her er også prosessoren loddet fast. STM32F4 og Freescale FRDM-K64F, er andre
spennende ARM løsninger, men også her er det fastloddede prosessorer og litt
for store kort, men prisen er lav, ca kr 200.-.
FRDM-K64F er også veldig
spennende fordi den er referanseimplementasjon av ARM’s IoT(Internet of Things)
mbed plattform ( https://mbed.org/" rel="nofollow - https://mbed.org/ ).
Jeg tror
jeg bestiller en FRDM-K64F for testing.
Det er nok litt for tidlig å plassere styreprosessoren i H0 lok, så
foreløpig fortsetter jeg med å bygge det som et autonomt lok, men med styreprosessoren
som en ekstern Raspberry PI. Senere kan
jeg vurdere Raspberry Pi Compute Module – når denne kommer ned i en akseptabel
pris.
Spørsmålet
blir da kommunikasjonen til Loket. Her
er DCC nesten det opplagte valget, men jeg har misstanke om at jeg har
utfordringer med responstider / forsinkelser. Om dette skyldes støy p.g.a.
dårlig kabling eller kontaktproblemer må jeg finne ut av.
Det er interessant at Marklin har valgt infrarødt
for ”myworld”, men enda mere interessant at ROCO har valgt wifi for Roco Next
Generation ( http://www.roco.cc/en/specials/next/index.html" rel="nofollow - http://www.roco.cc/en/specials/next/index.html
) . Her ser det ut som om systemet er
basert på at lesebrettet kommuniserer direkte med lokomotivet via wifi uten å
ha noe elektronikk (DCC sentral) imellom, og det blir tilgjengelig til jul i år
? – noen som vet ?. Det er ganske tydelig at det er en begynnende trend
bort fra DCC til mere generelle industristandarder (IoT) – selv om jeg, og dere andre neppe kommer til
å bytte ut alle DCC dekoderene vi har i dag.
|
Posted By: programmeringssporet
Date Posted: 10 oktober 2014 at 22:53
Bluetooth Og her er lenker til info om Bluetooth Smart styring - bl.a. fra Bachmann :
http://bluerailtrains.com/intro.cfm" rel="nofollow - http://bluerailtrains.com/intro.cfm
http://resources.bachmanntrains.com/ihobby2014/html5/index.html?page=1" rel="nofollow - http://resources.bachmanntrains.com/ihobby2014/html5/index.html?page=1
http://www.bluetooth.com/Pages/Bluetooth-Smart-Devices-List.aspx" rel="nofollow - http://www.bluetooth.com/Pages/Bluetooth-Smart-Devices-List.aspx
|
Posted By: bkv1
Date Posted: 12 oktober 2014 at 11:10
Dag Cato wrote:
Hei, lurer på hvordan du stenger ned RPien din? Kutter du bare strømmen eller tar du en kontrollert avslutning? Det er mye skriverier på nett om ødelagte minnekort ved ukontrollert avslutning.
|
Hei.Det med å slå av Rpi riktig, har jeg syntes var tungvint når den ikke er koblet til skjerm/tastatur. Da måtte jeg ha med lap-topen min. Nylig lastet jeg imdlertid ned JuiceSSH til min Android telefon. Med den kan jeg lett logge meg på Rpi og kjøre shutdown -h now. Hvis man betaler noen kroner kan man vistnok også lage scripts som gjør påloggingen og nedstengningen i en enkelt operasjon, men dette har jeg ikke prøvd ennå. -Bjørn
------------- Hilsen Bjørn
N-skala, Peco 55, Digikeijs DR5000, JMRI. Tysk diesel nyere tid
|
Posted By: bkv1
Date Posted: 12 oktober 2014 at 20:50
Takk for scriptene. Det var lett å installere JMRI og vnc på Rpi. Nå har jeg satt opp JMRI til å kjøre "faceless" og jeg får forbindelsen med appen Engine Driver på min androidtelefon. Det går fint å kjøre tog med telefonen, men den er for liten til å kontrollere sporvekslene med ved hjelp av de grafiske panelene. Dertil må det nok anskaffes et nettbrett. Har noen her erfaring med bruken av Engine Driver og JMRI paneler? Hvilken størrelse bør nettbrettet ha? Vil et av de billigste merkene gjøre jobben?
-Bjørn
------------- Hilsen Bjørn
N-skala, Peco 55, Digikeijs DR5000, JMRI. Tysk diesel nyere tid
|
Posted By: einjen
Date Posted: 13 oktober 2014 at 17:11
Internet of things vil nok innta MJ også, ja. Kult. Det betyr at snart kan vi få togene våre hacket.
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: programmeringssporet
Date Posted: 13 oktober 2014 at 17:28
Marklin Pensemotor
74490 / 74491 – Den endelige løsningen.
Marklin pensemotor problemer er blitt
diskutert både her og andre steder de siste årene. Min forståelse av problemet er at Marklin har
montert en endebryter som er laget for opp til 0.5 Ampere i en veksel som
bruker omtrent 1.5 Ampere. Derfor blir
bryteren brent opp. Den eneste varige
løsningen på dette problemet er å kople ut bryteren. Jeg gjør det på følgende måte :
Åpne motoren
ved å bøye opp taggene :
Ta ut
innholdet.
Lodde
over begge de to sorte bryterene.
Sette den
sammen igjen – og bøye over taggene.
Da har vi
en motor som fungerer – men uten beskytelse for overbelastning. Det hadde jeg igrunnen også før
modifiseringen. Den siste gangen jeg
brant opp en motor var årsaken at det stod et lokomotiv på vekselen, slik at
den ikke la over, og til slutt brant opp.
For å unngå at pulsene blir for lange, har jeg lagt inn et hallelement
som måler strømforbruket.
https://www.sparkfun.com/datasheets/BreakoutBoards/0712.pdf" rel="nofollow - https://www.sparkfun.com/datasheets/BreakoutBoards/0712.pdf
https://www.sparkfun.com/products/8883" rel="nofollow - https://www.sparkfun.com/products/8883
En arduino er
koplet til denne. Arduinoen styrer et
relee som må være inne for å gi strøm til sporskiftemotorene og dekoder. Kontinuerlig innkopling eller mange pulser
over en kort periode, kopler ut releet, tenner en rød LED og sender en melding
til PC styringen, som forsøker å rette opp feilen, eller stopper alle togene om
nødvendig.
|
Posted By: programmeringssporet
Date Posted: 14 oktober 2014 at 15:50
Hei,
Hvordan starter du JMRI faceless på Raspberry ?
Jeg har kun brukt JMRI til CV programmering, men er også interessert i hvordan PanelPro fungerer. Er det mulig å eksportere "panelene" ? Da kan jeg evt. prøve dine på iPhone, iPad 1,2 , iPad mini og Galaxy Tab 10.2. Tror kanskje utfordringen med de rimeligste Android brettene, er ufølsom skjerm ?
m.v.h.
"Programmeringssporet"
|
Posted By: programmeringssporet
Date Posted: 14 oktober 2014 at 15:55
einjen wrote:
Internet of things vil nok innta MJ også, ja. Kult. Det betyr at snart kan vi få togene våre hacket. |
Ja,
En av de tingene jeg er usikker på er hva jeg skal tillate når jeg kommer utenifra. Det er ok å starte opp noen Raspberry's og DCC sentraler, men tror ikke jeg vil lage funksjonalitet for å sette på kjørestrøm og styre sporveksler når jeg ikke er innenfor brannmuren.
Foreløpig har jeg løst dette ved at jeg har to webservere, en innenfor med full funksjonalitet, og en i DMZ som det blir kopiert informasjon til, men som ikke kan styre, og som kun inneholder f.eks. de lokomotivdefinisjonene som jeg syntes det er ok å publisere. Det er vel ingen god ide å legge hele MJ samlingen fritt tilgjengelig på nett ?
|
Posted By: bkv1
Date Posted: 15 oktober 2014 at 20:00
programmeringssporet wrote:
Hei,
Hvordan starter du JMRI faceless på Raspberry ?
Jeg har kun brukt JMRI til CV programmering, men er også interessert i hvordan PanelPro fungerer. Er det mulig å eksportere "panelene" ? Da kan jeg evt. prøve dine på iPhone, iPad 1,2 , iPad mini og Galaxy Tab 10.2. Tror kanskje utfordringen med de rimeligste Android brettene, er ufølsom skjerm ?
m.v.h.
"Programmeringssporet"
|
Hei
JMRI startes facelss ved å kjøre programmet JmriFaceless som ligger sammen med DecoderPro og de andre, men først må du lage en konfigurasjon. Det kan du gjøre med DecoderPro. Du må sette programmet opp til å kjøre igang web-server og WiiThrottle ved oppstart, og til å åpne panelfilen. I tillegg må du selvsagt sette opp forbindelsen til MJ-anlegget under connections.
Decoderpro lager en konfigrasjoinsfil som heter DecoderProConfig2.properties. Den må du kopiere til JmriFacelessConfig3.properites.
Når JmriFacess er startet opp får du tilgang til kjørekontroll og paneler fra apper på android og ios eller fra JMRIs webserver på pi-en som du får forbindelse med på port 12080 . Det skal visst være mulig å bruke DecoderPro/PanelPro som klienter også, men det har jeg ikke fått til.
20.10.2014: Rettelse: Du får ikke tilgang til panelene når du kjører faceless
------------- Hilsen Bjørn
N-skala, Peco 55, Digikeijs DR5000, JMRI. Tysk diesel nyere tid
|
Posted By: einjen
Date Posted: 17 oktober 2014 at 10:54
Intel Edison er en ny og interessant utviklingsplatform som sikkert kan finne sitt bruksområde i MJ-verdenen: https://www.sparkfun.com/news/1589" rel="nofollow - https://www.sparkfun.com/news/1589
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: programmeringssporet
Date Posted: 29 oktober 2014 at 15:58
bkv1 wrote:
Dag Cato wrote:
Hei, lurer på hvordan du stenger ned RPien din? Kutter du bare strømmen eller tar du en kontrollert avslutning? Det er mye skriverier på nett om ødelagte minnekort ved ukontrollert avslutning.
|
Det med å slå av Rpi riktig, har jeg syntes var tungvint når den ikke er koblet til skjerm/tastatur. Da måtte jeg ha med lap-topen min. Nylig lastet jeg imdlertid ned JuiceSSH til min Android telefon. Med den kan jeg lett logge meg på Rpi og kjøre shutdown -h now. Hvis man betaler noen kroner kan man vistnok også lage scripts som gjør påloggingen og nedstengningen i en enkelt operasjon, men dette har jeg ikke prøvd ennå. |
Hei,
Hei.
Takk for info om å kjøre headless.
Jeg har et lite program som kjører kontinuerlig på Raspberry, og venter på beskjed om å kjøre poweroff via tcp/ip (socket) - må bare lage en Android klient til den først, eller kanskje bare lage en liten web-server ?. Mere om dette kommer nok.
En alternativ løsning er å kople en trykkbryter til GPIO
|
Posted By: programmeringssporet
Date Posted: 29 oktober 2014 at 16:04
einjen wrote:
Intel Edison er en ny og interessant utviklingsplatform som sikkert kan finne sitt bruksområde i MJ-verdenen: https://www.sparkfun.com/news/1589" rel="nofollow - https://www.sparkfun.com/news/1589 |
Hei,
Ja de var kule, og de er det plass til inne i et H0 lok. Skal se om jeg skal bestille noen, men har ikke funnet noen som har på lager til en ok pris (med tillegskort). Jeg har litt mere lyst til å test ut MBED platformen. (Edison er vel bare en tradisjonell Atom CPU på et minikort ? - et itx kort koster omtrent det samme ?) Det ligger to FRDM-K64F og venter på med i Strømstad
|
Posted By: programmeringssporet
Date Posted: 29 oktober 2014 at 16:41
Dekoder
Her går det fremover :
Hensikten med denne er å teste ut selvbygde enkle funksjonsdekodere for vogner og å gjøre analyser av DCC signalet. Kortet er baser på denne dekoderen :
http://usuaris.tinet.cat/fmco/home_en.htm
Endringene jeg har gjort er at jeg ikke har installert D5, fordi jeg ikke forstod hva den skulle gjøre. Senere har jeg forstått at denne er der for å gjøre det mulig å legge til en kondensator i strømforsyningen til prosessoren, men den er altså ikke nødvendig.
IC4 har jeg ikke installert enda fordi jeg kun har behov for LED utganger. IC2 har jeg satt opp med en 20-pins sokkel istedenfor 8-Pin. JEg får derfor mye mere fleksibilitet i valg av prosessor.
For å teste denne kretsen koplet jeg opp 4 led. og satt inn en bryter for å teste at strømforsyningsdelen fungerte både med likestrøm og DCC signal.
Neste skritt var å laste inn et JAL ( http://www.justanotherlanguage.org/" rel="nofollow - Just Another Language ) program ble programmert inn i prosessoren, og LED'en blinket:
include 12f629 -- target PICmicro -- This program uses the intern oscillator at 4 MHz pragma target clock 4_000_000 -- oscillator frequency -- configuration memory settings (fuses) pragma target OSC INTOSC_NOCLKOUT -- Internal oscillator pragma target WDT disabled -- no watchdog pragma target MCLR internal -- make MCLR pin available I/O -- enable_digital_io() -- disable analog I/O (if any) alias led is pin_A0 pin_A0_direction = output forever loop led = on _usec_delay(250000) led = off _usec_delay(250000) end loop
Tilsvarende testet jeg med Microchip PIC 16f690 (20 pins prosessor)
include 16f690 -- target PICmicro -- This program uses the internal oscillator at 8 MHz pragma target clock 8_000_000 -- oscillator frequency -- configuration memory settings (fuses) pragma target OSC INTOSC_NOCLKOUT -- internal oscillator pragma target WDT disabled -- no watchdog pragma target MCLR external -- reset externally enable_digital_io() -- make all pins digital I/O OSCCON_IRCF = 0b111 -- set internal oscillator for 8 MHz alias led is pin_A0 pin_A0_direction = output forever loop led = on _usec_delay(250_000) led = off _usec_delay(250_000) end loop
Neste skritt var å laste inn DCC dekoderprogramvaren i prosessoren, og teste dette. Jeg ble litt overasket da LED'ene tente etter at jeg hadde satt Lokmausen til adresse 3 og endret til 28 speedstep og trykket på knappen til frontlys. Ved å endre retningen på loket slukket LED1 og LED2 ble tent. Det fungerte akkurat som det skulle.
Jeg har også laget et lite kort med to 6n137 optokoplere :
http://www.mynabay.com/dcc-monitor/16-arduino-dcc-monitor-2" rel="nofollow - http://www.mynabay.com/dcc-monitor/16-arduino-dcc-monitor-2
Hensikten er å kople utgangene fra dekoderen til en Arduino som gir feedback til PC styringen via USB, slik at jeg kan måle responstider i DCC systemet.
|
Posted By: programmeringssporet
Date Posted: 17 november 2014 at 15:22
Er det mulig ?
Jeg har hatt en mistanke om at problemene med dårlig respons på hastighetsendringer, har skyltes kvaliteten på DCC signalet på sporet. Dette rene signalet kommer ut av ROCO DCC sentralen min :
Det ser ut som om signalet på skinnene er slik :
Hvis dette er riktig, må jeg si at jeg er imponert av at dekoderene er istand til å forstå dette i det hele tatt. Det er ihvertfall sikkert at jeg må forske mere på årsaker, og hva jeg kan gjøre for å hindre dette.
Årsaken er sansynligvis likeretterbroene som jeg benytter for å få et spenningsfall i spordeteksjonskretsen. Jeg har googlet litt, og det ser ut som om det er viktig å benytte raskere dioder på DCC signaler
|
Posted By: programmeringssporet
Date Posted: 18 desember 2014 at 00:18
En liten oppdatering
Det forvrengte DCC signalet i forrige post, skyltes feil på en diodebro. Da denne ble rettet ble signalet bra igjen. Konklusjon : Jeg må fullføre målevognen, slik at jeg kan sjekke DCC signalet overalt på anlegget.
Jeg har kommet videre med programvaren. Web Serveren er laget på nytt fra bunnen av, for å få ned resursforbruket. Den siste versjonen, viser den samme infoen som den gamle (Lokomotiver, dekodere og CV verdier). Den eneste forskjellen er at den nye bruker mindre resurser på server, og den viser realtime data.
Jeg har også laget en "light" versjon av denne, som jeg bruker til å slå av Raspberry'ene mine. Hvis noen vil prøve den, er fremgangsmåten, (anbefaler backup før du starter) :
1. logg inn på raspberryen med brukernavnet pi, og vær sikker på at du står i /home/pi 2. Last ned med kommandoen > wget programmingtrack.no-ip.org/setupController.sh 3. kjør innstallasjonsskriptet > . ./setupController.sh 4. kjør sudo reboot, etter at installasjonen er ferdig.
Hvis alt har gått bra, skal du nå kunne kontrollere Raspberry'en fra en web browser på port 8000, eks:
Knappen Poweroff, stopper Raspberryen, reboot, omstarter Paspberryen og stop, stopper kun webserver. Etter at du har valgt poweroff eller reboot får du opp dette bildet :
Home knappen virker ikke før Raspberryen er omstartet
|
Posted By: programmeringssporet
Date Posted: 28 januar 2015 at 01:06
Elektrifisering av programmeringssporet
Etter litt sparkling rundt programmeringssporet, ser det nå ut som om jeg er kvitt reflekser ved ultralydavstandsmålingene. Neste utfordring er å montere kjøreledning uten at dette påvirker ultralydmålingen.
Det ser ut som om at NMJ ikke kommer med topline EL14 i år. Jeg må derfor gå løs på Limaene mine. Først må et understell tilpasses. Jeg kommertilbake med mere info, når jeg får prøvekjørt det :
|
Posted By: programmeringssporet
Date Posted: 02 februar 2015 at 21:18
Stor
nyhet i dag er Raspberry Pi 2 B :
http://www.raspberrypi.org/raspberry-pi-2-on-sale/" rel="nofollow - Viktigste
nyhet er mere RAM (1GB) og ny 4 kjerners CPU, med mellom 1.5 og 6 ganger bedre
ytelse, avhengig av applikasjon. Da bør
det la seg gjøre å kjøre JMRI med ok ytelse ?
Jeg har bestilt et par stykker for å
se hvordan de fungerer (prisen er den samme som før (USD 35). Det er allerede produsert 100000 eksemplarer,
så ventetiden blir kanskje ganske kort.
Hovedbryter.
Programmeringssporet
er på en modul som har ganske kompleks strømopplegg. I dag er det flere strømforsyninger fra Roco
og TRIX, en 8 volts strømforsyning til Ethernet Router og to micousb
strømforsyninger for Raspberry Pi. I
hvilemodus er kun Raspberryene og Router tilkoplet strøm. Kun disse enhetene har et strømforbruk på
omtrent 40 Watt. Mye av dette ligger nok
i de tre 200V adapterene.
For å
redusere kabelsalaten, og strømforbruket, har jeg satt meg et mål om at det kun
skal gå to kabler inn til modulen : En
ethernet kabel og en 220 Volt tilkopling.
Ut av modulen, skal det kun gå DCC signal til neste modul (Fremo). Jeg ønsker ikke å ha eget WI-FI nett i
modulen.
Ved hjelp
av ”Power over Ethernet” (PoE) kan jeg få en ganske god løsning: På modulen går Ethernet inntaket rett inn i
en Linksys PoE Splitter
( http://www.tp-link.com/en/products/details/?model=TL-POE10R" rel="nofollow - http://www.tp-link.com/en/products/details/?model=TL-POE10R )
Denne har
en utgang som gir 9 Volt, og forsyner en Arduino med Ethernet kort, og en Ethernet Switch. (Brun/Gule ledninger på bildet) Disse
enhetene vil derfor alltid være tilkoplet
strøm. Strømforbruket er ca 5 watt.
På Arduinoen har jeg laget en liten WebServer som styrer utgang 4 (Orange ledning)
, og er koplet til en transistor, som driver et rele (Blå Ledninger) , som
fungerer som hovedbryter (220Volt) for resten av modulen (bl.a. Raspberry,
Digitalsentraler, Can Bus, og andre
transformatorer).
Neste
skritt er å sette opp 8 releer, som skal styrer via CAN Bussen, for å styre
strøm til de forskjellige enhetene (DCC skinnestrøm, DCC pensestyring, Signaler, LYS, etc). Når alt dette er klart, kan jeg fjernstarte anlegget fra en web
Browser : Først hovedbryteren, som også starter Raspberryene, hvor jeg kan
styre de forskjellige releene (også dette fra en web browser).
|
Posted By: programmeringssporet
Date Posted: 03 februar 2015 at 15:22
Strømforbruk - stand by
Da har jeg testet litt mere. Selve PoE injektorer har et forbruk på 4 Watt. Poe + Ethernet Switch (D-Link Green 5 port) 7 Watt - når det ikke er trafikk på nettet. Poe + Ethernet Switch + Arduino med Eth. kort : 11 Watt.
Hvis totalpris for strøm settes til kr 1 per kilowatt time - koster dette omtrent 100 kroner pr. år. (og det meste av dette går nok til varme i vinterhalvåret)
|
Posted By: SveinR
Date Posted: 03 februar 2015 at 15:56
Med den nye B+ modellen, kan den overklokkes mer en den gamle? Var det som var litt "problemet" med A og B utgavene, det var litt trege til å kjøre programmer med GUI
------------- Mvh
-SveinR
Det finnes en skiftetraktor til alt
|
Posted By: programmeringssporet
Date Posted: 03 februar 2015 at 23:00
SveinR wrote:
Med den nye B+ modellen, kan den overklokkes mer en den gamle? Var det som var litt "problemet" med A og B utgavene, det var litt trege til å kjøre programmer med GUI |
Det ser ikke ut som om jeg får tak i en ny Raspberry før neste uke. Her er noen ytelsestester :
http://learn.adafruit.com/introducing-the-raspberry-pi-2-model-b?view=all" rel="nofollow - https://learn.adafruit.com/introducing-the-raspberry-pi-2-model-b?view=all Basert på denne testen, tror jeg at bl.a. JMRI vil gi en mye bedre brukeropplevelse.
|
Posted By: SveinR
Date Posted: 03 februar 2015 at 23:19
takk.. Den må nok handles. Har en ide om å kjøre RocRail på den.
------------- Mvh
-SveinR
Det finnes en skiftetraktor til alt
|
Posted By: einjen
Date Posted: 04 februar 2015 at 11:39
Hvor har dere bestilt den nye raspberryen?
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: trulss
Date Posted: 04 februar 2015 at 11:49
einjen wrote:
Hvor har dere bestilt den nye raspberryen? |
http://no.rs-online.com/web/" rel="nofollow - http://no.rs-online.com/web/
------------- Truls Slevigen
|
Posted By: programmeringssporet
Date Posted: 05 februar 2015 at 21:02
Rs-online, er utsolgt, jeg bestilte en Intel Edison istedenfor, samt noen I/O kretser og drivere (MCP23008/23017 og ULN2803) for å komme over kr 500 / gratis frakt. Ble levert på to dager.
www.kjell.com har på lager - har reservert en i Strømstad.
www.digitalimpuls.no har jeg også bestilt - de sier de får dem på tirsdag
www.elfa.se har ikke - men søsterselskapet reichelt.de har dem
komplett.no - sansynligvis 16 Mars
teknikmagasinet - kommer i neste katalog, sier de
|
Posted By: programmeringssporet
Date Posted: 15 februar 2015 at 19:16
Fremgang
Da er ny Raspberry Pi 2 installert. Oppstartstiden på JMRI/DecoderPro er gått fra ca 40 sekunder til 14, og brukergrensesnittet er mye raskere (på den gamle var det mere eller mindre ubrukelig). Det føles omtrent som å kjøre på Laptoppen min (Win7 64 bit - Intel Core i5).
Et par utfordringer : Det er raspbian fra 30 Januar 2015, som fungerer - denne fungere også på den gamle. SD brikken kan flyttes frem og tilbake - men Raspberry 2, er micro SD - så for meg betyr det nye SD brikker (med adapter passer de også i den gamle)
Jeg har originalversjonen av Raspberry (B - ikke B+). Jeg tilpassset et gammelt kabinett - men det er nok lurere å kjøpe et nytt. (samme som B+)
Det er utfordinger med Serieporten i Java (RXTX) ved overgang til ARM7. Her er løsningen :
http://groups.yahoo.com/neo/groups/jmriusers/conversations/topics/114689" rel="nofollow - http://groups.yahoo.com/neo/groups/jmriusers/conversations/topics/114689
EL14.
I dag kom vinkelsliperen frem :
Understellet kommer fra en Piko DR BR 119 http://www.conrad.com/ce/en/product/404385/Piko-H0-59930-H0-diesel-locomotive-BR-119-Deutsche-Reichsbahn-BR-119-DR-Upper-headlight" rel="nofollow - http://www.conrad.com/ce/en/product/404385/Piko-H0-59930-H0-diesel-locomotive-BR-119-Deutsche-Reichsbahn-BR-119-DR-Upper-headlight som jeg fikk tak i ganske rimelig i Berlin forrige sommer. Jeg har kappet ut ca 1 cm av rammen på hver side av motoren - dette gikk greit med en baufil.
Problemet var en kant som måtte fjernes. På bildet under er den slipt bort på alle 3 delene, som jeg skal bruke, men ikke på de to delene som ikke skal brukes.
Og slik ser det ut når de dyttes inn i lokomotivet :
|
Posted By: programmeringssporet
Date Posted: 18 februar 2015 at 00:32
Huskeliste for å kjøre JMRI på Raspberry Pi 2, B :
X / vnc: ("GDBus.Error.org.freedesktop.policykit1.error.failed:
can not determine user of subject".)
sudo vi /etc/xdg/autostart/lxpolkit.desktop
Siste linje skal endres til (legge til : LXDE;) NotShownIn=GNOME;KDE;LXDE;
Fikse RXTX / Java Serieport - ved å benytte ARM6 bibliotek på ARM7: sudo cp -v /home/pi/JMRI/lib/linux/armv6l/* /home/pi/JMRI/lib/linux/armv7l/
|
Posted By: einjen
Date Posted: 18 februar 2015 at 23:20
takk! Får min raspberry i morgen
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: programmeringssporet
Date Posted: 28 februar 2015 at 14:15
Hovedbryter fungerer greit - neste skritt er releer for styring av DCC, pensemotorer etc. For dette er det satt opp 8 releer - som styres av et CAN-Bus interface.
Releene er (fra venstre) 1. DCC til Programmeringssporet 2. DCC til andre spor 3. Velge innebygget DCC sentral (Roco eller Merg) - eller ekstern DCC sentral (ikke koblet opp) 4. Velge mellom Roco eller Merg DCC sentral 5. DCC til pensemotorer/AUX 6. CAN-BUS styring av pensemotorer (ikke ferdig oppkoplet) 7. CAN-BUS styring av avkoplingskinner (ikke ferdig oppkoplet) 8. 12 Volt til andre funksjoner (Ikke ferdig oppkoplet)
Nederst til høre er CAN-BUS grensesnittet - som styrer releene. På denne måten kan jeg styre alt fra programvare, bl.a. fra JMRI, men også fra andre styrings og overvåkningskort. Foreløpig er hele modulen programvarestyrt. Det er ingen bryterpaneler på modulen, men jeg har valgt å lage et lite overvåkningspanel som skal vise den viktigste statusen. Det kan være nyttig å se status - hvis kommunikasjonen er nede. Under er et prøveoppsett med 8 LED for å vise status. Ved normal drift vil grønne og gule lysdioder lyse. De røde skal kun blinke når en pensemotor eller avkoplingskinne er aktivert.
dddsd
|
Posted By: programmeringssporet
Date Posted: 05 mars 2015 at 00:18
Fra
programmeringssporkontroller til stasjonskontroller
Erfaringen
med programmeringssporkontrolleren er god.
Den fungerer stort sett som forutsatt.
Jeg planlegger derfor å etse et kretskort til denne. Før dette vil jeg utvide funksjonaliteten til
å bli en total stasjonskontroller. De
viktigste funksjonene blir :
1. 1.
Signalstyring
: Lys og semafor. Viktig funksjon er myk
blinking av LED ved hjelp av PWM (Pulse-Width Modulation) og programvarestyrt
lysstyrke.
2. 2.
Sporvekselstyring:
Kun driver for servo – andre alternativer via ekstern funksjonalitet (DCC
Accessory decoder el).
3. 3.
Tilbakemelding
på fysisk posisjon for sporveksler. Det
skal være støtte for fysisk bryter og spenningsdetektor av hjertestykke.
4. 4.
Sporfeltdetektor:
Basert på diode-drop og optokopler.
5. 5.
Punktdeteksjon
basert på Infrarød stråle.
6. 6.
Avstands/hastighetsmåler
med Ultralyd.
7. 7.
Mulighet
for rele for å kople inn programmeringsspor
8. 8.
Mulighet
for å plugge inn en SPROG klone.
9. 9.
Støtte
for å legge sporveier.
10. 10.
Tilkopling
til lokalt stillverk, fysisk eller virtuelt (iPad?), via USB, RS232/485, CAN,
ethernet – eller direkte tilkoplet ?
11. 11.
Mulighet
for fjernstyring fra f.eks. JMRI, via USB, RS, RS232/485, CAN eller ethernet ?
I utgangspunket skal jeg bruke en eller flere
Arduino kort pr. Stasjon. Større
stasjoner kan også styres av en egen Raspberry Pi. En Arduino har kun 14 utganger. Av disse er
det kun 6 som har PWM støtte. En arduino
kan derfor koples direkte til 6 lamper, siden jeg ønsker myk blinking og myk
overgang fra grønt til rødt/hvitt signal.
Øvrige innganger/utganger kan brukes til spordeteksjon etc. Dette blir litt begrenset. Fra tidligere har jeg god erfaring med
MCP23008 for spordeteksjon. Den kan også
brukes til utganger, men støtter ikke PWM.
Jeg har derfor bestilt et kort med 16 PWM utganger ( http://www.adafruit.com/product/815" rel="nofollow - http://www.adafruit.com/product/815 ). Dette kortet kan brukes både til LED og
servostyring. Kortet koster omtrent kr
120.- levert i Norge. Jeg har også
bestil noen løse kretser til kr 19.-,
som jeg vil bruke når jeg etser et eget kort.
I dag kom kortet. Jeg laget derfor et lite testoppsett – som
jeg skal bruke for å teste ut LED styringen.
Første skritt var å lodde på soklene.
Deretter skrudde jeg sammen kortene og en
signalmast i et testoppsett – Dette skal jeg bruke for å teste konseptet og
lage programvaren til Arduinoen. Blir
det vellykket, må jeg finne ut hvor mye en Arduino klarer. Teoretisk kan det koples opp 62 kort – som
tilsammen kan styre 992 LED / servoer, men jeg antar at Arduinoen får litt
pusteproblemer før dette. En nyttig
funksjon er at kortet støtter både 3,3 volt og 5 volt, slik at alternative
Arduinokort eller Raspberry Pi, kan benyttes istedenfor. Grensesnittet er I2C. Bildet viser testoppsettet uten testledninger.
|
Posted By: programmeringssporet
Date Posted: 25 mars 2015 at 23:59
Nytt forsøk
Jeg gjør et nytt forsøk på å øke interessen for Arduino for modelljernbanestyring i Norge. Nå vil jeg bruke en Arduino for å styre signaler fra Skala Design. I en annen tråd ble det uttrykt ønske om kunne kople opp signaler uten å lodde egne kort. Det enkleste blir da å kople signalet rett på Arduinoen. Alle utgangene på Arduino kan styre ut 5 eller 0 Volt. Første forsøket ble å teste hvordan signalet fungerer med 5 Volt. Denne koplingen ble laget :
Sort ledning fra signalet (felles +) koples til 5Volts pinnen på Arduinoen. Rød Ledning koples til digitalutgang 3 Grønn Ledning koples til digitalutgang 5
På bildet kan man se at utgangene 3,5,6,9,10 og 11 er merket med en liten strek. Denne indikerer at utgangen kan PulsViddeModuleres (PWM). Derved kan lysstyrken i signalet også stilles. Dette bruker jeg til å få den typiske norske myke blinkingen. I tillegg bruker jeg den for å få en myk overgang fra rødt til grønt signal, samt at det nye lyset tener før det gamle er helt slukket. Dette kan også brukes til å velge mellom dag og nattsignaler
Jeg har laget et lite testprogram for å se hvordan dette fungerer. Ved oppstart tennes rød lampe - etter 10 sekunder begynner denne å blinke mykt. Hvert tredje sekund endrer signalbildet mellom rødt (blinkende) og grønt (fast). Også denne overgangen er myk. Her er dagens versjon av testprogrammet (nye versjoner kommer etterhvert som de bli ferdige):
int ledCnt=25; // red, green, control int ledPins[25] = {3,5,13}; int ledBlink[25] = {1,0,1}; int ledMode[25] = {2,2,0}; int ledOn[25] = {1,0,1}; int ledOnNew[25] = {0,0,0}; int transitionValues[20] = {0,1,2,3,4,5,6,7,8,9,10, 15, 20, 30, 40, 75,100,150,200,255}; int transitionValues0ff[20] = {0,1,1,1,2,5,6,7,8,9,10,100,150,200,255,255,255,255,255,255}; int statusCheckCnt=0; int controlType=0; boolean statusRed=true; boolean debugBlinkValue=false;
void setup() { Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } delay(5000); for (int i = 0; i < ledCnt; i = i + 1){ if (ledPins > 0){ if (ledPins<100){ pinMode(ledPins[0], OUTPUT); } } } sod(); delay(10000); Serial.println ("End Init"); }
void loop() { boolean dig=true; while (dig){ blinker(400,20,200,10); //delay(400); statCheck(50,350,18); } } void statCheck(int pred, int td, int d){ delay (pred); statusCheckCnt++; if (statusCheckCnt<3){ delay(td); } else{ statusCheckCnt=0; if (statusRed) green();else red(); transition(td,d); } } void blinker(int offTD, int offD, int onTD, int onD){ Serial.println ("----------------------------- OFF "); blinkOff2(offTD,offD); Serial.println ("----------------------------- ON"); blinkOn2(onTD,onD); } void sod(){ int i=0; Serial.println ("SOD"); for (i = 0; i < ledCnt; i = i + 1){ int v=ledOn; if (v==1) v=255; setLed(i,v); } Serial.println ("SOD - Finished"); } void green(){ Serial.println ("Green"); ledOnNew[0]=0; ledOnNew[1]=1; ledOnNew[2]=1; statusRed=false; } void red(){ Serial.println ("Red"); ledOnNew[0]=1; ledOnNew[1]=0; ledOnNew[2]=1; statusRed=true; } void transition (int td, int d){ unsigned long time = millis(); int i=0; int j=0; Serial.println ("Transition start"); for (i = 1; i < 20; i = i + 1) { int ii=20-i-1; for (j = 0; j < 3 ; j = j + 1){ if (ledOnNew[j]==1){ if (ledOn[j]==0){ setLed(j,transitionValues); } } if (ledOnNew[j]==0){ if (ledOn[j]==1){ setLed(j,transitionValues0ff[ii]); } } } delay(d); } for (i = 0; i < ledCnt; i = i + 1){ ledOn=ledOnNew; } unsigned long time2=millis(); int dt = time2 - time; dt=td - dt; Serial.print ("Transition:"); Serial.print(dt); Serial.print("/"); Serial.println (td); if (dt>0) delay (dt); }
void blinkOn2(int td,int d){ unsigned long time = millis(); int i=0; Serial.println ("ON2"); for (i = 1; i < 20; i = i + 1) { blinkValue(transitionValues,d); } unsigned long time2=millis(); Serial.println (time2-time); int dt = time2 - time; dt=td - dt; Serial.println (dt); if (dt>0) delay (dt); } void blinkOff2(int td,int d){ int i=0; unsigned long time = millis(); Serial.println ("OFF2"); for (i = 18; i >= 0; i = i - 1) { blinkValue(transitionValues0ff,d); } unsigned long time2=millis(); Serial.println (time2-time); int dt = time2 - time; dt=td - dt; Serial.println (dt); if (dt>0) delay (dt); }
void blinkValue(int bb,int d){ int b=255-bb; if (debugBlinkValue){ Serial.print("Blink value:"); Serial.print(bb); Serial.print(":"); Serial.print(b); Serial.println (""); } int i; for (i = 0; i < ledCnt; i = i + 1) { if (ledOn == 1){ if (ledBlink == 1){ if (ledMode == 0){ if (bb==0) digitalWrite(ledPins,LOW); else digitalWrite(ledPins,HIGH); } if (ledMode == 1){ if (bb==0) digitalWrite(ledPins,HIGH); else digitalWrite(ledPins,LOW); } if (ledMode == 2){ analogWrite(ledPins, b); } } } } delay(d); } void setLed(int i,int v){ if (debugBlinkValue){ Serial.print ("SetLED:"); Serial.print (i); Serial.print (":"); Serial.print (v); Serial.println (); } if (ledMode == 0){ if (v==0) digitalWrite(ledPins,LOW); else digitalWrite(ledPins,HIGH); } if (ledMode == 1){ if (v==0) digitalWrite(ledPins,HIGH); else digitalWrite(ledPins,LOW); } if (ledMode == 2){ v=255-v; analogWrite(ledPins, v); } }
|
Posted By: Svein_H
Date Posted: 26 mars 2015 at 17:53
Regner med det kanskje er tråden min du tenker på? Må innrømme at det ser spennende ut dette du holder på med nå, så selv om jeg kanskje ikke "løper og kjøper" en Arduino med en gang skal jeg hvertfall følge med på det du gjør fremover!
------------- H0, norsk på 50-tallet en gang http://www.hjemstad.no" rel="nofollow - Min hjemmeside
|
Posted By: programmeringssporet
Date Posted: 30 mars 2015 at 01:31
Jeg opdaget nettopp at kodeeksempelet mitt fra forrige innlegg - ble ødelagt da jeg posted det på forumet:
Eksempel : (test[1] == 2)
Ble endre til: (test == 2)
Jeg har derfor lagt ut programmet som en zip fil - denne kan lestes ned her :
http://programmingtrack.no-ip.org/sw/arduino/Controller02080001.zip" rel="nofollow - http://programmingtrack.no-ip.org/sw/arduino/Controller02080001.zip
Denne kan pakkes ut slik at du får en fil Controller02080001.ino
Funksjonalitet til denne nye versjonen er som før, men hvis du kopler en bryter mellom Digital Pinne 2 (til høyre for den røde ledningen) og Gnd/Jord (til høyre for sort ledning) - får du mulighet til å styre rød / grønn. Hvis bryter er lukket når Arduinoen blir slått på, starter den automatisk i denne modusen, ellers vil den starte i testmodus - og gå over til rødt, når du slår bryter på og deretter av. Signalet lyser grønt når bryter er lukket. Det er også mulig å kople en spordetektor (f.eks http://forum.mjf.no/forum_posts.asp?TID=9074&title=alternativer-til-skala-design-signalstyring" rel="nofollow - BD-20 fra NCE ) til pinne 4 (mellom rød og grønn). og også mulighet for å kople en annen spordetektor til pinne 7. Signalet vil lyse grønt hvis bryter er på og ingen av spordetektorene er aktivert (De aktiveres ved å trekke styringspinnen til jord. (Det er ikke behov for 10k pullup motstand - denne er aktivert internt i SW)
Jeg har installert dette for å få et innkjøringssignal på en av endestasjonene mine.
Hvordan komme igang med Arduino - og signalstyring.
Det finnes en rekke forskjellige Arduinoer. Jeg anbefaler å starte med Arduino UNO - fordi denne har utbyttbar prosessor (DIL sokkel) - slik at evt. feilkoplinger kun ødelegger prosessoren - ikke hele kortet (ny prosessoer 20 - 40 kroner)
Det enkleste (men kanskje litt dyrt?) er å kjøpe et Arduino startsett f.eks : http://www.digitalimpuls.no/PC-komponenter/Hovedkort/Arduino/Arduino/Vilros-Arduino-Uno-Ultimate-Starter-Kit-Includes-72-page-Instruction-Book-129859-p0000088952.aspx" rel="nofollow - http://www.digitalimpuls.no/PC-komponenter/Hovedkort/Arduino/Arduino/Vilros-Arduino-Uno-Ultimate-Starter-Kit-Includes-72-page-Instruction-Book-129859-p0000088952.aspx
Alternativer er digikey med et litt midre kit :
http://www.digikey.no/product-detail/en/193/1528-1078-ND/5154653" rel="nofollow - http://www.digikey.no/product-detail/en/193/1528-1078-ND/5154653 (Bare pass på å legg til litt ekstra så du kommer over kr 525 - for free shipping.
I Sverige er Kjell & co veldig greie - med ok priser og godt utvalg i http://www.kjell.com/Sok?query=arduino#Sok?showall=&query=arduino&sort=P_PriceExcVat&listingStyle=grid&_suid=1427675074545046037442780139986" rel="nofollow - Arduino og tilbehør f.eks. disse to (under 200 tilsammen) : http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/uno-r3-p87960" rel="nofollow - http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/uno-r3-p87960 http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/kopplingskablar-hane-hona-p87900" rel="nofollow - http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/kopplingskablar-hane-hona-p87900
Andre ting å ta med seg fra Kjell & Co:
Reserveprosessor : http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/atmega328p-pu-20-portar-p87909" rel="nofollow - http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/atmega328p-pu-20-portar-p87909
Skruetilkoplinger for mere permanent/sikker oppkopling : http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/skruv-shield-for-arduino-p87890" rel="nofollow - http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/skruv-shield-for-arduino-p87890 Arduino Lærebok: http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/getting-started-with-arduino-p87873" rel="nofollow - http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/getting-started-with-arduino-p87873
Mye av det Kjell & Co selger kan også bestilles direkte fra Kina - til lavere priser. Tror ikke Kjell & co sender til norge - alternativ i Sverige som sender til Norge er :
http://www.eztronics.se/webshop2/catalog/Arduino" rel="nofollow - http://www.eztronics.se/webshop2/catalog/Arduino
elfa.se har også kort - men fant ikke ledninger.
Mange av produktene stammer fra to amerikanske leverandørene : http://www.sparkfun.com" rel="nofollow - www.sparkfun.com http://www.adafruit.com" rel="nofollow - www.adafruit.com
To Norsk nettbutikker - jeg ikke har prøvd : http://youblob.com" rel="nofollow - youblob.com http://robotronic.no" rel="nofollow - http://robotronic.no
Etter at man har skaffet seg et Arduino kort med USB kabel, er det bare følge denne oppskriften for å komme igang med Arduino :
http://arduino.cc/en/Guide/Windows" rel="nofollow - http://arduino.cc/en/Guide/Windows
Etter at blink eksemplet kjører - kan man prøve å kople opp signal og laste opp mitt eksempelprogram: Controller02080001.ino
Planer fremover Den neste versjonen av programmet - skal støtte innkjøringssignaler i begge ender av stasjon, med 4 sporsensorer (innkjør 1, innkjør 2, Spor 1 og Spor 2). Den må også ha sensor for posisjon for sporveksler for å vite om den skal sjekke belegg i Spor 1 eller 2 og om det skal vises en eller to grønne lamper på signalene. Jeg skal også legge inn støtte for impulsbrytere.
Planlegger også å ta i bruk I2C bussen for å få støtte for flere signaler. - Slik at også utkjørsignaler kan implementeres.
Deretter kommer en versjon hvor flere Arduinoer kan snakke sammen , eller sammen med PC/Raspberry og f.eks. JMRI. Tror også jeg skal lage en webserver (for PC eller Raspberry) for å konfigurere opp kortene)
|
Posted By: programmeringssporet
Date Posted: 30 mars 2015 at 14:06
Her er et ok Arduino startset fra Elfa :
http://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?item=10-389-38" rel="nofollow - https://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?item=10-389-38
Litt vanskelig å finne Arduino utstyr på elfa, men her er et ok søk :
http://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?toc=20991&orderBy=PRICE_SORTER&sortOrder=asc&filterClause=MANUFACTURER%253DArduino&pageSize=100" rel="nofollow - https://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?toc=20991&orderBy=PRICE_SORTER&sortOrder=asc&filterClause=MANUFACTURER%253DArduino&pageSize=100
Chipkit / Microchip Arduino kompatible kort :
http://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?sq=chipkit&cat=0" rel="nofollow - https://www.elfaelektronikk.no/elfa3~no_no/elfa/init.do?sq=chipkit&cat=0
Men gjentar meg selv: er nok best å starte med en Arduino UNO
|
Posted By: programmeringssporet
Date Posted: 02 april 2015 at 21:04
Neste versjon av Signalstyringen - har flyttet Rød/Grønn bryter fra Digital Pinne 2, til Analog 0(Digital 14).
Her er en oversikt over alle tilkoplingene - som kan brukes når programvaren er klar :
|
Posted By: einjen
Date Posted: 04 april 2015 at 12:28
Har stor glede av å følge arbeidet ditt med arduino og raspberry. Veldig morsomt!
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: programmeringssporet
Date Posted: 07 april 2015 at 23:04
Einar,
Veldig bra at du har glede av bloggen - håper også at andre har det !
Hensikten med bloggen er først og fremst å motivere andre til å lære å bygge elektronikk og enkle datastyringer ved å vise hvor enkelt det er. Jeg tror ikke jeg helt har lykkes med dette enda, bl.a. fordi mange av eksemplene mine er for kompliserte. Jeg vil derfor fortsette å fokusere på enkle signalstyringer med Arduno. Selv om de i utgangspunktet er enkle - er jeg redd for at jeg også her har gjort det litt for komplisert med bl.a. PWM modulering av lysstyrken. Målet mitt er derfor at det skal være mulig å bruke denne styringen - uten å måtte forstå programmene i detalj.
Status nå er at jeg har utvidet testbordet mitt - for å kunne teste med to stk. 3 lys-signaler :
Bildet viser hvordan jeg har laget et 5-lys testsignal til høyre. For øyeblikket tester jeg ut 2 stk. 3 lys signaler ved at den grønne lampen på forsignalet er stand-in for det ene manglende grønne lyset i Skala Design signalet. (Beklager litt for dårlig oppløsning på bildet, men koplingende tilsvarer røde, grønne og svarte ledninger på skjemaet i forrige innlegg) (Og når det gjelder det blå kretskortet i midten - er dette enda ikke tatt i bruk)
Status på Arduino programmet er at jeg nå kan simulere 2 stk. 3 lys signaler (f.eks. innkjør i hver ende av en stasjon) I dag bytter signalbidet mellom rødt - en grønn - og to grønne i takt - så dette programmet er kun egnet for testing. Full funksjonalitet med støtte for diverse sensorer og kontrollpanel er ferdig programmert selv om det gjenstår en del feilretting før det fungerer, men her ligger ihvertfall den begrensede testversjonen : http://programmingtrack.no-ip.org/sw/arduino/Controller02080002.zip" rel="nofollow - http://programmingtrack.no-ip.org/sw/arduino/Controller02080002.zip
|
Posted By: programmeringssporet
Date Posted: 10 april 2015 at 20:46
Tospors stasjon med innkjørsignal i begge retninger
Nå ser det ut som om Arduino signalstyringen begynner å fungere bra. Jeg har nå installert innkjørsignaler på en liten stasjon :
Siste versjon av programvaren ligger her: http://programmingtrack.no-ip.org/sw/arduino/Controller02080003.zip" rel="nofollow - http://programmingtrack.no-ip.org/sw/arduino/Controller02080003.zip
Sporsensorene kobles som i diagrammet litt lenger oppe til : 4,7,8 og 12 Bryter fra sporskiftene kobles til A4 og A5 - skal lede når de er rett frem. (inn i spor 1) Betjeningsbryter for å sette grønt lys koples til A0 for Signal 1, og A3 for Signal 2 (Den siste mangler i diagrammet). Bryter skal lede for å gi grønt lys.
Signal 1 gir to grønne : Hvis bryter er på, Pens 1 står i rett frem, og det ikke er belegg i 1 og 3. Signal 1 gir et grønt når bryter er på, Pens 1 står i avvik, og det ikke er belegg i 1 og 4. I alle andre tilfeller lyser Signal 1 med Rødt.
Signal 2 - fungere på samme måte.
|
Posted By: programmeringssporet
Date Posted: 18 april 2015 at 22:36
EL14 og Målevogn
Målevogn.
En åpen toakslet målevogn har to ulemper: Lang
akselavstand gir dårlig strømopptak, og vognen er for kort til å ha
plass til elektronikken jeg har tenkt å bruke. Jeg har derfor tatt
ibruk en annen vogn til dette. Her er et bilde av den modifiserte vognen med måleelektronikk prøvemontert :
EL14
De fleste 6 sylindrede diesel Lok fra DDR har samme hjulavstand i bogien som EL14. Utfordringen er at julene er litt for små. Jeg har derfor testet tre forskjellige hjulsett i bogien.
Fra venstre : NMJ EL13, Heljan Di3, Piko originaljul. Som man vel kan se av bildet, blir det ikke plass til EL13 hjulene - fordi de boggieinnfestingen kommer i veien på midterste hjulsett. Forskjellen i størrelse melliom originaljul og Heljan Di3 er så liten at jeg velger å kjøre videre på originalhjulene.
Neste utfordring er å sette sammen understellsdelene. Piko understellet er ca 1,8 mm smalere enn Lima understellet. To små messingbiter på 0,8 mm løser dette på en grei måte. For å ha mulighet til å gjøre justeringer på understellet - hvis det blir feil, har jeg valgt å lodde det sammen. Jeg har først borret to 0,8 mm hull gjennom messingen og rammen. Deretter har jeg utvidet hullet i messingen til 5 mm, satt en liten motstandsavklippingstråd gjennom hullet, og fylt igjen med tinn. Da ble det seende slik ut (De to innerste hullene i messingen er for festetaggene i karosseriet) :
Og etter sliping :
Deretter prøvekjøring av målevognen og EL14 (uten motor) :
Neste jobb er kontrollmåling av hjulavstander - og testing med buffere.
|
Posted By: programmeringssporet
Date Posted: 22 april 2015 at 23:14
El14 Lima, Piko understell og original
|
Posted By: programmeringssporet
Date Posted: 30 april 2015 at 14:09
Erfaringer med Arduino siste måned
Den nyeste versjon av programvaren, kan brukes enten til å styre to innkjørsignaler (4 Leds), eller en hel mast med 3 led og 2 led for forsignal. Utfordringen nå er å kople flere Arduinoer sammen, slik at de kan styre en hel stasjon og/eller strekning. I tillegg ønsker jeg å kunne styre signalene fra PC. Jeg har derfor laget et nytt testoppsett med to Arduinoer som kan kommunisere via en serieport / RS-232.
På dette området er det litt forskjeller på de forskjellige Arduino kortene. Arduino UNO har en serieport (pin 0 og 1) som også benyttes for USB kommunikasjonen. Arduino Leonardo har en annen prosessor hvor USB kommunikasjonen er innebygget i prosessor og benytter andre pinner – slik at USB og Seriekommunikasjon er uavhengig av hverandre – og derfor kan benyttes samtidig. Ulempen med Arduino Leonardo er at ikke prosessoren er pluggbar. Under utvikling av den siste versjonen gikk jeg tom for minne (2KB). Jeg tror hovedgrunnen til at det er raskere å utvikle for Arduino i forhold til tradisjonelle mikrokontrollere er at man kan skrive statusmeldinger (debug) til serieporten/USB med kommandoer som Serial.println (”Dette er en testmelding fra kontrollrutine nr 3”);. Ulempen er at hver meldingstekst både ligger i flash minne og i RAM, og når det er tomt for RAM crasher Arduinoen uten å gi noen fornuftig feilmelding. Det jeg opplevde var at plutselig var min Arduino Leonardo ukontrolerbar, og at den ikke lenger gjennkjennes som et USB device av PC’en. Første gangen klarte jeg å resette den, men nå er den ikke lenger mulig å kommunisere med. Da var det tilbake til Arduino UNO. Jeg endret alle meldinger til å gå rett fra flash v.h.a. F funksjonen : (Serial.println (f(”testmelding”)); Dette reduserte minneforbruket fra 2KB til 500 Byte.
Leonardoen skal være mulig å redde ved å programmere inn Arduino Bootloader på nytt – det skal jeg prøve en dag. Foreløpig har jeg benyttet en Chipkit UNO 32 istedenfor. Denne er koplet til PC via USB, og serieporten (tx) er koplet til tx på en annen Arduino UNO uten prosessor.
Dette betyr at alle meldingene jeg skriver til Serieporten på Chipkit går til TX på UNO en, som er koplet sammen med USB transmit – slik at jeg kan lese meldingene på USB porten på PC’en. Jeg har nå et testoppsett hvor jeg benytter JMRI til å sende Events til Chipkit prosessoren via USB som kan svare tilbake via USB, og sende debug til meg via UNO’en :
På bildet ser dere hvordan jeg tester. Øverst til venstre er Arduino terminalvindu hvor meldingene kommer: SOFEON9900002711 (99 er off, 98 er on, 2711 er hexadesimal for 10001). Vindu øverst til høyre er kommunikasjonsmeldingene i JMRI, og nederst er ”turnout” tabellen i JMRI hvor jeg definerer turnouts og kan sende testmeldinger fra. Det ser ut som om at man i JMRI må definere alle utgående meldinger som ”turnouts”. Jeg har da valgt at turnout 10001 og 10002 er å styre innkjør fra vest og øst. Det er ok, da jeg aldri får over 10000 penser på anlegget mitt. Og jeg kan definere opp til 64000 virtuelle penser i JMRI. Nå som jeg ser at meldingene kommer frem riktig til Arduinoen – er det bare å bygge funksjonaliteten for å styre etter meldingene fra JMRI - eller annen programvare på PC’en/Raspberryen. Tilsvarende meldinger skal jeg benytte mellom de forkjellige Arduinoene.
|
Posted By: Svein_H
Date Posted: 02 mai 2015 at 17:13
Litt usikker på hva du skriver her nå. Mener du at man trenger flere Arduinoer for å styre signalene på en enkel stasjon med kun 2 gjennomgående spor? Er kapasiteten så begrenset..?
------------- H0, norsk på 50-tallet en gang http://www.hjemstad.no" rel="nofollow - Min hjemmeside
|
Posted By: programmeringssporet
Date Posted: 05 mai 2015 at 00:33
Svein_A wrote:
Litt usikker på hva du skriver her nå. Mener du at man trenger flere Arduinoer for å styre signalene på en enkel stasjon med kun 2 gjennomgående spor? Er kapasiteten så begrenset..?
|
Veldig
godt spørsmål, som det er vanskelig å svare med et Ja eller Nei. Svaret avhenger av hvordan Signalene
drives:
- De kan
koples til en vanlig digitalutgang, enten med digital driving eller
programvaredrevet pulsmodulering (SW PWM).
Da vil en standard Aurduino UNO kunne styre 14 (+6) LED-Lys. For å få til myk blinking må det da lages
ekstern blinkelektronikk (kan være basert på (den samme) Arduino). Ulempen er at Signalmastene må modifiseres,
og at det blir vanskelig å få til myk endring av signalbilde. SES hadde et innlegg om dette på forumet for
en stund siden. (uten Arduino)
- De kan
koples til en PWM utgang (HW PWM) . Da
har Arduino UNO 6 utganger. (Leonardo 7)
- Arduinoen
har en I2C (Inter-Integrated Circuit)
som kan koples til en eller flere PWM LED drivere f.eks. PCA9685. Hver av disse kan koples til 16 LED. Teoretisk
maksimum for en Arduino UNO er 992 Utganger med 62 stk. PCA9685. SM-bussen som sitter internt i alle PC’er for styring av bl.a. temperatur er
basert på I2C – PCA9685 kan derfor også koples rett til PC eller Rapberry Pi –
slik at man ikke trenger noen Arduino i det hele tatt for å styre signalene. En annen fordel med PCA9685 er at den har 1024
step (10-bit) – Arduino har 256 step (8-bit).
Dagens
versjon av min programvare støtter alternativ 1 (med hard blinking) og alt. 2, men jeg bruker kun alternativ 2. Alternativ 3
skal også implementeres snart.
Jeg
jobber med et regneark som viser oversikt over de forskjellige Arduinokortene –
og alternativene). Kolonne N: (I/O) viser hvor mange Digitautganger kortet
har, Kolonne N (PWM) viser hvor mange HW
PWM utganger kortet har. Kolonne B og C) viser prisestimater hvor B ofte er
basert på noe egenlodding av kort.
Hva er da
det reelle behovet for en stasjon ? Et godt eksempel er f.eks. Ødsle i denne
tråden :
http://forum.mjf.no/forum_posts.asp?TID=9025&KW=&PID=17062266&title=stillverk-med-nsbforbilde#17062266" rel="nofollow - http://forum.mjf.no/forum_posts.asp?TID=9025&KW=&PID=17062266&title=stillverk-med-nsbforbilde#17062266
En rask
opptelling gir omtrent disse tallene:
Signal
|
24
|
belegg/sporskiftepos
|
21
|
Total
output / PWM
|
45
|
Input
|
15
|
Total
input og output
|
60
|
Andre
funksjoner som kan være aktuelle på en stasjon å styre med Arduino :
- -
Lyd/Høytaleropprop.
- -
Sporveksler
styring / kontroll (Servo?)
- -
Lys
i stasjonshus og lokstall
- -
Simulering
av TV og sveising.
- -
Lokstall
dører.
- -
Vannstender.
Jeg har
koblet relativt mye ledinger på MJ anlegg opp gjennom årene. Det eneste jeg liker mindre, er å feilsøke
ledningskaoset noen år senere. Det
viktigste prinsippet mitt er derfor færrest mulig ledninger, og enda viktigere:
Færrest mulig ledninger mellom moduler / seksjoner. Min løsning på dette er kretskort med distribuert
logikk og buss komunikasjon (CAN, USB, Ethernet, RS232, I2C) Oftest er det også rimeligere med en ekstra
arduino (fra. Kr 50) hvis man sparer noen ledninger og plugger. Her er et eksempel på en enkel moduloppbygget
stasjon (Skal det være forsignal på utkjørsignalene i spor 1 ? spor 2?) :
Det er klart at denne stasjonen kunne vært styrt av en Arduino med f.eks. to PWM Shields, men jeg tror det er bedre å distribuere det f.eks. med 4 Leonardoer :
Eller en Arduino Leonardo og to PCA9685 (I2C bussen < 50 cm lang) :
Eller en Arduino Mega og en PCA9685 :
Eller kanskje den måten jeg ville gjort det på (Under, Fra venstre Arduino Trinket (kr 80), Arduino UNO (kr 170), PCA9685 (kr 110), Arduino Leonardo (kr 160), Arduino UNO (kr 170) og Arduino Trinket (kr 80).
Dette blir til sammen ca kr : 770. Litt for dyrt ? men ved å lodde litt selv (1 – 2 timer ?) : Kr 15 + 20 + 20 + 160 + 20 + 15 – Jeg velger å behold Leonardoen fordi jeg trenger USB porten, men kan nok også eliminere denne ved å bruke en prosessor fra Chipkit DP32 (kr 25) og en ekstra UNO prosessor (eller PCA9685) (kr 20) . Så minimumsprisen blir da ca. Kr 135.- (+ kr 100 i ledninger, kretskort/veroboard, kondensatorer, krystaller og motstander ?) - Dette alternativet kommer jeg mere tilbake til senere.
Håper det ble litt klarere nå !
|
Posted By: einjen
Date Posted: 12 mai 2015 at 12:50
Hei.
Vet du om det finnes noe "selvbygg" av håndkontrollere? Som kan brukes sammen med sprog3? Ev sammen med andre sentraler?
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
Posted By: glennefj
Date Posted: 12 mai 2015 at 18:48
Så et eksempel fra " http://www.utrainia.com/44-driving-many-outputs-with-arduino-c/mri" rel="nofollow - utrainia.com " som var interessant. Han brukte 74HC595 (shift register) for å få flere LED vha. Arduino C/MRI.
Litt interessant for et slikt eksempel, da det er snakk om en kostnad på $1.50 pr. chip.
Nå har jeg ikke rukket å lese gjennom alt du har prøvd ut ennå, og hva du ønsker å gå vekk i fra, men jeg syns denne var interessant. Ikke bare nødvendigvis via Arduino C/MRI, men kanskje RPi.
Syns det er interessant med slike løsninger, da man relativt enkelt kan lage store grener med I/O for en relativt billig penge sammenlignet med ferdige kort.
|
Posted By: programmeringssporet
Date Posted: 12 mai 2015 at 20:58
Hei,
74HC595 er sikker helt ok.
Jeg har brukt MCP23008 som er en adresserbar (I2c) Input og Output expander som kan brukes både med Raspberry Pi og Arduino (Har også prøvd den fra annen plattform hvor det ikke fantes noe bibliotek - helt grei å aksessere direkte på I2C bussen) :
8 I/O for 12 kroner:
http://www.digikey.no/product-detail/en/MCP23008-E%2FSO/MCP23008-E%2FSO-ND/735952" rel="nofollow - http://www.digikey.no/product-detail/en/MCP23008-E%2FSO/MCP23008-E%2FSO-ND/735952
Arduino :
http://github.com/adafruit/Adafruit-MCP23008-library" rel="nofollow - https://github.com/adafruit/Adafruit-MCP23008-library
16 I/O for 14 kroner:
http://www.digikey.no/product-detail/en/MCP23017-E%2FSP/MCP23017-E%2FSP-ND/894272" rel="nofollow - http://www.digikey.no/product-detail/en/MCP23017-E%2FSP/MCP23017-E%2FSP-ND/894272
Arduino :
http://github.com/adafruit/Adafruit-MCP23017-Arduino-Library" rel="nofollow - https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
Raspberry:
http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi/overview" rel="nofollow - https://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi/overview Python :
http://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/tree/master/Adafruit_MCP230xx" rel="nofollow - https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/tree/master/Adafruit_MCP230xx
|
Posted By: glennefj
Date Posted: 12 mai 2015 at 21:16
Kult! Utrolig hvor mye man kan få til med veroboard og relativt enkle kretser.
Flott at du lager eksempler for "vanlige" mennesker. Kanskje du på sikt hadde kunne laget enda enklere eksempler. En tutorial over 10 guider hvor man går fra ét lys til en full stasjon. Jeg syns det er noe vanskelig å henge med på de større oppsettene, spesielt når man raskt må tenke på utvidelse.
Det er kanskje bare meg, jeg er helt noob når det gjelder lyssignalene, hvor mange, plassering, type tegn etc, så det blir ekstra mye å henge med på når det begynner å bli mange Arduino som jobber sammen. Jeg tenker at det beste hadde vært å starte med ét kort, som så kan kobles opp mot en chip som utvider I/O, uten å utvide med flere kort.
For min del tenker jeg en sirkel/oval bane med én stasjon og ett tog. Etterhvert to tog som reagerer på sensorer, og oppdaterer lys tilsvarende, så man har et lite utgangspunkt man utvider, f.eks. to stasjoner, togstall etc.
Bare kjappe ideer fra min side. Jeg ville satt veldig stor pris på det iallefall :)
|
Posted By: programmeringssporet
Date Posted: 12 mai 2015 at 21:23
einjen wrote:
Hei.
Vet du om det finnes noe "selvbygg" av håndkontrollere? Som kan brukes sammen med sprog3? Ev sammen med andre sentraler? |
Det er vel laget noe basert på SRPC ? ellers er jo også det et spennende prosjekt : En Arduino, MBED eller Edison basert kontroller, med wi-fi kopling mot JMRI ?
De som har laget SPROG, har også videreutviklet denne til et komplett styringssystem med DCC sentral, booster, håndkontroll, tilbehørstyring og tilbakemelding basert på CAN-Bus. Mere info på:
http://www.merg.org.uk/merg_resources/cbus.php" rel="nofollow - http://www.merg.org.uk/merg_resources/cbus.php
Her kan du laste ned skjema, Byggesett selges til medlemmer - koster ca. kr 250 i medlemskap pr. år.
|
Posted By: programmeringssporet
Date Posted: 18 mai 2015 at 22:21
glennefj wrote:
Kult! Utrolig hvor mye man kan få til med veroboard og relativt enkle kretser.
Flott at du lager eksempler for "vanlige" mennesker. Kanskje du på sikt hadde kunne laget enda enklere eksempler. En tutorial over 10 guider hvor man går fra ét lys til en full stasjon. Jeg syns det er noe vanskelig å henge med på de større oppsettene, spesielt når man raskt må tenke på utvidelse.
Det er kanskje bare meg, jeg er helt noob når det gjelder lyssignalene, hvor mange, plassering, type tegn etc, så det blir ekstra mye å henge med på når det begynner å bli mange Arduino som jobber sammen. Jeg tenker at det beste hadde vært å starte med ét kort, som så kan kobles opp mot en chip som utvider I/O, uten å utvide med flere kort.
For min del tenker jeg en sirkel/oval bane med én stasjon og ett tog. Etterhvert to tog som reagerer på sensorer, og oppdaterer lys tilsvarende, så man har et lite utgangspunkt man utvider, f.eks. to stasjoner, togstall etc.
Bare kjappe ideer fra min side. Jeg ville satt veldig stor pris på det iallefall :) |
Hei,
Hvis du ser på innlegg nr 7 : Tospors stasjon med innkjørsignal i begge retninger på denne siden - er dette det enkleste eksempelet jeg har laget. Start med en Arduino UNO og to tre eller to-lys sygnaler, og evt noen brytere - og du er igang. Jeg anbefaler signalene fra Skala Design ( http://www.sidespor.no/index.php?route=product/category&path=66_67" rel="nofollow - http://www.sidespor.no/index.php?route=product/category&path=66_67) alternativt kan du jo også teste med vanlige lysdioder (med 1k motstand fra 5v, til anode [lange benet] og katoden [korte benet] koplet til den riktige inngangen på Arduinoen)
|
Posted By: programmeringssporet
Date Posted: 18 mai 2015 at 22:37
Liten stasjon i enden av et sidebane.
Jeg har en liten enkeltsporet sidebane som ender i en liten to-spors stasjon. Banen betjenes av http://forsk.njk.no/mdb/mdb.php?allefoto=1&hid=165&jernb=&art=&aut=&eng=" rel="nofollow - Bmdeo 10 og i fremtiden også http://forsk.njk.no/mdb/mdb.php?allefoto=1&jernb=&art=&type=77&aut=&eng=" rel="nofollow - Bmdeo 9 (Når Brawa kan levere). For denne stasjonen skal jeg ha innkjørsignal med forsignal, og to- og trelys utkjørsignaler. For å teste og utvikle styringen ser testoppsettet mitt slik ut :
Chipkit UNO32 kortet til venstre, kontrollerer utkjørsignaler, og kommuniserer med PC / JMRI via USB og via serieporten (pin 39,40) med Leonardoen (til Høyre) som skal styre innkjør og innkjør forsignal). Foreløpig benytter jeg en Leonardo her, (fordi den har separat debug på USB), men regner med å benytte en Leonardo (istedenfor UNO32) og en UNO (istedenfor Leonardoen) når programvaren er ferdig.
|
Posted By: programmeringssporet
Date Posted: 24 mai 2015 at 01:30
Melodi Grand Prix versjonen er ferdig.
Denne støtter oppsettet i forrige innlegg med en UNO32 for utkjørsignaler (Signal 11 og 12). og en Leonardo for innkjør med forsignal (Signal 21) og utkjør forsignal (Signal 22) på den samme masten. Denne versjonen mangler fortsatt logikk - slik at signalene må styres fra f.eks. JMRI. Alle signaler skal sendes via USB til UNO 32. Kommandoene er (starter med kolon slutter med semikolon):
// :S0FE0NF0000100030B0000; Signal 11 status 0 // :S0FE0NF0000100030B0100; Signal 11 status 1 // :S0FE0NF0000100030B0200; Signal 11 status 2 // :S0FE0NF0000100030B0300; Signal 11 status 3 // :S0FE0NF0000100030C0000; Signal 12 status 0 // :S0FE0NF0000100030C0100; Signal 12 status 1 // :S0FE0NF0000100030C0200; Signal 12 status 2 // :S0FE0NF000010003150000; Signal 21 status 0 // :S0FE0NF000010003150100; Signal 21 status 1 // :S0FE0NF000010003150200; Signal 21 status 2 // :S0FE0NF000010003150300; Signal 21 status 3 // :S0FE0NF000010003160000; Signal 22 status 0 // :S0FE0NF000010003160100; Signal 22 status 1 // :S0FE0NF000010003160200; Signal 22 status 2 // :S0FE0NF000010003160300; Signal 22 status 3
Status 0 - er slukket signal Status 1 - er Rødt Status 2 - er et grønt Status 3 - er to grønne
http://programmingtrack.no-ip.org/sw/arduino/Controller02080102.zip" rel="nofollow - http://programmingtrack.no-ip.org/sw/arduino/Controller02080102.zip
Denne versjonen skal installeres både på UNO32 og Leonardo kortet. Hvis de er sammenkoplet når de starter opp samtidig - vil de kommunisere. Hvis ikke vil de oppføre seg som to separate kontrollere (to innkjør pr. kort) Programkoden oppfører seg forskjellig avhengig av hvilket kort de kjører på.
I neste versjon skal UNO32 kortet styre logikken - deretter planlegger jeg å også støtte UNO for innkjørsignalet. (Dagens versjon feiler med kompilering mot UNO)
|
Posted By: programmeringssporet
Date Posted: 29 mai 2015 at 21:43
Posted By: jarleek
Date Posted: 29 mai 2015 at 23:32
Hvorfor ikke bruke en vogn med bevegelige dører?
------------- Jarle VE Fersking i TMJK
|
Posted By: programmeringssporet
Date Posted: 08 juni 2015 at 22:28
jarleek wrote:
Hvorfor ikke bruke en vogn med bevegelige dører? |
1. prioritet er en vogn med godt strømopptak. Da tror jeg en 4 akslet vogn med korte boggier er best egnet. Det er vel stort sett kun Fleischmann som har vogner med bevegelige dører, men jeg har ikke funnet noen med aksler i kort boggie. vet du om noen ?
|
Posted By: programmeringssporet
Date Posted: 10 juni 2015 at 15:49
jarleek wrote:
Hvorfor ikke bruke en vogn med bevegelige dører? |
Nå har jeg målt litt. En Arduino Pro Micro er for lang til å stå på tvers. Jeg har derfor kommet til at det enkleste er å sette på noen Arduino 6 Pins avstandsstykker slik at kortet kommer over taket. Dette er en grei løsning mens jeg utvikler programkoden til Arduinoen. Etterpå har jeg ikke behov for USB ledningen. Det er jo litt upraktisk å kjøre rundt med en PC på slep !
|
Posted By: programmeringssporet
Date Posted: 13 juni 2015 at 22:56
EL14 - har fått Piko motor :
Det viste seg at det var nødvendig å fjerne enda mere av rammen, for å få plass til svingjulene. Det som gjenstår nå, er å slipe litt av loddingene på siden, fylle noen tomrom i skjøtene av rammen med epoxy, og korte ned koplinksleddet mellom bogiene og svinghjulene. Deretter kommer elektronikken, men først skal det prøvekjøres.
Hvis jeg blir fornøyd med prøvekjøringen - skal jeg regne på om hva det koster å bestille reservedeler for å bygge om de andre EL 14 lokkene, eller om det er like greit å bestille komplette lok, nye eller brukte.
|
Posted By: programmeringssporet
Date Posted: 29 juni 2015 at 23:39
Bluetooth kommunikasjon til målevognen
For å teste ut Bluetooth styring av målevognen, har jeg laget et lite testoppsett. Dette består av (fra toppen av bildet) en http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/bluetooth-transceiver-p87942" rel="nofollow - HC-06 Bluetooth modul , Et http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/protoshield-p87944" rel="nofollow - eksperimentkort for Arduino , og en http://www.digilentinc.com/Data/Products/CHIPKIT-UNO32/chipKIT-Uno32-RevC_rm.pdf" rel="nofollow - Chipkit UNO32 , Arduinokort. Jeg valgte å bruke UNO32, fordi denne går på 3.3 Volt, som er den samme spenningen som HC-06 benytter. Det blir derfor kun 4 ledninger mellom Chipkit kortet og Bluetoothmodulen :
Rød - 3.3 Volt forsyningsspenning. Blå - Jord (0- volt) Orange - Transmitt fra pin 40 på UNO32 (Serial1 out), til Receive på HC-06 Gul - Receive på pin 39 på UNO32 fra transmitt på HC-06
To små ting å være klar over med dette oppsettet, da prototypingkortet ikke er laget for UNO32 :
- Må bruke pinnen merket 3V istedenfor power (som er 5 Volt) på prototypingkortet.
- Pin 39 og 40 er ikke tilgjengelig på prototypingkortet - det er derfor nødvendig med et http://www.kjell.com/sortiment/el/elektronik/mikrokontroller/arduino/stackningsbar-stiftlist-p87899" rel="nofollow - ekstra sett lange Arduino pinner for å få avstand til prototypingkortet, slik at pinne 39 og 40 kan koples direkte til UNO32 under prototypingkortet.
Testoppsett
Neste skritt er programvare - deretter erstatte UNO32 kortet med en Arduino Pro Micro, enten i 3 Volts versjon, eller sette inn en spenningsfordeler mellom Arduino og HC 06..
|
Posted By: programmeringssporet
Date Posted: 23 juli 2015 at 23:41
Posted By: programmeringssporet
Date Posted: 24 juli 2015 at 00:01
Sluttrapport Programmeringssporet
Da er
utviklingen på programmeringssporet stoppet.
Årsaken til dette er flere, men hovedgrunnen er at hver gang jeg ønsker
å teste nye løsninger i programvare eller maskinvare, må jeg stoppe en stor del
av trafikken på anlegget mitt. Som en oppsummering har jeg laget denne
listen
- På
DCC, to-skinneanlegg er det to vanlige metoder for blokkdeteksjon : ”Current
Transformer block detector” eller Diode-drop, hvor en eller flere dider er koplet i serie
med strømforsyningen til blokken.
Spenningsfallet over dioden (normalt 0,7 Volt) benyttes til å detektere
strømforbruk. Jeg har benyttet en
Løsning jeg fant i en bok av Rutger Friberg ( http://www.hobby.se/index.php?action=m3&id=1&huvudID=1&temav=links&temac=links_train_rutger&temah=normal&fotID=1&stilmall=stilmall-A.php" rel="nofollow - http://www.hobby.se/index.php?action=m3&id=1&huvudID=1&temav=links&temac=links_train_rutger&temah=normal&fotID=1&stilmall=stilmall-A.php )
for mange år siden. Noen andre autoriteter
på DCC mener at diode-drop metoden fører til et dårlig DCC signal (som delvis
kan reduseres med spesielle dioder) , og derfor unøyaktig kontroll på
togene. Dette kan være en utfordring med
Automatisk styring. Jeg har ikke konkludert
enda, om dette er et problem hos meg
- Kabeldragningen
av DCC signalet er litt tilfeldig på mudulen min. Jeg vet ikke om dette påvirker anlegget mitt.
- Togdeteksjon
med diode-drop og Arduino fungerer bra, belegg blir rapportert til PC / JMRI i
løpet av 1/10 dels sekund. Dette bør
være ok.
- Avstandsmåling
med Ultralyd ser ut til å være en nyttig funksjon, men jeg må lage bedre
rutiner for å fjerne støymålinger.
- Lesing
av alle CV’er fra lyddekodere feiler ofte når det er hundrevis av verdier å
lese. Ofte feiler det fordi lok’et
flytter seg i løpet av utlesingen.
- Programmeringssporet
er plassert som et sidespor på en liten stasjon på hovedlinjen fra den største
sekkestasjonen på anlegget mitt. Den
konvensjonelle meningen på nettet ser ut til å være at et programmeringsspor
bør plaseres sentralt på anlegget, for å raskt kunne kjøre et lok inn på
sporet, for å endre CV’er. Det er nok
et godt utgangspunkt, men utfordringen
min er at jeg også benytter programmeringssporet for prøvekjøring – og da har
dette blitt en utfordring for meg, fordi jeg ønsker å kunne teste lok og CV
verdier uten å forstyrre trafikken på anlegget.
- Programmeringssporet
er plassert på en stasjon som også benyttes til å skifte sammen godsvognslerker
som kommer fra en sidebane, og skal videre på hovedbanen i et større tog. Programmeringssporet benyttes til dette – noe
som også begrenser hvor lenge jeg kan ha lok stående der uten å forstyrre trafikken.
- Nye
lok bør innkjøres. Produsentene
anbefaler ofte 15 – 20 minutter, først i en retning, og etterpå i den
andre. Dette forutsetter en
rundbane. Dette har jeg mulighet for ut
fra programmeringssporet, men igjen forstyrrer dette trafikken – fordi deler av
runnbanen er hovedlinjen.
- Jeg
har ofte ønsket å teste/innkjøre lok før DCC dekoder installeres. Ved innkobling av likestrømskontroller, blir
viktige deler av hovedlinjen utilgjengelig for andre tog, slik at denne
muligheten sjelden benyttes.
- Anlegget
er plassert på et loft. Mye av
uviklingen av programvare og elektronikk ønsker jeg å gjøre et annet sted. Modulen er for stor og tung til at jeg lett
kan flytte den (bære den ned en trapp alene), og det er for mye arbeid å fjerne
tog fra modulen, og koble fra FREMO grensesnittet.
Programmeringssporet 2.0 skal benyttes
til videre utvikling.
Første versjon av kravspesifikasjonen
for denne er :
- Modulen
skal være lett, og liten, slik at den kan flyttes enkelt. Mål: vekt under 5
Kilo.
- Skal
ha mulighet for enkel prøvekjøring, uten å benytte hovedspor.
- Skal
ha rundbane på modulen.
- Skal
ha Fremo grensesnitt i en ende, men vil ellers ikke følge normen (bl.a. fordi
jeg må ha krappe svinger). Skal også
kunne fungere som en snumodul.
- Ca.
150 cm lang.
- Skal
ha Minimal bredde, men må kunne ha en sirkel (Roco R2, eller Trix R1 – ca. 36 cm
radie). Sidespor kan benytte Roco R1, men alle lok må kunne benytte modulen/programmeringssporet
uten å kjøre inn på R!)
- Skal
inneholde en Inglenook ( https://en.wikipedia.org/wiki/Inglenook_Sidings" rel="nofollow - https://en.wikipedia.org/wiki/Inglenook_Sidings )
– som skal kunne brukes uten å påvirke trafikk
på hovedlinjen.
- Skal
være mulig å kjøre tog automatisk, både Digitale og Analoge lok samtidig, ved
hjelp av tradisjonell blokkstyring.
- Skal
være mulighet for stalling av minimum 5 lok på sidespor, både digitale og analoge.
- Hele
modulen skal være styrt i realtime ved hjelp av Arduinoer hvor responstider er
konstante.(ingen PC’er / Raspberry Pi hvor responstider er variable).
- Kun
en strømforsyning til modulen (sansynligvis 12 eller 15 eller 19 volt
likestrøm)
- Ethernet
og/eller Can-Bus for kommunikasjon mot andre moduler / PC.
- DCC
kablingen skal optimaliseres – og unngå bruk av diode-drop detektor, kun ”current
Transformer block detector” og IR (Infrarød deteksjon)
Her er første skissen av en mulig løsning, hvor sporene går i to
høyder. Togene kommer inn over Fremo
grenssnittet. Etter ”stasjonen” kjører
de en etasje ned i modulkassen.
Denne skal testes med Trix skinner.
|
Posted By: programmeringssporet
Date Posted: 03 august 2015 at 20:19
En enkel testmodul.
Skissen for programmeringssporet II har minst tre utfordringer :
- Spor over to etasjer med for stor stigning mellom etasjene.
- Den er for stor.
- Den er for kompleks, og tar for lang tid å lage.
Jeg planlegger derfor en mindre testmodul : Jeg har gjort noen tester på å flytte store moduler. Jeg ønsker en lett flyttbar modul, og da er maksimum bredde 60 centimeter jeg kan få gjennom en dør uten å vinkle modulen. Lengden begrenset til ca 145 cm. En slik modul blir lett flyttbar av meg alene. For å teste konseptet har jeg laget en aluminiumsramme av 2x2 cm firkantprofiler. Rammen er fylt med en 2 cm støyisolasjonsplate, og over ligger det en 3 mm Kapa-plate. Dette fungerer ok for uttesting, men jeg må nok lage en mere stabil trase for skinnene, men vekten på ca 2 kilo så langt for hele modulen med skinner – er et godt utgangspunkt for en lett flyttbar modul. Jeg har brukt Anyrail for å lage en skinneplan, som nå skal testes med skinner jeg har liggende :
Utfordringen med denne er først og fremst at den benytter Radie 25 cm. For å innkjøre og test lok og motorvogner som ikke klarer Radie 25 cm, kan disse pendelkjøres på det gule sporet, som er laget med Trix skinner 36cm radie og større. For mindre lok, 2 - 3 akslede ? kan den røde sløyfen benyttes. Det er også mulig å snu loket via det blå, grønne og brune sporet. Disse sporene er basert på Roco's gamle 2.5 mm (kode 100) skinner - som fikk ut av produksjon for ca 15 år siden. Pensen ST-240 er en Peco Setrack 100. Sidesporet benytter Peko Streamline 100.
Modulen vil gjøre det mulig å innkjøre / varme opp et lok, på rundbanen, eller pendle på gult spor samtidig som Inglenook sidesporet kan benyttes.
Elektrisk tenker jeg at det skal være mulig å kjøre hele modulen med DCC eller Analog Likestrøm, Alternativt kan modulen skilles i to, ved hjelp av et rele. Da blir ytre spor (gult og rødt) en strømkrets, og Inglenookæen (grønne) en annen. Det skal være mulig å velge DCC eller Analog uavhengig for disse to. Lilla og brunt spor, skal være strømløse i dette tilfellet.
Neste fase er å test ut hvilket materiell som kan kjøre på 25 cm radie. Hvis det fungerer for små lok, og korte godsvogner - kommer jeg nok til å bygge modulen.
For innkjøring av større lok og motorvogner tenker jeg på å lage en utvidelsesmodul (totalstørrense 145 x 80):
Eller hvis jeg vil benytte modulen, som en snumodul (total 200 x 80):
|
Posted By: programmeringssporet
Date Posted: 04 august 2015 at 17:07
Da har jeg laget et enkelt testspor for å teste noen lok og vogner på 25 cm radie:
Det fungerte overraskende bra :
3 akslet : Roco Di5, ok Liliput, NSB type 25, ok
Damp 3 drivaksler og løpeaksler : 1-3-0 Trix KPEV T12, ok 1.3.1 FleishmannDB BR 64
Fireakslede Diesel / Elektro DB BR 218, Roco, OK DB BR 218, Piko, OK DB BR 111, Roco, OK NSB EL 11, NMJ, OK NSB EL 13. Lima OK NSB EL 13, NMJ, Nei NSB EL 16, Roco, ok SJ RC4, Roco, ok NSB Di8, NMJ, OK Seksakslede Diesel / Elektro: NSB Di3, Heljan, ok NSB Di3, NMJ, OK NSB Di3, ROCO, nei NSB EL14, Lima, OK NSB EL14, med forkortet Piko DR BR 119, OK DR BR 119, Piko, nei,
Motorvogner : NSB type 9 og type 10, nei
Vogner :- ukoblet Korte 2 akslet, f.eks, DB G10, Roco, OK. ROCO NSB GP4, OK Heljan NSB GP4, OK NMJ NSB, His, OK NMJ, NSB Gbs, nei NMJ, NSB Rps, Nei Målevognen, basert på Roco DB Bromberg, 4 akslet, 205 mm. ok NMJ, B3 - ok
Tog Jeg har også forsøkt å kjøre små tog med målevognen og en G10. Med Di5, KPEV T12 og Piko BR 218 fungerer det bra med Fleischmann kortkoblinger, men med Liliput NSB type 25 ble det avsporing ved overgangen mellom høyre og venstresving, bakover. Basert på disse testene tror jeg at modulen vil fungere bra med f.eks. Epoke 1 materiell, små skiftelok, og for testing og innkjøring av omtrent 75 % av alle lokomotivene mine. Det eneste vesentlige som ikke fungerer er NMJ el 13, motorvogner, og store 6 akslede el og diesel , samt store damplokomotiver type gammeltysker, stortysker etc. Lange vogner må også unngås - også p.g.a. overheng mot parallelle spor. - Da er det bare å starte byggingen av modulen,
|
Posted By: programmeringssporet
Date Posted: 07 september 2015 at 02:15
Testmodulen er klar for prøvekjøring.
I dag limte jeg sammen modulen. Litt usikker på om dette er interessant for andre. Legger derfor kun ut bilder av modulbyggingen.
|
Posted By: programmeringssporet
Date Posted: 01 oktober 2015 at 00:54
Testsporet - Test 001, måling av Strømforbruk.
Jeg har gjort en enkel test av strømforbruket. Jeg benytter en Laboratoriestrømforsyning, Velleman PS 3005D (0 - 30 V, 5A), og to lokomotiver Fleishmann DB BR 64 og Roco NSB Di5. BR64 har en Zimo dekoder innebygget, Di 5 har ikke dekoder.
Forsøket går ut på å måle strømforbruket, og se om jeg kan se forskjell på når loket kjører i krappe kurver. Ingen av lokene har vært kjørt tidligere. Jeg stilte strømforsyningen på 5 Volt. På de første rundene med BR 64, målte jeg strømforbruket til ca 105 mA på rettstrekningen og ca 128 mA i R1 kurven (R=25mm). Etter ca 20 minutter innkjøring målte jeg forbruket til 84 mA på rettstrekningen og 111 mA i kurven. Jeg vet ikke om årsaken til endringen er innkjøringen eller at motoren er varm – det finner jeg ut neste gang jeg tester. For Di5 98 mA og 105 (uten innkjøring / oppvarming).
Konklusjonen på forsøket er at det er fullt mulig å se på strømforbruket om loket sliter i kurvene. – Kanskje dette også kan brukes til å måle hvor lang innkjøring nye lok bør ha – Stoppe innkjøringen når strømforbruket blir konstant ?
Neste skritt er å lage et system for å logge strømforbruket. Her har jeg to alternativer:
- Velleman strømforsyningen har RS-232 for tilkopling til PC. Denne protokollen er relativt godt kjent så det er et reelt alternativ å lage et program for å lese strømforbruket fra strømforsyningen.
- Kople opp en strømmåler til en Arduino og logge derifra.
|
Posted By: programmeringssporet
Date Posted: 06 oktober 2015 at 00:47
Arduino - strømmåling
http://www.sparkfun.com/datasheets/BreakoutBoards/0712.pdf" rel="nofollow - Allegro
ACS712 kan benyttes til dette. Dette er
en Halleffekt basert strømmåler, slik at Arduinoen kan være elektrisk isolert
fra kretsen som måles.. Jeg benytter en
5 Ampere version av ACS712. Den skal
strømforsynes med 5 Volt og sender ut et Analogt signal, 1.5 Volt når det går
-5 Ampere gjennom kretsen . 2.5 Volt når det ikke går strøm, og 3.5 Volt når
det går 5 A gjennom kretsen. Ved å kople
denne til Arduino Analog 0, kan jeg måle strømforbruket med denne Sketchen :
int sensorValue;void
setup(){
Serial.begin(9600); // sets the serial port to 9600
}
void loop(){
sensorValue =
analogRead(0); // read analog input
pin 0
Serial.println (sensorValue,
DEC); // prints the value read
delay(100); // wait 100ms for next
reading
}
Her
får jeg direkte verdien fra Arduino Analog les. Denne varierer mellom 0 og 1023 (10 bits oppløsning). Jeg får derfor verdien 512 for 0 A. (2.5
Volt). Jeg ser at verdien øker når loket
kjører – men det ser ut som om oppløsningen er for liten til å måle små endringer i strømforbruket,
som når loket kjører inn i en skarp kurve.
|
Posted By: programmeringssporet
Date Posted: 11 oktober 2015 at 22:55
Rundbane med en Raspberry Pi, to Arduinoer,et relekort, et MBED kort, en IR detektor, en strømmåler og 1350 nye programlinjer
Fra venstre : midlertidig batteri 9 Volt, Raspberry Pi 2 model B, Arduino UNO med relekort for styring av kjørestrøm, Arduino Leonardo som er koplet til IR-Sensor, http://developer.mbed.org/platforms/FRDM-KL46Z/" rel="nofollow - MBED FRDM-KL46Z (kr 156 hos Digikey), og strømmåler.
Dette er resultatet etter 1 og en halv måneds bygging. Jeg kan nå kjøre toget rundt med 5 Volt, og kan stoppe toget hvorsomhelst i sirkelen. Dette fungerer ved at IR-Sensoren registrerer hver gang toget paserer. Ut i fra dette regnes hastigheten ut, og derved kan toget automatisk stoppes hvorsomhelst i sirkelen. Ganske lite funksjonalitet, men grunnlaget er lagt. Neste skritt er rele for reversering. Deretter kommer servostyring av sporveksler, og relestyring av strøm for parkering av lok på sidesporene. En annen ting som står høyt på listen, er en ordentlig strømforsyning. I dag må modulen forsynes med 5 volt og 9 volt. Planen er en strømforsyning på 19 Volt (Gammel laptop strømforsyning ?). Og spenningsstabilisatorer : 78S15, 78S12, 78S09 og flere 78S05 kretser for å justere spenningsforsyningene til 15,12,9, og 5 Volt. (standardversjonen 7812 gir 1 Ampere, S versjonen 78S12 gir 2 Ampere)
http://www.conrad.de/ce/de/product/497086/Train-Modules-73379-IR-Lichtschranke;jsessionid=D0E53B320B41884147C0BD84D3A3A43E.ASTPCEN05?ref=searchDetail" rel="nofollow - Ir detektoren kjøpte jeg i dette tilfellet hos conrad.de ca 18 euro, istedenfor å bygge den selv.
MBED kortet er et forsøk på å få høyere oppløsning på strømforbruket (16 bits ADC istedenfor 10 bits)
Det som er litt morsomt med MBED er at de har en on-line compiler, slik at det ikke er nødvendig å installere et utviklingsmiljø på PC, en. Istedenfor bruker man webbrowser til å skrive koden, sende den til kompilering, og deretter er det bare å laste ned eksekverbar kode, og dra denne inn på kortet, som emulerer et USB minne. http:///www.youtube.com/watch?v=7N2RxktXwE4" rel="nofollow - Jeg fant en video på youtube som iliustrer dette godt.
|
Posted By: programmeringssporet
Date Posted: 18 oktober 2015 at 21:58
Et sidespor med Arduino, Servo og 3D Printer.
Jeg har en pens, Peco Setrack som må styres. For første gang har jeg forsøkt å gjøre dette med en servo :
I og med at jeg ikke har en modulkasse til å montere servoen i (kun en to cm dyp ramme) har jeg montert servoen ved siden av pensen. Det er ok i dette tilfellet fordi alt blir inne i en tunell.
Jeg har laget et lite Arduino program som starter med å stille servo på midtstilling, 90 grader. Deretter har jeg koplet Servoen mekanisk til pensen. Selve servoen er montert i et 3D printet feste. Ved å gi kommandoer til Arduino programmet kan jeg styre servoen til endepunktene som i utgangspunktet er 80 og 100 grader. I hver av posisjonene kan jeg fininstille endepunktene ved å sende kommandoer fra PC'en til Arduinoen. Til slutt sender jeg en kommando for Å lagre endepunktene i Flash minnet (EEPROM) i Arduinoen - slik at den husker dem til neste gang. Jeg kan også styre hastigheten. Dagens versjon av programmet støtter kun en servo - neste versjon vil støtte 10 servoer. Jeg må også legge inn funksjonalitet for å kunne styre servoen fra JMRI
Kjell & co, har tilbud på 3D-printere så da var det bare å gå å kjøpe en, for å se hva den kan brukes til. (Dette 3D festet er ikke designet av meg). På bildet ser man hvordan servoarmen driver en utenpåliggende arm som gjør at servoen kan bevege seg mere. I dette tilfellet endte jeg opp med at servoen flytter seg mellom 72 og 120 grader.
Jeg har laget en vinkel på pianotråden for å få en fjærende virkning på tungene. Dette fungerer bra, men på neste pens skal jeg forsøke med tynnere pianotråd. De første forsøkene ble gjort med fjæren i pensen, men jeg fikk mye bedre saktebevegelse da jeg fjernet denne.
Servofestet har også slisser for montering av mikrobrytere, men i og med at det ikke finnes elektrofrog versjoner av settrack vekselen, som er den eneste jeg har plass til her, er dette ikke montert.
Servofestet er laget for å kunne monteres både under, og ved siden av vekselen.
Kostnad for denne løsningen ble kr 15 for servofestet, kr 50 for servo, og kr 150 (delt på 10 penser) for Arduinoen
------------------------------------------------------------------------------------ Her er en liten logg fra kjøringen : -------------------------------------- Servo controller ready> NewPos :180 NewPos :120 NewPos :120 72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119, new pos:120 Servo controller ready> NewPos :0 NewPos :0 NewPos :72 120,119,118,117,116,115,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73, new pos:72 Servo controller ready> M:90:0:72:1:120:ms:25:pos:72 Servo controller ready>
Nederst ser vi innstillingene som er lagret i EEPROM : M:90:0:72:1:120:ms:25:pos:72
M:90 - midtposisjon 0:72 - "ikke avvik" er 72 grader 1:120 - avvik er 120 grader ms:25 - Servo skal flytte seg 1 grad hvert 25 millisekund pos:72 - startposisjon når strømmen kobles til - "ikke avvik".
Øverst på loggen ser vi at kommandoen gå til posisjon 180 grader (avvik) programvaren endrer denne til 120 grader som er konfigurert som maks utslag. deretter ser vi hvordan posisjonen endrer seg for hvert 25 ms inntil den kommer til 120 grader.
tilsvarende, kommando 0 grader blir endret til 72 grader, før kommandoen blir styrt til denne posisjonen
|
Posted By: jhh61no
Date Posted: 18 oktober 2015 at 22:38
Veldig spennende det du holder på med !
Vet ikke hvilken tykkelse du bruker på pianotråden men jeg bruker 0,8mm for da ivaretar du en del fleksibilitet samtidig som den er stiv nok.
------------- Jarle H Hansen
Bergen
Digitrax SuperChief/Empire Builder. TrainController Gold/TrainProgrammer 8.0B5,LDT, LocoIO, Zimo++
|
Posted By: GETEL57
Date Posted: 20 oktober 2015 at 00:12
Jeg har ikke tilstrekkelig kompetanse til å følge alt du skriver, men interessant. I stedet for IR-sensor, kan du bruke RFID (JMRI støtter dette)? Da kan du også koble RFID informasjonen mot sporveksler for en hensetting av loket i sidespor?
------------- Terje
|
Posted By: programmeringssporet
Date Posted: 23 oktober 2015 at 16:04
jhh61no wrote:
Veldig spennende det du holder på med !
Vet ikke hvilken tykkelse du bruker på pianotråden men jeg bruker 0,8mm for da ivaretar du en del fleksibilitet samtidig som den er stiv nok. |
Hei, Takk for tilbakemelding og beklager sent svar - er på reise. Jeg fikk målt pianotråden min - den er 0.8 mm. I og med at jeg skal bruke separate kontakter for hjertestykke-strøm, tror jeg at det ikke nødvendig med noe særlig press. Peco har sterke fjærer på sine veksler, men alle andre fabrikater, som jeg har prøvd, har mye svakere press. Jeg tror at hvis jeg fjerner fjæren i Peco vekslene - vil denne fungere helt ok med svakere fjæring. Dette skal jeg prøve på den neste.
|
Posted By: programmeringssporet
Date Posted: 23 oktober 2015 at 16:15
GETEL57 wrote:
Jeg har ikke tilstrekkelig kompetanse til å følge alt du skriver, men interessant. I stedet for IR-sensor, kan du bruke RFID (JMRI støtter dette)? Da kan du også koble RFID informasjonen mot sporveksler for en hensetting av loket i sidespor? |
Hei,
Takk for tilbakemelding - og beklager sent svar.
I utgangspunket skal datastyringen vite hvor hvert enkelt lok og vogn er, og vite hvem som er koblet sammen i hvert tog. Det burde derfor ikke være nødvendig med RFID. Unntaket er når jeg gjør manuelle forflytninger av materiell. f.eks. sette et nytt lok eller vogn på sporet.
På leting etter gamle skinner til testmodulen, så jeg også gjennom det jeg har av N-skala. Ved forsøk på å lage noen togsammensetninger med dem, fant jeg ut at stort sett alle passasjervognene ligger i feil esker. Det er en stor utfordring for meg å holde orden på hvor vogner og lok er lagret, og å få de tilbake i riktig eske. En mulighet jeg har sett på er å bruke en strekkodeleser (kjøpe den for et par år siden, men har ikke prøvd den) på eskene (som ofte har ferdige strekkoder) - og hvis jeg hadde RFID transpondere på vogner og lok kunne jeg fått en ganske automatisert prosess med å pakke ut og pakke ned vogner og lok. Jeg har derfor bestilt noen RFID brikker - som jeg tenker å montere i noen godsvogner. Lokomotiver kan jeg stort sett identifisere ved å lese CV'er fra dekoder. Det optimale hadde vel vært å identifisere med bildegjenkjenning, og kanskje også lese loknummer.
|
Posted By: einjen
Date Posted: 24 oktober 2015 at 13:29
Hei.
Hvor har du kjøpt rfid brikker/transpondere
------------- --
Einar Næss Jensen
Words of wisdom are easily spoken, but they are cheap talk
http://einarblog.homemade.no/einarblog" rel="nofollow - http://einarblog.homemade.no/einarblog
|
|