Ívafin raftækni

From Fab Lab Wiki - by NMÍ Kvikan
Revision as of 12:18, 16 June 2009 by Spm (Talk | contribs)

Jump to: navigation, search

Îvafin raftækni (e embedded electronics).

Inngangur að ívafinni raftækni

Þetta er inngangur að ívafinni raftækni ætluð fólki sem er komið með smá bakgrunn í rafmagnsfræi og rafeindatækni. Það er gert ráð fyrir að þú vitir hvað rafmagn er og að þú hafir snert rafíhluti einhverntíman. Allt annað reynum við að útskýra eins og hægt er. Það er farið yfir mjög margt í þessu, þessu, þannig að þú skalt gefa þér góðan tíma! Hér er ætlunin að láta bókmenntaða rafmagnsverkfræðinema og aðra sem hafa fræðilegar undirstöður en enga verklega kunnáttu til að leggja frá sér blýantinn og vasareikninn og stinga díóðu í samband. Mundu: ef það kemur reykur, þá veistu hvað á ekki að gera næst.

Í þessari kennslu verður stuðist við ATmega168 en hægt er að nota ATmega8 og ATmega88 án breytinga.

Hvað er örstýring?

Kannski veistu hvað OR-hlið er. OR-hlið er rökhlið sem hefur tvö inntök og stýrir einu úttaki - það er kveikt á úttakinu EF að það er kveikt á einhverju inntaki, en ANNARS ekki. Þú hefur kannski unnið með þessa tegund hliða, eða kannski DIP-kubb með fjórum OR-hliðum innbyggðum í hann. Svona DIP kubbar þurftu einn pinna þar sem rafmagn fór inn (kallaður VCC) og einn pinna sem tengdist í jörð (GND). Rafmagnið flæddi um kubbinn og lét hann starfa.

Örstýringar eru í rauninni sama hugmyndin. Þú ert með einhvern fjölda inntaka þar sem rafstraumur er "lesinn", og það einhvern fjölda úttaka þar sem rafstraumur er "skrifaður". Það sem gerir örstýringar ólíkar öðrum svona IC kubbum er að þær keyra kóða: vélamál, nánar tiltekið. Til dæmis gætirðu verið að lesa á pinnum A og B, og stýrt pinna C. Til að herma eftir OR hliði:

if (A == 1 || B == 1) {
       C = 1; 
} else { 
       C = 0;
{

Þetta er C kóði! Þú getur forritað hverslags forrit, vistþýtt þau, hlaðið þau yfir á kubbinn, keyrt kubbinn upp, og þá keyrir forritið. Mjög einfalt! Örstýringar eru notaðar í öllum raftækjunum sem þér finnst svo sjálfsagðar, svo sem örbylgjuofninum, sjónvarpsfjarstýringunni, músinni, prentaranum. Það eru meira en 150 örstýringar í nýjum bílum. Það er einn sem bíður eftir að þú ýtir bremsunni niður (BREMSUR == 1) og að hjólin læsist (HJOLLAEST == 1). Þegar þetta tvennt gerist sleppir örstýringin bremsunum, og þá ertu kominn með ABS bremsur (spólvörn).

Í gamla daga voru örstýringar bara forritanlegar einu sinni. Þú bjóst til forritið, prufukeyrðir það á kubbnum, og ef kubburinn virkaði ekki þá var hann ónýtur - þá henti maður honum og prófaði aftur. Nú eru flestar örstýringar með flash minni, sem þýðir að það má skrifa og endurskrifa minnið mörg þúsund sinnum áður en að kubburinn verður ónýtur. Oftast nær skemmir maður örstýringuna fyrir slysni löngu áður en að minnið skemmist.

Örstýringar eru ólíkar venjulegum borðtölvum. Slíkar tölvur þurfa hellings afl og fullt af íhlutum til að þær virki. Þær eru heillengi að fara í gang og þær hitna svakalega. Örstýringar kveikja á sér og byrja að vinna á nokkrum millisekúndum og ef þær eru nógu heitar til að þú finnir fyrir því er eitthvað alvarlegt að og þú hefur sennilega skemmt stýringuna. Og já, vel á minnst - örstýringar kosta sirka 300 kall.

Snúum okkur aftur að dæminu með OR-hliðið. Það voru fjölmargir pinnar á honum, og allir voru þeir annaðhvort inntök eða úttök fyrir hin ýmsu OR hlið í pakkningunni (fjögur hlið í einni pakkningu = 8 inntök, 4 úttök, og svo VCC/GND pinnar). 14 pinnar! Í örstýringum eru flestir pinnar GPIO pinnar - general purpose input/output. Þessir GPIO pinnar geta verið bæði inntök og úttök. Mjög töff. Hvern inntakspinna má lesa og vinna með. Dæmi:

if (PORTC.2 == 1)
       gera eitthvað

Hver úttakspinni getur verið ýmist "í gangi" (hátt eða 1) eða "slökkt" (lágt eða 0). Dæmi:

while(1) {
       RB3 = 1;
       delay_ms(1000);
       RB3 = 0;
       delay_ms(1000);
}

Giskaðu hvað þessi kóði gerir? Hann kveikir á pinna, bíður í sekúndu, slekkur á honum, bíður í sekúndu. Þetta er Hello World örstýringinna. Þetta virðist einfallt, en þegar þú ert búinn að eyða fimm klukkutímum í að rífa úr þér hárið vegna þess að þú færð ekkert til að virka getur það að sjá díóðu blikka í fyrsta skiptið verið alveg frábær tilfinning.

Hverskonar örstýringar eru til og hvernig læt ég þá blikka?

Hér er smá samantekt á mismunandi gerðum örstýringa:

  • PIC - Þetta eru klassísku örstýringarnar frá Microchip. Mjög einfaldir og sannreyndir, en þá skortir marga eiginleika sem aðrir framleiðendur eru að nota. Sumir standa og falla með PIC, aðrir vilja fá fleiri eiginleika.
  • AVR - Þetta eru aðal keppniautar PIC. Framleiddir af norska fyrirtækinu Atmel. Þeir geta allt sem PIC geta, en líka margt annað, og eru yfirleitt ódýrari í þokkabót.
  • MSP - Örstýringar frá Texas Instruments. Ekki jafn kraftmiklir og AVR eða PIC, en henta rosalega vel í hluti sem þurfa að nota lítið afl. Meira um þetta síðar, en ímyndaðu þér að keyra tölvu á einni AA rafhlöðu í fimm ár. Þetta er raunhæft með stýringum sem hafa nanóampera orkuneyslu.
  • ARM - Mjög ungir örgjörvar sem eru ótrúlega öflugir og ótrúlega ódýrir, en þeir eru tiltölulega flóknir samanborið við aðrar örstýringar.
  • 8051 - Þessi örstýring hafði ákveðin greini heillengi: þetta var örstýringin. Intel framleiddi þá á níunda áratugnum, og hann er enn notaður til kennslu. Þetta er mjög gamaldags tækni, en þær eru ennþá þróaðar og hafa núna flash minni og ýmislegt í þeim dúr. Þetta var örstýringin í gömlu Nintendo tölvunum.
  • 68HC08/11 - Önnur algeng örstýring, þessi er frá Motorola. Rosalega vinsæl hér áður fyrr og enn kennd í háskólum.

Það er hægt að finna mjög nákvæmar upplýsingar um allar þessar örstýringar á netinu, en hér verður stuðist við ATmega168. Hvers vegna?

  • 20 MIPs (milljónir aðgerða á sekúndu), sem er nóg til að gera mjög öfluga hluti.
  • Mjög ódýrir.
  • Eru með innbyggða drivera fyrir flest - UART, SPI, I2C, ADC, innbyggður kristall, PWM...
  • 16 KB af forritanlegu minni sem er nóg fyrir flest byrjandaverkefni

Það kostar þig sennilega um 5000 krónur að koma þér af stað í að vinna með örstýringar, plús verkfærin og allt það.

Hvernig byrjarðu?

Allar örstýringar þurfa rafmagn. Það eru tveir pinnar á einföldum örstýringum fyrir rafmagn: VCC og GND. En hvað er VCC? VCC er merkingin fyrir pósitífa spennu. Kvíddu engu, eftir að hafa séð "VCC" nokkrum sinnum fer þér að finnast það venjulegt. GND þýðir Ground, eða jörð. Rafspenna þarf alltaf einhverja leið til að flæða aftur í jörðina.

Það eru til þúsundir tegunda örstýringa, en nánast allar nota 5V spennu. 3.3V er líka algengt en þú getur fundið 2.8V og 1.8V VCC á sumum undarlegari örstýringum. Í bili skaltu bara hugsa um 5V og jörð.

Athugið: Ef þú snýrð tengingunni við þannig að VCC fer í GND og öfugt munu slæmir hlutir gerast. Gættu þess að snúa tengingunni alltaf rétt. Ef þú snýrð þessu öfugt mun ekkert springa, en það er mögulegt að það komi smá reykur, það er líklegt að örstýringin hitni alveg svakalega, og það er nær óhjákvæmilegt að hún skemmist. Þetta mun sennilega koma fyrir þig einhverntíman, en gerðu þitt besta.

En hvar finnurðu 5 volt? Raflagnir í húsinu þínu nota 220V AC. AC er riðstraumur, sem þýðir að straumurinn sveiflast, en það er ekki gott fyrir örstýringar, sem þurfa jafnstraum (DC). Þannig að þú þarft að breyta 220V AC yfir í 5V DC.

Nú er komið að því að búa til spennureglara!

Þú getur fengið 5V spennubreyti sem breytir 220V AC yfir í 5V DC. Hinsvegar skaltu aldrei gera ráð fyrir því að spennubreytar gefi af sér nákvæmlega það sem þeir segjast gefa af sér – ef þú mælir úttakið á spennubreytinum með fjölnotamæli muntu sennilega sjá 8-9V, sem er nóg til að drepa örstýringuna.

Gerum ráð fyrir að þú sért með fínan spennubreyti sem er að gefa 9V. Því miður er oft “hávaði” í svona spennubreytum, sem þýðir að það er straumflökt. Spennubreytar nota oft ódýrar aðferðir til að beyta AC í DC og ná stundum ekki að afriðla fullkomnlega, þannig að DC bylgjan flöktir um 100-500mV, þannig að DC bylgjan rís og fellur milli 8.5 og 9.5 volt. Þetta flökt þarf líka að hreinsa upp.

Algengasti spennureglarinn er kallaður LM7805. Reyndar eru nánast alltaf einhverjir aukastafir, þannig að reglarinn heitir LM78L05 eða LV78X05 til dæmis. Í Fab Lab smiðjum er LM3480IM3 og LM2940IMP til á lager. Eina sem þú þarft að vita um þetta samt er að það eru margir framleiðendur sem eru að framleiða svo til sama partinn, stundum með einhverjum minniháttar breytingum. Ef þú ert að smíða þetta á brauðbretti viltu sennilega fá TO-92 eða TO-220 pakkningu – meira um pakkningar síðar.

Nú þarf að tengja reglarann við spennujafnarann.

http://www.sparkfun.com/images/tutorials/BEE-Lectures/1-PowerSupply/LM7805-Pinout.jpg

Hér sérðu pinnana á LM7805 og skyldum kubbum – þeir eru nánast allir alveg eins. Segðu “IJÚ” í huganum til að muna þetta: “inntak, jörð, úttak”. Það er samt alltaf gott að kíkja á datasheet fyrir alla nýja parta sem þú prófar – datasheet er skjal sem er til fyrir alla rafeindaíhluti sem segir hvað pinnarnir gera og hvernig íhluturinn virkar.

Inntakið er inntaksspennan, GND er jörð, úttakið er 5V jafnstraumur. Spennubreytirinn hefur tvo pinna. Annar er 9V og hinn er jörð. Allar jarðtengingar verða að vera tengdar saman til að straumurinn streymi um kerfið. Einu sinni enn: Tengdu allar jarðir saman. Þetta er næstalgengasta ástæðan fyrir því að byrjendur lenda í vandræðum.

http://www.sparkfun.com/images/tutorials/BEE-Lectures/1-PowerSupply/PowerSupply1.jpg

Smá athugasemd: Á teikningunni hér eru jarðtengingarnar ekki sýndar sem tengdar. Við gerum ráð fyrir því að grænir vírar með sama nafni eru tengdir saman. Rafteikningar verða stundum stórar og flóknar og þá er ágætt að þurfa ekki að teikna upp alla vírana alltaf. Mundu bara að tengja alla GND pinnana saman.

Við ætlum að bæta við nokkrum pörtum í viðbót. Ef þú tengir spennubreytinn núna sérðu að 9V inn gefa gróf 5V út – ekki hrein 5V, heldur frekar eitthvað á bilinu 5.25 til 4.75 volt, eftir því hve góðan reglara þú hefur. Þú getur eytt meiri peningum til að fá betri reglara, en það eru til ódýrari og einfaldari leiðir til að sigta sveifluna burt. Ef þú ert að fá 5.08V til dæmis á fjölnotamælinum er það vegna þess að hann er að taka meðaltal af mörgu mmælingum. Hefurðu prófað sveiflusjá? Ef þú mælir úttakið með sveiflusjá ættirðu að sjá sveifluna, sem gæti verið alveg 200mV.

Til að losna við þessa sveiflu notum við þétta. Til að skilja hvernig þéttar virka er best að ímynda sér vatnstank. Þegar mikið álag er á kerfinu heldur vatnstankurinn aukabirgðir, og þegar lítið álag er á kerfinu safnast það upp. Það skiptir ekki máli hve hratt vatnið flæðir inn í tankinn, hann flæðir alltaf út bara í samræmi við þörfina. Það er að segja: ef þú ert með þétti, þá lágmarkar hann spennuflökt.

Þú getur kannski keyrt örstýringuna þína án þess að nota þétta til að sigta flöktið, en það er almennt ekki góð venja. Ef þú prófar það og ekkert virkar gæti það verið út af flöktinu eða villum í kóðanum eða biluðum nemum eða ... of margar breytur geta gert þig geðveikan, þannig að það er um að gera að splæsa í smá þétta til að draga úr mögulegum ástæðum fyrir bilunum.

http://www.sparkfun.com/images/tutorials/BEE-Lectures/1-PowerSupply/PowerSupply2.jpg

Hér sést 100µF (eitt hundrað míkrófaröd) á inntakinu og 10µF á úttakinu. Þú munt nota slatta af þéttum af þessari stærð í kringum raforkukerfin og svo enn minni þétta (t.d. 0.1µF) í massavís í kringum örstýringarnar. En þessir þéttar ættu að taka allt flökt af nokkuð vel. Ef að þú ert að nota rafhlöður eða mjög góðan spennubreyti getur verið nóg að setja 3.3µF úttaksmegin.

Þéttar gefa ekki orkuna frá sér um leið. Stærri þéttar geyma meiri orku en svara hægar. Því minni sem þéttirinn er því hraðar getur hann skilað orkunni af sér. Ef rafmagnið á húsinu þínu flöktir í 10-100ms getur stór þéttir (100µF upp í 1F) haldið spennunni uppi allan tíman. Minni þéttir (0.1µF) dempar hinsvegar bara hávaða á hærri tíðnum og forðar minni spennufall (1µs-100µs). Fyrir vikið eru litlir þéttar notaðir nær örstýringunni til að hjálpa með lítið flökt en stærir þéttar eru notaðir við rafmagnsinntakið.