Kotisivu
Elektroniikka sivulle
Ohjainlevy
Relekortti
Analogiatulokortti
PIC16F877
![]()
Tämä projekti on ollut suunnitelmissa jo jonkin ajan, mutta kun ei ole
saanut mitään näkyvää aikaiseksi. Täytyi ottaa oikein ja aloittaa, eihän
siitä mitään muuten tule ja tuskin tulee koskaan ihan valmista, mutta hällä
väliä kunhan on jotain tekemistä ja miettimistä.
Tämä on nyt ihan hakuammuntaa ja jotain tekemistä, noudattamatta
mitään suunnitelmaa tai suunnittelusääntöjä, eikä mitään muutakaan. Eli tehdään ja
katsotaan mitä saadaan aikaiseksi. Kun tuosta piiristäkään ei ole muuta
tietoa kuin mitä datalehdestä ala arvoisella kielitaidolla saa irti, eikä se
ole oikeastaan mitään, tai ainakin erittäin vähän.
Mitähän siitä piiristä saisi aikaiseksi ???
Katsotaan, katsotaan, joo .... Piirissä on musta kotelo ja 40 jalkaa... hmmm...
Missähän sen datalehti olisi, varmaan löytyy jostain Microchipin sivuilta.
Sieltä se löytyy.
Microchip.
PIC valmistajan kotisivu
28/40-pin 8-Bit CMOS FLASH Microcontrollers.
Nimen omaan juuri tuo PIC16F877 ja 40 jalkainen kotelo, tuli jossain
vaiheessa ostettua, kun tuntui siltä että siitä saisi jotain aikaiseksi. Helpompi tälle on tehdä
piirilevy kun vastaavalle pintaliitos komponentille. Tässä on myös jonkin verran
enemmän IO-portteja kuin pienemmissä piireissä... mutta kuitenkin vähemmän
kuin isommissa... menikö se näin...
33kpl
ohjelmoitavaa liitäntäpistettä, jalkaa, joiden toiminta voidaan määrittää
ohjelmallisesti.
PortA 6kpl, portB 8kpl, portC 8kpl, portD 8kpl ja portE 3kpl
yhteensä 33kpl.
33kpl missäs ne loput 7. No käyttöjännite jalkoja on 2kpl +5V:lle ja 2kpl GND:lle ja
2kpl kidettä tai oskillaattoria varten, ja muuten piiri toimii luvatusti 20 MHz kiteellä, sekä sitä
hitaammilla. Yksi vielä puuttuu, joka on master reset, ja siitä tuli 40
täyteen.
PortA ja E voidaan määrittää myös analogia sisääntuloiksi. Sekä portC:n
1 ja 2 bitti voidaan määrittää PWM lähdöiksi.
Mielenkiintoista.... vai onko... mitä siitä saisi aikaiseksi.
Piiristä löytyy ominaisuuksia vaikka kuinka paljon, mutta ei kai niitä
kaikkia tarvitse samaan aikaan käyttää.
Tehdään siitä laite, jossa on muutama rele, joita voidaan ohjata piirin
ohjelmalla, muutama sisääntulo kytkimillä. Analogi tuloja, jonkin jännitteen
mittaamiseen. Muutama painikekin siinä saisi olla. Moottorin ohjaus
pulssinleveys modulaatiolla, koska piirissä nyt sattuu olemaan sellainenkin
mahdollisuus. LCD-modulikin kertomaan mitä tapahtuu.
Mitä nyt sitten pitäisi tehdä ??? Mistä aloittaa ??? Mitä... mitä... mitä...
Tuntuu olevan kysymyksiä enemmän kuin vastauksia...
Ensiksi haetaan piirin datalehti ja aloitetaan siitä tarkastelemalla miten
piiriin voidaan kytkeä mitäkin ja minne. Päätetään minne porttiin
kytketään painikkeet, releet, LCD-moduli, analogitulot ja PWM lähtö.
Kun nyt on määritetty mitä mikin piirin portti tekee voidaan miettiä miten toteutetaan piirilevy. No tosin tässä jo noiden määrittelyjen aikana hieman tarkastelin minne piirin jalkoihin nämä kaikki kytketään, ja miten sen toteuttaa piirilevyllä. Osaksi piirilevykin määräsi minne mikäkin kytketään. Piirilevystä on tarkoitus tehdä mahdollisimman yksinkertainen ja vieläpä yksipuolinen, jossa ei montaakaan komponenttia eikä hyppylankaa ole.
Kytkentäkaavio ohjainpiirilevylle.
Minkä kokoinen levy ?? Miten osat sijoitellaan piirilevylle ?? Voisiko releet
ja analogitulon vahvistimet sijoittaa samalle levylle ?? Entäs
riviliittimet joihin kytketään ulkopuolinen maailma ??
Jos kaikki osat sijoitetaan yhdelle piirilevylle niin ne on sitten siinä. Mutta
entä jos tulee mieleen että muutetaan jotain ominaisuutta tai tuloja tai
lähtöjä ?? ...... Sitten vain suunnitellaan koko levy uudelleen.
Mielestäni tässä tapauksessa, kun ei ole selvää kuvaa mihin koko laitetta
käytetään, voisi tehdä niin että, tulot ja lähdöt tehdään erillisille
piirilevyille. Jolloin esimerkiksi lähtöjen releiden tilalle voi tehdä vaikka
uuden kortin jossa on FETit ohjauskomponenttina yms. No no... joo joo ... eipäs
mennä liian nopeasti ... pidetään mielessä mitä piti tehdä.
Ohjainpiirille oma piirilevynsä jossa on liittimet jokaiselle lähdölle ja
tulolle. Ohjainpiirilevyllä lisäksi liitäntä LCD-modulille. Samoin painikkeet
voisi olla samalla levyllä ohjainpiirin kanssa. Myös LEDit lähtöjen tilaa
osoittamassa. Varsinaiset tulot ja lähdöt ulkopuolista maailmaa varten omille
korteilleen. Korttien keskinäisen kytkennän voisi hoitaa nauhakaapelilla ja
liittimillä.
Piirilevyn voisi tehdä niin että sen valmistaminen onnistuu ihan
harrastuspohjalta eikä tarvitse tilailla sitä mistään. Käytetään
valmiiksi lakattua levyä johon voidaan valottamalla tehdä syövytyskuvio. Piirilevyä on myynnissä eri kokoisia paloja, yleisin varmaan on eurooppakortti
100X160mm, valmiiksi valoherkällä lakalla päällystettynä, käytetään
sellaista ja tehdään siitä piirilevy ohjainpiirille.
Piirilevyn suunnitteluohjelmana voi käyttää vaikka jotain piirustusohjelmaa,
jossa on käytettävissä eri tasot. Tasoja käyttäessä levyn voi suunnitella
kerroksittain. Levy ja komponentit eri tasoille.
Itselläni on Micrografixin Designer ohjelman vanha versio. Kelpo ohjelma,
kun sitä osaa jotenkin käyttää. Piirretään piirilevyn ääriviivat yhdelle
tasolle ja komponenttien ääriviivat toiselle, ja siirrellään niitä
ruudulla. Lisätään taas taso ja piirretään johdotus sopivan levyisellä
viivalla.
Kun sitä ohjainpiiriä ja liittimiä sovittelee piirilevylle näyttää aika
väljältä. No pistetään levy puoliksi, sitten tuntuu sopivalta. Toisen
puolen levystä voisi käyttää tuloihin, tai lähtöinä olevien releiden
alustana. No jätetään ne myöhemmäksi ja keskitytään tähän ohjainpiirin
levyyn.
Ohjainpiirin levylle tulevat osat.
Levy vaatii +5V:n jännitesyötön, se voidaan järjestää tässä vaiheessa
vaikka muutamalla johdon pätkällä suoraan levylle niin päästään
kokeilemaan toimiiko se mitenkään.
Ohjainpiiri. Kide ja sen kondensaattorit. Reset-nappi, sille vastus ja
kondensaattori. Suodatus elko käyttöjännitteelle. LCD-modulin liitin ja
mahdollisesti kiinnitys modulille. Lähdön LEDit ja virranrajoitusvastukset
sekä liitin lähtöohjausta varten. Painikkeet ja niiden vastukset sekä
liitin, jos halutaan liittää painikkeiden tilalle jotain kytkimiä. Vielä
yksi liitin analogituloille ja kytkintuloille. Onhan siinä puuhaa ja
sovittelemista joksikin
ajaksi.
Tuossa tuli vielä mahdollisuus käyttää nollavoimakantaa ohjainpiirille, kun
sitä kuitenkin irrotellaan piirilevystä vähän väliä, ohjelmointia varten.
Itselläni on ohjelmointia varten käytössä MICROCHIPin valmis ohjelmointilaite, PICSTART Plus.
Joskus innostuksissani sellaisen hankin, ja sitä siinä olevaa ohjainpiiriä,
on tullut päivitettyä jo muutamia kertoja.
Olisihan tuossa PIC16F877 piirissä mahdollisuus ohjelmoida piiri suoraan, vaikka
se olisi piirilevyssä kiinni, mutta se sitten taas vaatii oman ohjelmansa ja
omat virityksensä levylle, jotenka päätin jättää sen käyttämättä ja
käyttää niitä ominaisuuksia mitä nyt sattuu käsien ulottuvilla olemaan.
Kaikki mahdolliset osat ovat kierrätys osia, piirilevyä ja ohjainpiiriä lukuun ottamatta,
eli irrotettu romulaitteista.
Vaikka piirilevylle juottaakin kannan ohjainpiiriä varten, voi tämän nollavoimakannan painaa
piirilevyllä olevaan kantaan ?!?!? ..heh... heh...
Tuntuu vitsiltä, mutta ei ole.
Kun ohjelma on toimiva ja kaikki toimii niin kuin pitääkin, voi
nollavoimakannan ottaa pois ja painaa piirin kantaan, ilman juottamista. Ei
tunnu enää vitsiltä !! Ja nollavoimakannan voi käyttää seuraavassakin
projektissa, eikä ohjainpiirin jalat ole jatkuvasti vinossa sinne tänne
ohjelman kokeilun aikana.
Piirilevy juotospuolelta ja osien sijoittelu.
Ohjainpiirilevy valmiina.
Testiohjelma jolla voidaan testata
rakennetun levyn toiminnat.
Ohjelma on kirjoitettu MICROCHIPin MBLAB IDE ohjelmalla. Ohjelmointi tulee tutuksi vain
ohjelmoimalla, ei haaveilemalla mitä
sillä voisi tehdä. Piirin käskyt
ja niiden selitykset löytyy toisaalta sivustosta, käskyt on
samat lähes koko PIC piirisarjalle.
Ohjainpiirilevy ei jaksa kauaa yksinään pitää mielenkiintoa yllä, joten
seuraavaksi sille täytyi rakentaa levy jossa on muutama rele joita voidaan
ohjata ohjelmallisesti ohjainkortilta.
Relekortti. Kortilla on 8kpl releitä, ja 2kpl FET lähtöä
joita kaikkia ohjataan ohjainpiirilevyllä olevalla piirillä.
Tämä projekti alkoi tuossa loka- marraskuun vaihteessa v.2004 jolloin rupesin
miettimään miten tuon toteuttaisi. Marraskuun loppupuolella tein tämän
sivun ja lisäsin kotisivuilleni. Siinä vaiheessa oli ohjainpiirilevy valmiina
ja melkein relekorttikin, aika pian sen jälkeen, joulukuun alussa muokkasin
esimerkkiohjelmaa sen verran että siitä tuli kohtuullisen luettava. Aikaisempi ohjelma oli hieman
satunnaisessa- tai muuten epäjärjestyksessä.
Ja tästä tämä jatkuu....ja joulukin on tuossa ihan oven takana ... vai oliko
se tonttu........ jatketaan kunnes saadaan jotain aikaiseksi.
Aikaa tähän tuntuu menevän yllättävän paljon, no eihän ole vapaa ajan
ongelmia..... niin minkä vapaa ajan ???
Aikaahan on kyllä tässä vierähtänyt viritellessä edellisiä. Siitä huolimatta seuraavana rakennellaan tälle systeemille vielä yksi lisäosa. Tälle kortille tulee ohjainpiirilevyn AD tulojen vahvistimet ja säädöt sekä ulkoisten kytkimien optoerotetut tulot.
Tulokortti analogiatuloille.
Tuli se kortti valmiiksi, joopa joo.... ei vaan toiminut odotetulla tavalla.
No minähän jo vähän ajattelin että meneekö tämä täysin putkeen,
ilman suurempia mokia, mutta tulihan se sieltä.
Tuo op-vahvistin ei annakaan jännitettä ulos riittävästi, olisi pitänyt
vain jatkaa etsimistä. Tässä kävi nyt niin että, kun piirin
käyttöjännite on +5V niin lähtöjännite voi ohjautua 0,005V:sta.....
3,6V:iin. Kun taas PIC piirin referenssijännitteenä käytetään
käyttöjännitettä +5V. Tuo referenssijännite tarkoittaa sitä jännitettä,
mihin AD muunnin vertaa mitattavaa jännitettä. Saa tuota jännitettä myös
muutettua, kun käyttää ulkoista referenssiä, mutta siinä sitten menee kaksi
mittauspistettä. Kaksipa tietenkin, myös nollapisteellä on oma referenssi.
Voihan ...... mietitään sitä seuraavaksi miten tästä taas
selvitään.
Olisiko mahdollisuus käyttää op-vahvistimilla suurempaa käyttöjännitettä,
ja mikä se sitten tulisi olemaan, ja mistä se tehdään, ja mistä se tuodaan
levylle. Taas aika rivi kysymyksiä joihin pitäisi keksiä myös vastauksia.
Uutta levyä ei tässä vaiheessa oikein viitsisi kokonaan rakentaa, kai sekin
on edessä jossain vaiheessa, jos noita mokia tulee esille enemmänkin.
Korjaukset piirilevyille.
Seuraavana olisi vuorossa jonkin testausohjelman miettiminen. Mitä tuon ohjelman
pitäisi tehdä... mitä... miksi ... ja .. miten ... ??
Taas pientä päänvaivaa joksikin ajaksi.
Ai niin siitä puuttuu vielä pieni
näppäimistökin... sekin vielä.
Tuo LCD modulikin saisi olla hieman suurempi
kuin tuo 2 X 16 merkin moduli. Eihän siihen mahdu kuin 32 merkkiä jossa on jo
välimerkitkin mukana. Ei sillä paljoa kerrota, ainakaan mitään selvää
tekstiä.
Taasen on hieman vierähtänyt aikaa edellisestä päivityksestä. Eikä
vielä paljon muuta ole saanut aikaiseksi kuin pienen ohjelman pätkän jolla
saa testattua kaikki tähän mennessä liitetyt ominaisuudet.
Ohjelmassa on valikko, josta valitaan testattava portti ja sen ominaisuus.
Teksti on hieman mitä sattuu, mutta kai siitä jotain selvääkin saa
pienellä päättelyllä.
Aluksi LCD näyttöön ilmestyy nimi ja osoite joka häipyy parin sekunnin
kuluttua ja sen jälkeen tulee teksti "TESTIVALIKKO" sekä numerot 1-6, jotka tarkoittavat valittavia painikkeita ja samalla eri testejä. Paluu tähän päävalikkoon tapahtuu painamalla samanaikaisesti 7
ja 0 painiketta.
1. Painikkeesta tulee teksti näytölle "Portti RB-- "ja painettaessa
painiketta ilmestyy painikkeen ja samalla portin bitin numero.
2. Painikkeesta tulee teksti näytölle "Portti RD-- "eri painikkeilla
saa LEDin syttymään ja numeron näytölle ja jos relekortti on kytkettynä
,myös rele vetää, niin kauan kun painiketta painetaan.
3. Painikkeesta tulee teksti näytölle "Portti RC1-2. "Tämä on
relekortilla olevan PWM lähtöjen testi. Valitaan painike 1 tai 2 testit on
samanlaiset. Näytölle ilmestyy teksti "PWM(1)(2) 4+ 5- " Tarkoittaen, 4 painikkeella lisätään ja 5 painikkeella vähennetään
pulssisuhdetta ja jos lähtöön on kytketty moottori, sen pyörimisnopeus
muuttuu samalla. 7 painikkeella takaisin edelliseen valikkoon.
4. Painikkeesta tulee teksti näytölle "Portti RE-" tässä voidaan
testata AD kortilla olevien rajakytkintulojen toiminta jos kortti on
kytkettynä. Oikosuljetaan riviliittimeltä testattava pari ja näytölle tulee
sitä osoittava teksti.
5. Painikkeesta tulee teksti näytölle "A/D CH- " Tämä taas tarkoittaa että voidaan valita analogiakanava 0-4:n tai
palata edelliseen valikkoon 7:lla. Jos painetaan esim 0 tekstiksi tulee
"A/D CH-0 0,00V " ja kun kytketään jännite kanavaan 0,
jännitearvo tulee kanavanäytön perässä olevan 0,00V numeroiden tilalle.
Voidaan kytkeä vaikka +5V:n käyttöjännite kanavaan ja säädetään
trimmerillä jännitearvo oikeaksi 5,00 tai mitä se sitten onkin, jotain
siinä lähellä. Jokaiselle kanavalle tulee tehdä sama säätö, sen jälkeen
näytöllä oleva jännitearvo on oikein, jokaisella kanavalla. 6
painikkeella näytölle tulee 4:n kanavan mittaustulos.
Siinä tuo toisen testiohjelman toiminta
noin lyhyesti. Olisi siinä vielä hiomista suuntaan jos toiseenkin, mutta
toimii näinkin.
Ohjelmaa on kommentoitu suhteellisen runsaasti, ihan tarkoituksella, kun noista
esimerkeistä, mitä netistä löytyy, on tuo kieli paremmin outoa ja tässä on
nyt ainakin yritetty hieman käyttää tätä kotimaista murretta, mitä
yleensä lähes jokainen tässä maailman kolkassa asuva ymmärtää. Itselläni
oli kuitenkin aluksi hieman hankala hahmottaa ohjelmien toimintaa, johtuen
ensiksikin juuri kielestä ja toiseksi ohjelmointitavasta, jossa käytetään
muita linkitettyjä tiedostoja kääntäjällä, tietenkin esimerkeistä nämä
linkitetyt osat yleensä puuttuvat ja niitä kokeillessa ne yleensä ei sitten
toimi. Myös kommentit ovat yleensä vain jokin huomautus tai sana josta
pitäisi ymmärtää mitä ohjelma tekee juuri tässä kohdassa, no parempi
sekin kuin ei mitään. Tässä testiohjelmassa on kaikki mitä siinä tarvitaan. Ei muita
tiedostoja kuin tämä ja MPLAB ohjelma niin käännös onnistuu.
Ja ei muuta kuin kokeilemaan ja tutkimaan miten piiri toimii ohjelman kanssa.
Lisäsin vielä systeemiin näppäinmatriisin ja sille ohjelman, jolla voi testata toimiiko näppäimet matriisissa. Ohjelmassa on aika runsaasti rivejä, varmaan vähemmälläkin tulisi toimeen. Näin siitä tulee kuitenkin paremmin ymmärrettävä, miten näppäimet erotellaan toisistaan. Matriisi on kytketty samaan porttiin kuin ohjainpiirilevyllä olevat painikkeet, molemmat eivät toimi samaan aikaan. Kun käytetään matriisia, ohjainpiirilevyllä olevat näppäimet jätetään käyttämättä. Testaukseen pääsee painamalla aloitusvalikossa piirilevyn painiketta "6". Testauksesta pääsee takaisin painamalla samaan aikaan "0" ja "C". Ohjelma näyttää LCD näytöllä matriisista painetun näppäimen merkin.

Tällainen siitä piti tulla alunperin jonkin aikaisemman suunnitelman mukaan.

Ja lähes tällainen tuli. PIC16F877 piirillä toteutettu ohjaus, kaikki yhdessä
kuvassa.
Kotelointikin tuli toteutettua muutaman
yrityksen ja sovituksen jälkeen, mutta tulihan siitä ainakin kohtuullisesti toimiva.
Kotisivu
Elektroniikka sivulle
Relekortti
Analogiatulokortti