You are on page 1of 42

Edukatika

Robtica, Microcontroladores
Automao
O princpio de tudo!

O princpio de tudo de forma pratica fcil e


descomplicada.

FASE 1 Verso 1 Reviso 1.1

edukatika@hotmail.com

Prefcio
Em nossa serie de e-books iremos desmistificar os sistemas de robtica, automao, controle
de processos, sistemas de medies de grandezas como temperatura, presso, voltagem!
De uma forma simples e com muita pratica e objetividade iremos mostrar a todos o porqu
das coisas e como fazer.
Linguagens de programao, tecnologia embarcada, sistemas microcontrolados. Famlias de
microcontroladores e aplicaes bsicas e reais.
Controle de motores eltricos, servos e motores de passo. Medio de temperatura e presso!
Automatizao de maquinas e dispositivos de controles residenciais.

edukatika@hotmail.com

ATENO!

MUITO IMPORTATE QUE VOCE EFETUE A LEITURA


ATENTAMENTE, CASO CONTRARIO NO ESTARIA ESCRITO!

Este e-book no tem a mnima inteno em esgotar qualquer tipo de assunto aqui tratado,
muito menos gerar polemicas tcnicas que no leva ningum de lugar algum para lugar
nenhum. Sendo assim vamos tratar de assuntos complexos de forma simples, com objetivo e
o mnimo de teoria e conceitos complexos.
O e-book pode parecer incompleto, mas na verdade ele vai crescendo e se alterando dia a dia,
semana a semana at findar todos os assuntos relacionados.
Alm do mais da forma que apresentado exatamente o que voc precisa saber e fazer para
dar um passo de cada vez no aprendizado.
Ento no faa uma cpia impressa ainda, pois este o primeiro de uma srie de vrios, os
quais vai mudar por completo a estrutura inicial do e-book.

edukatika@hotmail.com

Dedicatria
Dedico a quem me deu a vida.

No conte seu sonho a ningum, pois ele pode virar um pesadelo.


Toda cultura se torna intil se no for disseminada.

edukatika@hotmail.com

edukatika@hotmail.com

Objetivo
Vamos descrever o nosso objetivo e o que voc ir aprender em cada uma das fases do nosso
estudo:

Fase 1 - O inicio
1 Famlias de microcontroladores e plataformas de desenvolvimento............................8
2 Arduino..........................................................................................................................8
3 Microcontroladores ATMEL...........................................................................................9
4 Microcontroladores MICROCHIP...................................................................................10
5 Linguagens de programao para microcontroladores.................................................11
6 Compiladores para microcontroladores........................................................................13
7 Escolhendo uma linguagem de programao................................................................15
8 Estudando os comandos Bsicos da Linguagem Escolhida............................................16
9 Montando um ambiente de trabalho no PC...................................................................19
10 Compilando um programa simples...............................................................................22
11 Introduo plataforma de hardware..........................................................................23
12 Conhecendo o Autor.....................................................................................................

Fase 2 Sensores
0 Sensores..........................................................................................................................25
1 Sensor de luz...................................................................................................................26
2 Sensor de Movimento.....................................................................................................27
3 Sensor de Presso...........................................................................................................
4 Sensor de corrente..........................................................................................................
5 Sensor Magntico............................................................................................................
6 Sensor Final de curso.......................................................................................................
7 Sensor de Gs..................................................................................................................
8 Sensor de som.................................................................................................................
9 Sensor de umidade..........................................................................................................
10 Sensor de temperatura..................................................................................................

Fase 3 - Dispositivos de movimento e


acionamento Mecnico

edukatika@hotmail.com

1 - Reles
2 Solenoides
3 Motores corrente continua
4 Motores de passo
5 Servo motores

Fase 4 Montagem eletrnica (prototipagem)


1 Placa padro
2 Protoboard
3 Jumpers
4 Placas de circuito impresso
5 Escolhendo um mtodo de prototipagem
6 Como fazer um projeto
7 Fases de um projeto
8 Desenhando o layout do circuito impresso.
9 Depois do Layout pronto
10 - Finalizando um projeto

Fase 5 Antes da robtica vem a mecnica


1 Princpios Mecnicos de movimento
2 Dispositivos Mecnicos (motores)
3 O que automao
4 O que robtica
5 Automao residencial (demtica)
6 Automatizao de processos mecnicos

Fase 6 Projetos e Montagens (E-book 1)


1 Detector de movimento PIR
3 Medidores de temperatura
5 Detector de movimento PIR com LCD

2 Controles de PWM (motores/iluminao)


4 Medio temperatura controle de carga
6 Contador de eventos detector ptico ou
mecnico.
8 Uso de LCD desenho grfico
10 Cronometro
12 Servo controle boto
14 Comunicaes seriais RS232
16 - Conversores anlogo/digital LCD
18 - Conversor analgico/digital LCD/PC e

7 Relgio/timer microcontrolador
9 Geraes de caracteres especiais em LCD
11 Geraes de som
13 Comunicaes seriais PIC a PIC
15 Controles de servo porta SERIAL (PC)
17 Conversores anlogo/digital LCD e PC

edukatika@hotmail.com

(rs232)
19 Controles remotos por RF TX

ECELL
20 Controles remotos por RF RX

Fase 7 A Pratica
Onde veremos a aplicao pratica de tudo que estamos aprendendo!
1 Detector de Movimento PIR.......................................................................................29
2 Vamos ao que interessa!............................................................................................30
3 Analisando o circuito eletrnico do primeiro projeto.................................................33
4 O primeiro programa ningum esquece......................................................................34

Fase 1 - O inicio
1 Famlias de microcontroladores e plataformas de desenvolvimento.
Seria impossvel falar de Robtica e automao sem falar em microcontroladores. Com a
evoluo da eletrnica os microcontroladores passaram a evoluir de forma rpida em todos os
quesitos.
- Poder de processamento
- Velocidade de processamento
- Alta densidades de funes
- Excelente quantidade de pinos I/O
- Fcil implementao de linguagens de programao
- Quantidade de fabricantes
Antes de falarmos propriamente dito dos microcontroladores vamos falar sobre as
plataformas de desenvolvimento. Plataformas de desenvolvimento so nada mais nada menos
do que uma placa eletrnica contendo um microcontrolador de uma determinada famlia
(fabricante) a qual temos como explorar as suas funcionalidades.
Vamos relacionar algumas famlias de microcontroladores e seus fabricantes esta lista pobre
porem objetiva para nossos propsitos para aqueles que so iniciantes.
Intel
Renesas
Motorola
Siemens
Atmel
Microchip
National
ALTERA

edukatika@hotmail.com

2 Arduino
Com toda certeza o ARDUINO a bola da vez da ltima dcada! Tem a maior rede de
colaboradores do mundo muito difundido em todo o planeta. Voc j est cansado de saber
qual a aparncia do arduino, mas vamos reforar observado a foto ARDUINO1 e ARDUINO2

Figura 1 - Arduino 01

Figura 2 - Arduino 02

Com toda certeza uma das maiores armas do ARDUINO a sua facilidade e o marketing
pesado que fixou esse produto no planeta! No vamos entrar no mrito desta questo, pois
no a inteno gerar polemica nossa inteno ensinar a pensar!
Portanto no vamos nos fixar na plataforma ARDUINO neste primeiro momento.

3 Microcontrolador ATMEL
Uma vasta linha de microcontroladores da Atmel possui uma grande quantidade de
microcontroladores voltados para as mais abrangentes reas da eletrnica possui
microcontroladores para reas automotivas, medica, automao, controle de movimento,
aparelhos domsticos, automao residncia e predial, iluminao e perifricos para PC. O
ARDUINO
na
sua
essncia
utiliza
microcontroladores
ARTMEL.
Os microcontroladores ATMEL so disponibilizados com 8 e 32 bits. Para maiores detalhes
acesse este link http://www.atmel.com/pt/br/ . Veja a figura ATMEL.

edukatika@hotmail.com

Figura 3 - ATMEL

4 Microcontroladores MICROCHIP
A famlia de microcontroladores escolhido para nosso e-book ser da microchip!
A Microchip veja o site http://www.microchip.com/ foi escolhida devido a uma gama enorme
de microcontroladores e custo baixo e facilidade de obteno a baixo custo no Brasil>
Alm de possuir uma famlia de microcontroladores de 8, 16 e 32 bits possui um excelente
leque de possibilidades e aplicaes e compatibilidade com linguagens de fcil assimilao.
A linha de microcontroladores da Microchip tambm abrange vrias reas da eletrnica
possui microcontroladores para reas automotivas, medica automao controle de movimento
aparelhos domsticos, automao residncia e predial, iluminao, aeroespacial, udio e voz,
processadores DSP e uma infinidade que voc pode consultar o site no link acima. Veja figura
MICROCHIP.

Figura 4 - Microchip

edukatika@hotmail.com

10

Em nossos estudos iremos falar sobre vrios processadores desta linha alguns deles ser:

PIC12F675
PIC12F683
PIC16F84A (obsoleto)
PIC16F628A
PIC16F876A
PIC16F877A
PIC18F4550

Vamos estudar cada um deles de forma objetiva para podermos ter uma viso rpida e focada
em como iniciar um projeto e como escolher os microcontroladores e linguagem de
programao e compiladores.

5 Linguagens de programao para Microcontroladores


O que uma linguagem de programao?
Podemos definir que linguagem de programao um conjunto de COMANDOS que so
enviados a um dispositivo e executa uma determinada funo!
OBS: Uma definio simplista. Mas no precisamos de definies conceituosas e acadmicas,
pois neste momento no nosso foco.
As opes de linguagem de programao para microcontroladores to vasta como a
quantidade
de
fabricantes
de
microcontroladores.
A principal linguagem de programao a o ASSEMBLER e tambm a mais eficiente porem a
mais difcil! Entre as mais fceis podemos citar aquelas que lembram o BASIC uma das
linguagens mais simples que existiu e existe. Vejamos rapidamente alguns comandos em
assembler.

Figura 5 - Exemplo de cdigo em assembler

edukatika@hotmail.com

11

No se preocupe em entender cada comando! Neste ponto o que voc precisa ter em mente
que o ASSMBLER extremamente potente porque age diretamente no ncleo do
microcontrolador, ou seja, um comando dado vai diretamente para processamento.
Essa caracterstica do ASSEMBLER nica, pois qualquer outra linguagem se torna menos
eficiente se comparada ao assembler. Porem devido as dificuldades em aprender a linguagem
vamos nos focar em uma linguagem mais simples! E importante que voc no se limite a
conhecer uma nica linguagem de programao pois cada uma delas tem uma peculiaridade
que
deve
ser
respeitada.
Vamos citar algumas delas.

PASCAL
C
BASIC
ASSEMBLER

Obviamente que existe mais, porem para que voc possa entender vamos nos limitar a poucas
e dar nfase no BASIC.
Calma no o BASIC que ouvimos falar nos anos 80, parecida, mas no tem nada a ver.
Vamos fazer um comparativo em trs linguagens de programao para microcontroladores
para voc entender como uma se difere da outra. Veja o quadro abaixo!
Comando
ADCON1
0x0F;

:=

ADCON1

or

Linguagem
Pascal ( mikroPascal)

ADCON1 |= 0x0F;

C (mikroC)

ADCON1 = ADCON1 or 0x0F

Basic(MikroBasic)

define ADCON1

Basic (PICBASIC PRO)

Aplicao
Define o conversor Anlogo
digital ACDCON endereo
0x0F
Define o conversor Anlogo
digital ACDCON endereo
0x0F
Define o conversor Anlogo
digital ADCON endereo 0x0F
Define o conversor analogo
digital ACDCON endereo
0x0F

Perceba que o comando ADCON1 igual em todas as linguagens porem escritos de forma
diferentes
(
escrito
significa
SINTAXE
DO
COMANDO
).
As sintaxes so diferentes pois varia de acordo com o COMPILADOR a ser usado porm
ADCON1 nativo do microcontrolador ou seja independente do compilador ele sempre vai se
chamar ADCON1, por isso importante antes de mais nada sempre estudar o datasheet do
microcontrolador
escolhido.
Vamos
resumir
este
tpico
de
forma
simplria
e
afirmar
que
:
De acordo com a linguagem escolhida muda-se a sintaxe de escrita do comando, podemos ter
mais ou menos eficincia no compilador mas no se muda o set de instrues do

edukatika@hotmail.com

12

microcontrolador. SET de instrues so os comandos internos que o microcontrolador vai


entender independente da linguagem ser ASSEBLER, C, ou PICBASIC PRO.

6 Compiladores para microcontroladores


Agora chegou a hora de abranger um assunto interessante que os compiladores. Mas o que
compilador? Novamente vamos fazer uma definio simplria e objetiva:
COMPILADORES so softwares que TRADUZ os comandos de uma linguagem para a sua forma
nativa de uso, ou seja, transforma comandos fceis de nos seres humanos entenderem em
cdigo de mquina. Isso ai pessoal! No importa a linguagem que voc utiliza depois tudo vira
ASSEMBLER que a linguagem nativa do microcontrolador. Porem devemos fazer uma
ressalva.
Quando usamos um compilador existe uma certa perca de capacidade na eficincia do
programa final uma delas a velocidade de execuo das instrues.
Porem! Isso no interfere em absolutamente nada para iniciantes. Muito pelo contrrio!
Comece todo do comeo!! Ou seja, jamais compre uma moto sem nunca ter andado de
bicicleta (vai ser um desastre e muito doloroso). Ao tomar banho tire a roupa. Sempre que for
comer banana descasque. Ento comea de forma simples para no desanimar na primeira
dificuldade e pode ter certeza que elas vo aparecer!
Vejamos alguns exemplos de compiladores e suas interfaces de tela para o usurio.
Os compiladores devem ser escolhidos de acordo com a linguagem de programao escolhida.
Vamos a mais uma definio que em breve vai gerar controvrsias! Os compiladores passam
despercebidos em 90% das nossas aes com um microcontrolador! Pois as telas mostradas
nas figuras abaixo mostram na verdade uma interface que facilita a interao
DESENVOLVEDOR/PRODUTO no caso o microcontrolador! Portanto o compilador para ns
apresentado como uma srie de comandos que iremos estudar na sequncia!

edukatika@hotmail.com

13

Figura 6 - Tela de trabalho do compilador C

Figura 7 - Tela de trabalho do compilador C

edukatika@hotmail.com

14

Figura 8 - Tela de trabalho do compilador PICBASIC PRO (o escolhido)

7 Escolhendo uma linguagem de programao


No tpico passado falamos sobre linguagem de programao apresentamos algumas delas de
forma
quase
que
irresponsvel
porem
objetiva.
Neste tpico seremos rpidos, pois voc deve escolher o que voc tem mais facilidade em
aprender!
Esquea a opinio de profissionais avanados ou o ponto de vista de quem tem conhecimento
terico
e
ZERO
de
pratica!
No tente se iniciar em assembler a no ser que voc seja um quase gnio ou ter uma
facilidade
medonha
no
assunto.
No discuta o que melhor que o que, no perca seu tempo com comparaes de disputa!
Seria intil como discutir que time de futebol o melhor, qual tipo de mulher a mais
gostosa
qual
religio
te
leva
para
o
cu.
Pense de forma simples, preciso aprender, qual a maneira mais fcil de iniciar? A resposta
simples BASIC ou PICBASIC PRO! por este caminho que vamos iniciar os estudos.
A escolha da linguagem de programao deve ter como base inicial qual o nvel de
conhecimento que cada um tem! No adianta voc tentar usar o assembler se o seu primeiro
contato com a programao de microcontroladores. Caso voc escolha o assembler a
possibilidade
de
desistir
do
assunto

enorme.

Vamos apresentar a voc a LINGUAGEM PICBASIC PRO v. 2.60 (gratuita)


De incio uma vantagem!! de graa! Outra vantagem relativamente muito mais fcil!
Obviamente um produto de procedncia Americana (U.S.A), mais especificamente da
MicroEngineering Labs Inc este produto est no Mercado Mundial a mais de 15 anos, portanto

edukatika@hotmail.com

15

se voc nunca ouviu falar est explorando pouco sua capacidade tcnica.
Existe no mundo mais de 60 livros focados nesta linguagem com traduo para praticamente
todas
as
lnguas.
Possui distribuidores em praticamente todos os continentes. Na Amrica do Sul (Argentina) no
Brasil no existe distribuidor direto. Atualmente o PICBASIC PRO est na verso 3.0, mas
iremos abranger a verso 2.60 por ser gratuita e fazer praticamente a mesma coisa que a
verso 3.0 com exceo do ambiente de trabalho e alguns microcontroladores a mais.
O primeiro passo a ser dado estudar os comandos diretos ou instrues bsicas da linguagem
PICBASIC PRO. Na sequncia falaremos sobre operadores lgicos e matemticos. Fica tranquilo
(a) que a matemtica vai aparecer de forma leve e simples, nada que assuste.

8 Estudando os comandos Bsicos da Linguagem Escolhida


Como nosso objetivo a simplicidade, vamos comear a estudar os comandos da linguagem
escolhida o PICBASIC PRO! Mas antes de tudo vamos abranger alguns conceitos e
necessidades.
1 Lembre-se no existe gente superinteligente somente voc que no leu ou estudou o que
ela (ES) estudou ou leu. Portanto no ache que difcil sem tentar.
2 A cada duas horas de dedicao e foco em estudo e pesquisa voc ganha sabedoria
inteligncia porque voc est lendo o que no estava lendo a antes (item 1 )
3 No faa um curso pago de microcontroladores ou qualquer outra coisa ligada a eletrnica
se voc no sabe o que significa DOG em Ingls. Voc no precisa ser poliglota, mas no pode
ter
preguia
de
usar
o
GOOGLE
TRADUTOR.
4 A sua dificuldade sua falta de vontade e preguia e no a eletrnica, robtica,
mecatrnica
e
microcontroladores.
O
problema

voc!
5 Quer dominar algo? Ante junto com o que quer dominar, no descuide! Portanto neste
caso escolha um microcontrolador (ns faremos isso para voc) e pegue o manual dele ou
datasheet e o Google tradutor e traduza as cinco primeiras pginas do datasheet e voc estar
dando passos largos para entender o item 1.
Chega de conselhos que acreditamos que voc entendeu o conselho e vamos ao que importa!
Na tabela abaixo vamos iniciar os estudos dos comandos contidos na linguagem PICBASIC PRO,
vai ficar faltando os comandos matemticos ou funes matemticas e lgicas.
Vejamos a lista de comandos.
@

ADCIN
ASM..ENDASM
BRANCH
BUTTON

O smbolo ARROBA usado para indicar o incio


de uma rotina escrita em ASSMEBLER ou cdigo
de mquina.
Efetua a leitura de um canal ANALOGICO e
converte para digital.
Insere uma rotina assembler dentro do programa
em PIC
Equivalente ao comando GOTO ou (GOTO..ON)
Comando para ler um boto ou tecla o qual tem a

edukatika@hotmail.com

16

CALL
CLEAR
CLEARWDT
COUNT
DATA

DEBUG
DEBUGIN
DISABLE
DISABLE DEBUG
DISABLE INTERRUPT
DTMFOUT
EEPROM
ENABLE

ENABLE DEBUG
ENABLE INTERRUPT
END
FOR..NEXT

FREQOUT
GOSUB

GOTO
HIGH
HPWM

HSERIN
HSEROUT
I2CREAD
I2CWRITE
IF..THEN..ELSE..ENDIF

IMPUT
LCDIN

implementao da funo anti-repique ou


Debounce
Chama uma rotina em assembler
Zera as variveis do sistema
Limpa o contador de guardaou Watchdog
Conta o nmero de pulsos gerados em um
determinado pino
Escreve na memria EEPROM dados de uma
varivel
Comando para depurao de software que
funciona como sada para comunicao serial com
taxa de transmisso fixa
A mesma coisa que o comando DEBUG porem
uma entrada.
Desliga o comando ON-DEBUG e ON interrupt
em um processamento
Desabilita a funo ON DEBUG em um
processamento
Desabilita a funo ON-INTERRUPT em um
processamento
Produz um som no pino de sada padro DTMF
Seta as informaes bsicas para comear a gravar
em uma eeprom.
Habilita o comando ON-DEBUG e ONINTERRUPT em um processamento
Habilita o comando ON-DEBUG em um
processamento.
Habilita o comando ON-INTERRUPT em um
processamento.
Finaliza / para a execuo de um processamento
Executa um lao de repetio de todos comandos
dentro do lao FOR...NEXT o tanto de vezes que
for desseguindo ou at acontecer uma situao X!
Produz at duas frequncias diferentes em um
mesmo pino de sada
Efetua um desvio para uma rotina pr-definida e
executa os comandos at encontrar o comando
RETURN e volta para a prxima linha de
comando logo aps o GOSUB
Desvia o fluxo de um programa para uma rotina
especificada no GOTO
Coloca um pino de entrada ou logic em estado
lgico 1 ou alto
Comando para a gerao por software de um pulso
de PWM em um determinado pino de sada
Comando para controle de fluxo de comunicao
serial de entrada em modo assncrono
Comando para controle de fluxo de comunicao
serial de lgic em modo assncrono
Efetua leitura dos bytes em um dispositivo I2C
Efetua a escrita dos bytes em um dispositivo I2C
Comando que testa uma determinada condio por
exemplo: se(IF) X=10 ento(THEN) x=10+1 OU
(ELSE) x=10-1 e fim(ENDIF)
Coloca um pino na condio de entrada
Comando de leitura de displays de LCD efetua
leitura da lgico17 RAN interna do LCD

edukatika@hotmail.com

17

LCDOUT

Envia comando para a RAM do LCD e comandos


de escrita no LCD
LET atribui a uma varivel um determinado valor
por exemplo LET X=10 significa que a varivel X
tem valor 10
Busca um valor constante em uma determinada
tabela com N valores
Busca um valor constante em uma tabela de
variveis
Escreve um valor lgico em uma tabela de
variveis
Escreve um valor constante em uma tabela de
variveis
Coloca um pino de lgica 1 ou entrada em estado
lgico 0 ou baixo
Coloca o processador em estado de dormncia
reduzindo o seu consume por um determinado
tempo ou quando acontecer uma determinada
condio
Ativa o comando ON DEBUG

{LET}

LOOKDOWN
LOOKDOWN2
LOOKUP
LOOKUP2
LOW
NAP

ON DEBUG
ON INTERRUPT
OWIN
OWOUT
OUTPUT
PAUSE
PAUSEUS
POT

PULSOIN
PULSOUT

PWM
RANDOM
RCTIME
width on a pin

READ
READCODE
RESUME
RETURN
REVERSE

Measure pulse

Executa uma rotina em BASIC quando uma


interrupo foi ativada
Comando de entrada para dispositivos perifricos
com teologia UM FIO (one-wire input)
Comando de sada para dispositivos perifricos
com tecnologia UM FIO (one-wire output)
Define um pino do microcontrolador para ser
SAIDA
Provoca um delay (atraso) ou espera com
resoluo de 1mSegundo
Provoca um delay (atraso) ou espera com
resoluo de 1mMicrosegundo
Comando para ler o valor gerado por um
potencimetro ligado diretamente a qualquer pino
do microcontrolador
Efetua a leitura de pulso de entrada em um
determinado pino
Efetua a gerao de pulso na sada de um
determinado pino com largura e frequncia
ajustvel
Gera um pulso de PWM na sada de um
determinado pino
Gera um nmero aleatrio
Efetua a medida de um pulso em um determinado
pino atravs de uma associao RCTIME, ou seja,
uma rede de tempo constituda por um resistor e
um capacitor
Efetua leitura de um byte na memria EEPROM
Efetua a leitura de uma palavra na memria
EEPROM
Continua a execuo aps uma interrupo por
ON-INTERRUPPT
Volta para a linha subsequente ao comando
GOSUB
Reverte muda um mesmo pino tanto para ser
entrada como sada em um determinado tempo ou
condio

edukatika@hotmail.com

18

.
SELECT CASE

SERIN
SERIN2
SEROUT
SEROUT2
SHIFTIN
SHIFTOUT
SLEEP

SOUND
STOP
SWAP
TOGGLE
USBIN
USBINIT
USBOUT
WHILE..WEND
WRITE
WRITECODE
XIN
XOUT

Select Case usando para comparar uma condio


de cada varivel e de acordo com cada condio
desviar o fluxo do programa para uma determinada
condio ou ao
Entrada serial assncrono padro BS1
Entrada serial assncrono padro BS2
Sada serial assncrono padro BS1
Sada serial assncrono padro BS2
Comando para entrada serial assncrona
Comando para sada serial assncrona
Coloca o microprocessador para dormir em
estado de espera reduzindo o consume de
alimentao por um perodo de tempo
Gera um som na sada de um determinado pino
Para a execuo de um programa
Troca os valores entre duas variveis
Muda o estado lgico de um pino de 0 para 1
Porta de entrada USB como entrada
Inicializa a porta USB
Porta de sada USB como sada
Executa uma sequncia de comando enquanto uma
determinada condio for verdadeira
Grava um byte na EEPROM
Grava uma palavra na memria EEPROM
Comando serial do padro XIN de entrada para
produto de automao residencial
Comando serial do padro XOUT de sada para
produto de automao residencial

Manual completo da linguagem PICBASIC PRO 2.6 - download neste link

9 Montando um ambiente de trabalho no PC


J estamos chegando perto da pratica! E para comearmos a parte pratica vamos precisar
instalar nossas ferramentas no PC.
j escolhemos a linguagem de programao! J escolhemos o compilador agora vamos ao
prximo passo que a instalao das ferramentas de trabalho. Vamos disponibilizar para voc
de forma gratuita as ferramentas iniciais para comearmos nosso aprendizado.
Voc precisara fazer o Download dos seguintes programas:
1 MPASMWIN520
2 MCSINSTALL_V4.0
3 pbp_2.60
O que cada um desses arquivos?
Vamos a descrio:
MPASMWIN520 o nosso compilador que vai pegar nosso cdigo fonte escrito em PicBasic
Pro e ira transformar em MNOMICOS ou Assembler do processador escolhido gerando um
arquivo ASM de ( Assembler ) e no final um arquivo .HEX que ser gravado no

edukatika@hotmail.com

19

microcontrolador.
MCINSTALL_V4.0 a interface grfica que ir servir de tela de desenvolvimento ou seja onde
iremos escrever os comandos do PIC BASIC PRO .
PBP_2.60 Esta a linguagem de programao em questo a qual estudamos os comandos
anteriormente.
Vejamos agora a aparncia de cada uma das telas de nossas ferramentas depois de instaladas
e funcionando.
MPASMWIN520: Na figura MPASM o que voc vai ver quando o programa estiver efetuando
a compilao de um programa.

Figura 9- MPASMWIN520 em Funcionamento

MCINSTALL_V4.0 Depois de instalado ele tem a aparncia da foto abaixo. E na tela do seu PC
seria criado um atalho com o nome MicroCode Studio.

edukatika@hotmail.com

20

Figura 10 - Ambiente de desenvolvimento em atividade

PBP 2.60 instalado no PC: Viso de como fica depois de instalado o PBP 2.60. Pois bem aps a
instalao do PBP 2.60 o que voc vai ter exatamente isso! Em seu PC existira um diretrio
que contm arquivos de inicializao de todos os microcontroladores compatveis com o
compilador. Esses arquivos possui uma extenso .INC que significa .INC = INICIALIZAO e um
segundo arquivo .BAS extenso do PICBASIC PRO o qual ativado quando compilamos um
programa usando o ambiente grfico mencionado acima o MicroCode Studio o qual quando
voc pressionar a tecla F9 para compilar o programa ativa o programa MPASMWIN520 e o
ciclo se fecha e voc compila um programa para o seu microcontrolador!
Parece fcil certo? E basta voc querer!

edukatika@hotmail.com

21

Figura 11 - PicBasic Pro 2.60 aps estar instalado no PC

Para aprender passo a passo com instalar e configurar faa o download dos arquivos de
programas atravs dos links:
Arquivo TOOLS neste link para download direto em seu PC voc deve descompactar em uma
pasta e seguir os procedimentos de instalao!
E para efetuar a instalao siga estes vdeos disponibilizado em nosso canal no Youtube.

https://www.youtube.com/watch?v=v8sFeUXon3Q
https://www.youtube.com/watch?v=5X8OckZsIGk
10 Compilando um programa simples

No temos com compilar um programa ou comear algo sem definir ou organizar nossas ideias
e objetivo e necessidades!
Ento vamos pensar de forma simples, mas objetiva. Vamos imaginar que queremos um
dispositivo que LIGA A ILUMINAO quando detecta a presena de movimento e a matem
acesa em quanto existe movimento no ambiente e que desliga a iluminao quando o
movimento finaliza.
Condio indefinida, ou como detectaremos se o movimento no causado por um animal ou
como saberemos se o movimento findou devido a pessoa est dormindo?
Definio de qual microcontrolador utilizar? Como podemos definir qual processador utilizar?

edukatika@hotmail.com

22

Vamos analisar alguns pontos:


1 Estamos iniciando nosso aprendizado ento precisamos de uma plataforma simples para
um hardware que disponibiliza todas as portas do PIC.
2 Devemos escolher um PIC de baixo custo!
3 No podemos desperdiar dinheiro!
4 Precisamos ser rpidos no desenvolvimento
5 Precisamos ser competitivos na no quesito tempo de desenvolvimento.
Chegou a hora de conhecer o hardware. No item 11 logo abaixo valos fazer uma introduo
sobre a plataforma de desenvolvimento de hardware.

11 Introduo plataforma de hardware


Vejamos o hardware da figura abaixo onde apresentamos o kit de desenvolvimento para
microcontroladores da linha microchip de 18 pinos! Antes de tudo efetue a leitura do manual
do kit para entender toda a potencialidade do kit de desenvolvimento est disponvel para
download aqui neste LINK. Caso voc tenha efetuado o download pode ter achado complexo,
mas no ! Vamos partir do ponto que se trata de um produto multiuso o que justifica a
quantidade grande de JUMPERS de configurao onde podemos configurar portas para
serem entradas e ou sadas.
Vejamos a quantidade de conectores a quais so justificadas, pois disponibilizamos porta de
acesso serial RS232, conectores de acesso externo, conectores para servos e som!
Sendo assim temos total acesso a todos os pinos do Microcontrolador e condies de usufruir
de toda a capacidade do microcontrolador usando um mesmo KIT de desenvolvimento.
Para voc quer deseja ir mais longe no deixe de ler o manual completo de configurao do
KIT. Voc entendera rapidamente como utilizar de modo simples at o mais elevado nvel.
Na figura abaixo podemos ver uma viso da PCI (placa de circuito impresso) do KIT de
desenvolvimento.

edukatika@hotmail.com

23

Figura 12 - PCB KIT PIC

Escolhemos at agora a linguagem de programao, o compilador o hardware porem falta o


principal! O microcontrolador! Seguindo o mesmo raciocnio da escolha do hardware do KIT DE
DESENVOLVIMENTO vamos escolher o microcontrolador!
Vamos nos preocupar com somente trs (3) caractersticas.
1 - Facilidade de compra;
2 Valor do produto;
3 Quantidade de informaes tcnicas sobre o microcontrolador.

Seguindo uma linha de raciocnio lgico uma vez que o KIT utiliza como padro o PIC 16F628A
vamos obviamente utilizar ele, pois tem as caractersticas que precisamos e um investimento
nico.

edukatika@hotmail.com

24

Figura 13 - PINOS_PIC1

Vejamos a disposio dos pinos do PIC16F628A na figura PINOS_PIC1 e estudaremos alguns


deles de forma rpida. Sendo que o entendimento final depende de voc dar uma bela olhada
no datasheet de graa e est em nosso repositrio.
De imediato podemos observar os 19 pinos do microcontrolador no caso da figura em
encapsulamento DIP com alimentao nos pinos 5 e 14 sendo o pino 14 positivo e o cinco (5)
negativo.
Observe os sentidos das setas onde demonstra que o pino pode ser de entrada ou de sada!

edukatika@hotmail.com

25

No caso do 16F628A todos os pinos de todos os PORTs podem ser entradas e sadas! No
vamos neste e-book nos aprofundar no PIC16F628A ou qualquer outro, mas vamos sim
estudar o que necessrio para a implementao de um circuito experimental descrito no
incio do item 10.
Como estamos falando em automatizar um processo de ligar e desligar uma iluminao em um
ambiente precisou ter em mente que precisamos de um dispositivo de sensoriamento, ou seja,
precisamos de um sensor que detecta o movimento. Ento vamos para a FASE 2 SENSORES
depois voltamos para finalizar nossa primeira experincia pratica.

Fase 2 - Sensores
No existe uma maneira de automatizar um processo ou efetuar a medio de uma grandeza
sem o uso de sensores. Sensores eletrnicos podem ser encontrados nos mais variados tipos e
aplicaes! A tecnologia eltrica disponibiliza sensores para praticamente toda e qualquer
aplicao. Vamos enumerar alguns deles sem a pretenso de esgotar o assunto, nosso objetivo
estudar alguns modelos de sensores facilmente encontrados no comercio com valores
convidativos.
Sensores
Reedswith
Sensor de proximidade
Sensor de umidade
Sensor de incndio
Sensor de fluxo de
liquido
Sensor de cores

Micrswith
Sensor optico
Sensor de presso
Sensor de temperatura
Sensor de umidade

Interruptor N/A
Sensor a laser
Sensor de fumaa
Sensor de movimento
Sensor de luz

Interruptor N/F
Sensor piezeltrico
Sensor de calor
Sensor de fluxo de gs
Sensor de som

Sensor de ph

Sensor de vibrao

Sensor de presso
cardaca

edukatika@hotmail.com

26

Sensor tctil

Sensor de

Tipos de sensores
Sensores ticos

Sensores mecnicos

Sensores eletrnicos

Resumidamente temos sensores de famlias pticas que so todos os modelos que se utiliza de
algum tipo de iluminao, sensores mecnicos que possui algum contato mecnico e sensores
eletrnicos que so sensores como o DS18B20 que um sensor de temperatura.

1- Sensores de luz
Ou sensor detector de luminosidade! Temos trs tipos de sensores bsicos nesta linha que so
os sensores de CLARIDADE, ou seja, luz branca visvel como os LDRs ver figura.

Funcionamento bsico dos LDRs muito simples, quando existe a incidncia de LUZ o LDR
baixa drasticamente sua resistncia passando a conduzir eletricidade!
Na segunda modalidade de detectores de LUZ temos os detectores de luz infravermelha!
Infravermelho uma frequncia de luz que no podemos ver. Muito utilizada em sistemas de
controle remotos de TV, aparelhos de som, etc.
A variedade de sensores deste tipo enorme vejamos algumas imagens relativa a sensores de
infravermelho.

edukatika@hotmail.com

27

Na terceira modalidade temos os sensores a laser onde temos um feixe de luz laser ao qual
utilizamos um detector de luz para detectar o deixe de luz laser.

2- Sensores de movimento
Sensores de movimento ou detector de presena detecta a presena de um objeto em uma
determinada rea de cobertura que pode ser de alguns centmetros a vrios metros o objeto
pode ser considerado um ser humano ou inanimado dependendo da aplicao.
Os detectores de movimento podem ter seu princpio ativo de deteco de movimento
baseado em infravermelho, deslocamento de ar, ou sensores de capacitncia e tambm os
magnticos que detecta movimento de objetos metlicos. Entre uma infinidade enorme de
possibilidade que no o foco deste estudo esmiuar o assunto detectores de movimento.
Como nosso objetivo a informao objetiva vejamos na figura abaixo fotos relacionadas a
sensores de movimento com base no funcionamento por efeito PIR.
Na figura DETETOR_PIR vemos com clareza a imagem de um detector amplamente utilizado
em produtos para automatizar procedimentos de acionamento e desligamento de um sistema
de iluminao ou equipamento eltrico.

Sensor de movimento

Pinos do sensor de movimento

edukatika@hotmail.com

28

Devemos destacar na figura acima o sensor PIR e os ajustes possveis no modulo de controle e
os pinos de controle do modulo! Os pinos de controle so simples e bvios sendo:
1 Vcc (3,3v )
2 GND (terra)
3 Sinal
Os ajustes so do tempo em que a varredura no ambiente feita e o ajuste de sensibilidade
onde se ajusta a intensidade do sinal emitido e por consequncia detectado. Quando maior a
sensibilidade teoricamente mais sensvel a qualquer movimento o ambiente ficara.
Antes de falarmos sobre outros modelos de sensores vamos falar um pouco da rea comercial
que devemos levar em considerao uma vez que estamos estudando para produzir algo pode
passar por nossa cabea fazer algo em larga escala de fabricao!
Como j hora de aprender vamos para a seo PRATICA 1.

FASE 7 A PRATICA
Obviamente depois de tanto estudo e dedicao no podemos deixar de falar da parte pratica
do nosso e-book. Nesta FASE do nosso estudo iremos comear pela pratica em um circuito
simples onde iremos aprender de forma real como construir um detector automatizado de
movimento.
Antes vamos falar um pouco sobre a parte comercial e econmica de um projeto! Quando
somos contratados para fazer algo por algum o contratante ou nosso patro espera de um
projeto algo simples, eficiente de baixo custo de pouca manuteno de grande aceitao
comercial. Ento voc precisa est preparada para pensar como seu patro ou como seu
contratante.
Em nosso primeiro exerccio pratico vamos tirar como exemplo a foto comercial do produto
abaixo o vamos chamar de DETECTOR_COMERCIAL1 e 2.

Sensor comercial 1

Sensor comercial 2

Observe atentamente que em ambos os modelos de sensor comercial existe um componente


em comum que est descrito de forma muito bsica na pgina 26. A diferena que obviamente
foi includo um circuito eletrnico para controlar as funes do detector de
movimento/presena.
exatamente neste ponto que vamos comear a nossa primeira aula pratica. Antes de

edukatika@hotmail.com

29

qualquer coisa os produtos indicados nas figuras acima so vendidos em torno de R$ 35,00 a
R$
65,00
na
data
de
12/2015.
muito importante abranger de forma profissional a maneira como devemos pensar quando
estamos
envolvidos
com
algo
tcnico
e
comercial.
No se esquea do valor mdio que o produto vendido, voltaremos a falar sobre isso!
Agora vamos a nossa primeira aula pratica.

PRIMEIRO PROJETO PRATICO


AULA 1 Detector de movimento/presena
Objetivo: Detectar a presena de movimentos em um ambiente X e executar o comando de
ativar a iluminao e desliga a mesma iluminao quando o movimento no ambiente findar.
O que vamos precisar:
1 Um detector de movimento
2 Um microcontrolador PIC16F628A, dois resistores
3 Uma placa prottipo ou kit de montagem, dois capacitores
4 Uma fonte de alimentao ou baterias de 9V, 1 regulador de tenso
5 Um gravador de microcontroladores PIC, conector
6 Um PC com os programas descritos na pgina 19
7 Ter visto ou assistido os vdeos de configurao disponibilizados no Youtube ou para
download.
8 E boa vontade em aprender!

Vamos ao que interessa! A pratica!


Vamos organizar nosso raciocnio da seguinte forma! Precisamos trabalhar um sinal gerado por
um detector de movimento PIR alimentado por uma tenso de 3,3volts o qual quando ativo
gera um sinal DIGITAL em sua sada! Figura PRATICA-1

Pratica 1

Na figura PRATICA_DIAGRAMA1 temos o diagrama eletrnico do dispositivo! Fique calmo no


momento isso irrelevante somente para voc comear a criar uma base de conhecimento.

edukatika@hotmail.com

30

Figura 14 - Pratica_diagrama1

Agora vamos pensar simples! Preciso fazer com que um microcontrolador detecte o sinal na
sada do sensor e execute as funes desejadas.
Ops....agora entrou o tal do microcontrolador! Ento vamos dar uma olhada na figura
representativa do microcontrolador e falar sobre os pinos e sua funcionalidade. Para que
possamos comear a dar a cara de um projeto!

Aqui est a nossa criatura de 18 pernas... ou pinos o que precisamos fazer agora e escolher
qual dos pinos vamos utilizar. E como fazemos esta escolha? Bem agora a hora que voc
comea a entender o porqu das coisas.
Mas lembre-se no vamos nos fixar no microcontrolador e sim em nosso projeto inicial, o
microcontrolador o aperitivo, mas precisamos falar sobre ele! De incio dos 18 pinos vamos
precisar verdadeiramente somente de quatro (4), sim isso mesmo quatro pinos! Mas porque
estamos usando um de 18 pinos? Simples porque temos muito pela frente para ensinar e voc
muito pela frente em aprender.
E quais so os pinos que vamos utilizar? Veja abaixo na tabela!

edukatika@hotmail.com

31

PINO
Pino 5 VSS
Pino 14 Vdd ou VCC
Pino 17 RA0
Pino 18 RA1

Descrio
Pino de terra ou alimentao negativa
Pino de alimentao positive 5V
Pino ao qual entrara o sinal do detector de movimento
Pino ao qual iremos ativar um rele para acionamento da carga eltrica

Perfeito!? Agora que sabemos os pinos a serem utilizados vamos ao prximo passo?
Errado.....vamos nos perguntar o porqu escolhemos esses pinos? Perfeito se voc se
perguntou isso parabns est no caminho certo! Uma rpida explicao do porqu da escolha
dos pinos informados simples. No caso da alimentao +VCC/VDD e VSS/TERRA pinos 5 e 14
impossvel fazer algo sem alimentao porem os pinos 17 e 18 chamados de RA0 e RA1
devido a facilidade de configurao do hardware. Isso mesmo quando escolhemos um pino
para trabalhar com ele precisamos programar ele para ser uma entrada ou uma sada!
Precisamos tambm de saber que tipo de tenso ou sinal estar em sua entrada ou sada! Qual
a frequncia e depois que voc tem essas informaes voc escolhe as PORTAS de I/O (i/O =
In/out ou entrada e sada) e (vamos parar de chamar de pino correto?).
Ento cada pino de I/O pode ter uma funo ou capacidade diferente um do outro alguns
pinos pode receber sinais analgicos (que varia a tenso de 0 a X volts, normalmente no
Mximo 5V e em modelos mais modernos no Mximo 3.3v ). Em nosso caso sabe-se que o
detector de movimento a ser usado mostrado na figura PRATICA-1 trabalha com 3.3v.
Percebeu bem a nossa afirmao? Sim isso mesmo 3.3V! Porm o microcontrolador escolhido
trabalha com 5,0V isso um problema? Sim um problema porem fcil de resolver e veremos
isso a frente!
No momento foi definido que vamos usar dois pinos de alimentao e dois pinos de I/O. Mas
como fica isso eletronicamente falando? At agora foi somente letras e mais letras e agora?
Bem agora vamos fazer um diagrama eletrnico simples! Est logo abaixo o diagrama AULA1

AULA 1

edukatika@hotmail.com

32

Vamos analisar o diagrama da AULA 1 e descrever de forma rpida voc pode ler ou ver o
vdeo aqui!

Analise do circuito:
Voc pode assistir a esta anlise do circuito aqui copiando e colando em seu navegador:
https://www.youtube.com/watch?v=jjxbp5h6ce0
O conector J1 responsvel por receber a fonte de alimentao que pode ser uma fonte de
12V ou uma bateria de 9V. A tenso entra por J1 e vai para o IC2 que um regulador de tenso
LM7805 este componente tem como funo reduzir a tenso de entrada de 12V ou 9V para os
5V regulados que o PIC precisa! O capacitor C4 e C6 filtra qualquer rudo da fonte e o resistor
R18 polariza o diodo LED (luzinha Power on). O resistor R11 ligado a base do transistor quando
ativado pelo microcontrolador em nvel lgico 1 ou seja (ALTO) liga a bobina do rele K1 atravs
do diodo de proteo do circuito D1.
O sinal do sensor entra no pino 2 do conector C4 porem nesta fase no implementamos a
ligao do sensor devido ao fato que o mesmo precisa de um circuito conversor de tenso de
5V para 3,3V o qual iremos estudar em seguida!
O que vem a ser um conversor de nvel de tenso? Quando trabalhamos com nveis lgicos
TTL/CMOS sabemos que o nvel 1 ou alto de 5V e o nvel 0 BAIXO qualquer tenso com
menos de aproximadamente 2,85V. Porem com a nova tecnologia muitos componentes esto
trabalhando com tenso de alimentao de 3,3V sendo assim o nvel de tenso para o que era
nvel 1 = 5V em alguns casos hoje em dia de 3,3V.
Ento teremos problemas em trabalhar com lgica nvel 1 de 3,3V com lgica de 1 de nvel
de 5V. Ento precisamos compatibilizar os sinais! Para isso precisamos de alguns poucos
componentes entre o perifrico de 3,3V e o de 5,0V. Veja a foto abaixo.

Nvel lgico
Perceba como o circuito extremamente simples! Precisaremos de duas (2) tenses de
alimentao sendo uma de 3,3V e outra de 5,0V e um dos lados do circuito ligado ao sinal de
nvel 3.3V e o outro lado ao circuito de 5.0V. E estamos com nosso problema de
compatibilizao dos nveis lgicos resolvidos.
Finalizamos agora o circuito de hardware e vamos montar o nosso primeiro programa em
PICBASIC PRO.

edukatika@hotmail.com

33

O PRIMEIRO PROGRAMA NINGUEM ESQUECE


Tomara que voc nunca mais esquea mesmo este primeiro programa que a partir de agora
moda de nome! Muda de PROGRAMA para FIRMWARE sim isso mesmo!
Firmware nome dado ao programa contido de um chip ou microcontrolador a partir de
agora vamos passo a passo desvendar como fazer isso!
Ou seja, de um simples microcontrolador sem funo alguma para um dispositivo eletrnico
de controle com utilidade comprovada! Relembrando o que precisamos fazer! Na pgina 30
descrevemos a seguinte necessidade.
Objetivo: Detectar a presena de movimentos em um ambiente X e executar o comando de ativar a
iluminao e desativar a mesma iluminao quando o movimento no ambiente findar.

Tambm foi definido que iramos utilizar os seguintes sinais de I/O do Microcontrolador
descrito na pgina 32.
PINO
Pino 5 VSS
Pino 14 Vdd ou VCC
Pino 17 RA0
Pino 18 RA1

Descrio
Pino de terra ou alimentao negativa
Pino de alimentao positive 5V
Pino ao qual entrara o sinal do detector de movimento
Pino ao qual iremos ativar um rele para acionamento da carga eletrica

Ento resumida demente precisamos de:


1 detectar um movimento com o sensor ligado a porta de I/O do microcontrolador em RA0
pino 17 do PIC16F628A.
2 quando detectado um movimento o firmware que desenvolvermos vai ativar a porta de I/O
qual existe um circuito de acionamento por transistor ligado a RA1 pino 18 do PIC16F628A
que aciona um rele.
3 quando o detector de movimento e o firmware que desenvolvemos deixar de detectar
movimento por um tempo o sinal na porta de I/O RA1 deve desligar o acionamento do
transistor que desliga um rele.
Pronto! Agora que sabemos o que queremos vamos voltar no tempo, no espao e nas pginas
e comear a dar uma olhada na tabela de comandos da linguagem PICBASIC PRO pagina de 16
a 19. E agora como ficamos?
Simples! Comece a raciocinar! Pegue o datasheet do PIC16F628A, neste link deixe o PC com a
tela do GOOGLE TRADUTOR aberta e larga de preguia!
Voc topa aprender? Ento siga os passos....
Observe atentamente que o no diagrama eltrico de nossa aplicao no existe um
componente chamado cristal oscilador, capacitores de ressonncia do cristal oscilador e nem o
resistor de reset! Referncia a isso ns temos nas pginas 97 e 98 (bit 4 1,0) com referncia ao

edukatika@hotmail.com

34

cristal oscilador e nas pagina 71 sobre o reset interno. Perceba que no vamos usar, mas como
pode? No precisa?
Na verdade, esses componentes podem ser dispensados em algumas aplicaes e para
descomplicar vamos mostrar como fazer isso internamente dentro do chip usando a
programao firmware.
Para isso devemos identificar os registradores internos do CHIP esses registradores nada mais
so do que locais de hardware com endereamento que podemos alterar bit a bit alterando
as configuraes internas do microcontrolador! Podemos mudar praticamente tudo que o
microcontrolador permitir.
E neste caso vamos alterar os registros referentes ao RESET e OSCILADOR INTERNO pginas j
citadas anteriormente.
Para isso vamos escrever nestes bits a seguinte condio: Calma isso feito na hora de gravar
o microcontrolador! Vamos chegar l!
' 13 8 7 6 5 4 3 2 1 0
*
' 1 1 0 1 1 1 1 1 0 1 desliga clock externo = 3F7D *
' 1 1 0 1 0 1 1 1 0 1 desliga reset externo = 3F5D *

Vamos ao prximo passo que definir a frequncia de trabalho do microcontrolador que no


caso do PIC16F628A padro 4Mhz Ento vamos usar o comando PICBASIC PRO mostrado
abaixo. Perceba que este comando no foi mencionado nas pginas de 16 a 19 no foi um erro
foi proposital a explicao destes comandos esto no APENDICE 1
DEFINE OSC 4

Mas o que este comando faz exatamente? Parece obvio ele DEFINE que o oscilador de CLOCK
trabalha em uma frequncia de 4 Mhz. Simples e obvio n? OPS....lembre-se esta sequncia
quase padro para tudo o que voc for fazer !
Prximo passo ! Sabemos que os microcontroladores podem trabalhar com sinais digitais e
analgicos porem em nosso primeiro exemplo vamos trabalhar somente com sinais digitais!
Ento devemos desligar todas as funes dos pios que no seja digital! Como fazermos isso?
Novamente vamos ao datasheet do PIC16F628A pagina XXXX e no manual do PICBASIC PRO na
pgina XXXXX e pronto descobrimos que para definirmos que todos as portas de I/O do
microcontrolador ser digital precisamos do comando abaixo em nosso firmware:
CMCON = 7

Certo, mas como assim? CMCON = 7 !! Na verdade, esta linha de comando interpretada pelo
compilador como um comando padro para os microcontroladores o 7 na verdade um
nmero decimal que seria convertido em binrio e ficaria assim 00000111 e somente os trs
ltimos bits em 1 iria desligar os registradores internos do microcontrolador fazendo com que
as portas trabalhem com nvel lgico 1 e 0. Confuso?

edukatika@hotmail.com

35

Calma o primeiro passo para uma corrida! Tudo se encaixa em breve e obviamente se voc
se dedicar.
E agora o que falta?
Bem! Sabemos que vamos ligar um sensor de movimento no pino de I/O RA0 e no pino de I/O
RA1 iremos ligar um rele!
Precisamos dar nome aos pinos de I/O em nosso firmware. Ento devemos fazer o seguinte:
rele VAR PORTA.1

Criamos a varivel chamada RELE e atribumos ela atravs de VAR a PORTA.1

Comando que devemos estudar? (VAR) o que devemos entender? Que atribumos a varivel
RELE o nome de PORTA.1 que onde o rele est ligado ao hardware.

pir VAR PORTA.0

Criamos a varivel chamada PIR e atribumos ela atravs de VAR a PORTA.0

Comando que devemos estudar? (VAR) o que devemos entender? Que atribumos a varivel
PIR o nome de PORTA.0 que onde o sensor de movimento est ligado ao hardware.
J demos alguns passos para o paraso! Agora devemos ter em mente que nos mesmos
definimos que queremos que este hardware aps um tempo sem detectar movimento se
desligue! Isso est escrito na pgina 34 item 3. Ento nos mesmos criamos uma varivel de
tempo pois queremos que depois de um TEMPO se desligue! Ento vamos a ela.
cont VAR WORD Criamos uma varivel chamada CONT e informamos que ela uma WORD ou
seja uma palavra que pode conter um nmero entre 0 a 65535

Comando que devemos estudar? (VAR) o que devemos entender? Que atribumos a varivel
CONT a condio de poder armazenar um nmero entre 0 a 65535. Este nmero ser usado
para criar o tempo em que o dispositivo fica ativo ou desativo ao detectar movimento!
Prximo passo! Sempre que efetuamos definies em hardware atravs do firmware de
costume voc estabilizar o processo interno e isso feito da seguinte forma:
PAUSE 1000 Efetuamos uma pausa no sistema onde se estabiliza todas as funes internas e no
termino do tempo que milissegundos o fluxo do programa continua normalmente.

Comando que devemos estudar? (PAUSE e PAUSEUS) o que devemos entender? Que
podemos colocar um comando que gera um atraso ou delay na execuo dos programas, isso
tem uma utilidade enorme na construo de um firmware.
Depois que definimos portas e variveis agora devemos trabalhar com os pinos de I/O um
ponto importante que podemos definir se queremos que os pinos de I/O se inicialize em
nvel 1 ou 0.
Em nosso caso precisamos manter os pinos de I/O utilizado no projeto em nvel 0. Vejamos
como fazer isso!

edukatika@hotmail.com

36

Inicio: Inicio da rotina principal


LOW rele Usamos o comando LOW para manter a varivel rele em zero mas quem rele ? o pino
de I/O RA1 ou PORTA.1
LOW pir Usamos o comando LOW para manter a varivel pir em zero mas quem pir ? o pino de
I/O RA0 ou PORTA.0

Comando que devemos estudar? (LOW e HIGH) o que devemos entender ? Que podemos
colocar um pino de I/O em nvel ALTO (1) ou baixo (0) quando quisermos. E com extrema
facilidade.
Vamos programar? Ou melhor! Vamos fazer nosso primeiro firmware. Bem, agora vamos
comear a rotina de verificao sinal gerado pelo detector de movimento! Para isso
precisamos LER o pino de I/O PIR PORTA.0 e como faremos isso? Simples acompanhe as trs
(3) linhas do quadro abaixo!
lendo_PIR: O nome da rotina de leitura do PIR lendo_PIR os dois pontos : indica o comeo de uma
rotina
If PIR = 1 then m_pir ->: Esta linha testamos a condio se PIR = 1 ento desvie para a rotina M_PIR,
esta linha de comando fica esperando a entrada PIR mudar de nvel lgico 0 para 1 quando isso ocorre
porque foi detectado movimento e devemos fazer alguma coisa indicada em M_PIR
goto lendo_pir -> : Esta linha manda o programa firmware entrar em loop e no parar de ler o pino de
I/O pir em quanto o nvel lgico na entrada no mudar.

Montamos a primeira rotina do firmware a que vai ler o sensor PIR na PORTA.0 do
microcontrolador! Porem caso o detector de movimento detecte movimento foi criado um
desvio que vai para a rotina M_PIR!
Comando que devemos estudar? Devemos entender o mecanismo de rotinas e sub-rotinas, o
comando de teste de condio IF THEN e GOTO
E o que M_PIR faz? Vejamos.
M_PIR: Inicio da rotina M_PIR os dois pontos : indica o comeo de uma rotina no se esquea
high rele : Coloca a sada rele em condio de nvel alto 1 ou seja liga o rele
if pir = 1 then m_pir : Testa novamente se a porta I/O PIR esta en nivel 1 caso esteja volta para M_PIR
pause 200 : Executa uma pausa de 200 mCs
if pir = 0 then N_PIR : Testa porta de I/O PIR caso esteja em 0 salta para rotina N_PIR
goto M_PIR : volta para rotina M_PIR

No perca o raciocnio!! A rotina M_PIR a rotina que ativa/desativa o rele quanto existe
movimento ou a falta de movimento! Em caso de falta de movimento a rotina movida para
N_PIR. Vejamos as explicaes no quadro abaixo!
N_PIR: Inicio da rotina M_PIR os dois pontos : indica o comeo de uma rotina no se esquea
Low rele : Coloca a sada rele em condio de nvel Baixo 0 ou seja desliga o rele
if pir = 1 then N_pir : Testa novamente se a porta I/O PIR esta en nivel 1 caso esteja volta para N_PIR
if pir = 0 then M_pir : Testa novamente se a porta I/O PIR esta en nivel 0 caso esteja volta para M_PIR
goto inicio : volta para a rotina INICIO
END : Fim do programa

edukatika@hotmail.com

37

Comando que devemos estudar? Devemos entender o mecanismo de rotinas e sub-rotinas, o


comando de teste de condio IF THEN, GOTO e END!
Acredite ou no! Terminamos o primeiro firmware de um microcontrolador! Voc deve sentirse orgulhoso de chegar at aqui pois este assunto para poucos.
Mas! Nem tudo so flores e ainda falta a implementao da etapa de controle de varredura
por tempo! Ou seja, o tempo que o microcontrolador vai ficar parado at checar novamente
o ambiente!
Mas isso veremos em breve! Agora vamos ver atentamente a tela abaixo onde temos a tela
completa do software do compilador/editor.

Tela do editor/compilador
No quadro abaixo temos a listagem completa do firmware e comentada linha a linha!
Sugerimos acompanhar este vdeo https://www.youtube.com/watch?v=ExU_oDJ5jBg Vai
ajudar bastante!
'****************************************************************
'* Name : PIR_1.PBP
*
'* Author : [Clovis Magoga Rodrigues - www.edukatika.com.br]
*
'* Notice : Edukatika - Robtica Educacional]
*
'*
: Exemplo de programa com finalidade Educacional
*
'* Date : 18/11/2015
*
'* Version : PIC16F628/627
*
'* Notes : Teste de deteco de movimento usando modulo PIR
'--------------------------------------------------------------' 13 8 7 6 5 4 3 2 1 0
' 1 1 0 1 1 1 1 1 0 1 desliga clock exteno = 3F7D

edukatika@hotmail.com

38

' 1 1 0 1 0 1 1 1 0 1 desliga reset externo = 3F5D


'****************************************************************
DEFINE OSC 4
; Define a frequncia do Cristal em 4Mhz
CMCON = 7
; define as portas como DIGITAIS
rele var PORTA.1
; seta o rele em PORTA.1 pino 18
pir var PORTA.0
; seta modulo PIR PORTA.0 pino 17
cont vAR WORD
; varivel VAR com capacidade de 0 a 65535
Pause 1000
inicio:
pause 200
Low rele : low pir

; rotina incio de desvio de fluxo de programa


; uma pausa de 2 ms
; coloca em nvel baixo as sadas RELE e PIR

lendo_PIR:
If PIR = 1 then m_pir
goto lendo_pir

; inicio da rotina que efetua a leitura do sensor de movimento


; testa a condio SE(if) PIR = 1 ento execute a rotina M_PIR
; volta (goto) a rotina LENDO_PIR

M_PIR:
high rele
if pir = 1 then m_pir
pause 200
if pir = 0 then N_PIR
goto M_PIR

; inicio da rotina de movimento detectado


; ativa o rele comando HIGH coloca nvel lgico 1 na porta RELE
; testa a condio SE(if) PIR = 1 ento execute a rotina M_PIR rele continua
; ativo
; uma pausa de 2 ms
; testa a condio SE(if) PIR = 0 ento execute a rotina N_PIR
; volta (goto) a rotina M_PIR

N_PIR:
Low rele
if pir = 1 then N_pir
if pir = 0 then M_pir
goto tecla

; inicio da rotina de movimento NO detectado


; desativa o rele comando LOW coloca nvel lgico 0 na porta RELE
; testa a condio SE(if) PIR = 1 ento execute a rotina N_PIR
; testa a condio SE(if)PIR=0 ento execute a rotina M_PIR
; volta (goto) a rotina M_PIR

end

; fim do programa

Depois de escrito o programa no editor ver a figura da TELA/EDITOR podemos compilar o


programa apertando a tecla F9.
Voc ira ver a tela da figura 9 pagina 20 e se tudo estiver ok esse procedimento ir gerar um
arquivo .HEX com o mesmo nome que demos ao programa/firmware que ser PIR_1.HEX,
vejamos o contedo dele no quadro abaixo.
:020000040000FA
:100000002828A301A200FF30A207031CA307031C9A
:1000100023280330A100DF300F200328A101E83E90
:10002000A000A109FC30031C1828A00703181528FC
:10003000A0076400A10F152820181E28A01C222844
:1000400000002228080083130313831264000800B1
:1000500007309F000330A300E8300220C8300120A1
:1000600086118316861183120512831605128312D8
:100070006400051A3C28382886158316861164000A
:100080008312051A3C28C83001206400051E492847
:100090003C2886118316861164008312051A4928AC
:0C00A0006400051E3C282E286300542834
:02400E006D3F04
:00000001FF

edukatika@hotmail.com

39

No quadro acima temos o contedo do cdigo compilador que ser gravado dentro do PIC,
todos os comandos que estudamos no quadro acima referente ao programa exemplo
PIR_1.PBP.
Para fecharmos o ciclo de raciocnio veja o quadro abaixo onde vemos o cdigo nativo em
ASSEMBLER. No se preocupe com isso! O que queremos mostrar que no final tudo
ASSEMBLER mesmo de uma forma indireta!

; PICBASIC PRO(TM) Compiler 2.60, (c) 1998, 2009 microEngineering Labs, Inc. All Rights Reserved.
_USED
EQU
1
INCLUDE "C:\PBP6\16F628A.INC"

; Define statements.
; C:\PBP6\PIR\PIR_1.PBP
#define
OSC
RAM_START
RAM_END
RAM_BANKS
BANK0_START
BANK0_END
BANK1_START
BANK1_END
BANK2_START
BANK2_END
EEPROM_START
EEPROM_END
; C:\PBP6\PBPPIC14.RAM
Register
R0
; C:\PBP6\PBPPIC14.RAM
Register
R1
; C:\PBP6\PBPPIC14.RAM
Register
R2
; C:\PBP6\PBPPIC14.RAM
Register
R3
; C:\PBP6\PBPPIC14.RAM
Register
R4
; C:\PBP6\PBPPIC14.RAM
Register
R5
; C:\PBP6\PBPPIC14.RAM
Register
R6
; C:\PBP6\PBPPIC14.RAM
Register
R7
; C:\PBP6\PBPPIC14.RAM
Register
R8
; C:\PBP6\PBPPIC14.RAM
FLAGS
; C:\PBP6\PBPPIC14.RAM
Parameter
GOP
; C:\PBP6\PBPPIC14.RAM
RM1
; C:\PBP6\PBPPIC14.RAM
RM2
; C:\PBP6\PBPPIC14.RAM
RR1

00014

DEFINE OSC 4
; Define a frequencia do Cristal em 4Mhz
4
; Define a frequencia do Cristal em 4Mhz

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

00020h
0014Fh
00003h
00020h
0007Fh
000A0h
000EFh
00120h
0014Fh
EQU
02100h
0217Fh

EQU

00012
EQU

EQU

EQU

EQU

EQU

EQU

EQU

EQU

EQU
EQU

EQU
EQU
EQU
EQU

A00020 R0

VAR

WORD BANK0 SYSTEM

' System

RAM_START + 000h
00013
A00022 R1

VAR

WORD BANK0 SYSTEM

' System

RAM_START + 002h
00014
A00024 R2

VAR

WORD BANK0 SYSTEM

' System

RAM_START + 004h
00015
A00026 R3

VAR

WORD BANK0 SYSTEM

' System

RAM_START + 006h
00016
A00028 R4

VAR

WORD BANK0 SYSTEM

' System

RAM_START + 008h
00017
A0002A R5

VAR

WORD BANK0 SYSTEM

' System

RAM_START + 00Ah
00018
A0002C R6

VAR

WORD BANK0 SYSTEM

' System

RAM_START + 00Ch
00019
A0002E R7

VAR

WORD BANK0 SYSTEM

' System

RAM_START + 00Eh
00020
A00030 R8

VAR

WORD BANK0 SYSTEM

' System

RAM_START + 010h
00026
A00032 FLAGS VAR BYTE BANK0 SYSTEM
RAM_START + 012h
00025
A00033 GOP VAR BYTE BANK0 SYSTEM
RAM_START + 013h
00022
A00034 RM1
RAM_START + 014h
00024
A00035 RM2
RAM_START + 015h
00021
A00036 RR1
RAM_START + 016h

' Static flags


' Gen Op

VAR

BYTE BANK0 SYSTEM

' Pin 1 Mask

VAR

BYTE BANK0 SYSTEM

' Pin 2 Mask

VAR

BYTE BANK0 SYSTEM

' Pin 1 Register

edukatika@hotmail.com

40

; C:\PBP6\PBPPIC14.RAM
00023
A00037 RR2 VAR
RR2
EQU
RAM_START + 017h
; C:\PBP6\PIR\PIR_1.PBP
00018
A00038 cont vAR WORD
65535
_cont
EQU
RAM_START + 018h
; C:\PBP6\16F628A.BAS
00020
PORTL VAR PORTB
_PORTL
EQU
PORTB
; C:\PBP6\16F628A.BAS
00021
PORTH VAR PORTA
_PORTH
EQU
PORTA
; C:\PBP6\16F628A.BAS
00022
TRISL VAR TRISB
_TRISL
EQU
TRISB
; C:\PBP6\16F628A.BAS
00023
TRISH VAR TRISA
_TRISH
EQU
TRISA
#define _rele
_PORTB??3
#define _pir
_PORTA??4
#define _PORTB??3
PORTB, 003h
#define _PORTA??4
PORTA, 004h
INCLUDE "PIR_1.MAC"
INCLUDE "C:\PBP6\PBPPIC14.LIB"

; C:\PBP6\16F628A.BAS
; C:\PBP6\16F628A.BAS
; C:\PBP6\16F628A.BAS
; C:\PBP6\16F628A.BAS
; C:\PBP6\16F628A.BAS

00012
00013
00014
00015
00016

; C:\PBP6\16F628A.BAS

00018

; C:\PBP6\16F628A.BAS
; C:\PBP6\PIR\PIR_1.PBP

00025
00014

; C:\PBP6\PIR\PIR_1.PBP
MOVE?CB

00015
CMCON = 7
007h, CMCON

; C:\PBP6\PIR\PIR_1.PBP
PAUSE?C

00020
Pause 1000
003E8h

; C:\PBP6\PIR\PIR_1.PBP

00022

inicio:

; C:\PBP6\PIR\PIR_1.PBP
PAUSE?C

00023
0C8h

pause 200

; C:\PBP6\PIR\PIR_1.PBP
LOW?T _rele

00024

Low rele : low pir

; C:\PBP6\PIR\PIR_1.PBP
LOW?T _pir

00024

Low rele : low pir

; C:\PBP6\PIR\PIR_1.PBP

00026

lendo_PIR:

BYTE BANK0 SYSTEM

' Pin 2 Register

; variable revo con capacidad de 0 a

BANK0 $0020, $007F


BANK1 $00A0, $00EF
BANK2 $0120, $014F
EEPROM $2100, $217F
LIBRARY "PBPPIC14"
include "PIC14EXT.BAS"
include "PBPPIC14.RAM"
DEFINE OSC 4
; Define a frequencia do Cristal em 4Mhz
; define as portas como DIGITAIS

; rotina incio de desvio de fluxo de programa

LABEL?L _inicio
; uma pausa de 2 ms

LABEL?L _lendo_PIR
; C:\PBP6\PIR\PIR_1.PBP
CMPEQ?TCL

00027
If PIR = 1 then m_pir
_pir, 001h, _m_pir

; C:\PBP6\PIR\PIR_1.PBP
00028
GOTO?L _lendo_PIR

goto lendo_pir

; C:\PBP6\PIR\PIR_1.PBP

00030

M_PIR:

; C:\PBP6\PIR\PIR_1.PBP
HIGH?T _rele

00031

high rele

; C:\PBP6\PIR\PIR_1.PBP
CMPEQ?TCL

00032
if pir = 1 then m_pir
_pir, 001h, _m_pir

; C:\PBP6\PIR\PIR_1.PBP
PAUSE?C

00033
0C8h

LABEL?L _m_pir

pause 200

edukatika@hotmail.com

41

; C:\PBP6\PIR\PIR_1.PBP
CMPEQ?TCL

00034
if pir = 0 then N_PIR
_pir, 000h, _N_PIR

; C:\PBP6\PIR\PIR_1.PBP
GOTO?L _m_pir

00035

goto M_PIR

; C:\PBP6\PIR\PIR_1.PBP

00037

N_PIR:

; C:\PBP6\PIR\PIR_1.PBP
LOW?T _rele

00038

Low rele

; C:\PBP6\PIR\PIR_1.PBP
CMPEQ?TCL

00039
if pir = 1 then N_pir
_pir, 001h, _N_PIR

; C:\PBP6\PIR\PIR_1.PBP
CMPEQ?TCL

00040
if pir = 0 then M_pir
_pir, 000h, _m_pir

; C:\PBP6\PIR\PIR_1.PBP
GOTO?L _inicio

00041

goto inicio

; C:\PBP6\PIR\PIR_1.PBP
END?

00043

end

LABEL?L _N_PIR

; fim do programa

END

Neste ponto fechamos o ciclo inicial do nosso estudo! O prximo passo ser a montagem real
do circuito eletrnico e teste do hardware, a gravao do microcontrolador e prova de
funcionamento.
Prximos passos:

Conhecendo mais o autor;


Montagens eletrnicas;
Montagem do circuito inicial na placa Laboratrio;
Gravadores de PIC, voc vai precisar de um!

edukatika@hotmail.com

42

You might also like