Programmeringssporet |
Post Reply | Page 123 7> |
Author | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
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 ). 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/) kort for optisk spordeteksjon, og også et Arduino kort (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 ), og en Raspberry PI (http://no.wikipedia.org/wiki/Raspberry_Pi ). Neste blogginnlegg vil inneholde mere om disse kretskortene, og hvordan de er tenkt benyttet. Edited by programmeringssporet - 18 desember 2013 at 01:46 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thobbe
Veteran Joined: 17 september 2012 Location: Norge Status: Offline Points: 122 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Jeg er skikkelig interessert i blokkdeteksjon med arduin. Men jeg skjønner ikke noen ting som helst av programmering...
Dette ser skikkelig spennende ut! Edited by Thobbe - 12 desember 2013 at 14:12 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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); } |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
einjen
Veteran Joined: 17 september 2005 Location: Norway Status: Offline Points: 1335 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 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 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bkv1
Veteran Joined: 19 desember 2010 Location: Norge Status: Offline Points: 247 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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
Edited by bkv1 - 15 desember 2013 at 11:26 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hilsen Bjørn
N-skala, Peco 55, Digikeijs DR5000, JMRI. Tysk diesel nyere tid |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Thobbe
Veteran Joined: 17 september 2012 Location: Norge Status: Offline Points: 122 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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) 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 ) · DCC decoder. · Servostyring.
Andre : · OpenLCB/NMRAnet Developer and Early Adopter Kit. Eksperimentsett for NMRAnet / OpenLCB (http://nmranet.org/ ) · DCC Command Station (http://www.oscale.net/en/simpledcc ) · Rfid http://blog.arduino.cc/category/wireless/rfid/
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/ ) 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) . Jeg kjøpte bl.a. en Ultralyd sender og mottager (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 Edited by programmeringssporet - 16 desember 2013 at 22:27 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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: Edited by programmeringssporet - 27 desember 2013 at 14:12 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. Edited by programmeringssporet - 02 januar 2014 at 02:11 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ses
Fremo og MjF medlem Joined: 09 november 2006 Location: Norway Status: Offline Points: 3922 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Interessant innlegg! Du spør i starten om "hvorfor leker vi i det hele tatt." Hvis man er interessert i å fordype seg i dette kan jeg anbefale klassikeren på området, nederlenderen Johan Huizingas Homo Ludens fra 1938, som fortsatt gis ut i nye oversettelser og utgaver. En dansk oversettelse (Huizinga, J. (1963). Homo ludens: om kulturens oprindelse i leg. København: Gyldendal) hvis man ikke vil/kan lese den i engelske eller tyske oversettelser, og kan sikkert fås tak i på et bedre bibliotek. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Svein S
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 :
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. Edited by programmeringssporet - 03 januar 2014 at 01:22 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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). Edited by programmeringssporet - 11 januar 2014 at 23:02 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 )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 ) . 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://programmingtrack.no-ip.org/dynamic.php?system=ENGINEDB&page=10000&id=0Men 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. Edited by programmeringssporet - 19 februar 2014 at 13:31 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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)); } Edited by programmeringssporet - 20 februar 2014 at 16:38 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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:
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
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 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/ Edited by programmeringssporet - 27 mars 2014 at 10:30 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dag Cato
FREMO-forummedlem Joined: 01 november 2004 Location: Norway Status: Offline Points: 874 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
Edited by programmeringssporet - 06 juni 2014 at 23:26 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 :
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.
- 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. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 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.
Edited by programmeringssporet - 06 august 2014 at 00:49 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dag Cato
FREMO-forummedlem Joined: 01 november 2004 Location: Norway Status: Offline Points: 874 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
einjen
Veteran Joined: 17 september 2005 Location: Norway Status: Offline Points: 1335 |
Post Options
Thanks(1)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
einjen
Veteran Joined: 17 september 2005 Location: Norway Status: Offline Points: 1335 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dag Cato
FREMO-forummedlem Joined: 01 november 2004 Location: Norway Status: Offline Points: 874 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Raspbian
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MVH
DC Steinsnes? Hvilken Steinsnes? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 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 # sudo apt-get install tightvncserver #tightvncserver vncserver :0 -geometry 1920x1080 -depth 24 -dpi 96 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
einjen
Veteran Joined: 17 september 2005 Location: Norway Status: Offline Points: 1335 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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) Edited by programmeringssporet - 05 september 2014 at 22:24 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
programmeringssporet
Veteran Joined: 12 desember 2013 Status: Offline Points: 405 |
Post Options
Thanks(0)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 :
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 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 :
Edited by programmeringssporet - 23 juli 2016 at 05:59 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Post Reply | Page 123 7> |
Tweet |
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |