sunnuntai 13. helmikuuta 2011

MCELCDUSB

MediaCenterEditionLiquidCrystalDisplayUniversalSerialBus Hohhoijaa...


Olen jokusen sulautetun laitteen rakentanut, johon on tullut 2x16, 2x20 tai 4x20 merkkinen LCD kiinni. Kirjoittelen niitäkin tänne, kunhan jaksan ja saan aikaiseksi. Innostuin etsimään netistä valmiita laitteita, jotka menisi heittää suoraa kiinni USB porttiin. Olisihan sitä mukava katsella mitä sille Media Center tietokoneelle kuuluu leffan aikana. Tällainen sitten lyhyellä googletuksella löytyikin: Lcdmod Kit.


En sitten malttanut olla tilaamatta noinkin edullista näyttöä ihan noin testin vuoksi. Hinta edullinen, ei toimituskuluja ja kuvien perusteella vielä kohtuullisen laadukaskin. Hyvinhän tuo näyttö sitten toimikin. Piuha kiinni, ajurit koneeseen ja LCD Smartie käyntiin. Tosin itselle otin käyttöön Lcdmod Kit:in sivuilta saavan LCD Smartien. Siinä oli esimerkiksi tälle näytölle oikea dll ja näytön asetukset muutenkin kohdillaan. Asetuksissa ei nyt mitään kovin kummallista ollut, LCD2USB.dll vain display hakemistoon ja valitaan se käyttöön LCD Smartiesta. ja ohjelma uudelleen käyntiin. Näytön merkkimäärä kohdilleen 4x20 ja lopuksi vielä contrastia lisää. Tuossa oikeanpuoleisessa kuvassa on käytössä jo big number plug-in jonka saa LCD Smartien sivuilta.



 

Lisäominaisuuksia piti tietenki alkaa heti jatkojalostamaan ja miettimään. Näyttöön olisi kiva saada säätiedot pyörimään, tai edes lämpötila. Wampin asennus koneelle ja värkkäämään php -skriptiä jolla generoidaan RSS-syöte, jonka puolestaan voi ladata näytölle. Php -skripti lataa ilmatieteenlaitoksen sivut ja parseroi siitä ylimääräiset tekstit pois. Lopuksi näistä tiedoista luodaan sitten RSS -sivu. Sivu sitten ladataan Näytölle RSS kutsulla: $Rss(http://localhost/saa.php,b,2) Ensimmäinen parametri on joko t=topic, d=description tai b=both. Jälkimmäisellä parametrilla kerrotaan, kuinka mones topic halutaan näyttää. Tässä on vielä tarjolla tämä minun käyttämäni skripti. Se on varmaankin järkyttävää purkkaa, mutta tuntuu toimivan. Alussa olevaan $url muuttujaan vain osoite niin, että saa oman paikkakuntansa paikallissään. Saa soveltaa ja hyödyntää niinkö parhaaksi näkee.

saa.php

LCD Smartie pitää sisällään kyllä runsaasti ominaisuuksia esimerkiksi Winampin Now Play juttuja yms. Halusin kuitenkin saada näytölle näkymään Spotifyn sen hetkisen kappaleen. Aikani googletettuani kukaan ei ollut rakentanut plug-in dll:ä jolla olisi voinut saada Spotifystä tämän tiedon irti.

spodll.dll

Kiitos, toveri Ville! Hän kirjoitti odotellessaan nukkumaanmenoa tällaisen plugarin. Tuntuu toimivan hienosti. Tämä dll -tiedosto vain LCD Smartien plugin hakemistoon ja LCD Smartielle uudelleen käynnistys. Tätä plug-iniä on helppo kutsua ja sen viralliset käyttöesimerkit tulevat tässä:

$dll(spodll.dll,1,all,)   ->    Palauttaa artistin ja kappaleen "-" erotettuna
$dll(spodll.dll,1,artist,)  ->    Palauttaa ainoastaan artistin
$dll(spodll.dll,1,song,)  ->    Palauttaa ainoastaan kappaleen

Nyt on ainakin jotakin mielenkiintoista tässä näytöllä. Luonnollisesti LCD Smartie tarjoaa itsekin paljon erilaista härpäkettä näytölle, enkä ole sen enempää kerennyt vielä tähän edes perehtyä. Tässä  nyt vielä "mainosvideo" tästä aikaansaannoksesta.

lauantai 5. helmikuuta 2011

Nopeusrajoitin


Rakentelin ajankulukseni moposkootteriin sähköisen nopeusrajoittimen. Idea syntyi, kun mielestäni alkuperäinen nopeusrajoitin ei ollut hyvä. Alun perin rajoitus toimi muutamalla sorvatulla prikalla variaattorissa. Kun mopolla ajettiin täydellä nopeudella, eli 40km/h tuntinopeudella variaattori ei päässyt sulkeutumaan kokonaan ja kierrokset nousivat tavallista korkeammaksi. Tästä sitten seurasi suurempi bensiinin kulutus ja luultavasti myös moottorin lyhyempi käyttöikä.
No kaupalliset rajoittimethan kaiketi toimivat kierroslukua rajoittamalla. Joten tämä lienee oikea tapa toteuttaa sähköinen nopeusrajoitin. Sähköisellä sytytyksellä toteutetussa mopon moottorissa on hall- anturi, jolla tutkitaan moottorin asentoa. Tämä tieto välitetään sytytysyksikköön, joka generoi sitten kipinän oikealla hetkellä. Loogisesti nopeusrajoitin voitaisiin rakentaa tähän väliin. Eli kun moottorilta tulee asentopulssi, niin nopeudenrajoitin tekee vastaavan näköisen pulssin sytytysyksikölle, vain mikäli nopeus on alle 40km/h. Nopeuden kasvaessa yli sallitun, moottorin ottamaa kierroslukua ryhdytään rajoittamaan, rajoittamalla sen kipinää. Esimerkiksi niin että nopeuden ollessa 41km/h, generoidaan vain joka toinen kipinä. Nopeuden ollessa 42km/h voitaisiin generoida vain joka kolmas, joka neljäs tai vaikka joka kymmenes pulssi. Tässäpä siis on perusidea nopeusrajoittimesta. Tässä vielä oskilloskooppi kuva hall-anturin signaalista tyhjänkäynnillä










Nopeusanturiksi laitoin induktiivisen anturin. Asensin anturin etuhaarukkaan tunnistamaan jarrulevyn kiinnityspultteja, joita oli kolme. Eli toisinsanoen pulsseja tulee siis kolme yhdellä kierroksella. Tämä pulssianturi oli sinällään vähän huono, koska sen käyttöjännitealue oli 9-30V, joten käytännössä pulssianturin lähtöön, tai rajoittimen tuloon piti rakentaa jännitteen pudotus. Käyännössä katsoin helpoimmaksi rakentaa tämän rajoittimen levylle kahdella jännitteenjakovastuksella.
Sitten vaan protolevyn rakennukseen. No taas pitää jotakin myöntää. Rakensin tämän laitteen jo viimekesänä ja en silloin ottanut levystä kuvaa ollenkaan, joten kuvia ei siis ole. Sen sijaan kytkentäkaavio on.









Laitoin ensin levyn virtajohdot suoraan akkuun, että saa testailla. Sitten piti miettiä ohjelmistoa. Aluksi merkitsin mopon renkaaseen ja asfalttiin liidulla viivan. Työnsin mopoa niin, että rengas meni tasan yhden kierroksen, ja piirsin liidulla uuden viivan. Viivojen väli 142cm ja yhdellä kierroksella 3 pulssia. Tästä syntyi sitten seuraava taulukko. (Josta nyt en ota mitään vastuuta, se on ehkä oikein :) ) Eli, 24 pulssia sekunnissa vastaa 40,89 kilometrin tuntinopeutta, joka tarkoittaa, että tulevien nopeuspulssien väli on 42 millisekuntia.

24 p/s = 40,89 km/h -> 42ms/väli
25 p/s = 42,60 km/h -> 40ms/väli
26 p/s = 44,30 km/h -> 38ms/väli
27 p/s = 46,00 km/h -> 37ms/väli
28 p/s = 47,71 km/h -> 36ms/väli

Näillä eväillä suunnittelin ohjelmistoa rajoittimeen. Kokeilin ensin niin, että 24:llä pulssilla sekunnissa luodaan 3/4 kipinöistä, 25:llä 2/4 kipinöistä, 26:lla 1/4 kipinöistä ja 27:llä kone sammutetaan kokonaan. Mietin mielessäni, että 25 pulssia tarkoittaa tehon puoliintumista, koska puolet kipinöistä on pois. Käytännön testit osoittivat, että yksi kipinä neljästä riittää kasvattamaan mopon nopeuden niin suureksi, että rajoitin sammutti mopon kokonaan. Yritin kasvattaa ja muuttaa sytytysrajoitus sääntöjä eritavoin, mutta en saanut rajoitinta toimimaan haluamallani tavalla. Joten muutin ajatuksen toisin päin.

Uusi versio toimi sitten niin, että lisäsin muuttujan arvoa 1ms:n välein yhdellä. Kun nopeuspulssi tulee, tutkin muuttujan arvoa. Jos nopeuspulssien väli on vähemmän kuin 40ms kipinää ei luoda, muissa tapauksissa se luodaan normaalisti. Koska tämä tehtiin jokaisella nopeusanturin antamalla pulssilla, oli nopeuden rajoitus valtavan nopea. Tämä sovellus on sittemmin jäänyt käyttöön. Tosin pulssien väli muutettiin 40ms:sta 34ms:n. Koska todellinen nopeus tarkistettiin. Virhe syntyy todennäköisesti siitä, että prosessorissa on käytössä sisäinen kello, jossa voi olla suurikin virhe. Lisäksi aikojen mittauksessa on käytössä delay -funktio, joka on hyvinkin epätarkka. Tässäpä olisi siis jo parannusehdotus: Sisäinen kello käyttöön ja keskeytysaliohjelmaan pyörimään ajan mittaus. Muita parannusehdotuksia tulee tähän samaan. Jos nopeusanturin irroittaa, tai se ei jostakin syystä mittaa mopon nopeutta enää, on rajoitin mitätön, koska se ei enää rajoita ajonopeutta.


Tässä vielä rajoittimen Tinyn lähdekoodit: rajoitin.c


Ainiin, koodissa on vielä ohitus nopeusrajoittimelle. Tätä en ottanut itsellenikään käyttöön vaan tämä oli ainoastaan testivaiheessa mukana, että näin prosessorin kerkeävän mukana suuremmissakin nopeuksissa.


Asennuksessa ei kai mitään sen kummallisempaa ollut. Hauska kommellus kuitenkin kävi. Mittasin johtosarjasta sellaista johtoa, jossa olisi sähkö kun virrat ovat päällä ja sähkötön, kun virrat ovat pois. Tällainen johto löytyikin ja asensin rajoittimen saamaan käyttöjännitteensä tästä johdosta. Kaikki toimi odotetulla tavalla, kunnes olin menossa huoltoasemalle tankille ja bensiinin loppumisesta ilmoittava valo yllättäen syttyi. Yhtäaikaa valon syttyessä mittaamastani käyttöjännitejohdosta katosikin sähkö. Rajoitin ei saanut enää käyttöjännitettä ja mopo sammui. Viimeinen kilometri tankille mentiin sitten hieman toisessa reunassa istuen, mopo kun kulki kallellaan, merkkivalo ei syttynyt joten rajoitin sai virtansa. Takaisin kotiin, ja etsimään johtosarjasta parempaa johtoa.