DIY DRO

Aloittaja jussi, 15.05.11 - klo:20:57

« edellinen - seuraava »

0 Jäsenet ja 1 Vieras katselee tätä aihetta.

Tauru

PC on ylimääräinen härpätin, mutta tässä tapauksessa minun kannalta helpoin vaihtoehto. Myös edullinen koska tähän riittää mikä tahansa vanha kone mihin asentuu MS-DOS tai joku sen klooni.

saumik

tosta ajattelin itse lähteä liikkeelle...
http://www.poscope.com/pokeys56e
kaikki minkä on joku tehny...voi purkaa ja tehdä paremmaksi

pave


Tapani Honkanen

No eipä ollut kallis. Eipä silti Giganttikaan noita tuolla hinnalla luovuta. Toisaalta kauhistuttaa laittaa niinkin jaloa laitetta kuin tietokone/läppäri tekeen jotakin noin  yksinkertaista hommaa. No, kyllä minäkin annan nyt tosi yksinkertaista purtavaa läppärille. Jos en vetoaisi köyhyyteeni enkä tulorajoitteisuuteeni, niin kyllä nuukuus on yksi hyvistä ominaisuuksistani. En minä siistä kärsi mutta vaimo kyllä joskus ehkä häpeää, ison talon tytär.
TH

saumik

kaikki minkä on joku tehny...voi purkaa ja tehdä paremmaksi

Kremmen

#65
Vanhat PC:t ei tosiaan paljoa maksa ja verrattuna mikrokontrollereihin, niin onhan jopa kivikautisessa Penassakin ihan eri tavalla vääntöä kuin jossain 8-bittisessä pikkukivessä. Toisaalta PC:t on isoja möhkäleitä ja määrätyssä mielessä hirveän rajoittuneita. Kovin montaa PC:n rohjoa tuskin kukaan viitsii teipata koneen kylkeen hoitamaan kukin yhtä asiaa. Sitten maailmalta saa mitä ihmeellisimpiä ja hienompia rakennuspalikoita eri tarkoituksiin; niitähän on tähänkin keskusteluun jo linkattu kopallinen. Noista saa varmasti väsättyä yhtä ja toista, eikä ne varmasti ole huono ratkaisu kun vaan sopivan löytää.

Kuitenkin minulla on tästä omat ajatukseni ja ne tulee tässä. Jokin aika sitten kirjoittelin omiiin projektitarpeisiin tulevasta kuormitusmittarista jonka siis meinaan tehdä ainakin itselleni ja joka on kaikkien halukkaiden vapaasti käytettävissä. Osin tämänkin keskustelun pohjalta kehitin ajatusta pikkuisen eteenpäin ja lopputulos olisi kuvan kaltainen. Ei kannata pyörtyä, tuohon on kuvattu kaikki erilliset elementit mitä toteutuksessa voi olla; minimi kuitenkin on 1 palikka. Mutta jos avaan vähän tuota konseptia niin kuva varmaan hahmottuu.



Perusidea on siis kytkeä signaalien tms mittausyksikkö / yksiköitä ja datan näyttöyksikkö / yksiköitä toisiinsa yksinkertaisen 2-johtimisen Inter-IC -väylän eli I2C:n avulla. Tuon väylän on aikanaan speksannut Philips, nyk. NXP mikropiirien väliseen sarjamuotoiseen tiedonsiirtoon. I2C on täysin passiivinen väylä, sen ainoat komponentit ovat data-ja kellolinja sekä niiden ylösvetovastukset jossain väylän varrella. Tämä standardi on hyvin tunnettu ja laajasti tuettu, sille on olemassa massiivinen määrä dokumentaatiota ja väylää tukevia komponentteja. Eli siinä suhteessa aika varma valinta. Konseptikuvassa on näytetty myös mahdollinen joskaan ei missään nimessä pakollinen väylän jatkaminen erityisten väylävahvistimien avulla. Tällä on mahdollista kytkeä mukaan kaukana sijaitsevia yksiköitä, vähintään satojen metrien päässä, niin haluttaessa.
Jokainen väylään liittyvä yksikkö toteutetaan määrätyn peruskuvion mukaan:
- Vakiona yksikössä on I2C-väyläliityntäelektroniikka joka yksinkertaisimmillaan ei ole mitään - lähes kaikissa kaupasta saatavissa mikrokontrollereissa kun on I2C-liityntämahdollisuus suoraan.
- Ohjelmallisten toteutusten yhdenmukaistamiseksi ja ympäristön vakioimiseksi käytetään pientä reaaliaikakäyttistä. Varmin veto on FreeRTOS joka lienee maailman yleisin sulautettujen järjestelmien open source-käyttöjärjestelmä ja on portattu kymmenille eri prosessoreille ja kontrollereille.
- Kytkennät reaalimaailman ja sovelluksen välillä tehdään laiteajureilla jotka ovat FreeRTOS-käyttiksen taskeja. Nämä vakioidaan mahdollisimman pitkälle ainakin niin, että I2C-väylän toiminnasta ei tarvitse sovellustasolla juuri kiinnostua. Samoin valtaosa mittaus-, signaalinkäsittely- ja näyttölaiteprosessoinnista hoidetaan vakiokirjastojen ja ajuritaskien avulla.
- I2C on luonteeltaan master/slave-väylä jossa vähintään yksi väylämaster komentaa kytkettyjä orja-asemia. On periaatteesa samantekevää mikä väylämasterin rooli muuten on, se voi olla mittausasema, näyttöasema tai jos sovellukseen sisältyy erillinen signaalinkäsittely-yksikkö niin sitten luontevimmin ehkä se. Korostin tuossa kuvassa sen keltaisella pohjalla tämän merkiksi. I2C-standardi sinänsä sallii useita väylämastereita mikä avaa ihan mielenkiintoisia mahdollisuuksia kyhätä useita, yhteisiä resursseja hyödyntäviä sovelluksia samaan väylään.

Tuommoinen perusrakenne tarjoaa sovellukselle aika pitkälle vakioidun ympäristön. Kuten kuvasta näkyy niin jokaisella yksiköllä pyörii oma sovelluksensa joka on vapaasti koodattavissa yhdeksi tai useaksi käyttöjärjestelmän taskiksi. Jokaiselle sovellukselle on syytä toteuttaa muutamat hallinnointitoiminnot, kuten esimerkiksi mahdollisuus masterilta käsin selvittää yksikön toiminta jonkin sovittavan luokituksen mukaan. Kun tähän yhdistetään masterin sovellusrunkoon I2C-väylän automaattinen konfiguraatio (eli määrätyissä tilanteissa master selvittää automaattisesti väylään liitetyt laitteet ja mitä ne tuottavat/kuluttavat) niin saadaan aikaan itsekonfiguroituva systeemi.
Omasta kokemuksesta voin väittää että rakenne kannattaa toteuttaa tällä tavalla. Ne jotka haluavat itse koodata omat sovelluksensa pääsevät vauhtiin ihan eri tavalla kuin aloittamalla tyhjältä ruutupaperilta. Samoin kaikki edistysaskeleet mitä joku on keksinyt ovat kohtuullisen määrämuotoisessa ympäristössä levitettävissä aivan eri tavalla.

Tuossa konseptikuvasa ei nyt ollut sellaisa yksiköitä jotka ohjaisivat jotain toimilaitteita, mutta sillehän ei ole mitään estettä. On maailman yksinkertaisin asia toteuttaa joku relelähtöyksikkö tai moottorinohjausyksikkö tms noin konseptitasolla. Tuohon kun vielä kehittää USB- tai Ethernet-liitäntäyksikön niin PC:llä pääsee kiinni väylään ja voi tehdä mitä huvittaa. Tai laittaa 2,4 GHz WLAN-modulin ja kameran kiinni väylään niin voi kauko-ohjata työstintä yläkerran sohvalta käsin. Tai jotain, taivashan tässä on rajana, tai mielikuvitus.
Mutta siis tyvestä puuhun noustaan. Ihan yhdestä tai kahdesta simppelistä yksiköstä voi hyvin aloittaa ilman noita vaikeampia juttuja joita voi toteutella sitten jos/kun ne on ajankohtaisia. Jos vaikka tekisi kierrosluku- ja DRO-näytöt tälleen. Ja minä aion nyt joka tapauksessa tehdä omat kuormamittarini tällä arkkitehtuurilla.

Kommentit ja ehdotukset on tervetulleita kuten aina.

P.S. niin ja se jäi vielä mainitsematta, että sokerina pohjalla maailmastahan löytyy vaikka mitä valmiiksi I2C-väylään kytkettyjä toimintoja. Sehän on alunperin tarkoitettu piirien kytkemiseksi suoraan. Joten siis yksinkertaisin "tyhmä" yksikkö voi olla pelkkä A/D-muunnin tms ja silti se toimii juuri kuten kaikki muutkin ainakin väylätasolla.
Nothing sings like a kilovolt
Dr W. Bishop

Kremmen

Mainitsin edellisessä viestissäni FreeRTOS-käyttöjärjestelmän. Foorumin koodinikkareille vinkiksi niin siihen maksaa kyllä vaivan tutustua. Kenelle sulautetut reaaliaikakäyttöjärjestelmät eivät ole entuudesta tuttuja, niin FreeRTOS tarjoaa oivan kohteen, se kun on ilmainen ja hyvin dokumentoitu.
Löytyy siis tuolta: http://www.freertos.org/

Yleisin vastaväite käyttikselle mikrokontrollerissa on, että sinne ei mahdu ja se ei jaksa pyörittää eikä sitä muutenkaan mihinkään tarvita. Kumpikaan ensimmäisistä ei kuitenkaan oikeasti pidä paikkaansa kuin ehkä äärimmäisissä minitapauksissa. Ne piirit joista täälläkin on keskusteltu jaksavat hyvin ajaa isompaa kokonaisuutta kuin äkkinäinen jaksaa koodata. Tarvitseminen taas on vähän sama kuin että ei autoa mihinkään tarvita kun jalankin pääsee. Joskus jalankulku voi olla ihan riittävä, mutta usein tarpeettoman hankalaa jos matka on pitkä.

Itse olen FreeRTOS:ia käyttänyt Mega32, 88, 168, 328, Xmega128A, AT32UC3A ja AT32UC3C -sarjan kontrollerien kanssa ja hyvin on pelannut. Se varmasti toisi tähänkin projektiin mukavasti rotia ja yhdenmukaisuutta oikein sovellettuna.
Nothing sings like a kilovolt
Dr W. Bishop

Kremmen

Lainaus käyttäjältä: pave - 11.04.12 - klo:20:31
Tietsika on halpa nykyään:http://www.raspberrypi.org/
Pitipä oikein laittaa yksi kappale B-versiota tilaukseen. Olisihan se komeaa jos LinuxCNC:n saisi pyörimään tuollaisella :).
Nothing sings like a kilovolt
Dr W. Bishop

pave

Se ei vissiin onnistu kun se tarvii jonku real time kernelin, jos nyt olen oikein ymmärtänyt. Voin kyllä olla väärässäkin. :(

Kremmen

Joo tarvii kyllä, eli mukaan pitää saada RTAI-reaaliaikakernel. Vähintään tuosta tulee keskihaastava porttaussavotta ja nähtäväksi jää, miten koneliitynnän saa aikaan kun ei ole LPT-porttia eikä PCI-liittimiä johon saisi Mesan kortin tms. Eli voipi olla pitkä tie eikä se nyt tässä ollut pääasiallinen syy miksi tuon hommasin. Siitä voisi kuitenkin saada hyvän laskentayksikön erilaisiin hajautettuihin sovelluksiin ja se oli minulla ensimmäisenä mielessä. En äkkiseltään löytänyt Raspberryn sivuilta tarkkoja speksejä, mutta jos prosessori on ARM11 niin sillä tekee yhtä ja toista. Tuo keskusyksikköhän jaksaa esim videosignaalin käsittelyä oikein hyvin, joten kyllä sillä hoituu aika vaikea DSP:kin yhtä hyvin. Jos kortilla olevasta I/O:sta saisi kyhättyä I2C-rajapinnan niin siitä tulisi erinomainen signaalinkäsittelyalusta vaikka tässä säikeessä esittämääni mittausväyläsysteemiin. Sehän ei maksa juuri enempää kuin normi Arduino.
Nothing sings like a kilovolt
Dr W. Bishop

jussi

Nyt mä tarjoan kyllä itelleni olusen :P. Taas pientä edistystä lukemat näytöllä. jotain pientä matematiikassa näytölle tulostuksessa on , kun 327.68mm jälkeen pyörähtää ympäri. johdot on pakko tehdä häiriösuojatuista ja1.5->3.3v level translate myös parantaa. joutuu samplaan aika tavalla että pysyy lukema vakaana. Tästä on hyvä taas jatkaa.

pave





Lainaus käyttäjältä: Kremmen - 13.04.12 - klo:22:23
Joo tarvii kyllä, eli mukaan pitää saada RTAI-reaaliaikakernel. Vähintään tuosta tulee keskihaastava porttaussavotta ja nähtäväksi jää, miten koneliitynnän saa aikaan kun ei ole LPT-porttia eikä PCI-liittimiä johon saisi Mesan kortin tms. Eli voipi olla pitkä tie eikä se nyt tässä ollut pääasiallinen syy miksi tuon hommasin. Siitä voisi kuitenkin saada hyvän laskentayksikön erilaisiin hajautettuihin sovelluksiin ja se oli minulla ensimmäisenä mielessä. En äkkiseltään löytänyt Raspberryn sivuilta tarkkoja speksejä, mutta jos prosessori on ARM11 niin sillä tekee yhtä ja toista. Tuo keskusyksikköhän jaksaa esim videosignaalin käsittelyä oikein hyvin, joten kyllä sillä hoituu aika vaikea DSP:kin yhtä hyvin. Jos kortilla olevasta I/O:sta saisi kyhättyä I2C-rajapinnan niin siitä tulisi erinomainen signaalinkäsittelyalusta vaikka tässä säikeessä esittämääni mittausväyläsysteemiin. Sehän ei maksa juuri enempää kuin normi Arduino.

Per.. Näitä sun juttuja kun lukee tekee mieli opettelemaan lisää. Vanhalta vaan loppuu aika kesken (ja muisti)  :D

Kremmen

Lainaus käyttäjältä: jussi - 13.04.12 - klo:22:44
Nyt mä tarjoan kyllä itelleni olusen :P. Taas pientä edistystä lukemat näytöllä. jotain pientä matematiikassa näytölle tulostuksessa on , kun 327.68mm jälkeen pyörähtää ympäri. johdot on pakko tehdä häiriösuojatuista ja1.5->3.3v level translate myös parantaa. joutuu samplaan aika tavalla että pysyy lukema vakaana. Tästä on hyvä taas jatkaa.
Varma vinkki: sulla on jossain kohtaa koodia tuo lukema integer-tyyppisessä muutujassa jonka arvoalue on... tadaa... -32768 ... +32767. Kun liike vaan jatkuu yhteen suuntaan niin arvoalue ei riitä vaan muuttujan sisältö tulkitaan yhtäkkiä negatiiviseksi. Siispä etsimään ja kun löytyy niin muuta long integer-tyyppiseksi. Alkaa se arvoalue riittämään.
Ja taas tähän aiheeseen liittyvänä Trivial Pursuit-tyyppisenä anekdoottina allekirjoittanut lähetettiin 80-luvulla Viira Oy:lle palokuntahommiin. Silloisen työnantajan toteuttamalla paperikoneen viiran venytyspenkin säätösysteemeillä oli ikävä taipumus vetää poikki uusia, aivan käsittämättömän kalliita Valmetin kaksoisviirakoneeseen tulevia fosforipronssiviiroja. Siellä poikia vähän harmitti kun oli ensin kuukausi kudottu yhtä viiraa ja sitten se katkesi yhdessä hujauksessa. No siinä oli juuri tuo sama juttu. Viira meni poikki aina kun vetomitta ylitti maagisen 32,767 metriä ja kone riuhtaisi kuvitellen olevansa puolessa matkassa. Arvatkaapa onko tuo kakkosen potenssi syöpynyt mieleen  ;D
Nothing sings like a kilovolt
Dr W. Bishop

jyrki.j.koivisto

#73
Jos luvun arvoalue on aina positiivinen niin luvun voi esitellä unsigned tyyppisenä silloin tulee käyttöön koko muuttuja positiivisena.

Tuolle Rasperrylle ollaan kääntämässä tätä Amigan "vanhaa" käyttistä jota on tehty nyt kohta toistakymmentä vuotta opensourcena eli projekti nimeltään Aros, pyörii jo normi x86 pohjasilla ja jollain tapaa myös muillakin prossuilla. Käyttis on todella pieni ja kevyt mutta ei reaaliaikainen, olisi vinhaa koittaa kääntää LinuxCNC sille ja kattoa miten se Aroksen alla pyörii.

Kremmen

Lainaus käyttäjältä: jyrki.j.koivisto - 14.04.12 - klo:09:44
Jos luvun arvoalue on aina positiivinen niin luvun voi esitellä unsigned tyyppisenä silloin tulee käyttöön koko muuttuja positiivisena.
Totta, mutta jos tuossa DRO:ssa on lukeman nollausmahdollisuus niin silloin täytyy kyetä esittämääm myös negatiivisia lukemia. Liikehän voi jatkua nollauskohdasta kumpaan suuntaan tahansa.
Vaikka näin ei olisikaan niin etumerkitön integer venyy tässä tapauksessa 655 milliin mikä ei sekään vielä riitä jos mittasauvalla on pituutta vaikka metri. Pysyn siis aiemmassa suosituksessa :) (siksikin, että kyseessä on mitä ilmeisimmin bugi, joka pitää joka tapauksessa fiksata ajatuksen kanssa pois.)
Lainaa
Tuolle Rasperrylle ollaan kääntämässä tätä Amigan "vanhaa" käyttistä jota on tehty nyt kohta toistakymmentä vuotta opensourcena eli projekti nimeltään Aros, pyörii jo normi x86 pohjasilla ja jollain tapaa myös muillakin prossuilla. Käyttis on todella pieni ja kevyt mutta ei reaaliaikainen, olisi vinhaa koittaa kääntää LinuxCNC sille ja kattoa miten se Aroksen alla pyörii.
Reaaliaikaisuuden määrehän on lähinnä se, että käyttiksen vaste ulkomaailman tapahtumiin on deterministinen. Käytännössä tarkoittaa lähinnä hallittua keskeytysten latenssia ja keskeytysten suunnitelmallista kytkentää käyttöjärjestelmän skeduleriin ja taskien ajotilan käsittelyyn. Skedulerin pitää lisäksi vielä toimia myös siten deterministisesti, että korkeimman prioriteetin ajovalmis taski saa aina taatusti ajovuoron. Ei-reaaliaikakäyttiksillähän on taipumusta unohtua touhuamaan milloin mitäkin pitkiksi ajoiksi, vaikkapa työstämään jotain levy-I/O:ta sadoiksi millisekunneiksi huolimatta siitä, että servo on työntämässä piuhat punoittaen kelkkaa päin päätyä :)
Amiga jäi minulle aikanaan tuntemattomaksi, en ole sen kanssa koskaan leikkinyt. Siispä Aroksen joutuu selvittämään joku toinen. Itseä sen sijaan polttelisi portata FreeRTOS Raspberrylle. Jaa mutta siinähän on kivenä ARM11, ja FreeRTOS on portattu ainakin ARM7:lle ja 9:lle. Ehkä niistä saisi valmista mallia tai odottaa vähän niin joku innokas tekee porttauksen. FreeRTOS on toki erilainen kuin RTAI mutta molemmissa on perustasolla samat keskeytystenhallinta, signalointi ja taskien välinen kommunikointi. Varmaan koodia puukottamalla saisi toimimaan kohtuu hyvinkin. Olishan se kova juttu ajaa LinuxCNC:tä ilman PC:tä lähimaillakaan. Hmm...
Nothing sings like a kilovolt
Dr W. Bishop

Powered by EzPortal
SMF spam blocked by CleanTalk