42
[email protected] 1 Edukatika Robótica, Microcontroladores Automação O princípio de tudo! O princípio de tudo de forma pratica fácil e descomplicada. FASE 1 – Versão 1 – Revisão 1.1

Edukatika - Automacao e Robotica - V1

Embed Size (px)

DESCRIPTION

Automação e robótica -

Citation preview

Page 1: Edukatika - Automacao e Robotica - V1

[email protected] 1

Edukatika

Robótica, Microcontroladores Automação

O princípio de tudo!

O princípio de tudo de forma pratica fácil e descomplicada.

FASE 1 – Versão 1 – Revisão 1.1

Page 2: Edukatika - Automacao e Robotica - V1

[email protected] 2

Prefácio Em nossa serie de e-books iremos desmistificar os sistemas de robótica, automação, controle

de processos, sistemas de medições de grandezas como temperatura, pressão, voltagem!

De uma forma simples e com muita pratica e objetividade iremos mostrar a todos o porquê

das coisas e como fazer.

Linguagens de programação, tecnologia embarcada, sistemas microcontrolados. Famílias de

microcontroladores e aplicações básicas e reais.

Controle de motores elétricos, servos e motores de passo. Medição de temperatura e pressão!

Automatização de maquinas e dispositivos de controles residenciais.

Page 3: Edukatika - Automacao e Robotica - V1

[email protected] 3

ATENÇÃO!

É MUITO IMPORTATE QUE VOCE EFETUE A LEITURA ATENTAMENTE, CASO CONTRARIO NÃO ESTARIA ESCRITO!

Este e-book não tem a mínima intenção em esgotar qualquer tipo de assunto aqui tratado,

muito menos gerar polemicas técnicas que não leva ninguém de “lugar algum” para “lugar

nenhum”. Sendo assim vamos tratar de assuntos complexos de forma simples, com objetivo e

o mínimo 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.

Além do mais da forma que é apresentado é exatamente o que você precisa saber e fazer para

dar um passo de cada vez no aprendizado.

Então não faça uma cópia impressa ainda, pois este é o primeiro de uma série de vários, os

quais vai mudar por completo a estrutura inicial do e-book.

Page 4: Edukatika - Automacao e Robotica - V1

[email protected] 4

Dedicatória

Dedico a quem me deu a vida.

Não conte seu sonho a ninguém, pois ele pode virar um pesadelo.

Toda cultura se torna inútil se não for disseminada.

Page 6: Edukatika - Automacao e Robotica - V1

[email protected] 6

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 – Famílias de microcontroladores e plataformas de desenvolvimento............................8

2 – Arduino..........................................................................................................................8

3 – Microcontroladores ATMEL...........................................................................................9

4 – Microcontroladores MICROCHIP...................................................................................10

5 – Linguagens de programação para microcontroladores.................................................11

6 – Compiladores para microcontroladores........................................................................13

7 – Escolhendo uma linguagem de programação................................................................15

8 – Estudando os comandos Básicos da Linguagem Escolhida............................................16

9 – Montando um ambiente de trabalho no PC...................................................................19

10 – Compilando um programa simples...............................................................................22

11 – Introdução à 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 Pressão...........................................................................................................

4 – Sensor de corrente..........................................................................................................

5 – Sensor Magnético............................................................................................................

6 – Sensor Final de curso.......................................................................................................

7 – Sensor de Gás..................................................................................................................

8 – Sensor de som.................................................................................................................

9 – Sensor de umidade..........................................................................................................

10 – Sensor de temperatura..................................................................................................

Fase 3 - Dispositivos de movimento e acionamento Mecânico

Page 7: Edukatika - Automacao e Robotica - V1

[email protected] 7

1 - Reles

2 – Solenoides

3 – Motores corrente continua

4 – Motores de passo

5 – Servo motores

Fase 4 – Montagem eletrônica (prototipagem)

1 – Placa padrão

2 – Protoboard

3 – Jumpers

4 – Placas de circuito impresso

5 – Escolhendo um método 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 robótica vem a mecânica

1 – Princípios Mecânicos de movimento

2 – Dispositivos Mecânicos (motores)

3 – O que é automação

4 – O que é robótica

5 – Automação residencial (demótica)

6 – Automatização de processos mecânicos

Fase 6 – Projetos e Montagens (E-book 1)

1 – Detector de movimento PIR 2 – Controles de PWM (motores/iluminação)

3 – Medidores de temperatura 4 – Medição temperatura controle de carga

5 – Detector de movimento PIR com LCD 6 – Contador de eventos detector óptico ou

mecânico.

7 – Relógio/timer microcontrolador 8 – Uso de LCD desenho gráfico

9 – Gerações de caracteres especiais em LCD 10 – Cronometro

11 – Gerações de som 12 – Servo controle botão

13 – Comunicações seriais PIC a PIC 14 – Comunicações seriais RS232

15 – Controles de servo porta SERIAL (PC) 16 - Conversores análogo/digital LCD

17 – Conversores análogo/digital LCD e PC 18 - Conversor analógico/digital LCD/PC e

Page 8: Edukatika - Automacao e Robotica - V1

[email protected] 8

(rs232) ECELL

19 – Controles remotos por RF TX 20 – Controles remotos por RF RX

Fase 7 – A Pratica Onde veremos a aplicação pratica de tudo que estamos aprendendo!

1 – Detector de Movimento PIR.......................................................................................29

2 – Vamos ao que interessa!............................................................................................30

3 – Analisando o circuito eletrônico do primeiro projeto.................................................33

4 – O primeiro programa ninguém esquece......................................................................34

Fase 1 - O inicio

1 – Famílias de microcontroladores e plataformas de desenvolvimento.

Seria impossível falar de Robótica e automação sem falar em microcontroladores. Com a

evolução da eletrônica os microcontroladores passaram a evoluir de forma rápida em todos os

quesitos.

- Poder de processamento

- Velocidade de processamento

- Alta densidades de funções

- Excelente quantidade de pinos I/O

- Fácil implementação de linguagens de programação

- Quantidade de fabricantes

Antes de falarmos propriamente dito dos microcontroladores vamos falar sobre as

plataformas de desenvolvimento. Plataformas de desenvolvimento são nada mais nada menos

do que uma placa eletrônica contendo um microcontrolador de uma determinada família

(fabricante) a qual temos como explorar as suas funcionalidades.

Vamos relacionar algumas famílias de microcontroladores e seus fabricantes esta lista é pobre

porem objetiva para nossos propósitos para aqueles que são iniciantes.

Intel

Renesas

Motorola

Siemens

Atmel

Microchip

National

ALTERA

Page 9: Edukatika - Automacao e Robotica - V1

[email protected] 9

2 – Arduino

Com toda certeza o ARDUINO é a bola da vez da última década! Tem a maior rede de

colaboradores do mundo muito difundido em todo o planeta. Você já está cansado de saber

qual a aparência do arduino, mas vamos reforçar 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! Não vamos entrar no mérito desta questão, pois

não é a intenção gerar polemica nossa intenção é ensinar a pensar!

Portanto não 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 eletrônica possui

microcontroladores para áreas automotivas, medica, automação, controle de movimento,

aparelhos domésticos, automação residência e predial, iluminação e periféricos para PC. O

ARDUINO na sua essência utiliza microcontroladores ARTMEL.

Os microcontroladores ATMEL são disponibilizados com 8 e 32 bits. Para maiores detalhes

acesse este link http://www.atmel.com/pt/br/ . Veja a figura ATMEL.

Page 10: Edukatika - Automacao e Robotica - V1

[email protected] 10

Figura 3 - ATMEL

4– Microcontroladores MICROCHIP

A família 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 obtenção a baixo custo no Brasil>

Além de possuir uma família de microcontroladores de 8, 16 e 32 bits possui um excelente

leque de possibilidades e aplicações e compatibilidade com linguagens de fácil assimilação.

A linha de microcontroladores da Microchip também abrange várias áreas da eletrônica

possui microcontroladores para áreas automotivas, medica automação controle de movimento

aparelhos domésticos, automação residência e predial, iluminação, aeroespacial, áudio e voz,

processadores DSP e uma infinidade que você pode consultar o site no link acima. Veja figura

MICROCHIP.

Figura 4 - Microchip

Page 11: Edukatika - Automacao e Robotica - V1

[email protected] 11

Em nossos estudos iremos falar sobre vários 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 visão rápida e focada

em como iniciar um projeto e como escolher os microcontroladores e linguagem de

programação e compiladores.

5 – Linguagens de programação para Microcontroladores

O que é uma linguagem de programação?

Podemos definir que linguagem de programação é um conjunto de COMANDOS que são

enviados a um dispositivo e executa uma determinada função!

OBS: Uma definição simplista. Mas não precisamos de definições conceituosas e acadêmicas,

pois neste momento não é nosso foco.

As opções de linguagem de programação para microcontroladores é tão vasta como a

quantidade de fabricantes de microcontroladores.

A principal linguagem de programação é a o ASSEMBLER e também a mais eficiente porem a

mais difícil! Entre as mais fáceis 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 código em assembler

Page 12: Edukatika - Automacao e Robotica - V1

[email protected] 12

Não se preocupe em entender cada comando! Neste ponto o que você precisa ter em mente é

que o ASSMBLER é extremamente potente porque age diretamente no núcleo do

microcontrolador, ou seja, um comando dado vai diretamente para processamento.

Essa característica 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ê não se limite a

conhecer uma única linguagem de programação 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 não é o BASIC que ouvimos falar nos anos 80, é parecida, mas não tem nada a ver.

Vamos fazer um comparativo em três linguagens de programação para microcontroladores

para você entender como uma se difere da outra. Veja o quadro abaixo!

Comando Linguagem Aplicação ADCON1 := ADCON1 or 0x0F;

Pascal ( mikroPascal) Define o conversor Análogo digital ACDCON endereço 0x0F

ADCON1 |= 0x0F; C (mikroC) Define o conversor Análogo digital ACDCON endereço 0x0F

ADCON1 = ADCON1 or 0x0F Basic(MikroBasic) Define o conversor Análogo digital ADCON endereço 0x0F

define ADCON1 Basic (PICBASIC PRO) Define o conversor analogo digital ACDCON endereço 0x0F

Perceba que o comando ADCON1 é igual em todas as linguagens porem escritos de forma

diferentes ( escrito significa SINTAXE DO COMANDO ).

As sintaxes são diferentes pois varia de acordo com o COMPILADOR a ser usado porém

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 tópico de forma simplória e afirmar que :

De acordo com a linguagem escolhida muda-se a sintaxe de escrita do comando, podemos ter

mais ou menos eficiência no compilador mas não se muda o set de instruções do

Page 13: Edukatika - Automacao e Robotica - V1

[email protected] 13

microcontrolador. SET de instruções são 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 definição simplória e objetiva:

COMPILADORES são softwares que TRADUZ os comandos de uma linguagem para a sua forma

nativa de uso, ou seja, transforma comandos fáceis de nos seres humanos entenderem em

código de máquina. Isso ai pessoal! Não 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 eficiência do

programa final uma delas é a velocidade de execução das instruções.

Porem! Isso não interfere em absolutamente nada para iniciantes. Muito pelo contrário!

Comece todo do começo!! 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. Então começa de forma simples para não desanimar na primeira

dificuldade e pode ter certeza que elas vão aparecer!

Vejamos alguns exemplos de compiladores e suas interfaces de tela para o usuário.

Os compiladores devem ser escolhidos de acordo com a linguagem de programação escolhida.

Vamos a mais uma definição que em breve vai gerar controvérsias! Os compiladores passam

despercebidos em 90% das nossas ações com um microcontrolador! Pois as telas mostradas

nas figuras abaixo mostram na verdade uma “interface” que facilita a interação

DESENVOLVEDOR/PRODUTO no caso o microcontrolador! Portanto o compilador para nós é

apresentado como uma série de comandos que iremos estudar na sequência!

Page 14: Edukatika - Automacao e Robotica - V1

[email protected] 14

Figura 6 - Tela de trabalho do compilador C

Figura 7 - Tela de trabalho do compilador C

Page 15: Edukatika - Automacao e Robotica - V1

[email protected] 15

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

7 – Escolhendo uma linguagem de programação

No tópico passado falamos sobre linguagem de programação apresentamos algumas delas de

forma quase que irresponsável porem objetiva.

Neste tópico seremos rápidos, pois você deve escolher o que você tem mais facilidade em

aprender!

Esqueça a opinião de profissionais avançados ou o ponto de vista de quem tem conhecimento

teórico e ZERO de pratica!

Não tente se iniciar em assembler a não ser que você seja um quase gênio ou ter uma

facilidade medonha no assunto.

Não discuta o que é melhor que o que, não perca seu tempo com comparações de disputa!

Seria inútil como discutir que time de futebol é o melhor, qual tipo de mulher é a mais

“gostosa” qual religião te leva para o céu.

Pense de forma simples, preciso aprender, qual é a maneira mais fácil de iniciar? A resposta é

simples BASIC ou PICBASIC PRO! É por este caminho que vamos iniciar os estudos.

A escolha da linguagem de programação deve ter como base inicial qual o nível de

conhecimento que cada um tem! Não adianta você tentar usar o assembler se é o seu primeiro

contato com a programação 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 início uma vantagem!! É de graça! Outra vantagem é relativamente muito mais fácil!

Obviamente é um produto de procedência Americana (U.S.A), mais especificamente da

MicroEngineering Labs Inc este produto está no Mercado Mundial a mais de 15 anos, portanto

Page 16: Edukatika - Automacao e Robotica - V1

[email protected] 16

se você nunca ouviu falar está explorando pouco sua capacidade técnica.

Existe no mundo mais de 60 livros focados nesta linguagem com tradução para praticamente

todas as línguas.

Possui distribuidores em praticamente todos os continentes. Na América do Sul (Argentina) no

Brasil não existe distribuidor direto. Atualmente o PICBASIC PRO está na versão 3.0, mas

iremos abranger a versão 2.60 por ser gratuita e fazer praticamente a mesma coisa que a

versão 3.0 com exceção do ambiente de trabalho e alguns microcontroladores a mais.

O primeiro passo a ser dado é estudar os comandos diretos ou instruções básicas da linguagem

PICBASIC PRO. Na sequência falaremos sobre operadores lógicos e matemáticos. Fica tranquilo

(a) que a matemática vai aparecer de forma leve e simples, nada que assuste.

8 – Estudando os comandos Básicos da Linguagem Escolhida

Como nosso objetivo é a simplicidade, vamos começar a estudar os comandos da linguagem

escolhida o PICBASIC PRO! Mas antes de tudo vamos abranger alguns conceitos e

necessidades.

1 – Lembre-se não existe gente superinteligente é somente você que não leu ou estudou o que

ela (ES) estudou ou leu. Portanto não ache que é difícil sem tentar.

2 – A cada duas horas de dedicação e foco em estudo e pesquisa você ganha sabedoria

inteligência porque você está lendo o que não estava lendo a antes (item 1 )

3 – Não faça um curso pago de microcontroladores ou qualquer outra coisa ligada a eletrônica

se você não sabe o que significa DOG em Inglês. Você não precisa ser poliglota, mas não pode

ter preguiça de usar o GOOGLE TRADUTOR.

4 – A sua dificuldade é sua falta de vontade e preguiça e não a eletrônica, robótica,

mecatrônica e microcontroladores. O problema é você!

5 – Quer dominar algo? Ante junto com o que quer dominar, não descuide! Portanto neste

caso escolha um microcontrolador (nós faremos isso para você) e pegue o manual dele ou

datasheet e o Google tradutor e traduza as cinco primeiras páginas 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 matemáticos ou funções matemáticas e lógicas.

Vejamos a lista de comandos.

@ O símbolo ARROBA é usado para indicar o início de uma rotina escrita em ASSMEBLER ou código de máquina.

ADCIN Efetua a leitura de um canal ANALOGICO e converte para digital.

ASM..ENDASM Insere uma rotina assembler dentro do programa em PIC

BRANCH Equivalente ao comando GOTO ou (GOTO..ON) BUTTON Comando para ler um botão ou tecla o qual tem a

Page 17: Edukatika - Automacao e Robotica - V1

[email protected] 17

implementação da função anti-repique ou “Debounce”

CALL “Chama uma rotina em assembler” CLEAR Zera as variáveis do sistema CLEARWDT Limpa o contador de guarda…ou Watchdog COUNT Conta o número de pulsos gerados em um

determinado pino DATA Escreve na memória EEPROM dados de uma

variável DEBUG

Comando para depuração de software que funciona como saída para comunicação serial com taxa de transmissão fixa

DEBUGIN A mesma coisa que o comando DEBUG porem é uma entrada.

DISABLE Desliga o comando ON-DEBUG e ON interrupt em um processamento

DISABLE DEBUG Desabilita a função ON DEBUG em um processamento

DISABLE INTERRUPT Desabilita a função ON-INTERRUPT em um processamento

DTMFOUT Produz um som no pino de saída padrão DTMF EEPROM Seta as informações básicas para começar a gravar

em uma eeprom. ENABLE Habilita o comando ON-DEBUG e ON-

INTERRUPT em um processamento ENABLE DEBUG

Habilita o comando ON-DEBUG em um processamento.

ENABLE INTERRUPT

Habilita o comando ON-INTERRUPT em um processamento.

END Finaliza / para a execução de um processamento FOR..NEXT Executa um laço de repetição de todos comandos

dentro do laço FOR...NEXT o tanto de vezes que for desseguindo ou até acontecer uma situação X!

FREQOUT

Produz até duas frequências diferentes em um mesmo pino de saída

GOSUB Efetua um desvio para uma rotina pré-definida e executa os comandos até encontrar o comando RETURN e volta para a próxima linha de comando logo após o GOSUB

GOTO Desvia o fluxo de um programa para uma rotina especificada no GOTO

HIGH Coloca um pino de entrada ou logic em estado lógico 1 ou alto

HPWM Comando para a geração por software de um pulso de PWM em um determinado pino de saída

HSERIN

Comando para controle de fluxo de comunicação serial de entrada em modo assíncrono

HSEROUT Comando para controle de fluxo de comunicação serial de lógic em modo assíncrono

I2CREAD Efetua leitura dos bytes em um dispositivo I2C I2CWRITE Efetua a escrita dos bytes em um dispositivo I2C IF..THEN..ELSE..ENDIF Comando que testa uma determinada condição por

exemplo: se(IF) X=10 então(THEN) x=10+1 OU (ELSE) x=10-1 e fim(ENDIF)

IMPUT Coloca um pino na condição de entrada LCDIN

Comando de leitura de displays de LCD efetua leitura da lógico17 RAN interna do LCD

Page 18: Edukatika - Automacao e Robotica - V1

[email protected] 18

LCDOUT Envia comando para a RAM do LCD e comandos de escrita no LCD

{LET} LET atribui a uma variável um determinado valor por exemplo LET X=10 significa que a variável X tem valor 10

LOOKDOWN Busca um valor constante em uma determinada tabela com N valores

LOOKDOWN2 Busca um valor constante em uma tabela de variáveis

LOOKUP Escreve um valor lógico em uma tabela de variáveis

LOOKUP2 Escreve um valor constante em uma tabela de variáveis

LOW Coloca um pino de lógica 1 ou entrada em estado lógico 0 ou baixo

NAP Coloca o processador em estado de “dormência” reduzindo o seu consume por um determinado tempo ou quando acontecer uma determinada condição

ON DEBUG

Ativa o comando ON DEBUG

ON INTERRUPT Executa uma rotina em BASIC quando uma interrupção foi ativada

OWIN Comando de entrada para dispositivos periféricos com teologia UM FIO (one-wire input)

OWOUT Comando de saída para dispositivos periféricos com tecnologia UM FIO (one-wire output)

OUTPUT Define um pino do microcontrolador para ser SAIDA

PAUSE Provoca um delay (atraso) ou espera com resolução de 1mSegundo

PAUSEUS Provoca um delay (atraso) ou espera com resolução de 1mMicrosegundo

POT Comando para ler o valor gerado por um potenciômetro ligado diretamente a qualquer pino do microcontrolador

PULSOIN Efetua a leitura de pulso de entrada em um determinado pino

PULSOUT Efetua a geração de pulso na saída de um determinado pino com largura e frequência ajustável

PWM Gera um pulso de PWM na saída de um determinado pino

RANDOM Gera um número aleatório RCTIME Measure pulse width on a pin

Efetua a medida de um pulso em um determinado pino através de uma associação RCTIME, ou seja, uma rede de tempo constituída por um resistor e um capacitor

READ Efetua leitura de um byte na memória EEPROM READCODE Efetua a leitura de uma palavra na memória

EEPROM RESUME Continua a execução após uma interrupção por

ON-INTERRUPPT RETURN Volta para a linha subsequente ao comando

GOSUB REVERSE Reverte muda um mesmo pino tanto para ser

entrada como saída em um determinado tempo ou condição

Page 19: Edukatika - Automacao e Robotica - V1

[email protected] 19

. SELECT CASE

Select Case é usando para comparar uma condição de cada variável e de acordo com cada condição desviar o fluxo do programa para uma determinada condição ou ação

SERIN Entrada serial assíncrono padrão BS1 SERIN2 Entrada serial assíncrono padrão BS2 SEROUT Saída serial assíncrono padrão BS1 SEROUT2 Saída serial assíncrono padrão BS2 SHIFTIN Comando para entrada serial assíncrona SHIFTOUT Comando para saída serial assíncrona SLEEP Coloca o microprocessador para “dormir” em

estado de espera reduzindo o consume de alimentação por um período de tempo

SOUND Gera um som na saída de um determinado pino STOP Para a execução de um programa SWAP Troca os valores entre duas variáveis TOGGLE Muda o estado lógico de um pino de 0 para 1 USBIN Porta de entrada USB como entrada USBINIT Inicializa a porta USB USBOUT Porta de saída USB como saída WHILE..WEND

Executa uma sequência de comando enquanto uma determinada condição for verdadeira

WRITE Grava um byte na EEPROM WRITECODE Grava uma palavra na memória EEPROM XIN Comando serial do padrão XIN de entrada para

produto de automação residencial XOUT Comando serial do padrão XOUT de saída para

produto de automação 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 começarmos a parte pratica vamos precisar

instalar nossas ferramentas no PC.

já escolhemos a linguagem de programação! Já escolhemos o compilador agora vamos ao

próximo passo que a instalação das ferramentas de trabalho. Vamos disponibilizar para você

de forma gratuita as ferramentas iniciais para começarmos 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 descrição:

MPASMWIN520 – É o nosso compilador que vai “pegar nosso código 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

Page 20: Edukatika - Automacao e Robotica - V1

[email protected] 20

microcontrolador.

MCINSTALL_V4.0 – É a interface gráfica 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 programação em questão a qual estudamos os comandos

anteriormente.

Vejamos agora a aparência 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 compilação de um programa.

Figura 9- MPASMWIN520 em Funcionamento

MCINSTALL_V4.0 – Depois de instalado ele tem a aparência da foto abaixo. E na tela do seu PC

seria criado um atalho com o nome MicroCode Studio.

Page 21: Edukatika - Automacao e Robotica - V1

[email protected] 21

Figura 10 - Ambiente de desenvolvimento em atividade

PBP 2.60 instalado no PC: Visão de como fica depois de instalado o PBP 2.60. Pois bem após a

instalação do PBP 2.60 o que você vai ter é exatamente isso! Em seu PC existira um diretório

que contém arquivos de inicialização de todos os microcontroladores compatíveis com o

compilador. Esses arquivos possui uma extensão .INC que significa .INC = INICIALIZAÇÃO e um

segundo arquivo .BAS extensão do PICBASIC PRO o qual é ativado quando compilamos um

programa usando o ambiente gráfico 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 fácil certo? E é basta você querer!

Page 22: Edukatika - Automacao e Robotica - V1

[email protected] 22

Figura 11 - PicBasic Pro 2.60 após estar instalado no PC

Para aprender passo a passo com instalar e configurar faça o download dos arquivos de

programas através dos links:

Arquivo TOOLS neste link para download direto em seu PC você deve descompactar em uma

pasta e seguir os procedimentos de instalação!

E para efetuar a instalação siga estes vídeos 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

Não temos com compilar um programa ou começar algo sem definir ou organizar nossas ideias

e objetivo e necessidades!

Então vamos pensar de forma simples, mas objetiva. Vamos imaginar que queremos um

dispositivo que LIGA A ILUMINAÇÂO quando detecta a presença de movimento e a matem

acesa em quanto existe movimento no ambiente e que desliga a iluminação quando o

movimento finaliza.

Condição indefinida, ou como detectaremos se o movimento não é causado por um animal ou

como saberemos se o movimento findou devido a pessoa está dormindo?

Definição de qual microcontrolador utilizar? Como podemos definir qual processador utilizar?

Page 23: Edukatika - Automacao e Robotica - V1

[email protected] 23

Vamos analisar alguns pontos:

1 – Estamos iniciando nosso aprendizado então precisamos de uma plataforma simples para

um hardware que disponibiliza todas as portas do PIC.

2 – Devemos escolher um PIC de baixo custo!

3 – Não podemos desperdiçar dinheiro!

4 – Precisamos ser rápidos 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 introdução

sobre a plataforma de desenvolvimento de hardware.

11 – Introdução à 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á disponível para

download aqui neste LINK. Caso você tenha efetuado o download pode ter achado complexo,

mas não é! Vamos partir do ponto que se trata de um produto multiuso o que justifica a

quantidade grande de “JUMPERS” de configuração onde podemos configurar portas para

serem entradas e ou saídas.

Vejamos a quantidade de conectores a quais são 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 condições de usufruir

de toda a capacidade do microcontrolador usando um mesmo KIT de desenvolvimento.

Para você quer deseja ir mais longe não deixe de ler o manual completo de configuração do

KIT. Você entendera rapidamente como utilizar de modo simples até o mais elevado nível.

Na figura abaixo podemos ver uma visão da PCI (placa de circuito impresso) do KIT de

desenvolvimento.

Page 24: Edukatika - Automacao e Robotica - V1

[email protected] 24

Figura 12 - PCB KIT PIC

Escolhemos até agora a linguagem de programação, o compilador o hardware porem falta o

principal! O microcontrolador! Seguindo o mesmo raciocínio da escolha do hardware do KIT DE

DESENVOLVIMENTO vamos escolher o microcontrolador!

Vamos nos preocupar com somente três (3) características.

1 - Facilidade de compra;

2 – Valor do produto;

3 – Quantidade de informações técnicas sobre o microcontrolador.

Seguindo uma linha de raciocínio lógico uma vez que o KIT utiliza como padrão o PIC 16F628A

vamos obviamente utilizar ele, pois tem as características que precisamos e um investimento

único.

Page 25: Edukatika - Automacao e Robotica - V1

[email protected] 25

Figura 13 - PINOS_PIC1

Vejamos a disposição dos pinos do PIC16F628A na figura PINOS_PIC1 e estudaremos alguns

deles de forma rápida. Sendo que o entendimento final depende de você dar uma bela olhada

no datasheet de graça e está em nosso repositório.

De imediato podemos observar os 19 pinos do microcontrolador no caso da figura em

encapsulamento DIP com alimentação 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 saída!

Page 26: Edukatika - Automacao e Robotica - V1

[email protected] 26

No caso do 16F628A todos os pinos de todos os PORTs podem ser entradas e saídas! Não

vamos neste e-book nos aprofundar no PIC16F628A ou qualquer outro, mas vamos sim

estudar o que é necessário para a implementação de um circuito experimental descrito no

início do item 10.

Como estamos falando em automatizar um processo de ligar e desligar uma iluminação em um

ambiente precisou ter em mente que precisamos de um dispositivo de sensoriamento, ou seja,

precisamos de um sensor que detecta o movimento. Então vamos para a FASE 2 SENSORES

depois voltamos para finalizar nossa primeira experiência pratica.

Fase 2 - Sensores

Não existe uma maneira de automatizar um processo ou efetuar a medição de uma grandeza

sem o uso de sensores. Sensores eletrônicos podem ser encontrados nos mais variados tipos e

aplicações! A tecnologia elétrica disponibiliza sensores para praticamente toda e qualquer

aplicação. Vamos enumerar alguns deles sem a pretensão de esgotar o assunto, nosso objetivo

é estudar alguns modelos de sensores facilmente encontrados no comercio com valores

convidativos.

Sensores

Reedswith Micrswith Interruptor N/A Interruptor N/F Sensor de proximidade Sensor optico Sensor a laser Sensor piezelétrico Sensor de umidade Sensor de pressão Sensor de fumaça Sensor de calor Sensor de incêndio Sensor de temperatura Sensor de movimento Sensor de fluxo de gás Sensor de fluxo de liquido

Sensor de umidade Sensor de luz Sensor de som

Sensor de cores Sensor de ph Sensor de vibração Sensor de pressão cardíaca

Page 27: Edukatika - Automacao e Robotica - V1

[email protected] 27

Sensor táctil Sensor de • Tipos de sensores

Sensores óticos Sensores mecânicos Sensores eletrônicos

Resumidamente temos sensores de famílias ópticas que são todos os modelos que se utiliza de

algum tipo de iluminação, sensores mecânicos que possui algum contato mecânico e sensores

eletrônicos que são sensores como o DS18B20 que é um sensor de temperatura.

1- Sensores de luz

Ou sensor detector de luminosidade! Temos três tipos de sensores básicos nesta linha que são

os sensores de CLARIDADE, ou seja, luz branca visível como os LDRs ver figura.

Funcionamento básico dos LDRs é muito simples, quando existe a incidência de LUZ o LDR

baixa drasticamente sua resistência passando a conduzir eletricidade!

Na segunda modalidade de detectores de LUZ temos os detectores de luz infravermelha!

Infravermelho é uma frequência de luz que não 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.

Page 28: Edukatika - Automacao e Robotica - V1

[email protected] 28

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 presença detecta a presença de um objeto em uma

determinada área de cobertura que pode ser de alguns centímetros a vários metros o objeto

pode ser considerado um ser humano ou inanimado dependendo da aplicação.

Os detectores de movimento podem ter seu princípio ativo de detecção de movimento

baseado em infravermelho, deslocamento de ar, ou sensores de capacitância e também os

magnéticos que detecta movimento de objetos metálicos. Entre uma infinidade enorme de

possibilidade que não é o foco deste estudo esmiuçar o assunto detectores de movimento.

Como nosso objetivo é a informação 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 iluminação ou equipamento elétrico.

Sensor de movimento

Pinos do sensor de movimento

Page 29: Edukatika - Automacao e Robotica - V1

[email protected] 29

Devemos destacar na figura acima o sensor PIR e os ajustes possíveis no modulo de controle e

os pinos de controle do modulo! Os pinos de controle são simples e óbvios sendo:

1 – Vcc (3,3v )

2 – GND (terra)

3 – Sinal

Os ajustes são do tempo em que a varredura no ambiente é feita e o ajuste de sensibilidade

onde se ajusta a intensidade do sinal emitido e por consequência detectado. Quando maior a

sensibilidade teoricamente mais sensível 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 consideração uma vez que estamos estudando para produzir algo pode

passar por nossa cabeça fazer algo em larga escala de fabricação!

Como já é hora de aprender vamos para a seção PRATICA 1.

FASE 7 – A PRATICA Obviamente depois de tanto estudo e dedicação não podemos deixar de falar da parte pratica

do nosso e-book. Nesta FASE do nosso estudo iremos começar 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 econômica de um projeto! Quando

somos contratados para fazer algo por alguém o contratante ou nosso patrão espera de um

projeto algo simples, eficiente de baixo custo de pouca manutenção de grande aceitação

comercial. Então você precisa está preparada para pensar como seu patrão ou como seu

contratante.

Em nosso primeiro exercício 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 básica na página 26. A diferença que obviamente

foi incluído um circuito eletrônico para controlar as funções do detector de

movimento/presença.

É exatamente neste ponto que vamos começar a nossa primeira aula pratica. Antes de

Page 30: Edukatika - Automacao e Robotica - V1

[email protected] 30

qualquer coisa os produtos indicados nas figuras acima são 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 técnico e comercial.

Não se esqueça do valor médio que o produto é vendido, voltaremos a falar sobre isso!

Agora vamos a nossa primeira aula pratica.

PRIMEIRO PROJETO PRATICO AULA 1 – Detector de movimento/presença

Objetivo: Detectar a presença de movimentos em um ambiente X e executar o comando de

ativar a iluminação e desliga a mesma iluminação quando o movimento no ambiente findar.

O que vamos precisar:

1 – Um detector de movimento

2 – Um microcontrolador PIC16F628A, dois resistores

3 – Uma placa protótipo ou kit de montagem, dois capacitores

4 – Uma fonte de alimentação ou baterias de 9V, 1 regulador de tensão

5 – Um gravador de microcontroladores PIC, conector

6 – Um PC com os programas descritos na página 19

7 – Ter visto ou assistido os vídeos de configuração disponibilizados no Youtube ou para

download.

8 – E boa vontade em aprender!

Vamos ao que interessa! A pratica! Vamos organizar nosso raciocínio da seguinte forma! Precisamos trabalhar um sinal gerado por

um detector de movimento PIR alimentado por uma tensão de 3,3volts o qual quando ativo

gera um sinal DIGITAL em sua saída! Figura PRATICA-1

Pratica 1

Na figura PRATICA_DIAGRAMA1 temos o diagrama eletrônico do dispositivo! Fique calmo no

momento isso é irrelevante é somente para você começar a criar uma base de conhecimento.

Page 31: Edukatika - Automacao e Robotica - V1

[email protected] 31

Figura 14 - Pratica_diagrama1

Agora vamos pensar simples! Preciso fazer com que um microcontrolador detecte o sinal na

saída do sensor e execute as funções desejadas.

Ops....agora entrou o tal do microcontrolador! Então vamos dar uma olhada na figura

representativa do microcontrolador e falar sobre os pinos e sua funcionalidade. Para que

possamos começar 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ê

começa a entender o porquê das coisas.

Mas lembre-se não vamos nos fixar no microcontrolador e sim em nosso projeto inicial, o

microcontrolador é o aperitivo, mas precisamos falar sobre ele! De início 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 são os pinos que vamos utilizar? Veja abaixo na tabela!

Page 32: Edukatika - Automacao e Robotica - V1

[email protected] 32

PINO Descrição Pino 5 VSS Pino de terra ou alimentação negativa

Pino 14 Vdd ou VCC Pino de alimentação positive 5V Pino 17 RA0 Pino ao qual entrara o sinal do detector de movimento Pino 18 RA1 Pino ao qual iremos ativar um rele para acionamento da carga elétrica

Perfeito!? Agora que sabemos os pinos a serem utilizados vamos ao próximo passo?

Errado.....vamos nos perguntar o porquê escolhemos esses pinos? Perfeito se você se

perguntou isso parabéns está no caminho certo! Uma rápida explicação do porquê da escolha

dos pinos informados é simples. No caso da alimentação +VCC/VDD e VSS/TERRA pinos 5 e 14

é impossível fazer algo sem alimentação porem os pinos 17 e 18 chamados de RA0 e RA1 é

devido a facilidade de configuração do hardware. Isso mesmo quando escolhemos um pino

para trabalhar com ele precisamos programar ele para ser uma entrada ou uma saída!

Precisamos também de saber que tipo de tensão ou sinal estará em sua entrada ou saída! Qual

a frequência e depois que você tem essas informações você escolhe as PORTAS de I/O (i/O =

In/out ou entrada e saída) e (vamos parar de chamar de pino correto?).

Então cada pino de I/O pode ter uma função ou capacidade diferente um do outro alguns

pinos pode receber sinais analógicos (que varia a tensão de 0 a X volts, normalmente no

Máximo 5V e em modelos mais modernos no Máximo 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 afirmação? Sim isso mesmo 3.3V! Porém o microcontrolador escolhido

trabalha com 5,0V isso é um problema? Sim é um problema porem fácil de resolver e veremos

isso a frente!

No momento foi definido que vamos usar dois pinos de alimentação 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 eletrônico simples! Está logo abaixo o diagrama AULA1

AULA 1

Page 33: Edukatika - Automacao e Robotica - V1

[email protected] 33

Vamos analisar o diagrama da AULA 1 e descrever de forma rápida você pode ler ou ver o

vídeo aqui!

Analise do circuito: Você pode assistir a esta análise do circuito aqui copiando e colando em seu navegador:

https://www.youtube.com/watch?v=jjxbp5h6ce0

O conector J1 é responsável por receber a fonte de alimentação que pode ser uma fonte de

12V ou uma bateria de 9V. A tensão entra por J1 e vai para o IC2 que é um regulador de tensão

LM7805 este componente tem como função reduzir a tensão de entrada de 12V ou 9V para os

5V regulados que o PIC precisa! O capacitor C4 e C6 filtra qualquer ruído 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 nível lógico 1 ou seja (ALTO) liga a bobina do rele K1 através

do diodo de proteção do circuito D1.

O sinal do sensor entra no pino 2 do conector C4 porem nesta fase não implementamos a

ligação do sensor devido ao fato que o mesmo precisa de um circuito conversor de tensão de

5V para 3,3V o qual iremos estudar em seguida!

O que vem a ser um conversor de nível de tensão? Quando trabalhamos com níveis lógicos

TTL/CMOS sabemos que o nível “1” ou alto é de 5V e o nível “0” BAIXO é qualquer tensão com

menos de aproximadamente 2,85V. Porem com a nova tecnologia muitos componentes estão

trabalhando com tensão de alimentação de 3,3V sendo assim o nível de tensão para o que era

nível “1” = 5V em alguns casos hoje em dia é de 3,3V.

Então teremos problemas em trabalhar com lógica nível “1” de 3,3V com lógica de “1” de nível

de 5V. Então precisamos compatibilizar os sinais! Para isso precisamos de alguns poucos

componentes entre o periférico de 3,3V e o de 5,0V. Veja a foto abaixo.

Nível lógico

Perceba como o circuito é extremamente simples! Precisaremos de duas (2) tensões de

alimentação sendo uma de 3,3V e outra de 5,0V e um dos lados do circuito ligado ao sinal de

nível 3.3V e o outro lado ao circuito de 5.0V. E estamos com nosso problema de

compatibilização dos níveis lógicos resolvidos.

Finalizamos agora o circuito de hardware e vamos “montar” o nosso primeiro programa em

PICBASIC PRO.

Page 34: Edukatika - Automacao e Robotica - V1

[email protected] 34

O PRIMEIRO PROGRAMA NINGUEM ESQUECE

Tomara que você nunca mais esqueça 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 função alguma para um dispositivo eletrônico

de controle com utilidade comprovada! Relembrando o que precisamos fazer! Na página 30

descrevemos a seguinte necessidade.

Objetivo: Detectar a presença de movimentos em um ambiente X e executar o comando de ativar a iluminação e desativar a mesma iluminação quando o movimento no ambiente findar.

Também foi definido que iríamos utilizar os seguintes sinais de I/O do Microcontrolador

descrito na página 32.

PINO Descrição Pino 5 VSS Pino de terra ou alimentação negativa

Pino 14 Vdd ou VCC Pino de alimentação positive 5V Pino 17 RA0 Pino ao qual entrara o sinal do detector de movimento Pino 18 RA1 Pino ao qual iremos ativar um rele para acionamento da carga eletrica

Então 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 espaço e nas páginas

e começar 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 preguiça!

Você topa aprender? Então siga os passos....

Observe atentamente que o no diagrama elétrico de nossa aplicação não existe um

componente chamado cristal oscilador, capacitores de ressonância do cristal oscilador e nem o

resistor de reset! Referência a isso nós temos nas páginas 97 e 98 (bit 4 1,0) com referência ao

Page 35: Edukatika - Automacao e Robotica - V1

[email protected] 35

cristal oscilador e nas pagina 71 sobre o reset interno. Perceba que não vamos usar, mas como

pode? Não precisa?

Na verdade, esses componentes podem ser dispensados em algumas aplicações e para

descomplicar vamos mostrar como fazer isso internamente dentro do chip usando a

programação firmware.

Para isso devemos identificar os registradores internos do CHIP esses registradores nada mais

são do que locais de “hardware” com endereçamento que podemos alterar bit a bit alterando

as configurações internas do microcontrolador! Podemos mudar praticamente tudo que o

microcontrolador permitir.

E neste caso vamos alterar os registros referentes ao RESET e OSCILADOR INTERNO páginas já

citadas anteriormente.

Para isso vamos escrever nestes bits a seguinte condição: 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 próximo passo que é definir a frequência de trabalho do microcontrolador que no

caso do PIC16F628A é padrão 4Mhz Então vamos usar o comando PICBASIC PRO mostrado

abaixo. Perceba que este comando não foi mencionado nas páginas de 16 a 19 não foi um erro

foi proposital a explicação destes comandos estão 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 frequência de 4 Mhz. Simples e obvio né? OPS....lembre-se esta sequência é

quase padrão para tudo o que você for fazer !

Próximo passo ! Sabemos que os microcontroladores podem trabalhar com sinais digitais e

analógicos porem em nosso primeiro exemplo vamos trabalhar somente com sinais digitais!

Então devemos desligar todas as funções dos pios que não seja digital! Como fazermos isso?

Novamente vamos ao datasheet do PIC16F628A pagina XXXX e no manual do PICBASIC PRO na

página 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 padrão para os microcontroladores o 7 na verdade é um

número decimal que seria convertido em binário e ficaria assim 00000111 e somente os três

últimos bits em 1 iria desligar os registradores internos do microcontrolador fazendo com que

as portas trabalhem com nível lógico 1 e 0. Confuso?

Page 36: Edukatika - Automacao e Robotica - V1

[email protected] 36

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. Então devemos fazer o seguinte:

rele VAR PORTA.1 � Criamos a variável chamada RELE e atribuímos ela através de VAR a PORTA.1

Comando que devemos estudar? (VAR) o que devemos entender? Que atribuímos a variável

RELE o nome de PORTA.1 que é onde o rele está ligado ao hardware.

pir VAR PORTA.0 � Criamos a variável chamada PIR e atribuímos ela através de VAR a PORTA.0

Comando que devemos estudar? (VAR) o que devemos entender? Que atribuímos a variável

PIR o nome de PORTA.0 que é onde o sensor de movimento está ligado ao hardware.

Já demos alguns passos para o paraíso! Agora devemos ter em mente que nos mesmos

definimos que queremos que este hardware após um tempo sem detectar movimento se

desligue! Isso está escrito na página 34 item 3. Então nos mesmos criamos uma variável de

tempo pois queremos que depois de um TEMPO se desligue! Então vamos a ela.

cont VAR WORD � Criamos uma variável chamada CONT e informamos que ela é uma WORD ou seja uma palavra que pode conter um número entre 0 a 65535

Comando que devemos estudar? (VAR) o que devemos entender? Que atribuímos a variável

CONT a condição de poder armazenar um número entre 0 a 65535. Este número será usado

para criar o tempo em que o dispositivo fica ativo ou desativo ao detectar movimento!

Próximo passo! Sempre que efetuamos definições em hardware através 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 funções 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 execução dos programas, isso

tem uma utilidade enorme na construção de um firmware.

Depois que definimos portas e variáveis 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

nível 1 ou 0.

Em nosso caso precisamos manter os pinos de I/O utilizado no projeto em nível 0. Vejamos

como fazer isso!

Page 37: Edukatika - Automacao e Robotica - V1

[email protected] 37

Inicio: Inicio da rotina principal LOW rele � Usamos o comando LOW para manter a variável rele em zero mas quem é rele ? É o pino de I/O RA1 ou PORTA.1 LOW pir � Usamos o comando LOW para manter a variável 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 nível ALTO (1) ou baixo (0) quando quisermos. E com extrema

facilidade.

Vamos programar? Ou melhor! Vamos fazer nosso primeiro firmware. Bem, agora vamos

começar a rotina de verificação 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 três

(3) linhas do quadro abaixo!

lendo_PIR: O nome da rotina de leitura do PIR é lendo_PIR os dois pontos : indica o começo de uma rotina If PIR = 1 then m_pir ->: Esta linha testamos a condição se PIR = 1 então desvie para a rotina M_PIR, esta linha de comando fica esperando a entrada PIR mudar de nível lógico 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 não parar de ler o pino de I/O pir em quanto o nível lógico na entrada não 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 condição IF THEN e GOTO

E o que M_PIR faz? Vejamos.

M_PIR : Inicio da rotina M_PIR os dois pontos : indica o começo de uma rotina não se esqueça high rele : Coloca a saída rele em condição de nível 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

Não perca o raciocínio!! 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 explicações no quadro abaixo!

N_PIR: Inicio da rotina M_PIR os dois pontos : indica o começo de uma rotina não se esqueça Low rele : Coloca a saída rele em condição de nível 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

Page 38: Edukatika - Automacao e Robotica - V1

[email protected] 38

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

comando de teste de condição IF THEN, GOTO e END!

Acredite ou não! Terminamos o primeiro firmware de um microcontrolador! Você deve sentir-

se orgulhoso de chegar até aqui pois este assunto é para poucos.

Mas! Nem tudo são flores e ainda falta a implementação 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 vídeo 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 - Robótica Educacional] * '* : Exemplo de programa com finalidade Educacional * '* Date : 18/11/2015 * '* Version : PIC16F628/627 * '* Notes : Teste de detecção 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

Page 39: Edukatika - Automacao e Robotica - V1

[email protected] 39

' 1 1 0 1 0 1 1 1 0 1 desliga reset externo = 3F5D '************************************************** ************** DEFINE OSC 4 ; Define a frequência 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 ; variável VAR com capacidade de 0 a 65535 Pause 1000 inicio: ; rotina início de desvio de fluxo de programa pause 200 ; uma pausa de 2 ms Low rele : low pir ; coloca em nível baixo as saídas RELE e PIR lendo_PIR: ; inicio da rotina que efetua a leitura do sensor de movimento If PIR = 1 then m_pir ; testa a condição SE(if) PIR = 1 então execute a rotina M_PIR goto lendo_pir ; volta (goto) a rotina LENDO_PIR M_PIR: ; inicio da rotina de movimento detectado high rele ; ativa o rele comando HIGH coloca nível lógico 1 na porta RELE if pir = 1 then m_pir ; testa a condição SE(if) PIR = 1 então execute a rotina M_PIR rele continua ; ativo pause 200 ; uma pausa de 2 ms if pir = 0 then N_PIR ; testa a condição SE(if) PIR = 0 então execute a rotina N_PIR goto M_PIR ; volta (goto) a rotina M_PIR N_PIR: ; inicio da rotina de movimento NÃO detectado Low rele ; desativa o rele comando LOW coloca nível lógico 0 na porta RELE if pir = 1 then N_pir ; testa a condição SE(if) PIR = 1 então execute a rotina N_PIR if pir = 0 then M_pir ; testa a condição SE(if)PIR=0 então execute a rotina M_PIR goto tecla ; 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 conteúdo dele no quadro abaixo.

:020000040000FA :100000002828A301A200FF30A207031CA307031C9A :1000100023280330A100DF300F200328A101E83E90 :10002000A000A109FC30031C1828A00703181528FC :10003000A0076400A10F152820181E28A01C222844 :1000400000002228080083130313831264000800B1 :1000500007309F000330A300E8300220C8300120A1 :1000600086118316861183120512831605128312D8 :100070006400051A3C28382886158316861164000A :100080008312051A3C28C83001206400051E492847 :100090003C2886118316861164008312051A4928AC :0C00A0006400051E3C282E286300542834 :02400E006D3F04 :00000001FF

Page 40: Edukatika - Automacao e Robotica - V1

[email protected] 40

No quadro acima temos o conteúdo do código 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 raciocínio veja o quadro abaixo onde vemos o código nativo em

ASSEMBLER. Não 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 00014 DEFINE OSC 4 ; Define a frequencia do Cristal em 4Mhz #define OSC 4 ; Define a frequencia do Cristal em 4Mhz RAM_START EQU 00020h RAM_END EQU 0014Fh RAM_BANKS EQU 00003h BANK0_START EQU 00020h BANK0_END EQU 0007Fh BANK1_START EQU 000A0h BANK1_END EQU 000EFh BANK2_START EQU 00120h BANK2_END EQU 0014Fh EEPROM_START EQU 02100h EEPROM_END EQU 0217Fh ; C:\PBP6\PBPPIC14.RAM 00012 A00020 R0 VAR WORD BANK0 SYSTEM ' System Register R0 EQU RAM_START + 000h ; C:\PBP6\PBPPIC14.RAM 00013 A00022 R1 VAR WORD BANK0 SYSTEM ' System Register R1 EQU RAM_START + 002h ; C:\PBP6\PBPPIC14.RAM 00014 A00024 R2 VAR WORD BANK0 SYSTEM ' System Register R2 EQU RAM_START + 004h ; C:\PBP6\PBPPIC14.RAM 00015 A00026 R3 VAR WORD BANK0 SYSTEM ' System Register R3 EQU RAM_START + 006h ; C:\PBP6\PBPPIC14.RAM 00016 A00028 R4 VAR WORD BANK0 SYSTEM ' System Register R4 EQU RAM_START + 008h ; C:\PBP6\PBPPIC14.RAM 00017 A0002A R5 VAR WORD BANK0 SYSTEM ' System Register R5 EQU RAM_START + 00Ah ; C:\PBP6\PBPPIC14.RAM 00018 A0002C R6 VAR WORD BANK0 SYSTEM ' System Register R6 EQU RAM_START + 00Ch ; C:\PBP6\PBPPIC14.RAM 00019 A0002E R7 VAR WORD BANK0 SYSTEM ' System Register R7 EQU RAM_START + 00Eh ; C:\PBP6\PBPPIC14.RAM 00020 A00030 R8 VAR WORD BANK0 SYSTEM ' System Register R8 EQU RAM_START + 010h ; C:\PBP6\PBPPIC14.RAM 00026 A00032 FLAGS VAR BYTE BANK0 SYSTEM ' Static flags FLAGS EQU RAM_START + 012h ; C:\PBP6\PBPPIC14.RAM 00025 A00033 GOP VAR BYTE BANK0 SYSTEM ' Gen Op Parameter GOP EQU RAM_START + 013h ; C:\PBP6\PBPPIC14.RAM 00022 A00034 RM1 VAR BYTE BANK0 SYSTEM ' Pin 1 Mask RM1 EQU RAM_START + 014h ; C:\PBP6\PBPPIC14.RAM 00024 A00035 RM2 VAR BYTE BANK0 SYSTEM ' Pin 2 Mask RM2 EQU RAM_START + 015h ; C:\PBP6\PBPPIC14.RAM 00021 A00036 RR1 VAR BYTE BANK0 SYSTEM ' Pin 1 Register RR1 EQU RAM_START + 016h

Page 41: Edukatika - Automacao e Robotica - V1

[email protected] 41

; C:\PBP6\PBPPIC14.RAM 00023 A00037 RR2 VAR BYTE BANK0 SYSTEM ' Pin 2 Register RR2 EQU RAM_START + 017h ; C:\PBP6\PIR\PIR_1.PBP 00018 A00038 cont vAR WORD ; variable revo con capacidad de 0 a 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 00012 BANK0 $0020, $007F ; C:\PBP6\16F628A.BAS 00013 BANK1 $00A0, $00EF ; C:\PBP6\16F628A.BAS 00014 BANK2 $0120, $014F ; C:\PBP6\16F628A.BAS 00015 EEPROM $2100, $217F ; C:\PBP6\16F628A.BAS 00016 LIBRARY "PBPPIC14" ; C:\PBP6\16F628A.BAS 00018 include "PIC14EXT.BAS" ; C:\PBP6\16F628A.BAS 00025 include "PBPPIC14.RAM" ; C:\PBP6\PIR\PIR_1.PBP 00014 DEFINE OSC 4 ; Define a frequencia do Cristal em 4Mhz ; C:\PBP6\PIR\PIR_1.PBP 00015 CMCON = 7 ; define as portas como DIGITAIS MOVE?CB 007h, CMCON ; C:\PBP6\PIR\PIR_1.PBP 00020 Pause 1000 PAUSE?C 003E8h ; C:\PBP6\PIR\PIR_1.PBP 00022 inicio: ; rotina incio de desvio de fluxo de programa LABEL?L _inicio ; C:\PBP6\PIR\PIR_1.PBP 00023 pause 200 ; uma pausa de 2 ms PAUSE?C 0C8h ; C:\PBP6\PIR\PIR_1.PBP 00024 Low rele : low pir LOW?T _rele ; C:\PBP6\PIR\PIR_1.PBP 00024 Low rele : low pir LOW?T _pir ; C:\PBP6\PIR\PIR_1.PBP 00026 lendo_PIR: LABEL?L _lendo_PIR ; C:\PBP6\PIR\PIR_1.PBP 00027 If PIR = 1 then m_pir CMPEQ?TCL _pir, 001h, _m_pir ; C:\PBP6\PIR\PIR_1.PBP 00028 goto lendo_pir GOTO?L _lendo_PIR ; C:\PBP6\PIR\PIR_1.PBP 00030 M_PIR: LABEL?L _m_pir ; C:\PBP6\PIR\PIR_1.PBP 00031 high rele HIGH?T _rele ; C:\PBP6\PIR\PIR_1.PBP 00032 if pir = 1 then m_pir CMPEQ?TCL _pir, 001h, _m_pir ; C:\PBP6\PIR\PIR_1.PBP 00033 pause 200 PAUSE?C 0C8h

Page 42: Edukatika - Automacao e Robotica - V1

[email protected] 42

; C:\PBP6\PIR\PIR_1.PBP 00034 if pir = 0 then N_PIR CMPEQ?TCL _pir, 000h, _N_PIR ; C:\PBP6\PIR\PIR_1.PBP 00035 goto M_PIR GOTO?L _m_pir ; C:\PBP6\PIR\PIR_1.PBP 00037 N_PIR: LABEL?L _N_PIR ; C:\PBP6\PIR\PIR_1.PBP 00038 Low rele LOW?T _rele ; C:\PBP6\PIR\PIR_1.PBP 00039 if pir = 1 then N_pir CMPEQ?TCL _pir, 001h, _N_PIR ; C:\PBP6\PIR\PIR_1.PBP 00040 if pir = 0 then M_pir CMPEQ?TCL _pir, 000h, _m_pir ; C:\PBP6\PIR\PIR_1.PBP 00041 goto inicio GOTO?L _inicio ; C:\PBP6\PIR\PIR_1.PBP 00043 end ; fim do programa END? END

Neste ponto fechamos o ciclo inicial do nosso estudo! O próximo passo será a montagem real

do circuito eletrônico e teste do hardware, a gravação do microcontrolador e prova de

funcionamento.

Próximos passos:

• Conhecendo mais o autor;

• Montagens eletrônicas;

• Montagem do circuito inicial na placa Laboratório;

• Gravadores de PIC, você vai precisar de um!