Printtejä kerhon AVR-mikrokontrollereille saatavilla

Kerhon komponenttivarastossa on jo pidemmän aikaa ollut AVR mikrokontrollereja saatavilla jäsenten käyttöön. Käyttöä lienee rajoittanut osittain se, että kyseiset piirit ovat pintaliitosmalleja ja tarvitsevat melkeinpä aina sopivan piirilevyn alleen. Koekytkentöjen tekeminen on siis ollut vähintäänkin hankalaa. Ratkaisimme ongelman tilaamalla kokeiluihin sopivia piirilevyjä kahdelle eri piirille, joita varastossa on reilummin. Toinen piiri on mallia Mega16 ja niitä on varastossa muutama kymmenen. Riittää siis useammalle rakentelijalle. Toinen piiri on puolestaan AT90LS2343 ja niitä onkin sitten muutama sata. Varsinkin näille jälkimmäisille olisi erittäin hienoa keksiä jotain harrastetta palvelevia sovelluksia, jotta saadaan piirit hyötykäyttöön. Laitoinkin niitä samalle printille kaksin kappalein, kun ovat niin pieniäkin. Ohessa on pari kuvaa Eaglella tehtynä, sekä valmis 90LS2343 printti. Molemmissa printeissä on ohjelmointiliitäntä Atmelin ohjelmointilaitteiden nastajärjestyksen mukainen.

Piirilevyjä on saatavilla erikseen sovitusti kerholta pientä korvausta vastaan. Piirilevyn mukaan tulee levylle sopiva AVR piiri, sekä Mega16 tapauksessa myös RS232 piiri. Muita komponentteja voi etsiä komponenttikaapista tai tilailla esimerkiksi Partcolta. Korttien hinnat ovat Mega16 piirille sopiva printti 4euroa/kpl ja AT90LS2343 piirille sopiva printti 2euroa/kpl. Maksut käteisellä kerhon kahvikassaan. Jos loppuvat kesken, niin tilaillaan lisää.

Kun nyt piirejä pystyy vihdoin hyödyntämään mitä erikoisempiin kokeiluihin, niin laitetaan saman tien käyntiin kerhon jäsenille pieni kilpailu. Parhaan harrastetta tavalla tai toisella palvelevan sovelluksen ideoijalle/toteuttajalle on luvassa pieni palkinto. Kilpailu on avoinna heti ja jatkuu vuoden loppuun asti.

Aihe on vapaa, mutta sovelluksessa tulee hyödyntää joko kerhon Mega16 tai AT90LS2343 piiriä. Lisäpisteitä saa jokaisesta kerhon komponenttivaraston valikoimasta hyödynnetystä lisäkomponentista. Ne ovat käyttöä varten, joten hyödynnä rohkeasti. Sovellus voidaan rakentaa näiden tilattujen protoilukorttien ympärille tai sitten voit halutessasi suunnitella myös oman piirilevyn. Varsinkin monimutkaisille kytkennöille se on varmasti järkevääkin, mutta ei silti välttämätöntä. Kaikilla reikälevyillekkin tehdyillä viritelmillä voi osallistua.

Osallistua voit lähettämällä lyhyen esittelyn ja kuvan rakennelmastasi allekirjoittaneen omakutsuosoitteeseen. Voit osallistua myös kahden (2) hengen joukkueena, jos se helpottaa ideoiden syntymistä ja kehittelyä. Kaikki osallistuneet ideat julkaistaan myöhemmässä HamsteriXissa. Lähetä esittelyt viimeistään vuoden vaihteessa. Aiemminkin saa lähettää ja myös useammalla eri sovelluksella saa osallistua. Ideoi siis niin monta kuin keksit.

Voittaja valitaan seuraavien kriteerien perusteella:

  • Kerhon komponenttivarastosta hyödynnetyt komponentit (muista mainita esittelyssä
    mitä hyödynsit).
  • Idean omaperäisyys
  • Toiminnallisuus
  • Toteutus
  • Hyödyllisyys harrasteen kannalta

Loppuun vielä esimerkkinä itse hiljattain ideoimani UTC kello, joka synkronoi itsensä GPS aikaan. Ohessa on kaksi kuvaa. Toisessa testailen ideaa vielä koekytkentäalustalla ja toisessa on jo hieman valmiimpi versio kunnollisella piirilevyllä. Printille on vielä kuvassa juottamatta paristopidin RTC piirin muistiparistoa varten. Ensimmäisessä versiossa ei ollut erillistä RTC piiriä, mutta tällöin on ongelmana ajan häviäminen joka kerta kun virta katkaistaan. Tässä versiossa RTC piiri jatkaa toimintaansa muistipariston varassa, vaikka itse laitteelta katkaistaankin sähköt. Samoin kellonaikaa luetaan RTC piiriltä, vaikkei GPS olisi kytkettynä. Heti kun GPS kytketään ja GPS on saanut itsensä kartalle, päivitetään kello varmasti oikeaan aikaan. Lisäksi printillä on liitäntä datan edelleenjakeluun esimerkiksi tietokoneelle. Siitä voidaankin sitten synkronoida myös tietokoneen kello oikeaan aikaan sopivilla ohjelmilla. Printillä on hyödynnetty AVR piirin lisäksi kerhon kaapeista sarjaliikennepiiri, keloja, vastuksia, elkot ja EEPROM piirejä. Nuo EEPROM piirit eivät ole välttämättömiä kellon toiminnan kannalta. Laitoin ne vain mukaan, jotta voin kehitellä samalle printille myöhemmin jatkosovelluksia. Itse asiassa myös käyttämäni GPS on Partcon myymästä GPS modulista ja kerhon kaapeista löytyneistä komponenteista kasaan kyhätty printti sekin.

Tehdä voi siis monenlaista, joten nyt vain innolla uusia ideoita kehittelemään! Muita AVR-ideoita voisi olla esimerkiksi APRS-träkkerit, jännitevahdit, hälytysjärjestelmä, antennien suuntanäyttö, erilaiset logiikat ja ohjaukset, jne. Löytyisikö edellämainituista esimerkeistä jotain kehittelemisen arvoista tai keksitkö jotain ihan uutta?

Ideoita ja kysymyksiä voi laittaa myös tähän ketjuun.



mega16levy_oh7ab.png
90ls2343_levy.png
_MG_3997.jpg

Sen verran huomioita 90LS2343 piiristä, että kerholta löytyvissä yksilöissä ei näköjään ole sisäinen kello käynnissä oletuksena. Datalehden mukaan pitäisi olla, joten älä ihmettele jos piiri ei ensimmäisellä kerralla vastaakkaan. Kellon saa käyntiin syöttämällä piirille ulkoista kelloa (esim 4MHz) nastaan PB3 (IC-pinni 2) ja muuttamalla sitten kyseisen Fuse asetuksen. Tämä piirimalli ei tue kiteitä eikä sille ole myöskään paikkaa piirilevyllä. Signaali täytyy siis syöttää erillisellä oskillaattorilla. Piirin maksimi kellotaajuus on 4MHz, mutta asetuksen muuttaminen näytti onnistuvan hienosti myös 10MHz kellolla kun sellainen sattui olemaan helpoiten järjestettävissä :wink:

90LS2343 on myös sen verran vanha piirityyppi, että se näyttäisi ohjelmoituvan parhaiten yksinkertaisella rinnakkais- tai sarjaporttiin rakennetulla ohjelmointilaitteella. Dontronics DT006-tyylinen ohjelmointipiuha toimii ainakin ja eipä voisi olla yksinkertaisempi, kun tarvitsee vain muutaman vastuksen virtaa rajoittamaan. Softaksi suosittelen aloitteleville CodeVision AVR-kääntäjää. Codevisionista on saatavilla ilmainen kokeiluversio, jossa tosin koodin kokoa on rajoitettu. Riittää kuitenkin hyvin pitkälle harjoitteluun.

Sitten kun on pidemmälle ehtinyt, niin voi testailla esimerkiksi WinAVR ympäristöä, joka pohjautuu suosittuun open source kääntäjään. En kuitenkaan neuvo aloittamaan sillä, koska mielestäni se ei aina ole ihan kauhean selkeä. Open Sourceen tottunut voi toki olla ja saa olla eri mieltä =)

Myös Atmelin AVR Studio on kokeilemisen arvoinen.

73 de Reijo OH7GGX

Tässäpä molempien levyjen liittimien nastajärjestykset myös tiedoksi.

Ohjelmointiliitäntä (ISP) molemmilla levyillä noudattaa Atmelin 6-pinnistä ohjelmointiliitäntää:
1 = MISO
2 = VCC
3 = SCK
4 = MOSI
5 = RESET
6 = GND

Huomaa, että VCC nasta ei ole tarkoitettu jännitteen syöttöön. Se on ainoastaan ohjelmointilaitteen jännitehaistelua varten. Käyttösähkö pitää aina syöttää printille erikseen.

AT90LS2343-levyn I/O nastat:
1 = PB0
2 = PB1
3 = PB2
4 = PB3
5 = PB4
6 = RESET

Printillä on kaksi AVR-lutikkaa. Molemmille on oma I/O liityntä ja nastajärjestykset ovat samat. Lisäksi levyllä on liitäntä 9-12V käyttösähköä varten, sekä regulaattorin jälkeen +5V liitäntöjä 2kpl, joita voidaan toki käyttää myös syöttämään levylle suoraan +5V sovelluksesta riippuen.

Mega 16 levyllä on useampia liitäntöjä eri tarkoituksiin. Niiden pinnijärjestykset ovat seuraavat:

LCD:
1 = GND
2 = +5V
3 = Kontrasti
4 = RS (PB2)
5 = R/W (PB3)
6 = E (PB4)
7 = Data 0 (PA0)
8 = Data 1 (PA1)
9 = Data 2 (PA2)
10 = Data 3 (PA3)
11 = Data 4 (PA4)
12 = Data 5 (PA5)
13 = Data 6 (PA6)
14 = Data 7 (PA7)

Datalinjoja 0-3 ei tarvita, jos näyttöä ohjataan 4-bittisessä modessa. Tällöin nämä pinnit voidaan hyödyntää ADC liitännässä esimerkiksi mittauksiin, mutta eivät saa olla samaan aikaan kytkettynä näyttöön.

LCD Backlight:
1 = +5V (omalta regulaattoriltaan)
2 = GND

ADC (HUOM! LCD-liitäntää käytettävä 4-bittisenä, jos ADC liitäntöjä halutaan käyttää yhtäaikaa):
1 = ADC0 (PA0)
2 = ADC1 (PA1)
3 = ADC2 (PA2)
4 = ADC3 (PA3)
5 = Not Connected
6 = Not Connected
7 = Not Connected
8 = AREF
9 = AVCC
10 = GND

PORTC:
1 = PB0 (T0/XCK)
2 = PB1 (T1)
3 = PC0 (SCL)
4 = PC1 (SDA)
5 = PC2 (TCK)
6 = PC3 (TMS)
7 = PC4 (TDO)
8 = PC5 (TDI)
9 = Not Connected
10 = Not Connected

Huom! Kaksi ensimmäistä menevät liitännän nimestä huolimatta Porttiin B. Nämä on otettu mukaan, jotta myös kyseisten I/O-nastojen toimintoja voidaan tarvittaessa hyödyntää. Muut nastat menevät liitännän nimen mukaisesti Porttiin C. Portin C I/O:t 6 ja 7 ei ole tuotu liittimeen, koska ne on varattu Timerin erillistä kellokidettä varten.

PORTD:
1 = PD4 (OC1B)
2 = PD5 (OC1A)
3 = PD6 (ICP)
4 = PD7 (OC2)

RS232:
1 = +5V
2 = TXD
3 = RXD
4 = GND

GPS:
1 = +5V
2 = RXD
3 = TXD
4 = GND
5 = Not Connected
6 = Not Connected
7 = INT0 / PD2
8 = INT1 / PD3
9 = Not Connected
10 = Not Connected

Nastat 7 ja 8 ovat sitä varten, että niihin voidaan halutessaan tuoda GPS:ltä 1PPS ja FIX signaalit. Niitä voi hyödyntää erilaisissa sovelluksissa tarvittaessa.

Eri pinnien toiminnoista tarkemmin löytyy kyseisten lutikoiden datalehdistä. Suomeksi on myös saatavilla AVR-oppaita, joissa näitä asioita on selitetty ja annettu ohjelmointiesimerkkejä.

Ohjelmointikaapeli:

Jos kenen koneesta vielä rinnakkaisportti löytyy, niin tässä erittäin yksinkertainen Dontronics DT006 tyylinen ohjelmointikaapeli. Tarvitset vain sopivat liittimet, pätkän 5-napaista kaapelia ja 4kpl 330ohmin vastuksia.

Kytkentä toivottavasti selviää tästä hahmotelmasta:
LPT-nasta 2----------[330R vastus]---------ISP-nasta 4 (MOSI)
LPT-nasta 4----------[330R vastus]---------ISP-nasta 5 (RESET)
LPT-nasta 5----------[330R vastus]---------ISP-nasta 3 (SCK)
LPT-nasta 11--------[330R vastus]---------ISP-nasta 1 (MISO)
LPT-nastat 18-25----------------------------ISP-nasta 6 (GND)

ISP-liitännän VCC nastaa ei tarvita tässä ohjelmointijohdossa. Kytke LPT-portin päässä kaikki nastat 18-25 yhteen. Pidä kaapeli mahdollisimman lyhyenä, jolloin toiminta on varmempaa.

Lisää erilaisia ohjelmointikaapeleita löytyy Googlella ja kaupasta saa myös valmiita aktiivisa laitteita esim USB väylään.

AVR-levyille kaipailtiin komponenttilistaa, joten tässäpä olisi.

Ensin pienempi eli AT90LS2343-levy:
IC1, IC2 = AT90LS2343
IC3 = 78L05
R1, R2 = 10k
C1, C3, C4, C5 = 100nF 63V
C2 = 10uF 35V
Liittimet = Piikkirimoja

Mega16 levyn osat ovat seuraavat:
IC1 = Atmel Mega16
IC2, IC3 = 7805
IC4 = MAX3221CAE
R1 = 10k
R2 = 10k trimmeri
R3 = 56R (tätä muuttamalla voi säätää näytön taustavalon kirkkautta)
C1, C2 = 10uF 35V
C3, C4, C5, C6, C7, C11 = 100nF 63V
C8, C9, C10 = 470nF 63V
Liittimet = Piikkirimoja ja lattakaapeliliittimiä

Levyjä on jäljellä seuraavasti:

  • AT90LS2343 jäljellä 1kpl
  • Mega16 jäljellä 5kpl

Levyt sisältävät printille tulevat AVR-mikrokontrollerit, sekä Mega16 sisältää lisäksi RS232-lutikan. Muut osat jää itse hankittaviksi, kerhon komponenttikaapistakin voi etsiä.
Toimitan levyjä lutikoineen pyynnöstä QSL-pusseihin. Maksu tapahtuu kerhon kahvikassaan.