OMNIA AMMATTIOPISTO OPINNÄYTETYÖ Diginoppa ICTP09SLG - 2012 OMNIAN AMMATTIOPISTO KOULUTUSALA Tieto- ja tietoliikennetekniikka OPISKELIJA Hannu Junno OHJAAJA Jari Laurila VUOSI 2012
2 TIIVISTELMÄ Opinnäytetyöni aiheena on sulautetut järjestelmät. Tarkoituksena on tehdä yksinkertainen digitaalinen noppa, joka toimii nappia painamalla ja tulostaa arvotun numeron näytölle. Työssäni käyn läpi suunnitelman, jossa tutustutaan kytkemiseen piirilevylle ja itse nopan ohjelmoimiseen. Suunnitelman jälkeen selostan työn toteutusta käytännössä, ja mitä ongelmia tuli eteeni ja miten ratkaisin ne.
3 SISÄLLYSLUETTELO 1. JOHDANTO... 4 2. YLEISTÄ... 5 2.1 Sulautetut järjestelmät... 5 2.2 PIC... 5 2.3 Mikrokontrolleri... 5 2.4 Flowcode... 5 3. SUUNNITELMA... 6 3.1 Kytkentäkaavio... 6 3.2 Toimintaperiaate... 8 3.3 Ohjelman toiminta... 8 4. TOTEUTUS... 9 4.1 Ohjelman lataaminen mikrokontrolleriin... 9 4.2 Piirilevy... 10 4.3 Ongelmat ja niiden ratkaisut... 11 5. LÄHTEET... 12
4 1. JOHDANTO Tarkoituksena on tutustua sulautettuihin järjestelmiin tekemällä yksinkertainen ohjelma. Ohjelman lataan mikrokontrollerille, jonka sitten laitan kiinni kasaamaani piirilevylle. Ohjelmaksi olen päättäny tehdä digitaalisen nopan. Toimintaperiaate on hyvin yksinkertainen, nappia painamalla tulostuu arvottu numero näytölle. Virtalähteenä toimii paristo, joka tekee nopasta kompaktin ja helppokäyttöisen.
5 2. YLEISTÄ 2.1 Sulautetut järjestelmät Sulautettu järjestelmä on laite, joka on tehty vain tiettyä tarkoitusta varten. Laitetta ohjaa tietokone, jonka ohjelmisto ja laitteisto on suunniteltu juuri kyseiseen tarkoitukseen. Sulautettuja järjestelmiä löytyy nykyaikana melkeinpä kaikista elektroniikkalaitteista, kuten kaukosäätimistä, matkapuhelimista tai vaikkapa mikroista. Ylensä sulautetut järjestelmät ovat olleet suljettuja, jolloin niihin ei ole päässyt lataamaan mitään ylimääräisiä ohjelmia. Joissain uusissa järjestelmissä tämä on kuitenkin mahdollistettu, esimerkiksi matkapuhelimissa. 2.2 PIC PIC (Programmable Interface Controller) on Microchip Technologyn kehittämä eräänlainen mikroprosessori. Ne ovat hyvin suosittuja teollisuus käytössä, kuin myös yksityisten käytössä halvan hintansa vuoksi. Niillä on myös laajat käyttötarkoitukset ja niistä löytyy uudelleenohjelmoimis mahdollisuus. 2.3 Mikrokontrolleri Mikrokontrolleri on mikropiiri, josta löytyy mikroprosessori ja muisti- sekä liitäntälohkoja, jotka vaihtelevat mallista riippuen. Mikrokontrollereita käytetään sulautetuissa järjestelmissä, joita löytyy nykyajan elektroniikkalaitteista. 2.4 Flowcode Flowcode ohjelmalla voidaan tehdä graafisesti ohjelma, jonka se sitten kääntää tarvittavalle C-kielelle, joka ladataan mikrokontrollerille. Tämä on hyvin helppo ja nopeasti omaksuttava tapa ohjelmoida verrattuna C-kieleen, joka vaatii hyvät pohjatiedot hyvinkin yksinkertaisten ohjelmien tekoon. Flowcodella voi myös simuloida ohjelman ja testata sen toimivuuden. Tämä simulaatio ei kuitenkaan välttämättä vastaa aina todellisuutta, mutta siitä on silti suuri apu ohjelmoidessa.
6 3. SUUNNITELMA 3.1 Kytkentäkaavio Laajan etsimisen jälkeen netistä päädyin alla olevaan kytkentäkaavioon, jota piti hieman muunnella omaan suunnitelmaan sopivaksi. Alkuperäisessä kaaviossa näyttö oli common cathode (CC) tyyppiä ja minun näyttö oli common anode (CA). Ero näissä kahdessa on se, että diodit ovat käännetty toiseen suuntaan. Eli kuvassa olevat PIN 3, 5, 11, 16 kytkettäisiin plussan sijasta maahan kiinni, jos kyseessä olisi CC näyttö (tämä tosin selvisi minulle vasta jälkeenpäin vikaa etsiessä kytkennästä). Alkuperäisestä kaaviosta puuttui myös näytön pisteen (DP) kytkentä, jonka lisäsin kuvaan.
7 Alla lista työssä käytetyistä komponenteista Komponentti Määrä PIC16F84A 1 18-pinninen jalusta kontrollerille 1 7-segmentti led näyttö 1 4MHz kide 1 22pf kondensaattori 2 10nf kondensaattori 1 100nf kondensaattori 1 100Ω vastus 1 1KΩ vastus 8 22KΩ vastus 1 78L05 5V regulaattori 1 kytkin 1 9V paristoliitäntä 1 Alla olevasta kuvasta selviää PIC16F84A mikrokontrollerin ja 7-segmentti ledi näytön jalkajärjestykset. Segmentti a menee porttiin B0 (jalka 6), b menee porttiin B1, c menee porttiin B2 jne. Näitä silmällä pitäen huolellinen luonnostelu komponenttien asettelusta vero-levylle.
8 3.2 Toimintaperiaate Oikealla kuva flowcodella tehdystä yksinkertaisesta ohjelmasta. Ohjelman toimintaperiaate on pyörittää lukuja 1-6 ympäri niin kauan kuin nappia painetaan ja pysähtyä kun nappia ei enää paineta. Periaatteessa ohjelma ei arvo lukua, mutta koska luvut vaihtuvat käsittämättömän nopeasti niin se on käytännössä sama kuin arpominen. 3.3 Ohjelman toiminta Ohjelmaan laitetaan näyttö porttiin B, ja tehdään muuttuja seg. Samaten laitetaan nappi porttiin A0, jolle tehdään muuttuja tila. Ohjelma lukee painetaanko nappia eli If tila=1? Tehdään looppi While tila=1 (nappia painaessa), jolloin ohjelma tekee seuraavat vaiheet: - If seg=6? eli jos seg muuttuja on 6, siitä tulee 0, ja jos ei, niin ei muutosta. - seg = seg+1 eli seg muuttujaan lisätään yksi. - Makro: ShowDigit(seg,0) näyttää luvun seg näytössä ja näytön desimaalipiste ei pala koska sen arvona on 0 - Delay 5ms tässä kohtaa ohjelma odottaa 5ms, jonka jälkeen se hyppää taas loopin alkuun. Eli numero vaihtuu 5ms välein, eli se käy numerot 1-6 läpi n. 33 kertaa sekunnissa. Kun napin päästää irti tulee makro: ShowDigit(seg,1), jolloin näyttöön jää palamaan sen hetkinen numero. Tällöin myös näyttöön syttyy desimaalipiste, koska sen arvo on 1. Ja lopuksi vielä koko ohjelma on laitettu loopin sisään, koska muuten se kävisi ohjelman vain kerran läpi, jonka jälkeen se loppuisi.
9 4. TOTEUTUS 4.1 Ohjelman lataaminen mikrokontrolleriin Ohjelman lataus mikrokontrolleriin on hyvin yksinkertaista. Siihen tarvitaan E-Blocks piirikortti, joka löytyy koululta. Alla olevassa kuvassa E-Blocksiin on kytketty lisäkappale, joka mahdollistaa 7-segmentti näytön testauksen. E-Blocksiin kytketään virrat, jonka jälkeen se kytketään tietokoneeseen kiinni. Mikrokontrolleri kiinni oikeaan kantaan (jalkojen määrät vaihtelevat), ja kytkentä on valmis. Seuraavaksi Flowcode ohjelmalla Compile to chip ja annetaan ohjelman raksuttaa parikymmentä sekuntia, minkä jälkeen lataus on valmis.
10 4.2 Piirilevy Sitten vain juottamaan kaikki komponentit kiinni vero-levylle suunnitelman mukaisesti. Tämän jälkeen mikrokontrolleri asetetaan sille tarkoitetulle kannalle ja kytkentä on valmis. Alla kuva lopullisesta kytkennästä.
11 4.3 Ongelmat ja niiden ratkaisut Ensimmäistä kertaa koettaessani työtäni se ei toiminut. Tämä ei sinänsä ollut yllättävää, koska harvoin näin monivaiheinen työ aivan suoraan toimii huolellisen suunnittelun jälkeenkään. Vikaa etsiessä lähdin liikkeelle kytkennästä tarkistamaan onko kaikki oikein kytketty ja onko juotosvirheitä. Tässä vaiheessa huomasin, että kytkentäkaavio oli tehty Common cathode tyypin näytölle ja minun näyttöni oli Common anode. Datasheettejä tutkiessani huomasin, että ero näissä on se, että diodit ovat kytketty toistepäin. Eli hyppylanka, joka vei näytön pinnit 3, 5, 11 ja 16 maahan pitikin kytkeä plussaan (alla vielä napattu kuvat datasheeteistä selkeyttämään näiden eroja). Tämän muutettuani ei kuitenkaan vieläkään toiminut. Common Anode Common Cathode Kytkennän toimivuuden tarkistaakseni tein ohjelman, joka vain sytyttää näytön kaikki ledit palamaan. Latasin ohjelman levylle ja testasin sen toimivuuden E-Blocksiin kytketyllä lisäkappaleella, jossa oli 7-segmentti näyttö. Hyvinhän se toimi, eli kytkentä oli oikein ja sitten ohjelmasta vikaa etsimään. Ohjelmaa tutkiessani huomasin, että näytössä oli common kytkettynä A3 porttiin ja nappi oli kytkettynä A0 porttiin. Ohjelman ensimmäinen vaihe, joka määrää muuttujan tila vastaamaan nappia, olikin napin sijasta laitettu koko A porttiin. Tämä ilmeisesti sekoitti ohjelmaa ja muutettuani siihen A0 koko A portin sijasta niin johan alkoi toimimaan.
12 5. LÄHTEET www.wikipedia.org tietoa PIC-mikrokontrollereista ja sulautetuista järjestelmistä www.pelnet.co.uk/elect/pic84.html kytkentäkaavio löytyi täältä