Você está na página 1de 114

MiCROCONl'~nL(lI,DQRE:S, REDES Y TEL,ECO·MUNICA{;'ION~S

.APl~CACiCiNES e:lECTRONGCAS COiN MliCRO'CON'TROLADORf-S



lENGUAJE BASIC (BASCO!M AVR)

-,

RAM9RO VAlENC!.A B.

"; I

lNCLUIDO -("DeON EiEM!~tOS '( PLAC,~ USB·RS232

. ,; ,

, ,'" '~i ...

T • .:r;:·

:... -..,,~~ ... :---~ - '"

's • '~~

---- _: ',\..:----_- ,

<

'i_--

.. " .. '._:; -: '''_u_I.~ .

_.

-,.~., _ ...... _

I

, , r ,

9--'

= ~

~

~.

.. ~ ..

III ...

~

r-t

~ Q

~ ~

... .. ..

; t

APtICACIONES

. ,

ELECTRONICAS:.CON

IMICRO:CONTROLADORES AVR

, J

1-:'"

I

I •

._-;_

,".:;

(E.P.N QUlTO,Z006-

DAD TECNlCA DEL NORTE (!13AF;~ 200B) ,

GEREt'I.'TE MICR-OTEL,

TELECOMUNlCACIONES)

(f'.l1CROCONTROLAPORES,

REDC5

'{

=·==== __ .====......,======_r-~

Dicie.mbre 2r!{J8

Los mlcrocontroladores AVR;~i'lrIIOishetramiel1tas masacrualES y potentes que existell.en e~ mercade, adem.~ssu 'difusl6n 00 ha s.ido'muy proflJnd~, yes as! que la siguiente preseritacion iritenta proyectar una iclea muy daraacerca de

. las herramlentas de progfama.clon que ex~ste'1i! para utilizar·!os AVR's.

• • !. ..

Err paqtJe~ computadoral BASCOM 'AVRr permite programar tcda ~;;!;e de rrncrocontroladores: AVR" de rnanera rapida y estnxturada en alto nhi.el (LerrgLJaje Basic)} con iocua'i se la _ha uti!iiado para reallzartodcs los provectos gue s13 encuentran en este nbro,

EI lector itodra encontrar dfer.eotes proye~to$, q,ue Ie ayudaral:l a facilitar .e~ manejo y aprendlzele de los rnkrocontroladores '"AVR, como el ATMlEGA 48, ATMIEGA'S, ATEMEGA is, AmN,(4S. Adernas podra enccntrar un CO adjl,.mto con esta presentacion en e'l cual se encuentran lias pmglramas Y sus respecnvas simuJa.,;;:ione~.

Es ltnportante recalcar, que 'se ha lntentado expllcar ,el prlnclpio de fUr]ciOTIarniento de cads uno de los elementosQehardwareque pueden i'i1te'radu:a,r'con un mtcrocontrolador, GOIl la flda,liqad d~ apreridet no solo Itt parte de pmgramatlOli'l, sino Clue tamblen la parte de, ccnedon y man~jo de

ha:rQwat~.·.. '

ElagrMecilTjiento a DiQS y para tedas las personas que coli.lb!lrarno para laRubH~ci6n de este libro, va sea ton sus,a.n!mo~s, oexpenencia profeslonal, entre e~tas OIlIng. luanGalarza (A1R, Dlstrtbuidor y C:onocedor de los AVR)" al [ng.Xavier Rosero (lnlgenJerq Autornotrh~: y desarroladcr de provectos con microcontroladores. P1Ci MOTOROLA; AVR),al Ing. David Vargas (Ingern€I'O"eil S_istemas, desarrellador de provectos con bases d~ datos y lenguaje Visual)" ademasulla .dedlcacl6nestieciai para mls Padres par su apovo 1ncondlr:Jonal"'a '

Gaby )I ,a rnl hermano Per. '.

- ... .:.

"Cllaindo tengas un suefio; luch,8 pm,al y'cuando in~s'=te dlqanqueno puedes: esfu€rzate, porque estas mas. cerca tJe consaquirlo"

Rarnlro,

· ........

X~'\11:~::*~'4',: Fro~~,",-qrnqctbn 1- f'j( .~ .

. 1. MitrQcori;;~ol;;l!'lm; AVR " , """ " " .. ; ,,'.; ~ : , :, J..

1 .. 1-' ,AtMI:GJli4~' .. " , ,.,: ,.: ,,, , ,: : ;; ;; 1

1'.2 ATMEGAB ",,, , '.· , · , , , ?

1',3 ATMEGA1ti ,,', , , ; .. ,., .. ,", : , " .. 'j

.. z..,. BASCOM AVR " " ,,' .• , , , """ ".,~ , " , .. :,'.''''. J

2,1 INItIO , " :'!'.~ " .. , " C

1.'1 COMPILADOR • ,.".,','; , , , , " , '"

1.3 SIMULAPOR " , ", , , ; b

,1.4 EMULAPORSERl_AL ".:"' .. , " .. .' ~, : " ,' .. 7-

2,~ colliSXlONES PRINCIP,iU.ES :: ,; - _ .. 7

2,6. GRABANDO At MICROCONTROlAOOR ' .. ,· 8

3, IN5TRUCCIONI'S BAS]CAS OE BASCOM AVR · c .. 11

~;i' :~..:;I~,:::::::::::::::::::::::::::::::::::::::;:~::::::::::~::::::::::::::::::::::::::::::::::::::::: i£

3w3 ·,Config " , +''".'.+' •• 11·' ··•· ,+ •• ; •• ', .• ,.~ ';:-I~ "~I' 1";11:1 ~'''I''''I 1.2:

,3.4 W~it, ·Wai·bi!s,.Waittls : .. , ,."."" .. ,,'''''''',.,',""""' .. ,,, '13

3.5 00 .. - Loop ' ......................................•.. ~ t} 'I.'luu •• r ", 1-'

3.6 00.- Loop U'ntil ,., '" ".""",,' , .. , ":.,,",, , " 1"J

3.1 Tnggle , ""'''" , ", .. ""." ·;,, , , " " 13

3.8 Dim " ", .. "",.,." : , 0 13

;:~O ~~::;:~ci'~T·~·;·;iN~:::::::::.:::;::::::::::::::::-::::::::::::::::~::::::::::::::::::::::.:::::::::}~

3.11 IF.- THEN; ELSIE·" " " .. """"",.".""."i .. ,.,." " 15

3.12 FOR.- IIJEXY " .. " .. "" '., ., .. :_ " , '''''''.''', , 15

3.13 SElECT;- CA'SE '''.'''.'' .. ",." , '' , ,''' .. '''' .. " '''''', .. , 1;;

3.14 51MBOLcYS·OPERADORES,,, ,, .. , .. ,,,,,.;,,, ,, ,, , 1{;;

3.15 ESTRUCTURA. DE UNPROGRAMA EN BASIC """" " .. ,, Ah

PItP.YECTO:l ~EN:CEll!DmOY APAGADO DEUN LF.D" "."." .. """"".".: .. :.: .. : 11>

4. fUNCIONAM.II':MTO DE' HARDWARE E INSTRUCCIONES A:V~f\ILUlP.S D~

BASCOM AVR " , , , ,._ ', ' '._, ,., 19

,4.~ DI!iplilvsde 7segmentas , , :1"I

PROYECTO 2. "C(jNIAQOR 0;:''3 EN plSPLAY D.E 7 5EGMENTOS A.C ,." , 20

4.2 Toclado Matr~dilI4>=4 '.; ; , "''''"., ,,'''''',,. 21

PROYECTO 3 'TECLADOd'9 CON VISUALllACrON [:N DISPLAY DE. 7SEGMENTOS

A.C~ .....• ,. , ,.! •• ~.'.I~~'~ ••• j:t •• · •••••. ~ ••• ~ •••••• ' ••• , •••••• L •. ' •••• ,., .i '~" ••••••• 1 ••• ' •••• : 23

4,3 DisplillY' s M,ultipIJlxadO$., " .. , , ,,, .. ,, , , , ,.,,; .. , " .. .ji;

PROYECTO 4 "CONTADOB DECRECIENTE PROGRAMABLE MODULO 99" '"'""<00 " 27

4;4 Ma~riz de Lee]' $; 7 )( !:t: ,,,., .. , , , .. ,., .. , ,,'30

PROYECTO 5 "VISUAUZAOON DE LETRAS EN HATRIZ bE LEDS·' 31

4,5 'LC;:O;,{Dh;pl';yde Crista I ,-iq!lido) "" .. , " "" .. "., 34

::~:; ~~~:::~ ~dd~~::':::: ::~:: ::::.::::: .: :~::::: :::::: :::: ::::::.::::::: .: .: :::~ :::.:: :::: ::~~

4.5,3 Confl9 lcdbus ,' " .. _ """;, '3'1

4S;4·' l'Cd ~ "';" , , , , , ,.,.,' , -3-5

4:5.5 lotate·:!(,v , :., , , ", : :35'

4.5,6 Shifilcd .. "." " ,,, , i"" , , 35

, PROVEUO 6,"viSUAl:IZADOR DE m)m:RO~ 0-15 EN LCD" ".;, 37

. 4.6 C~mi.mlcac!611 ser,ia! con til PC , .. ', ; 38

4.6.1 cable Nul! - MOPEM " , 38

4.6.2. $baud ,,, , " " " " 39'

4.(i;:1 F~'r"l , , .".' .. , - .. ,' '..... " .. ,,' " ,_. ", .. '," " "'" '.' 39

$:V:4, :ri'put.~ ::_ '.'.- ,. ".: , ,,'.: ",." "', ,. '.'" ' ~ _ "_,_ _ "' '., ,-"..39

'l'.f;'.5 -intarrlfpdOI1 detP6rtimSeri")I , : ,.-, , .. " .. i • .. :\Q

4,6:6' Com l.mic<.Iticn-r:or h<1rdwi'I'l"ti .... "", .",. , , .. ,,' " .. ; " .. _ "" 48

PROVf;cn17"!.,;SODE"PR1NT EI~,PUT;' .. , .... "", .... ,~, ".; , .. ,,,.,, .. ,"',,.,,""', ..•. : ,, ,fi

PROYEqO & "TNTtiRFIJ perON r)'~L POR'ncO "iERlAV' , ' ,' ".~.\ .. " ,; ii., 1.;;,

4;7 S);!ii'::;ores Inf'rarrojO!;;.Opto - SWIWl ,·$~lisores_'de,)_iJ ,_ ....... ::. :.;". "'r~

PROvtCTO 9 "Cot{fI\:DG.R-[J[08J~TO-S ~~E:D1ANTt ~[t.'SOP.F.5 W~fi,k'(I<Q!()S ,

n;l~:~lJLOJ~~~~:~~~--p~·~~~·;·;~;:;~·M~i:~;:;;~·:::;:,::::::::::::::.\:::,:::::::::.::::::,::_:::::.:.::~~

·ti'l.t r·!-oforlJ_sa p;;;_sos ',.-", .. , -. -: ' .. "':","~ .. ' .• ",. ·.I •.• "".;.:.,,: ,' .. , 'i0'

PROYEcrO 10 "CON'i"ROL DEP'A~QL!EQ tON~lOrOR A rASOS".,"""., .... " ,'_, .. ,. 'J? '

4.8 .. _2 Servo Mo~ores ,,, .. , -o," ' ,., , , .. '.", .. ,.:' " ",', ",:,,, •••.•• :j.r

PR.Oy'ECTO 11 "P.ROBJ).DORCE~t:RVGr10TORFS Pic' _,"""""""""""'_""" ''''''~~'' ~C!

::~o ~(~~~[::~~~~:~~~)~.:;::: .. :::::'::.::::::: ::;::: :::::'::::::::::::: :::.: ':' ::.:::::,::::::: ~; ..

4.[0.1 Config .D.;ite =MdV ,separator ... .1 "" ...... :, ... ," . , .. : .... ~g

HH' r ~~~!~?":0:::.::':' ::::::::::::::::::.::::,::,:.":.,,,:::: ,;,;

,'1,10.,.5 Enable· tnoorrIJp£ ,., "",,. ""_' ,.,' ,. ','" ",. ",' ,':, .: __ .'J:;

PROYECTO 12 'RELOJ CONF'IGtJRM LE EN ~CD, ~.ox4", ", , .. ""' .... ";,, " ,. bO

4.11 Memorifl S~ria! I;:EPROM-,., , , ,,,', _ .' •. ., '''! , ""._"."" .:: r4

4'.11.1 E:.R;iiil , .- ,",' , ,; - .. ,. "";., ,, ,,,., ,., . .- , .. 0'1

"'.,1'_1.~ n.e.<laeepmm:" .. :.: __ -- - ,. ~ .. ,.: .. ," " , .• , "',,. ".".6.,

_4.>11.3 Wri-teeeprom ', ..... -------, ' _ ,,,., ,, ".-"., .-." ".,_ , _.: ". __ 1'\0::.

PROY~CTOi3 \'CONTADOR CON. P'TEMOIW\ EEPROM"" " , /" ':.'i' '''.' 11:;

4-.1·2,· B.lu¢,tO()t'h ,.", ,' ,"", , .. , - :;" :.":.,, '" , , , ",'_,'" .. __ "" fil

Ik12,l 'Seo (!i.incl'ona Ori~fl~~do "J>I ConexiOril., ".'''.'' , .. r , .. , __ , •• ,' 1';11

4.12.~ACL(Asin€;ono Sil1:cone)d.oil)~. ,,' ,,,, ..• , , ,.: r,tI

:1:g,;! . -~!~·~dh~iJ:!~~~~ .. ':~~~~~~~.::t::::::-::::: :::::::: ::~:::.: :;:::::::~,::::: :::::: ~l

PROYECTO, 14 "CO~1U.'III(ACION SERIAL.. E·n KC.2 MICROWN-rROVDOf\E$" ",,,.,71.,

4.1aRFJll (ldel1tifh:ad6n por R"dio Fte!tiJl!nda), --" ., : , .. _"., """,w', 71

'4.13.1 (lodigo WI!;GAND.,: ..... ", .. : ,c_c, ... :." __ .: " " •• 7'1

4.13.2 l.C:6mofl,mciana'.la RftO? :: " .. , _ ,' , " 71(,.

'k14 CQmu'njtacion 12(; ,.".,;: - _ , .. ,." .. , ",.-, ,_. __ :- .. __ ",,, .. _ .. 76.:

t~!i~~~11~~,~:::::::::: :::::::::::::::<:':::::: ::::_:::::: :::: ::::: ::::::'::::-:::': .: ::~::: :::.:.::: .: ;~'

PROYE.CT01~ "RTCn:iuAU;BlE~lE[jIANTE Ei..DSnOi .. r ,":",".".::""", ,. /i

4'r::rV5if:.,':';::;:::::'::::.:,:;::,::':~":::':;:::,':::::'::::'1:

PROYECTO,16 'CONTROL OF (;:AUp.~DpE AlflE,' " : , •• , " ,,", ,::1

PROY~CT_O;1.7· "COtHRbL DE -I E(tiPF:RATVRA CON a L!vp5!·~, ,_,." .. " ;IE

PR~~~~!~~~~~;~~~~:~':"L0~i:f:'~~::::,:~::::::::::~:,:.'::?' .• t! .

. 4.173 jJitw'ait , ..• ' _ " _, .. , ,_, " ' ; : _:",_ :.,., ,~;~

:P-RQY:Ecto 19 "1'1EDJ[)O,q DE DISlANCE\S· " ,',., " ~ __ " "., '" ''"

._, . . " ....

'},1.8: .'i;)TMF!,. , ,','" "".'. , ".' , ""!"", , ", .'. ", ,' ., ,.,.n.·" s, "'., .s DO

-41-18·~·i· Dtm.fc,ut'·;;,· 1,',.; ,', 1<. I ~I'~.'I:" I.J". "' OJ ,; ;,111.< "'II~H ,·J.it "'I'I,~"-j,~ ,./ i~ ,.;, ,., •• iIi "" .".""" ',', 9~)'

PR(tfecto2o ".M1i.RCADdRDETEL~FoN:O ~6N AVF\",;.,;." ...... , ; .. ·.:,,, ",' "" " ..... n.

4;·:~i:;ferr~:ti~~:~:r,~::~·:~::::::·:::::::·::::::::::':;:::::::;:::::::':':'~::::::::::::::::::::.::::::~~.

p£«)~~1i~.~ 41 ~~g:;+~'~~~D'<PU'LSbi;:": :::: ::::: .: ':::::::: :::':::. ::::: ::.:' ::':.:::: :::: ::::: ~~ ..

4.20 Merrsajeriii (l.e Texto (ModiJlo G'5M) .,,; " " ,,' ;" ... .: ,. ,;, Yb

4;20 .. 1 ComimdosAT ,." ;. "." .. " ;;'; " "" "" ; __ '1/'

4;20;2 comannos p:ara transmisi6n de SMS , " ':If

4.20:,;3. . C6niandos p'ara, recepcinn deSMS "" " .. ,.".', ,:. __ . . .. g1-t

PItOVl'CfO>::!2 '''CONTR01ADOi'i.: DE FOGO E.\E~ldTd" .. """ .. "." . __ .. 'N.

4:'21 fmuladon'Puelto USB·RS232· "·; " ,, "' T"'.' .. ',])JU

flROYEC10 FI NAL ':CERRADURA EL ECTRONI~A" ." ., ,., ", , ' . ".' .. '." .. ~ '.' .,. ,. , .. )Q'i'

,1)i_cicmbrc ?U'JO!

')"):J~

~~~;/('I:."~ )~t,'Y.~:-I" : )' ~:t.D~,~ j 'i:: U~{} .':1 r)!1 ·A Yi~C ,~:

D(jll~FuCij 125mlllt.ip'!es fi:imilij~ de l'nicrot'ontroL~'dr.rr.>~; Ic<; J)VR, ',~ sr.<1 los fil~'; ,j,:lili'i:,~~, retienh:s,¥ yerstti1e$ ~el rnercarlo.

PtE;~nlilll 1I1ll(I"]ZlS ventajas en relac~6n a lel, mk:r;x::CinlTor;;r!1~r[;:" rnhISci:I;I~ .;001110:1(:15 MCS51~~2i Microchip'.1J otm$, yacql_;e DOSf"f;'Cl llf'rri:lrnifUlli:l\'lr.tcoFlli1Y que ta,c~l.itan tanto elseftware ((im6el har'd.iJdrc, ..

Entr~; las herrarnlentas .qus possen estan: Ij· cCirriunlc.;\[IOn :0 l;naEejO -de il1terfau'c; SPI, 12Ci UART/ IJS'?rJW1R:E, 2\;VWE.Ademase:o;t~f) inb::lQr~do~ ron eonversores anAlogos digitalc5/ Rl'C (relo] interr.Q on tiempo real}., o~ril;:li1rir g,C (nli;!rhO,. mCme:rja novo!~~iJ EEPROM int~rn"r cntro otros. .

D_€nlro pc; c;:.ta pre5~ntJci911 se tr9;t<ll'a, pr!tlcipilmente los 'niicr6t:Dnt~61<1dNr:;~ fnNE:iJA4s; ATMECiA8 y ATMEGA15,JosGU<lics ce I,tti!izaranqep:endi~ndo:d41?: ~)icClci6n qCJ~ se pu~a reaHz(jr.

e-

1.1- ATMEGA48

D.::mtru .de las ca_l:<;Ict:erlsti.:;asdeb5, r:liq-ocontra~adore~ q'..lC 1.J:;,"rC:TIO~ies s;'"mpn:: priit,:,)'rdii:)1 qL;C. sepam0,;; por ~QlT;en0sll1 rj]j_trihnd6~ de Ri,!;:::~ Y les (cr,C-;l"cnC;:5 prlnd p,a ies para 5U C0rreCt0fU~G10n.,ni:ento.

(f'::1rff1.;1Ei~--rcG- '1 W~,INTri:'l~),:rlil,;'i[l~ , \R;:I ~;17 ti~ Di_POl 3, . .,.i_PcI'l"0~B,mrp) ~Ll2 _ ,4 iPC::1I WOC",I:WH 1},PD3_ .-5, (:!(_:I ~~?tiixCK't0 IlD4: ~ '\..-cc;t:!'z :t;')OLi3; :"CI_r-.tsixU,L1rCSCli I'M_ ;1

1C>C'r-, PIXT ,.!2ir(lsC2rp~i;l ri -:rc;m-2'10'':QP.lflj PD~ I' IF'CIW""OCOIVAiNCi) poi __ h 1P'::;INT2nI'\IN-lj I'lli' __ 1 ~ (1'CIf.'T<;Io'CLK0':Ci'ljPilJ>· 'H_

2 B .. ~:Ps..5-.~~~?~'~'~ ~€.tJP~ I ~F ;~~~I.: 27 pr.4 l~I1C~"snA.'P02ltJ;l!!)::;~ pi-;.~!~Tt["'I~dNrnJ . ::s(;.! I'~ f~' [) Ci!FC':NJ:W)

;~ ::~i~ ~~~~/:~~,k~i

?;'- .G.NJ, 21 .;;:flU .~ .Al,0;e;

. !'fl.'-Ci)(.ii{.fOINTSj PB4' ',~ rSoIl'C,I,\'r 4)

rsl'h. ;.!J()r;iioc::~ .. ,PCIf.'i-:3~

~~; ~~~~II~;~~;~T>:

1"1 ATI1ECiM3 _P':i;;(j.:_prdClil;:amE!J1t~ ~p',JErtos (,3: 'C':, LJ) qIJE'.PUdCli <.('rw"d:'ls lmlE'[lp.:'1i:L~i~tem~r,t~ -Lolno:cntrac'il's 6 f,;llida5 de d.,;_'::j';. '

r::J puerto B PD:S<'t J)Ji,ncipal tnefiH I:)s' pints 5(1(, ~,1TSO Y rl!QsJ: q:;Jt:'~jI:ve· 1 !J0r'(l q'?ljl_:;om;;r e', micfO(:ontrwld(lor.

lUO::I~

.X~W 8o"r~'m-il"r- Progrmnticion A VR '8

EI puerto C posee 6 entradaspara converso res An~logos Digitates de 10 bits.

Y en el puerto D se encuentra principalrnente los pines de RX y TX par;:! 13 ;::omuh.ica~i6n serial UART.

Sudisposiciones parecida a la del ATMEGA8, 10 unico en 10 que se difererlCian 851<1 cantidad de memoria de prcqrama que poseeh, ya que eiATMEGA4Btiene 4Kbytes y el ATMEGA8 posee BKbytes.

A continuacion se muestra las caracterlsticas masimportante5 del microcontrolador ATMEGA48.

32 registros de proposito general

- 4KBytes de Memoria de Programa

256 svtesen memoria no ¥olatil EEPROM 512 Bytes en memoria ihterna SRAM

6 Canales PWM

6 Canales ADC de in bits - Comunicacion USART

Oscilador lnterno .RC de 128K[-Iz y 8MHz RTCinterno con cristal de 32768 Hz

- Voltaje de operaci6n de 2,7V a 5,5V

1.2 ATMEGA8

EI ATMEGAB es similar a1 ATMEGA4B, princ:ipalmente en su distribue;iQh de .pines, y se diJerencian en las caractersncas internasde los mlsmos.

GNQ

f

(RESET) peG (RXO)POO (TXO) POI (\ (lNTO)pD2 4 (iNT I) PD3· S

(XC·K/tO)P04 6 vee

I'CS1ADC5ISCL) !'C4 (AOe4lSDAI PC3 (ADm)

PGZ (AD.GZ)

PCl (ADCI) PCO(ADCil) AC,ND

AR~F

Avec

PBS (SCK) P!'I4(MISO)

!'B:! (ldOSI1OC2) PB2 (SS/OCiB) PBi (Oe1A)

IXTAurrOScll PBS· 9 (X")' AL2rWSC2) pst

jTll PDS (AINQI.PO!i (All'll) P07 .(IOP) PSi)

Figura.2, Diagrama de pines de·1 ATMEGA8

.A continliation 53 puede apreclarjas taracteristi;::as del mjcrocontrclador AJMEGAB

Rrlmiro Valencia.B.

. '/'i .~

,. ..•

nas

:~n:8~-::~Or(rA"T ProgrcuJlaci6i~.A 'VR,'s

32 registrosde proposlto general 8KBytes de Memorra dePrograma

512 Bytes en memoria ncr vole'ltil EEPROf>j lK8ytes en memoria lnterna SRAM

6 Canales PWM

6 CanalEsADC de 10 qits

" Cornunlcacion USART

Osctladortnterno RCde lMHz,2MHzi 4~1Hz y 8:MHz. RTC interno con cristal de 32768 Hz

Voltaje deoperaclon de 2,lV a 5,5V

1.3 ATMEGA16

EI mtcrocontrolador ATMEGA16,se puede decir quees 81 inicio dg un mkrocontrolador complete, ya que posee mas puertos de entrada y salida da datos; !o que propordorta mas funcionalidades pera la eleboraclcn de cualquier proyecto.

(XCKfTO) Poo [fl) PB1 (iNT2iAII"oI~) Paz (OCOIAIN1) P83

(SS) PB4 (MOSI) PBS (MISO) POO (S9K) P'i:l7

RESET vee .GNO XTI\I.2 XTfi.L1 (RXO) PDO

(TXo) POl ONTO) P02: (INT1) pm

(OC13) PoA (OC1A) POS (ICP) POS

PM. (II DCO) PA, (I'cDCij Pf\Z [AD(2) PA3(AOC3) PMc (AO,C4.) PA5 (AOC-5) PA8(ADC6) . P,\] (ADC7) ARt'.r: .

GND

Avec

Pel [fOS(2) pCu (T05C1) PCS (fOl) PC4(TDQ) PC3 (TMS) pez (TCKJ PC1 (SDA) pea (SCl) PD7(OC2)

/

Figuril 3. Diagrama de pines del ATMEGAlp;X

EI ATMEGA16 posee 4 puertos (A, B, .C, D) que pueden ser usados independientemente como cntradas 0 salldas,

EI puerto Aposee los canales de conversion Analoga a Digital.

El puerto B tiene como pines rstevantes, a los de proorarnaclon del microcontrolador, como: 50</ MISD Y 1'1051.

Ramiro JiuJelltia Ii:.

3

En el puerto C presenta cararterfstkas primordiales para cornunlcadon IZC, con los pines SDA, SCL

Y en el puerto D se encuentran pines de Transmision y Rec~pci6n de datos serrates .

. A connnuacion se rnuestra las caracteristicas mas importentes del rnkrocontrolador ATMEGA16;

'. - 32 reqistros de propositoqeneral

- 16KByte5 de Memoria de Programa

- 512 Byt;:s en memoria no volatil EEPROM

1KBytes en memoria lnterna SRAM - 4 Canales PWM

- 8 Canales ADC de 10 bits

- Cornunlcaclon USART

- Oscilador interno RC de IMHz, 2MHz, 4MHz y 8MHz

,. RTC lnterno con cristal de 32768 Hz - VO.ltaje de operation. de 2,7V a 5,5V

Dentro del "rnercado de '.' micrccontroladores, el ATEMGA16 esta stendo reernplazado por el ATMEGA164P, pero las diferencias son rmnmas e lnternas, debldo a la presencla de registros de control mucho mas avanzados,

A pesar de que el lenguaje exacto y native de los mlcrccontroledores es lenguajeensamblador, este curse trata de dar una vision mas simple de proqrarnadon de microcontroladores mediante proqrarneclon estructurade de alto nivel como 6<;15it, mediante la herrarniente BASCOM AVR.

Ramiro Valencia 13.

4

nus.

J.~;ll~ fl~:::.r.·.l\ .. ,. Programacion A VR '05'

2. BASCOM AVR

La herramienta BASCOM AVR desarrollada par la empress MCS Electronics, sirve para realizar programas en alto nivel para microconrroladores AVR, el cual posee un compllador y un ensamblador que traduce las instruccionas estructuradas en leguiJje de rnaquin3.

Figura 4. Diagrama de bloques de programacionestructurada

Luego de instalar el paquete computacional, el cual 5e puede conseguir como .DEMO en la pagina principal de MCS Electronics, podemos apreciar 13 siguiente pantalla inicia!.

\

Area de trabajo

Figura 5. Ambiente del BASCOM AVR

Dentro de ella podemos ver clararnente una barra de. herrarnlentas, un menu.v el area de trabajo. A contmuaclon se expllcara los iconos 0 atajos mas importantes para manejar la herramienta BASCOM AVR.

==," •••• == .. ===========

r .... a.~.)

~*R Bd5':\Ii11'AW" ProyramacionAt/l; 's

2.1 INXCIO

Presionando NEW, nosotros podernos abrir un archivo en blanco para empezar a trabajar en nuestro provecto.

2.2 COMPILADOR

Presionando el ieono de la barra de herramientas 0 F7, nosotros podemos cornpllar nuestro proyecto y obtener un archive ,HEX, el cuel va a ser grabado en el microcbntrolador.

Una vez que se ha compilado el proyecto puede eparecer el siguiente cuedro de confirmacl6n.

Figura 6. Cuadro de Cornpilackm de un programa en BASCOM AVR

En el cual se puede comprobar el porcentaja de memoria utilizada en el rnicrocontrolador.

2,3 SIMULADOR

Unavez que se compile un proyecto, se puede simutar con ayuda de BASCOM SIM, 10 cual serealiza presionando el iconoce slrnulaoon de la barra de herramientas 0 F2.

Una vel que se presiona el simulador, aparece una pantalla donde se puede apreciar el proqrarna principal, espaclos de memoria, emuladores de cornurucaclon serial, emuladores de LCD, etc,

Ramiro Valencia B. 6

Cl'<i_~

Jg,j!~ 5.'i~·:C:::;-M'.-'r j_1rogtam_Gcidn AVR"s

Es preferible al momenta de usar este simulador, que S8 vaya rsallzandoel proceso paso a paso mediante FB, con locual observaremos una flecha azul en la parte lzquierda del programa,que nos lndlcara elavance de la simulacioni

2,4 EMULAD10R SERIAL

[;ijJ COl: esteicono s: puede tracer usa de.un ernulanor de COlTlufli.(aCiOn . . .. serial, entre ellTllcrocontrolador y un PC en el cual podremos observar la srguiente figura, que emula un Terminal no inteligente, el cual recibe 0 transmite caracteres.

2.5 CONEXIONES PRINCIPALE§

Dentrodelasconexiones prindpales de un mkrocontroiedor estan: 81 .prograrnador, el osctlador, la alimentac:i6n y el reset. Para 10 eual se recornlende tomar en cuenta los slquientes aspectos 31 momenta de armar un circuito.

lice = 'iv

U1 GNO

C1

t

506

FIgura 9. Conexiones princijJales del inicrocontrolador AVR

Ramiro Ya/c;nciap.

7

t~,'],~;.'

:If;W"''''''M' Programacion AVR 's

2.6 GRABANDO At MICROCONTROLADOR

Una vez queobtenernos nuestro archivo hexadecimal ".HEX", procadamos a grabar en el microcontrolador, para 10 cual necesitamos un circuito que active Is. proqrarnaclon del microcontrolador y pase todas las instrucciones hacia la memoria de programa del mismo.

En el mercado encontramos una dlversldad de circuitos grabadoresde AVR, los cuales nos muestran principalmente los Fusibles y el arctnvo a cargar en el microcontrolador.

Por ejemplo dentro de la ayuda de BASCOM, se ericuentra un ctrculto grabddorl Hamado STK 200-300 (ISP Programmer), el cual utlliza el puerto par;:Jlelo (DB2S) para grabar aJ microcontrolador.

Use Jl ~.nd JZ for 51K300 Use Jl fpr STK200

Jl J2:

CONNE:CTOR D.B2S MALE

Figura 10. Circuito de grabacion en paralelo (STK200-300) para er mkrocontrolador AVR

Adernas se puede interactuar con el mlsrno BASCOM para escribir el programa, compiler y qrabarel microcontrolador, ya que si presionarnos F4 6 el leone de la berra de herramientas, nos puede dar fa opdon de utilizer elprogramador rnostrado anteriormente.

Y podremos visualizar un software propio de BASCOM, Que nos permite grabar e! microeontrolador, el eual se observe a continuacion,

Raniiro Valencia B.

8

Q';!~i

),:::N~"i3<J~H;Il1.A\ir Programacum A VR.·~s

Para elefecto de esta presentarlon, verernos como ejernplo. otro grabador muy usado en el rnercado que es eJ "progisp167" con comumcadon USB, el cual puede conectarse directamente a los pines da proqramacon .del mrcrocontroiaoor, sin nlnquna clrcuiteria adicional.

Dicho gra~ador tiene los siquientes pines, que 5e pueden observer en lafigura;

~ ~ '" .

/

LfOPF\OGRAM ,0 LEDPROG 0

PROGISP

USB - ATMEl :~~ ,;; g .~ .. ~ 8 g.~ :f ~ >

00000

lEOVC"",SB 00000

o

!il. 000 txr

ON, 000 OFF

--_. r-r-r- ---,---,

figura 12. Proqremador USB para el mlcrocontrolador fMZ

Adernas posee un software rnuv' amigable, que nos perrnite 9rabar los "fuse bits" if el archivo .HEX.

Ramiro Vulencin JJ:

')

Es de surna importancia saber 'grabar los Fuse Bits, para 10 cuat explicaremos a continua cion, fo,s princlpales elementos para los mkrocontroladores que usamos enesta presemaclon.

ATMEGA48 ~

Deshabllitar Divide clock by 8 intemally Escogerei vatorlnterno para el oscilador

ATMEGA8 ~ Escogerel valor interno para el oscnacor Deshabilitar WatchDog

!~=:==::===I==== /

ATMEGA16 ~

Escoger el Valor lnterno para el oscilador Deshabilitar JTAG para 11abilitar el Puerto:

Luego de habilitar !'os fuse bits, se Iospuede qrabar conel batOn WRITE, del

espacip "lock value".' '" '

Ramiro Valencia B.

nus

:X~:W e?';~'~;"J""·f~·ii Programacion A J/R·s·

IJna ve: grabado correttarnente lac; Fuse Bits, saldra un ITI.Ensaje de "Lock Bits Written SUl:esfully"

Luego para poder carcar el archlvo .HEX al rnkrocontrolador, S8 presiona LOAD FLASH Y se buses la direccion del. archivo a serqrabildo.

Una vez que seha cargado elarchivo, se presiona AUTO y se espera quese

termlne el proceso de qrabacien, .

Es recamendable, que cuando tenemos un AVR nuevo,se grabe en niVidl L)dJO "LOWII, definido por el movimiento de un "jummper" dentro OG!' grabador

progisp167. . .

Adernas es importante tener en cuenta el error mas usual qus; se gu~le daren el proceso de grCibacion, ya que si conectamos algCm pin de diferi,)lifemariera0 IlO alimentamos bien .el circuito, saldra un mensaje deC1IIP E~IAB.LE ERROR, d cual rIDS indica que no sedetecta ningLln rnkroceotrclador 6 el microcontrolador esta dafiado.

·U·~0·

wn:""COm"Avr Programacion AYR 's

==========--"'=='==;:;==;="""'"" .,========'====

3. INST~UCCIONES SA.SICAS DE BASCOM AVR

.Para iniciar a descubrir cada una de las lnstrucciones Que posee este herramienta, empezaremos reallzando [a respectiva expucaclon y un proyecto deejemplo con su slmulaclon,

Mas adelante explicaremos opctones masavenzadas y el funcionamlento .de hardware espectnco cornotcd' s, sensores, motores, etc.

3.1 $regfile

Esta instrucd6n va siempre al inicio decualquler proyecto que realkemos, ya que es la encar.gada de direccionarel respective rnlcrocontrolador que vernos ·21·

user.

Por elernplosi vamos a usar:

ATMEGA 48 -') $regfile = "m48def:dat" ATMEGA 8 -7 $regfile = "m8def.dat" ATMEGA 16 ~ $regfile = "m16def.dat"

3.2$crystal

Esta mstrucdon va aespecifiear la freeuencia de oscuanon con [a Que va a funeionar el microeontrolador.

Por ejernplo:

$crystai = 1000000 para lMHz

$crystal =:: 8000000 para 8MHz

$crystal = 11059200 para 11.0592MHz

3.3 Config

Esta mstruccion ' especifica la confiquracion de un pin, I.Jn puerto 0 un dlsposltlvo, ya que pueden ser confiqurados como entrada 6 salida de datos.

Por ejemplo:

Config portb = output Canfig. plna.O = input Config ked = Hi '" Z

Puerto B eomo salida Pin A.O como entrada

LCD de 16 caracteres y 2 lineas

Ramiro ValenciaB.

,/

12

Programucion ~1.VR '.'1'

3.4 Wait, Waitms, Waittis

Esta lnstrucclon slrve para crear un retardo, ya sea en segundos, miliseeundos y microsegundos respectlvamente.

Par ejernplo:

Wiiit3 Waitms 700 Waitus 500

Espera 3 segundos

Espera 700 milisegundos Espera 500 microsequndos

3.5 Dq -loop

Esta mstruccion es unlaw cerrsdo, .en el cual se ejecute un ccniunto de instrucciones de forma indefinida.

3.6 Do - loop until

Es un laze definido poria condici6n de una variable que est'] oontrorrsuazo, 13 cual define cuando termina deejecutarse el conjunto deinstrucciones.

ror ejernplo:

Do A"'c+l

loop until a=10

'rerrruna el lezo Cuandoa-lO

3.7 Toggle

Este cornando sirve para complementar el sstado anterior de afguna variable 0

pin deaigun puerto. .

Par ejemplo:

Toggle Portb.O

Complernenta el portb.O

3.8 Dim

Dim sirve paradimensionar el tipo de variable que se va \l utilizar,entre los tlpos de variables estan 'los siguientes,

Ramiro Vaicncia !3.

13

:O~;fS'

i,f/r~ FO>CQ,·Ayc Programacion AVR's

Word o a 65535
Long -2147483648 a 2147483647
Integer -32768 a 32767
Single 1.5 x 10-45 a: :3.4 x 1038
Strinq Cadena de caracteres maximo 254
Arr~ Matriz 65535
Double 5.0 x 10324 a 1.7 x 10306 Tabla 1. Variables presentes en iengu<t)e Basic

3.9 Alias

Slrve para da un nombre general dentro de un proyecto, ya sea a un puertoo pin de un puerto.

Por ejemplo:

Foco Alias Portb.O

EI portb.O ahora se llama foco

3.10 DDRx, PORTx, PINx

DOR, PORT Y PIN son registros que nos permiten utilizar el puerto como entrada 6 salida de datos.

DDR: Configura at pin como entrada 6 salida de datos. PORT: Es el reglstro de salida de datos.

PIN: Es el reglstro de entrada de datos.

Las siguientes comblnactones, hacen que los pines runctonen en conflquracion especial, como se explica a conttnuarion.

Ddrb.xe O Entrada alta impedancia Portb.x=O

f

Ddrb.x=O Entrada pull up Portb.x= 1

Odrb.x=l Salida a cera (OL) 20 mA Portb.x=O

Odrb.x=1 Sa/ida a uno (1L) 20mA

Portb.x= 1·· .

Es lmportante recalcar que cuando se configura un puerto como. salida, se debe ocupar la palabra PORT y si se loconfigura como entrada se usa la palabra PIN.

Ramiro Valencia B.

14

.ous

.:;&):{"B.:is(cm .. ~\< Programacion A.·VR;s

3,11 IF - HIEN; E.LSE

Sonsentencias condrooneles, las cuales responden a un.estado de voltaje (OL, lL), de contenido (Caracteres), etc.

Figura 14. Condici6n 16g1ca IF-ELSE

3.12 FOR - NEXT

Son mstruccones de repetictcn, y.a que ejecutan unconjuntoce im:trucciones, dependiendo de una variable lncremental que S8 sncusntrs dentro del lazo.

Figura 15. Condicion de repeti<;ionFdR-NE)(r

3.13 SElECT - CASE

Sonsentencias que se ,puedenejecutar, dependiendo del estado de UI;ZI variable de seleccton.

Dentro de este esquema S8 puede tenet un conjunto de casos que pueden ser ejecutados, dependiendo de la variable en juego.

Figuri116. Condicion de selecoon SELEcT-CASr:

Ramiro Va!clJel"a 13_

15

110_:;

;z,I'(B",,,mAI< Programacion A vu»

========~===-=================~. ============

3,14 SIMBOLOS OPERADORES

Oentro de los operadores, pueden utilizarse 105 matematiccs, de relacion y 169ic05, Ademas se debe tomaren cuenta que bascom nos perrnite realizar operaciones unicarnente con dos variables ala vez ..

A continuaci6n podremos observer los operadores mas comunes.

Operadores rnaternaticos

Suma: a=b+c

Resta: a=b-c Multiplicacion: a=b*t Division: X = a \ b Residuo = a MOD b

Operadores de relaclon

igual X = y

<> no es igua! X <> y

< menor Que X < y

> mayor que X > Y

<= menor igual X <= y

>= mayor igual X >= y

Operadores logicos

NOT' Complemento (Negation) AND Conjuncion (Y)

OR Dlsvuncion (0)

XOR Or exclusiva

Representacion de logica digital

/

Para la representacion de un nurnaro blnario 0 hexadecimal, dentro de BACOM AVR, es necesarto anteponer e! simbalo "&". En el casode de nurnero dectrnales, no es necesario anteponer nlnqun simbolo.

Ejemplo:

PQrta=&HF9 Portb=&blOOOll00 Porta= 129

Numero hexadecimal Numero binarlo Numero decimal

3.15 ESTRUCTURA DE UN PROGRAMA EN BASIC

Este tema es importante tocar, ya que i:uando se estructura un programa en alto nivel, es necesarto lIevar un orden y vinculaci6n de las instrucciones que se realizan.

======================~==================~

Ramiro Valencia B_

Hi

Programacion A VI( 's

Es primordial que se tenqan estructuradas 4 partes centre oeun p;ograma en lenguaJe de alto nivel.

Confiquradones y Dlmenslonarnientu devartables y subrutmas, Prcigra·ma Principal

SuiJrutina.5.

Tablas de datos.

EI sigLiiente es un ejernplode como se puede estructurar un proqrarna en alto nlvel, con tlpos de lnstruccones que se pueden reauzar en su rsspsctlvo ordon.

C oufigurac 160' Y Dil'ICri~i.()n~l1l ienlos

$r'gfU~ "m8der:dar· Serf,t.lC' 8QOOOQO

Conflg Portb=Dutput DecIare.Stib Esperit(}

Do.
Prcgrama lnst[Uc.;:;::iQnC5
Principe]. l'rlntipalcs en
ciclo rq;ictit,iv,o
Loon
ESP.('[l1;
Subrutinas Instrucciones ./
de subrutiua
Return {

Tobia!·

Pal" &][CO. :&HF9

T;lbi:1Sdc Datos

Ramtro ValenciaB.

17

f:g·H{i;. 8a~mm'Avr . ' - '- _. •

:;'~'I\ " Programacion AVR s

i"ROYECTO 1 "E;NCENDIDO Y APAGADO DE UN LED"

EI siguiente proyecto trata de-uttllzar las funclones basicas para poder encender y apagar un led con una trecuencia de 1Hz.

$rcgfile ~ "msdef.dat" $crYstal = 8,0000,00 Config Portb.O " Output

, MICRO A USAR ESATMEGA13

, CRISTALJNTERNO DE QSCl[ACION , Pin B.O COMO SALIDA

Foeo AUi:!s Portb.O Foco '=0

Do

Toggle Fo~o Wait 1 loop

, COMPLEMEN10 A FOCO 'ESPERA 1 5EG

End

f

~ EJERCICIOS;PROPUE5TOS

1. Realiz<lr el carnbio alternado d~ encendido y apagado de 2 leds, conectados <II Pb.O yPb.l

2. Ri;!alizar un proqrarna para unsemafore que contrele 2 vias 'simples, dondc In duration de! verde sea 10 seq, la duracion del rojo sea Sseg,

y la del amarillo sea 3'seg.' ,

L

Ranviro Valencia H

18

,lJ;1S.

~~~11:;·easc;:;ln.~·,., Programacion A JlR 's

4. fUNCIONAM!ENl'O DE liARDWAf<:E E INSTRUCCIONES AVANZJ\DAS DE BASCOM AVR

4.1 msplays de 7 seqmentos

EI dJsplay de 7 seqrnentos es un conjunto de led's unldos ya seapor su anode (Ae) 6 catodo eCC). Ademas posee un etiquetado para cada secrnento

desde la letra "a" hasta la "h", .

Generalmente son usados con de[Qdificadore~ dg BCD a 7 senmentos como las cornpusrtas 74LS47 6 74LS48; pero cuanda se tranaja con un rnicrocontrolador, ta decodificaci6n 0 .IJ informdci6n que va hacia el display, sa 1::1 puade hacgr internamente.

Cuando se va a utilizar el microcontrolador como generador de nurnerecicn decimal en un display de 7 seqmentos, prirnerose debe generar una tabla de codificacion para cada numero 0 caracter, dependiendo del fundonarnlento del display, ya sea como anode 0 catodo cornun,

La tabla 2 muestra la cocmcacon respectiva para un display de anode cornun, ya que su encendido es can ceros 16gic05 (0' s) ..

Px.7· Px.6 Px .. 5 Px.4 px.3 Px.2 Px.1 "x.o ~;nform~d6n
H g f e d c b a Num~ro C6diiio·
1 1 0 0 0 0 0 0 0 COH
L, .. 1 .. ,.:,;. ;V'·· .r 1':' ··ll:::.::T·' I·O>~ 0 .... 1 • .: '1'. F9H:
1 0 1 0 0 1 0 0 .2 MI-I.
1 '. 0 ,1 '.; 1 0 0 0 0 ., ··,P;.~ . BOlt
1 0 0 1 1 0 0 1 4 ·9911-
1 0·; 0 1 0 ... , ',0 1 0 5. 921-1
1 0 0 0 0 0 1 0 6 82H
1 i ·r ,.' 1 . ,1 .: 1 0 , 0 '. 0 7 F8H
.
1 0 . 0 0 0 0 0 0 8 SOH
1 0 0 ;'" '1 0 0 0 ··0······,··, ·9 90H
1 0 ~;; .: :i.: : -. 0 o . ~:. o. 0 0, A B8H
..
L_. 0 0 0 0 '0"'· 1 1 B 83M
1 1' .. 0 0 0 1 1 0 C C6H
--- At!!.
1 0 1 0 0 0 0 1 D
0 Q - ro---c-" o . 1 0 E ~6tL
1 1
.1- 0 0 0 1 1 1 0 F 8EH, Tabla 2. l~aneJo de dJsplay mediante CDdtgos

Ramiro Valencia B.

19

L

-oas-

r)lfi~ Bmm·Mr Programacion AVR 's

PROVECTO 2 "CONTADOR 0-9 EN DISPLAY DE 7 SEGMENTOS A.C'

EI presente provecto inida un contador del 0 al 9 con un display de 7 seqrnentosde Anodo Cornun.

$regfile ~ "mSdef.dat" $OY5tal = 8000000 Config Portb = Output DisplaY Alia,s Portb Display" tli.HFF

Do

Display = &811000000 Wait 1

Display = &B11111001 Wait 1

Display = &810100100 Wait 1

Display = &BlOilOOOO Wait 1

Display = &B10011001

Wait I' '

Display = &810010010 Wait 1

Display = &B10000010 Wait 1

Display = &811111000 Wait ,1

Display =&B100000,OO Wait 1

, Disp1<lY = &81OD10000 Wait 1

Loop

End

'MICRO A USAR ES ATt--1EGA48 'CRISTALINTERNO DEOSCll.AClON 'PUERTO B COMO SALIDA

'PUERTO B COM,O ALIAS DISPLAV 'TODOS LOS SEGMENTOS APAGADOS

'CODIGO No. 0

'CODIGO No.1

'CODIGO No. Z

'CODIGO No.3

'CODIGO No.4

'CODIGO NO.5

(

'CODIGO No.6

'CODIGO NO.7'

'COOlGO No. (5

'CODIGO N.o, 9

~ EJERCICIQS PROPUESTOS

1. Realizar contador apara un display de 7 seqrnentos, perovcon un decodificador 74LS47, de manera que ladecodlficacicn no sea hecha por el microcontrolador,

Ramiro Valencia B.

20

Programacion .AV.R, ~s

4.2 Teclado r~atiid<'ll 4x4

Internamente unteclado es un conjunto de pulsantes, los cuelesestan umdos en cornun par mas vcolumnas,

El proceso de detecci6,n de tecle se to ouede realizar por medii) de un barrido d<:; fila::> 0 colurnnas, elcual cdnsiste~n poner 16 0 (POf software) ydetectarlo en la fllao columna seietCionada.

En la flgurase rnuestra la disposicion intern a de uri teclsdo, en eI cual se puede apreciarel barrido por flips.

() 1

1 0 fl.

1 0 I 1 f3

I F4

f

G

Figura 17 .• Estructura interne por pulsantes del reclauo hexadecimal,

La tabla 3 rnuestsa fa ccdttlcaclon respect iva para un teclado rnatricial 0 hexadecimal, par media de barridp par filas y detecdon en colurnnas ..

=.:'__, .• .:....-,-===---=-~

Ramiro VaJeIJ.UaB.

21

~OlfS"- .

J.~'MmCl'AVr Programacion AV2\ 's

~~m~L;1

"""""' .... ._,.; , .•• ,. ,;~'i,":~:

Tabla 3. Manejo de teclado mediante c6dig05

,/

Ramiro Valencia B.

22

.~. ,

i

l

~' .

:Di1~'·.

'~7i1."""m.A" Programacion A VR ',I'

PROYECTO 3 "TECLADO 0-9 tON VISLl.AUZACION EN DISPLAY OE 7 SEGt-1ENTOS A,C"

EI proyecto 3 muestrr en un dlsplav de 7 seorncntosde Anodo Corrun; la tecla QU1'> ba sido presionadaen el teclacio matric.i~1.

$regfile '" "mSclef,dat" $,crysta 1 = SOOOOOO

'MICRO A USAF. ES ATMEGA8 'CRSITP,L INTERNO DE. OSClLAC]ON

Conti s Porto ~ Output Ddrb ~ &800001111 Portb ~ S<Iill111111 Display Alias Portd

'PUERTO ,[) CO 1'1 0 l::f~T?~DA PULL UP

'D~FJNO AClAS AI.. PU'O!RTO B ~ARA EL TECLADO

xi Alias Portb.O X2 Alias Portb.I X3 Alias Portb,2 X4 Alias PCirtb.3 Yl Alias PinbA Y2 Alias pinb.5 Y3 Alias Pinb,6 Yel Alias Pinb,7

Dim Tecla As Byte Display ~ e.HFf

'TODOS LOS SEGM,ENl;OSfI,PAGr\DOS

Do

Tecla", 16 Xl ~ 0

If Yl ~ 0 Then Tecla T 7 If Y2 ~. 0 Then Tecla ~ S If Y3 ~ 0 Then Tecla ~ 9 If Y4 = 0 Then Teciu ~ 10 ·X.l ~ 1

'CERa EN LA FILA 2 YDETECCIDN ENCQLUMNA,

X2", 0

lfYl '" G Then Tecla = 4 If Y2 '" 0 Then Tecla = 5, If Y3 = 0 Then .Tecla > 6 If Y4 = 0 Then Tecla = 11 X2" 1

X3 = 0

If Y1 '" 0 Then Tecla ~ 1 If Y2 =;·0 ThenTecia = 2 If 1'3 '" 0 Then Tecla = 3 IfY4 = o rnen.reca= 12 X3 = 1

X.4 = 0

If y 1 = 0 Then Tecla =; .13 rrrz = 0 Then Tecla = 0 If 13 '" 0 Then Tecla = 14 If Y4 = 0 ThenTeda = 15 Xl! = 1

If Tecla < 16 Then Waitms 500

Else

End If

If Tecla .= 0 Then Displai =&811000000 End.~f

If Tecla =1 Then Di~play =&811111001 End If

If Tecla", 2 Then Display = &610100100 End I!'

If Tecla = 3 Then Display = &810110000 EQd If'

If Tecla .= 4 Then Display = &6100n001 End if

If Tec'a'" 5 Then Display = &B10010010 End If

'CERO EN LA FILA 3 Y DETi::CCION EN COLUMNA

'CERO EN LA FILA 4 Y DETECCION EN COLUMNA

'RETARDO sr NO HAY TECLA PRESIONADA

'CODIGO No; O.

'CODIGO No.1

/

'(OOIGO No.2

'CODIGO No.3

'.(DDICb No.4

'CODIGONo. 5

Rhmiro 'Valencia B.

_______ .... ~ .• ._c ••• ,.~'_'_ __ ~ _

24

L

H Tecla ~' 6 Then Display = &Bt0000010 End If

'CODIGO No.5

If Tecla ~ 7 Then Djsplay =&B11111000 EmlIf

'COD1GO NO.7

If Tecla,," 8 Then Display = &B10000000 End If

'CODIGO No. B

If Tecla =9 Then DisPlay =&810010060 End If

loop

End

'CODIGO No, 9

JljOTA: Es importante recelcer que cuando .se va a tratar un Puerto como entrada, es necesario llarnarlo como PIN y 'si va a ser tratadocomo salida se debe Ilamario como PORT.

-. EJER.C~CIOS.PR,QPUESTOS

L Realizer contador IIp-Down de 0 a 9 par medio de 2 pulsantes que' funcioncn como rnandos para un display de.]'segmentos:

25

Ol;lli

J~W ~woc'A,'r Programacion A VI? 's

4.3 Display's Multiplexados

Un display rnultlptexado es un conjunto de 2 0 mas displays simples, que lnternarnente tienen unidos sus segmentos cornunes y su habilitaclon es separada, para cada uno de los displays.

EI pnnopio de funconarruento de un display rnultiplexedo, se .bese en un tlernpcde vlsualizacion muy pequefio. deb ida el tiempo minlrno queel ojo humane puede detectar lasirnaqenes en rnovlrrnento.

EI barrido de displays es simllaral barrido de tedado, ya que se trete de h,abilitar par software el display elegido y enviar el data que Ie correspande. Si bien es cierto, todos los displays reciben los datos desde el microcontrolador, pero solo uno los va amostrar, debido a que el mismo rrucrccontrolador elige a cual display habilitar.

Dicha habilitacion se realiza por media de Vee (en displays AC) y Gnd (en displaysCC), can la ayuda de un transistor en corte y saturaclon,

HABILITACIOH AL MIC8.0 R1

/

DATOS DESDE El.MICRO

Figura lB. Conexion de displays de 7 segmentos para mu'tiplexacion porhabilitacion.

Ramiro Valencia E,

.... -~ .. - .. _--- --,-.,---,.

--_-._--- .. _----

26

-r

i

Programacion AVR r~ ..

PROYECrO 4 "CONTADOR DECRECIENTE PROGfW-1ABLE MODULO 99"

Conel presente provecto, se puede setear 11.n numero de 0-99y pM rncdio del pulsontede inicio, sa arrenca un contador decrecente hasta i!egar a' O.

$regfilc= "rrISdef.dat" 'NICRO A US.tIK [3 ATi\1EGA8

$crystaf", 8000.000

Dim Unidad As Jnteger Dim Decena As Integer Dim I As Irrteqer

Dim J As Integer

Dim Num(lO) AS.Byte /

COrlfig Portd '" Output

Confiq Portb '" Output

Ddrc.u = 0 : P.ortc.O '" 1 'ENTRADAS A PULL UP

Ddre.l = 0 : Pcrtc.L '" 1

Ddrc.2 = 0 : Portc.2 = 1

Declare Sub Cuentaf) 'DECLARAR SUBRUT!NAS

Declare Sub Visi,laliza()

Declare, Sub EsperaO

For I" 0 To 9'

Num(i + 1) ~ Lonkup(! , Nurneros) 'GUARDAR LOS NUI~EROS DE LA TABU,

Nex~

Rumiro Valencia. D·.

27

PBj:l"

;W.rW·I3,j5·Ll!m-A~·r Programacicn A·VR ~~

1l1icio; Unidad ~ 1 Decena·=l

Do

1G6$ub Visuatlza

IiPinc.O = 0 Then

U Unidad '" 10 Then Urlidad =0.

End If

Iller Unidad Gosub Espera

IEndff

If Pinel = 0 Then

If Decena ee, 10 Then Decenq "" 0

End If

tncr Decena Gosub Espera

Elldlf

If Pinc.2 cz 0 Then

COiibr:

If Decena = 1 And urudad ~. 1 Then Goto Inlclo

End If

Gosub C;uenta Gosub Tiempo Gota Contar Endlf

lQop

Esper;l:

If PineO", 0 Or Pine.I. = Othen Gosul!> Visualiza

cceo Espera

End !f

Return

Cuenta: [Jeer Unidad

If Uhidad= Ii Then Deer Decena Unidad '" 10 Gosul:! Visualiza

If Decena = 0 ltien Decena « 1 Unidad .,= 1 ·Gio"mo Vi.sualiza

End If End If Re~'Jm

'PULSANTf DE UNlDADES

'PULSANTE DE DECEi'0AS

'PULSANTE DE INrGO DE CONTEO

.'SUBRUTiNA ESPERA

I

'SUBRUTINA CONTAR LOS NU~·lERlJS

Ramiro Valencia B.

28

!:;H!:'

,:.\%~ (J~~ccm·~h. Programaci/m AVJ?<s

vrsuajze: 'SUBRUTI~!A PARA VISUALlZMZ

Portb = 1 : Portd '" f~IlI1l(lmirl"d)

Waitht!: 5

Portb e 2: Porta = i\him(de.:en;j) Waitms 5 .

Return

'l rampo:

Dim Temp Ar; Integer For-Temp = i.To 30 Waitms 20

Gosub Visualiia

Next

R:eturn'

End

SiJIJRUTINA DE TrEMPO

r'Jumeros:

Oatil &HCO, &HF9, &HM, &HBO, &H99 ,&H92, &HS2 ,&HFS., &HSO, 8<H9Q

'TABLA.5 DE NUM EROS

/

[ _ EJERCICIOS i>ROPUESTOS .. ..

Realiiar' -un relo] que sirva como contador para ajedrez, el cual p.ern.)i~a configu.rar m.· tnutos '1 sequndos dejueqc. Aciemas- debe 'terrer pulsantes.para el para de Lin jugador y conteo del otro Jugado ••

~~-

Ramiro Valcuci« B

29

30

OM
:Ztl B,u<",,·A" Programacion A VR's
4.4 Matriz de Leer s 7 x 5
Una matriz de led' ses un conjunto de led' 5 unidos en comun
per suo anode 0 catodo, Dicho punto eornun, generalrnente son
las cotumnas (5) y los dernas puntas son los datos (7).
EI principia de funclonamiento es sImilar a la de un display
multiplexado, ya que se debe actlvar la columna dcseada y
luego enviar el dato correspondlente a esa columna.
Para poder visualizar caracteres en una matriz de led' 5, es recomendabie
reenzer una tabla de datos,
. PX.7 Px.6 PX.S Px.4 Px.3 Px.Z Px.l Px.O Cadi 0 Caracter
x 1 0 0 0 a 0 0 40H
X 0 1 1 0 1 1 1 37H
X 0 1 1 0 1 1 1 37H A
X 0 1 1 0 1 1 1 37H
X 1 0 0 0 0 0 0 40H

Px.7 Px.6 Px.5 Px.4 Px.3 PX.2 Px.i PX.O c6di 0
X 1 0 0 1 0 0 1 49H
X 0 1 1 0 1 1 0 36H
I.
X 0 1 1 0 1 1 0 36H B
X 0 1 1 0 1 1 0 36H
X 0 0 0 0 0 0 0 OOH

PX.7 Px.6 Px.5 PxA Px.3 PX.2 Px.l Px.O Codl 0
X 0 1 1 1 1 1 0 3EH
/
X 0 1 1 1 1 1 0 3EH
X 0 1 1 1 1 1 0 3EH C
X 0 1 1 1 1 1 0 3EH
X 1 0 0 0 0 Q_ i 41H

PX.7 Px.6 Px.5 PX.4 Px.3 PX.2 Px.l Px.O Cadi 0 Caracter
X 1 0 0 0 0 0 1 41H
X 0 1 1 1 1 1 0 3EH
X 0 1 1 1 1 1 0 3EH P
X 0 1 1 1 1 1 a 3EH
c __ ,
X 0 0 0 0 a 0 0 OOH
. T<lbla 4. Codlqos de letras para el manejo de matriz de leas Ramiro Valencia H.

[

. I I i i

!

I I t

.PROYECTO s "VISUALIZN:.IOI\j DE tErMS EN MATRIZ DE LEDS"

Ei. proyeeto 5 permite v'sualizar en uno matnz de lees 7x5, lasletras A; B, C Y D, dependiendo de la cornblnaoen que 5(;; pong~ en 1':1 dip S'rtitch.

'$regfile '" "m8<;1ef.dat'! scrystat '" 8000000 Config Portd = Output. ConffgPortb .. Output Cl:mfig Pinc.O = Input Config Pinc.l: ~nput

Declare Sub letaO Declare Sub letbO Declare Sub LetcO De.clare Sub l,MO

/

Do

If PineO ~ 0 And Pinel =, 0 Then Gosub Leta

End If

'COt1BINACION PARA LET·RA A

If PineO = 0 And Piric.l = 1 Then Gosub Letb

"~d If

'cor'1BINAClON PARA LuRA 13

If pineO = 1 And Pinel" 0 Then Gosub letc

End If

rr PineO =. 1 And Pinel c, 1 Then Gasub Letd

End If

'Loop

Leta:

Portb :::: &800001 Portd = &H40 Waitrns 10

'CAP~CTF-RES PARA LETRA A

Pl'lltll :: &BOOO 10 Portd = &H37 IIVaitrnslb

Fortb= &BO(llOO Portd", &H37 Waltms 10

Portb '" &B01000 Portd " &H37 Waitms 10

Portb '" &B10000 Portd = &H40

Wilitm51(1'

iteturn

tetb:

Portb = aeoooo 1 Portd =:; &HOO. Waitms 10

'CARACTERES PARA LURA B

Pertb =&B00010 Pertd =&HJ$ WaitmslO

Port!:!'" &B00100 Pond:::: &H30 W"itm5 io

Portb = &B010.0.0 PQrtd = &H36 Waitms 10

"

Perri:! =&B10000 Portds= &H49 Wai.tms 10 Return

Letc:

Porth =&B00001 Portd= &H41 Waitms 10

'CARi\clERES PARA LETRA'C

Portb " &800010 Portd == &H3E Waitms 10

Portb ;=&BOO 100 Port.ct = &H:3.E Waitms 10

Portb "" &601000

Ramiro Valencia fl. :32

Portd = 8,H3E Waitm:;l0

Porth:; MlOODO Portd :; &HJE Wa'itrns 10 Return

Letd:

Portb:; &800001 Portd :; &HDO Waitms 10

'CARACTERES PARA LtTRA C

Portb =&80001'0 Portd = &H3E Waitms 10

Portb ,:; &SdO 10'0 Portd :; &H3E WaitmslO

Porth = &801000 Portd =&H3E W,aitms 10

Porth =&810000 Pmtd :.: &H41

Waitms 10

Return,

End

i

[~- ---,- ~ ElERCICIOS PROPUESTOS ---- ~

J, Realizar un letrero mensajero con 2 matrices de leds 7x5, en el cual toe visualice constantemente la patabra "HOU,", la cual se debe estar desplazando de derecha a izquierda .

. " .~"-:--~~~~~-

rrs s

"wW,BWL,,,'A"" Programacion A VR 's

4,5 LCD (Display de Cristal Liquido)

Un display de crista I lfquido (LCD), es un dispositivo que nos permite mostrar informacion altanumsnca 6 caracteres disefiadas, presentando una ventaja sabre los displays de 7 seqrnentos.

EI manejo de un LCD, 58 basa en

una secuencia lnlcial de comandos que dsben ser enviados desde -el rnlcrocontrolador, durante un tiempo predeterminado por el fabrlcante. Pero cuando se trata de proqrarnacton en alto nivel, este proceso es realizado intemamente por el compilador 6 por librerias que sstan previamente hechas en el software,

En el caso del bascom AVR, podemos eontrolar al LCD de dos maneras: per comandos 0 por configuraei6n en cuadra de dialoqo,

Mediante comandos tenemos:

4.5.1 Config Lcd

Slrve para configurar la clase de led que vamos a ututzar, puede ser de 16 caracteres Par 2 lineas (16x2), de 20 earacteres por 4 li~eas (20X4), etc

Par ejemplo:

Config led = 16*2 (Display de 16>::2)

4.5.2 Config Icdpin

j

Sirve para conflqurar los pines par los cuales se va a manejar la informacion la

clase de led que vamos a utilizar, puede 5er de 16 caractcros par 2 linea!; (16x2), de 20 caracteres par 4 lineas (20x4), etc.

Par ejemplo:

Config Lcdpin = Pin, Db4 = PartaA , Db5 == Porta.S , Db6 = Porta.e , Db7 = Porta,? , E ::: Portc.? , Rs = Portc.6

4.5.3 Config lcdbus

Esta lnstrucclon sirve para configurar eual sera el modo de envio de datos, ya que puede ser hecho por 4 pines u 8 pines

Par ejerilplo:

C(mf~g Lcdbus '" 4 (4 pines de datos)

==~=tr=,=============================================

Ramiro Valencia B.

~ ..

34

4.5.4 lcduH

SiNe para escrlbu rualquler, trase enel lcd, sin importer 10 Im;alizaci6n del cursor.

Por ejernplo:

led "HQLA"

4.S.S !"ocate x,V

Sirve para locallzar el cursor en la linea y columna adecuede, para ooder empezar a escrlbir enel led.

Par ejemplo:

locate 1 ,1 (t.ocehzacion del cursor en la fila 1, co lu rima 1)

4.5..6 Shiftlcd

Sirve para mover todd el texto del lcd, ya sea para la izquierda 0 nerecna. con las instrucciones:

Shiftlcdleft Shiftltd rigth

Mediante cuadro de dialogo tenemos:

Bascom AVR, nos perrnite lnterectuar: con el hardware, mediante cuadros de dialogo, a los cuales podemos ingresar mediante el Menu de Qpdohes,~1 rnlsrno que nos aprueba la conflquracion de los pines que ocuparernos pl'lr;l realizar ta comunlcadon can losdistihtos dlspositivos 0 perfericos d~ UI1 mkrocontrolador AVR,

figura 1.9,

/

AVRpara contlgurar un LCD.

La siguiente pantCilla nos rnuestra como podemos tonfigurar los pines y.el npo de LCD que utihzarernos.

)I'lInir!' Va/I'I1Cw B. 35

tI,:U~·. .

:ZW B'"""'A'" Programacion A VR 's

Es recomendable realizar todas las configuraciones de dispositiVOS mediante c6digo y mediantecuadros de dialogo; de esta manera nos aseguramosque ta informacion de las interfaces de salida esten dbblemeh~e escritas y no m plerdan en ningun memento.

)/

Ramiro ValCllcitl E.

36

Este provecto.vnos permite visualiz<"r numeros del 0 al 15 en un LCD, rnediante le combin.acion que seingrese en eldip "witch,

lCDl

$regfile'" "mSdef.dat" $cry~tal = 80000'00

DimAA$ Ilyte Coiifig Portd = Input Contador Alias Portd

A~O

Ccnfig Lcd ~ 16 ' 2 '-LCD DE: 16 CAPJ\CTERES Y 2 L1~!G.\g

Config Lcdbus '" 4 'MODO DE US!) A 4 fliTS '

Conffg Lcdpin =; Pili, Db"4" '" Portb,2, Db5 " Fortb,3 r Db6 " PiJrtb.'I , Db7 " Pootb,S ,E ~

Portb.l, Rs '" PortlJ.O 'CONFICUr<ACIOH DE: PIN"" m:l. LCD

ps

locate 1 , 1

Led- "H*'"MICROTELH**" Locate 2 , r

Lcd" pROYECTO 6 l~CD " Wal,t 2

Cis

'[SCRIDtR EN EL LCP (

't]ORRAEl LCD

Do

Contador == Pind A = Contador locate 1, 1

Led "**** ~IUMERO h,H" locate 2 , 1

Lcd,i\.; " "

Loaf.!

End

'ESCRIBEfL NlW1ERO EN fl. LCD

... _ .. _~ __ "~_,c~_. '~' '------~J

. ~ EJE~C1CI05 PROPUESTOS

[' LRealizar ,una,ca,', lculadora decimal C+ .: ,* .n. en I" cual seInqrese los ,:

'~J3~OreS ~:)oY" tcclado y se vlsualice en el lCD. 16x2. .

~ ....• _,_.:..:.:; '".~'~'. ~ , ~_~ •• _______t_-.-"~-'-;_--,,---;-

oes

~~w ~,,('m'A" ,FrrjgtamhdonAVlI 's

4.6 Comunicacion serial conel PC

C1

RS232 a TIL y viceversa.

4.6.1 Cable Null- MODEM

La corriunicaclon serial entre dlsposltlvos; se

basa en el

intercambio de

informacion mediante lineasde transrnlslnn y racepclen .

. uno de los Circuitos integrados que nos ayudana rsauzar 13 comunlcaocn seriai y entre, un rnlcrocontroiador e~ 81 MAX232 , el cualss un converser de nivel

Un Cable null - MODEM slrve para realizar comunicaciones senates mediante el

puerto DB9 de un computador. '

Las seFiales provenlentes de un puerto serial del PC, son entre otras: RX (Recepcion), TX (Transmisi6n), GND (Tierra), RI (Ring Indicator), CTS (Clear to Send), RTS (Request to Send); pero de las wales solo 58 pueden utilizar 3 para reallzar !a cornunlcaclon. Dichas sefiales son RecepCi6n (pin 2), Tram;;misi6n (pin 3) y Gnd (pin 5).

I 1 3 "' s

06 <5\°8°;/0 0000

I

Para reallzar unacornuntcacion btdlrecdonal, sea half duplex a full duplex, se debera realizarun cable en donde se unan 13 recepdorr ,de un lado VI la transmlslen del otro,

Las lnstrucciones que nospueden avudar a realizer la oomunicaoen serial mediante un microcontrolador y un PC, pueden ser de tres tipos: con retorno (por software), por interrupckin y can retorno (porhardware).

Las lnstrucclones par retorno rl€ce'sJta~ corno CC:lfO:r"il3cion d~ ~r:vfc 0 recepcion de datos, ei caracter ASCII No. 13 (ENTER) y las instrucciones. de interrupclon habilitan una subrutina que ejecuta la transrnision 0 recepclon serial.'

FUll/ira Valencia B,

Esta es una instruction de conflquracion principal, que srve para determiner la velocidadde transmlstorr a la que se van acomunicar losdispositivos .

. POJ ejemplo:

. $billlld= 9600 (Velocidad de Transmlsion de 9·6GObp5) $baud= 1200 (VelOcidad de Transmision de 1200bp5)

4.6.3 Print

Sirve para envier datos en forma serial, desde el rnlcrocontroledor hacia otro dispositivo, como per ejemolo un PC. Usando con el Corriando "Input" generalmente es una instruction Con retorno,

Per ejemplo:

Print "HOLA" (rransmison de letras y vanables)

4.6,4 Input

Slrve para recibir caracteres desde otro dispositivo hacia el microcontrnador.

Un inconveniente que presentan "print" e "input", es que necesitan como connrmaclon de datos elcaracter ASCII (B) "ENTER" antes menclonado, PiJro ello es rnejor 0 recomendable trabajar mediante la lnterrupdcndel portico serial, la cual es activada vasea par te recepclon 0 le tran.smi:siOn desde eI rnicrocontrolador,

Porejemp!o:

. Input A (Recepcion de datos en la variable A "string")

4.6.5 Interrupcion del portico Serial

/

Mediante tainterrupclon del puerto serial, sera un poco mas senclllo el menejo global del programa, ya que al menos no debernos preocuparnos en que instante nos puede lleqer un data; sino que-sirnplernente reallzamos una subrutlna, la cual 58" encargara de alrnacenar dtcno dato, provenlente de una fuente serial externa.

Las lnstrucdones usadas para realizer una. lnterrupcon de recepcion .del puerto serial, son:

• Qn Hrxc Serial: sirve para activar la subrutina llarnada SERIAL, err caso de reobtr un data.

Enable Interrupts: Sirve para habilitar las interrupciones presentes en 81 mkrocontrolador.

39

!:lair

"%\~B,,,om·gYr Progranwcl'im AVR 's

• ~nable Urxc: Slrve para habilitar la lnterruptton de recepdbn del puerto s.erial.

InkeyO: Sirve guardar un data reclbldo por comuniceden serlel en

una variable dedarada. '

4.6.6 Comunicacion par hardware

La comunlcacon par hardware, es similar a la comunicadon can retorno per sofware, con 1<3 uniG~ diferencia que se deben abrir pines para transmislon y recepdon defmldcs par el usuario.

Las instrucciones utilizadas para abrtr urr puerto serial por hardware son;

• Op.en: Sirve para habllitar cualquler pin del mkrocontroledor, para que funcione comb entrada 0 sahda de datos.

Porejemplo:

Open "comd.l:9500r8,n,l" For Output As #1, Para transrmslon Open "comd,Q:9600,8,n,l" For Input As #2{ Para recepcion

• Close:Sirve cerrar la utlllzacicn vde los pines de recepcien y transmlston,

Par ejemplo:

Close #1, Para cerrar la transrnislon .Close #2, Para cerrarta recepcion

• Print #l:,sirve para trarrsrnltlr por el pin de.transrntslon Virtual.

• Input #2: sirve para recibir por el pin de recepoon vlrtual.

/

Can laayuda de estas lnstrucciones, se puede tener la versatilidad de 2 puertos seriales dentro de un mlsrno microcontrclador.

Ramiro 'Valencia B,

40

Programacion AVR '3

iPROYEC"i'O"1 -usoor PRINT E INPUT'

EI presente provecto, permite ingresar un num,:ro medi'lIltt comuni.;;aciOil ~efidl, y deoendiendo del numero, se active una sacucncia diferentc p~ra la b~""" d~ "'<Is.

$regfile '" "msdct.dar' $crysta I", 8000000

Confi!,! Porte " 6u~pu~ Dim A As String * :I. Porte ~ 0

!

Declare Sub UnoO Deciar.e Sub 0050 Declare Sub,TresO

ConfigLcd ~ 16 * 2 'CmFIG.URt,cjciN .DEL LCD

Con fig Lcdbu~ '" 4 .

C011fi9 Lcdpin '" Pin, DI;J4 ~ PortbA, Db5 = P.ortb.5 , Db6. = Portb.6 ,Db? '" portb.7, E

'" Portb. 3 , Rs '" Por1:iJ.2

Cis

t.ocate j , 1

Led "****·MICROTEL ****" Locate 2, i .

Led "PROYECTO 7 Wait 2

Do

Print "Inqrese-un Numero 1-3" Waitms.20b

I!1p~lt l\

41

D1JS

w'?:~ ~",:or'1MiC' Programacion. Ii VR 's

If A = ''1'' Then Cis

Locate 1 , 1

Lcd" ESCOGIO operoN" Locate 2, 8

Lcd A

Gosub Uno

End If

'COMBINAC)ON :1 DE L/\ BARRA DE .LEOS

If A '" "2" Then cls

Locate 1 , 1

Led" ESCOGIO OPCION " locah! 2 ,8

led A

Gosub Dos

End If

'COMB)NACION 2 DE LA BAf'RA D~ lWC;"

If A = "3" Then CIs

Locate 1, 1

L'!:d " ESCOGIO OrCION '. Locate 2 ,.8

Led A

Gosub Tres

End If

. Loop

'COfo<lBINAC!ON 3 DE LA SARRA DE LEDS

uno:

Porte c; 1 : W~itms 500 Porte ~ 3 : Wait:ms 50Q. Porte = 7: Waitms 500 Porte .::; 15 : Waitms500 Porte: 31: Waitms 500 Porte: .15 : Waitms 500 portc :;: 7 : Waitms 500 Portc > 3·: Wailms 500 Porte: 1,: Waitms 500 porte = a

Return

'SECUENClA 1

/

Dos:

Porte = 17: Waitms 500 Porte = 10: Waltms 500 Porte = 4 : Waitins 500 p~rte = ro : Wa..itms 500 Porte::: 17: Waitms 500 Porte = a

Return

'SECliENClA 2

Tres:

Porte::; 31: Waltms 500 Porte::; (( Waitms 500 Portc r= 31 :Waitm" 1500 Ppr-tc = a

Return

End

Ramiro Valencia. B.

42

PROYE(jJO 8 "INTERRUPCION DEL PORTICO SERIAL"

Coneste proyecto, se puede ingresar desde un PC un numero 'de 0 aJ 9, para que se rnuestre en un display de 7 seqrrentos AC. La ventajaes 'que, el proqrama no se detiene para' recibir el numero, slno.queel espera la lnterrupdon serial para escrfbltlo,

$regflle '" "m8def.dat" $crystal '" 8000QOO $baud :=: 9600 ' Config Lcd ~ 16, * 2 Config Portb ~ Output Config Pcjrte= Output Portb > &HFF

'r.1lCROA USA,R ESATMEGA8

'VELOClDAD DE TRANSI~19l0N 9600' bps

Dim Caracter As String * 1 On urxcsebsenel

'CARAC'iER A RECIBIR'

'ACl'lVAR LASLJl\RUnN;~ or nJTt:RRUPCION

Enab!e Interrupts Enable Urxc

Print "Ingrese un nurnero 0-9" Waltm:; 100

'P.crIVAR TODAS lAS INTERRUPCIONES 'ACTlVAR LA lNTERpUPCION SERIAL

Do

Port.e '" 1'; tfhlitm., 4!l(j Porte :: ::I : WaitlTIs 400 f'ort{; '" "/': Wait.ms 4!.H1 I'ortc= 15 : Wai~ll1s 400 Porte "' 0 ; Waitms 4(1) loop

'Pf{OGRI\H!\ PRINCPAI

iWifi S3sm:n-Avr • ,-. _. .f·

'[IV/I{ Program (1CIOIi A VR s

Subseriill:

Caracter= InkeyO

Select' Case Carecter Cilse"I)" : Portb ::: &HCO Case"1"; Portb ::: &HF9 Case "2": Portb:: &HA4 Case '''3'' : Porth:.:: ,&tIBO Case "4" : Portb ::: &H99 Case "5" ; Porth = &H92 .Case '''6'' : Porth = '&1-182 ta~e "7" :Portb = &HF8 Case "8" : Porth = &H80 elise "9"; Portb = & H'!} 0

End Select Return

'INTERRuptION SEfLAL

'SE ESP;ERARECl8IR [.ir, Cfl,RAtr£R

'No, a 'No,l 'No,2, 'No,3 'No,4, 'No,5 'No,6 'No,7 'No,8 'No,9

Ell,d

,,~ EJERCICI05, PRqPUE5TOS

1. Realizar una distrlbucion de led' Sf los cuales puedan ser ufillzados como letrero mcnsajero. Una vez i'ealizado ell 0, escriblr un programa que,permitaingresar una frase por comunicacion, serial al mlcrocontrolador y puedaservisuallzado en elletrero.

2. Reali~ar un p.rogram.a me ... dia.nte i!.lterr\JPci6n s. er~a .. I, que permi,t<1J' carnblar la secuencra de prendrdo de un conjunto de led 5;

distrlbuldos en una figura de arbol de navtdad,

L

Rumiro Valencia B,

I

44

.nas

.~~~ 5._'_':;'X'i,·':;'-·T Prcgramacion A VB '5

4:1, Sei'lSores Infrarrojos, Opto - Swib:h f sensores de L.,z

los sensores de luz, opto-switch e infrarrojos, se manejan mediante pulses que detectan de acuerdo can la serial de manejo.

La primordial enestos cases es el clrcuito de acondidonemlentc, ya que su sefialen recepcion es un poco debil, para 10 cual se recomionda un circuito basado en el manejo de sensores infrarrojos,

J1J

,,",D1 ~EO

(

Figura 21. Cbnexiones de sen sores infrarrojos y esnucture mterne

Este clrcuito puede funcionar de igual meriere para los opto - switch; por ejemplo para medir las revoluoones 'de un motor 6 para Ius sensores de Iuz para realizarun robot seguidorde linea negra Q blanca.

Normalmente can estadisposiclon.Jos leds lnfrarrojos pueden transrnltir hasta unadistancia de 10 a 20 em, pero dependletido.delclrcuito de arnoliflcaclon de potencla, estos puedenalcanzar 1 a 1,5m, como para apllcaclones de control remote.

Ramiro Valencia E,

45

-oes

:X~j!l '''[O~'A'ir Programacion A VR 's

PROYECTO 9 "CONTADOR DE OBJETOS MEDIANTE SENSORES

INFRARROJOS (MODULO 100)."

Este proyecto, permite contar objetos que pasen por una banda transportadora, donde los leds infrarrojos esten a los lades de los objetos, Per facilidad en la simutacion se ha puesto un pulsante, pero en el montaje del circuito se recomienda carnblarlo porel drcu ito descnto enterlorrnente.

$regfile '" "mBdef.dat" $crystal = 8000000

'MICR.O A USAR es AT~1f:G"'8

[jim Unidad As Integer Dim Decena As Integer Dim I As Integer

Dim J As Integer

Dim Num(10)A.s Byte

Config Portd = Output Con fig Portb = Output

Ddrc.O :: 0 : Portc,O = 1

'ENTRADAS PULL UP

Declare Sub Cuentar) Declare Sub Visualiza() Declare Sub EspeniO

For I~ 0 To 9

Num(i + 1) = Lookup(i I NlJmeros) Next

'TABLA DE DATOS

I~l'J=] Inicio:

Unidad = 1 Decena = 1

Ramlro Valencia B

46

Pro:_;ratr1d'_Gi()n A-,Vj_~ 's

Dco

(;i.ozub Visua.~iza

If PineQ = D Then

Xi' Unidad to 1.0 Then. Unir.iad ~ .. 0

'1ff[ieccna ~ 10Th~n bcmna = i

E"i"

11lcr UeCena

Elid If

End If

Iner Unidad G05.ub Espera

End If loop

Espera:

If PincO = 0 Then Gcsllb Visualiza ·G nto Espera EmtIf

Return

'SU8RUT.!NA ESPERA

vtsuaiza:

Pmi:b '" 1 : Portd = Num(unidad) Waitms 5

Portb = 2 : Portd = Num(decena) Waitms S

Return

'SU Si;tJTl NAVISU/(LIb\

Numeros: 'Tf,oLA DE rWi'lEf\OS

Da"ta &H(:D , &HF9 , &HM ,&HB.D , &H99 , &H92 , &Wl2 , &HF8 s &H80, &H90 i

t~ ;:JERCICI;~ PfwPu~sios ··---1

1. Rea.lizar clrcuito para hacer unxontador de rovotuctones pDr I

sequndo de un motor DC.r;jediante un opto h switch. _j

.------.----.------.------~- . . - -~~-~.,___.-.--,... .. ------:"--

'0<':1';1:

·:*i'hB.''''"f~'' Programacion. A VR's

4.8 Molores ill Pi1l§O§ Y Servo Motores

oentro de las aplicaciones para los diferentes elementos que pueden manejar los AVR' 5, estan los motores de precision, 10 unicoque debernos conslderar primordial dentro del uso deestos rnotores es su tundorrarnlento,

4.8.1 Motores a Pasos

Los rnotores a pasos pueden serde lman permanents 0 de reluctanda variables, Dentro cle la dasttlcactonde lrnan permanente sstan losblpolares 0 unipolares.

Figura .22. Estructura lnterna delos rnotores de paso

Los blpolares estan forrnados por dos bobinas, Y la intensldedque circula per elias invlerte su sentido sucesivamente {de ah] surge el nornbrede blpoleres), 5e pueden reconocer externamente porque presentan cuatro conductores, uno paracada extrema de una bobina,

ABC D

Figura 23. Disposidon de las bobinasde Lin motor de paso bipolar

Los unipolares presentan unestator que esta formado par des bobinas con tomas mterrnedlas, 10 que equivale a cuatro. bobinas.

Ramiro rialencia.H.

Las tornas interrnedias de las dos boblnas pueden ester intercOnE'ctadas enel interior o.no, Externamente se apreclaran cinco conductores en eltJfimer case, V seis en el segundo.

Ir~--(l\j.:

LjII---4c'_---+-1--.:1------W11 III i

AB+

CD

Figura 24. Disposicicn de las bobinas de un motor d.e paso unipolar

Lo esenclal escomo poder detectar las secuences de sus poles. He aqur un consejo recornendable para detectar los palos de un motor a pasos unipolar:

1. Conectar los dos cables de igual colqr naria el positivo d.e. l;:i fuentede voltaje (SV .o12vgeneralmente).

2. Conectar cualqulera de los otros cables a tierra, a e~e Ie llarnaremos A.

3. Luego conectarsecuendalrnente a tierra otro cable; 5i hay Llil ligero giro en sentido hetarlole llarnaremos B.

4. Si elgiro es antihorario a ese polo Ie Ilamarernos c.

5. Por ultimo el qt,lE! no presents ningun giro a ase Ie llamarerncsD.

SECUENC!AS

PASO SIMPLE

Esta secuencia de pasos es la mas simple de todas V consistsen acnvar cada bobma una a una V par separado, can esta secuencla de encendldo de bobinas no seobtiene mucha fuerza va que solo es una bobina cada vez la que arrest-a y sujeta el rotor del eje del motor.

Rronir« Valencia II.

49

P:l:fS

®~ "''''m~'\''T Programacion A VR's

~. -
A B C D
1 0 0 0
0 1 0 0
0 Q 1 0
0 0 0 1 PASO DOBLE

Con el paso dobleactivamos las bobinas de des en dos con 10 que hacemos un campo rnaqnetico mas potente que etraera con mas fuerza y retendra el rotor de! motor en el sitio. Los pasos tambien seran alga mas bruscos debidos a que la acclon del campo rnaqnetico eS mas poderosa que en la secuencia anterior.

Figura 25. Secuencias de paso cloble para un motor depeso

MEDIO PASO

A B C D
1 1 0 0
0 1 1 0
0 0 1 1
1 0 0 1 Combinando los dos tipos de secuencias antsnoros podsrnos nacar moverse al motor en pasos mas pequefios y precisos y aSI puas tenemos el doble de pesos de movimiento para el recorrido total de 3600 del motor .

. .

J

~" ~c / ~~j~d:::>""

Ramiro Valencia J]~

50

Fig.!.iril 26. Secuencias de paso medic para un motor de P3£M

A B C D
0 0 a
0 0
0 0 a
0 1 1 o
a 0 1 0
-~~------ ----,,-, __ .
a o i 1
a 0 o 1
0 01 _ 1 =============~=~~=='=='=--

PROYECTO 10 "CONTROL DE PARQUEO(ON MOTOR A PASOS"

EI proyecto 10,. permite ingre~i'!r una clave cualquiera par comunleaclon sertal, r'nedl~nt(' esta clave se levanta un motor a pesos para dejar pasar el carro,

In.y?-'~~O! .ll"U -Ch~'I!'''' •• ~

936

JS~jF,RliJ:1~3tj'. ~HWJH~SE

$regfile = "m8def,dat" $crystal = 8000000

'fV!lCRO A ,USAR ES ATiVl EGA8

Config Portb = putp.ut Dim. AAs String *1 Him Corl1 As String * 4 neclaresub MotorO

Do

Porth = 0

Print "INGRESE 1) ENTRADA 2) SALlDA" Waitms 200

Input A

Waitms 200

'ESCRISO DESDE EL MItRO At PC '[SPERO RECIBIR UNCAAACTER Lo "

If A ="1" Then

Print "Inqrese su Clave .. ." Waitms 200

Input Con1

Waitms 200

Print "USUARlb:" ; Con l ; " .. INGRE.SIO" Gosub Motor

End If

:SECUr:NCIA PARil ENTR/I[,)A

If A·= "2" Then 'Sf,CUEi'iClA PARA SALIDA

Print "Inqresc su Clave .. ."

Waitms 200

Input COn1

Waltms 200

Print "USUARIO:" ; Con1; " .. GRAC(AS SU VISjTA" Gcsub Motor

;::nd If

loop

Romiro T/(I/enciaH, 52

Programacion _A-VR "s

~lotor:

Portb ~ 1 Waitms 100 Portb = 2 Waitmsl00 P,ortb ~ 4 Waitmsl00 PorllJ = 8 WaitS P6rtb= 4 Waitms·1QO Portb = 2 Waitms 100 Portb = 1 Waitnis 100 Return

'SUBRUTINI',p/\RA EL r10TOR A PAS.OS

End

/

~----~.'~~~--,-:-=:;----~-~

~ EJERCICIO.S PROPI..iESTOS

L Realizar un 'control· de un motor a pasos: mediente 2 bits con el circulto inteqrado MPPC 001.

Ra-ni:» Valencia B

53

oaw

~~w O"·:om·A,, Programacion A VR \.

4.8.2 Servo Motores

Los servos son un tipo especial de motor de c.c. que se ceracterlzanbor su capacidadpara posicionarse de forma inmedfata en cualquier posicion dentro de su intervale de operacion. Para ello, el servomotor espera un tren de pulses que se corresponde con el movimiento a realizar. Estan general mente fCJrmados par un amplificador, un motor,un sistema reductorformado por rucfas dentadas y un drcuito de reahrnentaclon, todo en una rnlsrne ceja de pequellas dimensiones.

Figura 27. Figura de un servomotor comercial HITEC HS-311 (To",3Kg.cm)

EI estandar de esta serial controladora para todos los servos de este tipo, (elegido para facilitar el usoen radiocontrol), es un pulso de onda cuadrada de 1,5 milisegudos que se repite a un ritmo de entre 10 a 22 ms. Mientras el pulse se mantenga en ese ancho, el servo se ubkare en la posicion central de su recorrido. Si el ancho de pulso disniinuye, el servo se mueve de rnenere proporcional hacla un laoo. Si el ancho de pulso-aurnenta. el servo gira bece el otro lado. Generalmente el rango de giro de un servo de estes cubre entre 90° y 18Qo de la orcuorerenca total, 0 un poco mas, segun .fa marca y modelo.

Figura 28. Diagrama de tiernpos para el funcionamiento de un servomotor no truncado

En general, los servornotores pueden ser truncados, para facilitar su uso como

un motor de DC con control de posicion. .

I'runiro Valencia B.

51

i

i

I

I

I i I

! I

I \

I

I

I:

I ,.

__..&.~

II ,-~, •.

X~~ [!JS(;Cn>"kVr" PrcgramacionA J!]("s

====-"

PRonCTO 11 "PROSADOR DE SERVOMOTORES RC"

EI provecto 11, perrn'te realizar el giro normal e inverse de un servomotor, mediante ;? pulsentes,

lCD1

$regfile ~ "hlBdefdat" scrvstat ~ 8000000

Declare Sub Izqulerdat) Dedare Sub DerechaO

Ddrc.O ~ 0 : Por~dl ~ 1 Ddrc.l ~ 0 : PQrtc.l ~ 1 (onfig Portb.l =' Output Config Lcd ~ 16 • 2·

'ENTRADAS PULL UP

locate 1 ,.1

Lcd " PROSADOI'{ DE u locate 2,1

Lcd" SERVOMOTORES Wait 2

Portb.l ~ d

Do

If Pint_Q = 0 Then Locate 1 r 1

lcd" SERVOMOTOR Locate 2., 1

tcd " GlRA DERECHA Gosub Derecha

fod If

'.GIRODERECHA

If.Pinc.l ~ 0 Then locate 1 , 1

lcd" SERVor~OTCR

'GIRO rZQuIEFDA

R-w}lin.i Valencia B.

55

OilS .

~m~ B';}(iJ~.1·f.I\jr Programacion AVR ':;

locate 2 , 1

Lcd " GlRA IZQUlE8:DA" Gosub Izquierrta

End If

loop

Izquierda: 'SUBRUTINA IZQUIERQA

Portb.l = 1

Waitms 0.3

Portti.l = 0

Waitl11s 2"0

Portb.l = 1

Wait11152.1

Portb.L = 0

Waitms 20

Return

Derecha:

Portb.l = 1 Waitms 1.5 Portb.Lr= 0 Waiitms 20 P.ortb.l = r WaitmsO.'3 Portb.I = 0 Waitm's 2.0 Return

End

'SUBRUTINA DERECHA

~ EJERCICIOS PROPUE,STOS

L Realizar el truncaje de un servomotcr, para .reatizar un robot sequldor de linea negra, mediante sensores de luz.

Ramiro Valencia B.

56

[sta secclon trata de cornblnar la parte, DC y la parte AC, rnedlanteel control de! rnicroprocesador y con 121 ayuda de e'ementosde potence como rRIAC' s, SGR "s, OPTOACOPLADOR~S .

[I control de elementos de potencia mediante Uri rnicrocontrolecor. sehasa en doslflcar la cantidad de tlempo que se mantiene eneendldo el disPQSitivo a S21'

controlado. .

En la siguiente Figura se puede apreciar unaonda de ACde 60Hz, rectificad3 en onda completa, 121 cuai tiene un periodo 8)3rn5 .

PigUT<t29. Diagra ma de tiernpos para la detcccion de ouce per cero de una senal'ACde 60H7:

l = 60Hz

1. 1 . .' .

T =; -_ .. = _., - = O,0l67seg~ 16,7111s

f 60Hz

TC = 90.0

T= ~§,7:!~ = 8 33111.1

2 2 ,.

Un': optoscr, optotrenslstor, optotriac, etc, es un elemento de rnucha avuda en desacaplar las tierras AC y DC Y. adem as en detector el cruce per cero para

poder disparar un elemento de potencle, i

Figura 30. Diagra ma de .tiernpos pare (1laclivacioh de a iqll 11 ei"mento de potencia

90° = a(#") =

x:

.. .. .. ..

...

..

..

...

... '

..

...

..

..

..

..

..

..

..

..

..

...

..

til

,.

~

_.,

..

..

..

lit

..

..



..

..

..

..

..

..

..

e

..

~-

O"-tli:i .

j,~ B,'wm·A.T Pi'ogramac'ion A VP '.I

Mediante el slquiente circuit6 se puede controlar la lntensldad de voltaje que se suministra a un elemento depotencia, 10 que se debe tomar muy en cuenta es el aislamiento de.nerras digitalesy de potencia mediante los optoacopladores.

Otro aspedo muy irnportante es el tiempo de dlsparo 0 ailgulo de inicio de disparo, mediante el cua\ doslficara el tiempo que permanece encendido efectlvarnente un elemento cornopor ejemplo un foco, un motor ACt etc.

Figura 31. Diagrama de·conexiones para realizar el control de fase mediante un

. microcontro.lador AVR.

./

Romiro Vtileiicia H.

... ... ...

.. .. ,.

... ~ ~

~

..

• ..

• •

:f:l':::I3

;X(.\~ bSCDm-~id Pro,t!;'''iJ}l1.ocl-on A VR '5

Internamente un AVR,.56 puede decir que contiene espaoos de rnemcrta.no

volatil, en los cuales se actuallzan los registros de hora y fecha. .

Parael Rel.oj en tiernpo real que poseen los AVR's, es n€cE>sario nabmtar una" instrucclones que son prlrnordlales en el funciorranuento de esta tler~alliient3

4.10.1Co.nfig Date = Mdy~ Separator::: 1

Sirve para usar un separador tipo I

4.10 .• 2 COrifigClock = Soft

5e configura el relojlnterno, ya que se dice que sera usado por software.

Ademas S8 puede configurar el reloj como hardware, ya que se puede usar ei DS1.307 mediante. comunlcaclon I2C. La manera de conflgurar dicha ccmunlcacion espor cornandos 0 cuadrodedidlogo 31 igUdI que fll LCD .

AVR

4.10.3 Date$

Para poner eldato de la fecha en cualquierdispositivo de sauda, ya sea un Icd 0 el Pc.

4.10.4 Time$

Paraponerel dato de la hera en cualquler dlsposltlvoda salida, va sea un led Q el Pc.

4.10.5 Enable Interrups

Para habilitar la mterrupcton para el conteo deltiempo de rnanera exaeta.

ArJemas hay que tomarmuy en cuenta un aspectoimportante, que es.' 0,1 conectarun ~ristal de 32768Hz entre los pines Tcscl y Tose2, ya que sera este el encarqado de general' los pulses necesarlosparaque 81 conteo sea preclso.

59

PROYEcrO 12 "RELOJ CONFIGURABLE EN LCD 20x4"

Le01

OI:lS

~~ E',~",(,cll-A'··r Programat ion A.VR 's

EI proyecto 12, permite visualizar un reloj en tiempo real en un led -20x4, el cual prede ser igualado mediante 2 pulsantes,

$regfile = "msdet.dat'' $crystal = 8000000

'~1[CRO A USAR ES ATf'lECiAS

Ddrc.O = 0 : Portc.O = 1 Ddrc.l = 0 : Porte. 1 = 1 Cambio Alias Pinc.O Aumentar Al,ias Pinc.l

'ENTRADAS PULL UP

Con fig Led = 20 * 4 Config Lcdbus ;'4

Config Lcdpin = Pin, Db4 = Portd.4 , Db5 ~ Portd.5 , Db6 = Portd,6 , Db7 ... Portd.7 , E

~ Portd.3 I Rs = Portd.2 ,I

Con fig Date = Mdy r Separator = / Config Clock = Soft

'FORMATO DE SEPARADOR 'RELO] POR SOFWARE

Time$ = "16:45:59" Oate$ = "06-07-08" Enable Interrupts Cis

Dim Minuto As Byte Minuto = _min

'V.~lOR INlCIAL DE HORA 'VALOR INICIAL DE FECHA

;ACTIJAUZA E! RELOJ POR IltW:FRI'" lNTFf(NA

locate 1 , 1

lcd "RELO) EN TIEMPO" Locate 2 , 1

Lcd "REAL (MICROTEL) " Wait 2

Dim Cambiar As Integer Cambiar = a

Ramiro Valencia B.

60

D(j Iilicio:

Gosub Tiempo

If camolo ~ 0 Then Cal]1biar cc Carnb.ar + 1 Gosub Espera

Elld.1f

If Carnbiar = i li'''''l Locate 3 , f

L!;cl "SEGU."

Gatt) Segundos

Elld If

IfCambiar ~ 2. Thl:'!l Locate] ,7

Led "MINU."

Goto Minutos

End If

rCA::-18IO .DE MINUTOS

If Cambiar ~ 3 Then locate 3 , 7

Led "HOUR."

Gotn Horas

End If

'CAMBIa DE HOP-AS

If Ca mbiar '" 4 Then' l{)cate3 ,7

l.cd "DAY,"

(ioto Dias

~nd If

WJAFJIO DE DIAS

If Carnb.ar ~ 5 Then locate 3,7

Led "MONT."

Goto MIOses

End If

If Cambiar = 6 Then Locate 3 , 7

Lcd "YEAR."

Go.to Antos

End If

;

If Cambiar = 7 Then Cambiar "'. 0

End If

Goto.lnicio

Segundos:

if Aumentar =. 0 TIH,!l Jncr _sec

GQsub Espera

If _sec = 60 Then sec = o

.El1o If Minuto= _min End If

Gate Inicio

Ramiro Valencia B. 61

.013$". "

·:W!W8J~(C!rrl.r.vr Programacicti AVR 's

MinutbS:

Xf Aumentar =0 'lfhell Iocr __ min

Gosub Espera

If .rno= 60 Then min = 0

End If Minuto = ._min End·If

Goto Inicio

HOr(l5:

If Aurnenter = 0 Then Incr _hour

GOSalD Espera

If _hO\1f =24 Then _hour = a

End If

Minuto = ~min End if

G()to Inicio

Dias;

If Aumentar = 0 Then Incr _day

Gosub Espera

If _day ~.32 Then _day ~ 1

End If

Minuto = _min End If

.Goto Inlclo

Meses:

If Aumentar = 0 Then rncr _month

Gosub. Espera

If _month = l3 Then month = 1

End If Mfnuto c; min End If - Goto [nieio.

Anlos:

If Aurnentar = 0 Then tncr _year

Gosub Espera

If _year = 100 Then _year = 00

End If

Minuto '=' _min End If Goto-IniCio Loop

'SU6RUTINA AUI\1ENTO DE HORA5

'SUB-RUfINA l\UfvIENTO PE 1'1[:5:::5

'SUEJRUTINA AUiV1EI.HO DE A!'lOS

Romiro Valencia B.

62

.. ... .. ... ... ..... .. .. ... .. .. .... .. ... .. .. .. .. .. ..

~

~

Espel:a:

ii Cambio ~ .0 Or Aurnenter = 0 Thetl Gosub Tlernpo

.eosub Espera

r::1d4f

R?t!Jrn

'MmRREBOTE P0R: SOFrvVI\r,[

Tlernpo: locate 1 , 1

Lcd "HORA:" i Time$ locate 2, 1

lcd "FECHA: " ; nates Retui"li

End

, _ EJERCICIQS PROPUESTOS~---~------·--·-

1. Realizar un reloj en tiernpo real en el cuat so .pueda CQ1)"ligu r ar 0 ki~;resar horas de ·aJanl1a para 'que pueda actlvatse- Un buzzer cu(:~i"ndo- se compare las a!anna~ con el reloj.

Ran/ira Valenc!« 1J (,",

nas

~~e"":om'";T Programacion A VK's

4.11 Memoria Serial EEPROM

La memoria serial es una de las herramientas que posee internaniente U(l AVR, mediante esta, se facilita el rnetocc paraguardar un data que se quede grabadoen memoria no vola-til.

Para el usa de la EEPROM mterna esnetesario canocer principalmente el dimensionamiento de las variables que pueden ser usadas.

4.11.1 ERam

Mediante esta lnstruccion sedimensionauna variable para que pueda ser usada como puntero para guardar un dato en la EEPROM.

Par ejemplo:

Dim VAR As Erciin Integer (variable entera para laeeprom)

4.11.2 Readeeprom

Sirve para leer 0 aimacenar en una variable, el dato qus.sste guardado en una direccion espedficade la memoria EEPROM.

Por ejernplo:

Reac;leeptc:im Normal, &HOO (Almacena el dato de la direccicn

OOH enla variable Normal)

4.11.3 Writeeeprom

Sirve para escrlbtr un datoen una direcci6n especffica de la memoria EEPROM.

Par ejemplo:

Writeeeprom Normal, &HOO (Escribeenla dlrecclon DOH, el

contenido de la variable Normal)

Adernases importante recalcar que se puede escriblr en rnerrtorias EEPROM externas como por ejemplo !as24C:;;;:X, sind que el metoda a emplear seria comunicaci6n serial Il,C,

EI siguiente provecto nos rnuestra un ejemp!o sencillo deutilizaclon de la memoria eeprorn para guardar una data, sin necesidad de tener energlCl en el sistema,

Ramiro. Va/i:ncia B.

64

::(i~",

,X~I;~~, Bw-om,r,Yr" PrcgrqmacirJN ]1 V/{ ',~

PROYECrO 13 "CONTADOR CON rliEMORIA EEPROM"

[I siguiente provecto, permite aurneniar un contadormedian\e el pulssnte. Ademaseste conteo se va guardando en I_a EEPROM, haciendo que e! nurnero quede guardado ado cuando se apague el sistema.

LCD1

$regfile '" ·"mSdef.dat" $crystal = 8000000

Config Lcd", 20 * 4 'COtlr'lGUgAClON DEL LCD

Contig Lcdbus '" 4

Config '_!,dpin = Pin, DM = Portb.2 r Db5 = Portb3, Db6 = Portb.4 ,Db? = Pprtb.5 ,t "' Portb.l ! Rs = Portb.O

'1~1!tRQ,A USI\P' 1:;S ATt-'lEGAS

. Declare Sub Esperat)

Dim Vareprorn As Eram Integer Dim Norma'l As Integer

'VARIABl E PARA IA .EEPHOM ljPG ENTERi\ 'VARIA!:2LET!i'O H·-.TER!\ PARA CAI·iBIO

Con fig PineO'" Input Ddrc.a = a : Portc .. O = 1

Normal =·0 Cis

Do

Normal = vareprom Readeeprom Normal, &1-100 locate 1 , 1

Led "CONTADOR DENU~1EROS " Locate 2_ , 1

Lcd" DESDE LA EEPROH "

',l.UVlP,CEW) I:cl LA VARl,\BUc LOLr",L 'IW DE u\ ViJ(ll\t![ b tOt.AL

Rantiro Valencia It (is

ii', ,

:Bascom' 'It .. '. '

R A Programacion A VR s

Locate 3, i,

Lcd '''NUMERO ACTUAL=" ; NOflTlal i" u

If Pinc.O = a Then tncr Normal Gosub Espera

Writeeeprom Normal, &HOO Vareprom = Normal

End If Loop

'ESCRIBO EN LA EEPROM CON LA VAR, LOCAL 'ALMACtNO EN LA VARIjlBLE PE LA EEPROM

Espera:

, If Pinc.O = 0 Then Waitms20Q G05ub Espera End If

Return End

_ EJERCICIOS PROPUESTOS

:1.. I<.ealiz.ar una cerradura con tedado rnatriclal y display LCD, en ta cual se perrnlta in'gresar las claves para los usuarlos, las cuales deben estar guardadas en memoria eeprorn, para que de esta rnanera las claves no se pierdan aun cuando no exlsta surnlnistro electrh;().

Ramiro Volcncia B,

66

Bluetooth es unil tecrio!ogiainalanMica de corto atcanre, debicio a ta potancla

quese USCl ensutransrmsor, .

Utiliza I~) banda ISM de 2,4Ght para la transrnisiOn de datos, Y su ventilja E'~ que reaiiza retransrnlsionesconstaotes en casu cie perdida de 105 datos, rJe tal maneraque es una tecnlcade envio de datos muy conflable.

Bluetooth tiene 79 canales para el envio y recepcon de datos. Sabre un canal .de datos se realiza una transrnlslon, perc sobreotro canal diferente· s.e raauza una reception, de. tal manera que sJ sucede interferencia sobrs sss canal, bluetooth cambia slsternatlrarnente de canal para rea liza r una retransrmsion de datos sequra,

Despues de cada paquete, los dispositivos Bluetooth coneeracos rs-smtoruzan su radio transmisor a una frecuencia difer.ente, saltando de un canal de radio ,~ otro, a una alta velocidad (1600. saltos/segUlido); esta tet::niCa~g Ie conore como espectro disperse con saltc en frecuencia (FHSS, FrEequBncy Hopping Spread Spectrum); de esta manera, los dispositivas Bluetooth utlllzan toda la banda de 2.4 GHz y si una transrnlslon se interfiere sabre un canal, una retransmislon ocurrira sabre uncanaldlterente siempre y cuando este libre,

[]y[Hz

Figtlra33. DistriblJci6n de canales para la transrriisi6n bluetonth.

En cad a canal, 58 rea!iza una transrnlsion de datos durante Una ranura de tlernpo, cuva duraclon e5 de 625 mlcrosequndos. Los datos crwiados. por los dlspositivos, se mtercalan durante el tiernpo en el que dura laconexlon entre ellos,quepuede SeT cada 1,365 ranuras.

I Maestro

I !

f(lt)

_L]ki~/l

. 1

f(k+1)

('25 flo

Krmirof/(({r'/T('i(l I], 67

Existen dos tipos de transferencia de datos entre dlspositivos: Los orientados a conexi6n de tlpo sincrono (SCQ, Synchronous Connection Oriented) y los no orienlados a conexi6n de tipo asincrono (ACL, Asynchronous Connectionfess).

Maestro

Esclavo

ENLACE seQ

ENLACE ACL

--~~~~~~~~

Figura .35. Tipos de enlaces para la transnuston bluetootfl_

4 .. 12.1 SCD (slncrono Drientado a la Conexion)

Es un enlace slmetrlco punta a punto entre un maestro y un solo esclavo en una Picored. EI maestro mantiene el enlace de seo usando slots reservados. EI_ enlace respectivo Ileva prlndpalrnentelntormaclon de voz y el maestro pusda rnantener hasta tres enlaces slrnultanecs, mientras que los esdevos pueden mantener s610 dos enlaces de seo 0 hasta tres con dificultad. Los pequetes de seQ no se retransmiten nunca y se usan para transmisiones de 64 kbps,

4.12.2 ACL (Asincrono Sin Conexi6n)

Es un enlace sirrretrlco punto a punto entre un maestro y un soicesclavo en una Picored. EI maestro mantiene el enlace de SCOusando slots reeervados. EI enlace respectivo lIeva principalmenle. informacion de voz: y el maestro puede mantener hasta tres enlaces slrnultaneos: mientras que los.esclavos pueden mantcner solo dos enlaces de sea 6 hasta tres con dificultad. Los paquetes de SeQ no se retransrniten nunca y S6 usan para transmisiones de 64 kbps.

4.12.3 Modulo Bluetooth "KC-21"

Es uno de los tantos rnodulos de Biuetooth disponibles en el mercado, el modulo 81uetooth KC - 21 incluye 14 entradas para tcdo uso y ofrece comunicaci6n de alta velocidad hasta 921 Kbps.

EI KC ~ 21, es un modulo de monta]e de superficie, que contiene entre sus caractertsticas: una memoria flash, perfil de SPPde Bluetooth y confiquracion

mediante comandos AT. .

Ramiro Valencia H

68

I

i

I !.

, .::

"

f

i

t

!

!

I J

I

~if#,fjMm:11':l\Ir . . T . '. F

.A'II!. Programacion A VR s

0-1 c».I~(Jl--+3.",.Zt~

... ' ecce ""''' ~

,i<.IESET ~o{&] ~t .

-1 ~lors} (JpJ.o[15]:n

·5 rRlQ{.lO} ~~t:>l~;] 2~'

; :0£91 =~:,~ :Ii~

Q"."(.orJ.J 17 G':i.O~{]o~ lti """'0[13111

Figura ;!I6, Distribucion de pines de un modulo b!ue~ootn(KC-21 clase 2J.

EI usa del m6dulo bluetooth se IQ puede realizer mediante comunicacl6n Sllrigl transparents, yaque el sistema microprocesado emiteMflales naeta III modulo que unlcarnente sirve Como transceiver.

l,lnejemplo puede serun rnlcrocontrolaoor que envia datos haela un PC,.o una Pocket PC, donde se puede apreciar que la transmlston en tra.nsp~mlnlQ ~I usuario,

Antena

Enlace

UsU<irio

Pocket PC

Figura3?, Comunlcaclon entre dispositivos bluetooth

Adernases importante recalcar que la cornunicecicn serial entre dispositivos bluetooth se debe realizer bajo eI seryicio 0 perfil de puerto serle SPP, ya que es necesariollegar hasta la capa apncacion enla comuntcacon entre 2 disposltlvos,

4. i2,it.Comandos AT

ComaMQsde Atendon es el significado para ta abreviqtura"AT Command", las cuales son instrucciones codificad<'is para la cornunlcadon hornbre-rnaquina. La ronfigutacion de los cornandos AT en el modulo Bluetooth I<C-21, dependen de un sistema de adaptadon que se realiza a .traves de un circLiitoconvefsor de nlveles RS232 a TIL par media de un canal. de corrumcadonserial, tal comb se indica enla figura. .

Rniniro Valencia B,

69

~ ..

Figura 3B. Sistema de ccnflquraclon mediante cornandos AT

EI proposlto de la ejecudon de los cornandos AT, es causar efecto en el modo de funcionamiento del modulo, cuando J~ste establezca comunicaccn can otros

dispositivos. .

Una vez preparadoel circuito de confiquraclcn del modulo Bluetooth KC-21, es necesario que se elaboren los comandos AT can la avuda de una interfaz. visual que emule un terminal no Inteligente; como por ejernplo, "Hyperterminal" de Windows.

PC

Terminal nolnteliqente

Figura 39. Conexkin clel mOdulo bluetooth hada el PC

Luego de iniciada la sesion de cornunlcaclon, se debera proceder a :ctivar el circuitb con su fuente de allmentacton: en ese instante, se puede apreciar en la pantalla un mensaje de enlace que enviara el modulo, una vez que se encuentre en estado activo.

Figura 40. PantaUa de confiquracion del modulo bluetooth

-.----~-

Ramiro Valencia B .

70

. . -.--------.~--.--~------ .. -----

.. ~ ...

.. .. .. ... ... .. ... .. ..

• ..

• ~.

I

· j

~-

,r1t:,:;

[X~R B85mTI·1\"~r Programacion AVli_:s

[I mensaje corresponde a que elmodulc se encuentra en modo de linea de cornandos paraser configumdo y que su direccion (BDAddress), es la que se encuentra en pantalla y consta de ~2 caracteresque son unlcos para cada disposltlvo Bluetooth enelmundo, haciendo una referenda ~lnaloga a 10 que sucede con las direcciones MACeh .ICiS tarjetas NIC de los pes.

EI proposito de estos 'comandos es cambiar algun aspecto en la configuracion del. modulo kC-ii, perc sena un poco extenso nombrarlos aqui, par ella enel CD adjunto se eneuentra.e' datasheet de los comandos que pueden ser usecos, 10 que se quiere con esta introducci6n es que el estudiante tenga en cuentaqus sony para que sirven los comandos. AT en un dlsposltivo cuatqutsra .

Rmn:~ro Valcnci« D.

71

OJ'j$

.r17n B"".oc"'A,, ProgramacionA; VR \

IA!m~~1 ~~

PROVECTO 14 "COMUNlCAC10N

MICROCONTROLAOORES"

SERIAL

ENTRE

Ya que I~ cornunlcaclon bloetooth es serial y transparente, se puede ernular una comun icaci6n directa entredos dtsposttlvos, como por ejernplo 2, microcontroladores. EI rnlcro transrnisor envia una seiial de cual pulsante fue preslonado y el mkro, receptor mostrara en un LCD dkha verlttcacion.

LC01

MICROCONtROLADOR TRANSMISOR

$regfile = "m8der,dat:' $crystal = 800.doOO $baud ~ 9600

Declare Sub EsperaO Ddrb.O =0 :Po·rtb.O = 1 Ddrb.i =.0 : Porl:b.l: = 1 Coofig Portc.O '" Output Ddrt.O = 1 : Portc.O = 1

'MICR.o A U$AR ESATMEGA8

'VELoctDAD DE TRANsMISION 9500 bps

'ENTRADAS PULL UP

'SALIDA PARA EL LED

-/

Uno. Alias Pinb.O Dos Alias Pinb.l

Do.

If Uno ~ a Then Print'T'

En(l If

'PRESIONADO PULSANTE

If Dos = 0 Then Print "2"

End If

'PRESIONAD.oPUJ.SANTE 2.

Toggle PorteO Waitms 200 Loop

Espera;

If Uno '= 0 Qr Dos= b Then

Ramiro Valencia B.

72

2

I

J

.. ... ..

~

.. .. ... .. ' .. ... ~ .. .. ... ... .. _.

.. ,.

waitms 200 Goto Espere End i:f Return

End

$i'egfjle ","mSdeLdat" 'MItRO A USAR [5 An'lEG/18

$.:;rystal ",. 8000000

$baud'" 9600

Confiq Portc.O '" Output Ddrc.O '" 1 ; pbrtc.O = i Config Lcd = 16 *. 2

i)im In_caracter As String" 1

On UrxcGetchar 'PARA INTERRUPCION SERIAL

Enable I nterrupts

Enable Urxc

Cis

Do

Toggle PorteD Waitms 100 Loop

Gettnar;

In caracter = II,keyO Select Case tn.ceracter

Case "1" 'cAso PULSANTE 1

Locate 1., 1

Lcd ""*-COM. SERIAL"* " Locate 2,1

Lcd ,; PULSANTE 1 " Case "2"

Locale 1 , 1 lcd"**COM. SERIAL"" Locate 2 ,1

Lcd" PULSANTE 2 " End Select

Return

End

'CASO PULSANTE '2

_ EJERCICIOS PROPUESTOS

1. Realizar'la comunicacion entre dos PC's, los euales tenqa como interface 2 microcontroladores. EI micro TX red be de .Ia cornputadera y codjflca 103 serial en MLT-3 y el micro RX decodifica lasefial I"!LT"3 yla envia 211 eiro PC.

'Dll!~

:;;,V'n "'''''''AYr Programacion AVR 's

4.13 RFID (Identification por Radio Frecuencie)

La tecnologfa RFID; es muy utilizada en identificacion de productos, reernplazando un poco 10 que son los codigos de barras. La ldentltlcaclon par radio frecuencia uttllza cociqos diferentes para cada una de las tarjetas que pueden ser leidas por un lector RF.

Dentro de este esquema, RFlO usa el protocolo de transrnlslon de datos WIEGAND 25 0 32, dependiendo de la identificadon de la tarjeta, que se supone que debe ser como la MAC de una Tarjeta de red de un Pc.

los sistemas RFID se clasifican dependiendo del rango de frecuencias que usen, Existen cuatro tipos deslsternas: de frecuencia baja (entre 125 6 134,2 KHz); de alta frecuenda (13,56 MHz); UHF 0 de frecuencia ultraelevede (868 a 956 MHz); y de microondas (2,45 GHz). Los sistemas UHf no pueden ser utilizados en todo el rnundo porque no existen reculaclones globales para 5U usa.

4013.1 Codigo WIEGAND

EI protocolo Wiegand es una transrnision serial bit a bit del c6digo RHD, que establece la transrnlslon de ceres (OL) y unos (lL), por 2 lineasseparadas, pero ' con duraclones preestablecldas, Es asi que cuando se transmite un il, 58 activa la linea respectiva durante 200us y luego vuelve al estado bejo durante 1/5ms. De iguell rnanera sucede cuando se transmite un OL, la diferencia 85 que e5 por diferente linea de datos.

En la siguiente figura S8 puede apreciar la transmislon de un cadigo en fundon del tiempo.

lL

200us

OL

Figura 41. Diagrama de tiernpos del codlqo Wiegand

De esta manera se podria decir que se envio el c6digo 101100010 mediante el protocolo wiegand.

Ramiro Valencia B.

74

------,-" -----,-,,-

f()C;>". :

)~YR·(lil~(Qm:AI,iI' ProgTom.((ciO"n.l1 V l? 's

Para que Is tecnoloqla RFlD funcione, son necesarlos tres elernentosbastcos: unaetiqueta electronics 0 tag, un lector de tags y una base de datos. Las etiquetas electronicas Ilevan un microchip mcoroorado Que elmacene el codigO' unico ldentiflcatfvo del produtto al que estan adherloas, EI lector envtauna serle de ondas de radiofrecuenciael tag, Que este cepta a treves de una pequef'ia antena. Estes ondas activan el microchip, que; mediante la microantena y la radioftecuencia, transmite al lector cual es el codigo uruco del articulo. En deflnitiva, un 'equipo lectorenvia una sefial de inrerroqecon aun conjunto de productos y estes respondenenviando cada uno sLl nurnero umco deIdentitlcadon. Poreste motlvo, S8 dice que' la ternoJogfa RFlO ss una tecnoloqfa deauto-identificaCion.

Una vez el lector ha reeibido el c6di90 unicn del producto.to transrmte a una base de datos, donde sehan almacenado previa mente las cararransncas del articulo en westi6n: recha de caduddad, material, peso, dimenSiones,etc. DQ este modose hace posible censu'tar la identidad de una msrcanoa en cunquar momenta y facilm~nte durante toda la cadena de surrurustro.

Figura 42. Diagrar1Ja de transrnision de datos mediante R,FID

Cuando se tienen las lectoras RFID, uno puede realizar la decoditleacion de los datos mediante un rnicrocontroledor, ya que ingresan las 2 llneas de datos y las transrorrnamos en un solo. codigo dentro del mlcrccontrolador.

~ EJERCICIOS PROPUESTOS

1. Realizar unacerraduraelectronlca queperrnita ingresar mediante tags RHD, prevlamente guardados en la memoria eeprom del .microccntrolador,

Rmniro Vah'ncia B

75

:DHS'

rlftW BWNOA'" Programacion AVlCs

.====="""""==9"""=======;'=======.----

4.14 ComLmicatiun I2C

La c:omJmicacion 12C, que esta irnplernentada en bascom, permlte reeltaar la configuracion mediante comandos 0 por cuadro de dialogdS al igual que el LCD, y sirve primordialmente, para realizar una 'cornunlcadon serial controlada y sincronlzada por un reloj maestro,

4.14.1 ConfigSda

SDA, eS Ilamada tamblen la Irnea de datos, par la cual el maestro envia petlciones de datos 0 de identflcaclonde'dlspoctlvoesclavo

Porejemp!o:

Config Sda = Porte.1

4.14.2Config Sci

seL, en este caso es una senal continua de datos, la cual permite que se mantenga el sincrorusrno en toda la red IZC.

Par ejemplo:

. . CoJ1fig Sci :;:: PortcO

Adernas es important'? acotar que se puede configurar dichos pines per medic deuncuadro de dlaloco en el menu Options, Compiler.

Figl)ra 43. Cuadro de dialoqo para cbnfigurar IZC med ia(lteBA5COM AVR

Ramiro Valencia B.

76

Esteprqyecto permite igualar un reloj en tiempo (Bal mediante 'e! Pc. EI reioj es externOI

.con ei1ntegrado D5130},. '

Leo!

$r';!gfi!s '" "msdef.da;" $<;rystal = 11059200 sbaud e 9600

$Iib "mcsbvte.lbx" $Hb "ds1307dack.lih"

'UBRERIA PMt,~ CODIGO REDUciDO 'LIBRER1A DEL LlS1307

Conflg Portb '" Output Dim Weekday tis By~e

'CONFIGURA PINES 12C Config Sda = Portc.l Config Sd = Portc.O

'CONFIGURA PIRECCIONE5 I2C DEL 051307- Const Ds1307w = &HDO

Canst Ds13D71' = &HDI

.,/

config Clocl, == User Dim Hora As String * 8 Diin Fecha As String *8

'RELOJ PDR liARDWARE

Print "DS 1307 "

Time$ '" "23:58:59" Date$ '" "11-13-02"

'A5ICNAFECHA Y HORA lNIC1AL

Print "Date Time: " ; pate$ ; " " ; Time$

Irrkio:

'Locate 1 , 1 Led Date$

Raoiiro Valencia J;.

77

,,,,,.

,:k?n "".,,,,,',, Programacion AVR 's

L~ca~e2, 1 led Time$

Print "Desea ajustar la hora"

Prilit"HORA:"

Input Hora

Print !'FECHA:"

Input Fecha

'AJUSTA FECHAY HORAMEDIANTE EL PC

Time$::: Hora Date$ = Fecha.

Ir:

LOCate 1 ; 1 L c d D,ate$ loca~e 2. , 1 led Time$ Wiiitm:i 100 Goto Ir

Goto.lnicio

'SUBRUTINA DE LA 116RERIA DEL OS1307

Getdatetime':

Iicstart

12cwbyte Ds1307w I2cwbyte 0

'I2CSlT DE INIClO

'MAESTRO ENVIA LA DIRE;CCION DE~ ESCLAVO 'DTRECCION DE INIGO

'JZCBIT DE INICIa

'MAESTRO ENVIA LA DIRE¢CION DEL ESCLAVO 'Se;UNDOS

'MINUTOS

'HORAS

'DIAS DE LA SEMflNA

'DIAS .

'MESES

12cstatt

12cwbyte Os1301.j- 12crbyte _s~ , Ack I2crbyte _min, Ack 12crbyte _hour, Ack I2cri:JyteWeekday, Ack Iicrbyte_day , Ack 12crbyte _mon'th, Ack 12cr.byte_year., Nack 12cstop,

_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedet:(_hour)

_day = Makedec(_day) : _month = Makedec{,;_month) : _year = Makedet(_year) Return

'ANIOS

'SETE" LA FEGHA INTERNAMENTE Setdate:

_day = Makebcd(_day) : _month = MakebcdLmonth) : _year = Makebcd{_yeilit)

I2.csta1t

I2cwbyte D.s;t307w I2cVilbyte 4 I2twbyte ~day I2cwbyte _month I;Zcwbyte _year I2cstop

Return

'sEnJ, LJ\ HORA lNTERr\IAi'lENTE Settime:

_sec:::: Makebcd(_sec): _inin = Makebcd(_min) : _hour = Makebcd(_hour)

I:2cstart .

HamiroJlalel1cia E'

L

78

J

Ilc;wbyte [ls13(iJ'~. 12.:;wbyto: I) I2ewbyte _sec I2cwbyte _min t'1.!;wbyte. _,_:I)pur I2t!:top

ReturI1

End

r-~--~~~~=-=---'---~~--"'-~-----~----~

~ EjERCICIOS pROPUESTOS

1, Realizar una cornunlcaclon 12C COil mernorias sertales zacxx, en las cuales se pueda grabar un dato inqresadc por tecla.do Y aparezca de nuevo en 1111 led cuando se haya apaqado el slstema,

[(alJ.'im ValcnciaB.

79

r .... o.£

:.*:·ti .""",'>r Programacion A VR's

!~~j

4.15 CONVERSORES Ace

Dentro de los. AVR's existen conversores Ana16gicos a Digital de.tu bits, los wales n05 slrven directamente para la conversion de una variable analogiC3, par ejernpio temperatura, voltaje, presion, etc.

En algunos casos no debemos olvidar que debemos acondkionar la serial analoqlca, para que esta sea amplificada y callbrada, antes de ingresar al microcontroladar.

Un detalle muy importante es que se debe activar el funcianamienta del ADC en el microeontrolador, 10 cual se reallza poniendo el pin (AVCC) a 5VI y el pin (AREF) a un voltaje de referenda para tener la escala adecuada.

Dentro de las instrucciones que se necesitan para activar el converser interno estan:

4.15.1 Config Adc

Sirve para configurar el ade intemo con referenda interne a externa. Ademas esta instrucci6ri va acornpafiada del tnicio del ADC (START ADC).

Par ejemplo:

Config Adc == Single J Prescaler '" Auto, Reference « Internal

Start Adc '

4.15.2 Geh1dc()

Esta lnstrucdon obtiene el valor ,digital a 10 bits de la entrada analoqlca, dependiendo en cual pin este conectada,

Por ejemplo:

B:::Getadc{l) (obtiene el valor digital del ADC 1)

Ramiro Valencia B,

flO

PROYECrO Hi "CONTROL DE CAUDAD DE AIRE"

EI siguiente provecto rnide principalmente 3 variables, temperatura, C02 y humedsd, que estan emulodos mediante potenciornetrcsque van a. Ips Abc' s, dependjendo de, los valores de las variables se cootroleun ventilador, humificador y calefactor; con el fin de tenet un arnblerite controlado por 105 set points que tarnbien pueden ser inqresodos.

PO~lo extenso del provecto, tantola slmulaciou y <:1' proqrama estan cletallados en el CD adjunto.

Ramira hileli,cia,'l, 81

D'~.'

'<P",l', B.;,tom,A',cr p " , " A' 'I1,R'

j\Vft ' rogramacum .r: s

PROYECTO 17 "CONTROL DE TEMPERATURA CON E;L LM35"

Es tmportante realizar un programa mas Simple, para su correcto entendlmlento, por esa parte, el prbyecto 17 presentaun medidor de temperatura con el sensor LM35., que se puadeobservar el un LCD.

LCD1

EMULA-OOR DE SENAl •

AHALOGICA

'HICROCONTROLADOR AUSAR ES ATMEGA 16 $regfile = "ml6def,dat"

'CRISTAL INTERNO DE OSCILACION DE 8 MHZ '$crysta I = 80'000QO

Config Lcd = .16 * 2, Config led bus :: 4

corifig Lcdpin = Pin, Db4 = Portc.Z ,OtiS'" Pol1c.3 , Db6 '" Port;:;.4 s Db? = Portc;S, Rs = Portc.O , E = Portc.i

Canst K = 5/1023 'RESOLUCION DEL CONVER50R DE 10 BITS

Canfig Adc = Single i Prescaler = Alito, Reference = Internal

StartAde ..

'EN ESTA VARIABLE SE folUESTRA LA TtMP. ACTUAL Dim Temp As Long

'V.f\RIABLES PARA EL Me DE TEMPERATURA DimAAs Word

Dim SAs Single

locate 1 , 1

Lcd" MEDIDOR DE " locate 2, 1

Lcd" TEMPERATURA " Wait2

Cis

Riiiniro Valencia R.

82

Do

1\~ Gilt,lfk{O) S:", A '" K :remp'" 5 *. to

Locate 1 t 1

lcd "MEDJOORCON U1135" Locate 2, 1

lcd "TEMP.= " ; Temp; "Qc. u Wilit 1

Loop

E;nd

Es irnportante anexar eJcircuito de calibraclon y amplificaci(Jn para el LM35, va que la sefial que emite dlcho sensor es mLiY pequena.

SALIDA AMPLlclC')I.D/\

POT. ,AlIBHACIQN

FlV1

":20k ",iExT ..

Figura 44. Conexion para ampliticacion de Lt~35

[ _ EJERCICIOS PROPUESTOS

1. Realizar un voltirnotro digital, el cual pueda ser visuallzado mediante comunlcacion serial en un pc.

__ • ,~_~ ~_ ~ ~ __ ~ • ~_:-_,_:__-o-~--.,........1

Ramiro Valencia :'H,

0'0$

:A~IRB"""'~'" Programacion AVE. '8

4,16 GlCD (LCD GRAFICO)

EI LCD grafico, perrnte vlsuallzar rnapas de bits, dentro de una dlmenslorr y resolution permltidas por dicho dispositive,

Dentro de BASCOM, existe un convertldor de imag~nes .bmp a .bgf, que sonnecesanas para ser vlsuallzadas enel GLCD. Paraello .debernos entrar en Graphic Converter, dentro del menu Tools.

Luego deellQapareCera un cuadro de dialogo, en el cual podrernos peqer 6 carqar la imagen .bmp (que puede ser creada en paint).

Una vez cargada .dicha lmaqen.rse la puede guardar, pera con extension .bgf, para que pueda serimportada desde bascom. .

./

Ramiro Valencia B.

84

... ..

...

..

~

..

..

..

..

"i

.. I

14 i

.. i

:: _~ .. '.i~t-

"'_--;"·-I ..

,.

".

..

e

.. !lie ..

';:':~!1··

~~:}li:_&'~~Qm-A\;r ProgramacionAr R's

Il'ROYECHl18 "VISUAUZACION EN GLCD 240x12S"

Este provecto perrnite visualizar en un GLCD de Z40x128, una imagen realizada en Paint y

que esirnp ortada 0 creada como se ind lea.en la teoria _. . .

$regfile '" "m16d~f_dat" $;cryst~ I = 8000000

'CONFIGURACION DEL GLCD

COllfig Graphlcd "' 240 " 128 , Dataporl: '" Porta'r C""tro!por'i: '" Porte r Ce ~ 2 , Cd " 3 , Wr ~ 0, Rd = 1 , Reset = 4 ,Fs· .= 5 , Mode ~.:g

'ELPUERTQ bE DATOS EST;\. EN EL A 'EL PUERTO D.E CONTROL ESTA EN t:L C 'POR EJEr'lI'LO CE ESTA EN ELPOP.TC2

'EL ~1ODO ESTA EN 8 QUE SIGNIFICA QUE SE DIVIDE AL GlCD EN 240/.8 ".30 COIJJf'lNAS

'BORPA tAPM)TALi-A

Cis

'BORPA st. CURSOR Cursor Off

Wait 1

Locate 1 , 1

Led "****G1ICROTEl* ****."

Locate 2 , 1 : LCd "Microconttoladores,. Redes y" Locate 3 r 1 : ltd. "y Telecomunicaciones" Locate 4 I 1 : L,cd "]6ARRA telf:062-640·670"

Wait 2 Cis Text

Test:

't~U::STFA ret. CPJlf'lCO CI\RGt,DO Ei'·IIA (.~RPETA showpk 0 r 32 , Plsatje .

Walt 2

==============================--~~-~

Cis Text

"MUESTRA EL GRAFltb CARGADO EN LA CARPErA Silowpic 0,32., Plaatje2.

Wait 2

End

Plaatje:

'W!POR1;A EL GRAFICO .BGF· $bgf "micro.bgf"

Plaatje2:

'IMPORTA ELGRAFICO .BGF $bgf "micro2,bgf'

,I

Rumiro Valenciag

86

=

EI PING de P8ra!lax, es uno de los sensores de ultrason'do mas conoocos del rnercado,

Ceneralrnente puede servirnos para epllceclones como medidoresdeniver y distances,

Para estes procesos antes era. necesario realtzar un oscllanor PlJerit~d.e Wier; para que g~nere 13 onaa que active el sensor transrnisor y 1118g0 un comparador, pard Dbtener el pulse dg respuesta desde el sensor receptor,

liO pin

Vss

Con este modulo, este. prOCeSO' puede ser obviadQ, ya quola circuiteria para [Limpli,. conestos objetivos, ya esta incQrporada dentro del mi~mo. ~ntanco~ coli este sensor rliLiy versatll, ahara. unlcamentees primordial enviar un pulse para el transrnlsor, realizer unconteo y reclblr un pulse de respuestade fin de conteo,

Ademas es importante conocer el principia fundamental de tundonarmento de este rnodulo, con 1;:'1 fin de reauzar una tOrivers!onexitosa oe la Variable a rnedlr,

tnut tmi['j
<S> <E7 tOO"'
'" 7
r+-: Figura 47. Djagrama detiert.pcsparael modulo de ultrasonido

tout ~ Es el tiernpo minima desalida para activar 121 tunclonamtento delsensor ultrasonico. (ttipico",Su5).

tmin ~ Es 121 tiempomfnimo de regreso para saber cual es la. dlstanoaentre uh objeto V 121 sensor ultrasonico. (tmiri",liSus equivalea 2cm).

tIna, ~ Es 121 tternpo maxtrnode regreso para saber cual es ladistanclaentre un objeto y elsertsor ultrasrmlco. (tmin=1.8rns equivale a 3m).

WI

Ramiro Vnlcncia H.

'PliS

,Xy~ B.'io,·iI.>r Programacion A VR's

Con este fin,es necesarlo conocer unas lnstrucdones que bascom nos facilita para el nianejQ de este modulo.

4.17.1 Pulseol,lt

Sirve para enviar pulses de salida por cualquier pin del mkrocontrolador, par periodos de ius! para una frecuencia deoscilaci6n de 4MHz.

Por ejernplo:

Poiseout Porl;b, 1; 6000 (Genera pulses de 6rtis porelpin B.l)

4.17.2Pulsein

Realiza el conteo en unidades de microsegundos, hasta . que suceda una transidcn positivao neqatlva par un pin de un puerto espedflco.

Par ejernplo:

Puls!";,in IN r Pinb s. 0 ,0 rRetQrna en la variable W, el conteo en microsegundos hasta que suceda una transicon de 0 ,q 1 por el pin B.O)

4.17.3 Bitwait

NoS sirve para crear un tternpo lndeflnldo de espera, dependlendo del estado actual en el que se encuentra LJn pin de un puerto.

Par ejemplo:

Bitwait Pinb.O ,Set (Espera en el rnlsrno punta nasta que el pinb.O ~steactivado lL)

.Romiro Valeru.iaB.

81l

FHOVECro 19 l'MEDIDOR DE DISTAJl(IAS"

Este proyecto permi\e vlsuallzar en un LCD !a distanelaproxima ~ un objeto y un.modulo uhrasonico PING,

LCD1

$reg'file", "rnsdef.dat'' 't,HCROCONTROLADOFZ ATMEGNJ

$crystal = 4000000 'CRISTAL DE 4MHz

Config Lcd = 15 * 2. 'CONFIGIJRACION DE LCD

Config Ltdbtis =4 , "

Config lCc:lpin = pin , Ob4 ~ Portel.2" , DbS ~ Portd) I Db5 .~ Portd. 4 , DO 7 = Portd,;S I Rs = Portd.O , E = Portd,l

Dim W As Word 'VARIABLE PAf!.A ~1EDIR EL TlEMPO

Dim WI As Single

Dim W2 As Single

Cis Do

PulseolJt Portb t 0 , 5 Bitwa it Pinb ,0 , Set Pulsein W , Pinb , ° r Q Wl ='l" W VI2=Wl/115

locate 1 , 1

l.cd " DISTANCIA

'PULSO DE SAUDA f\ SuS' PARA ;I.I,LTIVAR.LA TX DELPTNG '[SPERO QUE SEACTIliE UN 1 ENEL PIN

'REClBO ELTIEfJlPOENTRE PULSOS

'~IAGO UNA CbrNER:SlON.2ctJj~115u5

' ..

t.ocate 2, i Lcd WI ;' "(:~I

~·r .'

l-oop f:nd

4.:l.B DTMF

En telefonia, el sistema de marcacion par tonos, tamblen "amado sistema multifrecuencial o DTMF (Dual-Tone Multi-Frequency), consiste en 10 siguiente:

Cuando el usuario pulsa en el teclado de su telefono la tecla correspondiente 'al dfgito que quiere marcar, se envian dos tonos, de distinta frecuenoa: uno por .columna y otro par fila en la que este la tecta, luego la central descodltlca dicha tecla a traves de filtras especiales, detectando instanteneamente que dfgito se marco. Con DiMF podemos enviar tonos simHares a 105 de un telefono convendonal, Este proceso depende de cada una 'de las frecuencias que emiten los diferentes nurneros enviados par una linea telefonlca.

Dentro de un AVR, el pin de salida de estas frecuencias esel OC1A correspondiente a la temporlzaclon del TIMERl.

La precauoonque se debe tamar en cuenta es la conexon hacia ailinea teleronlca, va que posee voltajes rnuy altos can respecto af microcontrotanor

4.18.1 Dtmfout

Es fa principal lnstruccion que nos permite emitir los tones del nurnero a ser marcado,

Por ejemplo:

Dtmf "096296074", 50 (Emite las frecuencias para marcar el nurnero 096296074 can una duraci6n de 50h1s entre tonos).

Adernas es irnportante acotar, que se puede realizar el proceso dedsteccton de tones, mediante circuitos integrados convenclonales, como el MT88L70, el cual nos emite un codlqo binario de la tecla presionada. E:ste C.I puedeser usedo en varlas aplicaciones muy rentables, como par ejemplo tarifadores telef6nicos

para cabinas. /

Ramiro Valencia H

90

.J

_r;.ii;;; .

~~~\::.;F:'I$':Cm:r'ovr Programacicn A r'}~ IS

.i'!ROnCrc2t[1 'T1ARCADOR DE TELEFONO CON AVW

Eisiguiente proyecto posee un tedado mediante el cuel podernos presloriar los nurneros dsun ~elefono, para que puedan serenviados a traves de la linea \elefonica·.

L~01

$reg~i!e '" "1118defdat" $crystill =8oCioooo

'MrtRocONTROLADOP ATtv1tGM 'CRISTAL D~ 41",Hz

Declare S~b TetiadoO

Cpnfig Led =: 16*2: 'CONFH:;URACION DE LCD

CQnflglcdl:ms = 4

COllfig L<:~pin ea Pin:, Db4 = Portc.2 " Db5 = Porte .. 3 s Db6 = Portc,4 J Db? = Portc.5 I Rs = PorteD, E ~ Porte.1

Do;j.d "" &800001111 Po.rtd '" &811111111

iDEFINO AUAS AI. PUERTO 6 PARA EL TECLA DO Xl Alias Portd,Q

X2 Alias Portd.L

)<3 Alias Po.rtd.2

X4 Alias Portd.3

YI Alias Pind:4

Y2.Alias Pind.S

Y3 Alias Pind.6

~PUERTO D (OMO ENTflA.DA PULL UP

.Dim Tecla AS Elyte Dim! Ar; 1I1teger Enable Interrupts CIs

Locate 1, 1

Led " MARCADQR T~LF H lpc;;te 2 r 1

lcd" CON AVR'S. Wait 2

iC"ONTADOJ',.DE. rt:Ci_,\S

91

Ramiro Valencia }3.

·~8tf., !3a$(O~-AVr.' p - - ., A VR '

AVO" rugramaclOn . s

t[s

1=5 locate 1, 1 lcd "NUM: '.'

Do

Gosub Teclado

If Tecla < 10 Then 1= I + 1

Locate 1, I

Led Teda

Dtmfout Tecla, 50:

If I = 7 Then

If Tecla = 2 Then Locate L, 1

Ltd" PlCHINCHA

End If

If Tecla = J Then Locate 2,1

Lcd" AMBT/RIOB. ,; End. If

If Tecla = 4 Then Locate 2.,1

Lcd" GYQ!C05fA. End·It'

if Tecla = 5 Then Locate 2; 1

led" ZONA ORIENT. " End If

IfTecia =6 Then LocateZ, 1

tcd " ZONA NORTE. " EndU

If Tecla = 7 Then Locate 2 t 1

Lcd" ZONA AUSTRO." End If

If Tecla = B Or Tecla = 9 Then

'SAUDA. DE DATOS MUL nFRECUEN~IALESDrMF 'DETECCION DEL 2DO. NUMERO PARA LOCALIZAR LLAMADA

Locate 2, 1 Lcd" CElULAR. End If

End If EndU

If Tecl.a = 10 Then LocateI , 1

Lcd" NUEVA

Locate 2,·1 Lcd" LLAMADA Wait 1

':0;1 SE APLASTA * 51: VUE.LY.E A NUEVA LLAMADA

Cis

Locate 1 , 1 lcd "NUM: " 1=5

End If Loop

Ramiro Valencia B.

92

'$USRUTIiIlf\ lKLADO Teclado:

Teda'" 12 Xl == 0

Il'Y:I. = I) Then Tecla '" 1 If '(2 '" 0 Then TedO! =; 2 If '(3 = IJ Ti1en T~d<l .", 3 Xl = 1

'CERG EN LA f'ILA 1 Y DETECCION EN COlU~lNA

)(2 = 0

If V1 ... 0 Then Tecla·'" 4 IfV2 == 0 Then Tecla == 5 If Y3 = 0 Then Tecla = 6 X2= 1

'CERO EN LA FILA 2 Y DETECCION ENCO.LUfYINA

X3 = 0

If Yl =. 0 Then Tecla := 7 IfY2 = 0 Then Tecla = 8 If '(3 = 0 Then Tecla::: 9 X3 = 1

'CERG EN u~ FlU. 3 y DEn:CCION EN cow iVlNA.

X4 ~ 0

If V1 := 0 Then Tecla. == 10 IfY2 == 0 Then Tecla'" 0 If Y3 ee I.l Theil Tecl<J :::: li X4 ~ 1.

'CEIWEN LA mA'tY DETECCION EN COLUI'!INA

If Tecla < 12;T!len li\!ilitms 500

Else

End If

'RETARDO 51 NO HAY TECLA PRESIONAD/\

Return End

~. EJERCICIOS PROPUESTOS

1. Investlgar el uso del q. 1·1 T88 LO'7, para realizarun tarifador telefonico con un microcontrolador AVR. .

!JUS" ..

*~ ""mm~'" Programacion A VR's

4.19 Interrupciones externas

A igual que la lnterruption del portico serial nos proporciona ventajas para ejecutar un proqrama principal, la interrupcioh externa tarnblen permite ejecutar una subrutina solo Si se cumple 0 se detecta atqunaserial externa, ya

sea par el pin INTO 6 INTl. .

Para esto es necesarlo ejecutar instrucciones principalmente de cooflguracion, las cuales hacen que se activen la lnterrupclon.

4.19.1 On IntO

Slrve para activar una subrutlna espedfica, en caso de que se active la lnterrupcion externa O.

4.19.2 Enable interrupts

Sirve para activar todas las. interrupcianes activadas independientemente.

4.19.3 Enable IntO

Nos permite activar la lnterrupdon externa O.

Ramiro Valenria B.

94