apostila_cpic

192
Ap m Aprend plicaç micro nda de f ções ocont c forma s prát trolad omp simples microc Sa ticas dore putac s a grav ocontrola andro Juc de E s em ionai vação w ladores cá Eletrô m sist is wireless ônica tema s e via U a e s USB de e

Upload: renato-lopes

Post on 03-Jan-2016

187 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Apostila_CPIC

Apm

Aprend

plicaçmicro

nda de f

ções ocont

c

forma s

práttroladomp

simples microc

Sa

ticas dore

putac

s a gravocontrola

andro Juc

de Es emionai

vação wladores

Eletrôm sistis

wireless

ônicatema

s e via U

a e s

USB de e

Page 2: Apostila_CPIC

[ 2 ]

INTRODUÇÃO..................................................................................................................................................................6ASSEMBLY X LINGUAGEM C.........................................................................................................................................................6VANTAGENS X DESVANTAGENS DA LINGUAGEM C PARA MICROCONTROLADORES..............................8ARQUITETURAS DOS MICROCONTROLADORES..............................................................................................................8O CONTADOR DE PROGRAMA (PC).........................................................................................................................................9BARRAMENTOS.....................................................................................................................................................................................9A PILHA (STACK)..............................................................................................................................................................................10CICLO DE MÁQUINA.......................................................................................................................................................................10MATRIZ DE CONTATOS OU PROTOBOARD.....................................................................................................................11RESISTORES........................................................................................................................................................................................12CAPACITORES.....................................................................................................................................................................................13FONTES DE ALIMENTAÇÃO........................................................................................................................................................15PROTOCOLO DE COMUNICAÇÃO USB.................................................................................................................................16MÉTODOS DE COMUNICAÇÃO USB......................................................................................................................................16

FERRAMENTA DE GRAVAÇÃO VIA USB........................................................................................................182.1 GRAVAÇÃO DE MICROCONTROLADORES........................................................................................................192.2 GRAVANDO O MICROCONTROLADOR VIA USB NO WINDOWS.........................................................242.3 GRAVAÇÃO WIRELESS DE MICROCONTROLADORES...............................................................................272.4 SISTEMA DUAL CLOCK.................................................................................................................................................352.5 EMULAÇÃO DE COMUNICAÇÃO SERIAL NO WINDOWS..........................................................................352.6 GRAVANDO O MICROCONTROLADOR VIA USB NO LINUX...................................................................422.7 GRAVANDO O PIC VIA USB PELO TERMINAL DO LINUX OU MAC OSX.........................................432.8 SISTEMA DUAL CLOCK.................................................................................................................................................452.9 EMULAÇÃO DE COMUNICAÇÃO SERIAL NO LINUX....................................................................................452.10 PROGRAMA COM INTERRUPÇÃO EXTERNA POR BOTÃO E DO TIMER 1.....................................492.11 OBTENÇÃO DE UM VOLTÍMETRO ATRAVÉS DO CONVERSOR AD COM A VARIAÇÃO DE UM POTENCIÔMETRO............................................................................................................................................................................502.12 CIRCUITO COM84 PARA GRAVAÇÃO DO gerenciador.hex.....................................................................51

PERIFÉRICOS INTERNOS DO MICROCONTROLADOR.........................................................................533.1 CONVERSOR A/D.............................................................................................................................................................533.1.1 AJUSTE DE RESOLUÇÃO DO SENSOR E DO CONVERSOR AD DE 8 BITS.....................................543.1.2 AJUSTE DA TENSÃO DE FUNDO DE ESCALA COM AMPOP....................................................................543.1.3 AJUSTE DA TENSÃO DE REFERÊNCIA COM POTENCIÔMETRO..........................................................553.1.4 CONVERSOR AD DE 10 BITS....................................................................................................................................553.1.5 OBTENÇÃO DE UM VOLTÍMETRO ATRAVÉS DO CONVERSOR AD COM A VARIAÇÃO DE UM POTENCIÔMETRO............................................................................................................................................................................563.1.6 LEITURA DE TEMPERATURA COM O LM35 ATRAVÉS DO CONVERSOR AD................................573.1.7 TERMISTOR.........................................................................................................................................................................583.2 MEMÓRIAS DO MICROCONTROLADOR.............................................................................................................593.2.1 MEMÓRIA DE PROGRAMA..........................................................................................................................................593.2.2 MEMÓRIA DE INSTRUÇÕES......................................................................................................................................593.2.3 MEMÓRIA EEPROM INTERNA...................................................................................................................................603.2.4 MEMÓRIA DE DADOS (RAM)....................................................................................................................................603.2.5 EXEMPLO DE APLICAÇÃO...........................................................................................................................................613.2.5.1 CONTROLE DE ACESSO COM TECLADO MATRICIAL...........................................................................613.3 MODULAÇÃO POR LARGURA DE PULSO PELO CCP....................................................................................65CONTROLE PWM POR SOFTWARE DE VELOCIDADE DE UM MOTOR CC......................................................67

Page 3: Apostila_CPIC

INTERRUPÇÕES E TEMPORIZADORES.........................................................................................................68INTERRUPÇÕES.................................................................................................................................................................................68INTERRUPÇÕES EXTERNAS.......................................................................................................................................................69INTERRUPÇÃO DOS TEMPORIZADORES...........................................................................................................................70MULTIPLEXAÇÃO POR INTERRUPÇÃO DE TEMPORIZADORES............................................................................72

EMULAÇÃO DE PORTAS LÓGICAS...................................................................................................................735.1 INSTRUÇÕES LÓGICAS PARA TESTES CONDICIONAIS DE NÚMEROS..........................................745.2 INSTRUÇÕES LÓGICAS BOOLANAS BIT A BIT..............................................................................................745.3 EMULAÇÃO DE DECODIFICADOR PARA DISPLAY DE 7 SEGMENTOS.............................................785.4 MULTIPLEXAÇÃO COM DISPLAYS DE 7 SEGMENTOS...............................................................................84

COMUNICAÇÃO SERIAL EIA/RS-232............................................................................................................866.1 CÓDIGO ASCII...................................................................................................................................................................886.2 INTERFACE USART DO MICROCONTROLADOR............................................................................................886.3 COMUNICAÇÃO SERIAL EIA/RS-485....................................................................................................................90

ACIONAMENTO DE MOTORES MICROCONTROLADOS........................................................................90ACIONAMENTO DE MOTORES CC DE BAIXA TENSÃO..............................................................................................91MOTORES ELÉTRICOS UTILIZADOS EM AUTOMÓVEIS...........................................................................................91COROA E O PARAFUSO COM ROSCA SEM-FIM..............................................................................................................93CHAVEAMENTO DE MOTORES CC COM TRANSISTORES MOSFET....................................................................94EXEMPLO: SEGUIDOR ÓTICO DE LABIRINTO................................................................................................................95ESTABILIDADE DO CONTROLE DE MOVIMENTO.........................................................................................................95PONTE H................................................................................................................................................................................................99DRIVER PONTE H L293D.............................................................................................................................................................99SOLENÓIDES E RELÉS.................................................................................................................................................................100DRIVER DE POTÊNCIA ULN2803..........................................................................................................................................102PONTE H COM MICRORELÉS...................................................................................................................................................103ACIONAMENTO DE MOTORES DE PASSO.......................................................................................................................103MOTORES DE PASSO UNIPOLARES....................................................................................................................................104MODOS DE OPERAÇÃO DE UM MOTOR DE PASSO UNIPOLAR.........................................................................105ACIONAMENTO BIDIRECIONAL DE DOIS MOTORES DE PASSO......................................................................106SERVO-MOTORES...........................................................................................................................................................................106

FOTOACOPLADORES E SENSORES INFRAVERMELHOS....................................................................109TRANSMISSOR E RECEPTOR IR..........................................................................................................................................110AUTOMAÇÃO E DOMÓTICA COM CONTROLE REMOTO UNIVERSAL.............................................................111CODIFICAÇÃO DE RECEPTOR INFRAVERMELHO UTILIZANDO A NORMA RC5.......................................114ACIONAMENTO DE CARGAS CA COM TRIAC................................................................................................................118TRIACS E RELÉS DE ESTADO SÓLIDO..............................................................................................................................118DIMMER ANALÓGICO...................................................................................................................................................................118CONTROLE DIGITAL DE DISPARO DE UM TRIAC......................................................................................................119DIMMER DIGITAL COM CONTROLE REMOTO IR........................................................................................................124

LCD (DISPLAY DE CRISTAL LÍQUIDO)......................................................................................................128EXEMPLO: CONTROLE DE TENSÃO DE UMA SOLDA CAPACITIVA COM LCD...........................................131

MODELAGEM DE SINAIS DE SENSORES...................................................................................................134EXEMPLO: MODELAGEM DE UM LUXÍMETRO MICROCONTROLADO COM LDR......................................134SUPERVISÓRIO................................................................................................................................................................................137

INTERFACE I2C.......................................................................................................................................................141REGRAS PARA TRANSFERÊNCIA DE DADOS.................................................................................................................142MEMÓRIA EEPROM EXTERNA I2C.........................................................................................................................................145

Page 4: Apostila_CPIC

RTC (RELÓGIO EM TEMPO REAL)................................................................................................................147EXEMPLO: PROTÓTIPO DATALOGGER USB DE BAIXO CUSTO.........................................................................151

TRANSMISSÃO DE DADOS VIA GSM..........................................................................................................157COMANDOS AT PARA ENVIAR MENSAGENS SMS DE UM COMPUTADOR PARA UM CELULAR OU MODEM GSM.....................................................................................................................................................................................157COMANDOS AT PARA RECEBER MENSAGENS SMS EM UM COMPUTADOR ENVIADAS POR UM CELULAR OU MODEM GSM.......................................................................................................................................................158

O PROTOCOLO MODBUS EMBARCADO.....................................................................................................161MODELO DE COMUNICAÇÃO..................................................................................................................................................161DETECÇÃO DE ERROS.................................................................................................................................................................162MODOS DE TRANSMISSÃO......................................................................................................................................................162

INTRODUÇÃO À SISTEMAS OPERACIONAIS EM TEMPO REAL (RTOS)...................................167MÁQUINAS DE ESTADO..............................................................................................................................................................169

UTILIZANDO O COPILADOR C18 E A IDE MPLABX MULTIPLATAFORMA COM FUNÇÕES EM PORTUGUÊS.....................................................................................................................................................171

FUNÇÕES EM PORTUGUÊS.......................................................................................................................................................172FUNÇÕES BÁSICAS DA APLICAÇÃO DO USUÁRIO.....................................................................................................172FUNÇÕES DO CONVERSOR ANALÓGICO DIGITAL (A/D)......................................................................................177FUNÇÕES DA COMUNICAÇÃO SERIAL RS-232.............................................................................................................178EXEMPLOS DE PROGRAMAS....................................................................................................................................................179

APÊNDICE I: CABEÇALHOS DA FERRAMENTA PARA DIVERSOS COMPILADORES............186CCS C Compiler................................................................................................................................................................................186C18 compiler......................................................................................................................................................................................186SDCC......................................................................................................................................................................................................188MikroC....................................................................................................................................................................................................189Hi-Tech C Compiler........................................................................................................................................................................190Microchip ASM compiler..............................................................................................................................................................190

Page 5: Apostila_CPIC

Dedico este trabalho a Deus e à minha família.

Page 6: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 6 ]

INTRODUÇÃO

Um microcontrolador é um sistema computacional completo, no qual estão incluídos

internamente uma CPU (Central Processor Unit), memórias RAM (dados), flash (programa) e E2PROM, pinos de I/O (Input/Output), além de outros periféricos internos, tais como, osciladores, canal USB, interface serial assíncrona USART, módulos de temporização e conversores A/D, entre outros, integrados em um mesmo componente (chip).

O microcontrolador PIC® (Periferal Interface Controler), da Microchip Technology Inc.

(empresa de grande porte, em Arizona, nos Estados Unidos da América), possui uma boa diversidade de recursos, capacidades de processamento, custo e flexibilidade de aplicações.

ASSEMBLY X LINGUAGEM C

A principal diferença entre uma linguagem montada (como assembly) e a linguagem de programação C está na forma como o programa objeto (HEX) é gerado. Em assembly, o processo usado é a montagem, portanto devemos utilizar um MONTADOR (assembler), enquanto que em linguagem C o programa é compilado. A compilação é um processo mais complexo do que a montagem. Na montagem, uma linha de instrução é traduzida para uma instrução em código de máquina. Já em uma linguagem de programação, não existem linhas de instrução, e sim estruturas de linguagem e expressões. Uma estrutura pode ser condicional, incondicional, de repetição, etc...

As expressões podem envolver operandos e operadores mais complexos. Neste caso, geralmente, a locação dos registros de dados da RAM é feita pelo próprio compilador. Por isso, existe a preocupação, por paret do compilador, de demonstrar, após a compilação, o percentual de memória RAM ocupado, pois neste caso é relevante, tendo em vista que cada variável pode ocupar até 8 bytes (tipo double).

Para edição e montagem (geração do código HEX) de um programa em assembly, os softwares mais utilizados são o MPASMWIN (mais simples) e o MPLAB. Para edição e compilação em linguagem C (geração do código HEX), o programa mais utilizado é o PIC C Compiler CCS®.

Os microcontroladores PIC possuem apenas 35 instruções em assembly para a família de 12 bits (PIC12) e 14 bits (PIC16), descritas nas tabelas abaixo, e 77 instruções para a família de 16 bits (PIC18). A tabela abaixo mostra algumas instruções em assembly.

Page 7: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 7 ]

Figura 1. 1: Instruções em assembly.

Como pode ser visto, a família PIC16F (14 bits com aproximadamente 35 instruções)

não possui uma instrução em assembly que realize multiplicação ou divisão de dois operandos, o que curiosamente é presente na linguagem assembly da família MCS51 (256 instruções que satisfazem a maioria das aplicações industriais). Portanto, para realizar uma multiplicação, é necessário realizar somas sucessivas, ou seja, em vez de multiplicar uma variável por outra, realizar somas de uma variável em uma terceira área de memória, tantas vezes quando for o valor da segunda variável. (X * 5 = X + X + X + X + X).

Mas em linguagem C é possível se utilizar o operador de multiplicação (*), de forma simples e prática. Ao compilar, a linguagem gerada irá converter a multiplicação em somas sucessivas sem que o programador se preocupe com isso.

Page 8: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 8 ]

VANTAGENS X DESVANTAGENS DA LINGUAGEM C PARA MICROCONTROLADORES

- O compilador C irá realizar o processo de tradução, permitindo uma programação mais amigável e mais fácil para desenvolvimento de aplicações mais complexas como, por exemplo, uso do canal USB e aplicações com o protocolo I2C. - A linguagem C permite maior portabilidade, uma vez que um mesmo programa pode ser recompilado para um microcontrolador diferente, com o mínimo de alterações, ao contrário do ASSEMBLY, onde as instruções mudam muito entre os diversos modelos de microcontroladores existentes como PIC e 8051. - Em C para microcontroladores PIC, não é necessário se preocupar com a mudança de banco para acessar os registros especiais da RAM como, por exemplo, as portas de I/O e os registros TRIS de comando de I/O dos pinos, isto é executado pelo próprio compilador através das bibliotecas. - É possível incluir, de forma simples e padronizada, outro arquivo em C (biblioteca) para servir como parte do seu programa atual como, por exemplo, incluir o arquivo LCD (#include <lcd.c>), desenvolvido por você anteriormente. - O ponto fraco da compilação em C é que o código gerado, muitas vezes, é maior do que um código gerado por um montador (assembler), ocupando uma memória maior de programa e também uma memória maior de dados. No entanto, para a maioria das aplicações sugeridas na área de automação industrial, a linguagem C para PIC se mostra a mais adequada, tendo em vista que a memória de programa tem espaço suficiente para estas aplicações. - Outra desvantagem é que o programador não é “forçado” a conhecer as características internas do hardware, já que o mesmo se acostuma a trabalhar em alto nível, o que compromete a eficiência do programa e também o uso da capacidade de todos os periféricos internos do microcontrolador. Isso provoca, em alguns casos, o aumento do custo do sistema embarcado projetado com a aquisição de novos periféricos externos.

ARQUITETURAS DOS MICROCONTROLADORES

A arquitetura de um sistema digital define quem são e como as partes que compõe o sistema estão interligadas. As duas arquiteturas mais comuns para sistemas computacionais digitais são as seguintes:

- Arquitetura de Von Neuman: A Unidade Central de Processamento é interligada à memória por um único barramento (bus). O sistema é composto por uma única memória onde são armazenados dados e instruções; - Arquitetura de Harvard: A Unidade Central de Processamento é interligada a memória de dados e a memória de programa por barramentos diferentes, de dados e de endereço. O PIC possui arquitetura Harvard com tecnologia RISC, que significa Reduced Instruction Set Computer (Computador com Conjunto de Instruções Reduzido). O barramento de dados é de 8 bits e o de endereço pode variar de 13 a 21 bits dependendo do modelo. Este

Page 9: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 9 ]

tipo de arquitetura permite que, enquanto uma instrução é executada, uma outra seja “buscada” na memória, ou seja, um PIPELINE (sobreposição), o que torna o processamento mais rápido.

O CONTADOR DE PROGRAMA (PC)

O contador de programa é responsável de indicar o endereço da memória de programa para que seu conteúdo seja transportado para a CPU para ser executado. Na família PIC16F ele contém normalmente 13 bits, por isso, pode endereçar os 8K words de 14 bits (o PIC16F877A possui exatamente 8K words de 14 bits, ou seja, 14 Kbytes de memória de programa). A família 18F ele possui normalmente 21 bits e é capaz e endereçar até 2 Megas words de 16 bits (o PIC18F2550 possui 16K words de 16 bits, ou seja, 32 Kbytes de memória de programa). Cada Word de 14 ou 16 bits pode conter um código de operação (opcode) com a instrução e um byte de dado.

BARRAMENTOS

Um barramento é um conjunto de fios que transportam informações com um propósito comum. A CPU pode acessar três barramentos: o de endereço, o de dados e o de controle. Como foi visto, cada instrução possui duas fases distintas: o ciclo de busca, quando a CPU coloca o conteúdo do PC no barramento de endereço e o conteúdo da posição de memória é colocado no Registro de instrução da CPU, e o ciclo de execução, quando a CPU executa o conteúdo colocado no registro de instrução e coloca-o na memória de dados pelo barramento de dados. Isso significa que quando a operação do microcontrolador é iniciada ou resetada, o PC é carregado com o endereço 0000h da memória de programa.

Figura 1. 2: Memórias.

As instruções de um programa são gravadas em linguagem de máquina hexadecimal na memória de programa flash (ROM). No início da operação do microcontrolador, o contador de programa (PC) indica o endereço da primeira instrução da memória de programa, esta instrução é carregada, através do barramento de dados, no Registro de Instrução da CPU.

Um opcode (código de instrução), gerado na compilação em hexadecimal, contém uma instrução e um operando. No processamento, a CPU compara o código da instrução

Page 10: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 10 ]

alocada no registro de instrução com o Set de Instruções do modelo fabricado e executa a função correspondente. Após o processamento, o operando dessa instrução indica para a CPU qual a posição da memória de dados que deve ser acessada e, através do barramento de controle, a CPU comanda a leitura ou a escrita nesta posição.

Após o processamento de uma instrução, o PC é incrementado para indicar o endereço do próximo código de instrução (opcode), da memória de programa, que deve ser carregado no registro de instrução.

A PILHA (STACK)

A pilha é um local da RAM ( no PIC18F2550 é localizada no final dos Registros de Função Especial entre FFDh e FFFh) onde é guardado o endereço da memória de programa antes de ser executado um pulo ou uma chamada de função localizada em outra posição de memória.

CICLO DE MÁQUINA

O oscilador externo (geralmente um cristal) ou o interno (circuito RC) é usado para fornecer um sinal de clock ao microcontrolador. O clock é necessário para que o microcontrolador possa executar as instruções de um programa. Nos microcontroladores PIC, um ciclo de máquina (CM) possui quatro fases de clock que são Q1, Q2, Q3 e Q4. Dessa forma, para um clock externo de 4MHz, temos um ciclo de máquina (CM=4 x 1/F) igual a 1μs.

Figura 1. 3: Ciclo de máquina.

O Contador de Programa (PC) é incrementado automaticamente na fase Q1 do ciclo de máquina e a instrução seguinte é resgatada da memória de programa e armazenada no registro de instruções da CPU no ciclo Q4. Ela é decoficada e executada no próximo ciclo, no intervalo de Q1 e Q4. Essa característica de buscar a informação em um ciclo de máquina e executá-la no próximo, ao mesmo tempo em que outra instrução é “buscada”, é chamada de PIPELINE (sobreposição). Ela permite que quase todas as instruções sejam executadas em apenas um ciclo de máquina, gastando assim 1 μs (para um clock de 4

Page 11: Apostila_CPIC

MHz) e toque geramda memór

MATR

Para duilização dque é umeletrônicosfacilidade

Na centenas mediante eletricameDe cada laespaço livhorizontaisfigura aba

Aplicações p

rnando o sm “saltos” ria de prog

RIZ DE CO

desenvolvede uma Maa placa cos. A grandde inserçã

superfície de orifíciofios. Em

ente os comado da plavre no meis (pequenaixo.

práticas de Eletr

sistema muno contadrama e os

ONTATOS

er os projeatriz de Conom diversode vantageo de comp

de uma mos onde s

sua partemponentesaca, ao lonio da placaas fileiras)

rônica e microco

uito mais ror de progretornos d

OU PROT

etos e exentatos (ou os furos e em do Protponentes (n

Figura 1

matriz de csão encaixe inferior s inseridos ngo de seua e de cad), cada um

ontroladores em

[ 11 ]

rápido. As grama, comdessas fun

TOBOARD

ercícos proProtoboarconexões

otoboard nanão necess

1. 4: Prot

contatos hxados os

são instana placa q

u comprimeda lado de

m com 05

m sistemas comp

únicas exemo chamações.

D

opostos nerd em inglêcondutora

a montagesita soldag

toboard.

á uma bascomponen

alados conque são orgento, há desse espaçorifícios d

putacionais, por

eções refedas de fun

ssa apostiês), mostraas para moem de circem).

se de plásntes ou tantatos metganizados uas colunaço há váride acordo

r Sandro Jucá

erem-se às nções em

ila será neada na figuontagem dcuitos eletr

stico em quambém potálicos quem colunaas completios gruposcomo é ilu

instruçõesoutro loca

ecessário aura abaixode circuitosrônicos é a

ue existemor ligaçõese interliga

as e canaistas. Há ums de canaisustrado na

s al

a , s a

m s a .

m s a

Page 12: Apostila_CPIC

Em Para fazermenor é a

RESIS

Os um resisto

Aplicações p

Fig

alguns por isso utiliza corrente e

STORES

resistores or específic

práticas de Eletr

gura 1. 5:

ontos do cizamos um elétrica qu

geralmentco, compar

rônica e microco

Contatos

rcuito é necomponen

e passa nu

te são feitoramos ele c

ontroladores em

[ 12 ]

s internos

ecessário lnte chamaum condut

os de carbocom a segu

m sistemas comp

s de uma

imitar a inado resistoor.

ono. Para uinte tabel

putacionais, por

protoboa

ntensidade or. Quanto

identificar a:

r Sandro Jucá

ard.

da corren maior a r

qual a res

te elétricaresistência

sistência de

. ,

e

Page 13: Apostila_CPIC

CAPA

Capelétrico. coplacas sãoutilizados computadopara compporte.

A fuabsorvend

Aplicações p

CITORES

pacitor ou onsistem eo condutor

desde aores, até cpensar a re

unção maido os picos

práticas de Eletr

Figura 1

S

condensaem dois eleras e são armazenar corrigir o faeatância in

is comum s e preench

rônica e microco

1. 6: Códi

dor é um etrodos ou

separadasbits na

ator de potndutiva pro

é filtrar ruhendo os v

ontroladores em

[ 13 ]

igo de cor

componeplacas que

s por um as memórtência de iovocada po

uídos em cvales de te

m sistemas comp

res de res

ente que ae armazenisolante o

rias volátndústrias for bobinas

circuitor elensão. Os

putacionais, por

sistores.

armazena nam cargasou por umteis dinâmfornecendoe motores

létricos e ecapacitore

r Sandro Jucá

energia ns opostas.

m dielétricomicas (DRo reatâncias elétricos

estabilizar es descarre

um campoEstas duas

o. Eles sãoRAM) dosa capacitiva

de grande

as fontesegados são

o s o s a e

, o

Page 14: Apostila_CPIC

um curto eCC.

Os são utilzacarregam toda a capode tornatambém eenergizada

As (nF) e Picabaixo, os

A fig

A fig

Aplicações p

e carregad

capacitoreados tambo capacitorga no buar um capem paralelas possam Unidades

cofarad (pFs cerâmicos

gura abaix

Fig

gura abaix

práticas de Eletr

dos abrem

Figura

es podem sbém no flor do flash

ulbo do flapacitor grano com movencer a ide MedidaF). Os caps e os de p

Figur

xo mostra a

ura 1. 9:

xo mostra a

rônica e microco

o circuito,

1. 7: Form

ser carregalash eletrôh durante sh quase nde e carrotores elétinércia quaa de capacacitores m

poliéster.

ra 1. 8: Ex

a identifica

Cálculo d

a identifica

ontroladores em

[ 14 ]

, por isso

ma de on

ados e desônico em vários segque instan

regado exttricos paraando os mocitância sã

mais comun

xemplos d

ação de cap

demonstra

ação de cap

m sistemas comp

são utiliza

nda de cap

scarregadouma câm

gundos, e ntaneamentremamenta fornecer otores são o Farad (Fns são os

de Capaci

pacitores c

ativo de c

pacitores d

putacionais, por

dos també

pacitor.

os muito ramera fotog

então o cnte gerandte perigosoenergia pligados.

F), Microfaeletrolítico

tores.

cerâmicos.

capacitân

de poliéste

r Sandro Jucá

ém para is

apidamentgráfica, oncapacitor ddo o alto bo. Eles sãopara que a

arad (μF), os, lstrados

ncia.

er.

olar fontes

te, por issonde pilhasdescarregabrilho. Istoo utilizadosas bobinas

Nanofarads na figura

s

o s a o s s

d a

Page 15: Apostila_CPIC

FONT

As baterias reAs bateriana forma d

A cmultiplicaçhora (1 Ah(não recaristo leva apodem serlimite redu

As baté 10,5V tempo queComo o cdescarga m100Ah. Decom tensãhoras, qua

Oute vida útil T=20°C, q

1.12.

Em na transiçevento, po(Debounci

Aplicações p

Fig

TES DE AL

fontes mecarregáves ou pilhasde energiacapacidade ção da corh= 3600 Crregáveis),ao final prr descarreguz a vida úbaterias di(tensão de

e deve ser comportammenor seráeve-se falaão de corteando a battro fator imdependem

que é a tem

RUÍDO (Boperaçõesão que, caode provocing) são vi

práticas de Eletr

ura 1. 10

LIMENTAÇ

ais comuneis ou convs são dispo elétrica. de armaz

rente de dCoulombs), as bateriematuro dgadas, chatil da bateitas 12V, pe corte), qmedido co

mento das á a autono

ar, por exee 10,5V. Eeria irá ati

mportante ém dela. Usumperatura

BOUNCINs de Liga/Daso uma icar várias a software

rônica e microco

: Código d

ÇÃO

ns em sisversores CAositivos qu

zenamentodescarga p. Deve-se as recarre

da vida da amado de tria.

por exempluando 100omo autonbaterias n

omia e a cemplo, em sta bateriangir 10,5Vé a temperualmente aideal para

NG) E FILT

Desliga e mnterrupçãointerrupçõ

e, program

ontroladores em

[ 15 ]

de cores C

stemas emA-CC comoue armazen

o de energpelo tempo

observar egáveis não

bateria. Ntensão de c

lo, devem 0% de sua omia da banão é linecapacidadeuma bate

a permitiráV. ratura de oas informamaximizar

TRO (DEBmudança do esteja haões ou conmando um t

m sistemas comp

Capacitor

mbarcados o carregadonam energ

gia de umao de autonoque, ao coo podem sNa verdadecorte. Desc

operar decapacidadateria. ar, isto é,

e, não é coria 100Ah

á descarga

operação dações são fr a vida úti

BOUNCINe nível lógabilitada otagens. Astempo (em

putacionais, por

res Poliés

com micores de celia química

a bateria éomia, sendontrário daser descare elas têmcarregar a

13,8V (tede terá sido

, quando morreto falarpadrão de de 100 /

da bateria,fornecidas il.

NG)

ico, surge u até mess formas m

m torno de

r Sandro Jucá

ster.

crocontrolalulares.

a e a torna

é medida do dado emas bateriasrregadas a

m um limite bateria ab

ensão a pleo utilizada,

maior a cr em uma e descarga20 = 5A d

, pois sua csupondo T

um ruído smo um comais comun

100ms, de

adores são

a disponíve

através dam ampére-s primáriasaté 0V poise até ondebaixo deste

ena carga), e é este o

orrente debateria de

a 20 horasdurante 20

capacidadeT=25°C ou

(Bouncing)ontador dens de filtroependendo

o

el

a -s s e e

, o

e e , 0

e u

g) e o o

Page 16: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 16 ]

da chave) após as transições, de modo a eliminar o ruído antes de efetuar uma instrução, ou via hardware, utilizando um capacitor de filtro em paralelo com a chave.

Figura 1. 11: Ruído.

PROTOCOLO DE COMUNICAÇÃO USB

A USB, sigla para Universal Serial Bus, é o padrão de interface para periféricos externos ao computador provavelmente mais popular dos já criados. Um sistema USB é composto por hardware mestre e escravo. O mestre é chamado de host e o escravo denomina-se dispositivo ou simplesmente periférico. Todas as transferências USB são administradas e iniciadas pelo host. Mesmo que um dispositivo queira enviar dados, é necessário que o host envie comandos específicos para recebê-los.

A fase de preparação, conhecida como enumeração, acontece logo depois de quando o dispositivo USB é fisicamente conectado ao computador. Nesse momento, o sistema operacional realiza vários pedidos ao dispositivo para que as características de funcionamento sejam reconhecidas. O sistema operacional, com a obtida noção do periférico USB, atribui-lhe um endereço e seleciona a configuração mais apropriada de acordo com certos critérios. Com mensagens de confirmação do dispositivo indicando que essas duas últimas operações foram corretamente aceitas, a enumeração é finalizada e o sistema fica pronto para o uso.

MÉTODOS DE COMUNICAÇÃO USB

Os métodos mais comuns de comunicação USB, também utilizados pela ferramenta SanUSB, são:

Human Interface Device (HID) - O dispositivo USB é reconhecido automaticamente pelo sistema operacional Windows@ ou linux como um Dispositivo de Interface Humana (HID), não sendo necessário a instalação de driver especiais para a aplicação. Este método apresenta velocidade de comunicação de até 64 kB/s e é utilizado pelo gerenciador de gravação da ferramenta SanUSB no linux. Mais detalhes na video-aula disponível em http://www.youtube.com/watch?v=h6Lw2qeWhlM .

Communication Device Class (CDC) – Basicamente o driver emula uma porta COM, fazendo com que a comunicação entre o software e o firmware seja realizada como se

Page 17: Apostila_CPIC

fosse umabidireciona14,4 kB/shttp://wcomunicaçhttp://w

Mass armazenamapenas peutilizado pferramentaMais http://w

Como computadode disposclasse de (MSD). Casistemas ocompatíve

NosPIC USB comunicaçno Linux edriver no s

Aplicações p

a porta de al com velos. Mais de

www.youtução

www.youtu

Storage mento emela própriapor pen-da SanUSB

detalhwww.youtu

foi visto,or enumeritivos comdispositivoada uma operacionael com uma

s sitemas oé o CDC, ção via pore o HID nsistema op

práticas de Eletr

comunicaçocidade deetalhes emube.com/

ube.com/

Device m massa q

a velocidarives, scpara comhes ube.com/, a comunra os dispo

mumente aos de comudessas cl

ais. Portanta dessas cl

Figur

operacionapor uma

rta serial, no Windowperacional p

rônica e microco

ção serial e comunicam uma ap/watch?v

bidirecio/watch?v

(MSD) -que permitade do bacanners, câunicação c

na /watch?vnicação Uositivos USassociados unicação (asses já to, se adeasses, não

ra 1. 12: D

is Window razão simo que torn

ws@ são napara que o

ontroladores em

[ 17 ]

padrão. É ação é de plicação Wv=KUd1Jkonal

v=cRW99T

Método te alta vearramento âmeras dicom softwa

videv=Ak9RAlUSB é basSB conecta

a USB: d(CDC) e dipossui umquarmos o

o haverá ne

Drivers e

ws@ e Linuxmples, os na o proceativos, ou

o PC reconh

m sistemas comp

o métodoaté 115 kb

Windows@ kwGJNk

T_qa7o.

customizalocidade dUSB 2.0

igitais. Foiare de supeo-aula 2YTr4.

seada em dos a ele.

dispositivosspositivos

m driver imo firmwareecessidade

comunica

x, o modo programa

esso ainda seja, não

heça o disp

putacionais, por

o mais simpbps, ou sej

com prote em u

no

ado para de comuni

(480 Mbpi utilizado pervisão p

dis

uma cen Existem

s de interfde armazemplementae de nossoe de implem

ação.

mais fácil as para PC

mais simpé necessá

positivo.

r Sandro Jucá

ples de coja, aproximtocolo Mouma apli

dispocação USBps). Este

juntamenrogramado

sponível

ntral (hosttrês grandface humaenamento ado na mo dispositivmentar um

de comunCs são baples. O mário instala

omunicaçãomadamenteodbus RTUicação de

Linux

sitivos deB, limitadométodo é

nte com ao em Java

em

t), onde odes classesana (HID)em massa

maioria dosvo para se

m driver.

nicar com oaseados naétodo CDCar nenhum

o e U e x

e o é a .

m

o s , a s r

o a C m

Page 18: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 18 ]

FERRAMENTA DE GRAVAÇÃO VIA USB

O sistema de desenvolvimento SanUSB é uma ferramenta composta de software e hardware básico da família PIC18Fxx5x com interface USB. Esta ferramenta livre se mostra eficiente no desenvolvimento rápido de projetos reais, pois não há necessidade de remover o microcontrolador para a atualização do firmware. Além disso, esta ferramenta se mostra eficaz no ensino e na difusão de microcontroladores, bem como em projetos de eletrônica e informática, pois todos os usuários podem desenvolver projetos reais no ambiente de ensino ou na própria residência sem a necessidade de um equipamento para gravação de microcontroladores. Além disso, o software de gravação de microcontroladores USB é multiplataforma, pois é executável no Windows@, Mac OSX e no Linux e também plug and play, ou seja, é reconhecido automaticamente pelos sistemas operacionais sem a necessidade de instalar nenhum driver. Dessa forma, ela é capaz de suprimir:

Um equipamento específico para gravação de um programa no microcontrolador; conversor TTL - RS-232 para comunicação serial bidirecional, emulado via USB pelo

protocolo CDC, que permite também a depuração do programa através da impressão via USB das variáveis do firmware;

fonte de alimentação, já que a alimentação do PIC provém da porta USB do PC. É importante salientar que cargas indutivas como motores de passo ou com corrente acima de 400mA devem ser alimentadas por uma fonte de alimentação externa.

Conversor analógico-digital (AD) externo, tendo em vista que ele dispõe internamente de 10 ADs de 10 bits;

software de simulação, considerando que a simulação do programa e do hardware podem ser feitas de forma rápida e eficaz no próprio circuito de desenvolvimento ou com um protoboard auxiliar.

Além de todas estas vantagens, os laptops e alguns computadores atuais não apresentam mais interface de comunicação paralela e nem serial EIA/RS-232, somente USB. Como pode ser visto, esta ferramenta possibilita que a compilação, a gravação e a simulação real de um programa, como também a comunicação serial através da emulação de uma porta COM virtual, possam ser feitos de forma rápida e eficaz a partir do momento em o microcontrolador esteja conectado diretamente a um computador via USB.

Page 19: Apostila_CPIC

UtilCompetiçãda Feira Categoria TecnológicCategoria lugar em ie Cultura d

2.1 GRA

A tratravés deefetuar a de qualquePara que tsomente uUSB Gerentambém énovos prog

Cassuporte adisponível i586-s.hthttp://w

ParanecessárioExistem di

Aplicações p

izando estão de RobóBrasileira Engenhari

ca na FerSupraniveinovação ndo Ceará n

AVAÇÃO

ransferênce um harddescarga der PC. todas essauma vez, cnciador.he

é possível bgramas: hso o compu programaem: http

tml www.java.

a que os po compilá-iversos com

práticas de Eletr

Figu

ta ferrameótica do IFde Ciênciia (2009), ria Explorael do Foro na Semantena categori

DE MICRO

cia de progdware de de program

s funcionacom um grex disponívbaixar periottp://wwutador ainas executáp://www

ou.com/pt_programaslos, ou sempiladores

rônica e microco

ra 2. 1: G

nta, estudFCE (2007, as e Engecomo tam

a 2009 emInternacioec 2011 doia robótica

OCONTRO

gramas pagravação

mas para o

lidades sejravador esvel na pasodicament

ww.4shareda não o táveis dese

w.4sharedu BR/down

s em C poseja, transfos que pode

ontroladores em

[ 19 ]

Gravação d

antes fora 2008 e 20enharia (F

mbém obtivm Medelinnal de Cieo IFCE e ca educacion

OLADORE

ra os micrespecífico

o microcon

jam possívspecífico pasta complete as atualied.com/fitenha o apenvolvidos

d.com/fileatra

nload/massam ser gormá-los eem ser util

m sistemas comp

do PIC via

am três ve009) na caFEBRACE09veram Prêmn na Colôencia e Ingampeões nnal em 201

ES

rocontrolado. Através ntrolador d

veis, é neceara PIC, o

eta da ferrizações deile/sIZwBplicativo Jas em Javae/WKDhQvés

anual.jsp.gravados nem linguaglizados por

putacionais, por

a PC.

zes consecategoria Lo9) da USPmio de Inoômbia e fgeniería 20na V Feira 11.

dores é nodesta fer

diretament

essário gra gerenciadamenta nossa ferram

BP4r/100ava JRE oua, baixe aQwZK/jre-

do

no microcogem de mr esta ferra

r Sandro Jucá

cutivas camocalização,P em Sãoovação emforam Cam010 no ChiEstadual d

ormalmentrramenta, te de uma

avar, anterdor de grao link ab

menta e a i0727SanUu SDK insta Versão W-6u21-Wio

ontrolador áquina heamenta, e

mpeões da campeões

o Paulo nam Aplicaçãompeões nale, terceirode Ciências

e efetuadaé possíveporta USB

riormente evação pelaaixo, ondenclusão de

USB.htmltalado paraWindows@indows@-

link

via USB, éexadecimalntre eles o

a s a o a o s

a el B

e a e e

a @ -:

é . o

Page 20: Apostila_CPIC

SDCC, o disponíveisutilizados pasta de dde suhttp://w

As vtenham sidNeste casnovo sourc

CasGerenciadodentro da(C:\Arquivmontado e

Fig

Para um m

Aplicações p

C18, o Hs para emcom bom

desenvolvimporte

www.4shaversões 4 do testadao, é recom

rce file. so grave orPlugandP

a pasta Exvos de proem protobo

ura 2. 2:

microcontro

práticas de Eletr

Hi-Tech e ulação serrendiment

mento, é oa USB

ared.com/deste com

as algumasmendado c

no microPlay.hex, xemploseBogramas\P

board é mos

Esquemá

olador de 4

rônica e microco

o CCS. Drial, diversoto, além do CCS na vB pod/file/Mo6mpilador aps versões ecriar, para

controladonão esque

BibliotecasCICC\Driverstrada a se

ático de m

40 pinos, o

ontroladores em

[ 20 ]

Devido à dos periféric

do C18, coversão 3.24e ser

6sQJs2/10presentam

e funcionara cada firm

or o novoeça de colCCS localizrs ). A reeguir:

montagem

o circuito é

m sistemas comp

didática dacos e mult

om exempl45. Esta ve

obtida00511Com

m bugs em ram satisfamware (pro

o gerencialar o novozada na pepresentaçã

m da Ferra

mostrado

putacionais, por

as funçõestitasking, uos de aplicersão funca atrampilador.

funções etoriamenteograma a

ador de o arquivo pasta instaão básica

amenta pa

abaixo:

r Sandro Jucá

s e biblioum dos cocação disp

cional com avés dhtml . e aplicaçõee até a verser comp

gravação cabeçalho alada do cdo circuit

ara 28 pin

otecas USBmpiladoresponíveis nabibliotecaso link

es, emborarsão 4.084pilado), um

pela USBSanUSB.h

compiladoto SanUSB

nos.

B s a s :

a .

m

B h r B

Page 21: Apostila_CPIC

j

Fig

Os com 1 m 1 cr 2 ca 2 ca 3 le 1 re 1 d 1 C

NotcompatívLinux e desenvolbotão de alimentar simples fioaceso) e qjump), encompilado

O cmicrocontr(+5V) do co D- é am19 e 20 eporta USB direto no cortá-lo, e

Aplicações p

ura 2. 3:

mponentes microcontroristal de 20apacitores apacitores eds e 3 resesistor de 2iodo qualqabo USB q

te que, esvel com oMac OSX

lvimento reset, no o microco

o, o microque, após ontra em Eo. cabo USB arolador nocabo USB

marelo ou be dos barra

do compuprotoboard

em um pro

práticas de Eletr

Esquemá

básicos doolador da f0MHz; de 22pF; de 1uF (u

sistores de 2k2 e um b

quer entre qualquer.

ste sistemo softwarX, pode de micropino 1, co

ontrolador,ocontroladoo reset comEstado pa

apresenta os pontos é vermelho

branco. Notamentos vutador. Parrd, com fiotoboard o

rônica e microco

tico de m

o circuito sfamília PIC

m no pino390 (só é botão ou fio +5V e o

ma multipre de gra

e ser impocontrolaomo botão com o p

or entra emm o pino 1 ara Operaç

normalmemostradoso, o Gnd (te que a fovermelho (ra ligar o cos rígidos ou numa p

ontroladores em

[ 21 ]

montagem

são: C USB (18F

o 14 Vusb necessárioio para grao pino Vdd

iplataformavação HIplementadadores PI de gravaç

pino 1 no m Estado no Vcc (+ção do p

nte quatros na figur(Vusb-) é monte de ali(+5V) e azcabo USB n

soldados,placa de c

m sistemas comp

m da ferra

F2550, 18F

e outro eno um led coavação no d;

ma (WindHID USB d

do tambéIC com inção via USGnd (0V),para Grav

+5V atravéprograma

o fios, que ra acima, marrom ouimentação zul (Gnd) no circuito

como tamcircuito imp

putacionais, por

menta pa

F2455, 18F

tre o +5V om resistopino 1;

dows@, Lda Microcém em qinterface SB. Ao con, através d

vação via Us do resistaplicativo

são coneconde norm preto, o Ddo microcdo circuitoé possível

mbém é popresso, uti

r Sandro Jucá

ara 40 pin

F4550, etc

e o Gnd ) r no pino B

Linux e Mchip tambqualquer USB, poi

nectar o cado botão USB (led ntor fixo de

(firmware

ctados ao malmente,D+ é azul controladoro provem cortá-lo e

ossível conilizando um

nos.

.);

; B7);

Mac OSX),bém paraplaca des utiliza oabo USB eou de um

no pino B72K2 sem o

e) que fo

circuito doo fio Vcc

ou verde er nos pinosda própriaconectá-lo

nectar semm conecto

), a e o e m 7 o oi

o c e s a o m r

Page 22: Apostila_CPIC

USB fêmeado microcUSB esteja

A ficircuito anterminal écorrespond

É imcircuito dealimentaçã

Cassistema dealimentaçãA figura aesta ferramo sistema de circuitocontato co

Se abaixo, em

Aplicações p

a. O diodoontroladora polarizadigura abaixnterior e aé conectadentes do

Figura 2.

mportante esta ferraão que vemso o sisteme aquisiçãoão externabaixo mosmenta compronto pa

o impressoom o grupo

preferir com folha ap

práticas de Eletr

o de proteçr serve parda de formaxo mostra posição d

ado diretacado USB.

. 4: Esque

salientar qamenta dem da USB, ma microcoo de dado, que pode

stra o PCB,m entrada ra um apreo da ferramo SanUSB a

Figura

onfeccionapropriada,

rônica e microco

ção colocadra protegea inversa.a ferrame

de cada temente no.

ema mont

que, para eve conterou seja, co

ontrolado ss ou um ce ser uma disponívepara fonteendizado mmenta Sanatravés do

a 2. 5: Esq

ar a placa,corroer, f

ontroladores em

[ 22 ]

do no pinoer contra c

enta SanUerminal no os pinos

tado em p

o perfeitor um capolocado enseja embacontrole debateria co

el nos Arque de alimenmais rápidonUSB, com e-mail: sa

quema mo

, é possívfurar (pon

m sistemas comp

o 20 entre corrente re

USB montaconector

do microc

protoboar

o funcionampacitor de ntre os pinorcado come acesso, emum de 9Vuivos do Gntação exto, é possív

mo a foto anusb_laes

ontado em

vel tambémtos marro

putacionais, por

o Vcc da eversa cas

ada em proUSB a ser

controlador

rd e conec

mento da filtro ent

os 20 (+5Vmo, por exeele necessV ou um crupo SanUerna. Para

vel tambémda placa a

se@yahoo.

m PCB.

m imprimirns) e sold

r Sandro Jucá

USB e a aso a tensão

rotoboard sr ligado nor pelos q

ctor USB.

gravação tre 0,1uf V) e 19 (Gemplo, umsita de umcarregador USB, e o cia quem de

m encomenabaixo, encom.br .

r o PCB (dar os com

limentaçãoo da porta

seguindo oo PC. Cadaquatro fios

.

via USB, oe 1uF nand).

m robô, uma fonte dede celularrcuito paraeseja obtendar placasntrando em

(em preto)mponentes

o a

o a s

o a

m e . a r s

m

) .

Page 23: Apostila_CPIC

Mais http://wvideo disp

Para

comunicaçwww.tiny

DurC, a biblExemploseinstalada dinstruçõeshabilitaçãooscilador eatravés de

Como temporizadum led con

-------------#include < void main( clock_int_4para CPU) while (1)

Aplicações p

www.4shaonível em:

a obter vção e alimyurl.com/

rante a proioteca cabeBibliotecado compilas do PIC1o do sistemexterno de

e prescaler

a frequêdores corrnectado no

-------------<SanUSB.h

()

4MHz();//F

práticas de Eletr

ared.com/: http://w

Figura

vários promentação /SanUSB

ogramaçãobeçalho SsCCS e q

ador ( C:\A18F2550 pma Dual Cloe 20 MHzr multiplica

ência do responde ao pino B7 a

-------------h>

Função nec

rônica e microco

/get/ithqwww.yout

2. 6: PCB

gramas-fovia USB, e clicar no

o do microcSanUSB (#que você jArquivos depara o sisock, ou sej

para gerdor de freq

oscilador a um microa cada 0,5

-------------

cessária pa

ontroladores em

[ 23 ]

detalhes Lbiq/Fazetube.com

B da Ferra

nte e vídbasta se

o item Arqu

controlado#include <á adicionoe programastema opja, osciladorar a freququência.

interno rossegundosegundo.

-------------

ara habilita

m sistemas comp

endoPCBtm/watch?v

amenta Sa

deos destee cadastrauivos.

r basta ins<SanUSB.hou dentro as\PICC\Deracional, or RC interuência de

é de 4 o. O progr

-------------

ar o dual c

putacionais, por

termico.hv=8NhNs

anUSB.

e sistema ar no gru

serir, no inh>) contidda Driversrivers ). Esconfigura

rno de 4 M48MHz da

MHz, cadrama exem

-------------

clock (48M

r Sandro Jucá

html ou asNw5BfU.

livre de upo de ac

nicio do proda dentro s localizadasta biblioteações de Hz para CPa comunic

da incremmplo1 abai

-------------

Hz para U

ematravés do

gravaçãocesso livre

ograma emda pasta

a na pastaeca contémfusíveis e

PU e cristacação USB

mento dosxo comuta

-------------

SB e 4MHz

: o

, e

m a a

m e al ,

s a

z

Page 24: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 24 ]

output_toggle(pin_B7); // comuta Led na função principal delay_ms(500); O programa pisca3 abaixo pisca três leds conectados nos pinos B5, B6 e B7. #include <SanUSB.h> main() clock_int_4MHz();//Função necessária para habilitar o dual clock (48MHz para USB e 4MHz para CPU) while (1) output_high(pin_B5); // Pisca Led na função principal delay_ms(500); output_low(pin_B5); output_high(pin_B6); delay_ms(500); output_low(pin_B6); output_high(pin_B7); delay_ms(500); output_low(pin_B7); ---------------------------------------------------------------------------------------------------------------

Os arquivos compilados .hex assim como os firmwares estão disponíveis em http://www.4shared.com/file/sIZwBP4r/100727SanUSB.html.

2.2 GRAVANDO O MICROCONTROLADOR VIA USB NO WINDOWS

Para executar a gravação com a ferramenta SanUSB, é importante seguir os

seguintes passos: 1. Baixe o a pasta da ferramenta de desenvolvimento SanUSB, para um diretório raiz C ou D, obtida no link http://www.4shared.com/file/sIZwBP4r/100727SanUSB.html. 2. Grave no microcontrolador, somente uma vez, com um gravador específico para PIC ou com um circuito simples de gravação ICSP mostrado nas próximas seções, o novo gerenciador de gravação pela USB GerenciadorPlugandPlay.hex disponível na pasta Gerenciador, compatível com os sistemas operacionais Windows@, Linux e Mac OSX. 3. Pressione o botão ou conecte o jump de gravação do pino 1 no Gnd para a transferência de programa do PC para o microcontrolador. 4. Conecte o cabo USB, entre o PIC e o PC, e solte o botão ou retire o jump. Se o circuito SanUSB estiver correto acenderá o led do pino B7. 5. Caso o computador ainda não o tenha o aplicativo Java JRE ou SDK instalado para suporte a programas executáveis desenvolvidos em Java, baixe a Versão Windows@ disponível em: http://www.4shared.com/file/WKDhQwZK/[email protected] ou através do link:

Page 25: Apostila_CPIC

http://wda pasta S

F

6. Clique e

programa

Gravar. Es

7. Após a

gravação

novamente

Para protebasta ir em

Aplicações p

www.java.SanUSBwin

Figura 2.

em Abrir

compilado

ste program

gravação d

e clique e

e, repita o

eger o exem Proteçã

práticas de Eletr

.com/pt_nPlugandPla

7: Interfa

r e escolha

o exemplo

ma pisca o

do program

em Reseta

s passos a

ecutável saãoResiden

rônica e microco

BR/downay. Surgirá

ace de gra

o program

o1.hex da

led conect

ma, lembre

r. Pronto o

nteriores a

anusb de ente do ant

ontroladores em

[ 25 ]

nload/maá a seguint

avação do

ma .hex q

pasta Ex

tado no pi

e-se de so

o program

a partir do

exclusão doti-virus AVG

m sistemas comp

anual.jsp ete tela:

o microco

que deseja

xemploseBi

no B7;

ltar o botã

ma estará

passo 3.

o anti-viruG:

putacionais, por

e execute

ontrolado

gravar, co

ibliotecasS

ão ou retira

em operaç

s, como p

r Sandro Jucá

o aplicativ

or via USB

como por e

SanUSB e

ar o jump

ção. Para

por exempl

o SanUSB

B.

exemplo, o

clique em

do pino de

programa

o, o AVG

B

o

m

e

r

,

Page 26: Apostila_CPIC

Clicar em g

Clicar em que é em OK.

Aplicações p

gereciar ex

Gerenciar C:\Progra

práticas de Eletr

xecessões,

Exceções m Files\Sa

rônica e microco

, como na

e adicionaanUSB ou

ontroladores em

[ 26 ]

figura aba

ar caminhoem C:\Arq

m sistemas comp

ixo:

o. Então inquivos de P

putacionais, por

nserir o camProgramas

r Sandro Jucá

minho do

s\SanUSB eexecutávee clicar em

el m

Page 27: Apostila_CPIC

Pronto é instalá-lo d

2.3

A g

Bluetooth.

um lado, u

através do

outro lado

final. Esta

disponíveis

Aba

com tensã

Aplicações p

isso. Parade dentro d

3 GRAV

gravação w

Para a gr

um módul

o chip FTD

o da rede,

a conexão

s em: http

aixo uma il

ão de alime

práticas de Eletr

reinstalardo arquivo

VAÇÃO WI

wireless de

ravação Zig

o é conect

DI FT232RL

, um mód

o permite a

://www.4s

lustração p

entação de

rônica e microco

r o executo .zip ou .ra

IRELESS D

scrita nest

gbee são u

tado a um

L ou atrav

ulo Zigbee

a program

shared.com

para realiza

e 3,3V.

ontroladores em

[ 27 ]

tável da sar.

DE MICRO

ta apostila

utlizados d

m PC coord

vés de uma

e é conec

mação sem

m/get/aP17

ar gravaçã

m sistemas comp

subpasta S

OCONTRO

a pode ser

dois módu

denador co

a porta se

tado ao m

fio no mic

7n4FT/sanu

ão de micro

putacionais, por

SanUSBwin

OLADORE

feita com

los XBee®

onectado a

rial real co

microcontro

crocontrola

usbee.htm

ocontrolad

r Sandro Jucá

nPlugandPl

ES

m modems

® da Série

ao PC via U

om o MAX

olador do

ador PIC.

l

dor de form

ay , basta

Zigbee ou

1 (S1). De

USB do PC

X-232 e, do

dispositivo

Programas

ma wireless

a

u

e

C

o

o

s

s

Page 28: Apostila_CPIC

Para mais

http://w

microcontr

Procedime

1- Circuit

(www.tiny

Gnd, Tx e

(Vcc) do m

(Gnd) do m

pino 18 (R

ligado ao 1

2- Config

Xbee® da

baud rate

coordenad

qual firmw

pino B7 irá

Aplicações p

Figura 2.

detalhes

www.youtu

roladores

ento para g

to básico

yurl.com/Sa

Rx, como

microcontr

microcontr

Rx) do mic

17 (Tx) do

guração d

a série 1 (c

do microc

dor ao micr

ware (Conf

á piscar int

práticas de Eletr

8: Ilustra

basta aco

ube.com/

via Zigbe

gravação w

o: Conecte

anUSB), co

o mostra a

olador e a

rolador e a

crocontrola

o microcont

dos Módu

coordenad

controlador

rocontrolad

nfigCoord96

termitente

rônica e microco

ação do c

mpanhar o

/watch?v

e: http:/

wireless:

e o módu

om aliment

figura aba

ao pino 1 (

ao pino 10

ador e ao

trolador e

ulos: A gr

dor e dispo

r (19200 b

dor, ver cir

600to19200

mente. Se

ontroladores em

[ 28 ]

circuito de

os vídeos

v=_Pbq2e

//www.yo

lo Xbee®

tação entr

aixo. Na fi

(Vcc) do m

(Gnd) do

pino 2 (DO

ao pino 3

ravação w

ositivo fina

ps). Para o

rcuito bási

00.hex ou C

o led não

m sistemas comp

e gravaçã

Gravação

eYha_c

outube.co

ao micro

re 3V e 3,6

gura, o fio

modem Zig

modem Z

OUT) do mo

(DIN) do m

wireless só

l) estivere

o coordena

co acima,

ConfigCoor

piscar, pr

putacionais, por

ão wireles

sem fio de

e Gravaç

om/watch

ocontrolado

6V e apena

o vermelho

gbee, o fio

igbee, o fi

odem Zigbe

modem Zigb

vai acont

m configu

ador, basta

gravar via

rd19200to1

ovavelmen

r Sandro Jucá

ss Zigbee

e microcon

ção sem

h?v=BlRj

or da plac

as 4 fios: V

o é ligado

o azul é lig

o laranja é

ee, e o fio

bee.

tecer se o

rados com

a conectar

a USB e ex

o19200.hex

nte existe u

.

ntroladores

m fio de

KbXpepg

ca SanUSB

Vcc (3,3V)

ao pino 20

gado ao 19

é ligado ao

amarelo é

os módulos

m o mesmo

, o módulo

xaminar em

x) o led no

um erro na

s

e

.

B

,

0

9

o

é

s

o

o

m

o

a

Page 29: Apostila_CPIC

ligação do

serial e co

Faça post

(ConfigDis

conectado

módulos e

3- Adap

Adaptador

apresentar

necessário

tutorial), e

Adaptador

para grava

Aplicações p

o circuito. A

necte ao P

teriormente

spFinal9600

o ao microc

estão conec

Figura

ptador W

rSerial.hex

r o erro O

o gravar n

e em segu

rSerial.hex

ação wirele

práticas de Eletr

Após a con

PC.

e o mesm

00to19200.h

controlado

ctados cor

a 2. 9: Gr

Wireless:

x da pasta

Odd addres

novamente

uida, reali

. Após a t

ess.

rônica e microco

nfiguração,

mo para o

hex ou

r. Quando

retamente

ravação v

Agora

a Adaptad

ss at begin

o gerenc

zar novam

transferên

ontroladores em

[ 29 ]

coloque o

o módulo

ConfigDi

o led do p

e estão ap

ia USB de

grave,

orWireless

inning of H

ciador.hex,

mente a g

cia deste

m sistemas comp

o módulo C

Dispositivo

DispFinal192

pino B7 es

ptos para g

e Configu

novament

s. Se, apó

HEX file er

com qua

ravação vi

firmware,

putacionais, por

Coordenado

o final, g

200to19200

tiver pisca

gravação w

ração wir

te via

ós a grava

rror, como

lquer grav

ia USB do

o microco

r Sandro Jucá

or no conv

ravando o

00.hex) e

ando, signif

wireless.

reless.

USB, o

ação do A

o na figura

vador espe

o firmware

ontrolador

versor USB-

o firmware

e deixe-o

fica que os

firmware

Adaptador

a abaixo, é

ecifico (ve

e aplicativo

está apto

-

e

o

s

e

,

é

r

o

o

Page 30: Apostila_CPIC

Ago

Pesquisar

vídeo Grav

transferir

sanusbee.

Exe

san

F

A g

Bluetooth

laptops e

Aplicações p

Figur

ora basta

-> Promp

vação sem

os progra

emplo:

nusbee Exe

Figura 2.

gravação

conectado

desktops,

práticas de Eletr

ra 2. 10: G

acessar a

pt de Coma

m fio de m

amas aplic

emplo1Wire

11: Grava

wireless

o ao microc

já existe u

rônica e microco

Gravação

a pasta sa

ando), com

microcontro

ativos.hex

eless.hex –

ação wire

s Bluetoo

controlado

um módulo

ontroladores em

[ 30 ]

o via USB

anusbee p

mo na figu

oladores v

como o

–p COM2

eless zigbe

oth pode

or, pois nor

o bluetooth

m sistemas comp

de Adapt

pelo Prom

ura abaixo

via Zigbee,

Exemplo1w

ee pelo p

ser realiza

rmalmente

h interno.

putacionais, por

tador wire

pt do Wi

, e digitar,

, as linhas

wireless.he

rompt do

ada com

e no PC coo

A tensão d

r Sandro Jucá

eless.

ndows@ (

r, como mo

s de coma

ex contido

o Window

apenas u

ordenador

do módulo

(Iniciar ->

ostrado no

ando, para

o na pasta

ws.

m módulo

r, como em

o Bluetooth

>

o

a

a

o

m

h

Page 31: Apostila_CPIC

encapsulad

que supor

microcontr

De

conectado

sem fio

http://www

http://san

adquirido o

Aba

Bluetooth

Fig

Para mais

http://w

microcontr

Bluetooth.

1- Circuit

(www.tiny

Gnd, Tx e

Aplicações p

do, mostra

rta de 3,3V

rolador alim

um lado u

o ao microc

no m

w.4shared

usb-laese.w

o modem

aixo uma il

com tensã

gura 2. 12

detalhes

www.youtu

roladores

Procedime

to básico

yurl.com/Sa

Rx, como

práticas de Eletr

ado na figu

V. Dessa fo

mentado p

um PC coo

controlado

microcontro

.com/get/a

wix.com/ro

Bluetooth

lustração p

ão de alime

2: Ilustra

basta aco

ube.com/

http:/

ento para

o: Conecte

anUSB), co

mostra a f

rônica e microco

ura abaixo,

orma, pod

pela tensão

ordenador

or do dispo

lador PI

aP17n4FT/

obotica#!p

mostrado

para realiza

entação de

ção do Ci

mpanhar o

/watch?v

//www.yo

gravação w

o módulo

om alimen

figura acim

ontroladores em

[ 31 ]

, suporta a

de-se cone

o da porta

e, do outr

ositivo fina

IC. Os

/sanusbee.

produtos/p

neste tuto

ar gravaçã

e 5V.

ircuito de

os vídeos

v=_Pbq2e

outube.co

wireless:

o bluetooth

ntação entr

ma do circu

m sistemas comp

até 6V, dife

ectar o mó

USB de 5V

ro lado da

l. Esta co

Programa

.html. N

roductssta

rial.

ão de micro

e gravação

Gravação

eYha_c e G

om/watch

h ao micro

re 3V e 6V

uito. Na fig

putacionais, por

erentement

dulo Bluet

V.

rede, um

onexão per

as estão

Neste li

ckergallery

ocontrolad

o wireless

sem fio de

Gravação s

h?v=0PcC

ocontrolad

V e apena

gura, o fio v

r Sandro Jucá

te do mód

tooth diret

módulo b

rmite a pro

disponív

ink em

yv20=1,

dor de form

s Bluetoo

de microcon

sem fio (w

CQtsO1Bw

dor da plac

s 4 fios: V

vermelho é

ulo Xbee®

amente ao

bluetooth é

ogramação

íveis em

anexo

pode se

ma wireless

oth.

ntroladores

wireless) de

wg via

ca SanUSB

Vcc (3,3V)

é ligado ao

®

o

é

o

:

:

r

s

es

e

a

B

,

o

Page 32: Apostila_CPIC

pino 20 (V

ao 19 (Gn

ao pino 18

ligado ao 1

2- Parearconectado2.1- Iniciasenha pad2.2- Após dispositivo

1.3- Clicarmodem Bl

Figu

O npor exempclicando co> Avançad

Aplicações p

Vcc) do mi

d) do micr

8 (Rx) do

17 (Tx) do

r o modeo ao microcar -> Paindrão: 1234;

o pareamos. Irá apar

F

r em cima,uetooth, e

ura 2. 14:

número da plo, para om o botãdo -> Núm

práticas de Eletr

icrocontrol

rocontrolad

o microcon

o microcont

em Bluetocontroladornel de con;

mento, cliqurecer o mo

Figura 2. 1

, por exemem Hardwa

: Verificaç

porta SerCOM9 como direito e

mero da Por

rônica e microco

ador e ao

dor e ao p

ntrolador e

trolador e

ooth: Apósr, realizar ntrole -> A

ue em Inicodem parea

13: Parea

mplo, do mare, que se

ção da po

rial Padrão mo neste em cima darta COM.

ontroladores em

[ 32 ]

pino Vcc

pino Gnd d

e ao pino

ao pino Rx

s alimentao pareame

Adicionar u

ciar -> Paado, como

mento do

modem de erá utilizada

orta serial

o por Link tutorial,

a porta ->

m sistemas comp

do modem

o modem

Tx modem

x do modem

ar o modeento com oum disposi

ainel de coo, por exem

o modem

linvor, e va para a gr

l criada pe

Bluetooth através dopropriedad

putacionais, por

m bluetooth

bluetooth,

m bluetooth

m bluetoot

m Bluetooo PC indo etivo de blu

ontrole -> mplo, o linv

bluetooth

verificar quravação wi

elo mode

(COM37) po Gerenciades -> Con

r Sandro Jucá

h, o fio az

, o fio verd

h, e o fio

th.

oth com 3,em: uetooth ->

exibir impvor.

h.

ual porta cireless.

em blueto

pode ser mador de Dnfiguração

zul é ligado

de é ligado

amarelo é

,3V ou 5V

> linvor ->

pressoras e

criada pelo

ooth.

modificadaispositivos de Porta -

o

o

é

V,

>

e

o

, , -

Page 33: Apostila_CPIC

3- Config

módulo Bl

bps). Para

acima, gra

pino B7 irá

ligação do

Quando o

corretame

4- Adap

Adaptador

apresentar

necessário

tutorial), e

Adaptador

para grava

Aplicações p

guração d

uetooth es

a isto, bast

avar via US

á piscar int

circuito.

o led do p

ente e estão

Figura

ptador W

rSerial.hex

r o erro O

o gravar n

e em segu

rSerial.hex

ação wirele

práticas de Eletr

do Módul

stiver confi

a conectar

SB o firmw

termitente

pino B7 es

o aptos pa

a 2. 15: G

Wireless:

x da pasta

Odd addres

novamente

uida, reali

. Após a t

ess.

rônica e microco

lo blueto

igurado co

r, o módulo

ware Config

mente. Se

stiver pisca

ara gravaçã

ravação v

Agora

a Adaptad

ss at begin

o gerenc

zar novam

transferên

ontroladores em

[ 33 ]

ooth: A gr

om o mesm

o bluetooth

figbluetotth

o led não

ando, sign

ão wireless

via USB d

grave,

orWireless

inning of H

ciador.hex,

mente a g

cia deste

m sistemas comp

ravação w

mo baud ra

h ao micro

h9600to192

piscar, pr

nifica que

s.

e Configu

novament

s. Se, apó

HEX file er

com qua

ravação vi

firmware,

putacionais, por

wireless só

ate do micr

ocontrolado

200.hex e

ovavelmen

os módulo

uração wi

te via

ós a grava

rror, como

lquer grav

ia USB do

o microco

r Sandro Jucá

vai acont

rocontrolad

or, ver circ

verificar s

nte existe u

os estão c

ireless.

USB, o

ação do A

o na figura

vador espe

o firmware

ontrolador

tecer se o

dor (19200

cuito básico

se o led no

um erro na

conectados

firmware

Adaptador

a abaixo, é

ecifico (ve

e aplicativo

está apto

o

0

o

o

a

s

e

,

é

r

o

o

Page 34: Apostila_CPIC

Ago

Pesquisar

vídeo PIC

programas

Exe

Fig

As vantagde modecomputadogravação d

Aplicações p

Figur

ora basta

-> Promp

C wireless

s aplicativo

emplo: san

gura 2. 17

ens do moems Bluetores e cede microco

práticas de Eletr

ra 2. 16: G

acessar a

pt de Coma

Zigbee p

os.hex com

nusbee Exe

7: Gravaçã

odem Bluetooth já elulares. Aontroladore

rônica e microco

Gravação

a pasta sa

ando), com

programmin

mo o Exemp

emplo1Wir

ão wirele

tooth em disponíve

A desvantaes máxima

ontroladores em

[ 34 ]

o via USB

anusbee p

mo na figu

ng II, as

plo1wireles

reless.hex

ess blueto

relação aoeis em vagem em de 10 me

m sistemas comp

de Adapt

pelo Prom

ura abaixo

linhas de

ss.hex con

–p COM9

ooth pelo

o Zigbee, svários sist

relação atros.

putacionais, por

tador wire

pt do Wi

, e digitar,

comando

tido na pa

prompt d

são o preçotemas coao Zigbee

r Sandro Jucá

eless.

ndows@ (

r, como mo

o, para tra

sta sanusb

do Window

o e a dispomputacion

é a distâ

(Iniciar ->

ostrado no

ansferir os

bee.

ws.

ponibilidadenais comoância para

>

o

s

e o a

Page 35: Apostila_CPIC

2.4

Devemulação interface Iclock, umamultiplicadoscilador R

Esseque um daMHz via U4 MHz via

2.5

Nes

canal USBCommunicdo canal Uatravés deCCS® Comprograma são os res

A bexemplos,a emulaçãbiblioteca EEPROM inusb_san_c

usb_cdc_Ex.: prinusb_cdc_Ex.: dado

Aplicações p

4 SISTE

vido à incserial via

I2C, esta fea para o cada por umRC interno

Fi

e princípioado digitadSB, depoisI2C e vice-

5 EMULA

ste tópico B do PICcations DevUSB 2.0. De qualquermpiler ou oaplicativo

sponsáveis biblioteca C a qual devão da comusb_san_cnterna do cdc.h para

_putc() – ntf(usb_cd_getc() – o = usb_c

práticas de Eletr

MA DUAL

compatibilida USB e aerramenta anal USB d

m prescalede 4 MHz,

igura 2. 1

o de clock do no teclas para perif-versa.

AÇÃO DE

é mostrad18F2550.

evices ClassDessa formr softwareo ambientegravado npor esta e

CDC para ve estar namunicaçãocdc.h, commicrocontrcomunicaç

o microcodc_putc, "retém um

cdc_getc(

rônica e microco

L CLOCK

dade entrea frequêncadota o p

de 48MHz, er interno, , como é il

18: Comun

paralelo, rado do comféricos com

COMUNIC

do um métUma das

ss (CDC), qma, é poss

monitor se de prograno PIC, coemulação do programa mesma p serial RS

mo mostra rolador. Asção com a

ntrolador e"\r\nEndercaractere

(); //retém

ontroladores em

[ 35 ]

e as frequcia padrãoprincípio D proveniene outra p

ustrado na

nicação P

realizado pmputador, mo um reló

CAÇÃO SE

todo de cos formas que emula sível se coserial RS-2amação Deom a biblioda porta RSma.c do mpasta ondeS-232. Aléa o exem

s funções CCOM virtu

envia caracreco para eASCII emu

m um carac

m sistemas comp

uências neo utilizada

Dual Clock, nte do cristpara o CPa figura ab

PIC com P

pela instrutrafegue p

ógio RTC o

ERIAL NO

omunicaçãomais simpuma port

omunicar c232 como elphi®. O oteca CDC S-232 virtuicrocontrole está o prém disso, plo de leitCDC mais uual são:

cteres ASCescrever: "ulado pela tere na va

putacionais, por

ecessárias pela CPU

ou seja, utal osciladoPU de 4 Maixo.

PC e via I2

ção clock_para o micou para a m

O WINDOW

o serial bidples, é ata COM RScom caraco HyperTdriver CDC(#include

ual através lador está ograma.c ao programura e escrutilizadas c

CII emulado); USB. riável dado

r Sandro Jucá

para a gU, temporutiliza duasor externoMHz, prove

2C.

k_int_4MHz(crocontrolamemória EE

WS

direcional través do

S-232 virtucteres ASCTerminal, oC instaladoe <usb_sa da USB. dentro da

a ser compma.c deverita em umcontidas na

os via USB

o

gravação erizadores es fontes de de 20MHzeniente do

z(), permiteador em 48EPROM em

através doprotocolo

ual, atravésII via USB

o SIOW doo no PC e on_cdc.h>)

a pasta depilado parae inserir a

m buffer daa biblioteca

B.

e e e z o

e 8 m

o o s B o o ,

e a a a a

Page 36: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 36 ]

gethex_usb() – retém um número hexadecimal digitado no teclado. Ex.: valor = gethex_usb();//retém um número hexadecimal na variável valor usb_cdc_kbhit( ) – Avisa com TRUE (1) se acabou de chegar um novo caractere no buffer de recepção USB do PIC. Ex.: if (usb_cdc_kbhit()) dado = usb_cdc_getc();

O exemplo abaixo mostra a leitura e escrita em um buffer da EEPROM interna do microcontrolador com emulação da serial através da USB: --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> #include <usb_san_cdc.h>// Biblioteca para comunicação serial BYTE i, j, endereco, valor; boolean led; main() clock_int_4MHz(); usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com a usb do PC output_high(pin_b7); // Sinaliza comunicação USB Ok while (1) printf(usb_cdc_putc, "\r\n\nEEPROM:\r\n"); // Display contém os primeiros 64 bytes em hex for(i=0; i<=3; ++i) for(j=0; j<=15; ++j) printf(usb_cdc_putc, "%2x ", read_eeprom( i*16+j ) ); printf(usb_cdc_putc, "\n\r"); printf(usb_cdc_putc, "\r\nEndereco para escrever: "); endereco = gethex_usb(); printf(usb_cdc_putc, "\r\nNovo valor: "); valor = gethex_usb(); write_eeprom( endereco, valor ); led = !led; // inverte o led de teste output_bit (pin_b7,led); --------------------------------------------------------------------------------------------------------------- Após gravação de um programa que utilize comunicação serial CDC no microcontrolador pelo SanUSB e resetar o microcontrolador, vá, se for o Windows 7, em propriedades do sistema -> Configurações avançadas do sistema -> Hardware -> Gerenciador de

Page 37: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 37 ]

dispositivos e clique com botão direito no driver CDC do microcontrolador e atualizar Driver, apontando para a pasta DriverCDCwinSerial. No Windows@ XP, após a gravação de um programa que utilize comunicação serial CDC no microcontrolador pelo SanUSB e resetar o microcontrolador, o sistema vai pedir a instalação do driver CDC (somente na primeira vez).

Figura 2. 19: Instalação do driver CDC (1).

Escolha a opção Instalar de uma lista ou local especifico (avançado). Após Avançar, selecione a opção Incluir este local na pesquisa e selecione a pasta DriverSanWinCDC, onde está o driver CDC.

Figura 2. 20: Instalação do driver CDC (2).

Após Avançar, clique em Continuar assim mesmo.

Page 38: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 38 ]

Figura 2. 21: Instalação do driver CDC (3).

Aguarde enquanto o Driver CDC é instalado no Windows@.

Figura 2. 22: Instalação do driver CDC (4).

Clique em Concluir para terminar a instalação.

Page 39: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 39 ]

Figura 2. 23: Instalação do driver CDC (5).

Vá em painel de controle -> sistema -> Hardware -> Gerenciador de dispositivos -> Portas (COM & LPT) e confira qual é a porta COM virtual instalada.

Figura 2. 24: Verificação de porta COM instalada.

Abrindo qualquer programa monitor de porta serial RS-232, como o SIOW do CCS ou o Java-SanUSB, direcionando para a COM virtual instalada (COM3,COM4,COM5,etc.). No CCS clique em Tools -> Serial port Monitor -> configuration -> set port options para que o computador entre em contato com o PIC através da emulação serial via USB.

Page 40: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 40 ]

Figura 2. 25: Utilização da porta COM pelo CCS.

Para utilizar uma função que necessite de atendimento imediato quando um caractere for digitado como, por exemplo o caractere L ou D, é necessário inserir no firmware do microcontrolador a condição para verificar de forma constante e reter o caractere emulado que chegou pela USB S (SB_cdc_kbhit( )) dado=usb_cdc_getc(); no laço infinito da função principal. O comando (SB_cdc_kbhit( )) evita que o programa fique parado no usb_cdc_getc (que fica esperando um caractere para prosseguir o programa). Veja o programa abaixo, que pisca um led na função principal (pino B6) e comanda o estado de outro led (pino B7) pelo teclado de um PC via USB: --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> #include <usb_san_cdc.h>// Biblioteca para comunicação serial virtual BYTE comando; void main() clock_int_4MHz();//Função necessária para habilitar o dual clock (48MHz para USB e 4MHz para CPU) usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com USB do PC while (TRUE) if (usb_cdc_kbhit( )) //avisa se chegou dados do PC

Page 41: Apostila_CPIC

//verificapróximo bycomando=ASCII if (comandif (comand output_higdelay_ms(output_lowdelay_ms( -------------

Paraentre o coem http://wml . Após execvirtual gerItens do Dispositivo

Aplicações p

a se tem yte

=usb_cdc_g

do==’L’) odo==’D’)

gh(pin_B6)(500); w(pin_B6);(500);

-------------

Figur

a utilizar oomputador

www.4sha

cutar o prrada (COMPainel de

os e depois

práticas de Eletr

um novo

getc(); //s

output_higoutput_low

); // Pisca

;

-------------

ra 2. 26: V

o programar e o micro

ared.com/

rograma dM3,COM4,Ce Controles clique em

rônica e microco

byte no b

se chegou,

gh(pin_b7)w(pin_b7);

Led na fun

-------------

Visualizaç

a de comuocontrolado

/file/1itVI

e comunicOM11,etc.\Sistema

m Conectar

ontroladores em

[ 41 ]

buffer de

, retém o

; printf(us; printf(usb

nção princi

-------------

ção de tex

unicação Jor, é nece

Iv9s/101

cação seri) no Winde altere

r, como mo

m sistemas comp

recepção,

caractere

b_cdc_putb_cdc_putc

pal

-------------

xtos via s

ava-SanUSssário baix

1009Softw

al Java-Sadows@, emno prograostra a figu

putacionais, por

depois o

e compar

c, “\r\nLedc, “\r\nLed

-------------

serial emu

SB para emxá-lo atrav

wareComS

anUSB, verm Painel dama serialura abaixo.

r Sandro Jucá

kbhit é ze

ra com ‘L’

d Ligado\r\d Desligado

-------------

ulada.

mulação sevés do link

Serial_W

rifique a pde Controlel Java- Sa.

erado para

ou ‘D’ em

\n”); o\r\n”);

-------------

erial virtuak disponíve

indow.ht

porta COMe\Todos osanUSB em

a

m

al el

M s

m

Page 42: Apostila_CPIC

2.6

Esta

mais simpSanUSB.de10.04, equem Aplicat Se atualizadohttp://wpasta gera Se com http://w A fmicrocontr

Aplicações p

Figur

6 GRAVA

a aplicaçãoples e direeb é possíuivalente otivos -> acvocê já te

www.4shaal http://ainda não

o www.4shafigura abairoladores v

práticas de Eletr

ra 2. 27: I

ANDO O M

o substitui eta de graível instalaou posteriocessórios. em o Java

ared.com//www.4sh

tem o JavJava

ared.com/ixo mostravia USB:

rônica e microco

Interface

MICROCO

a gravaçãoavação. Coar este apor). Depois

a instaladodisponíve

/file/RN4hared.comva (JRE oua /file/3mha a interfa

ontroladores em

[ 42 ]

e em Java

ONTROLAD

o via USB om apenaslicativo ems de instala

o (JRE ou el

4xpF_T/sam/file/sIZu SDK), ba

JRE hWZS5g/sace gráfica

m sistemas comp

de comu

DOR VIA

pelo termis dois cliq

m qualquerado, a inte

SDK) baix

anusb_LinZwBP4r/aixe o inst

e sanusb.hta desenvo

putacionais, por

nicação s

USB NO L

nal do Linuques no inr máquinaerface de g

xe o instalano

nux.html 100727Saalador San

disptml . lvida para

r Sandro Jucá

serial.

LINUX

ux, pois é nstalador aa com Linugravação é

ador auto

contido taanUSB.htnUSB, já cponível

gravação

uma formaautomáticoux (Ubuntué localizada

mático.deblink

ambém natml. configurado

em

o direta de

a o u a

b : a

o :

e

Page 43: Apostila_CPIC

NescompiladoResetar o ainda um

É imlogado comsu), e quanteriormepara PIC, SanUSB ouApós gravcircuito Sabotão ou correto, amicrocontrutilizando Para progrconecte opressione

2.7

Aplicações p

F

ste aplicatio, para Gr

microconbotão paramportante m permisse para esente no mo gerencia

u em httpvar o GereanUSB em fio ) e conacenderá rolador, da interfaceramar novao cabo USo botão Gr

7 GRAVA

práticas de Eletr

Figura 2. 2

ivo, estão ravar o prtrolador na gravar e salientar q

são para acstabelecer

microcontroador de gr://www.nciadorLinmodo de

necte o caá o led do de forma e USB. amente, b

SB de alimravar&Rese

ANDO O P

rônica e microco

28: Mensa

disponíverograma hno intuito resetar auque para ucessar a pcomunicaç

olador, somravação pe4shared.cux.hex cogravação

abo USB dpino B7. simples e

asta pressmentação, etar.

PIC VIA U

ontroladores em

[ 43 ]

agem de

is botões hexadecimade colocá-

utomaticamutilizar estaporta USB cção com

mente umaela USB Gecom/file/m um grapela USB

o circuito Pronto, o s

e direta,

ionar o boselecione

USB PELO

m sistemas comp

programa

para Abriral no micr-lo em op

mente. a ferramencomo, poro microcoa vez, comerenciador/HGrf9nDvador con

B (pino 1 lno PC. Sesistema já quantos p

otão de grao progra

TERMINA

putacionais, por

a gravado

r o prograrocontrolad

peração. A

nta no Linuexemplo,

ntrolador m qualquerrLinux.hex,

Dz/Gerencvencional igado ao Ge o circuitestá prepa

programas

avação no ma.hex d

AL DO LIN

r Sandro Jucá

o.

ama em hedor via U

A interface

ux é necessuper-usué necessá

r gravador, disponíveciador.htmpara PIC, Gnd (0V) ito SanUSarado para

.hex voc

pino 1, deesejado e

NUX OU M

exadecimaSB e paraapresenta

ssário estauário (sudoário gravar específicoel na pastaml . coloque o

através deSB estivera gravar nocê deseja

esconecte eem Abrir e

MAC OSX

al a a

r o r o a

o e

er o r

e e

Page 44: Apostila_CPIC

EstaMac OSX. instale http://wPara inicia1. Grave com o cirqualquer, (Linux, Ma2. Pelo Tepelo arqSanUSBMahttp://www 3. Após earquivo dig. / sanus

A fie também

4. Com o ccom botão 5. Para gestar mesm

Aplicações p

a aplicaçãoPara abrir

www.4shaar a gravaçno microcorcuito simpo gerenci

ac OSX e Werminal doquivo sanacPlugandPw.youtube

entrar na gitando: b-h gura abaix do proces

Figu

circuito Sao pressiona

gravar no mo diretór

práticas de Eletr

o é realizar o termina

o ared.com/ão com linontroladorples de giador de g

Windows@)o Linux ou nusb.deb, Play, onde.com/watc

pasta do

xo mostra sso de grav

ura 2. 29:

nUSB monado ou jum

microcontio do exec

rônica e microco

ada de foral é necess

san/file/sIZwhas de com

r, somenteravação Cgravação p). Mac OSX e no

de está ch?v=rSg_

exectável

o printscrevação pelo

Acesso à

ntado, colomp ) e cone

trolador, outável san

ontroladores em

[ 44 ]

rma simplesário baixanusb.deb wBP4r/10mando é ime uma vezCOM84 despela USB

X acesse onMac Oo exec

i3gHF3U .

sanusb,

een de exeo terminal:

à pasta pe

oque-o em ecte o cabo

o firmwareusb, então

m sistemas comp

es em linhar e instala

00727Sanmportante z, com umscrito nestGerenciado

nde está oSX acess

cutável sa

acesse inf

emplo de u

elo termin

modo de go USB do c

desejadoo para a gr

putacionais, por

a de comaar o softwa

disponívnUSB.htm

seguir os s gravador ta apostila

dor.hex, qu

o executávse a panusb. M

formações

um process

nal do LIN

gravação (circuito no

, como o ravação via

r Sandro Jucá

ando no tare Xcode.ível

ml . seguintes

r específicoa ou outroue é multi

vel sanusbpasta de Mais dea

do conte

so de aces

NUX.

(pino 1 ligaPC.

exemplo1a USB, digi

erminal do. No Linux

em

passos: o para PICo gravadoplataforma

b, instaladoarquivos

lhes em

eúdo deste

sso à pasta

ado ao Gnd

.hex, deveta-se:

o x, m

C r a

o s :

e

a

d

e

Page 45: Apostila_CPIC

. / sanus 6. Depois . / sanus ou simplem

Paraconecte o microcontroutra portpasso 3.

2.8

Devemulação interface Iclock_int_4provenientoutra parailustrado n

Essecomputadocomo um

2.9

Nes

canal USBCommunicRS-232 vircomunicar

Aplicações p

b –w exe

de gravar,b –r

mente: . /

a programcabo USB rolador nãta USB, ab

8 SISTE

vido à incserial via

I2C, esta fe4MHz(), oute do cristaa o CPU dna figura a

Fi

e princípioor, trafegurelógio RT

9 EMULA

ste tópico B do PICcations Devrtual com r com cara

práticas de Eletr

mplo1.he

remova o

/ sanusb –

mar novamde alimen

ão for recobra um no

MA DUAL

compatibilida USB e aerramentau seja, utial osciladode 4 MHzbaixo.

igura 2. 3

o de clockue para o mC ou para

AÇÃO DE

é mostrad18F2550.

evices Classo microco

acteres ASC

rônica e microco

ex

botão ou j

–w exem

mente, basntação, e reonecido, f

ovo termina

L CLOCK

dade entrea frequênc pode adoliza duas f

or externo z, provenie

30: Comun

ck paralelomicrocontra memória

COMUNIC

do um métUma das

s (CDC), quntrolador, CII via US

ontroladores em

[ 45 ]

jump de g

plo1 –r

sta colocaepita os pafeche o teal e repita

e as frequcia padrãootar o prinfontes de de 20MHz

ente do os

nicação P

, permite rolador ema EEPROM

CAÇÃO SE

todo de cos formas ue é padrãatravés do

SB através

m sistemas comp

gravação, e

ar o jumpassos anteerminal, coa repita os

uências neo utilizadacípio Dual clock, uma multiplicascilador R

PIC com P

que um 48 MHz vem 4 MHz

ERIAL NO

omunicaçãomais simp

ão no Linuxo canal USde qualqu

putacionais, por

então reset

p de gravriores a paonecte o ms passos a

ecessárias pela CPU

l Clock reaa para o cda por umC interno

PC e via I2

dado digivia USB, dez via I2C e

O LINUX

o serial bidples, é atx e que emSB. Dessa uer softwar

r Sandro Jucá

t digitando

vação, desartir do pasmicrocontrnteriores a

para a gU, temporalizado pelacanal USB m prescaler

de 4 MH

2C.

itado no tepois para vice-versa

direcional través do mula uma forma, é re monitor

o:

sconecte esso 6. Se orolador ema partir do

gravação erizadores ea instruçãode 48MHzr interno, ez, como é

teclado doperiféricos.

através doprotocolo

porta COMpossível ser serial RS-

e o m o

e e o , e é

o s

o o M e -

Page 46: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 46 ]

232 como o Cutecom, o minicom ou outros aplicativos com interface serial. A biblioteca CDC_ACM padrão no Linux e o programa aplicativo gravado no PIC com a biblioteca CDC (#include <usb_san_cdc.h>), são os responsáveis por esta emulação da porta RS-232 virtual através da USB. A emulação serial é muito utilizada também para “debugar”, ou seja, depurar as variáveis de um programa.c, imprimindo-as pela USB durante a execução real do programa. Dessa forma, o programador pode encontrar possíveis erros na programação do firmware.

A biblioteca CDC (#include <usb_san_cdc.h>) está dentro da mesma pasta de ExemploseBibliotecas. Para a compilação de um programa aplicativo com emulação serial, como o exemplo_emulSerial.c, a biblioteca CDC(#include <usb_san_cdc.h>) deve estar na mesma pasta do programa exemplo_emulSerial.c a ser compilado ou dentro da pasta instalada do compilador (C:\Arquivos de programas\PICC\Drivers). O programa exemplo_emulSerial.c abaixo, contido na pasta ExemploseBilbliotecas, pisca um led no pino B6 na função principal e comanda, via USB através emulação serial, o estado de outro led no pino B7 com as teclas L e D do teclado de um PC. As funções CDC mais utilizadas para comunicação com a COM virtual são: usb_cdc_putc() – o microcontrolador envia caracteres ASCII emulados via USB. Ex.: printf(usb_cdc_putc, "\r\nEndereco para escrever: "); usb_cdc_getc() – retém um caractere ASCII emulado pela USB. Ex.: dado = usb_cdc_getc(); //retém um caractere na variável dado gethex_usb() – retém um número hexadecimal digitado no teclado. Ex.: valor = gethex_usb();//retém um número hexadecimal na variável valor usb_cdc_kbhit( ) – Avisa com TRUE (1) se acabou de chegar um novo caractere no buffer de recepção USB do PIC. Ex.: if (usb_cdc_kbhit( )) dado = usb_cdc_getc(); Outras funções do protocolo são: • get_string_usb(char *s, int max): Recebe uma string; • usb_attach(): Re-conecta o dispositivo, deve ser usada para re-conectá-lo quando o dispositivo foi desconectado, mas ainda nãoremovido literalmente; • usb_detach(): Desconecta o dispositivo. Deve ser usada antes de sua remoção física do computador; • usb_enumerated(): Verifica se o dispositivo está pronto para a comunicação. #include <SanUSB.h> #include <usb_san_cdc.h>// Biblioteca para comunicação serial virtual via USB BYTE comando; main() clock_int_4MHz();//Função necessária para habilitar o dual clock (48MHz para USB e 4MHz para CPU)

Page 47: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 47 ]

usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com USB do PC while (TRUE) if (usb_cdc_kbhit( )) //avisa se chegou dados do PC //verifica se tem um novo byte no buffer de recepção, depois o kbhit é zerado para próximo byte comando=usb_cdc_getc(); //se chegou, retém o caractere e compara com 'L' ou 'D' em ASCII if (comando=='L') output_high(pin_b7); printf(usb_cdc_putc, "\r\nLed Ligado!\r\n"); if (comando=='D') output_low(pin_b7); printf(usb_cdc_putc, "\r\nLed Desigado!\r\n"); output_high(pin_B6); // Pisca Led na função principal delay_ms(300); output_low(pin_B6); delay_ms(300); Este firmware realiza a comunicação serial virtual com o protocolo CDC inserido no firmware do microcontrolador através da biblioteca usb_san_cdc.h. Este protocolo é padrão no sistema operacional Linux. Após gravar o firmware via USB com o executável linux sanusb, instale o software de comunicação serial digitando pelo terminal do linux #sudo apt-get install cutecom . Verifique a porta serial virtual criada digitando dmesg no terminal. Abra o Cutecom, digitando cutecom no terminal e direcione a porta virtual criada em Device do Cutecom, geralmente a porta é ttyACM0 ou ttyACM1. Mais informações podem ser obtidas no video: http://www.youtube.com/watch?v=cRW99T_qa7o .

Page 48: Apostila_CPIC

É pemulação

É pem http:Após coneem AplicatDispositivodigitar ls /como mos

Fig

Aplicações p

possível taserial virtu

possível ba://www.4ectar o mictivos -> Oos. Para li/dev/ttyAstra a figur

gura 2. 3

práticas de Eletr

mbém utiual entre o ixar esta f4shared.ccrocontrolaOutros, apstar a port

ACM* . É pa abaixo.

2: Interfa

rônica e microco

Figura

lizar o procomputad

ferramentacom/file/ador e abrparecerá a ta serial vipossível re

ace de com

ontroladores em

[ 48 ]

2. 31: Cu

ograma dedor e o mica de comu/5emc7knrir o prograporta seri

irtual geradealizar a co

municaçã

m sistemas comp

uteCOM.

e comuniccrocontrolaunicação senO/SerialJama de coal virtual gda, utilizan

omunicação

ão serial e

putacionais, por

ação seriador. erial atravéJava-sanu

omunicaçãogerada no ndo o Termo depois de

em Java p

r Sandro Jucá

al Java-Sa

és do link usb_10_ao serial JavLinux (tty

minal do Lie clicar em

para LINU

nUSB para

disponíveall.html va-SanUSB

yACM0) eminux, basta

m Conectar

UX.

a

el . B m a ,

Page 49: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 49 ]

2.10 PROGRAMA COM INTERRUPÇÃO EXTERNA POR BOTÃO E DO TIMER 1

--------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> BYTE comando; short int led; int x; #int_timer1 void trata_t1 () led = !led; // inverte o led - pisca a cada 0,5 seg. output_bit (pin_b7,led); set_timer1(3036 + get_timer1()); #int_ext void bot_ext() for(x=0;x<5;x++) // pisca 5 vezes após o pino ser aterrado (botão pressionado) output_high(pin_B5); // Pisca Led em B5 delay_ms(1000); output_low(pin_B5); delay_ms(1000); main() clock_int_4MHz(); enable_interrupts (global); // Possibilita todas interrupcoes enable_interrupts (int_timer1); // Habilita interrupcao do timer 1 //enable_interrupts (int_ext); // Habilita interrupcao externa 0 no pino B0 setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8);// configura o timer 1 em 8 x 62500 = 0,5s set_timer1(3036); // Conta 62.500us x 8 para estourar= 0,5s while (1) output_high(pin_B6); // Pisca Led na função principal delay_ms(500); output_low(pin_B6); delay_ms(500);

Page 50: Apostila_CPIC

----------------------

2.1

------------#include <#include < int32 tensa main() clock_int_4 usb_cdc_inusb_init();usb_task() setup_adc_setup_adc while(1) set_adc_cdelay_ms(tensao= (5printf (usb output_higdelay_ms(output_lowdelay_ms(

Para

em wwwTTP://www

Aplicações p

------------------

11 OBTENA VARIA

-------------<SanUSB.h<usb_san_

sao;

4MHz();

init(); // In; // Inicializ(); // Une o

c_ports(ANc(ADC_CLO

channel(0);(10); (5000*(int3b_cdc_putc

gh(pin_b7)(500); w(pin_b7);(500);

Figura 2

a obter no.tinyurl.cw.4shared

práticas de Eletr

-----------

NÇÃO DE AÇÃO DE U

--------------h> //Leitur_cdc.h>// B

nicializa o piza o protoco periférico

N0); //HabOCK_INTER

/;

32)read_adc,"\r\nA ten

);

;

2. 33: Uso

ovos prograom/SanU.com/docu

rônica e microco

-----------

UM VOLTUM POTEN

-------------ra de tensãBiblioteca p

protocolo Cocolo USB o com a usb

bilita entradRNAL);

//ANALÓGI // 5000 m // tensao

dc())/1023;nsao e' = %

o de poten

amas e proUSB como ument/Qst_

ontroladores em

[ 50 ]

-----------

TÍMETRONCIÔMET

-------------ão em mV para comu

CDC

sb do PC

da analógic

ICO mV o

3; %lu mV\r\

nciômetro

ojetos, bastambém b

_pem-/100

m sistemas comp

-----------

ATRAVÉSTRO

--------------com variaç

unicação se

ca - A0

DIGITAL(1 1023 read_

n",tensao)

o no conv

sta acessarbaixar a ap0923Aposti

putacionais, por

-----------

S DO CON

-------------ção de um erial virtual

10 bits) 3 _adc()

); // Imprim

versor AD

r os arquivpostila comla_CPIC.ht

r Sandro Jucá

-----------

NVERSOR

-------------m potenciôm

l

me pela se

D do PIC.

vos do grupmpleta disptml .

-----------

R AD COM

--------------metro

erial virtual

po SanUSBponível em

-

M

-

l

B m

Page 51: Apostila_CPIC

2.1

Para

serial DB9circuito e a

F

Este circui

EstProgrammmais estámicrocontrgerenciadomicrocontr

O sdisponível

Aplicações p

12 CIRCU

a este circ9 (RS-232)a foto abai

Figura 2.

to a partir

Figu

te circuito mer) ou comável, poisrolador, eor.hex mrolador pelsoftware dem http:/

práticas de Eletr

UITO COM

cuito simple) e uma foixo mostra

34: Circu

da porta C

ura 2. 35:

de gravaçm WinPic (s após ae mesmo

mostrou-se la porta USde gravaç//www.4

rônica e microco

M84 PARA

es de gravonte exterm o esque

uito COM8

COM DB9 p

: Esquema

ção funcion(detectado a detecção indican

gravado SB nos sistção do ge4shared.co

ontroladores em

[ 51 ]

A GRAVAÇ

vação só é rna de 5V,ema simple

84 para g

pode ser v

a de ligaç

na com o como COM

ão do mndo ERRO

corretamtemas opererenciador.om/get/1

m sistemas comp

ÇÃO DO ge

necessário, que podes de ligaçã

ravação d

isualizado

ção do co

software M84 Progra

microcontroOR: Progmente paracionais W.hex pode1uP85Xru

putacionais, por

erenciado

o 3 resistoe ser obtião dos pino

do gerenc

na figura a

nector se

PICPgm (dammer). Elador, é

gramming ra geren

Windows@® ser baix

u/winpicp

r Sandro Jucá

or.hex

ores de 10kda da poros.

ciador.hex

abaixo.

erial.

detectado Este último

possível failed, o

ciar grav®, Linux e

xado atrvéprCOM84.

k, um caborta USB. O

x

como JDMo se mostra

gravar oo arquivovações noe Mac OSXés do link.html.

o O

M a o o o .

k,

Page 52: Apostila_CPIC

Apómicrocontrpinos do pressione o programgravação, gerenciadoapareça “corretame

Aplicações p

Figura 2

ós a instarolador. UmPC, vá p"Initialize"

ma está pselecione

or.hex. Co“Programmente.

práticas de Eletr

2. 36: Tel

alação, exma vez quara "Inter". Se o softpronto pare em Fileomo citadomed Failed

rônica e microco

a de conf

ecute o pue o microcrface", seletware dissera gravar e Load &o anteriormd”, é prová

ontroladores em

[ 52 ]

figuração

programa. controladoecione " er que a ino gerenc

& Programmente, mesável que

m sistemas comp

do softw

Na guia or é conectCOM84 prnicializaçãociador.hex

mDevice e smo que, o gerenci

putacionais, por

ware de gr

"Device, tado à portrogrammero foi um êx

no microdepois s

após a griador.hex

r Sandro Jucá

ravação.

Config", rta COM RSr for seriaxito "Succe

ocontroladoselecione ravação e tenha sid

escolha oS-232 de 9al port", eess", entãoor. Para ao arquivoverificaçãoo gravado

o 9 e o a o o o

Page 53: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 53 ]

Figura 2. 37: Tela de confirmação de reconhecimento do circuito.

PERIFÉRICOS INTERNOS DO MICROCONTROLADOR

3.1 CONVERSOR A/D

O objetivo do conversor analógico-digital (AD) é converter um sinal analógico, geralmente de 0 a 5V, em equivalentes digitais. Como pode ser visto, algumas configurações permitem ainda que os pinos A3 e A2 sejam usados como referência externa positiva e negativa, fazendo com que uma leitura seja feita em uma faixa de tensão mais restrita como, por exemplo, de 1 a 3 Volts.

Figura 3. 1: Diagrama de blocos interno do conversor A/D.

Em C, o conversor AD pode ser ajustado para resolução de 8 bits (#device adc=8 armazenando o resultado somente no registro ADRESH) ou 10 bits (#device adc=10). Para um conversor A/D com resolução de 10 bits e tensão de referência padrão de 5V, o valor de cada bit será igual a 5/(210 - 1) = 4,8876 mV, ou seja, para um resultado igual a 100 (decimal), teremos uma tensão de 100* 4,8876 mV = 0,48876 V. Note que a tensão de referência padrão (Vref) depende da tensão de alimentação do PIC que normalmente é 5V. Se a tensão de alimentação for 4V, logo a tensão de referência (Vref) também será 4V. Para um conversor A/D com resolução de 10 bits e tensão de referência de 5V, o valor de cada bit será igual a 5/(28 - 1) = 19,6078 mV, ou seja, para um resultado igual a 100 (decimal), é necessário uma tensão de 100 * 19,6078 mV = 1,96078 V, quatro vezes maior. É comum se utilizar o conversor AD com sensores de temperatura (como o LM35), luminosidade (como LDRs), pressão (STRAIN-GAGE), tensão, corrente, humidade, etc..

Page 54: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 54 ]

Figura 3. 2: Uso de periféricos no conversor A/D.

Para utilizar este periférico interno, basta:

setup_adc_ports (AN0_TO_AN2); //(Seleção dos pinos analógicos 18F2550)

setup_adc(ADC_CLOCK_INTERNAL ); //(selecionar o clock interno)

Veja a nomenclatura dos canais analógicos de cada modelo, dentro da biblioteca do CCS na pasta Device. Depois, no laço infinito, basta selecionar o canal para leitura, esperar um tempo para a seleção física e então ler o canal AD. set_adc_channel(0); //Seleciona qual canal vai converter delay_ms (1); // aguarda um milisegundo para comutar para o canal 0 valor = read_adc(); // efetua a leitura da conversão A/D e guarda na variável valor

3.1.1 AJUSTE DE RESOLUÇÃO DO SENSOR E DO CONVERSOR AD DE 8 BITS

O ajuste da resolução do conversor AD se dá aproximando a tensão de fundo de escala do sensor (VFS) à tensão de referencia do conversor (VREF). Para isso existem duas técnicas de ajuste por Hardware:

Para este tópico é utilizado como exemplo de ajuste da resolução do conversor AD, o

sensor de temperatura LM35 que fornece uma saída de tensão linear e proporcional com uma resolução de 10mV a cada °C.

3.1.2 AJUSTE DA TENSÃO DE FUNDO DE ESCALA COM AMPOP

Para conversores AD de 8 bits e VREF de 5V, a resolução máxima é de 19,6mV (R= VREF /

(2n-1). Dessa forma, como a Resolução do sensor é 10mV/°C (RS), é necessário aplicar um

Page 55: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 55 ]

ajuste de resolução com um ganho na tensão de fundo de escala do sensor para que cada grau possa ser percebido pelo conversor do microcontrolador. A forma mais comum de ganho é a utilização de amplificadores operacionais não inversores. Veja mais detalhes no material de apoio no final dessa apostila. A tensão de fundo de escala (VFS) está relacionada à Temperatura Máxima desejada de medição (TMAX), onde VFS = RS(10mV/°C) * TMAX e o Ganho (G) de aproximação da tensão de fundo de escala (VFS) à tensão de referencia (VREF) é dado por G = VREF / VFS, ou seja, para uma Temperatura Máxima desejada de 100°C, o ganho deve ser aproximadamente 5.

Figura 3. 3: AMP-OP não inversor.

A aproximação da tensão de fundo de escala (VFS) à tensão de referencia (VREF) é

realizada para diminuir a relevância de ruídos em determinadas faixas de temperatura.

3.1.3 AJUSTE DA TENSÃO DE REFERÊNCIA COM POTENCIÔMETRO

Outra forma mais simples de ajuste por Hardware (aumento da resolução do

conversor AD) é a aproximação da tensão de referencia (VREF) à tensão de fundo de escala (VFS) através da diminuição da tensão de referência (VREF) com o uso de um potenciômetro (divisor de tensão). Por exemplo, um conversor AD de 8 bits com uma tensão de referência (VREF) de 2,55V no pino A3, apresenta uma resolução de 10mV por bit (2,55/(28-1)), ou seja, a mesma sensibilidade do sensor LM35 de 10mV/°C . Percebe variação de cada °C.

3.1.4 CONVERSOR AD DE 10 BITS

Para conversores de 10 bits, com maior resolução (4,89 mV), o ajuste

(escalonamento) é realizado geralmente por software, em linguagem C, que possui um elevado desempenho em operações aritméticas.

OBS.: O ganho de tensão de um circuito poderia ser simulado por software com os comandos: Int32 valorsensor= read_adc(); Int32 VFS = 4 * Valorsensor;

A fórmula utilizada pelo programa no PIC para converter o valor de tensão fornecido pelo sensor LM35 em uma temperatura é: ANALÓGICO DIGITAL 5V = 5000mV -> 1023

Page 56: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 56 ]

T(°C)* 10mV/°C -> (int32)read_adc()

T (ºC) = 500 * (int32)read_adc()/1023

onde (int32)read_adc() é o valor digital obtido a partir da temperatura (T(ºC)) analógica medida. Esta variável é configurada com 32 bits (int32), porque ela recebe os valores dos cálculos intermediários e pode estourar se tiver menor número de bits, pois uma variável de 16 bits só suporta valores de até 65.535. A tensão de referência do conversor é 5V e como o conversor possui 10 bits de resolução, ele pode medir 1023 variações.

3.1.5 OBTENÇÃO DE UM VOLTÍMETRO ATRAVÉS DO CONVERSOR AD COM A VARIAÇÃO DE UM POTENCIÔMETRO

--------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> //Leitura de tensão em mV com variação de um potenciômetro #include <usb_san_cdc.h>// Biblioteca para comunicação serial virtual int32 tensao; main() clock_int_4MHz(); usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com a usb do PC setup_adc_ports(AN0); //Habilita entrada analógica - A0 setup_adc(ADC_CLOCK_INTERNAL); while(1) //ANALÓGICO DIGITAL(10 bits) set_adc_channel(0); // 5000 mV 1023 delay_ms(10); // tensao read_adc() tensao= (5000*(int32)read_adc())/1023; printf (usb_cdc_putc,"\r\nA tensao e' = %lu C\r\n",tensao); // Imprime pela serial virtual output_high(pin_b7); delay_ms(500); output_low(pin_b7); delay_ms(500); ---------------------------------------------------------------------------------------------------------------

Page 57: Apostila_CPIC

3.1.6 LEI

-------------#include < #include < int16 temp main() clock_int_4usb_cdc_inusb_init();usb_task() setup_adcsetup_adc while(1) set_adc_cdelay_ms(temperatu(430*tempprintf (usb output_higdelay_ms(output_lowdelay_ms(-------------

Aplicações p

Figura

ITURA DE

-------------<SanUSB.h

<usb_san_

peratura;

4MHz(); nit(); // In; // Inicializ); // Une o

c_ports(NAc(ADC_CLO

hannel(0);(10); ura=430*rep) b_cdc_putc

gh(pin_b7)(500); w(pin_b7);(500); -------------

práticas de Eletr

a 3. 4: Con

E TEMPER

-------------h>

_cdc.h>// B

icializa o pza o protoc

o periférico

A0); //HabOCK_INTER

;

ead_adc()/

c,”\r\nTem

); // Pisc

;

-------------

rônica e microco

nexão do

RATURA CO

-------------

Biblioteca p

protocolo Ccolo USB com a US

ilita entradRNAL);

/1023; //V

peratura d

a Led em o

-------------

ontroladores em

[ 57 ]

potenciô

OM O LM

-------------

para comu

CDC

SB do PC

da analógic

Vref = 4,

do LM35 =

operação n

-------------

m sistemas comp

metro no

35 ATRAV

-------------

nicação se

ca – A0

,3V devido

%lu C\r\n

normal

-------------

putacionais, por

converso

VÉS DO C

-------------

erial virtual

o à qued

”,temperat

-------------

r Sandro Jucá

or A/D.

ONVERSO

-------------

l

da no dio

tura);

-------------

OR AD

-------------

odo, então

-------------

o

Page 58: Apostila_CPIC

3.1.7 TER

Um termiresistênciagrande vasimples, co

Convém le

LINEARIZ

Um onde um tde tensão

Aplicações p

Figu

RMISTOR

stor é umas variam ariação comomo mostr

embrar que

ZAÇÃO

forma mutermistor N. O circuit

práticas de Eletr

ra 3. 5: Le

R

ma resistêcom a temm a tempera a figura

Figu

e a respost

Figu

uito comumNTC é coneo do diviso

rônica e microco

eitura de

ncia variámperatura, eratura. A baixo.

ura 3. 6: C

ta de um te

ura 3. 7: R

m de lineaectado em or contém

ontroladores em

[ 58 ]

tempera

ável com só que os

A ligação d

Conexão

ermistor n

Resposta

arização dosérie com

m uma font

m sistemas comp

tura via m

a temperas termistor

do termisto

do termis

ão é linear

do termis

o termistor um resistote de tensã

putacionais, por

monitor se

atura. Na res são feior ao micr

stor.

r, como mo

stor.

r é por moor normal ão de refe

r Sandro Jucá

erial.

realidadeitos para trocontolado

ostra a figu

odalidade formando

erência (Vr

e todas asterem umaor é muito

ura abaixo

da tensãoum diviso

ref) igual a

s a o

.

, r a

Page 59: Apostila_CPIC

2,5V. Isto Se o valor ambiente ambiente

3.2 ME

O m

3.2.1 ME

A m

programa apagável ea byte, o q

3.2.2 ME

A msystem), programa

Aplicações p

tem o efe do resisto(250 C), en(como vist

MÓRIAS

microcontro

MÓRIA D

memória decompilado

eletronicamque a torna

MÓRIA D

memória dse localizaque está s

práticas de Eletr

ito de prodor R25C escontão a regto em figur

Figura

DO MICR

olador apre

DE PROGR

e programao. Essa memente), maa mais eco

DE INSTRU

de instruçõa dentro sendo proc

rônica e microco

duzir uma tolhida for i

gião de tenra abaixo).

a 3. 8: Lin

ROCONTRO

esenta dive

RAMA

a flash, é oemória é uas só podeonômica.

UÇÕES

ões, que éda CPU p

cessado e e

ontroladores em

[ 59 ]

tensão na igual ao da

nsão linear

nearizaçã

OLADOR

ersos tipos

o local onduma espéce ser grava

é uma esppara compexecução d

m sistemas comp

saída que a resistêncserá simé

ão do term

s de memó

de são gravcie de EEPda e apag

pécie de Bparação code uma açã

putacionais, por

seja linearcia do termétrica em to

mistor.

ria, entre e

vados o cóROM (memada compl

BIOS (binaom o códão corresp

r Sandro Jucá

r com a temmistor na tetorno da te

elas:

ódigo hexamória progletamente

ary input adigo hexadpondente.

mperaturaemperaturaemperatura

decimal dogramável ee não byte

and outputdecimal do

. a a

o e e

ut o

Page 60: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 60 ]

3.2.3 MEMÓRIA EEPROM INTERNA

A maioria dos modelos da família PIC apresenta memória EEPROM interna, com dimensões de 128 ou 256 bytes. Em algumas aplicações, a EEPROM interna é muito útil para guardar parâmetros de inicialização ou reter valores medidos durante uma determinada operação de sensoreamento.

O PIC18F2550 contém 256 bytes (posições 0 a 255) de EEPROM interna, que podem ser escritas facilmente utilizando a instrução write_eeprom(posicao, valor); e lidas com a instrução valor2=read_eeprom (posicao);. O projeto de controlde de acesso com teclado matricial abaixo mostra o uso desta memória.

3.2.4 MEMÓRIA DE DADOS (RAM)

A memória RAM do microcotrolador 18F2550 possui 2Kbytes disponíveis para propósito geral (entre 000h a 7FFh). No final da RAM (entre F60h e FFFh) estão localizados os registros de funções especiais (SFR), que servem para configurar os periféricos internos do microcontrolador. Esses registros podem ser configurados bit a bit através do seu endereço com a diretiva #byte que funciona para apontar uma posição de memória (#byte OSCCON=0XFD3 -> OSCCON=0B01100110; //Configura oscilador interno para 4MHz) ou por funções proprietárias do compilador (setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); set_timer1(3036); // configura o timer 1 com clock interno e dividido por 8 para contar 62500 = 65536-3036 – Tempo total = 62500 x 8us = 0,5 segundos).

Page 61: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 61 ]

Figura 3. 9: Registros de funções especiais.

3.2.5 EXEMPLO DE APLICAÇÃO

3.2.5.1 CONTROLE DE ACESSO COM TECLADO MATRICIAL

O teclado matricial é geralmente utilizado em telefones e em controle de acesso de portas com senhas pré-definidas. O controle de acesso é feito, na maioria das vezes, com sistemas microcontrolados por varredura das linhas, aterrando individualmente as colunas do teclado. Caso alguma tecla seja pressionada, o pino da tecla correspondente também será aterrado e indicará a tecla digitada.

Page 62: Apostila_CPIC

Paraarmazenarexemplo, disponíveiscontida na

Fig

Notpossibilitarnovamente PONTEIRPonteirosExemplo p unsigned*p='7'; //++p; //In Programa próprio tec

Aplicações p

a reconher o valor na memós entre 0a memória

gura 3. 1

te que o prr a inserçe a memór

ROS s guardampara declar

d int16 p=/ Conteúdoncrementa

de controeclado atrav

práticas de Eletr

Fi

ecer uma das teclasria de dad

000h a 7Fde progra

1: Formas

rograma deção de noria de prog

m endereçrar um pon

=100; o endereçaa posição

ole de acesvés de uma

rônica e microco

gura 3. 1

senha ds digitadasdos RAM FFh), depoma flash (“

s de comp

e controle ovas senhgrama do m

ços de menteiro:

//ponteirado por p épara receb

sso com ara senha de

ontroladores em

[ 62 ]

0: Teclad

digitada es em seqü(pode-se

ois compa“ROM”) ou

paração c

de acessohas na EEmicrocontro

emória de

ro igual a pé igual a ‘7ber próxim

rmazenamee administr

m sistemas comp

do Matrici

m um teüência emutilizar qurá-la com

u na EEPRO

com a sen

o em anexoEPROM, seolador.

e program

posição 107’(ASC II) omo dado.

mento de setrador (mes

putacionais, por

al.

eclado mam alguma uaisquer po uma sen

OM interna

nha pré-p

o utiliza a Eem a nec

ma.

0 ou 0x37.

enhas na Estre):

r Sandro Jucá

atricial é memória, osições donha pré-pa.

rogramad

EEPROM incessidade

EEPROM in

necessáriocomo po

os 2Kbytesrogramada

da.

nterna parade grava

nterna pelo

o r s a

a r

o

Page 63: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 63 ]

///////////////////////////////////////////////////////////////////////// ///Teclado Matricial insere novas senhas pelo teclado com a senha mestre// /////oscilador interno 4 de MHz////////////////////////////////////////// //Se faltar energia ou existir um reset, as senhas armazenadas não são //perdidas e é possivel armazenar novas senhas após a última senha gravada //É possível apagar senhas lendo a EEPROM e zerando as posições da senha ex.:write_eeprom( endereco, 0 ); #include <SanUSB.h> #include <usb_san_cdc.h>// Biblioteca para comunicação serial char caract,tecla0,tecla1,tecla2,tecla3; unsigned int16 p=100,i,j; unsigned int mult=8,k=0,n=0; int1 led,flag=0,flag2=0,flag3=0; ////////////////////////////////////////////////////////////////////////////////// #int_timer1 // Interrupção do timer 1 void trata_t1 () // Conta 62.500us x 8 = 0,5s --mult; if (!mult) mult=8; // 8 x0,5s - 4 seg p=100; tecla0='F';tecla1='F';tecla2='F';tecla3='F'; // volta a posição de origem a cada 4 seg ////////////////////////////////////////////////////////////////////////////////// main() clock_int_4MHz(); port_b_pullups(true); usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com a usb do PC enable_interrupts (global); // Possibilita todas interrupcoes enable_interrupts (int_timer1); // Habilita interrupcao do timer 1 setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8);// inicia o timer 1 em 8 x 62500 = 0,5s set_timer1(3036); //write_eeprom( 239, 0);//Pode apagar toda a memória de senhas zerando k if(read_eeprom(239)>0 && read_eeprom(239)<40) k=read_eeprom(239); // Carrega a útima posição livre da eeprom (k) antes do reset armazenada em 239 while (1) // Reconhecimento de tecla por varredura output_low(pin_b0);output_high(pin_b1);output_high(pin_b2); if(input(pin_b3)==0) *p='1'; flag=1; while(input(pin_b3)==0);delay_ms(200);

Page 64: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 64 ]

if(input(pin_b4)==0) *p='4'; flag=1; while(input(pin_b4)==0);delay_ms(200); if(input(pin_b5)==0) *p='7'; flag=1; while(input(pin_b5)==0);delay_ms(200); if(input(pin_b6)==0) *p='*'; flag=1; while(input(pin_b6)==0);delay_ms(200); output_high(pin_b0);output_low(pin_b1);output_high(pin_b2); if(input(pin_b3)==0) *p='2'; flag=1; while(input(pin_b3)==0);delay_ms(200); if(input(pin_b4)==0) *p='5'; flag=1; while(input(pin_b4)==0);delay_ms(200); if(input(pin_b5)==0) *p='8'; flag=1; while(input(pin_b5)==0);delay_ms(200); if(input(pin_b6)==0) *p='0'; flag=1; while(input(pin_b6)==0);delay_ms(200); output_high(pin_b0);output_high(pin_b1);output_low(pin_b2); if(input(pin_b3)==0) *p='3'; flag=1; while(input(pin_b3)==0);delay_ms(200); if(input(pin_b4)==0) *p='6'; flag=1; while(input(pin_b4)==0);delay_ms(200); if(input(pin_b5)==0) *p='9'; flag=1; while(input(pin_b5)==0);delay_ms(200); if(input(pin_b6)==0) *p='!'; flag=1; while(input(pin_b6)==0);delay_ms(200); // Guarda tecla pressionada if (flag==1) if(p==100)tecla0=*p; if(p==101)tecla1=*p; if(p==102)tecla2=*p; if(p==103)tecla3=*p;flag2=1; //A flag2 avisa que senha foi digitada completamente mult=4; //cada tecla tem 2 seg para ser pressionada a partir da primeira printf (usb_cdc_putc,"\r\nValor das teclas digitadas: %c %c %c %c\r\n",tecla0,tecla1,tecla2,tecla3); printf (usb_cdc_putc,"Endereco para onde o ponteiro p aponta: %lu\r\n",p); ++p; // Incrementa posição para próxima tecla if(p>103)p=100; //**************************************************************************** if (tecla0=='3' && tecla1=='6'&& tecla2=='9'&& tecla3=='!'&& flag2==1) flag3=1; //Indica que a senha mestre autorizou e a nova senha pode ser armazenada flag2=0; //Garante que somente a próxima senha, diferente da senha mestre, será armazenada output_high(pin_c0);printf (usb_cdc_putc,"\r\nSenha Mestre!\r\n");delay_ms(1000); output_low(pin_c0); //**************************************************************************** if (flag2==1 && flag3==1) //Se a senha mestre já foi digitada (flag3) e a nova senha do usuário também foi digitada (flag2) write_eeprom( 4*k, tecla0 ); //Grave a nova senha write_eeprom( (4*k)+1, tecla1 ); write_eeprom( (4*k)+2, tecla2 ); write_eeprom( (4*k)+3, tecla3 );

Page 65: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 65 ]

++k; // incremente as posições para armazenar nova senha printf (usb_cdc_putc,"\r\nSenha armazenada\r\n"); write_eeprom( 239, k); printf(usb_cdc_putc,"proximo k=%u\r\n",k);//Guarda a útima posição livre antes do reset na posição 239 da EEPROM flag3=0; //Zera a flag3 da nova senha //**************************************************************************** for(i=0; i<6; ++i) //Lê EEPROM for(j=0; j<40; ++j) printf(usb_cdc_putc,"%2x ", read_eeprom(i*40+j) );//Leitura da eeprom interna printf(usb_cdc_putc,"\r\n"); //**************************************************************************** // Compara conjunto de teclas pressionadas com senhas armazenadas na eeprom if (flag2==1) for(n=0;n<=k;n++) if (tecla0==read_eeprom(4*n) && tecla1==read_eeprom(4*n+1) && tecla2==read_eeprom(4*n+2)&& tecla3==read_eeprom(4*n+3)) output_high(pin_c0); printf (usb_cdc_putc,"\r\nAbre a porta!\r\n");delay_ms(3000); output_low(pin_c0); // abre a porta //**************************************************************************** flag=0; flag2=0; //Zera as flags para que novas senhas possam ser digitadas led = !led; // inverte o led de operação output_bit (pin_b7,led); delay_ms(100); --------------------------------------------------------------------------------------------------------------- valor = read_adc(); // efetua a leitura da conversão A/D e guarda na variável valor

3.3 MODULAÇÃO POR LARGURA DE PULSO PELO CCP

O Periférico interno independente CCP (Capture/Compare/PWM) é responsável por comparação de sinais, bem como, gerar um sinal de sáida em PWM (CCP1CON=0x0C), ou seja, modulação por largura de pulso (pulse width modulation). Dessa forma, é possível

Page 66: Apostila_CPIC

realizar o emulação

A geramplitude pulsos emsaturação chaveame

O peré o ciclo damplitude

No módo timer 2 do timer 2 e consequ

O valor inserido pesignificativmenos sigtrabalho.

Mais de

Aplicações p

PWM pelo pelo proce

ração do Pconstante

mitidos na do transisnto.

ríodo T0 é ode trabalhem nível l

dulo CCP, ode 8 bits cquando centementedigital (Vdelo usuáriovos do valognificativos

etalhes no v

práticas de Eletr

periférico essador doPWM é proe (+5V por

base de stor e, cons

o intervalo ho (duty-ciógico alto.

F

o registro com prescahega ao vae a frequêndig) de 10 o. O Vdig or digital, do valor d

vídeo: http

rônica e microco

interno CCmicrocont

oduzida, ger exemplo)uma chav

sequentem

de tempo icle), ou se

Figura 7. 1

PR2 é carraler (multipalor de PRncia desejabits do cicO Vdig é e nos bits

digital, e s

p://www.yo

ontroladores em

[ 66 ]

CP do micrtrolador, coeralmente,), tendo emve eletrôn

mente, men

que se regeja, o tem

1: Ciclo de

regado parplicador de

R2, seta o fada do PWlo de trabacarregado s 5 e 4 do

serve de re

outube.com

m sistemas comp

rocontroladomo mostr, pelo chavm vista qunica, comonor a tensã

gistra o pempo em q

e trabalho

ra servir de tempo deflip-flop do

WM (freqPWalho, obtidem CCPR

o CCP1COeferência p

m/watch?v

putacionais, por

dor ou porrado no iteveamento ue quanto o um traão lado da

eríodo repeque o puls

o.

e referênce geralmeno CCP para WM). o do valor

R1L, que guN são car

para o time

v=lB21b3zA

r Sandro Jucá

r software em 3.3.1. de uma temenor a laansistor, m carga, res

etitivo do pso perman

cia de contnte 4 ou 16 gerar o p

percentuauarda os 8rregados oer2 resetar

A4Ac

através de

ensão comargura dosmenor é asultante do

pulso e o τ0ece com a

tagem para6). Quandoeríodo (T0)

al (0 a 100)8 bits maisos dois bitsr o ciclo de

e

m s a o

0 a

a o )

) s s e

Page 67: Apostila_CPIC

CONTR

A finapulsos (PWinerente d

O pro

período cocorrespondtrabalho. -------------#include < #define m#define le unsigned iint1 flag1, main() clock_int_4 port_b_puincton=2; duty cicle guardatonif (guardat while (1) ton=incton if (!input(p

Aplicações p

ROLE PW

alidade desWM) é realo circuito e

ograma abonstante dde a 1ms,

-------------<SanUSB.h

motor pin_bed pin_b0

int ton,toff flag2;

4MHz();

ullups(true)inctoff=18)

n=read_eepton>0 &&

n; toff=inc

pin_b1)) f

práticas de Eletr

WM POR SO

ste controlizar uma cem alta fre

aixo mostrde 20ms, , ou seja,

-------------h>

b7

f,incton,inc

); 8; //Períod

prom(10);gguardaton

ctoff;

flag1=1;

rônica e microco

OFTWARE

e de velocconversão dequência.

Figu

ra o controonde cadou seja,

-------------

ctoff,guard

do de 20m

guardatoffn<=20) in

ontroladores em

[ 67 ]

E DE VELO

cidade comdigital-ana

ura 7. 2: P

ole de velda incremeum acrésc

-------------

aton,guard

s - Passo

f=read_eepncton=guar

m sistemas comp

OCIDADE

m a modulalógica que

PWM.

ocidade deento ou decimo ou d

-------------

datoff;

mínimo de

prom(11);rdaton; inc

putacionais, por

DE UM M

ação de tee acontece

e um motrecremento

decréscimo

-------------

e tempo =

ctoff=guard

r Sandro Jucá

MOTOR CC

ensão por devido à i

ro CC por o da ondao de 5% n

-------------

= 1ms (5%

rdatoff;

C

largura dempedância

PWM com quadrada

no ciclo de

-------------

% (1/20) do

e a

m a e

o

Page 68: Apostila_CPIC

if (inctoinctoff;outwrite_eepr(flag1==1 if (!input(pif (inctoincton;outwrite_eepr ou w ou w -------------A figura adesse circu

INTER

As qualquer mum endere

Aplicações p

on<20 tput_high(lrom(10,inc

1) e se o bo

pin_b2)) foff<20 tput_low(lerom(10,inc

utput_highwhile(ton)

utput_low(while(toff)

-------------

abaixo moscuito no víd

RRUPÇÕ

INTERRU

interrupçõmomento) eço para tr

práticas de Eletr

&& flagled);//se ncton);writeotão já foi

flag2=1; && flag

ed); cton);write

h(motor); --ton;delay

(motor); --toff;dela

-------------stra o circudeo http:/

F

ÕES E T

UPÇÕES

ões são cacausando

ratamento

rônica e microco

g1==1 ão chegou

e_eeprom(1solto (inpu // a

g2==1

e_eeprom(1

y_ms(1);

ay_ms(1); -------------

uito monta//www.yo

igura 7. 3

EMPOR

ausadas atum desvioda interru

ontroladores em

[ 68 ]

&& inpu no máxim11,inctoff)ut(pin_b1)a onda qua

&& inp

11,inctoff)

//Parte a

//Parte b

-------------ado para cooutube.co

3: PWM co

RIZADO

través de o no proceupção. Uma

m sistemas comp

put(pin_b1)mo (incton<; //se) incremen

adrada e gu

put(pin_b2)

;

lta da ond

baixa da on

-------------com este eom/watch

om Mosfe

ORES

eventos aessamento.a boa anal

putacionais, por

) ) <50), e o botãnte uarde os va

) )

a quadrada

nda quadra -------------

exemplo. Vh?v=6IIH

et.

assíncrono Este desvogia para

r Sandro Jucá

flag1=0;+

ão foi p

valores na e

flag2=0;+

a

ada

-------------Veja o funcH02dbboE

os (podemvio tem commelhor en

++incton;--

pressionado

eeprom

++inctoff;--

-------------cionamentoE .

ocorrer amo destino

ntendermos

-

o

-

to

a o s

Page 69: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 69 ]

o conceito de interrupção é a seguinte: você está trabalhando digitando uma carta no computador quando o seu telefone toca. Neste momento você, interrompe o que está fazendo, para atender ao telefone e verificar o que a pessoa do outro lado da linha está precisando. Terminada a conversa, você coloca o telefone no gancho novamente e retoma o seu trabalho do ponto onde havia parado. Observe que não precisamos verificar a todo instante, se existe ou não alguém na linha, pois somente quando o ramal é chamado, o telefone toca avisando que existe alguém querendo falar com você.

Após do atendimento das interrupções, o microcontrolador retorna exatamente ao ponto onde parou no programa antes de atendê-la. As interrupções mais comuns na família PIC18F são: - pela interrupção externa 0 (Pino B0) -> enable_interrupts(int_ext); - pela interrupção externa 1 (Pino B1) -> enable_interrupts(int_ext1); - pela interrupção externa 2 (Pino B2) -> enable_interrupts(int_ext2); - pelo contador/temporizador 0 -> enable_interrupts(int_timer0); - pelo contador/temporizador 1 -> enable_interrupts(int_timer1); - pelo contador/temporizador 2 -> enable_interrupts(int_timer2); - pelo canal de comunicação serial -> enable_interrupts(int_rda); //serial

As interrupções do PIC são vetorizadas, ou seja, têm endereços de início da interrupção fixos para a rotina de tratamento. No PIC18F2550 o endereço de tratamento é 0x08. No programa em C basta escrever a função de tratamento da interrupção após #, e o compilador fará o direcionamento do códico automaticamente para essa posição.

INTERRUPÇÕES EXTERNAS

O modelo PIC18F2550 possui três interrupções externas, habilitadas nos pinos B0 (ext) , B1 (ext1) e B2 (ext2), que atuam (modo default) quando os pinos são aterrados. Quandos atuados o processamento é desviado para #int_ext, #int_ext1 ou #int_ext2, respectivamente, para que a interrupção possa ser tratada por uma função específica, que no caso do exemplo é void bot_ext().

Dentro da função principal deve-se habilitar o “disjuntor” geral das interrupções, enable_interrupts(global); e depois a interrupção específica, por exemplo enable_interrupts(int_ext); como mostra o exemplo com aplicação de interrupção externa e também interrução do temporizador 1. --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> BYTE comando; short int led; int x; #int_timer1 void trata_t1 () led = !led; // inverte o led - pisca a cada 0,5 seg. output_bit (pin_b7,led); set_timer1(3036 + get_timer1());

Page 70: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 70 ]

#int_ext void bot_ext() for(x=0;x<5;x++) // pisca 5 vezes após o pino ser aterrado (botão pressionado) output_high(pin_B5); // Pisca Led em B5 delay_ms(1000); output_low(pin_B5); delay_ms(1000); main() clock_int_4MHz(); enable_interrupts (global); // Possibilita todas interrupcoes enable_interrupts (int_ext); // Habilita interrupcao externa 0 no pino B0 enable_interrupts (int_timer1); // Habilita interrupcao do timer 1 setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8);// configura o timer 1 em 8 x 62500 = 0,5s set_timer1(3036); // Conta 62.500us x 8 para estourar= 0,5s while (1); //Loop infinito (parado aqui) ---------------------------------------------------------------------------------------------------------------

Para habilitar a nomenclatura das as interrupções estão disponíveis em view > valid interrupts. Quando for utilizada alguma interrupção externa, é necessário inserir um resistor de pull-up externo de 1K a 10K para elevar o nível lógico do pino quando o mesmo for liberado evitando outra interrupção, pois o processador entende tristate e níveis intermediários de tensão como nível lógico baixo.

INTERRUPÇÃO DOS TEMPORIZADORES

O microcontrolador PIC 18F2550 tem quatro temporizadores, que são os timers 0, 1, 2 e 3. O timer 0 tem 16 bits, ou seja, pode contar até 65535μs (216) e um prescaler (divisor de frequência ou multiplicador de tempo) de até 256 (RTCC_DIV_256). Os timers 1 e 3 são idênticos com 16 bits e um prescaler de até 8 (RTCC_DIV_8). Por sua vez, O timer 2 possui 8 bits e um prescaler de até 16 (RTCC_DIV_16). Os timers incrementam até estourar, quando estouram, processamento é desviado para #int_timer, para que a interrupção possa ser tratada por uma função específica, que no caso do exemplo é void trata_t0 () e void trata_t1 (). O programa a seguir pisca um led em b5 na função principal main(), outro pela interrupção do timer 1 em b6 e um terceiro led em b7 pela interrupção do timer0. -------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> short int led0, led1; int vart1=2, vart3=4; // multiplicador de tempo

Page 71: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 71 ]

#int_timer0 void trata_t0 () //Função de taratamento, o Timer0 é configurado com o nome RTCC led0 = !led0; // inverte o led a cada 4 seg pois tem prescaler igual a 64 (RTCC_DIV_64) output_bit (pin_b7,led0); set_timer0(3036 + get_timer0()); // get_timer() carrega o timer compensando o tempo gasto no tratamento da interrupção #int_timer1 //O timer 1 e o timer 3 são idênticos, só basta modificar 1 por 3 na configuração void trata_t1 () --vart1; if(vart1==0) led1 = !led1; // inverte o led - pisca a cada 1 seg (vart1=2 x 0,5 seg) output_bit (pin_b6,led1); vart1=2; // necessita de multiplicador de tempo, pois o prescaler máximo é 8 (T1_DIV_BY_8) set_timer1(3036 + get_timer1()); // get_timer() carrega o timer compensando o tempo gasto no tratamento da interrupção main() clock_int_4MHz(); enable_interrupts (global); // Possibilita todas interrupcoes enable_interrupts (int_timer0); // Habilita interrupcao do timer 0 enable_interrupts (int_timer1); // Habilita interrupcao do timer 1 setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_64);// configura o prescaler do timer 0 em 64, tem prescaler até 256 set_timer0(3036); // Conta 62.500us x 64 para estourar= 4 seg setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8); // configura o prescaler do timer 1 em 8 x 62500us = 0,5 seg set_timer1(3036); // Conta 62.500us x 8 para estourar= 0,5 seg while (1) //Função principal pisca led em a5 output_high(pin_b5); delay_ms(500); output_low(pin_b5); delay_ms(500);

Page 72: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 72 ]

---------------------------------------------------------------------------------------------------------------

MULTIPLEXAÇÃO POR INTERRUPÇÃO DE TEMPORIZADORES

O programa abaixo mostra uma multiplexação de displays de 7 segmentos por interrupção dos temporizadores 0 e 1. O timer 0 incrmena a variável a ser multiplexada pelos displays e o timer 1 multiplexa a porta B dígitos de dezenas e dígitos de unidades até 99. --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> #byte port_b = 0xf81//Atribuição do nome portb para o registro da porta B localizado na posição 0xf81 int setseg[10] = 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; //Vetor com 10 elementos int flag=0; int i=0, z, dezena, unidade; //índice dezena,unidade (ponteiro) //****************************************** #int_timer0 void trata_t0 () //O Timer0 é configurado com o nome RTCC if(i<=99) ++i; if(i>99) i=0; set_timer0(3036 + get_timer0()); // get_timer() carrega o timer compensando o tempo gasto na interrupção //********************************************* #int_timer1 //O timer 1 e o timer 3 são idênticos, só basta modificar 1 por 3 na configuração //void trata_t1 () dezena=i/10; //dezena recebe o número inteiro da divisão por 10 unidade=i%10; //unidade recebe o resto da divisão por 10 switch(flag) case 0: output_high(pin_a0); //pin_a0 aciona transistor do comum das dezenas output_low(pin_a1); //pin_a3 aciona transistor do comum das unidades port_b = setseg[dezena]; //A porta B recebe o desenho do número das dezenas apontado pela variável dezena flag=1; break;

Page 73: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 73 ]

case 1: output_high(pin_a1); //selecionei a unidade output_low(pin_a0); port_b = setseg[unidade]; //A porta B recebe o desenho do número das unidades apontado pela variável unidade flag=0; break; set_timer1(55536 + get_timer1()); main() clock_int_4MHz(); set_tris_b(0b00000000);// Define os pinos da porta B como saída enable_interrupts (global); // Possibilita todas interrupcoes enable_interrupts (int_timer0); // Habilita interrupcao do timer 0 enable_interrupts (int_timer1); // Habilita interrupcao do timer 1 setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_8);// configura o prescaler do timer 0 em 64, prescaler até 256 set_timer0(3036); // Conta 62.500us x 8 para estourar= 0,5 seg setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_1); set_timer1(55536); // Conta 10000 us (10ms) para estourar while (1) //Função principal output_high(pin_a5); delay_ms(300); output_low(pin_a5); delay_ms(300); ---------------------------------------------------------------------------------------------------------------

------ EMULAÇÃO DE PORTAS LÓGICAS

Os operadores lógicos descritos abaixo adotam o padrão ANSI C, ou seja, podem ser utilizados por qualquer compilador em linguagem C direcionado à microcontroladores.

Page 74: Apostila_CPIC

Nescondionais

OPER&

Exemplos:if (segundum relógio if (x>0 &

Considere

É im

determinafísicas e aprograma.

Aplicações p

5.1 INÚME

sse caso, s geralmen

RADOR && ll !

dodec==05o para seta&& x<20)

5.2 I

as portas

mportante do sistemaas diversa.

práticas de Eletr

INSTRUÇEROS

os operante entre n

5 && (minar a flagwr(y=x;) //

INSTRUÇ

lógicas ab

salientar qa real. Atraas combina

rônica e microco

ÇÕES LÓG

adores sãúmeros int

nutodec==ite Estabelece

ÇÕES LÓG

aixo:

Figura 5.

que emulaçavés do ciações das

ontroladores em

[ 74 ]

GICAS P

o utilizadoteiros.

COOperaçOperaç

Operaçã

=00|| minu

endo faixa

ICAS BOO

1: Porta

ção é a reprcuito San mesmas

m sistemas comp

PARA TE

os para

OMANDO ção E (AND)ção OU (OR)ão NÃO (NOT

utodec==3

de valores

OLANAS B

s Lógicas

produção vUSB, é pocom apen

putacionais, por

STES CO

realizar o

) T)

0)) flagw

s para y.

BIT A BIT

s.

via softwarssível emunas uma f

r Sandro Jucá

ONDICION

operações

write=1;//

T

re das funçular as porfunção bo

NAIS DE

de testes

Analisando

ções de umrtas lógicasooleana no

E

s

o

m s o

Page 75: Apostila_CPIC

OPER

OperaçãOperação

OperaçãoOU exclu

O csaída do c

Figura

É imExclusivo éinverso douma expre

Exemplo microcontr

Aplicações p

RAÇÃO

o E (AND)o OU (OR)

o NÃO (NOsivo (XOR)

circuito abacircuito lógi

a 5. 2: Us

mportanteé possível o OU-Excluessão boole

Figura 5.

1: Elaborrolador.

práticas de Eletr

EXPR

)

O) ) aixo mostraico boolean

so de resis

e salientar construir

usivo. Isto eana em C

. 3: Outra

re um prog

rônica e microco

RESSÃO BLITERAS= A . S= A +

S= S= A

a as possívno é expre

stores de

que atraoutras opeé realizad

C e apresen

as funções

grama para

ontroladores em

[ 75 ]

BOOLEANAAL B

+ B B

veis entradessa de for

e pull dow

avés das oerações codo transforntando o re

s lógicas

a emular u

m sistemas comp

A EXPR

das booleama real at

wn para ap

operações omo NANDrmando a esultado e

a partir d

uma porta

putacionais, por

RESSÃO BEM C

S= A &S= A l S= !A

S= A ^anas nos pravés do L

plicar fun

básicas E, NOR e Cexpressãom um LED

de NOT, O

lógica OU-

r Sandro Jucá

BOOLEANAC & B B A ^ B inos B1, B

LED no pino

ção lógica

E, OU, NÃCoincidêncio booleanaD de saída.

OR e AND.

-Exclusivo

A

B2 e B3 e ao B7.

a 0/1.

ÃO e OU-a, que é o

a literal em

através do

a

-o m

o

Page 76: Apostila_CPIC

------------- #include short int A main() clock_int_4 while (TRU A=input(pB=input(p saida = Ados pinosoutput_bitalocado em ledpisca=!output_bitdelay_ms( ------------------- Exemplo booleano a

O program-------------#include <short int A main() clock_int_4 while (TRU A=input(pB=input(pC=input(p

Aplicações p

-------------<SanUSB.

A, B, saida,

4MHz();

UE)

pin_b1); //epin_b2); //e

A^B; //sas A e B t(pin_b7,sam saida

!ledpisca; /t(pin_b0,le(500);

-------------

2: Elaboabaixo.

Fig

ma para em-------------<SanUSB.hA, B, C, said

4MHz();

UE)

pin_b1); //epin_b2); //epin_b3); //e

práticas de Eletr

-------------h> // Emu, ledpisca;

entrada coentrada co

aida é igu

aida); //O

// ledpisca edpisca); //

-------------

re um pro

gura 5. 4:

mular de fo-------------h> // Emulda, ledpisc

entrada coentrada coentrada co

rônica e microco

-------------ulação de c

m pull-dowm pull-dow

al ao resu

pino_b7

é igual ao/ b0 recebe

-------------

grama e a

Exemplo

orma real e-------------ação de ci

ca;

m pull-dowm pull-dowm pull-dow

ontroladores em

[ 76 ]

-------------circuitos lóg

wn externown externo

ultado do

mostra o

o inverso de o valor d

-------------

a tabela ve

de circui

esse circuit-------------ircuitos lóg

wn externown externown externo

m sistemas comp

-------------gicos boole

o (resistor o (resistor

o OU-Exclu

o resultado

e ledpiscae ledpisca

-------------

erdade par

to combin

o é mostra-------------gicos boole

o (resistor o (resistor o (resistor

putacionais, por

-------------eanos (OU

conectado conectado

usivo obt

o do circu

-------------

a emular u

nacional (

ado abaixo-------------anos

conectado conectado conectado

r Sandro Jucá

--------------Exclusivo)

ao Terra) ao Terra)

tida pelas

uito lógico

-------------

uma o circ

(1).

o: -------------

ao Terra) ao Terra)

o ao Terra)

-------------)

s entradas

o booleano

-------------

cuito lógico

-------------

s

o

o

Page 77: Apostila_CPIC

saida = !b2 e b3 output_bit ledpisca=!output_bitdelay_ms( ------------------- Note que apenas a fcircuito bo

A00001111

Exemplo booleano a

-------------#include <short int A main() clock_int_4 while (TRU

Aplicações p

(!A & B) &

t(pin_b7,sa

!ledpisca; /t(pin_b0,le(500);

-------------

para emulfunção de ooleano é m

A 0 0 0 0

3: Elaboabaixo.

Fig

-------------<SanUSB.hA, B, C, D,

4MHz();

UE)

práticas de Eletr

& !C; //sa

aida); //O p

// ledpisca edpisca); //

-------------

ar qualqueconversão

mostarada

ENTRB00

00

re um pro

gura 5. 5:

-------------h> // Emulsaida, ledp

rônica e microco

aida do ci

pino_b7 m

é igual ao/ b0 recebe

-------------

er outro ciro em negrit

abaixo:

RADAS B 0 0 1 1 0 0 1 1

grama e a

Exemplo

-------------ação de ci

pisca;

ontroladores em

[ 77 ]

ircuito bo

mostra o res

o inverso de o valor d

-------------

rcuito booto (saida =

a tabela ve

S=

de circui

-------------ircuitos lóg

m sistemas comp

ooleano o

sultado do

e ledpiscae ledpisca

-------------

leano com= !(!A & B)

C 0 1 0 1 0 1 0 1

erdade par

S= (A & B)

to combin

-------------gicos boole

putacionais, por

btida pela

circuito ló

-------------

três entra) & !C). A t

SA

a emular u

) | !C |

nacional (

-------------anos

r Sandro Jucá

as entrad

ógico boole

-------------

adas, bastatabela verd

AIDA S 1 0 0 0 1 0 1 0

uma o circ

!(C & D)

(2).

-------------

das de b1,

eano

-------------

a modificadade desse

cuito lógico

-------------

,

r e

o

Page 78: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 78 ]

A=input(pin_b1); //entrada com pull-down externo (resistor conectado ao Terra) B=input(pin_b2); //entrada com pull-down externo (resistor conectado ao Terra) C=input(pin_b3); //entrada com pull-down externo (resistor conectado ao Terra) D=input(pin_b3); //entrada com pull-down externo (resistor conectado ao Terra) saida= (A & B) | !C | !(C & D); output_bit(pin_b7,saida); //O pino_b7 mostra o resultado do circuito lógico booleano ledpisca=!ledpisca; // ledpisca é igual ao inverso de ledpisca output_bit(pin_b0,ledpisca); // b0 recebe o valor de ledpisca delay_ms(500); --------------------------------------------------------------------------------------------------------------------- A tabela verdade deste circuito lógico é mostrada abaixo:

ENTRADAS SAIDA A B C D S 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1

A tabela verdade pode ser facilmente comprovada de forma real montando o circuito proposto.

5.3 EMULAÇÃO DE DECODIFICADOR PARA DISPLAY DE 7 SEGMENTOS

Antes de comentar sobre os decodificadores, vamos definir o que é um display de sete segmentos. O display de sete segmentos, é formado por sete leds. Quando necessita-se acender o número “0”, liga-se os leds correspondentes ao digito “0”, por exemplo, os segmentos a, b, c, d, e, f. Na figura abaixo, é mostrado um display de sete-segmentos e a

Page 79: Apostila_CPIC

respectivocomum. Nliga com V

Com

devemos u(anodo co560 ohms segmentosqueimado.

Os “desconheexemplo, display de reais ou em

Os 9307 (cato“desenhad

Aplicações p

os pinos. NNão esqueçVcc.

Figur

mo os segusar um re

omum), sen para umas, para te. decodificad

ecido” de em um có7 segmen

mulados, odecodificaodo comumdo” pelos s

práticas de Eletr

No lado dça que no

ra 5. 6: Di

gmentos sesistor emnão serão a fonte de er certeza

dores, invelinguagemódigo comntos. Os deou seja, redores de dm), recebesegmentos

rônica e microco

direito, os anodo com

isplay de

são leds, ecada segmqueimado5Volts. Uque não

erso dos com de máqu

preensível,ecodificadoproduzidosdisplays deem 4 bits dos displa

ontroladores em

[ 79 ]

dois tiposmum o led

7 segmen

então é nmento (ca

os. Normalma dica, sestá usa

odificadoreuina, como, como o

ores fixos ps via softwe 7 segmede entrada

ays.

m sistemas comp

s de displ liga com

ntos e con

necessário todo comumente se se for usarando um d

es, tem a fo o bináricódigo de

podem ser ware, como entos, coma para a d

putacionais, por

lays, anodGnd e no

nexão int

limitar a um), ou aputilizam rer um displdisplay co

função de o de entr

ecimal ou uconstruídoé o caso p

mo o 9317 decodificaç

r Sandro Jucá

do comumcatodo co

terna.

corrente, penas um esistores eay, teste a

om algum

converter rada mostrum desenos com porproposto. (anodo co

ção do núm

m e catodomum o led

para issono comumntre 220 eantes cadasegmento

um códigorado nesteho em umrtas lógicas

omum) e omero a se

o d

o m e a o

o e m s

o r

Page 80: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 80 ]

CI - 9317 Entradas Saídas Desen

ho /LT

/RBI

A0 A1 A2 A3 a b c d e f g ponto

L X X X X X L L L L L L L H teste H L L L L L H H H H H H H L apagaH H L L L L L L L L L L H H 0 H X H L L L H L L H H H H H 1 H X L H L L L L H L L H L H 2 H X H H L L L L L L H H L H 3 H X L L H L H L L H H L L H 4 H X H L H L L H L L H L L H 5 H X L H H L L H L L L L L H 6 H X H H H L L L L H H H H H 7 H X L L L H L L L L L L L H 8 H X H L L H L L L L H L L H 9

Para a emulação, ou seja, reprodução via software, de decodificadores de displays

de sete segmentos, os pinos do microcontrolador devem apresentar os seguintes valores mostrados na tabela abaixo:

TABELA (Anodo comum – zero no pino acende segmento) NÚMERO DISPLAY

B6 B5 B4 B3 B2 B1 B0 Porta B Hexadeci

mal g f e d c b a

0 1 0 0 0 0 0 0 0x40 1 1 1 1 1 0 0 1 0x79 2 0 1 0 0 1 0 0 0x24 3 0 1 1 0 0 0 0 0x30 4 0 0 1 1 0 0 1 0x19 5 0 0 1 0 0 1 0 0x12 6 0 0 0 0 0 1 0 0x02 7 1 1 1 1 0 0 0 0x78 8 0 0 0 0 0 0 0 0x00 9 0 0 1 0 0 0 0 0x10

Abaixo é mostrado um programa exemplo para contar de 0 a 9 com um display de

sete segmentos anodo comum. Dependendo dos display anodo ou catodo comum, como também dos pinos do microcontrolador ligados ao displays, é possível utilizar o mesmo programa abaixo, alterando apenas os valores dos elementos da matriz setseg[10]. --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> #byte port_b = 0xf81//Atribuição do nome portb para o registro da porta B localizado na posição 0xf81 da memória de dados

Page 81: Apostila_CPIC

int setsegelementosint i; //índ void main clock_int set_tris_ while(1) for (i=0 port_b delay_ ----------------------Exemplo:escrever, pinos do mcom um rabaixo mo

Aplicações p

[10] = 0xs que desendice i (pont

()

t_4MHz(); b(0b00000

0;i<10;i++

b = setseg_ms(500);

----------------------: Construaletra por lmicrocontrresistor deostra a liga

Figura

práticas de Eletr

x40,0x79,0nham de 0teiro)

0000);// De

+)

[i];

-------------- a um decoletra, a caolador e o

e 220Ω a 1ção do dis

a 5. 7: Co

rônica e microco

0x24,0x30,0 a 9

efine os pin

-----------

odificador eada segundos pinos do1KΩ para play de 7 s

onexão do

ontroladores em

[ 81 ]

,0x19,0x12

nos da por

-----------

emulado ado, a palao display enão queimsegmentos

o display 7

m sistemas comp

2,0x02,0x7

rta B como

-----------

atarvés de vra StoP.

em anodo mar os segs.

7 seg na p

putacionais, por

78,0x00,0x

o saída

-----------

diagramaÉ importacomum de

gmentos d

porta B d

r Sandro Jucá

10; //Vet

-----------

as de Karnante salienevem ser cdo display.

o PIC.

tor com 10

-----------

naugh paratar que osconectadosO circuito

0

-

a s s o

Page 82: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 82 ]

Os segmentos ascendem com zero no pino do microcontrolador (anodo comum). Note que como são somente quatro letras só é necessário duas entradas (Xe Y) para a decodificação.

Entradas Pin_b0 Pin_b1 Pin_b2 Pin_b3 Pin_b4 Pin_b5 Pin_b6 X Y a b c d e f g

S 0 0 0 1 0 0 1 0 0 t 0 1 1 1 1 0 0 0 0 o 1 0 1 1 0 0 0 1 0 P 1 1 0 0 1 1 0 0 0

Após a definição de cada segmento do display para representar os caracteres da palavra, é feita a simplicação de cada segmento através dos diagramas de Karnaugh abaixo para a construção da função de emulação do decodificador fixo.

a /Y Y b /Y Y c /Y Y d /Y Y

/X 0 1 /X 1 1 /X 0 1 /X 0 0

X 1 0 X 1 0 X 0 1 X 0 1

e /Y Y f /Y Y g /Y Y

/X 1 0 /X 0 0 /X 0 0

X 0 0 X 1 0 X 0 0

O programa abaixo mostra as funções de emulação do decodificador fixo para a palavra StoP obtidas dos diagramas de Karnaugh. --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> // Emulação de decodificador para display de 7 segmentos - palavra StoP short int X, Y; //Entradas short int a, b, c, d, e, f, g; //saídas void decodificador(short int X, short int Y) //Função auxiliar do decodificador fixo para StoP a=X ^ Y; output_bit(pin_b0,a); //Anodo comum b=!X | !Y; output_bit(pin_b1,b); c=Y; output_bit(pin_b2,c); d=X & Y; output_bit(pin_b3,d); e=!X & !Y; output_bit(pin_b4,e); f=X & !Y; output_bit(pin_b5,f); g=0 ; output_bit(pin_b6,g); main()

Page 83: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 83 ]

clock_int_4MHz(); while (1) decodificador(0,0); // Insere as entradas X=0 e Y=0 no decodiicador fixo – Saída letra S delay_ms(1000); decodificador(0,1); // Saída letra t delay_ms(1000); decodificador(1,0); // Saída letra o delay_ms(1000); decodificador(1,1); // Saída letra P delay_ms(1000); --------------------------------------------------------------------------------------------------------------- Exemplo 2: Construa um decodificador emulado para escrever, letra por letra no mesmo display de 7 segmentos, a cada segundo, a palavra USb2. Como o display é anodo comum (+5V no anodo do display), os segmentos ascendem com zero no pino do microcontrolador. Entradas Pin_b0 Pin_b1 Pin_b2 Pin_b3 Pin_b4 Pin_b5 Pin_b6 X Y a b c d e f g

U 0 0 1 0 0 0 0 0 1 S 0 1 0 1 0 0 1 0 0 b 1 0 1 1 0 0 0 0 0 2 1 1 0 0 1 0 0 1 0

Após a definição de cada segmento do display para representar os caracteres da palavra, é feita a simplicação de cada segmento através dos diagramas de Karnaugh abaixo para a construção da função de emulação do decodificador fixo.

a /Y Y b /Y Y c /Y Y d /Y Y

/X 1 0 /X 0 1 /X 0 0 /X 0 0

X 1 0 X 1 0 X 0 1 X 0 0

e /Y Y f /Y Y g /Y Y

/X 0 1 /X 0 0 /X 1 0

X 0 0 X 0 1 X 0 0

Page 84: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 84 ]

O programa abaixo mostra as funções de emulação do decodificador fixo para a palavra USb2 obtidas dos diagramas de Karnaugh. --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> // Emulação de decodificador para display de 7 segmentos - palavra Usb2 short int X, Y; //Entradas short int a, b, c, d, e, f, g; //saídas void decodificador(short int X, short int Y) //Função auxiliar do decodificador fixo para USb2 a=!Y; output_bit(pin_b0,a); //Anodo comum b=X^Y; output_bit(pin_b1,b); c=X&Y; output_bit(pin_b2,c); d=0; output_bit(pin_b3,d); e=!X&Y; output_bit(pin_b4,e); f=X&Y; output_bit(pin_b5,f); g=!X&!Y; output_bit(pin_b6,g); main() clock_int_4MHz(); while (1) decodificador(0,0); // Insere as entradas X=0 e Y=0 no decodiicador fixo – Saída letra S delay_ms(1000); decodificador(0,1); // Saída letra t delay_ms(1000); decodificador(1,0); // Saída letra o delay_ms(1000); decodificador(1,1); // Saída letra P delay_ms(1000); ---------------------------------------------------------------------------------------------------------------

5.4 MULTIPLEXAÇÃO COM DISPLAYS DE 7 SEGMENTOS

Como a economia de consumo e de componentes são sempre fatores importantes a

serem considerados em projetos de sistemas digitais, uma técnica bastante utilizada é a multiplexação de displays. Esta técnica permite que um só decodificador de displays como o 9317 (anodo comum), o 9307 (catodo comum) ou apenas sete pinos de um microcontrolador, que emulam as saídas do decodificador, possam controlar uma série de displays em paralelo.

Estes são ciclicamente acesos e apagados numa frequência acima de 20Hz de tal forma que, para o olho humano, todos os displays estejam acesos permanentemente. Para

Page 85: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 85 ]

isso, são colocados transistores de corte que atuam em sequência sobre cada terminal comum dos displays em paralelo. O programa abaixo mostra um exemplo para contar de 0 a 99 multiplexando dois displays de sete segmentos anodo comum. --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> #byte port_b = 0xf81//Atribuição do nome portb para o registro da porta B localizado na posição //0xf81 da memória de dados int setseg[10] = 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; //Vetor com 10 //elementos que desenham de 0 a 9 int i, z, dezena, unidade; //índice dezena,unidade (ponteiro) void main () clock_int_4MHz(); set_tris_b(0b00000000);// Define os pinos da porta B como saída while(1) for (i=0;i<99;i++) for(z=0;z<20;z++) dezena=i/10; //dezena recebe o número inteiro da divisão por 10 unidade=i%10; //unidade recebe o resto da divisão por 10 output_high(pin_a0); //pin_a0 aciona transistor do comum das dezenas output_low(pin_a1); //pin_a3 aciona transistor do comum das unidades port_b = setseg[dezena]; //A porta B recebe o desenho do número das dezenas apontado pela //variável dezena delay_ms(10); output_high(pin_a1); //selecionei a unidade output_low(pin_a0); port_b = setseg[unidade]; //A porta B recebe o desenho do número das unidades apontado //pela variável unidade delay_ms(10);

Page 86: Apostila_CPIC

------------- COMU

A comudesenvolviBaudot, emdo Teletynúmeros, surgiu o Pa

Na trarepresentaPara que oprecedido Entenda q(presença RS-232 evdigitais.

AlguaproximadA Comunicomunicaça comuniconseqüen

Aplicações p

Figu

-------------

NICAÇÃ

unicação simento com 1871, daype, criou

e símboloadrão de c

ansmissão ado pela po Teletypecom um s

que o estade corren

voluiu e se

umas indamente -1icação serção muito rcação serntemente m

práticas de Eletr

ura 5. 811

-------------

ÃO SER

serial teve m a invenaí o nome também

os para a comunicaçãdos carac

presença dee conseguissinal Espaçdo da linh

nte elétricae tornou um

nterfaces 10v e +10vial é feitarecomendarial apresemenor velo

rônica e microco

1: Multiple

-------------

RIAL EIA

início comção do TeBaud Rateuma tabetransferên

ão RS-232,cteres atrae corrente sse distingço (start bha ociosa (a). Foi basm padrão

EIA/RS-2v, mas supa pela tranado para trenta um ocidade em

ontroladores em

[ 86 ]

exação de

-------------

A/RS-2

m a invençeletype (tete. Baudot, ela de cóncia serial, que signiavés da l elétrica, euir o iníciobit) e final(sem transseado nessmuito utili

232 nosportam mínnsmissão ransmissãomenor cu

m relação à

m sistemas comp

e display

-------------

232

ão do teléeletipo) pe

além de cdigos (Cóassíncron

fica Padrãoinha telege o Espaçoo e o final izado comsmissão dese sistema izado nos

s compunimas de -2de bits emo de dadosusto pelo à comunica

putacionais, por

7 segmen

-------------

égrafo. Deplo Francêscriar toda adigo de B

na digital dão Recomengráfica, o o pela ausêde um carum sinal

e dados) eque o pa

computado

utadores 25v e máxim seqüêncs a longa d

número ação parale

r Sandro Jucá

ntos.

-------------

pois teve us Jean Maua mecânicaBaudot) cde inform

endado verssinal de

ência destaractere, o mde Marca

era o sinaadrão de trores e equ

atuais imas de +2cia. É um

distância. Nreduzido

ela.

-------------

um grandeurice Émilea e elétricaom letrasações. Dasão 232. Marca eraa correntemesmo era(stop bit)

l de Marcaransmissãouipamentos

fornecem25v.

m modo deNesse casode fios e

e e a ,

a . a . a o s

m

e , e

Page 87: Apostila_CPIC

Parase utilizarcomunicaçsão enviasincronismde comunsincronismlógico baixalto). Nessda transmna mesma

Quanível lógicosinalizar atemporizadde dados demissor e bit”).

O bNessa conquando fo

A idado em o start brecepção para trans

Aplicações p

a a transmr uma inteção serial pados tambmo com o Tnicação e

mo, existe ixo) e um bsa transmi

missão de da velocidadando o cao ‘1’. Um pao receptdor internode mensagno recept

bit de parinvenção, qr ímpar é 0

nterrupçãtempo a

it (nível lda comun

smissão de

práticas de Eletr

missão de derface compode ser sbém bits Transmisso

entre sisteum bit quebit que indissão, o Redados. Devde de transnal serial pacote de tor que uo no recepgem são entor. O paco

idade é usuando o n0.

Figura

ão do caleatório eógico baixicação ser dados, nã

rônica e microco

dados por dm outros psíncrona oude sincro

or. Na comemas de e indica o dica o finaleceptor emve-se consismissão. está em rdados semum transmptor avisannviados coote é conc

sado comonúmero tot

6. 1: Dad

nal seriaenquanto sxo) acionarial é execão é necess

ontroladores em

[ 87 ]

distâncias padrões cu assíncro

onismo, oumunicação

controle início da

l da transmm sincronisiderar que

repouso, ompre começmissão foindo que a om a veloccluído com

o nono bittal de dígit

do em com

al é utilizse executaa a interrcutada. Casário habili

m sistemas comp

maiores e como o EIna. Na priu seja, o assíncronae automatransmissãmissão chasmo com oe o transmi

o sinal corrça com umi iniciada.transmissãidade de tr

m os bits d

t com o ptos ‘1’ , o

municação

zada quan outro proupção, preso o canaitar a inter

putacionais, por

com poucIA/RS-232 meira, alé

receptor a, que é o ação por ão, chamadamado de o Transmisissor e o r

respondenm nível lógi O “startão. Seguidransmissãoe paridade

ropósito dvalor do b

o serial.

ndo se eograma. Queviamentel serial serupção ser

r Sandro Jucá

ca interferêe o EIA/

m dos bitsfica em modo manão nec

do de starstop bit (n

ssor apenareceptor de

te no canico ‘0’ (stat bit” inic

do do starto pré-proge e de par

de detecçãbit de parid

espera recuando o dae habilitadaeja utilizadrial.

ência pode-/RS-485. As de dados

constanteais utilizadoessitar dert bit (níve

(nível lógicoas no inícioevem esta

al tem umrt bit) paracializa umt bit, 8 bitsramada norada (“stop

ão de errodade é 1 e

eceber umado chegaa, onde ao somente

-A s e o e el o o r

m a

m s o p

. e

m , a e

Page 88: Apostila_CPIC

Um dos foASCII (Amde cada by

Se o númede Caracte

A inmicrocontrpara comuserial é prnível lógicabaixo:

Aplicações p

6.1 C

ormatos mmerican Stayte (valor m

ero de “1s”eres ASCII

6.2 I

nterface seroladores unicação crecedido pco alto. Os

práticas de Eletr

CÓDIGO A

ais utilizadandard Codmáximo 0x

” for par, oé mostrad

F

INTERFAC

erial USARTpode ser om o mun

por um stas conector

rônica e microco

ASCII

dos em comde for Infox7F) e o oi

o bit de pada abaixo:

igura 6. 2

CE USART

T (transmisíncrona o

ndo externart-bit de nres utilizad

ontroladores em

[ 88 ]

municaçãormation Intavo bit de

aridade X7

2: Caracte

T DO MIC

issor-recepou assíncroo utilizandnível lógicodos são o

m sistemas comp

serial, comnterchangee paridade

é zero e, s

eres ASCI

CROCONT

ptor univerona, sendodo o padrão baixo e DB9 e o

putacionais, por

mo no pade). Este for

que pode

se for ímpa

II.

ROLADOR

rsal síncrono esta últio EIA/RS-2encerradoDB25, co

r Sandro Jucá

drão EIA/Rrmato utilizou não se

ar, X7 é um

R

no e assínima a ma232, onde

o por um somo mostr

RS-232, é oza sete bitsr utilizado.

m. A Tabela

crono) dosis utilizada cada bytestop-bit dera a figura

o s .

a

s a e e a

Page 89: Apostila_CPIC

Em microcontr

O nentre +3 convertem

Par quatro invem 0V (TT-25v e mICL3232, e

Aplicações p

suma, oroladores s

nível lógico e +25V.

m os níveis

converter versores paTL). Compu

máximas detc. O esqu

práticas de Eletr

Fig

os pinos são o TXD,alto no paPara a code tensão

Fig

os padrõeara convertutadores ae +25v. Auema de lig

rônica e microco

gura 6. 3

utilizados , o RXD e oadrão RS23omunicação

TTL/RS23

ura 6. 4:

es TTL/RS2ter entre –presentamAssim Comgação do M

ontroladores em

[ 89 ]

: Conecto

na comuo Terra (G32 está ento entre um32.

Sinal elét

232, o chip–10V (RS23m cerca de mo o MAXMAX232 é

m sistemas comp

ores USAR

unicação sND). tre –3 e –m PC e um

trico RS-2

p mais utiliz32) em +5V–10V e +1X232 exismostrado

putacionais, por

RT.

serial ent

–25V e o nm PIC são

232.

zado é o MV (TTL), e 10V, mas stem outroa seguir:

r Sandro Jucá

tre compu

nível lógico utilizados

MAX232, o entre +10suportam mos convers

utadores e

baixo estáchips que

qual utiliza0V (RS232)mínimas desores, tipo

e

á e

a ) e o

Page 90: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 90 ]

Figura 6. 5: Circuito de conexão MAX 232.

6.3 COMUNICAÇÃO SERIAL EIA/RS-485

No padrão EIA/RS-232, os sinais são representados por níveis de tensão referentes ao

Gnd. Há um fio para transmissão, outro para recepção e o fio terra para referência dos níveis de tensão. Este tipo de interface é útil em comunicações ponto-a-ponto e baixas velocidades de transmissão. Visto a necessidade de um terra comum entre os dispositivos, há limitações do comprimento do cabo a apenas algumas dezenas de metros. Os principais problemas são a interferência e a resistência do cabo. Mais detalhes, bem como um projeto sobre diagnóstico microcontrolado de transceptor no padrão EIA/RS-485 podem ser conferidos no livro disponível no link: https://www.agbook.com.br/book/140210--Diagnostico_microcontrolado_de_transceptor_no_padrao_EIARS485 . 6.4 APLICAÇÃO DE COMUNICAÇÃO SERIAL VIA BLUETOOTH OU ZIGBEE Para a comunicação entre os modem bluetooth ou Zigbee, com um aplicativo serial instalado no PC ou em algum dispositivo móvel com Android, basta gravar o firmware abaixo no microcontrolador. Quando o microcontrolador recebe L, liga o led e comunica, quando recebe D desliga e comunica e quando recebe P, pisca em alta frequência. Mais detalhes podem ser vistos no vídeo com link descrito abaixo: http://www.youtube.com/watch?v=aTe7G__9_us .

ACIONAMENTO DE MOTORES MICROCONTROLADOS

Os motores mais utilizados com sistemas microcontrolados são os motores CC , motores de passo e servo-motores.

Page 91: Apostila_CPIC

ACIONAM

Os utilização, característimpressorado torque

MOTORES

Os robustos evariações robô por sconseguir trava-elétrcombustívlimpador d

Aplicações p

MENTO D

motorees conseqü

ticas e sãas, etc. e ge redução

S ELÉTRIC

motores ue normalmde tensão serem comem oficina

rica das pvel, motor de para-bri

práticas de Eletr

DE MOTOR

CC são üentemento fáceis dgeralmente

o de velocid

COS UTIL

tilizados emente proj

e correntempactos, fas e emprportas, bom

do vidro-isa dianteir

rônica e microco

RES CC DE

abundantete, existede encontre vêm assodade.

Figura 7

LIZADOS

m automójetados pae, entre ouortes, altaesas do ramba do lielétrico, mro e traseir

ontroladores em

[ 91 ]

E BAIXA T

es no meem em rar em suociados a u

7. 4: Moto

EM AUTO

óveis são toara condiçutros. Algua rotação eamo. Os mmpador d

motor da vro, bomba

m sistemas comp

TENSÃO

ercado emvárias d

ucatas comuma caixa

ores CC.

OMÓVEIS

odos com ções extreumas opçõee leves, al

motores made para-brventoínha,hidráulica

putacionais, por

m função ddimensões,mo video-cde engren

tensão nommas, tais es são idealém de seais usadosisa e de motor dodo freio A

r Sandro Jucá

da ampla , tensõecassete, bnagem par

minal a 12como poe

ais para aperem muitos em projegasolina, o ventilado

ABS.

gama des, pesos

brinquedosra aumento

2 volts, sãoeira, calorplicação noo fáceis deetos são debomba deor interno

e , , o

o , o e e e ,

Page 92: Apostila_CPIC

Alémautomaçãoequipamendo eixo (oaplicada (segundo a

SenF =

engrenagecomprovadmaior o toengrenage

Aplicações p

m do acioo e robónto compoou angular(F) e do ra equação Tndo: força (em

que o mens ocorreda pelas eqorque (T2)em 1 com m

práticas de Eletr

Figura 7

onamento tica, apre

osto por enr) e aumenraio de giT = F.r.

m Newtons)

Figu

motor imp devido aoquações a) proporciomotora e a

Fcon

rônica e microco

. 5: Motor

elétrico, oesentam gngrenagensntar o torqiro (nas e

), r = raio

ra 7. 6: R

rime umao raio de baixo, quaonal e mena engrenag

st -> T1/r1

T2n2

ontroladores em

[ 92 ]

r CC com

os motoregeralmentes, com o inque do moengrenagen

de giro (em

Relação de

a força cogiro. Na p

anto maior nor a velogem 2 com

1 = T2/r2 ->2 . D1 = T1 .. D2 = n1.

m sistemas comp

caixa de

es CC de e uma cantuito de rotor. O torns é a m

m metros)

e transmi

onstante, prática emo diâmetro

ocidade demo movida,

> T1/D1 = .D2 . d1

putacionais, por

redução.

baixa potaixa de rereduzir a vrque varia etade do

e T = torq

ssão.

a variaçã um sistemo da engre rotação (tem-se:

T2/D2

r Sandro Jucá

tência utiledução, q

velocidade em funçãdiâmetro

que (em N

ão do torma de engenagem m(n2). Cons

izados emque é umde rotação

ão da forçaprimitivo)

.m).

rque entregrenagensovida (D2)iderando a

m m o a ,

e , , a

Page 93: Apostila_CPIC

COROA

A co

utilizado pum elevad

O nparafuso cuma coroadente. Comcoroa gire exemplo, orpm, divid

Supcoroa tenhgirará doisgire uma vAssim, a rpor exemp1.800 dividequação:

ondNc Zc =Np Zp=

As p

Aplicações p

E O PARA

oroa e o paprincipalmedo aumento

número de com roscaa de 60 dmo a coroa uma voltao parafusoidas por 60

ponhamos,ha 60 dents dentes. Pvolta. rpm da corplo, o paradidas por

de: = número = número = número

= número d

possibilidad

práticas de Eletr

AFUSO CO

arafuso coente nos cao de força,

F

entradas d sem-fim entes, ema tem 60 da. Assim, ao com rosc0, que resu agora, qutes. Assim,Portanto, s

roa é 30 vafuso com30, que re

de rotaçõede dentes de rotaçõ

de entrada

des mais c

rônica e microco

OM ROSCA

m rosca seasos em q, como no

Figura 7. 7

do parafustem apena cada voltdentes, sera rpm da cca sem-fimultará em 3ue o paraf, a cada voserá neces

vezes menom rosca semesultará em

i = NNc

es da coroada coroaes do para

as do paraf

comuns de

ontroladores em

[ 93 ]

A SEM-FIM

em-fim comue é nece

os redutore

7: Coroa e

so tem influas uma enta dada norá necessácoroa é 60 m está gira30 rpm. fuso com olta dada ssário dar

or que a rm-fim estám 60 rpm.

Nc . Zc =Nc=Np. Zp /

a (rpm)

afuso com fuso

controle d

m sistemas comp

M

mpõem umssária elev

es de veloc

e sem-fim

uência no ntrada (mao parafusoário dar 60

vezes menndo a 1.80

rosca semno parafus30 voltas

rpm do paá girando a

A rpm da

p. Zp /Zc

rosca sem

digital de m

putacionais, por

m sistema dvada reduçidade.

m.

sistema deais comumo a coroa

voltas no nor que a 00 rpm, a

m-fim tenhaso com rosno parafu

rafuso coma 1.800 rp

a coroa pod

-fim (rpm)

motores CC

r Sandro Jucá

de transmição de velo

e transmissm) e está a

vai girar aparafuso do parafuscoroa gira

a duas ensca sem-fiso para qu

m rosca sepm, a corode ser exp

)

C são:

ssão muitoocidade ou

são. Se umacoplado aapenas umpara que aso. Se, po

ará a 1.800

tradas e am, a coroaue a coroa

em-fim. Seoa girará apressa pela

o u

m a

m a r 0

a a a

, a a

Page 94: Apostila_CPIC

CHAVEAM

Os tbase e podispositivodissipação

Os interna mumuito baixconfiguraçe o pino 3

O m

e correntequatro modiodos de o microcoMOSFET eresistores Source dochaveame

A figura aatravés de

Aplicações p

MENTO DE

transistoreodem ser os de médio em formaMOSFETs uito baixa xa, o que ção dos pin

é o Sourc

modelo IRFe de até 22otores comroda lvre ntrolador entram eme LEDs se

o MOSFETnto no gat

baixo mose um mosfe

práticas de Eletr

E MOTOR

es de efeitoutilizados a potência

a de calor. apresentam(décimos dnão acon

nos de um ce.

F

F540 supor2A. A figuram MOSFETs

para protecoloca na

m conduçãervem som

T é conectte (VG).

stra o acionet IRF540.

rônica e microco

RES CC CO

o de campono lugar

a, devido p m alta taxade ohms). ntece com

MOSFET,

Figura 7. 8

rta tensõesa abaixo ms. A etapa eção de tesaída das

ão e uma mente paratado ao G

namento d

ontroladores em

[ 94 ]

OM TRANS

o MOSFETdos trans

principalme

a de velocDeesa formtransistoronde o pin

8: Mosfet

s de chavemostra o cir

de potêncensão revers portas de

tensão da visualiza

Gnd do mi

de um mot

m sistemas comp

SISTORES

T executamistores Da

ente à men

idade no cma, a quedres Darlingno 1 é o G

t – IRF540

amento enrcuito comcia é comprsa. O funce controle

de 12V é ação do chicrocontrol

tor CC de 3

putacionais, por

S MOSFET

m o chaveaarlington pnor queda

chaveamenda de tensgton. A fguGate (base)

0.

ntre o drain MOSFET p

posta peloscionamentum ‘1’ ló

aplicada shaveamentador para

3V utilizad

r Sandro Jucá

T

mento porpara acionade tensão

nto e uma são nesse tura abaixo), o pinos 2

in e o sourcpara acions MOSFETsto é simpleógico, os tsobre as cto. Note q

a gerar a

do em robó

r tensão naamento dee à meno

resistênciatransistor éo mostra a2 é o Drain

rce de 100Vamento des IRF530 ees. Quandotransistorescargas. Osque o pinotensão de

ótica móve

a e r

a é a n

V e e o s s o e

el

Page 95: Apostila_CPIC

Neste casoobstáculo exemplo emotor esqSeguindo a

É importanoutro ladopor onde e

ESTABILI

Para

está segui

Aplicações p

F

EXEMPLO

o é interescomo refe

ele “cola” duerdo, quaas paredes

Fig

nte saliento, em vermentrou. Ma

IDADE DO

a garantir ndo corret

práticas de Eletr

igura 7. 9

O: SEGUID

ssante deferência a qdo lado esando os dos do labirin

gura 7. 10

tar que nomelho, poisais detalhes

O CONTRO

estabilidatamente a

rônica e microco

9: Acionam

DOR ÓTIC

finir que noqual ele vaquerdo, ou

ois estiverento até fina

0: Situaçõ

o princípio s ele podes: http://w

OLE DE M

de do conreferência

ontroladores em

[ 95 ]

mento de

CO DE LAB

o princípioai seguir eu seja, o mem acionadal encontra

ões encon

de seguire tomá-lo cwww.youtu

MOVIMENT

ntrole de ma (o obstác

m sistemas comp

e motor co

BIRINTO

o seguidor em movimemotor direidos. am-se quat

ntradas em

r o obstácucomo referube.com/w

TO

movimentoculo), o sen

putacionais, por

om Mosfe

de paredeento de avito deve se

tro situaçõe

m labirint

ulo, o robôrência e vo

watch?v=QR

, ou seja, nsor ótico

r Sandro Jucá

et.

e o robô cvanço normer mais rá

es:

tos.

ô não podoltar, o quRDrG2iEFp

garantir qlateral (L)

considera omal. Nessepido que o

e tocar noue fará saipM .

que o robô, com sina

o e o

o r

ô al

Page 96: Apostila_CPIC

analógico,obstáculo.

Casesquerdo situações situação 3frente até

Casmicrocontrencontrar desvio parao tocar n

Programa:-------------#include < #define es#define di int32 tenintermediáshort int leunsigned i main() clock_int_4

Aplicações p

deve ser

so seja acue acionar 3 e 4. Not

3, o robô vaencontrar

so o senrolador paobstáculo

ra a direitao obstácul

Figura 7

: -------------<SanUSB.h

squerdo piireito pin_

nsaofrente,ários edpisca; int flagnao

4MHz();

práticas de Eletr

lido freque

usada a auo motor

te que o tai ser seguobstáculo

nsor fronra o motolateral, o

a for poucoo com o av

7. 11: Uso

-------------h> //Leitur

n_b6 _b5

, tensaola

osensor=0,

rônica e microco

entemente

usência de direito, umtempo de 4uro pelo obfrontal outal verifiq

or direito, que garao, o guia ovanço fron

o de senso

-------------ra de tensã

ateral, ap

flagfrente

ontroladores em

[ 96 ]

e e estar c

obstáculom determin4 é maior bstáculo at

u lateral. que obst aciona o

ante a estaoval frontalntal. O circu

ores ótico

-------------ão em mV

proximacao

e=0, flaggi

m sistemas comp

om valores

, o microcnado tempque o de

té acabar o

táculo, mmotor esq

abilidade dl do robô cuito é mos

os para co

-------------com variaç

o=4790; /

ro=1;

putacionais, por

s que gara

ontroladorpo, suficie3, mas co

o tempo de

ostrado nquerdo e sdo movimeconduzirá ostrado abai

ontrolar m

-------------ção de um

//int32 de

r Sandro Jucá

antam a pr

r deve parnte para gom o tempe desvio e

na situaçsegue em ento. Noteo robô à eixo:

motores.

------------- potenciôm

evido aos

resença do

ar o motogarantir aspo de 4 nae seguir em

ção 2, ofrente até

e que se oestabilidade

-------------metro

s cálculos

o

r s a

m

o é o e

s

Page 97: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 97 ]

setup_adc_ports(AN0_TO_AN1); //Habilita entrada analógica - A0 setup_adc(ADC_CLOCK_INTERNAL); while(1) output_high(esquerdo);output_high(direito); //Os dois motores em frente //***************************************************************************** set_adc_channel(1); delay_ms(10); tensaolateral= (5000*(int32)read_adc())/1023; if (tensaolateral<=4790) flagnaosensor=0; flagfrente=0; flaggiro=0; // Estabilizou, Habilita o giro e a virada de //frente para a direita //***************************************************************************** if (flagnaosensor>=3 && flaggiro==0) flagnaosensor=0; flaggiro=1; // Sem barreira (flagnaosensor>=3) gire 170 ///graus output_low(esquerdo);output_low(direito); output_high(pin_b7);delay_ms(500);//pára output_low(esquerdo);output_high(direito); output_low(pin_b7);delay_ms(2000); //só gira de //novo se tiver //estabilizado na lateral (flaggiro==0) output_high(esquerdo);output_high(direito); // Segue em frente while (tensaofrente>4790 && tensaolateral>4790) //Espera até encontrar barreira frontal ou //lateral set_adc_channel(0); delay_ms(10); tensaofrente= (5000*(int32)read_adc())/1023; set_adc_channel(1); delay_ms(10); tensaolateral= (5000*(int32)read_adc())/1023; //***************************************************************************** //ANALÓGICO DIGITAL(10 bits) set_adc_channel(0); // 5000 mV 1023 delay_ms(10); // tensao read_adc() tensaofrente= (5000*(int32)read_adc())/1023; //***************************************************************************** if (tensaofrente<=4790 && flagfrente==0) flagnaosensor=0; flagfrente=1; //encontrou barreira frontal output_low(direito);delay_ms(500);//vira para a direita output_high(esquerdo);output_high(direito); // Segue em frente até estabilizar while (tensaolateral>4790) //Espera até estabilizar a lateral set_adc_channel(1); //Colado no canto frontal e lateral também estabiliza delay_ms(10); tensaolateral= (5000*(int32)read_adc())/1023;

Page 98: Apostila_CPIC

++flagnaooutput_higledpisca=!output_bitdelay_ms( -------------O fluxogra

Figur

Aplicações p

osensor; gh(esquerd!ledpisca; t(pin_b7,le(20);

-------------ama do pro

ra 7. 12: F

práticas de Eletr

do);output_

edpisca);

-------------ograma do

Fluxogram

rônica e microco

_high(dire

-------------microcont

ma de fun

ontroladores em

[ 98 ]

ito); //Os

-------------trolador é m

ncionamen

m sistemas comp

dois moto

-------------mostrado a

nto de rob

putacionais, por

ores em fre

-------------abaixo:

bô móvel

r Sandro Jucá

ente

-------------

com sens

-------------

sores.

Page 99: Apostila_CPIC

O acioH pode setensão, ://www.yo

-------------

DRIVER P

Umutilizar umdois motor

O cpino 16 euma qued

As e15 são paque tem o

Aplicações p

PONTE H

onamento er feita coou de

outube.com

-------------

PONTE H

a das solum integradores CC, utiircuito inte

e outra para de 0,7V

entradas nra acionar

o mesmo G

práticas de Eletr

da ponte m transist

potênciam/watch?v

Fig

-------------

L293D

uções maio motor drlizando qu

egrado L2a potênciaem relação

nos pinos 2o motor B

Gnd do circ

Fig

rônica e microco

H permite tores MOSFa Darllin=6IIH02db

gura 7. 13

-------------

is simples driver como

atro pinos 93D deve

a (por exemo à tensão

2 e 7 são B. O pino 8uito de con

ura 7. 14

ontroladores em

[ 99 ]

o movimeFETs, maisngton TIbboE .

3: Motor e

-------------

e barata o o L293Dde saída dter duas a

mplo 9,6 V da fonte e

para acion8 é conectntrole.

: CI Ponte

m sistemas comp

ento do mos aconselhIP ou

em Ponte

-------------

em atuaç. Este intedo microcolimentaçõe

V ou 5V) noexterna.

nar o mototado à font

e H – L29

putacionais, por

otor nos dohável devid

BD. Ma

e H.

-------------

ção de roegrado posontrolador. es. Uma pao pino 8. O

or A e entrte de alime

93D.

r Sandro Jucá

ois sentidodo a baixaais deta

-------------

bôs móvéssibilita o c

ara coman

Os motores

radas nos entação do

os. A pontea queda dealhes em

-------------

is consistecontrole de

do (5V) nos percebem

pinos 10 eos motores

e e m

e e

o m

e s

Page 100: Apostila_CPIC

A msentido dapermite pr

Se afrente, se trás. Se am

SOLENÓI

Um

(indutânciabobina, crbobina cocirculação

Os simplificadprincípio d

Aplicações p

mudança doa corrente rogramar o

a primeiraa primeira

mbas as en

IDES E RE

a solenóida) elétrica,ria-se um mo é mosde outro n

relés são da de um de funciona

práticas de Eletr

os sinais nno enrola

o movimen

entrada aa entrada bntradas ba

ELÉS

de consiste, enroladacampo ma

strado na fnivel maior

dispositivorelé é mo

amento.

rônica e microco

nos pinos damento do nto em qua

alta, segunbaixa e a sixas ou alt

e num êmbem torno

agnético qfigura abar de corren

Figura 7

os comutaostrada na

ontroladores em

[ 100 ]

de entradamotor, lo

alquer direç

nda entradsegunda etas, o mot

bolo de feo de um tuue atrai oixo. No c

nte.

7. 15: Sol

adores eleta figura ab

m sistemas comp

a tem o efeogo do seução (conju

a baixa , entrada altaor pára.

erro colocaubo. Quando êmbolo (caso de um

lenóide.

tromecânicbaixo e a

putacionais, por

eito de prou sentido dgando 2 m

então o ma , o moto

ado no intedo se alim(núcleo móm relé, fec

cos (Figurapartir dela

r Sandro Jucá

oduzir a alde rotação

motores).

motor se der se movim

erior de uenta eletrióvel) para cha um co

a 2.14). Aa é explic

teração doo. A Tabela

esloca paramenta para

ma bobinaicamente adentro da

ontato para

A estruturacado o seu

o a

a a

a a a a

a u

Page 101: Apostila_CPIC

O ctransistor

O relétrico deum núcleeletromagrelé tem d(normalmetensão consão as ma

Aplicações p

controle dDarlington

relé é um e dois circueo de manética, fecduas posiçente abertontínua queis comuns

Figura 7

práticas de Eletr

e uma son ou de um

tipo de inuitos. O reaterial ferrcha os conções, com o), como m

e é especifi.

7. 17: Acio

rônica e microco

Figur

olenóide om MOSFET nterruptor elé é formaromagnéticntatos de uisso existe

mostra a ficada de ac

onamento

ontroladores em

[ 101 ]

ra 7. 16: R

ou relé pomostrado aacionado ado por umco) que um interruem dois tiigura abaixcordo com

o de moto

m sistemas comp

Relés.

ode ser feabaixo. eletricamem eletroímquando a

uptor. Normpos, os Nxo. A bobio fabrican

or 12V com

putacionais, por

ito pelo c

ente que pmã (uma boacionado, malmente F(normalmna do relé

nte, bobina

m relé bo

r Sandro Jucá

chaveamen

permite o obina enroatravés do interrup

mente fech é acionad

as de 5, 12

obina 5V.

nto de um

isolamentoolada sobreda atraçãoptor de umado) e NA

da por uma2 e 24 Volts

m

o e o m A a s

Page 102: Apostila_CPIC

Umpequenas significa a máquinas

DRIVER D

Um especifico solenóidestransistoreroda livreeletromotr

Quaele conect0, por isso(o comumenergizar a

Aplicações p

a das caraem relaçãpossibilidaindustriais

DE POTÊN

driver de de maior p

s, relés, mes Darlingte, para deriz gerada ando o micta o pino 1o a simbolo

m) ou do ma bobina o

práticas de Eletr

acterísticasão à corrade de cons, diretame

Figu

NCIA ULN

potência épotência. E

motores CCton NPN descarregar no chaveacrocontrola18 do outroogia de po

motor deveou o motor

rônica e microco

s do relé é ente que ntrolar circente a part

ura 7. 18

N2803

é utilizado Esse driverC e váriose potência

no Vcc mento dos

ador colocao lado, ondrta inverso

e estar liga.

Figura 7

ontroladores em

[ 102 ]

que ele po circuitouitos de alir de micro

Aplicação

sempre qr pode ser s outros da, oito resi(pino 10)

s transistora +5V (nívede está ligaora na figuado ao Vcc

7. 19: UL

m sistemas comp

pode ser eno controladltas correnocontrolado

o de um r

uando se nusado par

dispositivosistores de ) a correnres, protegel lógico 1)a um pólo

ura abaixo)c da fonte

N 2803.

putacionais, por

nergizado do exige ptes como ores.

relé.

necessita ara controlas. Ele contbase de 2

nte reversgendo os m) no pino 1do motor,. Como o de até 30

r Sandro Jucá

com correpara funcimotores, l

acionar umr motores tém intern2K7 e oitosa da formesmos. 1 do driver, ao Gnd (noutro lado

0V, esse co

entes muitoionar. Issoâmpadas e

m hardwarede passos

namente 8diodos de

ça contra-

r ULN2803nível lógico

o da bobinaomando irá

o o e

e , 8 e -

, o a á

Page 103: Apostila_CPIC

Comosentidos. Ase utilizar internamede ponte alimentaçãalimentaçãpossível o

Figura

Notbobina do no sentidodesligar o do motor. Quaveículos orelação de

Motcontrolado

Aplicações p

PONTE H

o foi visto,A ponte H

também nte oito trH, mostr

ão do motão do motochaveame

a 7. 20: A

te que inicrelé da es

o da esquerelé da es

ando se utou braços e transmiss

ACIONAM

tores de paos digitalm

práticas de Eletr

COM MIC

, acionamepode ser fo driver ansistores rada na ftor, porquor devem sento do relé

Acionamen

cialmente osquerda, cerda para asquerda e

tiliza motomecânicossão da caix

MENTO DE

assos são dente.

rônica e microco

CRORELÉ

ento da pfeita tambULN2803 com resist

figura abaue as fontser diferené.

nto de mo

os dois reonectandoa direita o acionar o

or CC em ps, o que dexa de engre

E MOTOR

dispositivo

ontroladores em

[ 103 ]

ÉS

onte H peém com apara a entores de baixo, não tes de enentes, ou se

otor nos 2

elés estão o o V+Moto

que deterrelé da di

ponte H petermina oenagens co

RES DE PA

s mecânico

m sistemas comp

ermite o mpenas doisnergização base e oito

causa quergização eja, isolada

2 sentidos

conectadoor, a corrermina o sereita ocorr

ara atuadoo torque eonectada a

ASSO

os eletrom

putacionais, por

movimentos microrelé

das bobindiodos de

ueda de tda bobina

as uma da

s com relé

os ao V-Moente da fonentido de rre o sentid

ores robóte a velocidao motor.

agnéticos

r Sandro Jucá

o do motoés. Neste cnas, pois

e roda livretensão naa do microoutra, par

és em Po

otor. Ao ente passa rotação do do de rotaç

ticos, comodade do at

que podem

or nos doiscaso, pode-já contém

e. Esse tipo fonte deorelé e dera que seja

onte H.

energizar apelo motomotor. Ao

ção inverso

o rodas detuador é a

m ser

s -

m o e e a

a r o o

e a

Page 104: Apostila_CPIC

A crdispositivofator muitorígidos, masuma, a ch

MOTORES

Os centro daso númeroderivação

Norfonte de aterra atrav As blongo da cmais pólos

Os de passo acionamenalimentaçãdo motor d

Aplicações p

rescente pos à lógica o importanas tambémhave para

S DE PAS

motores ds bobinas. o de bobinao centro

rmalmentealimentaçãvés de chavbobinas secircunferêns.

motores dunipolaresnto do mão (+5V oude passo.

M

práticas de Eletr

opularidaddigital. Sã

nte como imm, como inta Robótica

SO UNIPO

de passo O motor d

nas, uma das bobina, a derivaç

ão (Vcc) e veamento e localizamncia. Para q

Figura

e passo uns de 6 fios

motor de pu +12V) e

Motor de

rônica e microco

de dos moto encontrampressorasterface enta.

OLARES

unipolaresde passo tevez que

as (comumção centraos termineletrônico

m no estatoque haja u

a 7. 21: M

nipolares ms possuem passo, est

e os termin

5 fios

ontroladores em

[ 104 ]

tores de paados não ss, plotters,tre CPUs e

s são faciem 4 fasescada bobi

m). al das bobnais de cad

produzindor e o rotouma maior

Motor de p

mais encon dois fiostes fio conais da bob

m sistemas comp

asso se devó em apar, scanners,e movimen

lmente res porque o ina se enc

binas está da bobina do movimeor é um imresolução

passo uni

ntrados pos comuns omuns debina ligado

Motor

putacionais, por

ve à total aelhos onde, drivers dento mecâni

conhecidosnúmero d

contra div

ligada ao são ligado

nto. mã permane

angular, o

polar.

ssuem 5 o(derivaçãvem ser

os ao contr

de 6 fios

r Sandro Jucá

adaptação e a precisãe disqueteico, constit

s pela dede fases é dvidida em

terminal pos alternad

ente com o rotor dev

ou 6 fios. Oão centraligados àrole de cha

s

desses ão é um s, discos tuindo, em

rivação aoduas vezesduas pela

positivo dadamente à

6 pólos aoverá conte

Os motoresal). Para o

fonte deaveamento

m

o s a

a à

o r

s o e o

Page 105: Apostila_CPIC

ParaPara mototratarem d

A reresistência

Paraligar manuda fonte a

MODOS D

Figur

Aplicações p

Figura

a descobriores de 6 fde bobinas esistência a entre doia encontraualmente oaos termina

DE OPERA

ra 7. 23: C

práticas de Eletr

7. 22: Mo

r os terminfios, a residiferentesentre o fios terminaisar a seqüêno fio comuais das bob

AÇÃO DE U

PAS-Sopar-Me-Pou

PAS-Du-Ma-Con

Caracterís

rônica e microco

otores de

nais de umstência ens. o comum (s desta bobncia corretm ao Vcc,

binas, verif

UM MOTO

SSO omente mrtir nor uco

Nº do passo 1a

1--> 12--> 03--> 04--> 0

SSO uas meiaior nsome m

Nº do passo 1a

1--> 12--> 03--> 04--> 1

sticas e Ló

ontroladores em

[ 105 ]

passo un

m motor de ntre os fios

(Fio 1) e obina. ta dos fios , e de formficando o m

OR DE PAS

COMPLmeia bobi

consu

a 2a 1b 2

0 0 01 0 00 1 00 0 1

COMPLETa-bobinas

mais ene

a 2a 1b 2

1 0 01 1 00 1 10 0 1

ógica de a

m sistemas comp

nipolar – c

passo, des comuns (

o terminal

para chavma alternadmovimento

SSO UNIP

LETO ina é ene

do

umo

2b Decima

0 8 0 4 0 2 1 1

TO 2são ene

rgia que

2b Decima

0 8 0 4 1 2 1 1 acioname

putacionais, por

conexão i

ve-se cons(Fio 1 e Fio

de uma bo

veamento dda e seqüe do motor

POLAR

1 ergizada

de

al

2 (FUergizadas

o Pas

al

ento de m

r Sandro Jucá

interna.

siderar queo 2) é infi

obina é a

das bobinaencial, o Gde passo.

(FULa cada p

ULL-STEP s a cada

sso comp

motor de p

e: nita por se

metade da

as, pode-seGND (terra)

LL-STEP)passo acomum;

torque;energia.

2) a passo;

torque;pleto 1.

passo.

e

a

e )

Page 106: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 106 ]

ACIONAMENTO BIDIRECIONAL DE DOIS MOTORES DE PASSO

Como o driver de potência ULN2803 ou ULN2804 possui internamente 8 transistores

de potência ele é capaz de manipular dois motores de passo ao mesmo tempo. Ele contém internamente oito diodos de roda livre e oito resistores de base dos transistores, o que possibilita a ligação direta ao microcontrolador e aos motores de passo.

Figura 7. 24: Conexão do motor de passo no PIC.

A bateria para motores de passo deve ter uma corrente suficiente para energizar as bobinas do motor de passo. Dessa forma, é possível associar baterias 9V em paralelo para aumentar a corrente de energização ou utilizar baterias de No-Breaks. O link abaixo mostra esse motor utilizando a ferramenta SanUSB http://www.youtube.com/watch?v=vaegfA65Hn8.

SERVO-MOTORES

Há dois tipos de servos: os de posição, com giro de 180º, e o de rotação, que possui o giro contínuo. O Servo de Posição é utilizado em antenas parabólicas, em braços robóticos, na robótica móvel terrestre com o controle de pernas mecânicas e no controle de câmeras. O Servo de Rotação é prioritariamente escolhido para a locomoção por rodas.

Trata-se de dispositivos muito precisos que giram sempre o mesmo ângulo para um dado sinal. Um servo típico possui três fios de ligação, normalmente preto, vermelho e branco (ou amarelo). O condutor preto é a referência de massa da alimentação (0 volts), o condutor vermelho é a alimentação e o condutor branco (ou amarelo) é o sinal de posicionamento, como é mostrado na figura abaixo que é um carro para desvio de obstáculos, acionado por dois servo-motores de rotação. O sinal do servo-motor de posição é normalmente um pulso de 1 a 2 milisegundos (ms), repetido depois de um pulso de 10 a 20ms. Com o pulso de aproximadamente 1 ms o servo move-se para um sentido e com o impulso de 2 ms para o sentido oposto. Desse modo, com um impulso de 1,5 ms, o servo roda para a posição central.

Page 107: Apostila_CPIC

A te4,5V e 6Vservo é baconsomemcondutoreabaixo mooperação é-------------#include <#define m#define m int16 frentshort int lemain() clock_int_4 while (TRU while (fren horário

Aplicações p

Figura

ensão de a. Devido àastante altm correntes de alime

ove um seré utilizada -------------<SanUSB.h

motor1 pin_motor2 pin_

te=50; ed;

4MHz();

UE)

nte>0) output_hioutput_hidelay_ms(output_lowdelay_ms(

output_lowoutput_low

delay_ms(--frente;

práticas de Eletr

a 7. 25: Ap

alimentaçãà alta reduo, conside

es elevadaentação, nervo-motor por robôs

-------------h> _b5 _b6

igh(motor2gh(motor1(1); w(motor1)(1);

w(motor1)w(motor2)

(10);

rônica e microco

plicação d

ão do servoção do jogrando o se

as (de 20ecessitandde rotaçãomóveis qu-------------

2); 1);

); //Termi

); ); //

ontroladores em

[ 107 ]

de servo-

omotor é tgo de engreu tamanh00 mA a o a aplicaço para frenue possuem-------------

//Iniciali //Inicializ

ina o pulso

/Termina o

m sistemas comp

motores

tipicamentrenagens, ho reduzido1 A) e ição de capnte e um om dois mot-------------

iza o pulsoza o pulso

o de 1ms d

o pulso de

putacionais, por

em robô m

te de 5V, po torque q

o. Lamentantroduzempacitores doutro paratores em a-------------

do motor do motor

do motor1–

2ms do m

r Sandro Jucá

móvel.

podendo vque se obtavelmente,

m ruído elde filtro. Oa trás. Noteanti-paralel-------------

1 2

– sentido h

motor2 – se

variar entretém de um, os servoslétrico nos

O programae que essao. -------------

horário

entido anti-

e m s s a a

-

Page 108: Apostila_CPIC

frled=!led; output_bit ------------

O aproximadgraus e coparabólica-------------#include <graus. int16 FRENvolta void main( clock_int_4while (1) while (F FR while (TR

Aplicações p

rente=50; //pica led

t(pin_b7,le

-------------

Figu

programa damente 1 om o pulsos, em siste-------------<SanUSB.h

NTE=200,

()

4MHz();

RENTE>0) FRENTE--output_hidelay_ms(output_lowdelay_ms(

RENTE=20

RAS>0)

práticas de Eletr

d a cada 5ed);

-------------

ra 7. 26:

abaixo ms, o ser

o de 2 ms emas robót-------------h> //Servo

TRAS=200

)

; gh(pin_b0(1); //w(pin_b0)(10);

00;

rônica e microco

50 ciclos do

-------------

Visualiza

move umrvo move-spara 180 gticos e no -------------o-motor d

0; //no ser

); / tempo de;

ontroladores em

[ 108 ]

o servo-mo

--------------

ção inter

m servo-mse para 0 ggraus. Notcontrole d-------------e parabóli

rvo de test

e busca de

m sistemas comp

otor, ou sej

-------------

na de um

motor de graus, e cte que estee câmeras-------------ica - 3 po

te 200 pass

e 0 graus

putacionais, por

ja a cada 1

-------------

m servo-m

posição. om o pulsoe motor é . -------------

osições def

sos corresp

r Sandro Jucá

12ms*50 =

--------------

motor.

Com o o de 1,2 mutilizado e

-------------finidas: 0,

ponderam

= 600ms

-------------

pulso dems para 90em antenas

-------------90 e 180

a aprox. 1

-

e 0 s

0

1

Page 109: Apostila_CPIC

TR output_to ------------- FOTOA

Fotoacvariedade transmitemcircuito.

Optoisooptoisoladcomando e

Existempor exempe um fotot

Essepresença desse compresistor em

Escodissipada entre a pomáxima esque será tensão de

P=VO re

Aplicações p

TRAS--; output_hidelay_ms(output_lowdelay_ms(

RAS=200;

oggle(pin_b

-------------

ACOPLA

opladores de aplica

m sinais e

oladores liores digitae mudançam fotoacopplo, acoplatransistor.

Figur

e dispositde tensão ponente é m série comolhendo reem cada

otência máscolhida pautilizado npico.

V2/R -> 0,2esistor com

práticas de Eletr

gh(pin_b0(2); //w(pin_b0)(10);

b7);

-------------

ADORES

ou optoisoações. Tame informaçõ

ineares sãais são usaas de níveipladores dedores ondeComo exe

ra 8. 1: Vi

tivo pode 220VAC ede 250mWm o foto-diesistores sum deles. xima do coara os resino circuito

2W = (311mercial ma

rônica e microco

); / tempo de;

-------------

S E SEN

oladores pmbém chaões ao me

o usados dos para cs lógicos.e diversos e a construmplo pode

isualizaçã

ser utilizaem um detW em 25 griodo internsão de 33É interess

omponenteistores é d, considera

1)2/R -> Ris próximo

ontroladores em

[ 109 ]

e busca de

-------------

NSORES

proporcionaamados deesmo tem

para isolacontrole, in

tipos e coução internemos citar

ão interna

ado por uterminado raus Celsiuno para pro3mW, ou sante que e e a potênde 200mW.ando a te

R=483 KΩ.o desse valo

m sistemas comp

180 graus

-------------

S INFRA

am a isolae acopladopo que iso

ar sinais andicação de

om construna é baseao 4N25 e o

a de um F

um microcponto. A p

us. Dessa fotegê-lo. seja, a poexista um

ncia máxim. Na Equaç

ensão de p

or é 470KΩ

putacionais, por

s

-------------

AVERM

ação de sinores óticosolam difer

nálogos ate estados,

uções interada em umo TIL111:

Fotoacopl

controladopotência morma, deve

otência mám certo intma dissipadção (6.1) épico. Consi

Ω.

r Sandro Jucá

-------------

ELHOS

nais em ums, eles corentes part

té 10MHz,isolação d

rnas diverm diodo infr

ador.

or para idmáxima dise-se dimen

áxima quetervalo de da. Então, é calculadoidere 311V

-------------

S

ma grandemutam outes de um

, enquantode sinais de

sas, comoravermelho

entificar assipada ponsionar um

e pode sesegurançaa potência

o o resistoV como a

e u m

o e

, o

a r

m

r a a r a

Page 110: Apostila_CPIC

TRANSM

Os como senscircuito dodistância p2K2). O vcom o acreceptor IR

Figura 8.

Para

sensor, é identificar

Aplicações p

MISSOR E

transmissosor ótico po sensor eperceptívelvídeo httpionamentoR.

. 3: Conex

a ter um aconselhá

variações

práticas de Eletr

Figura 8

E RECEPT

ores e recepor reflexãe um gráficl pelo recep://www.yoo de um le

xão do pa

maior alcaável utilizade até 5m

rônica e microco

8. 2: Aplica

TOR IR

eptores IRão difusa pco do sinaeptor IR cooutube.comed pela q

ar infraver

ance e perar o conv

mV no sinal

ontroladores em

[ 110 ]

ação de u

R (infraredpara registal de saídaom resistorm/watch?vueda do s

rmelho: T

rceber umversor ADl do senso

m sistemas comp

um fotoac

ou Infravetro de posi (em mV) r de elevaçv=18w0Oesinal analó

TIL 32 (em

ma maior vde 10 b

r. A distân

putacionais, por

coplador.

ermellhos) ição. A figdo recept

ção de tenaco4U mo

ógico atarv

missor) e

variação debits do mcia ótima é

r Sandro Jucá

são muitogura abaixotor IR em

nsão para 5ostra essavés da co

TIL 78 (r

e posição,icrocontroé a distânc

o utilizadoso mostra ofunção da

5V (pull-upa variaçãondução do

receptor).

com esselador paracia em que

s o a p , o

.

e a e

Page 111: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 111 ]

incide no receptor a maior parte do feixe de luz emitido pelo transmissor. Nessa distância ocorre a maior variação (queda) do sinal de saída analógico do receptor IR.

Utilizando o princípio on/off, só há identificação de posição quando o sinal do receptor for menor ou igual a 2,5V (nível lógico baixo), o que torna o sensoreamento muito limitado.

Durante os testes desse circuito foi verificado que, devido a resistência de 390Ω em paralelo com 2K2, quando o led é conectado no circuito, há uma diminuição na variação do sinal de saída analógico do receptor IR. O programa abaixo mostra a leitura em mV do sensor ótico via emulação serial. --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> //Leitura de tensão em mV com variação de um potenciômetro #include <usb_san_cdc.h>// Biblioteca para comunicação serial virtual int32 tensao; main() clock_int_4MHz(); usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com a usb do PC setup_adc_ports(AN0); //Habilita entrada analógica - A0 setup_adc(ADC_CLOCK_INTERNAL); while(1) //ANALÓGICO DIGITAL(10 bits) set_adc_channel(0); // 5000 mV 1023 delay_ms(10); // tensao read_adc() tensao= (5000*(int32)read_adc())/1023; printf (usb_cdc_putc,"\r\nA tensao e' = %lu mV\r\n",tensao); // Imprime pela serial virtual output_toggle(pin_b7); delay_ms(500); ---------------------------------------------------------------------------------------------------------------

AUTOMAÇÃO E DOMÓTICA COM CONTROLE REMOTO UNIVERSAL

A comunicação entre uma unidade remota e um eletrodoméstico, como uma TV, se dá geralmente por emissão de radiação infravermelha modulada por pulsos.

Page 112: Apostila_CPIC

F

Paraas ordens é identifica

As como o sointensas eoutros tran

O rtelevisor, códigos deas que tense não tive

Parainfravermepara deconível lógicmicrocontrpor exempde circuitoabaixo e e

Aplicações p

Figura 8.

a tornar o do control

ado pelo dinterferêncol, lâmpade geram mnsmissoresreceptor, gentrega a

e identificanham a meerem o mea acionar elho, pois odificação, co baixo rolador complo, o chavo para aciem http://

práticas de Eletr

4: Diagra

sistema inle remoto, ecodificadocias podemas incande

maior inters de infravegeralmenteao decodifiação e dadesma frequesmo códig

uma cargao invés dé possíve(0V) que

m um resisveamento dionamento/www.yo

rônica e microco

ama de bl

nsensível ao código d

or do recepm se origiescentes, arferência, ermelho e

e contido nicador apeos, elimina

uência de pgo de pulsoga à distâde captural identificae, conectastor de pulde um relé de carga

outube.co

ontroladores em

[ 112 ]

locos de c

a interferênde pulsos ptor. inar de foaquecedorcomo lâmetc.

num únicoenas os pando a mapulsos, cabos. ância bastar o códigoar apenas ado ao p

ull-up de 2Ké para acioas remotasm/watch

m sistemas comp

comunica

ncias e filtrdo emisso

ntes estátres, e de f

mpadas fluo

invólucro ulsos reta

aioria das fbendo a rej

ta ter o co em bits o start bi

pino de iK2, executaonamento s com conh?v=1l6s9

putacionais, por

ção infrav

rar os ruídor contém u

ticas, isto fontes dinâorescentes

montado ngulares cfontes de ijeição dest

controle reemitidos pt desse cóinterrupçãoará uma tade uma m

ntrole univ9xtrJl0 .

r Sandro Jucá

vermelha

os, aceitanum dado b

é, que nãâmicas ques, a image

no painel correspondnterferênctas ao Dec

emoto e opelo controódigo que o externaarefa desej

máquina. Umversal pode

a.

ndo apenasbinário, que

ão pulsame são maisem da TV

frontal dodentes aoscias, excetocodificador

o receptoole remotoapresenta

a (B0) dojada comom exemploe ser vista

s e

, s

V,

o s o r,

r o a o , o a

Page 113: Apostila_CPIC

Notter um invdinâmicascontrole re-------------#include <short int re #int_ext void bot_e rele=!rele;output_bitdelay_ms(interrupçã main() clock_int_4enable_intenable_intinfraverme while (TRU output_tog

Aplicações p

Figura 8

te que, se vólucro par. Abaixo uemoto univ-------------<SanUSB.hele;

ext()

; t(pin_b5,re(1000); //o

4MHz(); terrupts (gterrupts (elho

UE)

ggle(pin_B

práticas de Eletr

8. 5: Cone

nesse casra proteçãoum prograversal. -------------h>

ele); /Tempo pa

lobal); // Pint_ext);//

B7);

rônica e microco

xão de re

so não houo contra inama exem

-------------

ara deixar

Possibilita tHabilita in

ontroladores em

[ 113 ]

eceptor in

uver um sisnterferência

mplo de ac

-------------

o recepto

todas internt. ext. 0

m sistemas comp

nfraverme

stema de as, pois escionamento

-------------

or cego po

rrupcoes 0 no pino

putacionais, por

elho de TV

decodificaçstá sujeito o de um

-------------

r 1 seg ap

o B0 ond

r Sandro Jucá

V no PIC.

ção, o recàs fontes relé atrav

-------------

pós a 1ª a

de está o

eptor deveestáticas e

vés de um

-------------

atuação da

o recepto

e e

m

a

r

Page 114: Apostila_CPIC

delay_ms( -------------

Parapreta commostra a f

Figura 8

CODIFIC

RC5infravermevideocasseaproximad

A nseparado ser transmdireito é zesquerdo é

O código t - 2 bits pa - 1 bit paé pressionpressionad

Aplicações p

(500);

-------------a filtrar as

m um pequfigura abaix

. 6: Exem

CAÇÃO DE

5 é uma noelho utilizetes e odamente 10norma RC5por dois se

mitido for zzero (segué zero qua

transmitidoara ajuste ra controle

nado na undo uma vez

práticas de Eletr

-------------interferên

ueno orifícxo, para re

mplo de pr

E RECEPTO

orma univezada prinoutros ap0m. 5 usa moemi-ciclos;zero (0), oundo semiando o seu

Fig

o consiste ddo nível (2

e (toggle bnidade de z ou se con

rônica e microco

-------------ncias dinâmio ou em eceber som

roteção do

OR INFRA

ersal desenncipalmentparelhos d

odulação b; a metadeo seu lado -ciclo). Selado direit

gura 8. 7:

de uma pa2 start bits)bit ou flip) q

comando ntinua sen

ontroladores em

[ 114 ]

-------------micas é nec

um tubo mente a luz

o receptoIR.

AVERMEL

nvolvida pete em edoméstico

bifásica, oue esquerdaesquerdo

e o bit a to é um.

: Modulaç

alavra de 1). O primeque muda a distâncido pressio

m sistemas comp

-------------cessário cofeito de cz IR direcio

or contra e

LHO UTILI

ela Phillips equipamens, com

u seja, cóa e direita (primeiro ser transm

ção Bifási

4 bits, seniro e o segde estado

a. Isto seronado;

putacionais, por

-------------olocar o recaneta comonal.

emissões

IZANDO A

para comantos de uma áre

ódigo Mantêm níveissemi-ciclo

mitido for

ca.

ndo eles : gundo correo lógico cadrve para in

r Sandro Jucá

-------------ceptor em

m cola que

s externas

A NORMA

andos a disáudio, t

ea de al

nchester. Cs opostos.

o) é um e um (1), o

esponde ada vez quendicar se o

-------------uma caixa

ente, como

s de raios

A RC5

stância potelevisoreslcance de

Cada bit éSe o bit ao seu ladoo seu lado

1; e um botãoo botão fo

a o

s

r , e

é a o o

o oi

Page 115: Apostila_CPIC

- 5 bits dtabela 7. I- 6 bits dese pretend

Na bits 1 e 2endereçam

Na indicados Consideran1/36 kHz,aproximadcomando d-------------#include <#include < char chegoint32 i; void identi bit_rx if (inp delay_ #int_ext void san_e output_tog sistema=0comando=//*******delay_us(7pela interrdelay_us(1delay_us(1

Aplicações p

de endereçIsso definee comandode executafigura aba de equali

mento; e os

norma RCpelos doi

ndo uma m, ou seja,damente 1das teclas -------------<SanUSB.h<usb_san_

oupc, coma

ifica_bit(vo

=0; ut(pin_b0)_us(860); /

ext()

ggle(pin_b

0; =0; *********750); //Terupção 1720); //Te1720); //Te

práticas de Eletr

ço do sistee o tipo de o representr em um d

aixo vemosização; o bs bits de 9

F

5, os dadois últimos modulação , 64 vez772us. O pressionad-------------h> //Progra_cdc.h>// B

mando, siste

oid)

)==1) bit_// //pula p

b6);

*********mpo do st

empo do sempo do to

rônica e microco

ema para saparelho qtando 1 dodeterminads os bits debit 3, FLIP a 14, indi

igura 8. 8

os são modnúmeros

de 36 kHzzes 27,7 μprograma

das por um-------------ama com pBiblioteca p

ema, bit_rx

_rx=1; //ara o próx

*********tart bit 1 c

start bit 2 oogle bit

ontroladores em

[ 115 ]

seleção deque se pretos 128 comdo aparelhoe 1 a 14 eP, em amacando o co

8: Sinal tr

dulados nudo recep

z, o períodμs (micro

a abaixo idm controle -------------protocolo Rpara comu

x;

/identifica 0ximo períod

*********com a per

m sistemas comp

e 1 dos 32 tende cont

mandos poo (sistema)e sua identarelo; bits omando a

ransmitid

uma frequêptor TSOPo de cada segundos

dentifica oremoto RC-------------RC5 da Phinicação se

0 ou 1 do para ou

*********rda do tem

putacionais, por

sistemas trolar; ssíveis. Iss) selecionaificação: ede 4 a 8 executar.

o.

ência portaP1740, TSObit corresps), o em

o enderC5. -------------illlips de coerial virtual

tra leitura

** mpo do prim

r Sandro Jucá

possíveis

so define aado. em azul claem azul in

adora de 30OP4836, Tponde a 64que corre

reço do si

-------------ontrole reml

meiro sem

listados na

a ação que

aro os startndicando o

0 a 40KHzTSOP48304 pulsos deesponde astema e o

-------------moto

mi-ciclo alto

a

e

t o

, . e a o

o

Page 116: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 116 ]

delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=16; //Bit 5 do byte sistema 0b00010000 delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=8; //Bit 4 do byte sistema 0b00001000 delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=4; //Bit 3 do byte sistema 0b00000100 delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=2; //Bit 2 do byte sistema 0b00000010 delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=1; //Bit 1 do byte sistema 0b00000001 //************************************************* delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=32; //Bit 4 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=16; //Bit 5 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=8; //Bit 4 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=4; //Bit 3 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=2; //Bit 2 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=1; //Bit 1 do byte comando //*************************************************

Page 117: Apostila_CPIC

write_eeprdecodificadwhile(readprintf (usbdelay_ms(atuação da main() clock_int_4 usb_cdc_inusb_init();usb_task()real while(!usb enable_intenable_intreceptor in while(1) if (usb_cdc chegoupc=if (chegou ++i; if (i> ------------- O resultadcontrole rhttp://w

Aplicações p

rom(0x10,das

d_eeprom(b_cdc_putc(500); //Tea interrupç

4MHz();

nit(); // In; // Inicializ); // Une o

b_enumera

terrupts (gterrupts (innfravermel

c_kbhit(1))

=usb_cdc_pc=='L')

>=10000)

-------------

do dos coremoto Ph

www.youtu

Figura

práticas de Eletr

sistema);

0xfd)); c,"comandoempo paração

icializa o pza o protoco periféric

ated()); //A

lobal); // Pnt_ext); // ho

) //avisa se

_getc(); //soutput_tog

i=0; outpu

-------------

omandos ghillips RC5ube.com/

8. 9: Leit

rônica e microco

write_eep

o: %x\r\n"a deixar o

protocolo Ccolo USB o com US

Aguarda rec

Possibilita tHabilita in

e chegou d

se chegou,ggle(pin_b

ut_toggle(

-------------

gerados q5 é mostr/watch?v

ura da te

ontroladores em

[ 117 ]

prom(0x11

",read_eepo receptor

CDC

B do PC /

conhecime

todas internterrupcao

dados do P

retém o cb6); printf(

pin_b7);

-------------

ue corresrado na fv=9VG7Ro

ecla press

m sistemas comp

1,comando

prom(0x11)cego por

//Para dep

ento da em

rrupcoes externa 0

PC

caractere eusb_cdc_p

//Led de v

-------------

pondem àigura abaokuDTs.

ionada vi

putacionais, por

); ////g

)); um segun

urar o pro

mulação ser

no pino B

compara putc, "\r\nT

visualização

-------------

às teclas pixo. Mais

a monito

r Sandro Jucá

guarda as

ndo após

ograma em

rial via USB

B0 onde es

com 'L' ouTesta led!\

o

-------------

pressionaddetalhes

r serial.

s variáveis

a primeira

m aplicação

B

stá ligado o

'D' \r\n");

-------------

das de umno vídeo

s

a

o

o

m :

Page 118: Apostila_CPIC

ACIONAM

Comcontrole dchamada componenem antipaum pulso n

Os dois semi-estado sóluma cargapassagem tensão par

Os eletromecâlugar dos Na verdadestado sól

Durabaixo, esnula passaciclo, cujopotenciôm

As findutivas a

Aplicações p

MENTO D

mo a maiorde fluxo dTRIAC (tr

nte eletrônralelo quena base (d

TRIACS E

Triacs opt-ciclos de lido sem ca CA atravpelo zero

ra a carga relés de

ânica, por relés eletr

de, a tendêido a base

DIMMER

rante a varste dispositando pelo tempo de

metro em sé

figuras abapós o cha

práticas de Eletr

DE CARGA

ria dos sistde energia riode for Aico equiva permite c

disparo).

E RELÉS D

to-isoladosuma onda

controle devés de purealizandoaté a novaestado só isso o noromecânicoência é ume de tiristor

ANALÓG

riação da otivo apresetriac, que

epende o térie.

Figura

aixo mostaveamento

rônica e microco

AS CA COM

temas autode tais s

Alternatinglente a do

conduzir a

DE ESTAD

s, geralmena senoidal.e fase da tulsos no gao o controlea passagemólido (Solidome, consos com seuma substitures como o

ICO

onda senoenta um mo trava no

tempo de c

8. 10: Cir

ram o comdo triac.

ontroladores em

[ 118 ]

M TRIAC

omáticos ésistemas ég Current) ois retificad

corrente e

DO SÓLIDO

nte utilizad Dessa fotensão, coatilho do e de fase dm pelo zeroid State Rsistem na us contatouição grados triacs.

idal na alimmomento zovamente carregame

rcuito dim

mportamen

m sistemas comp

é acionadaé muito ut

da famílidores contrelétrica no

O

dos em carma, são

omo tambétriac em pda tensão, o.

Relay), quealternativa

os ruidososativa dos

mentação zero volt eaté o próx

ento do ca

mmer ana

nto das co

putacionais, por

em correntilizada uma dos tirisrolados des dois sen

argas CA, utilizados

ém no contperíodos dque prom

e não apra modernas e seus prrelés eletro

do dimmee, conseqüximo dispapacitor de

alógico.

rrentes em

r Sandro Jucá

nte alternama chave stores, ou

e silício (SCntidos quan

podem cotanto comtrole de te

determinadmovem a co

resentam a ideal paroblemas momecânico

er mostradoüentementearo no próxe 220nF lim

m cargas r

ada, para oeletrônica

u seja, umCR) ligadosndo recebe

onduzir nosmo relés deensão parados após aondução de

comutaçãora uso emmecânicosos pelos de

o na figurae, correnteximo semi-

mitado pelo

resistivas e

o ,

m s e

s e a a e

o m . e

a e -o

e

Page 119: Apostila_CPIC

Figura

Supzero, o tricapacitor cem série, dispara o alimentaçãgerando http://w

Parainiciamentdecidir quatriac da reutilizado microcontrde diodo forma de o

Aplicações p

8. 11: Co

ponha que iac corta acomeça a caté atingirgatilho do ão da carg

uma www.youtu

CONTROL

a de realizte a passaando, em c

ede para a o métod

rolador pocom interondas obtid

práticas de Eletr

omportama

o TRIAC ea alimentaçcrescer nor a tensãotriac. Notea e só volt

onda ube.com/

LE DIGITA

zar o contagem pelo cada semi-carga CA.

do simpler bordas drrupção exdas pelos d

rônica e microco

mento dasapós o cha

esteja condção da car

ovamente e de dispare que semta a condu

senoida/watch?v

AL DE DIS

trole digitazero da s

-ciclo da sePara ident

es do oe subida e

xterna por dois métod

ontroladores em

[ 119 ]

s correnteaveament

duzindo. Qrga pela foem função ro (VD) no

mpre que a uzir quandoal “fat

v=u1HwZ

SPARO D

al do dispasenóide daenóide da tificar a paopto-acople descida,

borda dedos de sen

m sistemas comp

es em cargto do tria

Quando a conte CA edo valor dDIAC (execorrente p

o o capacittiada”. LRcrYQ m

E UM TRI

aro de uma rede (zerede, será

assagem pador, coe o métod

e subida. Ansoriamento

putacionais, por

gas resistc.

corrente inva partir d

da capacitâemplos: 1Npassa pelotor atinge

O vímostra a o

IAC

m triac é nero-crossingá realizado elo zero dam interruo do transAs figuras o da rede.

r Sandro Jucá

tivas e ind

verte, pasdaí a tensãância e da N5411 e 4

o zero, o tra tensão dídeo n

operação de

necessário g), para ao chaveam

a senóide upção exsformador

abaixo m

dutivas

sando peloão sobre oresistência

40583) queriac corta ade disparono linke um triac.

identificaa partir damento peloda rede foxterna docom ponte

mostram as

o o a e a , k .

r aí o oi o e s

Page 120: Apostila_CPIC

Figura

Notacoplador de iluminasimétricos circuito im

Aplicações p

a 8. 12: Ze

ta-se que anão é exa

ação. Nestnegativo

mpressa com

práticas de Eletr

ero-cross

a forma deata, sendo te caso, pe positivo

m o respec

Figura 8

rônica e microco

sing: formsensori

e onda peloadequada

pode ser , respectivctivo circuit

8. 13: PCB

ontroladores em

[ 120 ]

ma de ondiamento d

o cruzamena para usoque os te

vamente, sto é mostr

B do circu

m sistemas comp

das obtidada rede.

nto do zeroo por exemempos t1 são diferenrada na fgu

ito zero-c

putacionais, por

as pelos d

o com sensmplo, com

e t2, obtntes. Um eura abaixo.

crossing.

r Sandro Jucá

dois méto

soriamentosistemas d

tidos nos exemplo d.

dos de

o por opto-de controlesemi-ciclose placa de

-e s e

Page 121: Apostila_CPIC

No rebate o smomento cortado e maior exat

Mais http://w

A fo

Figura

O Pdaí, com dtabela, emcarga. -------------

Aplicações p

caso do tsemi-ciclo em que aa saída d

tidão a pas

Fig

detalhewww.youtuorma de on

a 8. 15: Fo

Programa adois botõesm que cada

-------------

práticas de Eletr

transformanegativo

a onda sedo coletor ssagem pe

gura 8. 14

es ube.com/nda pode s

orma de o

abaixo idens, o ânguloa atraso co

-------------

rônica e microco

dor e da para posit

enoidal vaié levado a

elo zero.

4: Passage

podem /watch?vser vista co

onda de e

ntifica a pao de fase (orresponde

-------------

ontroladores em

[ 121 ]

ponte de tivo, é pos a zero, pa 5V, ou s

em da on

ser v=u1HwZom mais de

entrada e

assagem p(atraso de e a variaçã

-------------

m sistemas comp

diodo, qussível identpois nesteseja, nível

nda pelo z

viLRcrYQ.etalhes na

saída do

pelo zero dchaveameo de 0,3%

-------------

putacionais, por

e diminui tificar na curto perlógico alt

zero da re

stos

figura aba

circuito d

de tensão ento) entre

% da potên

-------------

r Sandro Jucá

o nível debase do tríodo, o tto, identific

ede.

no

aixo:

detector d

e determie 300 valorncia conced

-------------

e tensão eransistor oransistor ácando com

vídeo

de zero

na a partires de umadida para a

-------------

e o á

m

:

r a a

Page 122: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 122 ]

#include <SanUSB.h> //Mais detalhes em http://www.youtube.com/watch?v=7O9a0E_WXPA #define button PIN_E3 #define button1 PIN_B1 int16 pointer=0; int16 CONST table[300] = 500, 482, 474, 468, 463, 459, 455, 451, 448, 445, 442, 439, 436, 433, 431, 428, 426, 423, 421, 419, 417, 415, 413, 411, 409, 407, 405, 403, 401, 399, 398, 396, 394, 392, 391, 389, 387, 386, 384, 383, 381, 379, 378, 376, 375, 373, 372, 370, 369, 368, 366, 365, 363, 362, 361, 359, 358, 356, 355, 354, 352, 351, 350, 348, 347, 346, 345, 343, 342, 341, 340, 338, 337, 336, 335, 333, 332, 331, 330, 328, 327, 326, 325, 324, 323, 321, 320, 319, 318, 317, 315, 314, 313, 312, 311, 310, 309, 307, 306, 305, 304, 303, 302, 301, 300, 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, 200, 199, 198, 197, 196, 195, 194, 193, 191, 190, 189, 188, 187, 186, 185, 183, 182, 181, 180, 179, 177, 176, 175, 174, 173, 172, 170, 169, 168, 167, 165, 164, 163, 162, 160, 159, 158, 157, 155, 154, 153, 152, 150, 149, 148, 146, 145, 144, 142, 141, 139, 138, 137, 135, 134, 132, 131, 130, 128, 127, 125, 124, 122, 121, 119, 117, 116, 114, 113, 111, 109, 108, 106, 104, 102, 101, 99, 97, 95, 93, 91, 89, 87, 85, 83, 81, 79, 77, 74, 72, 69, 67, 64, 61, 58, 55, 52, 49, 45, 41, 37, 32, 26, 18 ;//*/ int16 i, phase_count=0; signed int j=0, disparo=0; #int_TIMER2 void function_t0 () // set_timer2(239); //es zählt 20 us bis interrupt, d.h. 50kHz ++phase_count;

Page 123: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 123 ]

if(table[pointer]==phase_count) output_high(PIN_B6); //triac an #INT_EXT void Crossing0() output_low(PIN_B6); //triac aus phase_count=0; void main(void) clock_int_4MHz(); //Função necessária para habilitar o dual clock (48MHz para USB e 4MHz para CPU) //setup_wdt(WDT_ON); //Watch dog timer an disparo=read_eeprom(10); //carrega o último valo ajustado if (disparo>9) disparo=0; write_eeprom(10,0); //inicio de operação após gravação setup_adc_ports(AN0); //Habilita entradas analógicas - A0 setup_adc(ADC_CLOCK_INTERNAL); //Configuração do clock do conversor AD enable_interrupts (global); enable_interrupts (int_timer2); //enable_interrupts (int_timer1); enable_interrupts(INT_EXT); ext_int_edge(L_TO_H); //setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); //setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_1);// inicia o timer 1 em 8 x 62500 = 0,5s setup_timer_2(T2_DIV_BY_1,239,1); while(1) ++i; if (i>=20000) i=0; restart_wdt(); // must clear WDT flag in 16 sec. output_toggle(pin_b7); //Led if(!input(button)) delay_ms(30); //while(!input(button)) delay_ms(50); //filter pointer++; // if(pointer>=299) pointer=299; //o botão no pino E3 regula o ângulo de disparo write_eeprom(10, pointer);

Page 124: Apostila_CPIC

if(!input d poin if(po writ -------------

A figlâmpada CTV utilizanoptoisoladMOC3020,pelo optoaconduz pa

Fig

É http://wdigital com-------------#include http://www #define bo#define bo

Aplicações p

t(button1)elay_ms(3

nter--; ointer<=1)te_eeprom

-------------

DIMMER

gura abaixCA por umndo detecor, que é , após a dacoplador ara a carga

gura 8. 1

pwww.youtum controle -------------

w.youtube

otao PIN_Eotao1 PIN_

práticas de Eletr

) 30); //whi

) pointer=(10, pointe

-------------

DIGITAL

xo apresenm microcon

tor de parecebido

detecção de, consequ a tensão a

6: Contro

possível ube.com/remoto IR-------------

<SanUSBe.com/watc

E3 _A0

rônica e microco

ile(!input(b

=0; er);

-------------

L COM CO

ta um um trolador atssagem ppor interrue passageuentementaté o final

ole digital

ve/watch?vR. -------------B.h> ch?v=7O9a

ontroladores em

[ 124 ]

button1))

-------------

NTROLE R

circuito detravés de

pelo zero. upção no

em pelo zete, altera odo semicic

l de lumin

er v=7O9a0E

-------------//M

a0E_WXPA

m sistemas comp

delay_ms(

-------------

REMOTO

e controle dcomandosO comandpino B0, a

ero por into tempo dclo da ond

nosidade d

mais E_WXPA .

-------------Mais A

putacionais, por

(50);

-------------

IR

digital de l de um codo do conaltera o âterrupção ne conduçãa senoidal.

de uma lâ

de. Abaixo o

-------------deta

r Sandro Jucá

-------------

luminosidaontrole remntrole remngulo de no pino Bão do TRIA.

âmpada C

etalhes firmware

-------------alhes

-------------

de de umamoto IR de

moto IR dodisparo do1 realizadaAC BT, que

CA.

emdo dimme

-------------em

a e o o a e

m r

m

Page 125: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 125 ]

int16 i; signed int j=0, disparo=0; char chegoupc, comando, sistema, bit_rx, flag; void identifica_bit(void) bit_rx=0; if (input(pin_b0)==1) bit_rx=1; //identifica 0 ou 1 delay_us(860); // //pula para o próximo período para outra leitura #int_ext void san_ext() disable_interrupts(INT_EXT1); sistema=0; comando=0; //************************************************* delay_us(700); //Diminuir de 750 pelo break etc. Tempo do start bit 1 com a perda do tempo do primeiro semi-ciclo alto pela interrupção delay_us(1720); //Tempo do start bit 2 delay_us(1720); //Tempo do toogle bit delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=16; //Bit 5 do byte sistema 0b00010000 delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=8; //Bit 4 do byte sistema 0b00001000 delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=4; //Bit 3 do byte sistema 0b00000100 delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=2; //Bit 2 do byte sistema 0b00000010 delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) sistema|=1; //Bit 1 do byte sistema 0b00000001 //************************************************* delay_us(860); //pula o primeiro semi-ciclo identifica_bit();

Page 126: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 126 ]

if (bit_rx) comando|=32; //Bit 4 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=16; //Bit 5 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=8; //Bit 4 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=4; //Bit 3 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=2; //Bit 2 do byte comando delay_us(860); //pula o primeiro semi-ciclo identifica_bit(); if (bit_rx) comando|=1; //Bit 1 do byte comando //************************************************* while(read_eeprom(0xfd)); if (comando==1) output_toggle(pin_b7); disparo++; if(disparo>=8) disparo=8; if (comando==2) output_toggle(pin_b7); disparo--; if(disparo<=0) disparo=0; enable_interrupts(INT_EXT1); #INT_EXT1 void CruzaPor0() if (!input(pin_b0)) break; delay_us(500); //devido a detecção de interrup. já com 2,5V como zero, //o inicio para o disparo se encontra ainda no semi-ciclo anterior, por isso, //o delay de inicial para entrar no próximo semi-ciclo delay_ms(disparo); //Para 60 Hz cada semi-ciclo aprox. 4,33ms e o ciclo 8,66ms if(flag==0) output_high(PIN_B6); //dispara triac delay_us(300); output_low(PIN_B6); if (j==0) j=1; ext_int_edge(H_TO_L); // Muda a interrupção da borda de subida para descida da senóide else

Page 127: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 127 ]

j=0; ext_int_edge(L_TO_H); // Muda a interrupção da borda de descida para subida da senóide void main() clock_int_4MHz(); //Função necessária para habilitar o dual clock (48MHz para USB e 4MHz para CPU) disparo=read_eeprom(10); //carrega o último valo ajustado if (disparo==0xff) disparo=0; write_eeprom(10,0); //inicio de operação após gravação enable_interrupts(GLOBAL); enable_interrupts(INT_EXT); enable_interrupts(INT_EXT1); ext_int_edge(L_TO_H); while(true) ++i; if (i>=50000) i=0; output_toggle(pin_b7); //Led de visualização if(!input(botao))//botão de incremento manual de fase delay_ms(100); while(!input(botao)) delay_ms(100); //filtro botão disparo++; // na prática está identificando o zero só uma vez por ciclo if(disparo>=8) disparo=8; //o botão no pino E3 regula o ângulo de disparo write_eeprom(10, disparo); enable_interrupts(INT_EXT1); if(!input(botao1)) delay_ms(100); while(!input(botao1)) delay_ms(100); disparo--; if(disparo<=0) disparo=0; write_eeprom(10, disparo); enable_interrupts(INT_EXT1); ---------------------------------------------------------------------------------------------------------------

Alguns modelos comerciais de triac são o BT e o TIC. Com eles é possível construir dimmers (controladores de luminosidade de lâmpadas) e também controladores de velocidade de motores CA como ventiladores.

Este princípio de controle possibilita também economia de energia, pois, enquanto ele não recebe o disparo, não há condução de corrente para a carga. Outra característica importante é a causa pela qual passou a substituir o reostato original, que acompanha os

Page 128: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 128 ]

motores das máquinas de costura. Como o controle de velocidade é feito pela parcela do semiciclo aplicado e não pela tensão, o torque se mantém mesmo em baixas velocidades.

A outra série de MOC3041, já é projetada com circuito interno fixo para detecção de passagem por zero, assim o chaveamento é automático e não é possível nenhum controle do ângulo de disparo. LCD (DISPLAY DE CRISTAL LÍQUIDO)

O LCD, ou seja, display de cristal líquido, é um dos periféricos mais utilizados como dispositivo de saída em sistemas eletrônicos. Ele contém um microprocessador de controle, uma RAM interna que mantém escritos no display (DDRAM) os dados enviados pelo microcontrolador e uma RAM de construção de caracteres especiais (CGRAM). Os LCDs são encontrados nas configurações previstas na Tabela abaixo.

Número de Colunas

Número de Linhas

Quantidade de pinos

8 2 14 12 2 14/15 16 1 14/16 16 2 14/16 16 4 14/16 20 1 14/16 20 2 14/16 20 4 14/16 24 2 14/16 24 4 14/16 40 2 16 40 4 16

Os displays mais comuns apresentam 16 colunas e duas linhas. Eles têm

normalmente 14 pinos ou 16 pinos. Destes, oito pinos são destinados para dados ou instrução, seis são para controle e alimentação do periférico e dois para backlight. O LED backlight (iluminação de fundo) serve para facilitar as leituras durante a noite. Neste caso, a alimentação deste led faz-se normalmente pelos pinos 15 e 16, sendo o pino 15 para ligação ao anodo e o pino 16 para o catodo. A ferramenta SanUSB tem uma biblioteca em C para este periférico que utiliza somente o nibble superior do barramento de dados (D7, D6, D5 e D4), como é o caso da biblioteca MOD_LCD_SANUSB.c com a seguinte configuração:

Page 129: Apostila_CPIC

A Tmódulos L

DESCRIÇ

Display Limpa DispControle d Sentido decursor ao Deslocameao entrar cDeslocamsem entrEnd. da pr Utilizando Paralcd_enviaconteúdo lcd_envia Exe

Aplicações p

Tabela abaiLCD.

ÇÃO

play com Hdo Cursor

e deslocamentrar comento da mecom caract

mento da rada de carimeira pos

o as instruç

a rolar o a_byte(0,

do LCa_byte(0,

emplo de u

práticas de Eletr

Figu

xo traz um

Tab

Home curso

mento m caractereensagem tere mensage

aractere sição

ções do LC

conteúdo, instruçãCD um ,0x18).

so do recu

rônica e microco

ra 9. 1: C

m resumo d

bela - InsMODO

Liga (Deslig

or Liga DesligDeslocDeslocCursoCursoCursoPara a

e Para aPara aPara a

em Para Para primesegun

CD:

do LCD ão), por ex

caractere

urso de rola

ontroladores em

[ 129 ]

onexão d

das instruç

struções mO

(sem cursoga

ga ca para Esca para Di

or Home or Piscanteor com Altea esquerdaa direita a esquerdaa direita a esquera direita

eira linha nda linha

um caracxemplo, lce para

agem do d

m sistemas comp

do LCD no

ções mais u

mais comRS

or) 00000

squerda 0reita 0

00

ernância 0a 0

0a 0

0da 0

000

ctere para cd_envia_

a esqu

display:

putacionais, por

o PIC.

usadas na

uns RS

R/W

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

a direita,_byte(0,0erda, ut

r Sandro Jucá

comunicaç

Código(Hex)

0C 0A / 08

01 0E 0C 10 14 02 0D 0F 04 06 07 05 18 1C 80 C0

, utilize o0x1C) e patilize o

ção com os

o

8

o comandoara rolar o

comando

s

o o o

Page 130: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 130 ]

A seguinte seqüência de comandos, gera o efeito de uma mensagem rolando no display. Para isso, será necessário declarar uma variável do tipo INT x. --------------------------------------------------------------------------------------------------------------- ////////////////////////////Cabeçalho Padrão//////////////////////////////// #include <SanUSB.h> #include <MOD_LCD_SANUSB.c> // RB0-RS, RB1-EN, RB2-D4, RB3-D5, RB4-D6, RB5-D7 int16 temperatura; int8 x; int1 led; main() clock_int_4MHz(); lcd_ini(); // Configuração inicial do LCD setup_adc_ports(AN0); //Habilita entradas analógicas - A0 setup_adc(ADC_CLOCK_INTERNAL); delay_ms(100); printf(lcd_escreve,"AUTOMACAO FERRAMENTA SanUSB "); while (1) set_adc_channel(0); delay_ms(10); temperatura=500*read_adc()/1023; lcd_pos_xy(1,2); // Posiciona segunda linha printf(lcd_escreve,"TEMPERATURA ATUAL=%lu C",temperatura); //Com LM35 for (x = 0; x < 15; x ++) // repete o bloco abaixo por 15 vezes lcd_envia_byte(0,0x18); // rola display um caractere para esquerda lcd_envia_byte(0,0x0C); //Apaga o cursor led=!led; output_bit(pin_b7,led); delay_ms(500); ---------------------------------------------------------------------------------------------------------------

Para ativar o cursor, utilize o comando lcd_envia_byte(0,0x0E). Para ativar o cursor piscante, utilize o comando lcd_envia_byte(0,0x0F), e para desativar o cursor, use lcd_envia_byte(0,0x0C); Posicionando o cursor: Para posicionar o cursor no LCD, podemos usar a função lcd_pos_xy(x,y), onde x e y são, respectivamente, a coluna e a linha onde o cursor deve ser reposicionado.

Page 131: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 131 ]

Desta forma, caso deseje escrever algo na primeira linha do display, sem apagar a segunda linha, basta inserir o comando lcd_pos_xy(1,1). Isso irá posicionar o cursor na primeira linha, e primeira coluna. No entanto, tome cuidado, pois uma vez que o display não foi apagado, as informações antigas permanecerão na primeira linha, a menos que você as sobrescreva. STRING : É o trecho de caracteres delimitado por aspas duplas, que irá definir como será a seqüência de caracteres a ser gerada. Dentro das aspas, podem ser inseridos caracteres de texto, caracteres especiais e especificadores de formato. No caso dos caracteres especiais, por não possuírem uma representação impressa, são compostos por uma barra invertida seguida de um símbolo, geralmente uma letra. Exemplo de caracteres especiais : \f (limpar display), \n (nova linha), \b (voltar um caractere), \r (retorno de carro), \g (beep), etc... Obs: alguns caracteres especiais somente resultarão efeito em terminais seriais. Já os especificadores de formato são os locais, em meio ao texto, onde serão inseridas as variáveis que aparecerão após a STRING. Desta forma, estes especificadores devem obedecer algumas regras, de acordo com o tipo da variável a ser impressa. Observe a seguinte tabela : Tipo de variável

Especificador de formato e exemplos de uso

int

%u valor decimal (ex: 30) %x valor em hexadecimal (ex: 1D) %3u valor decimal alinhado com três dígitos (ex: _30) %03u valor decimal alinhado 3 dígitos c/ zero (ex: 030)

signed int %i valor decimal com sinal. (ex: -2) %02i decimal com sinal, 2 casas e zeros a esq. (ex: -02)

long int32

%lu valor decimal (ex: 32345675); %05lu valor decimal 5 casas c/ zeros a esquerda. (ex: 01000)

signed long signed int32

%li valor decimal c/ sinal (ex: -500) %4li valor decimal c/ sinal alinhado a esquerda (ex: -_500)

float %f valor real. Ex: (23.313451) %2.3f valor real c/ 2 casas inteiras, 3 decimais. Ex: (23.313)

char %c caractere. Ex: (A)

EXEMPLO: CONTROLE DE TENSÃO DE UMA SOLDA CAPACITIVA COM LCD

O princípio de uma solda capacitiva acontece através da descarga instantânea de capacitores previamente carregados por dois terminais de solda em um ponto específico.

Este projeto consiste em realizar o controle de tensão de uma solda capacitiva em baixo custo, através de um sistema microcontrolado utilizando o PIC18F2550. Para a leitura da tensão CC nos terminais da solda capacitiva, na ordem de 300V, é necessário

Page 132: Apostila_CPIC

inicialmentAD do mmultiplicanreal e tedecrementtensão de reiniciado

Quade potêncatuação aindica a papós a destensão nos

Parasolda capapotenciôma foto do desligame

------------////////////#include < #include < #define bo

Aplicações p

te utilizar microcontrondo o valoensão de tada por dreferênciaa tensão dando a tencia é cortadascende inpresença oscarga de s operadora regular eacitiva com

metro de ajLCD após

nto (Vref)

--------------/////////////<SanUSB.h

<MOD_LCD

otaoinc pin

práticas de Eletr

um divisorlador de

or de tensãreferência

dois botõea ajustada de referêncsão real e da pela abdicando qu não de tensão nosres duranteesse sistem

m o multímuste do divs a montae a tensão

Figura 9

-------------/////Cabeçah>

D_SANUSB

n_a4

rônica e microco

r de tensã5V. Esta

ão lido pelaa na ordees de ajus

é guardadcia assumea de refer

bertura de ue a tenstensão ress terminaise o manusema embarc

metro e iguvisor de tegem em p

o atual (Va

9. 2: Exem

-------------alho Padrã

B.c> // RB0

ontroladores em

[ 132 ]

ão para adrelação d

a mesma em de 2

ste, são mda na meme o último vrência são um relé N

são de refsidual noss de solda,eio da soldcado é necualar com onsão. O ciprotoboardat) podem

mplo de a

--------------ão//////////

0-RS, RB1-

m sistemas comp

dequação àdo divisor relação de

270V, que mostrados emória. Desvalor ajustiguais, a a

NF (normaferência fos capacitor o que con

da. cessário mo valor aturcuito do sd indicandoser vistos

aplicação

-------------/////////////

-E, RB2-D4

putacionais, por

à tensão mé compe

e divisão. Opode se

em um dissa forma, ado.

alimentaçãolmente fec

oi atingida.es de cargntribui para

edir a tensual indicadsistema de o a tensãona figura a

do LCD.

-------------///////////

4, RB3-D5,

r Sandro Jucá

máxima donsada viaOs valores er incremeisplay LCDquando o

o de 220V chado) e u. O LED dga e apaga evitar de

são nos teo no LCD controle d

o de referabaixo.

--------------

RB4-D6, R

o converso softwarede tensão

entada ouD. A últimao sistema é

do circuitoum LED dede atuaçãoa somente

escargas de

erminais daatravés do

de tensão erência para

-------------

RB5-D7

r , o u a é

o e o e e

a o e a

-

Page 133: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 133 ]

#define botaodec pin_a5 #define rele pin_b7 #define ledrele pin_b6 unsigned int16 vref=270, guardavref, constante=100; unsigned int32 vatual, valorAD;//Deve ser de 32 bits devido ao cálculo do AD que esoura 65536 unsigned int8 baixovref, altovref; // Como vref> 256 guardar o valor em 2 bytes, posições 10 e 11 //da EEPROM interna int1 flag1, flag2; main() clock_int_4MHz(); lcd_ini(); // Configuração inicial do LCD output_low(rele); output_low(ledrele); guardavref=(256*read_eeprom(10))+read_eeprom(11)+1; //+1 para compensar um bug de //decremento no reinício if (guardavref>=100 && guardavref<=500) vref=guardavref; // Resgata o último valor de //referência adotado setup_ADC_ports (AN0); //(Selecao_dos_pinos_analogicos) setup_adc(ADC_CLOCK_INTERNAL ); //(Modo_de_funcionamento) set_adc_channel(0); //(Qual_canal_vai_converter) delay_ms(10); printf(lcd_escreve,"SOLDA CAPACITIVA"); while (1) //********************************BOTÕES************************************* if (!input(botaoinc)) flag1=1; if (flag1==1 && input(botaoinc) ) flag1=0;++vref; //se o botão foi pressionado (flag1==1) e se o botão já foi solto (input(botao)) incremente vref altovref=vref/256; baixovref=vref%256; write_eeprom(10,altovref); write_eeprom(11,baixovref); // Como Vref>256, guarde o valor de vref nas posicões 10 e 11 da eeprom interna if (!input(botaodec)) flag2=1; if (flag2==1 && input(botaodec) ) flag2=0;--vref; //se o botão foi pressionado (flag2==1) e se o botão já foi solto (input(botao)) decremente vref altovref=vref/256; baixovref=vref%256; write_eeprom(10,altovref); write_eeprom(11,baixovref); // guarde o valor na de vref nas posicões 10 e 11 da eeprom interna //***************************************************************************** if (vatual>=vref) output_high(rele); output_high(ledrele); //Abre o relé, avisa com led

Page 134: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 134 ]

if (vatual<=20) output_low(rele); output_low(ledrele); //Só desliga depois da descarga //***************************************************************************** valorAD = read_adc(); // efetua a conversão A/D vatual=((constante*5*valorAD)/1023); //Regra de três: 5 --------- 1023 // Tensão real (mV) -------- ValorAD lcd_pos_xy(1,2); printf(lcd_escreve,"Vref=%lu Vat=%lu ",vref, vatual); delay_ms(300); --------------------------------------------------------------------------------------------------------------- MODELAGEM DE SINAIS DE SENSORES

Uma das formas utilizadas para modelar sinais lineares e não lineares de sensores é utilizando funções de aproximação por equação da reta. Esta técnica consiste em obter o gráfico de resposta real tensão do sensor para diversas situações. Após a obtenção do gráfico real, gerar funções lineares deste gráfico através da equação da reta, traçando retas lineares próximas a curva real do gráfico não linear.

Esta técnica pode ser utilizada para diversos tipos de sensores, como LDR, acelerômetro, etc.

EXEMPLO: MODELAGEM DE UM LUXÍMETRO MICROCONTROLADO COM LDR

LDR significa Light Dependent Resistor, ou seja, Resistor Variável Conforme Incidência

de Luz. Esse resistor varia sua resistência conforme a intensidade de radiação eletromagnética do espectro visível que incide sobre ele.

Um LDR é um transdutor de entrada (sensor) que converte a (luz) em valores de resistência. É feito de sulfeto de cádmio (CdS) ou seleneto de cádmio (CdSe). Sua resistência diminui quando a luz é intensa, e quando a luz é baixa, a resistência no LDR aumenta. Um multímetro pode ser usado para encontrar a resistência na escuridão (geralmente acima de 1MΩ) ou na presença de luz intensa (aproximadamente 100Ω).

O LDR é muito frequentemente utilizado nas chamadas fotocélulas que controlam o acendimento de poste de iluminação e luzes em residências. Também é utilizado em sensores foto-elétricos.

Este luxímetro tem em seu circuito sensor um LDR, um resistor divisor de tensão e uma fonte de tensão estabilizada, como mostra a figura abaixo.

Page 135: Apostila_CPIC

Lux 2

Volt 4,9

Paraluminosidaforam feitaluxímetro de 4% daencontradolimite de c

5 12

9 4,9 4,8

Com base

Para simp

Aplicações p

a obter eades, formas e coloccomercial

a leitura +os são vist

cada equaçCo

20 36

4,7 4,5

na tabela,

plificar o pr

(Lu

x)

práticas de Eletr

Figura

este circuima tidos po

adas em uda marca

+ 0.5% dotos na tabção da retaorrespondê

60 94 1

4,3 4,1 4

, foi constr

Fig

ograma dotrês

0

500

1000

1500

2000

2500

2

(Lu

x)

rônica e microco

a 10. 1: C

to e os or ANTONuma tabela

MINIPA, mo fundo debela abaixoa. ncia entre

130 180 2

4 3,8 3

ruído o grá

gura 10. 2

o PIC, foi retas com

2,3 2,5 2

ontroladores em

[ 135 ]

Circuito se

valores de

NIETI, B. Ea juntamenmodelo MLe escala, o. Os valor

a tensão d

240 338 4

3,6 3,3 3

áfico da fig

2: Gráfico

modelado o mostra a

2,8 3,1 3

(V)

m sistemas comp

ensor com

e tensão Em que asnte com asLM-1010, dna faixa dres em neg

da saída e

430 530 6

3,1 3 2

ura abaixo

o Lux x Vo

a curva doa figura ab

,6 4 4,3

)

putacionais, por

m LDR.

na saída s mediçõess iluminâncde 3 ½ díde 1 a 500grito foram

a iluminân

674 827 1

2,8 2,7 2

o.

olt.

o gráfico acaixo.

3 4,7 4,9

r Sandro Jucá

para as s da tensãcias medidígitos , com000 Lux.

m considera

ncia

1000 1183

2,5 2,4

cima, divid

diferenteso de saída

das por umm precisãoOs valoresados como

1404 165

2,3 2,1

dindo-a em

s a

m o s o

1 1923

2

m

Page 136: Apostila_CPIC

O ppor sua aproximad(IF) para s(Lux). A fi04 e 05.

Os c

F

Aplicações p

Figura

programa fresolução

damente 5 saber qualigura abaix

cálculos da

Figura 10.

0

500

1000

1500

2000

2500

(Lu

x)

práticas de Eletr

10. 3: Mo

unciona da(no caso

mV), enco das três exo mostra

a equação

. 4: Gráfic

0

0

0

0

0

0

2 2,2 2,

rônica e microco

odelagem

a seguinte o de um ontrando eequações aa o novo g

geral de c

co lux x te

,4 2,6 2,8

ontroladores em

[ 136 ]

m matemá

maneira: converso

então a tenacima devegráfico lux

cada reta s

ensão util

3 3,2 3,4

(V

m sistemas comp

ática dos v

lê o conveo AD de nsão (V), dee ser utilizaversus vo

ão mostrad

lizando as

3,6 3,8 4

V)

putacionais, por

valores o

rsor A/D e 10 bits,

epois são fada para c

olts, utilizan

dos a segu

s equaçõe

4,2 4,4 4,6

r Sandro Jucá

obtidos.

e multiplicaa resolu

feitas 3 cocalcular a indo as eq

uir:

es 3, 4 e 5

6 4,8 5

esse valoção é demparaçõesiluminânciauações 03

5.

r e s a ,

Page 137: Apostila_CPIC

SUPERVI

Estaatravés dasupervisór

Aplicações p

SÓRIO

a interfacea emulaçãrio para ilu

práticas de Eletr

e foi deseão via USBminância e

rônica e microco

envolvida B de um cae temperat

ontroladores em

[ 137 ]

utilizando anal serial tura.

m sistemas comp

ambienteCOM virtu

putacionais, por

e de progal. A figura

r Sandro Jucá

ramação ra 8 mostra

Delphi® ea a tela do

e o

Page 138: Apostila_CPIC

Figura

Veja10, a fotocompleto pno canal A

Aplicações p

10. 5: Fig

a abaixo, no do circuitpara ler a

AD 0.

Figur

práticas de Eletr

gura da te

na figura ato montadiluminânci

ra 10. 6: E

rônica e microco

ela do sup

abaixo, o eo em opera no canal

Esquema

ontroladores em

[ 138 ]

pervisório

esquema cração. No l AD 1 e a

eletrônic

m sistemas comp

o para Ilu

circuito elefinal do tratemperatu

co do circ

putacionais, por

minância

etrônico moabalho é mura do amb

uito luxím

r Sandro Jucá

a e Tempe

ontado e amostrado obiente com

metro.

eratura.

a na figurao programam um LM35

a a 5

Page 139: Apostila_CPIC

O lupara aplicmétodo doequação microcontr // Program ------------------ #include <float tens,main() clock_int_4lcd_ini(); usb_cdc_inusb_init();usb_task()//while(!us//usb_wait setup_adcsetup_adcoutput_lowprintf (lcd_

Aplicações p

uxímetro mcações ondo modelagque gerorolados.

ma Luxíme-------------

<SanUSB.hlux,temp;

4MHz();

nit(); // In; // Inicializ); // Une osb_cdc_cot_for_enum

c_ports(ANc(ADC_CLOw(pin_b6);_escreve,"

práticas de Eletr

Figura

mostrado nde não é em de cur

ou o gráf

etro digital -------------

h>

icializa o pza o protoc

o perifériconnected())meration();

0_TO_AN1OCK_INTER; \f ");

rônica e microco

a 10. 7: F

neste trabanecessári

rva pode sefico propo

+ termôm-------------

protocolo Ccolo USB com a usb) // espe; //espera

1); RNAL);

ontroladores em

[ 139 ]

Foto do cir

alho apresio haver uer aplicadoosto. Isto

metro digita-------------

CDC

b do PC era o protoaté que a

m sistemas comp

rcuito mo

senta comouma grando em váriao ratifica

al c/ comun-------------

ocolo CDC USB do Pic

putacionais, por

ontado.

o uma solde precisãs ocasiõesa versati

nicação via-------------

se conectac seja reco

r Sandro Jucá

lução de bão nas mes onde nãoilidade de

a USB// -------------

ar com o donhecida p

baixo custoedições. Oo se sabe ae sistemas

-------------

driver CDCpelo PC

o O a s

Page 140: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 140 ]

while(1) set_adc_channel(1); delay_ms(20); tens=5*(float)read_adc()/1023; if (tens>2 && tens<2.8) lux=(3936.4-(1249*tens))/0.8; if (tens>=2.8 && tens<=3.8) lux=2057.2-494*tens; if (tens>3.8) lux=(900-180*tens)/1.2; if (tens>2) //Leitura válida lcd_pos_xy(1,1); printf (usb_cdc_putc,"%.0f",lux); delay_ms(50); printf (usb_cdc_putc,"L"); printf (lcd_escreve,"Iluminancia: %.0f lux ",lux ); lcd_envia_byte(0,0x0C); //Apaga o cursor if (tens<=2) //Leitura não válida lcd_pos_xy(1,1); printf (usb_cdc_putc,"Erro"); delay_ms(50); printf (usb_cdc_putc,"L"); printf (lcd_escreve,"valor fora da faixa! "); lcd_envia_byte(0,0x0C); //Apaga o cursor delay_ms(30); set_adc_channel(0); delay_ms(20); temp=500*(float)read_adc()/1023; lcd_pos_xy(1,2); printf (usb_cdc_putc,"%.1f",temp); delay_ms(50); printf (usb_cdc_putc,"T"); printf (lcd_escreve,"Temperatura: %.1f oC ",temp); lcd_envia_byte(0,0x0C); //Apaga o cursor delay_ms(800); output_high(pin_b6); delay_ms(200); output_low(pin_b6);

---------------------------------------------------------------------------------------------------------------

Page 141: Apostila_CPIC

INTER

I2C pela Philipmesmo cirusando o mlinhas: umestá em us

O b

bidireciona3,4 Mbits/

Estatransmitir número mmáxima do

Um

Aplicações p

RFACE I

significa Ips como o rcuito, commenor núm

ma linha seso, as dua

barramentoal com velos no modoa interfaceou recebe

máximo deo barrame exemplo t

práticas de Eletr

2C

Inter-IC (Iobjetivo d

mo microcomero de pierial de das linhas fic

F

o serial, coocidade deo High-speee apresen

er um dado CIs que nto de 400típico de co

rônica e microco

Integratede conectarontroladornos possívdos (SDA)

cam em nív

Figura 11.

om transfee 100 Kbpsed. nta a filoso, e o transpodem se

0pF. onfiguraçã

ontroladores em

[ 141 ]

Circuit). r CIs e perres, memóvel. Este pr) e uma devel lógico a

. 1: Barra

erência des no modo

sofia multsmissor ge

er conectad

o I2C em T

m sistemas comp

Este barrariféricos derias externrotocolo see clock (SCalto forçada

mento I2C

e 8 bits poo Padrão, 4

ti-master oera o seu pdos é limit

TVs é most

putacionais, por

amento see diferentenas e relóerial necessCL). Quandas pelos re

C.

or vez, pos400 Kbps n

onde todopróprio cloctado apen

trado na fig

r Sandro Jucá

erial foi dees fabricanógio em tesita somendo o baraesistores d

ssibilita cono modo F

o CI da ck de tran

nas pela ca

gura abaix

esenvolvidotes em umempo real

nte de duasmento nãoe pull-up.

omunicaçãoast, ou até

rede podesmissão. Oapacitância

xo:

o m , s o

o é

e O a

Page 142: Apostila_CPIC

REGRAS

Cad

alto.

As cO barrameperíodo de

Umlinha SCL partida elinha SCL,

Cadreconhecimdurante a (SLAVE) éreconhecim

Se não receb

Aplicações p

PARA TR

da bit da li

F

condições ento é cone tempo apa transiçãopermanec

e uma trandefine um

Figur

da byte mento é g ocorrênci

é obrigadomento.

o SLAVE rer mais ne

práticas de Eletr

Figura

RANSFERÊ

inha de da

igura 11.

de partidansiderado cpós a condo de H pace em H, nsição de L

ma condiçã

ra 11. 4: C

é acompaerado peloia do puls a levar a

Figura

reconhecerenhum byt

rônica e microco

a 11. 2: C

ÊNCIA DE

ados só é l

3: Leitur

a e parada como ocupição de paara L da ou seja,

L para H ão de para

Comandos

anhado do MASTER o de clock

a linha SDA

a 11. 5: re

r o enderete de dado

ontroladores em

[ 142 ]

onfiguraç

E DADOS

lido quand

ra de dado

de transmpado apósarada. linha SDAum dado

H da linha rada.

s de início

de um bno décim

k de reconA a nível

econhecim

eço, mas dos, o MAST

m sistemas comp

ção I2C em

do o nível d

os em com

missão são a condiçã

DA (start biválido, é

a SDA (sto

o e fim de

bit de recmo bit libenhecimentobaixo dur

mento do

depois de TER dever

putacionais, por

m TVs.

da linha de

municaçã

sempre geão de part

bit) durantedefinido

op bit) dura

e comunic

conhecimeerando a lio. Por suaante o pe

o byte.

algum temá abortar

r Sandro Jucá

de clock est

o.

eradas peloida, e livre

e o tempo como conante o pe

cação.

ento obriginha SDA a vez, o Ceríodo H d

mpo na traa transferê

tá em níve

o MASTERe um certo

em que andição deríodo H da

gatório. O(nível alto)CI receptoo clock de

ansferênciaência. Esta

el

R. o

a e a

O ) r e

a a

Page 143: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 143 ]

condição é indicada pelo SLAVE, devido à não geração do reconhecimento logo após a recepção do primeiro byte de dados. O SLAVE deixa a linha de dados em nível H e o MASTER gera a condição de parada.

Caso haja uma interrupção interna no SLAVE durante a transmissão, ele deverá levar também a linha de clock SCL a nível L, forçando o MASTER a entrar em um modo de espera.

Para escrever um dado nos escravos é necessário enviar um byte de endereço do escravo, onde os 4 bits mais significativos identificam o tipo de escravo (por exemplo, memórias EEPROM é 1010 ou 0xa0 e RTC é 1101 ou 0xd0 (com exceção do RTC PCF8583 cujo endereço também é 0xa0). Os 3 bits intermediários especificam de um até 8 dispositivos, que são discriminados nos pinos de endereço de cada escravo, e o bit menos significativo R/W indica se a operação é de leitura (1) ou escrita (0). Após isso, deve-se enviar uma palavra de 8 ou16 bits de endereço onde se quer escrever e depois o dado. No final do pacote uma condição de parada (i2c_stop).

Figura 11. 6: Escrita de dados.

Função da biblioteca I2C que descreve essa operação de escrita em memória EEPROM: --------------------------------------------------------------------------------------------------------------- void escreve_eeprom(byte dispositivo, long endereco, byte dado) // Escreve um dado em um endereço do dispositivo // dispositivo - é o endereço do dispositivo escravo (0 - 7) // endereco - é o endereço da memória a ser escrito // dado - é a informação a ser armazenada if (dispositivo>7) dispositivo = 7; i2c_start(); i2c_escreve_byte(0xa0 | (dispositivo << 1)); // endereça o dispositivo livrando o LSB que é o R\W i2c_le_ack(); // Lê reconhecimento do escravo i2c_escreve_byte(endereco >> 8); // parte alta do endereço de 16 bits i2c_le_ack(); i2c_escreve_byte(endereco); // parte baixa do endereço de 16 bits i2c_le_ack(); i2c_escreve_byte(dado); // dado a ser escrito i2c_le_ack(); i2c_stop(); delay_ms(10); // aguarda a programação da memória

Page 144: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 144 ]

--------------------------------------------------------------------------------------------------------------- Para a operação de leitura de um escravo é necessário um start repetido e no final do pacote um sinal de não-reconhecimento (nack) e uma condição de parada (i2c_stop).

Figura 11. 7: Recepção e transmissão de dado.

A Função da biblioteca I2C que descreve este protocolo de operação de leitura de

memória EEPROM é a seguinte: --------------------------------------------------------------------------------------------------------------- byte le_eeprom(byte dispositivo, long int endereco) // Lê um dado de um endereço especificado no dispositivo // dispositivo - é o endereço do dispositivo escravo (0 - 7) // endereco - é o endereço da memória a ser escrito byte dado; if (dispositivo>7) dispositivo = 7; i2c_start(); i2c_escreve_byte(0xa0 | (dispositivo << 1)); // endereça o dispositivo i2c_le_ack(); i2c_escreve_byte((endereco >> 8)); // envia a parte alta do endereço de 16 bits i2c_le_ack(); i2c_escreve_byte(endereco); // envia a parte baixa do endereço de 16 bits i2c_le_ack(); i2c_start(); //repetido start // envia comando para o escravo enviar o dado i2c_escreve_byte(0xa1 | (dispositivo << 1)); endereça o dispositivo e colocando em leitura 0xa1 i2c_le_ack(); dado = i2c_le_byte() // lê o dado i2c_nack(); i2c_stop(); return dado; ---------------------------------------------------------------------------------------------------------------

Page 145: Apostila_CPIC

Para256 bytesutilização (256 Kbitapresentammostra o c

O p5000mV dde 150 remostrado -------------#include <#include <#include < unsigned iint32 tensultrapassaint8 byte1char coma

Aplicações p

MEMÓRIA

a sistemass (capacidde memórts que com, entre ocircuito sim

Figur

programa ae um poteegistros devia emulaç-------------<SanUSB.h<usb_san_<i2c_sanus

int16 i,j,ensao_lida32 65536 ,byte2,byte

ando;

práticas de Eletr

A EEPROM

s embarcaddade da Erias EEPROorrespondeoutras car

mples de um

ra 11. 8: U

abaixo moenciômetroe 16 bits ção serial s-------------h> _cdc.h>// Bsb.c>

ndereco=0; //Varia

e3,byte4; /

rônica e microco

M EXTERN

dos em quEEPROM i

OM externae a 32Kbacterísticasma EEPRO

Uso de me

ostra o arm, a cada sena memó

somente qu-------------

Biblioteca p

0, posicao=de 0 a 5

// 4 Partes

ontroladores em

[ 145 ]

NA I2C

e são necenterna do

als. Os modbytes). Ess, interfac

OM I2C liga

emória EE

mazenameegundo, emória EEPROuando a te-------------

para emula

=0, valorgr5000mV (

s do valor i

m sistemas comp

essários a os microcodelos maisstas memóce de comda nn ferra

EPROM ex

nto de vam um buffeOM externaecla ‘L’ é p-------------

ação da co

ravado; 16bits), m

int32 tensa

putacionais, por

aquisição dontroladores comuns sórias possunicação Iamenta Sa

xterna via

lores digiter (região a, ou sejapressionada-------------

omunicação

mas é int3

ao_lida32

r Sandro Jucá

de dados des), é nesão o 24LCsuem oitoI2C. A fig

anUSB.

a I2C.

tal de tensde memór

a, 300 byta. -------------

o serial

32 porque

de mais decessária a

C e 24C256o pinos eura abaixo

são de 0 aria circular)tes, que é

-------------

o cãlculo

e a 6 e o

a ) é

o

Page 146: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 146 ]

int conv_dec_4bytes(int32 valor32) //Converte decimal de 32 bits em 4 bytes int32 resultado1=0,resultado2=0; resultado1 = valor32/256; byte1 = valor32%256; //o que for resto (%) é menos significativo resultado2 = resultado1/256; byte2= resultado1%256; byte3= resultado2%256; byte4 = resultado2/256; return(byte4,byte3,byte2,byte1); main() clock_int_4MHz(); usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com a usb do PC setup_adc_ports(AN0); //Habilita entradas analógicas - A0 setup_adc(ADC_CLOCK_INTERNAL); while(1) set_adc_channel(0); delay_ms(10); //Tensão é 32bis porque o produto 5000* read_adc() de 10 bits (1023) pode ser maior que 65536 tensao_lida32=(5000*(int32)read_adc())/1023; //Calcula a tensão Trimpot em mV: 5000mV - 1023 (10bis) printf (usb_cdc_putc,"\r\n tensao do Trimpot = %lu mV\r\n",tensao_lida32);// tensao_lida - read_adc(); conv_dec_4bytes(tensao_lida32); //printf (usb_cdc_putc,"\r\nVariavel em Hexadecimal = %x %x %x %x\r\n",byte4,byte3,byte2,byte1);//Debug posicao=2*endereco; //Endereço é o ponteiro de cada valor de 2 bytes (16 bits) escreve_eeprom( 0, posicao, byte2); //segundo Byte menos significativo do int32 escreve_eeprom( 0, posicao+1, byte1 ); //Byte menos significativo do int32 //printf (usb_cdc_putc,"\r\nEndereco = %lu Posicao = %lu\r\n",endereco,posicao);//Debug ++endereco; if (endereco>=150)endereco=0; //Buffer de 300 bytes posicao<=300 //****************LEITURA DO BUFFER DA EEPROM EXTERNA*************************** if (usb_cdc_kbhit(1)) //Se existe carater digitado entre na função comando=usb_cdc_getc(); if (comando=='L') printf(usb_cdc_putc, "\r\n\nEEPROM:\r\n"); // Display contém os primeiros 64 bytes em hex da eeprom externa i2c

Page 147: Apostila_CPIC

for(i=0; fo valorgravade 16 bits print //***********output_toggle(p

delay_ms(

RTC (R

O Rcontroladointerface srelógio/calretenção 500mA/h

Aplicações p

i<10; ++i)or(j=0; j<1

ado= 256*ou 300 deprintf(usb

tf(usb_cdc_putc

**************pin_b7);

(1000);

RELÓGIReal Timeo por um cserial I2C lendário e dos dados

h conectad

práticas de Eletr

) //10lin15; ++j)

*le_eeprome 8 bits. b_cdc_putc

c, "\n\r");

*************

Figura 11

IO EM Te Clock I2

ristal exter(SCL e Ssão configs na falta

da ao pino

rônica e microco

nhas * 30c

m(0,(i*30)+

c, "%lu ", v

*************

1. 9: Leitu

TEMPO 2C DS1307rno de 32.7DA). Oito gurados naa de ener3.

ontroladores em

[ 147 ]

colunas = 3

+2*j) + le_

valorgravad

*************

ura de va

REAL)7 é um r768 Hz. A bytes de

a forma Birgia utiliza

m sistemas comp

300 bytes

_eeprom(0

do );

*************

lores da m

elógio/calecomunicaçRAM do

nary Codeando uma

putacionais, por

(int16 i,j)

0,(i*30)+2

*****

memória.

endário seção com o RTC são

ed Decimala bateria

r Sandro Jucá

*j+1); //1

.

erial de bDS1307 é usados pa – BCD. Éde lítio

50 Valores

aixo custoatravés de

ara função possível ade 3V -

s

o e o a -

Page 148: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 148 ]

Figura 12. 1: RTC DS1307 e similar.

Para representar números decimais em formato binário, o relógio DS1307, bem como calculadoras e computadores utilizam o código BCD, que incrementa a parte alta do byte hexadecimal quando o número da parte baixa é maior que 9. Isto é possível somando 6 (0110b) ao resultado maior que 9. Este código facilita a transmissão de dados e a compreensão do tempo, tendo em vista que em formato hexadecimal, apresenta o valor em decimal. Para transformar decimal em BCD, é possível dividir o número binário (byte) por 10 e colocar o resultado isolado das dezenas no nibble alto do byte BCD e o resto, ou seja, as unidades, no nibble baixo do byte BCD.

Para iniciar o relógio DS1307, após o power-on, é necessário incrementar os segundos quando estiverem todos os registros da RAM em zero. A bateria GP 3.6V garante o funcionamento do relógio e também o processamento do PIC16F877A. Testes indicaram que a bateria suportou o processamento e incremento automático do relógio por cerca de sete horas sem alimentação externa.

Figura 12. 2: Registros de tempo DS1307.

Page 149: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 149 ]

//PROGRAMA PARA CONFIGURAR E LER UM RELÓGIO RTC I2C VIA MONITOR SERIAL///////////////////// --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> #include <usb_san_cdc.h>// Biblioteca para emulação da comunicação serial #include <i2c_sanusb.c> Char entrada,funcao,endrtc,valorrtc1,valorrtc2; unsigned int endereco, valor,valorbcd, numquant; boolean led; /***************************************************************************** * Conversão BCD P/ DECIMAL ****************************************************************************/ int bcd_to_dec(int valorb) int temp; temp = (valorb & 0b00001111); temp = (temp) + ((valorb >> 4) * 10); return(temp); /***************************************************************************** * Conversão DECIMAL p/ BCD *****************************************************************************/ int dec_para_bcd(unsigned int valord) return((0x10*(valord/10))+(valord%10));//Coloca a parte alta da divisão por 10 no nibble mais significativo ////////////////////////////////////////////////////////////////////////////////// main() clock_int_4MHz(); usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com a usb do PC while (1) //***************************************************************************** if (usb_cdc_kbhit(1)) //verifica se acabou de chegar um novo dado no buffer de recepção, depois o kbhit é zerado entrada=usb_cdc_getc(); //comando é o Byte recebido pela serial usb_cdc_putc,

Page 150: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 150 ]

if (entrada=='A') funcao=usb_cdc_getc(); switch (funcao) //UTILIZAR VALORES DECIMAIS EM DOIS DIGITOS. ex:06 ou 23 ou 15 ////////////////////////FUNCAO 4: CONFIGURA RELÓGIO//////////////////////////////Ex: A4H09 case '4': endrtc=usb_cdc_getc(); valorrtc1=usb_cdc_getc(); valorrtc2=usb_cdc_getc(); //Ex: A4M43 - Altera os minutos para 43 if (endrtc=='H') endereco=2; //Escreve o endereco das horas if (endrtc=='M') endereco=1; //Escreve o endereco dos minutos if (endrtc=='S') endereco=0; //Escreve o endereco dos segundos if (endrtc=='D') endereco=4; //Escreve o endereco do dia if (endrtc=='N') endereco=5; //Escreve o endereco do mes if (endrtc=='Y') endereco=6; //Escreve o endereco do ano if (valorrtc1>='0'&&valorrtc1<='9') numquant=(valorrtc1-0x30); if (valorrtc2>='0'&&valorrtc2<='9') numquant=numquant*10+(valorrtc2-0x30); valor=numquant; if (endereco==0) if(valor>59) valor=0; if (endereco==1) if(valor>59) valor=0; if (endereco==2) if(valor>23) valor=0; if (endereco==4) if(valor>31) valor=1; if (endereco==5) if(valor>12) valor=1; if (endereco==6) if(valor>99) valor=0; //---------Converte byte hexadecimal para byte BCD decimal -------------- valorbcd=dec_para_bcd(valor); //----------------------------------------------------------------------- escreve_rtc(endereco,valorbcd); //Valor1 é byte BCD (decimal). printf(usb_cdc_putc,"\r\nA5 %2x:%2x:%2x",le_rtc(2), le_rtc(1),le_rtc(0)); //BCD em hexadecimal representa o decimal printf(usb_cdc_putc," %2x%2x%2x\r\n",le_rtc(4), le_rtc(5), le_rtc(6)); break; //////////////////////FUNCAO 5: LÊ RELÓGIO/////////////////////Ex: A5- Lê o relógio e o calendário case '5': printf(usb_cdc_putc,"\r\nA5 %2x:%2x:%2x",le_rtc(2), le_rtc(1),le_rtc(0));//BCD em hexadecimal representa o decimal printf(usb_cdc_putc," %2x%2x%2x\r\n",le_rtc(4), le_rtc(5), le_rtc(6)); break; //***************************************************************************** led = !led; // inverte o led de teste output_bit (pin_b7,led); delay_ms(500);

Page 151: Apostila_CPIC

-------------------

Em algumas goutras. Taé analógicde sinais Comumendigitais, hásensores smicrocontranalógico decisões ló

A bprojeto demudança sistema.

O csistema, c

Aplicações p

-------------------

EXEMPLO

muitos sigrandezas

ais grandezca. Isto é, t

digitais qte quandoá a necesssejam adeqrolador doconvertido

ógicas baseateria em e aquisiçãoda fonte

conversor ujos coma

práticas de Eletr

--------------------

O: PROTÓ

istemas defísicas, c

zas são inetrata-se deue são deo as saídasidade do cquados às otado de uo para digeadas em paralelo co

o de dadosde alimen

TTL/EIA-2ndos AT sã

rônica e microco

-------------------

ÓTIPO DAT

e aquisiçãocomo exemerentes a ae variáveisescontínuoas analógicondicionamcaracteríst

um converital é proccomparaçõom a fontes. Além dentação da

232 Max23ão descrito

Figura 1

ontroladores em

[ 151 ]

--------------------

TALOGGE

o de dadomplo, temalguns fenôque assum

os e exprecas dos smento do ticas de umrsor interncessado peões ou em e de alimee evitar re

USB para

32 é utilizaos no próxi

13. 3: Dat

m sistemas comp

-------------------

ER USB DE

os e contromperatura, ômenos físmem valoreessados sesensores ssinal para

m conversoo AD paraelo softwaoperaçõesntação tem

eset por qua a fonte

ado para imo tópico

talogger.

putacionais, por

E BAIXO C

ole é necepressão

sicos e, emes contínuoegundo resão procesque os sin

or AD. Assia aquisiçãore de conts matemátm uma graueda de te

externa s

conexão d.

r Sandro Jucá

CUSTO

essária a e velocida

m geral, suos e reais,

epresentaçãssadas ponais provenim, com o o de dadotrole de aticas. ande relevâensão, elasem desco

do módulo

medida deade, entrea natureza, diferentesão bináriar sistemasnientes dosuso de um

os, o valocordo com

ância neste permite aonexão do

o GPRS ao

e e a s . s s

m r

m

e a o

o

Page 152: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 152 ]

Este sistema de aquisição de dados USB é Dual Clock, ou seja, utiliza duas fontes de clock, uma para o canal USB de 48MHz, proveniente do oscilador externo de 20MHz, e outra para o processador na execução do protocolo i2c, proveniente do oscilador RC interno de 4 MHz. (#byte OSCCON=0XFD3 //Aponta o registro do oscilador interno para configuração de 4MHz na função Main -> OSCCON=0B01100110;).

Figura 12. 4: Comunicação PIC com PC e via I2C.

--------------------------------------------------------------------------------------------------------------- ///////////////////////////////////////////////////////////////////////// //// Este programa utiliza duas fontes de clock, uma para o canal USB//// //// de 48MHz proveniente do oscilador externo de 20MHz e outra para //// //// o processador na execução do protocolo i2c, proveniente do //// //// oscilador interno 4 de MHz////////////////////////////////////////// //// O Watch Dog Timer (WDT) protege contra travamento do programa ///// ////////////////////////////Cabeçalho Padrão///////////////////////////// #include <SanUSB.h> //#device ADC=8 #include ".\include\usb_san_cdc.h"// Biblioteca para comunicação serial #include <i2c_dll16sanc.c> char escravo,funcao,sensor,endrtc, valorrtc1,valorrtc2,posmeme1,posmeme2,posmeme3,posmeml1,posmeml2,posmeml3,posquant1,posquant2; unsigned int ender, endereco, val, valor,valorbcd; unsigned int mult=2,end=0, reg, numquant; unsigned int16 hora,horadec,minuto,minutodec,segundo,segundodec,dia,diadec,mes,mesdec,ano,anodec; unsigned int16 i, j,numpose, numposl,num16,endpromext,k,puloext,bufferdia; int8 regi[2]; boolean led,ledint,flagwrite; /***************************************************************************** * Conversão BCD P/ DECIMAL *******************************************************************/ int bcd_to_dec(int valorb)

Page 153: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 153 ]

int temp; temp = (valorb & 0b00001111); temp = (temp) + ((valorb >> 4) * 10); return(temp); /***************************************************************************** * Conversão DECIMAL p/ BCD ***************************************************************/ int dec_para_bcd(unsigned int valord) return((0x10*(valord/10))+(valord%10));//Coloca a parte alta da divisão por 10 no nibble mais significativo ////////////////////////////////////////////////////////////////////////////////// #int_timer1 void trata_t1 () --mult; if (!mult) mult=2; // 2 *(48MHz/4MHz) - 4 seg hora=le_rtc(2); minuto=le_rtc(1); segundo=le_rtc(0); dia=le_rtc(4); mes=le_rtc(5); ano=le_rtc(6); ledint = !ledint; // inverte o led de teste - pisca a cada 2 *12 interrupcoes = 1 seg. output_bit (pin_b0,ledint); reg= read_adc(); //Tensão e corrente //escreve_eeprom(0,end,reg); não funciona a escrita i2c dentro da interrupção do timer write_eeprom( end, reg ); ++end; if(end>=127)end=0; segundodec=bcd_to_dec(segundo);minutodec=bcd_to_dec(minuto);horadec=bcd_to_dec(hora); diadec=bcd_to_dec(dia);mesdec=bcd_to_dec(mes);anodec=bcd_to_dec(ano); if (segundodec==05 && (minutodec==00||minutodec==10||minutodec==20||minutodec==30||minutodec==40||minutodec==50)) //if ((segundodec==00||segundodec==10||segundodec==20||segundodec==30||segundodec==40||segundodec==50)) flagwrite=1; //endpromext=(minutodec/10)+(horadec*6)+((diadec-1)*24*6*2)+24*6*k; //endpromext=(segundodec/10)+(minutodec*6); //Não aceita DE JEITO NENHUM escrever na eeprom ext por interrupção do timer via i2c

Page 154: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 154 ]

//printf(usb_cdc_putc,"\n\rEndpromext = %lu e reg = %u \n\r, segundodec = %lu\n\r",endpromext,reg,segundodec); //Aceita imprimir via USB set_timer1(3036 + get_timer1()); // Conta 62.500 x 8 = 0,5s ////////////////////////////////////////////////////////////////////////////////// main() usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com a usb do PC OSCCON=0B01100110; //Clock interno do processador de 4MHZ setup_adc_ports(AN0_TO_AN1); //Habilita entradas analógicas - A0 A1 setup_adc(ADC_CLOCK_INTERNAL); //Configuração do clock do conversor AD enable_interrupts (global); // Possibilita todas interrupcoes enable_interrupts (int_timer1); // Habilita interrupcao do timer 1 setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8);// inicia o timer 1 em 8 x 62500 = 0,5s set_timer1(3036); setup_wdt(WDT_ON); //Habilita o temporizador cão de guarda - resseta se travar o programa principal ou ficar em algum usb_cdc_getc(); while (1) //***************************************************************************** if (flagwrite==1) flagwrite=0; //Flag de gravação setada na interrupção do timer quando chega a hora de gravar k=0; for(k=0;k<2;k++) set_adc_channel(k); delay_ms(20); regi[k]= read_adc(); //Tensão M1[0], correnteM1[1] endpromext=(minutodec/10)+(horadec*6)+((diadec-1)*24*6*2)+24*6*k; //endpromext=(segundodec/10)+(minutodec*6)+((diadec-1)*60*6*2)+60*6*k; //Para teste 60 em vez de 24 escreve_eeprom(0,endpromext, regi[k]); printf(usb_cdc_putc,"\r\nPosicao = %lu -> Sensor[%lu] = %u\r\n",endpromext,k,regi[k]); //***************************************************************************** led = !led; // inverte o led de teste output_bit (pin_b7,led); restart_wdt(); // Limpa a flag do WDT para que não haja reset

Page 155: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 155 ]

delay_ms(500); //***************************************************************************** if (usb_cdc_kbhit(1)) //verifica se acabou de chegar um novo dado no buffer de recepção, //depois o kbhit é zerado para próximo dado escravo=usb_cdc_getc(); //comando é o Byte recebido pela serial usb_cdc_putc, if (escravo=='A') funcao=usb_cdc_getc(); switch (funcao) //UTILIZAR VALORES DECIMAIS EM DOIS DIGITOS. ex:06 ou 23 ou 15 //***************************************************************************** case '4': endrtc=usb_cdc_getc(); valorrtc1=usb_cdc_getc(); valorrtc2=usb_cdc_getc(); //Ex: A4M43 - Altera os minutos para 43 if (endrtc=='H') endereco=2; //Escreve o endereco das horas if (endrtc=='M') endereco=1; //Escreve o endereco dos minutos if (endrtc=='S') endereco=0; //Escreve o endereco dos segundos if (endrtc=='D') endereco=4; //Escreve o endereco do dia if (endrtc=='N') endereco=5; //Escreve o endereco do mes if (endrtc=='Y') endereco=6; //Escreve o endereco do ano if (valorrtc1>='0'&&valorrtc1<='9') numquant=(valorrtc1-0x30); if (valorrtc2>='0'&&valorrtc2<='9') numquant=numquant*10+(valorrtc2-0x30); valor=numquant; if (endereco==0) if(valor>59) valor=0; if (endereco==1) if(valor>59) valor=0; if (endereco==2) if(valor>23) valor=0; if (endereco==4) if(valor>31) valor=1; if (endereco==5) if(valor>12) valor=1; if (endereco==6) if(valor>99) valor=0; //---------Converte byte hexadecimal para byte BCD decimal -------------- valorbcd=dec_para_bcd(valor); //----------------------------------------------------------------------- escreve_rtc(endereco,valorbcd); //Valor1 é byte BCD (decimal). //printf(usb_cdc_putc,"\r\nVALOR ESCRITO = %2x\r\n",valorbcd); //printf(usb_cdc_putc,"\r\nPOSICAO = %2x\r\n",endereco);

Page 156: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 156 ]

hora=le_rtc(2);minuto=le_rtc(1);segundo=le_rtc(0); printf(usb_cdc_putc,"\r\nA4%2x:%2x:%2x",hora, minuto,segundo); printf(usb_cdc_putc," %2x%2x%2x\r\n",le_rtc(4), le_rtc(5), le_rtc(6)); break; //////////////////////FUNCAO 5: LÊ RELÓGIO////////////////////////Ex: A5- Lê o relógio e o calendário case '5': printf(usb_cdc_putc,"\r\nA5 %2x:%2x:%2x",le_rtc(2), le_rtc(1),le_rtc(0)); printf(usb_cdc_putc," %2x%2x%2x\r\n",le_rtc(4), le_rtc(5), le_rtc(6)); break; //////////////////////FUNCAO 6: LÊ BUFFER EEPROM/////////////////////Ex: A6 09(DIA) 0(SENSOR) case '6': posmeme1=usb_cdc_getc(); posmeme2=usb_cdc_getc(); sensor=usb_cdc_getc(); if (posmeme1>='0' && posmeme1<='9') bufferdia=(posmeme1-0x30); if (posmeme2>='0' && posmeme2<='9') bufferdia=bufferdia*10+(posmeme2-0x30); if (sensor>='0' && sensor<='1') k=(sensor-0x30); printf(usb_cdc_putc,"Buffer Sensor %lu - Dia %lu\r\n",k,bufferdia); delay_ms(10); //puloext=((bufferdia-1)*60*6*2)+60*6*k;// Seleciona buffer de teste de tensao puloext=((bufferdia-1)*24*6*2)+24*6*k;// Seleciona buffer for(i=0; i<6; ++i) //for(j=0; j<60; ++j) printf(usb_cdc_putc,"%2u ", le_eeprom(0,puloext+(i*60+j)) ); //"%2u\n\r" para gerar gráfico no excell for(j=0; j<24; ++j)printf(usb_cdc_putc,"%2u ", le_eeprom(0,puloext+(i*24+j)) ); delay_ms(15); printf(usb_cdc_putc,"\r\n"); //posiciona próxima linha break; ---------------------------------------------------------------------------------------------------------------

Page 157: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 157 ]

TRANSMISSÃO DE DADOS VIA GSM

A sigla GSM significa Global Standard Mobile ou Global System for Mobile Communications que quer dizer Sistema Global para Comunicações Móveis. O GSM é um sistema de celular digital baseado em divisão de tempo, como o TDMA, e é considerado a evolução deste sistema, pois permite, entre outras coisas, a troca dos dados do usuário entre telefones através do SIM Card e acesso mais rápido a serviços WAP e Internet, através do sistema GPRS.

A transmissão de dados GSM pode ser feita por: - GPRS (General Package Radio Service): É uma conexão em uma rede de pacote de dados. Uma vez conectado nessa rede, o sistema estará sempre on line, podendo transferir dados imediatamente. O GPRS é compatível com o protocolo de rede TCP/IP e as operadoras de GSM disponibilizam um gateway para a Internet, possibilitando conectar e controlar equipamentos wireless através da Internet. Como o GPRS é baseado no protocolo IP, ele necessita de autenticação de um servidor da internet. - SMS (Short Message Service): É o serviço de envio/recebimento de pequenas mensagens de texto do tipo datagrama, sem autenticação de um servidor de internet. Os Modems GSM são controlados através de comandos AT. Esses comandos são normalizados pelas normas GSM 07.07 e GSM 07.05.

A manipulação do modem pode ser realizada em algum emulador de comunicação serial como o Hyperterminal, nele deve-se ajustar para 9600 bps,e não esquecendo de instalar o SIM Card no modem.

COMANDOS AT PARA ENVIAR MENSAGENS SMS DE UM COMPUTADOR PARA UM CELULAR OU MODEM GSM

A seguinte tabela lista os commandos AT para escrever e enviar mensagens SMS:

Comando AT Significado

+CMGS Envia mensagem

+CMSS Envia uma mensagem armazenada

+CMGW Escreve uma mensagem na memória

+CMGD Apaga mensagem

+CMGC Envia comando

+CMMS Envia mais mensagens

Exemplo feito com um computador:

1-AT 2-OK 3- AT+CMGF=1 4- OK

Page 158: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 158 ]

5-AT+CMGS="+558588888888" //<ctrl + z (minúsculo)> digita-se o texto após > 6-> Teste de mensagem 7- OK +CMGS: 170 OK

Abaixo está o significado de cada linha: 1- Testa conexão com o modem. 2- Modem conectado. 3- Coloca o celular no modo texto. 4- Modo texto confirmado. 5- Número do telefone que irá receber a mensagem. 6- O modem retorna o caractere “>” solicitando a mensagem a ser enviada (ao final: “ctrl z”). 7- Mensagem enviada.

COMANDOS AT PARA RECEBER MENSAGENS SMS EM UM COMPUTADOR ENVIADAS POR UM CELULAR OU MODEM GSM

A seguinte tabela lista os commandos AT para receber e enivair mensagens SMS:

Comando AT Significado

+CNMI New message indications

+CMGL Lista mensagens

+CMGR Lê menssagens

+CNMA Reconhecimento de nova menssagem

Exemplo feito com um computador:

AT OK AT+CMGF=1 OK AT+CMGL="ALL" +CMGL: 1,"REC READ","+85291234567",,"06/11/11,00:30:29+32" Hello, welcome to our SMS tutorial. +CMGL: 2,"REC READ","+85291234567",,"06/11/11,00:32:20+32" A simple demo of SMS text messaging.

Adiante é apresentado um exemplo de como enviar uma mensagem SMS do modem GSM para um celular com uso do PC. Os comandos enviados ao modem estão em negrito para diferenciar de suas respostas.

Page 159: Apostila_CPIC

1-AT 2-OK 3- AT+CM4- OK 5-AT+CM6->Intrus7- OK

As figutransmissãferramentado PC. O sistema esdescrito achaves sindispositivoEste, reprede dados Comunicat

Aplicações p

MGF=1

MGS="+55são

uras abaixão GPRS/Ga SanUSB LED verde

stava no manteriormennalizadoraso MAX232 esentado ne o 3 par

tion Equipm

práticas de Eletr

58588888

xo apresenGSM. A cpara a alime foi usad

modo de grnte. As chs dos trêusado na na figura ara recepçãment).

rônica e microco

8888"

ntam a fotconexão Umentação do por estaavação. O haves cones sensoreinterface

apenas pelão, já que

ontroladores em

[ 159 ]

to em proUSB obsedo circuitoa ferramenvermelho ectadas as utilizadoRS/EIA-23lo conecto se trata

m sistemas comp

otoboard e rvado no

o e gravaçãnta para ssimulou o os pinos os. A figu32 entre o r DB9, posde um eq

putacionais, por

o circuitesquema

ão do proginalizar o acioname

23, 24 e ura abaixo

microcontssui o pinouipamento

r Sandro Jucá

to esquema, foi utiligrama no Pmomento

ento do ala25, repre

o mostra ttrolador e o 2 para tro do tipo

mático paraizada pelaPIC atravésem que orme, comosentam astambém oo modem

ransmissãoDCE (Data

a a s o o s o . o

ta

Page 160: Apostila_CPIC

F

#include <short int l #USE RS2 main() clock_int_4 printf("AT+ ledpisca=!output_bitdelay_ms( printf("AT+ ledpisca=!output_bitdelay_ms( printf("Alaputc(0x1A

Aplicações p

igura 14.

<SanUSB.hledpisca;

232 (BAUD

4MHz();

+CMGF=1\

!ledpisca; /t(pin_b7,le(2000);

+CMGS=\"

!ledpisca; t(pin_b7,le(2000);

rme atuadA); // contro

práticas de Eletr

1: Esque

h>

=9600,XM

\r"); //con

// ledpisca edpisca); //

"+5585888

edpisca);

do\r"); //6 ol z

rônica e microco

emático e

IT=PIN_C6

figura mod

é igual ao/ b7 recebe

888888\"\r

- escreve a

ontroladores em

[ 160 ]

foto do d

6,RCV=PIN

do texto pa

o inverso de o valor d

r"); //5- En

a mensage

m sistemas comp

datalogge

N_C7,strea

ara o mode

e ledpiscae ledpisca

nvia para o

em para o

putacionais, por

er conecta

am=PC)

em

numero d

modem GS

r Sandro Jucá

ado ao PI

de destino

SM

C.

Page 161: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 161 ]

ledpisca=!ledpisca; output_bit(pin_b7,ledpisca); delay_ms(2000); putc(0x0D); while(TRUE) output_high(pin_B7); delay_ms(500); output_low(pin_B7); delay_ms(500); O PROTOCOLO MODBUS EMBARCADO

O protocolo Modbus foi desenvolvido pela Modicon Industrial Automation Systems, hoje Schneider, para comunicar um dispositivo mestre com outros dispositivos escravos. Embora seja utilizado normalmente sobre conexões seriais padrão EIA/RS-232 e EIA/RS-485, ele também pode ser usado como um protocolo da camada de aplicação de redes industriais tais como TCP/IP sobre Ethernet.

Este é talvez o protocolo de mais utilizado em automação industrial, pela sua simplicidade e facilidade de implementação.

A motivação para embarcar um microcontrolador em uma rede MODBUS pode ser por: - Baixo custo; - Tamanho reduzido; - Alta velocidade de processameto (1 a 12 MIPs); - Possuir 10 canais ADs internos com resolução de 10 bits; - Ferramentas de desenvolvimento gratuitas e possibilidade de programação da memória de programa sem necessidade de hardware adicional, bastando uma porta USB; - Estudo das características construtivas de hardware e de software de uma rede MODBUS.

MODELO DE COMUNICAÇÃO

O protocolo Modbus é baseado em um modelo de comunicação mestre-escravo, onde um único dispositivo, o mestre, pode iniciar transações denominadas queries. O demais dispositivos da rede (escravos) respondem, suprindo os dados requisitados pelo mestre ou executando uma ação por ele comandada. Geralmente o mestre é um sistema supervisório e os escravos são controladores lógico-programáveis. Os papéis de mestre e escravo são fixos, quando se utiliza comunicação serial, mas em outros tipos de rede, um dispositivo pode assumir ambos os papéis, embora não simultaneamente.

Page 162: Apostila_CPIC

Há paridade eutiliza comcheck), utdeve ser in

ExisInterchangdos parâm Como projeto p

A implemdiagrama d

Aplicações p

DETECÇÃ

dois mecaem cada camo frame ilizando conicializado

MODOS D

stem doisge) e RTU

metros de cmo a comuproposto fo

entação pde blocos

práticas de Eletr

Figu

ÃO DE ERR

anismos paractere e check seq

omo polinôcom o val

DE TRANS

s modos (Remote T

comunicaçãunicação geoi desenvo

prática de abaixo.

rônica e microco

ura 14. 1:

ROS

ara detecço frame ch

quence umômio, P(x) or 0xffff.

SMISSÃO

de transmTerminal Uão. eralmente olvido nesta

um proj

ontroladores em

[ 162 ]

: Checage

ção de errheck seque

m valor de= x16 + x1

missão: AUnit), que

utilizada ea forma de

eto com

m sistemas comp

em de dad

ros no proence ao fin 16 bits p

15 + x2 + 1

ASCII (Amsão selecio

em automae comunica

o modbus

putacionais, por

dos.

otocolo Monal da menpara o CR1. O registr

erican Coonados du

ção industação.

s embarca

r Sandro Jucá

odbus serinsagem. O RC (ciclic rro de cálcu

ode for Iurante a co

trial é em m

ado é mo

al: bits demodo RTU

redundanceulo do CRC

nformationonfiguração

modo RTU

ostrada no

e U e C

n o

,

o

Page 163: Apostila_CPIC

ParaRTU, atravque é um testar se ono microcreal como

Os

rastreadascoletadas analisadastambém sã

Aplicações p

Figura

a testar avés da porsoftware

o desenvoontroladoro Elipse S

Figura

sistemas s informaçõatravés de

s, armazenão chamad

práticas de Eletr

a 14. 2: D

comunicarta serial elivre de Mlvimento d

r. Durante CADA.

a 14. 3: So

supervisórões de um e equipamnadas e dos de SCA

rônica e microco

Diagrama

ação com emulada peMestre MODdas rotinaso teste é

oftware d

rios são soprocesso

mentos de posteriorm

ADA (Super

ontroladores em

[ 163 ]

de bloco

escravo Mela USB doDBUS escrs de proce

possível u

de teste d

oftwares qprodutivo aquisição

mente aprrvisory Con

m sistemas comp

s comuni

Modbus (mo PC, é porito em C+essamento utilizar tam

de comun

que permitou instalaçde dados

resentadas ntrol and D

putacionais, por

cação Mo

microcontroossível utiliz++. Ele pod

do protocmbém um

icação Mo

tem que sção física. Ts e, em se

ao usuáData Aquisi

r Sandro Jucá

odBus.

olador) emzar o Modde ser util

colo Modbusistema s

odBus.

sejam monTais informeguida, maário. Estesition).

m protocolobus Testelizado paraus contidasupervisório

nitoradas emações sãoanipuladass sistemas

o r a s o

e o , s

Page 164: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 164 ]

Para comunicar com o supervisório Elipse é necessário instalar um driver dedicado a comunicação ModBus RTU, que é fornecido gratuitamente pela própria Elipse. O modo Modbus RTU com microcontrolador PIC desse projeto, mostrado no link http://www.youtube.com/watch?v=KUd1JkwGJNk , suporta funções de leitura (3) e escrita (16). --------------------------------------------------------------------------------------------------------------- #include <SanUSB.h> #include <usb_san_cdc.h>// Biblioteca para comunicação serial #byte port_a = 0xf80 #byte port_b = 0xf81 long int checksum = 0xffff; unsigned int x,i,y,z; unsigned char lowCRC; unsigned char highCRC; int tamanhodata; int32 buffer[100]; void CRC16 (void) //Modo RTU for (x=0; x<tamanhodata; x++) checksum = checksum^(unsigned int)buffer[x]; for(i=8;i>0;i--) if((checksum)&0x0001) checksum = (checksum>>1)^0xa001; else checksum>>=1; highCRC = checksum>>8; checksum<<=8; lowCRC = checksum>>8; buffer[tamanhodata] = lowCRC; buffer[tamanhodata+1] = highCRC; checksum = 0xffff; void ler (void) buffer[2]=usb_cdc_getc(); buffer[3]=usb_cdc_getc(); buffer[4]=usb_cdc_getc(); buffer[5]=usb_cdc_getc(); buffer[6]=usb_cdc_getc(); buffer[7]=usb_cdc_getc(); delay_ms(3);

Page 165: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 165 ]

buffer[2]=0x02; buffer[3]=0x00; buffer[4]=port_a; //o buffer[4] leva o valor de entrada da porta A do microcontrolador para o SCADA tamanhodata = 5; CRC16(); void rxler (void) //Leu a porta a no buffer[4] e escreve o CRC no buffer[5] e [6], pois tamanhodata = 5 printf(usb_cdc_putc,"%c%c%c%c%c%c%c",buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5],buffer[6]); // 6 bytes void escrever (void) buffer[2]=usb_cdc_getc(); buffer[3]=usb_cdc_getc(); buffer[4]=usb_cdc_getc(); buffer[5]=usb_cdc_getc(); buffer[6]=usb_cdc_getc(); buffer[7]=usb_cdc_getc(); buffer[8]=usb_cdc_getc(); buffer[9]=usb_cdc_getc(); buffer[10]=usb_cdc_getc(); delay_ms(3); tamanhodata = 6; CRC16(); port_b = buffer[8]; //A porta B do microcontrolador recebe o valor enviado pelo SCADA void rxescrever (void) printf(usb_cdc_putc,"%c%c%c%c%c%c%c%c",buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5],buffer[6],buffer[7]); //7 bytes main() clock_int_4MHz(); usb_cdc_init(); // Inicializa o protocolo CDC usb_init(); // Inicializa o protocolo USB usb_task(); // Une o periférico com a usb do PC set_tris_b(0b00000000); while(1)

Page 166: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 166 ]

if (usb_cdc_kbhit(1)) //verifica se acabou de chegar um novo dado no buffer USB, depois o kbhit é zerado para próximo dado buffer[0]=usb_cdc_getc(); z = buffer[0]; if (z==1) //verifica se o endereco do slave e igual a 1 buffer[1]=usb_cdc_getc(); //verifica a função contida no segundo byte buffer[1] y = buffer[1]; if (y==3) //verifica se a função é para leitura e encaminha para leitura de variável do microcontrolador ler(); rxler(); if (y==16) //verifica se a função é para escrita no microcontrolador, ou seja, comando de atuação do uC escrever(); rxescrever(); --------------------------------------------------------------------------------------------------------------- O fluxograma desse firmware é mostrado abaixo:

Page 167: Apostila_CPIC

Notum procestransceptomicrocontrindustrial q

INTRODU

Um sistemkernel), quambiente

de multitaembarcadodesenvolvibaseado e

Aplicações p

Figura 14

te que a cosso real é nor ou TTL/Erolador, prque utiliza

UÇÃO À S

ma operacioue controlmultitarefa

O uso darefas é os. A feido pelo r

em interrup

práticas de Eletr

4. 4: Flux

omunicaçãonecessário EIA-485 (Mreservandoesse proto

SISTEMAS

onal em tea a alocaças (multitade um sistuma realierramenta usso Victopção de tem

rônica e microco

xograma d

o serial desutilizar um

MAX485). Co as limitaçocolo.

S OPERAC

empo real ção de tareasking) contema operadade cada

computaor Timofeemporizador

ontroladores em

[ 167 ]

do sistem

sse projetom transceptCom o MODções de fun

CIONAIS E

(RTOS) éefas quandcorrentes.acional ema vez maacional Saev, atravésres.

m sistemas comp

a de com

o foi emulator ou TTLDBUS embnções, em

EM TEMP

é um progrdo o proce

m tempo reais presenanUSB ims dos com

putacionais, por

unicação

ada via USBL/EIA-232 (barcado é pum proces

O REAL (R

rama (geraessador es

al (RTOS) te nos pr

mplementapiladores M

r Sandro Jucá

o ModBus.

B, para ap(MAX232) possível intsso de auto

RTOS)

almente chstá operan

para procrojetos de

a um RTMPLABX C

.

plicação emou tegrar um omação

hamado dedo em um

cessamentoe sistemasTOS livreC18 e CCS

m

e m

o s , ,

Page 168: Apostila_CPIC

Umconcorrentprojetos rfirmware, é baseadofirmware e Em existe apeRTOS paraintervalo dparalela e Comhttp://wwwhttps://dl.As duas ppode https://dl. Prática 1em loop independePrática 21- Tareleds; 2- Tare3- Tareutilizando

OBS: Denabaixo, qprioridade #ifndef _OS#define _OS #define OS_#define OS_

Aplicações p

a das printes, ou sereais mais que o RTO

o na ideia dem laço infum sistem

enas uma a que cadade tempo simultânea

mo exw.youtubedropbox.coráticas desser cdropbox.co

1: Nesta prinfinito pa

ente. : Nesta práefa de leitu

efa de rotaefa que indisplay de

tro de cadque deve in

das tarefa

SACFG_H SACFG_H

_TASKS _DISABLE_PR

práticas de Eletr

cipais caraeja, tarefas

simples, OS se encade multitarfinito. ma multitarCPU, é nea tarefa temuito cur

a. xemplo, e.com/watcom/u/1019scritas abaconstruída om/u/1019

rática o RTara aciona

ática o RTOura do AD

ação de oitnverte o s sete segm

da projetondicar a qas.

3 PRIORITY

rônica e microco

acterísticass paralelaspois bastaarrega do refas (mult

refa, inúmeecessária aenha o temrto, assim

estão ch?v=s6BG922388/RTaixo de RT

segui922388/12

TOS execuar 3 leds,

OS executacom poten

to leds na sentido de mentos com

o ‚ necessáuantidade

ontroladores em

[ 168 ]

s de um RTs. Dessa fa descrevegerenciamtithread),

eras tarefaalguma for

mpo que neparece q

disponG8ZN0aDkTOSB.zip paTOS foram indo o1007SanU

uta em paconectad

a em paralnciômetro

porta B; e rotação d

mo leds.

ário inseride tarefas

m sistemas comp

TOS é a caorma, o Rer cada ta

mento do ponde cada

as exigem rma de orecessita. Nue as tare

níveis e

ara os comdesenvolvos tutSBOrig.zip

ralelo 3 taos nos p

lelo: para modi

dos leds p

r o cabeçs e as car

putacionais, por

apacidade RTOS tornaarefa em urocesso. D

a tarefa é u

tempo da ganização

Na prática, efas são e

uma os

mpiladores idas com atoriais .

arefas concinos B7, B

ficar a velo

por botão

çalho OSAcacterísticas

r Sandro Jucá

de procesa a prograuma funçã

Dessa formuma funçã

CPU, e ume coordencada tare

executadas

vídeo-auprogramaCCS e MP

a placa Sadisponíve

correntes eB6 e B5,

ocidade de

no pino 1

cfg.h, coms do proje

ssar tarefasamação deão task doa, O RTOS

ão em C do

ma vez quenação peloefa tem ums de forma

la emas emPLABX C18anUSB, queeis em

e paralelasde forma

e brilho dos

1 (PIN_E3)

mo descritoeto como a

s e o S o

e o m a

m m . e

m

s a

s

)

o a

Page 169: Apostila_CPIC

#define OS_ Qua

atividade temperatupequeno in- Tarefa 1 - Tarefa 2 - Tarefa 3

As atividadesnesta catemáquina dTalvez o mswitch-castarefas, no

A mO estado próximo efinal do sde um laço

Aplicações p

_ENABLE_TT

ase todos e trabalha

ura é comntervalo delê a tempeFormata oexibe a te

MÁQUINA

máquinas , geralmenegoria. Pode lavar lométodo mase. Por exomeado Ta

Figu

máquina dinicial é

stado a seswitch-caso infinito.

práticas de Eletr

TIMERS

os sistemaam em tem

mposto de e tempo, aeratura; o valor da temperatura

AS DE EST

de estadnte em umor exemplouça é facilais simplesxemplo, noarefa 1, Ta

ura 15. 1:

de estado 1, é inc

er executadse. A máq

rônica e microco

as baseadompo real. três taref

a saber:

temperatua;

TADO

o são simma sequênco, o funcilmente dess de impleosso sisterefa 2, Tar

: Impleme

executa crementaddo. O últimquina de

ontroladores em

[ 169 ]

os em micPor exem

fas que,

ra;

mples conscia. Muitos ionamentoscrito comementar umma de mrefa 3 e, co

entação d

as três tao a cada

mo estado estado é

m sistemas comp

crocontrolamplo, um snormalme

struções usistemas d

o de uma uma máqma máquinonitorameomo mostr

de máquin

arefas usaa tarefa dseleciona executad

putacionais, por

adores exesistema dente, que

usadas parda vida rea

máquina quina de esna de estanto de terado na Fig

na de esta

ando declado Estadoo estado 1

da continu

r Sandro Jucá

ecutam mae monitorase repete

ra executaal que se ede lavar

stado de cado em C emperaturagura abaix

ado.

arações swo para se1, e há umuamente n

ais de umaamento da

e após um

ar diversasenquadram

roupa ouconstruçãoé usar um

a tem trêso.

witch-caseelecionar om atraso nono interio

a a

m

s m u .

m s

. o o r

Page 170: Apostila_CPIC

F

Em contrário, condição.

Fig

Aplicações p

Figura 15.

muitas apo próximo

ura 15. 3

práticas de Eletr

. 2: Máqu

plicações, oo estado é

: Selecion

rônica e microco

ina de est

os estadosselecionad

nando o p

ontroladores em

[ 170 ]

tado imp

s não precdo direto p

próximo e

m sistemas comp

lementad

isam ser epelo estado

estado a p

putacionais, por

da em Ling

executadoso atual ou

partir do e

r Sandro Jucá

guagem C

s em seqüêbaseado e

estado at

C.

ência. Peloem alguma

tual.

o a

Page 171: Apostila_CPIC

O RTOdas tarefamáximo de

UTILIZMUL

1) Instvers(htt

2) ParhttpTod(ww Dep

projecduplo ce vassoextensã

Aplicações p

S tambémas a sereme execução

ZANDOLTIPLAT

tale o MPLsão C1tp://www.m

a compilarps://dl.drodos essww.tinyu

pois de ict e escolhclique sobroura). Parão .c dentr

Fig

práticas de Eletr

m é o respom executao de cada t

O CTAFORM

LABX e o co18 Litemicrochip

r os prograpbox.com/

ses progrl.com/Sa

nstalado her o projere pisca.c. ra compilaro da mesm

gura 16. 1

rônica e microco

onsável poradas consitarefa.

COPILAMA COM

ompilador e para.com/page

amas com o/u/1019223gramas anUSB).

é possíveto ProjetoPara compr outros pma pasta d

1: Projeto

ontroladores em

[ 171 ]

r decidir o iderando o

ADOR M FUNÇ

C18. É posa o ehandler/

o C18 e o 388/ProjSa

estão

el abrir oo1C18.X. pilar press

programas.do projeto

o pisca LED

m sistemas comp

agendameos níveis

C18 ÇÕES E

ssível baixasistema

en-us/fam

SanUSB, banUSB1_M

disponíve

o projeto É possível

sione Build .c basta mProjeto1C

D no com

putacionais, por

ento (schede priorid

E A M PORT

ar gratuitaoperac

mily/mplab

basta abrir PLABX/Pro

eis no

MPLAX c visualizar

d and Cleanmodifica-loC18.X.

mpilador C

r Sandro Jucá

eduling) dadade ou p

IDE MTUGUÊ

mente o Mcional

bx/#downlo

o Projeto1ojeto1C18.X

Grupo

clicando o program

n (ícone coos ou criá-

C18.

sequênciapelo tempo

MPLABXS

MPLABX e adesejado

oads)

1C18.X emX.zip

SanUSB

em Openma com umom martelo-los com a

a o

X

a o

m . B

n m o a

Page 172: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 172 ]

FUNÇÕES EM PORTUGUÊS

Este capítulo descreve todas as funções em português da biblioteca SanUSB no C18. É importante salientar que além dessas funções, são válidas as funções padrões ANSI C e também as funções do compilador C18 detalhadas na pasta instalada C:\MCC18\doc. A fim de facilitar o entendimento, as funções SanUSB foram divididas em oito grupos, definidos por sua utilização e os periféricos do hardware que estão relacionadas.

FUNÇÕES BÁSICAS DA APLICAÇÃO DO USUÁRIO

Este grupo de funções define a estrutura do programa uma vez que o usuário deve escrever o programa.c de sua aplicação.

O microcontrolador possui um recurso chamado watchdog timer (wdt) que nada mais é do que um temporizador cão-de-guarda contra travamento do programa. Caso seja habilitado habilita_wdt() na função principal main(), este temporizador está configurado para contar aproximadamente um intervalo de tempo de 16 segundos. Ao final deste intervalo, se a flag limpa_wdt() não for zerada, ele provoca um reset do microcontrolador e conseqüentemente a reinicialização do programa. A aplicação deve permanentemente zerar a flag limpa_wdt() dentro do laço infinito (while(1)) na função principal main() em intervalos de no máximo 16 segundos. Este recurso é uma segurança contra qualquer possível falha que venha travar o programa e paralisar a aplicação. Para zerar o wdt, o usuário pode também utilizar a função ClrWdt() do compilador C18.

A seguir estão as características detalhadas destas funções.

clock_int_4MHz()

Função: Habilita o clock para a processador do oscilador interno de 4MHz. Argumentos de entrada: Não há. Argumentos de saída: Não há. Observações: O clock padrão proveniente do sistema USB interno do PIC é de 48MHz gerado a partir do cristal de 20 MHz. Isto é possível através de um multiplicador interno de clock do PIC. A função _int_4MHz() habilita, para o processador do microcontrolador, o oscilador RC interno em 4 MHz que adéqua o período de incremento dos temporizadores em 1us. É aconselhável que seja a primeira declaração da função principal main(). Exemplo:

#include “SanUSB1.h” void main (void) clock_int_4MHz(); nivel_alto()

Page 173: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 173 ]

Função: Força nível lógico alto (+5V) em uma saída digital. Argumentos de entrada: Nome da saída digital que irá para nível lógico alto. Este nome é construído pelo inicio pin_ seguido da letra da porta e do número do pino. Pode ser colocado também o nome de toda a porta, como por exemplo, portb. Argumentos de saída: Não há. Observações: Não há. Exemplo:

nivel_alto(pin_b7); //Força nível lógico 1 na saída do pino B7 nivel_alto(portb); //Força nível lógico 1 em toda porta b nivel_baixo()

Função: Força nível lógico baixo (0V) em uma saída digital. Argumentos de entrada: Nome da saída digital que irá para nível lógico baixo. Este nome é construído pelo inicio pin_ seguido da letra da porta e do número do pino. Pode ser colocado também o nome de toda a porta, como por exemplo, portc. Argumentos de saída: Não há. Observações: Não há. Exemplo:

nivel_baixo(pin_b7); //Força nível lógico 0 na saída do pino B7 nivel_baixo(portc); //Força nível lógico 0 em toda porta c saída_pino(pino,booleano)

Função: Acende um dos leds da placa McData. Argumentos de entrada: Pino que irá receber na saída o valor booleano, valor booleano 0 ou 1. Argumentos de saída: Não há. Observações: Não há. Exemplo:

ledpisca=!ledpisca; // ledpisca é igual ao inverso de ledpisca saida_pino(pin_b0,ledpisca); // b0 recebe o valor de ledpisca tempo_us()

Função: Tempo em múltiplos de 1us. Argumentos de entrada: Tempo de delay que multiplica 1 us. Argumentos de saída: Não há. Observações: Esta instrução só é finalizada ao final do tempo determinado, ou seja, esta função “paralisa” a leitura do programa durante a execução. Exemplo:

tempo_us(200); //Delay de 200 us

Page 174: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 174 ]

tempo_ms()

Função: Tempo em múltiplos de 1 ms. Argumentos de entrada: Tempo de delay que multiplica 1 ms. Argumentos de saída: Não há. Observações: Esta instrução só é finalizada ao final do tempo determinado, ou seja, esta função “paralisa” a leitura do programa durante a execução. Exemplo:

tempo_ms(500); //Delay de 500 ms entrada_pin_xx

Função: Lê nível lógico de entrada digital de um pino. Argumentos de entrada: Não há. Observações: Este nome é construído pelo inicio entrada_pin_ seguido da letra da porta e do número do pino. Exemplo:

ledXOR = entrada_pin_b1^entrada_pin_b2; //OU Exclusivo entre as entradas dos pinos b1 e b2 habilita_interrupcao()

Função: Habilita as interrupções mais comuns do microcontrolador na função main(). Argumentos de entrada: Tipo de interrupção: timer0, timer1, timer2, timer3, ext0, ext1, ext2, ad e recep_serial. Argumentos de saída: Não há. Observações: As interrupções externas já estão habilitadas com borda de descida. Caso se habilite qualquer interrução deve-se inserir o desvio _asm goto interrupcao _endasm na função void _high_ISR (void) da biblioteca SanUSB.h Exemplo:

habilita_interrupcao(timer0); habilita_interrupcao(ext1); if(xxx_interrompeu)

Função: Flag que verifica, dentro da função de tratamento de interrupções, se uma interrupção específica ocorreu. Complemento: timer0, timer1, timer2, timer3, ext0, ext1, ext2, ad e serial. Argumentos de saída: Não há. Observações: A flag deve ser zerada dentro da função de interrupção. Exemplo:

#programa interrupt interrupcao void interrupcao() if (ext1_interrompeu) //espera a interrupção externa 1 (em B1)

Page 175: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 175 ]

ext1_interrompeu = 0; //limpa a flag de interrupção PORTBbits.RB0 =! PORTBbits.RB0; //inverte o LED em B0 if (timer0_interrompeu) //espera o estouro do timer0 timer0_interrompeu = 0; //limpa a flag de interrupção PORTBbits.RB0 =! PORTBbits.RB0; //inverte o LED em B7 tempo_timer16bits(0,62500); liga_timer16bits(timer,multiplicador)

Função: Liga os timers e ajusta o multiplicador de tempo na função main(). Argumentos de entrada: Timer de 16 bits (0,1ou 3) e multiplica que é o valor do prescaler para multiplicar o tempo. Argumentos de saída: Não há. Observações: O timer 0 pode ser multiplicado por 2, 4, 6, 8, 16, 32, 64, 128 ou 256. O Timer 1 e o Timer 3 podem ser multiplicados por 1, 2, 4 ou 8. Exemplo:

liga_timer16bits(0,16); //Liga timer 0 e multiplicador de tempo igual a 16 liga_timer16bits(3,8); //Liga timer 0 e multiplicador de tempo igual a 8 tempo_timer16bits(timer,conta_us)

Função: Define o timer e o tempo que será contado em us até estourar. Argumentos de entrada: Timer de 16 bits (0,1ou 3) e tempo que será contado em us (valor máximo 65536). Argumentos de saída: Não há. Observações: O Não há. Exemplo:

habilita_interrupcao(timer0); liga_timer16bits(0,16); //liga timer0 - 16 bits com multiplicador (prescaler) 16 tempo_timer16bits(0,62500); //Timer 0 estoura a cada 16 x 62500us = 1 seg. habilita_wdt()

Função: Habilita o temporizador cão-de-guarda contra travamento do programa. Argumentos de entrada: Não há. Argumentos de saída: Não há. Observações: O wdt inicia como padrão sempre desabilitado. Caso seja habilitado na função principal main(), este temporizador está configurado para contar aproximadamente um intervalo de tempo de 16 segundos. Ao final deste intervalo, se a flag limpa_wdt() não for zerada, ele provoca um reset do microcontrolador e conseqüentemente a reinicialização do programa. Exemplo:

#include “SanUSB1.h”

Page 176: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 176 ]

void main (void) clock_int_4MHz(); habilita_wdt(); //Habilita o wdt limpaflag_wdt()

Função: limpa a flag do wdt Argumentos de entrada: Não há. Argumentos de saída: Não há. Observações: Caso o wdt seja habilitado, a flag deve ser limpa em no máximo 16 segundos para que não haja reinicializaçção do programa. Geralmente esta função é colocada dentro do laço infinito while(1) da função principal main(). É possível ver detalhes no programa exemplowdt.c e utilizar também a função ClrWdt() do compilador C18 . Exemplo:

#include “SanUSB1.h”

void main (void) clock_int_4MHz(); habilita_wdt(); while(1) limpaflag_wdt(); ..... ..... tempo_ms(500); escreve_eeprom(posição,valor)

Função: Escrita de um byte da memória EEPROM interna de 256 bytes do microcontrolador. Argumentos de entrada: Endereço da memória entre 0 a 255 e o valor entra 0 a 255. Argumentos de saída: Não há. Observações: O resultado da leitura é armazenado no byte EEDATA. Exemplo:

escreve_eeprom(85,09); //Escreve 09 na posição 85

le_eeprom()

Função: Leitura de um byte da memória EEPROM interna de 256 bytes do microcontrolador. Argumentos de entrada: Endereço da memória entre 0 a 255. Argumentos de saída: Não há. Observações: O resultado da leitura é armazenado no byte EEDATA. Exemplo:

dado=le_eeprom(85);

Page 177: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 177 ]

FUNÇÕES DO CONVERSOR ANALÓGICO DIGITAL (A/D)

As funções a seguir são utilizadas para a aquisição de dados utilizando as entradas analógicas.

habilita_canal_AD()

Função: Habilita entradas analógicas para conversão AD. Argumentos de entrada: Número do canal analógico que irá ser lido. Este dado habilita um ou vários canais AD e pode ser AN0, AN0_a_AN1 , AN0_a_AN2 , AN0_a_AN3, AN0_a_AN4, AN0_a_AN8, AN0_a_AN9, AN0_a_AN10, AN0_a_AN11, ou AN0_a_AN12. Argumentos de saída: Não há. Observações: Não há. Exemplo:

habilita_canal_AD(AN0); //Habilita canal 0

le_AD8bits()

Função: Leitura de uma entrada analógica com 8 bits de resolução. Prototipagem: unsigned char analog_in_8bits(unsigned char). Argumentos de entrada: Número do canal analógico que irá ser lido. Este número pode ser 0, 1 , 2 , 3, 4, 8, 9, 10, 11 ou 12. Argumentos de saída: Retorna o valor da conversão A/D da entrada analógica com resolução de 8 bits. Observações: Não há. Exemplo:

PORTB = le_AD8bits(0); //Lê canal 0 da entrada analógica com resolução de 8 bits e coloca na porta B

le_AD10bits()

Função: Leitura de uma entrada analógica com 8 bits de resolução. Prototipagem: unsigned char analog_in_8bits(unsigned char). Argumentos de entrada: Número do canal analógico que irá ser lido. Este número pode ser 0, 1 , 2 , 3, 4, 8, 9, 10, 11 ou 12. Argumentos de saída: Retorna o valor da conversão A/D da entrada analógica com resolução de 10 bits. Observações: Não há. Exemplo:

resultado = le_AD10bits(0);//Lê canal 0 da entrada analógica com resolução de 10 bits

Page 178: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 178 ]

FUNÇÕES DA COMUNICAÇÃO SERIAL RS-232

As funções a seguir são utilizadas na comunicação serial padrão RS-232 para enviar e receber dados, definir a velocidade da comunicação com o oscilador interno 4MHz. As configurações da comunicação são: sem paridade, 8 bits de dados e 1 stop bit. Esta configuração é denominada 8N1 e não pode ser alterada pelo usuário.

taxa_serial();

Função: Configura a taxa de transmissão/recepção (baud rate) da porta RS-232 Argumentos de entrada: Taxa de transmissão/recepção em bits por segundo (bps) Argumentos de saída: Não há. Observações: O usuário deve obrigatoriamente configurar taxa_rs232() da comunicação assíncrona antes de utilizar as funções le_serial e escreve_serial. As taxas programáveis são 1200 bps, 2400 bps, 9600 bps, 19200 bps. Exemplo:

void main() clock_int_4MHz(); habilita_interrupcao(recep_serial); taxa_rs232(2400); // Taxa de 2400 bps while(1); //programa normal parado aqui le_serial();

Função: Lê o primeiro caractere recebido que está no buffer de recepção RS-232. Argumentos de entrada: Não há. Argumentos de saída: Não há. Observações: Quando outro byte é recebido, ele é armazenado na próxima posição livre do buffer de recepção, cuja capacidade é de 16 bytes. Exemplo:

#pragma interrupt interrupcao void interrupcao() unsigned char c; if (serial_interrompeu) serial_interrompeu=0; c = le_serial(); if (c >= '0' && c <= '9') c -= '0'; PORTB = c; escreve_serial();

Função: Transmite um byte pela RS-232. Argumentos de entrada: O dado a ser transmitido deve ser de 8 bits do tipo char. Argumentos de saída: Não há. Observações: A função escreve_serial não aguarda o fim da transmissão do byte. Como não existe um buffer de transmissão o usuário deve garantir a transmissão com a função

Page 179: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 179 ]

envia_byte( ) para enviar o próximo byte. Exemplo:

escreve_serial(PORTC); //escreve o valor da porta C while (envia_byte()); escreve_serial('A'); // escreve A while (envia_byte());

EXEMPLOS DE PROGRAMAS

//1- Programa para piscar 3 leds na porta B #include <SanUSB1.h> #pragma interrupt interrupcao void interrupcao() void main() clock_int_4MHz(); while (1) nivel_alto(pin_b0); // Pisca Led na função principal tempo_ms(500); nivel_baixo(pin_b0); nivel_alto(pin_b6); tempo_ms(500); nivel_baixo(pin_b6); nivel_alto(pin_b7); tempo_ms(500); nivel_baixo(pin_b7); tempo_ms(500); //2- Programa de aplicação da função OU Exclusivo e NOT #include <SanUSB1.h> #pragma interrupt interrupcao void interrupcao() short int ledXOR, ledpisca; void main(void) clock_int_4MHz();

Page 180: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 180 ]

while(1) ledXOR = entrada_pinb1^entrada_pinb2; //OU exclusivo entre os pinos b1 e b2 ->input saida_pino(pin_b7,ledXOR); //O pino B7 recebe o valor de LedXOR ledpisca=!ledpisca; // ledpisca é igual ao inverso de ledpisca saida_pino(pin_b0,ledpisca); // b0 recebe o valor de ledpisca tempo_ms(500); //3- Utiliza a interrupção externa 1, do timer 0 e do timer3 #include <SanUSB1.h> #pragma interrupt interrupcao void interrupcao() if (timer0_interrompeu) //espera o estouro do timer0 timer0_interrompeu = 0; //limpa a flag de interrupção PORTBbits.RB0 =! PORTBbits.RB0; //Pisca o LED em B7 tempo_timer16bits(0,62500); if (timer3_interrompeu) //espera o estouro do timer0 timer3_interrompeu=0; //limpa a flag de interrupção PORTBbits.RB7 =! PORTBbits.RB7; //Pisca o LED em B7 tempo_timer16bits(3,50000); if (ext1_interrompeu) //espera a interrupção externa 1 (em B1) ext1_interrompeu = 0; //limpa a flag de interrupção PORTBbits.RB0 =! PORTBbits.RB0; //altera o LED em B0 tempo_ms(100); //Delay para mascarar o ruido do botão(Bouncing) void main() clock_int_4MHz(); TRISB = 0b01111110; //B0 e B7 como Saída habilita_interrupcao(timer0); liga_timer16bits(0,16); //liga timer0 - 16 bits com multiplicador (prescaler) 8 tempo_timer16bits(0,62500); //Conta 16 x 62500us = 1 seg. habilita_interrupcao(timer3); liga_timer16bits(3,8); //liga timer1 - 16 bits com multiplicador (prescaler) 8 tempo_timer16bits(3,50000); //Conta 8 x 50000us = 0,4 seg.

Page 181: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 181 ]

habilita_interrupcao(ext1); // habilita a interrupção externa 1 com borda de descida while(1); //4- Programa que utiliza o wdt, reseta em 16 seg. se a limpaflag_wdt() não for limpa #include <SanUSB1.h> #pragma interrupt interrupcao void interrupcao() void main() clock_int_4MHz(); habilita_wdt(); // Se a flag wdt não foor limpa (limpaflag_wdt();) reseta em 16 segundos. nivel_alto(pin_b0); nivel_alto(pin_b7); tempo_ms(3000); while (1) //limpaflag_wdt(); nivel_alto(pin_b0); // Pisca Led na função principal nivel_baixo(pin_b7); tempo_ms(500); nivel_baixo(pin_b0); nivel_alto(pin_b7); tempo_ms(500); //5- Lê o canal AD em 8 e 10 bits e grava o resultado na EEPROM interna #include <SanUSB1.h> #pragma interrupt interrupcao void interrupcao() unsigned int resultado; //16 bits int b1=0,b2=0,endprom,endereco=0; void main() clock_int_4MHz(); TRISB=0x00; //Porta B saída habilita_canal_AD(AN0); while(1) PORTB = le_AD8bits(0);//Lê canal 0 da entrada analógica com resolução de 8 bits e coloca na porta B escreve_eeprom(endprom, PORTB);

Page 182: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 182 ]

resultado = le_AD10bits(0);//Lê canal 0 da entrada analógica com resolução de 10 bits (ADRES) b1=resultado/256; b2=resultado%256; //Quebra o resultado em 2 bytes escreve_eeprom( endprom+1, b1); escreve_eeprom( endprom+2, b2 ); ++endereco; //Incrementa endereco if(endereco>=75)endereco=0; endprom=3*endereco; tempo_ms(1000); //6 - Utiliza interrupção serial por recepção de caractere e interrupção do timer0 #include <SanUSB1.h> #pragma interrupt interrupcao void interrupcao() unsigned char c; if (serial_interrompeu) serial_interrompeu=0; c = le_rs232(); if (c >= '0' && c <= '9') c -= '0'; PORTA = c; PORTBbits.RB0 =! PORTBbits.RB0; //Inverte o LED em B0 tempo_ms(500); if (timer0_interrompeu) //espera o estouro do timer0 timer0_interrompeu = 0; //limpa a flag de interrupção PORTBbits.RB7 =! PORTBbits.RB7; //Inverte o LED em B7 tempo_timer16bits(0,62500); void main() clock_int_4MHz(); TRISB = 0b01111110; //B0 e B7 como Saída habilita_interrupcao(recep_serial); taxa_rs232(9600); habilita_interrupcao(timer0); liga_timer16bits(0,16); //liga timer0 - 16 bits com multiplicador (prescaler) 16 tempo_timer16bits(0,62500); //Conta 16 x 62500us = 1 seg. putrsUSART ( (const far rom char *) "\n\rDigite um numero de 0 a 9!\n\r");

Page 183: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 183 ]

escreve_rs232(PORTC); //escreve valor da PORTC while (envia_byte()); escreve_rs232('A'); // escreve A while (envia_byte()); while(1); 7 - Abaixo é mostrado um programa com a configuração para a interrupção do timer 0, em que pisca alera o estado de um LED a cada 0,5 segundo no pino B7 e também a interrupção externa 1 (com pull-up externo no pino B1) em que muda e estado de outro LED no pino B0. Em seguida são mostrados os registros de configuração do timer 0 e das interrupções. #include <SanUSB1.h> #pragma interrupt interrupcao void interrupcao() if (INTCONbits.TMR0IF) //espera o estouro do timer0 INTCONbits.TMR0IF = 0; //limpa a flag de interrupção PORTBbits.RB7 =! PORTBbits.RB7; //Pisca o LED EM B7 TMR0H=0X0B ; TMR0L=0xDC ; //Carrega 3036 = 0x0BDC (65536-3036 -> conta 62500us x 8 = 0,5seg) if (INTCON3bits.INT1IF) //espera a interrupção externa 1 (em B1) INTCON3bits.INT1IF = 0; //limpa a flag de interrupção PORTBbits.RB0 =! PORTBbits.RB0; //altera o LED em B0 delay_ms(100); //Delay para mascarar o ruido do botão(Bouncing) void main() clock_int_4MHz(); TRISB = 0b01111110; //B0 e B7 como Saída RCONbits.IPEN = 1; //apenas interrpções de alta prioridade (desvio 0x808) INTCONbits.GIEH = 1; //Habilita interrupções de alta prioridade (0x808) INTCONbits.TMR0IE = 1; // habilita a interrupção do TMR0 T0CON = 0b10000010; //setup_timer0 - 16 bits com prescaler 1:8 e oscilador interno INTCON3bits.INT1IE = 1; // habilita a interrupção externa 1 (pino B1) INTCON2bits.INTEDG1 = 0; // habilita que a interrupção externa 1 ocorra somente na borda de descida while (1);

Page 184: Apostila_CPIC

RCONbits.

INTCONbitINTCONbit

INTCON2bdescida

INTCON3b if (INTCOINTCON3b

Aplicações p

IPEN = 1;

ts.GIEH = its.TMR0IE

bits.INTEDG

bits.INT1IE

ON3bits.INTbits. INT1I

práticas de Eletr

1; /E = 1; //

DG1 = 0;

E = 1; //

NT1IF) F = 0;

rônica e microco

//Habilita in/ habilita a

// habilit

// habilita a

ontroladores em

[ 184 ]

nterrupçõea interrupçã

ita que a in

a interrupçã

//espera o //lim

m sistemas comp

es de alta pão do TMR

interrupção

ção externa

o estouro dmpa a flag d

putacionais, por

prioridade R0

o externa 1

a 1

do timer0 de interrup

r Sandro Jucá

(0x808)

1 ocorra na

pção

na borda dee

Page 185: Apostila_CPIC

T0CON = interno

INTCON3b if (INTCOINTCON3b

T0CON = interno

Aplicações p

0b100000

bits.INT1IE

ON3bits.INTbits. INT1I

0b100000

práticas de Eletr

10;

E = 1; //

NT1IF) F = 0;

10;

rônica e microco

//se

// habilita a

//se

ontroladores em

[ 185 ]

etup_timer

a interrupçã

//espera o //lim

etup_timer

m sistemas comp

r0 - 16 bits

ção externa

o estouro dmpa a flag d

r0 - 16 bits

putacionais, por

s com pres

a 1

do timer0 de interrup

s com pres

r Sandro Jucá

scaler 1:8

pção

scaler 1:8

e oscilado

e oscilado

r

r

Page 186: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 186 ]

APÊNDICE I: CABEÇALHOS DA FERRAMENTA PARA DIVERSOS COMPILADORES

CCS C Compiler

#include <18F4550.h> //This library 18F4550.h is valid for the whole family USB PIC18Fx5xx

#device ADC=10

#fuses HSPLL,PLL5, USBDIV,CPUDIV1,VREGEN,NOWDT,NOPROTECT,NOLVP,NODEBUG

#byte OSCCON=0XFD3

#use delay(clock=48000000)// USB standard frequency (cpu and timers 12 MIPS = 4/48MHz)

//#use delay(clock=4000000) // internal Oscillator Clock of 4MHz

#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)

//SanUSB program memory allocation

#define CODE_START 0x1000

#build(reset=CODE_START, interrupt=CODE_START+0x08)

#org 0, CODE_START-1

void clock_int_4MHz(void)

//OSCCON=0B01100110; //with dual clock -> cpu and timers #use delay(clock=4000000)

while(read_eeprom(0xfd));

C18 compiler

/* www.tinyurl.com/SanUSB */

Page 187: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 187 ]

#include "p18F4550.h"

void low_isr(void);

void high_isr(void);

#pragma code low_vector=0x1018

void interrupt_at_low_vector(void)

_asm GOTO low_isr _endasm

#pragma code

#pragma code high_vector=0x1008

void interrupt_at_high_vector(void)

_asm GOTO high_isr _endasm

#pragma code

#pragma interruptlow low_isr

void low_isr (void)

return;

Page 188: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 188 ]

#pragma interrupt high_isr

void high_isr (void)

return;

void main( void )

...;

SDCC

Example Format

/* www.tinyurl.com/SanUSB */

#include <pic18f4550.h>

#pragma code _reset 0x001000

void _reset( void ) __naked

__asm

EXTERN __startup

goto __startup

__endasm;

Page 189: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 189 ]

#pragma code _high_ISR 0x001008

void _high_ISR( void ) __naked

__asm

retfie

__endasm;

#pragma code _low_ISR 0x001018

void _low_ISR( void ) __naked

__asm

retfie

__endasm;

void main()

MikroC

Example Format for Bootloader

/* www.tinyurl.com/SanUSB */

#pragma orgall 0x1000

void interrupt(void) org 0x1008

;

Page 190: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 190 ]

void interrupt_low(void) org 0x1018

;

void main()

......;

Hi-Tech C Compiler

step1:goto Build option

step2:linker tap

step3:set offset : 1000

Microchip ASM compiler

/* www.tinyurl.com/SanUSB */

processor PIC18F4550

#include"p18f4550.inc"

org 0x1000

goto init

org 0x1020

goto int_isr

init

... ; initialization

Page 191: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 191 ]

loop

... ; code

goto loop

int_isr

... ; interrupt code

retfie

end

REFERÊNCIAS BIBLIOGRÁFICAS

Grupo SanUSB (2013). Arquivos do Grupo SanUSB. Retirado em 05/01/13, no World Wide

Web: http://br.groups.yahoo.com/group/GrupoSanUSB/.

Jucá, S. et al. (2013). Projeto e implementação de dispositivo de controle de alta

temperatura aplicado a microgeradores termoelétricos. Anais do Congresso Brasileiro de

Automática (CBA 2012). Retirado em 05/01/13, no World Wide Web:

http://www.maracanau.ifce.edu.br/~sandrojuca/MicroGTE1.pdf/.

Jornal O Povo (2011). Da escola pública para o mundo. Retirado em 05/01/11, no World

Wide Web: http://publica.opovo.com.br/page,493,109.html?i=2086691 .

Jucá, S. et al. (2011). A low cost concept for data acquisition systems applied to

decentralized renewable energy plants. Retirado em 05/01/11, no World Wide Web:

http://www.mdpi.com/1424-8220/11/1/743 .

Jucá, S. et al. (2011). Gravação de microcontroladores PIC via USB pelo terminal do Linux.

Retirado em 05/03/11, no World Wide Web:

http://www.vivaolinux.com.br/artigo/Gravacao-de-microcontroladores-PIC-via-USB-pelo-

terminal-do-Linux/.

Grupo SanUSB (2011). Participação do Grupo SanUSB em Eventos. Retirado em 05/01/11,

no World Wide Web: http://sanusb-laese.wix.com/robotica#!premios/.

Page 192: Apostila_CPIC

Aplicações práticas de Eletrônica e microcontroladores em sistemas computacionais, por Sandro Jucá

[ 192 ]

Jornal O Povo (2010). De Maracanaú para Eslováquia. Retirado em 05/01/11, no World

Wide Web: http://publica.hom.opovo.com.br/page,489,109.html?i=2051467 .

Diário do Nordeste (2010). Robô cearense. Retirado em 05/01/11, no World Wide Web:

http://diariodonordeste.globo.com/materia.asp?codigo=861891.

TV Diário (2010). Feira do Empreendedorismo SEBRAE. Retirado em 05/01/11, no World

Wide Web: http://www.youtube.com/watch?v=8Y7gOPd_zN4.

TV Cidade (2009). Projetos na Mostra Nacional de Robótica 2012. Retirado em 05/01/12,

no World Wide Web: http://www.youtube.com/watch?v=lG_O8OsW_sY .

Jucá, S. et al. (2009). SanUSB: software educacional para o ensino da tecnologia de

microcontroladores. Retirado em 05/01/11, no World Wide Web:

http://www.cienciasecognicao.org/pdf/v14_3/m254.pdf .

Diário do Nordeste (2007). Alunos estimulados a construir robôs. Retirado em 05/01/11, no

World Wide Web: http://diariodonordeste.globo.com/materia.asp?codigo=491710.