soodan sivut

arkisto

237 kirjotelmaa.

avainsanat

Vanhan kouluni SYK:n teknisen työn opettaja tuli aika tutuksi veistokerhon eli teknisen kerhon kautta jossa kävin aina kun voi, vitosluokasta lukion loppuun. Muutenkin pidin tunneilla teknisestä melkoisesti. Lukiosta lähtiessä oli puhetta sijaistamismahdollisuudesta, mitä mietin muidenkin aineiden suhteen, mm. matikka ja fysiikka. Nytpä sijaistin teknisen opettajaa kaksi viikkoa, kun on pitkällä sairaslomalla. Pieninten (3-4 lk) kanssa tehtiin perinteisiä puutöitä, ja isompien (5-7 lk) kanssa kolvailtiin ritariässävilkkuja, joihin suunnittelin piirilevyn ja softat. Vilkussa on attiny2313 ja kahdeksan lediä.

Jos olet joku tämän tehneistä oppilaista, lue/rullaa alaspäin -- myöhempänä seuraa vianetsintä- ja käyttöohjeita.

Teknistä löpinää

Jätetään tässä opetus ja kauhukak.. ihanat oppilaat käsittelemättä; teksti keskittyy ritariässälaitteeseen. Ritariässävalohan on siis KITT-auton eestaas välkkyvä skannerivalo, josta tein joskus vuosia sitten isomman version. Tämä on pieneen koteloon mahtuva versio, joka toimii paristoilla. Suunnittelin vehkeen alusta alkaen piirilevy ja softa mukaanlukien. Koska rauta on tässä tylsän triviaali ja muutenkin osaan paremmin koodata kuin kötöstää rautaa, tein toki softat ennen kunnon piirilevyjä. Ensimmäinen rautaproto sai alkunsa perinteisesti leipiksellä.

Koodin kirjoittelu alkoi tunnin youtubaamisella, kun katselin millaisia vilkkuja muut ovat tehneet ja millainen siinä alkuperäisessä autossa on. Lisäksi puljasin python-koodin jolla testailin erilaisia efektejä, mikä oli reippaasti nopeampaa kuin oikealla raudalla. Päädyin ihan sellaiseen ratkaisuun, että valopiste veivaa normaalisti eestaas ja aiemmin palaneet valot himmenevät itsekseen, mikä nyt onkin aika ilmiselvä ratkaisu. Softassa on kolme käyttäjän kannalta helpoiten konffattavaa asiaa: nopeus, himmenemisnopeus eli hännän pituus, sekä viiveaika reunoilla, eli valopiste joko kimpoaa reunoista suoraan tai menee hieman yli reunojen, niin että heiluminen on hillitympää.

Koodi (on tosiaan avointa: kittlight.c ja hämmästyttävän paljon jaksoin kommentoidakin; valmis hex tässä myös) perustuu Atmelin appnoteen AVR136 "Low-Jitter Multi-Channel Software PWM", kun löytyi valmiina enkä jaksanut siten alusta asti tehdä. Ajastinkeskeytys vääntää ledejä päälle ja pois kirkkausbufferin mukaan, ja pääohjelma hoitaa noin millisekunnin välein (eli melkeinpä useammin kuin mitä on tarpeen) valopisteen liikkumisen sekä nappien tarkastelun ja samalla asetusten säädön. PWM eli pulssinleveysmodulaatiohan välkyttää noita päälle ja pois niin nopeasti, että silmä havaitsee illuusion vaihtelevasta kirkkaudesta eikä näe vilkkumista. Prossu pyörii kahdeksalla megahertsillä ja laskuri on kasibittinen, eli ajastin lyö overflow-keskeytyksiä 8e6/256=31250 kertaa sekunnissa. Kirkkaudessa käytetään softa-prescaleria, jonka avulla lyhyin pulssi on tuo 1/31250 s. Kun softa-prescaleri saavuttaa kasibittisen maksimiarvonsa 255, näyttö voidaan päivittää; tämä siis 8e6/256/256=~122 kertaa sekunnissa.

Himmenemiseen ja pisteen liikkumiseen on ajastinmuuttujat, joilla niiden nopeutta säädetään; joka iteraatiolla laskuria muutetaan ja katsotaan josko olisi aika hoitaa hommat. Erikoisasetuksia säätäessä näyttö vilkkuu, eli on vuorotellen hetken päälle ja hetken pois, hitaasti tai nopeasti merkkinä siitä mitä säädetään.

Nappien tarkastelu tehdään pääohjelmassa keskeytysten sijaan, sillä sen ei tarvitse olla älyttömän reaaliaikaista. Joka kierroksella tsekataan nappien tila ja tutkitaan, kauanko nappi on ollut pohjassa. Sen mukaan siirrytään toiseen asetustilaan (pitkä painallus) tai muutetaan nykyistä asetusta (lyhyt painallus). Asetukset tallentuvat säädettäessä eeprom-muistiin, jolloin ne säilyvät samana virtojen katkaisunkin jälkeen. Säätötilan kertoo triviaalisti pari lippumuuttujaa, ja se mitä painalluksessa säädetään päätetään niiden perusteella.

Piirilevyn piirtelin nopsaan eaglella (eagleprojektikin on vapaasti ladattavissa) sen ihmeempiä mietiskelemättä. Napit laitoin keskeytysnastoihin, jos joskus tulevaisuudessa keksisin jotain ihmeellistä jossa niiden keskeytyksiä tarvittaisiin. Huomaa, että piiriltä unohtui jännitteentasauskonkka. Niitä (~0,5 µF polko) juoteltiin levyn alapuolelle virtajohtojen yhteyteen, kun laite tuntui ilman sitä toimivan omituisesti. PWM-välkyttely vie kuitenkin korkeita virtapiikkejä ja tuo ilmeisen paljon epävakautta prossun toiminnalle, kun prossu nykii muutenkin korkeita kapeita virtapiikkejä johtojen päässä olevilta paristoilta ja jännite sitten sekoilee samaan tahtiin.

Koska levyjä tarvittiin nopeasti suuri määrä (opetettavana kahdeksan eri luokkaa, jokaisessa keskimäärin jotain 12 oppilasta, yhteensä noin sata), valmistin levyt koulun jyrsimellä (joku pöytämallinen Kosy 3). Syövytysvehkeetkin on, mutta se on turhan pitkä prosessi tehdä käsin näissä määrissä. Tuo ei kuitenkaan ole mikään erityinen piirilevyjyrsin, joten hieman hiuksia sai repiä päästä kunnes tuli kelvollista jälkeä. Piirilevy kaksipuoleisella teipillä kiinni pohjalevyyn, terän korkeuden nysvääminen käsin, levyn exporttaus eaglesta g-koodiksi, ja sen jälkikäsittely tuon jyrsimen erittäin kankeilla piirtosoftilla eivät olleet erityisen mieluisia työvaiheita ja veivät vähän aikaa, kun en ollut aiemmin käyttänyt vastaavia. Undo-toimintoa ei ole, WTF.

Lopulta jyrsinnän sai kuitenkin automatisoitua seuraavanlaiseksi operaatioketjuksi: teippaa levy puuhun, laita kalikka jyrsimeen, varmista että z-nollapiste on sopivalla korkeudella, tökkää jyrsimen softasta ohjaus päälle, odottele, tökkää päälle toinen ohjauskoodi (itse railojen jyrsintä ja reikien alkukolot olivat erikseen), odottele, kaiva levy pois, ja sama seuraavalle. Piirilevyaihioiden koon puolesta tein sellaisia jyrsintöjä, että 12 levyä valmistui kerralla, jotka sitten leikeltiin erillisiksi.

Monet vanhemmista oppilaista saivat projektin parissa työkerrassa valmiiksi (2x 2-3h), muutamat kotelointia myöten. Koteloksi laitettiin tylsiä mustia muovikoteloita (kuten kuvissa), puusta tehtyjä laatikoita ja kennomuovilevystä leikeltyjä laatikoita. Joiltain jäi rakentelu kesken, saavat hoitaa ilman minua valmiiksi seuraavilla tunneilla. Tuossa ei ole mitään mikä voisi mennä merkittävästi pieleen; isoin ongelma ovat tinasillat siellä sun täällä, mikä saa ledit palamaan jatkuvasti, ei ollenkaan tai vierustoverinsa kanssa samanaikaisesti. Paristokoteloista tuli myös vähän päänvaivaa, kun juotoskorvat tykkäsivät sulaa irti tai olla muuten mekaanisesti kehnoja.

Käyttöohjeita, oppilaille tiedoksi

Jos laitteessa on ongelmia, kannattaa tosiaan tarkastaa levy tinasiltojen tai kylmien juotosten varalta. Paristokotelon johtojen kiinnitys on myös iso mahdollinen ongelmakohta. Kondensaattori tasaa jännitettä ja vakauttaa prossua, joten sen on oltava myös oikein juotettu tai ledit voivat välkkyä aika satunnaisen oloisesti.

Ohjelaput joita jaoin ensimmäisille olivat vähän väsyneesti kirjoitettu ja taisivat sisältää jotain ajatusvirheitä. Tässä kuitenkin lopulliset ohjeet:

Kuten todettu, laitteessa on kaksi nappia ja kolme asetustensäätötilaa. Valo menee päälle suoraan kytkemällä virrat kiinni (esim. paristot vipukytkimellä). Kaksi erillistä nappia säätävät erilaisia asetuksia:

Kutakin ominaisuutta voi säätää mieltymyksiensä mukaan, ja laite muistaa asetetut ominaisuudet sammuttamisen jälkeenkin. Laitteessa on kaksi nappia, joiden avulla asetuksia säädetään:

Asetustilojen välillä siirrytään painamalla nappia pohjassa pitkään, jolloin valojen vilkkumistyyli vaihtuu merkkinä siitä, mitä asetusta yksittäiset painallukset säätävät. Asetusta vähennetään tai kasvatetaan painamalla nappia yhden kerran. Suuren määrän vähennys tai kasvatus onnistuu painelemalla nappia monta kertaa.

4 kommenttia

Oma kommenttisi

Mielipide tämän sivun asiasta? Kirjoita toki. Älä raapusta kuitenkaan ihan asiattomia juttuja.

Jos on yksityisempää asiaa, tarkkaa kysyttävää tai aihetta pidemmälle keskustelulle, käytä yhteydenottolomaketta kommentoinnin sijaan.

Hölmöt kommentit saatetaan moderoida pois jälkikäteen.

Nimimerkki:

Spammibottiesto: Mikä on yhden ja kolmen erotus? (vastaus numeroina)