Upload
vanxuyen
View
214
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
CURSO DE ENGENHARIA DA COMPUTAÇÃO
EVELYN YANINNE RUIZ DIAZ CANDIA
RICARDO MORAES MUNIZ DA SILVA
Interface de Comunicação e Reconfiguração de Microcontrolador
em Campo que utiliza Controle Robótico
Trabalho de Conclusão de Curso
Prof. Mauricio Perretto
Orientador
Curitiba, novembro de 2009.
UNIVERSIDADE POSITIVO
Reitor: Prof. Oriovisto Guimarães
Vice-Reitor: Prof. José Pio Martins
Pró-Reitor de Graduação: Prof. Renato Casagrande
Diretor do Núcleo de Ciências Exatas e Tecnológicas: Prof. Marcos José Tozzi
Coordenador do Curso de Engenharia da Computação: Prof. Edson Pedro Ferlin
TERMO DE APROVAÇÃO
Evelyn Yaninne Ruiz Diaz Candia
Ricardo Moraes Muniz da Silva
Interface de Comunicação e Reconfiguração de Microcontrolador em
Campo que utiliza Controle Robótico
Monografia aprovada como requisito parcial à conclusão do curso de Engenharia da
Computação da Universidade Positivo, pela seguinte banca examinadora:
Prof. Mauricio Perretto (Orientador)
Prof. Ederson Cichaczewski (Membro)
Prof. Edson Pedro Ferlin (Membro)
Curitiba, 14 de Dezembro de 2009.
Agradecimentos
Agradecemos a DEUS, pois foi ele que nos deu forças e nos acompanhou nesta
batalha, sempre nos guiando para o melhor caminho.
Agradecemos aos nossos pais por toda a força, motivação e o apoio para concluir
nossas metas e por nos ensinarem a sermos pessoas de valor. Amamos muito vocês!
Agradecemos também a todos os professores do curso, alguns não estão mais na
universidade, mesmo assim, nos ajudaram muito e nos motivaram enormemente,
sempre conversando, trocando idéias, e apresentando novos desafios a serem vencidos.
Destacamos em especial o nosso Orientador Prof. Mauricio Perretto, por toda ajuda
e orientação no decorrer do curso, Prof. Alessandro Zimmer, que tivemos a
oportunidade de viajar para o Japão nos mostrando um novo mundo de possibilidades
acadêmicas e profissionais.
Evelyn Yaninne Ruiz Diaz Candia
Agradeço por todo o carinho recebido dos meus irmãos, primos, tios e avôs, pois
apesar de ter perdido muitos momentos juntos, sempre senti o calor e a união que tanto
caracteriza a nossa família.
Ao meu melhor amigo Moraes, no fim concluímos juntos este caminho,
compartilhando muitos bons momentos.
A todos os meus amigos tanto do Paraguai como os amigos que conheci em
Curitiba, que tornaram minha vida mais alegre.
Ao Professor Marcelo Mikosz, pois além de professor também foi amigo e sou
muito grata por ter estendido a mão sempre que precisei.
Ricardo Moraes Muniz da Silva
Agradeço a minha melhor amiga Evelyn, companheira de TCC que enfrentou
comigo muitas batalhas, muitas delas dificílimas, mas sempre ao meu lado, e no fim
conseguimos vencê-las.
A todos os meus amigos que me motivaram e apoiaram neste caminho de me tornar
engenheiro da computação, cito em especial o Sexteto Sinistro e a SWZ Team.
A minha família que sempre me apoiou na minha escolha de profissão e no caminho
que decidi trilhar.
Aos meus colegas e amigos da universidade, por toda ajuda e companheirismo.
SUMÁRIO
LISTA DE ABREVIATURAS E SIGLAS .............................................................. 8
LISTA DE FIGURAS ............................................................................................. 10
LISTA DE TABELAS ............................................................................................ 11
RESUMO ................................................................................................................. 12
ABSTRACT ............................................................................................................. 13
CAPÍTULO 1. INTRODUÇÃO ............................................................................. 14
CAPÍTULO 2. ESTADO DA ARTE ..................................................................... 15 2.1. Sistemas Remotos .......................................................................................... 15
2.2. Microcontrolador ........................................................................................... 16
2.3. Microcontroladores PIC ................................................................................. 17
2.3.1. Apresentando o PIC18F452 ........................................................................ 17
2.3.1.1. O diagrama de pinos ................................................................................ 17
2.3.1.2. O Diagrama de Blocos ............................................................................ 18
2.3.1.3. Organização da Memória de Programa .................................................. 19
2.3.1.4. Memória de Dados ................................................................................... 20
2.3.2. Apresentando o PIC18F4550 ...................................................................... 21
2.3.2.1. O diagrama de Pinos ............................................................................... 21
2.3.2.2. O Diagrama de Blocos ............................................................................ 22
2.3.2.3. Organização da Memória de Programa .................................................. 23
2.3.2.4. Memória de Dados ................................................................................... 24
2.4 Memória EEPROM ......................................................................................... 25
2.4.1 Memória 24FC512 ....................................................................................... 25
2.4.2. Diagrama de Pinos ...................................................................................... 25
2.4.3. O Diagrama de Blocos ................................................................................ 25
2.4.4. Organização da Memória de Programa/Endereçamento ............................ 26
2.5. Interface de Comunicação ............................................................................. 26
2.5.1. Características ............................................................................................. 27
2.5.2. Modo de Operação ...................................................................................... 27
2.5.3. Definição dos Pinos e Consumo ................................................................. 27
2.5.3.1: Definição dos Pinos do Módulo de Transmissão .................................... 27
2.5.3.1.1. Consumo de Corrente do Módulo de Transmissão .............................. 27
2.5.3.2: Definição dos Pinos do Módulo de Recepção ......................................... 28
2.5.3.2.1. Consumo de Corrente do Módulo de Recepção ................................... 28
2.5.4. Calibração dos Módulos de Comunicação .................................................. 28
2.5.5. Aplicações ................................................................................................... 28
2.6. Linguagem de Desenvolvimento ................................................................... 28
2.6.1. A Linguagem C ........................................................................................... 28
2.6.2. Linguagem Assembly .................................................................................. 29
2.6.3. Software MPLAB ....................................................................................... 29
2.6.3.1. Arquivo Intel Hex ..................................................................................... 29
2.7. Protocolos de Comunicação ........................................................................... 30
2.7.1. Protocolo SPI .............................................................................................. 30
2.7.2. Protocolo I2C ............................................................................................... 30
2.7.3. Protocolo de gravação ICSP ....................................................................... 30
2.7.3.1. Bits de configuração ................................................................................ 31
2.7.3.2. Registradores de Controle ....................................................................... 32
2.7.3.2.1. Tablat .................................................................................................... 32
2.7.3.2.2. TBLPTR ................................................................................................ 32
2.7.3.3. Modo Gravação ....................................................................................... 32
2.7.3.4. Low Voltage ICSP Programming ............................................................ 32
2.7.3.5. 4-Bits Serial Instruction ........................................................................... 32
2.7.3.6. Pseudo-Comandos ................................................................................... 33
2.7.3.7. Seqüência de Programação ..................................................................... 34
2.7.3.8. Fluxogramas ............................................................................................ 34
CAPÍTULO 3. ESPECIFICAÇÃO DO PROJETO ............................................ 35 3.1. Descrição Geral ............................................................................................ 35
3.2. Especificação de Hardware ........................................................................... 35
3.2.1. Módulo Base ............................................................................................... 35
3.2.2. Módulo Robótico ....................................................................................... 36
3.2.3. Diagrama em blocos do módulo Robótico. ............................................. 37
3.2.4. Diagrama em blocos do circuito do módulo robótico. ........................... 38
3.3. Especificação de Software ............................................................................. 39
3.3.1. Fluxograma do Software no PC .................................................................. 39
3.3.2. Diagrama de Caso de Uso ........................................................................... 40
3.3.3. Tela do Software do PC .............................................................................. 40
3.3.4. Exemplo de Programa a ser decodificado e enviado .................................. 41
3.3.5. Exemplo do Programa decodificado ........................................................... 41
3.3.6. Protocolo de Transmissão ........................................................................... 42
3.3.7. Protocolo ICSP ........................................................................................... 42
3.3.8. Fluxograma de Detecção de obstáculos ...................................................... 42
3.4. Vantagens do Projeto ..................................................................................... 43
3.5. Desvantagens do Projeto ................................................................................ 43
3.6. Tabela de Custos ............................................................................................ 43
3.7. Cronograma de Desenvolvimento ................................................................. 43
CAPÍTULO 4. VALIDAÇÃO E RESULTADOS ................................................ 44 4.1. Validação dos Motores .................................................................................. 44
4.2. Detecção de distância ..................................................................................... 47
4.3. Comunicação ................................................................................................. 47
4.4. Protocolo ICSP .............................................................................................. 48
4.5. Validação do Recebimento e Gravação na Memória ..................................... 49
4.6. Problemas Encontrados .................................................................................. 51
4.6.1 Sensores Ópticos .......................................................................................... 51
4.6.2. Reconhecimento de Comandos para os Motores ........................................ 51
4.6.3. Sincronia das Antenas ................................................................................. 52
CAPÍTULO 5. CONCLUSÃO ............................................................................... 55
CAPÍTULO 6. REFERÊNCIAS ............................................................................ 56
ANEXO A – DIAGRAMAS ESQUEMÁTICOS ................................................. 58
ANEXO B – FLUXOGRAMAS ............................................................................. 63
ANEXO C – CÓDIGO DO PROTOCOLO ICSP ............................................... 65
ANEXO D – TABELA DE CUSTOS .................................................................... 68
ANEXO E – CRONOGRAMA .............................................................................. 70
ANEXO F – ARTIGO .............................. ERRO! INDICADOR NÃO DEFINIDO.
ANEXO G – MANUAL ............................ ERRO! INDICADOR NÃO DEFINIDO.
APÊNDICE A – FORMATO INTEL HEX ................. ERRO! INDICADOR NÃO
DEFINIDO.
LISTA DE ABREVIATURAS E SIGLAS
NCET Núcleo de Ciências Exatas e Tecnológicas
UP Universidade Positivo
ICSP In-circuit Serial Programming
MCU/µC Microcontrolador
E/S Entrada/Saída
USB Universal Serial Bus
MHz Mega Hertz
TV Televisão
BIOS Basic Input/Output System
PIC Peripheral Interface Controller
RISC Reduced Instruction Set Computer
RAM Random Access Memory
EEPROM Electrically-Erasable Programmable Read-Only Memory
PWM Pulse-Width Modulation
A/D Analógico/Digital.
CAN Bus Controller Area Network
I2C Inter-Intergrated Circuit
SPI Serial Peripheral Interface
SDA Serial Data
SCL Serial Clock
MHz Mega Hertz
GHz Giga Hertz
PC Personal Computer
RF Radio Frequency
TX Transmission
RX Receiver
RS-232 Recommended Standard 232
mA Mili Ampere
DC Direct Current
PGD ICSP Programming Data Pin
PGC ICSP Programming Clock Pin
PGM Low Voltage ICSP Programming Enable Pin
LVP Low Volt Programming
+Vdd Power
-Vss Ground
MCLR Master Clear (input)
Vpp Tensão acima de 13 volts.
A Ampere
rpm Rotações Por Minuto
kgf/cm Kilograma Força Por Centímetro Quadrado.
m/s Metro Por Segundo
cm Centímetro
m Metro
lux Luminious Emittance
PDN Power Down
GCC GNU Compiler Collection
GNU Sistema Operacional Baseado em Unix
Unix Sistema Operacional
IDE Integrated Development Environment
Baud Symbols per second or Pulses per second.
PDA Personal Digital Assistant
OTA Over The Air programming
FOTA Firmware Over The Air programming
LISTA DE FIGURAS
Figura 2. 1: Diagrama de pinos DIP do microcontrolador PIC18F452. ......................... 18 Figura 2. 2: Diagrama em blocos do PIC18F452. .......................................................... 18
Figura 2. 3: Organização da Memória do PIC18F452.................................................... 19 Figura 2. 4: Memória de Dados do PIC18F452. ............................................................ 20 Figura 2. 5: Diagrama de pinos DIP do microcontrolador PIC18F4550. ....................... 21 Figura 2. 6: Diagrama em Blocos do PIC18F4550. ....................................................... 22 Figura 2. 7: Organização da Memória do PIC18F4550.................................................. 23
Figura 2. 8: Memória de Dados do PIC18F4550. .......................................................... 24
Figura 2. 9: Diagrama de Pinos da Memória 24FC512. ................................................. 25 Figura 2. 10: Diagrama de Blocos da Memória 24FC512. ............................................. 26 Figura 2. 11: Organização da Memória 24FC512. ......................................................... 26
Figura 2. 12: Módulo Transmissor 315MHz/433MHz. .................................................. 27 Figura 2. 13: Módulo Receptor 315MHz/433MHz. ....................................................... 28
Figura 2. 14: Registrador de Configuração 4 Low (CONFIG4L)................................... 31
Figura 3. 1: Interação entre o computador, que envia a nova configuração para o módulo
robótico microcontrolado. .............................................................................................. 35 Figura 3. 2: Diagrama em blocos do computador com a placa responsável pela
comunicação com o módulo robótico. ............................................................................ 36
Figura 3. 3: Tamanho do pacote de dados. ..................................................................... 36 Figura 3. 4: Comunicação entre os microcontroladores PIC. ......................................... 37
Figura 3. 5: Diagrama em Blocos do Módulo Robótico. ............................................... 37 Figura 3. 6: Diagrama em blocos do circuito do módulo robótico. ................................ 38 Figura 3. 7: Fluxograma do software no PC. .................................................................. 39 Figura 3. 8: Diagrama de Caso de Uso. .......................................................................... 40
Figura 3. 9: Tela do software para PC. ........................................................................... 40 Figura 3. 10: Fluxograma de detecção de obstáculos. .................................................... 42
Figura 4. 1: Interação entre o módulo base e o módulo robótico. .................................. 44 Figura 4. 2: Esquemático do funcionamento do motor no software Proteus. ................. 45 Figura 4. 3: Sistema embarcado do módulo robótico. .................................................... 46 Figura 4. 4: Módulo Robótico. ....................................................................................... 46 Figura 4. 5: Exemplo de envio de um caractere. ............................................................ 49
Figura 4. 6: Programa IC-PROG. ................................................................................... 50 Figura 4. 7: Informações gravadas na memória. ............................................................ 50 Figura 4. 8: Interferência no microcontrolador. ............................................................. 51 Figura 4. 9: Sinal sem interferência. ............................................................................... 52 Figura 4. 10: Módulo base. ............................................................................................. 52
Figura 4. 11: Antenas fora de sincronia. ......................................................................... 53 Figura 4. 12: Antenas sincronizadas. .............................................................................. 54
LISTA DE TABELAS
Tabela 2. 1: Definição dos Pinos do Módulo de Transmissão. ...................................... 27
Tabela 2. 2: Consumo de Corrente do Módulo de Transmissão. ................................... 27 Tabela 2. 3: Definição dos Pinos do Módulo Receptor. ................................................. 28 Tabela 2. 4: Consumo de Corrente do Módulo Receptor. .............................................. 28 Tabela 2. 5: Descrição dos pinos no modo gravação. .................................................... 32 Tabela 2. 6: Instruções Especiais para Execução de Instruções Seriais e ICSP. ............ 33
Tabela 2. 7: Mapeamento de Pseudo Comandos ICSP. ................................................. 33
Tabela 3. 1: Descrição das funcionalidades de cada microcontrolador. ......................... 38 Tabela 3. 2: Detalhes do Pacote a ser Transmitido......................................................... 42 Tabela 4. 1: Modelos de motores avaliados para o projeto. ........................................... 45
Tabela 4. 2: Relação entre iluminação do objeto a ser detectado e distância de detecção
do circuito desenvolvido. ................................................................................................ 47
Tabela 4. 3: Nível de intensidade da luz em diversos ambientes. .................................. 47 Tabela 4. 4: Resultado dos testes de distância máxima de comunicação entre os
módulos. ......................................................................................................................... 48
RESUMO
O presente projeto trata do desenvolvimento de um sistema de configuração remota
de microcontroladores por meio do protocolo ICSP (In-circuit Serial Programming),
com a transmissão dos dados feita via rádio frequência. Para isto é proposta uma
metodologia inovadora, que visa à otimização do tempo e do custo na gravação de
microcontroladores PIC (Peripheral Interface Controller), pois este é feito
remotamente.
Tem-se grande aplicabilidade nas mais diversas áreas como, por exemplo, na
comunicação entre vários módulos robóticos, facultando a alteração da programação
dos mesmos à distância, a fim de realizar tarefas distintas. Pode ser aplicado também no
ambiente educacional, a fim de demonstrar o uso conjunto de diversas tecnologias
embarcadas. Obtém-se desta forma uma maior praticidade, visto que o módulo robótico
que contém o sistema microcontrolado é autônomo e a transferência de dados é feita
sem a necessidade dos kits convencionais de gravação normalmente utilizados.
Este projeto retrata as diferentes tecnologias utilizadas desde o protótipo funcional
chamado de módulo robótico, assim como linguagens, layouts e protocolos
desenvolvidos.
Palavras-Chave: Protocolo ICSP, Microcontrolador, Radio Freqüência, Sistema
Embarcado, Módulo Robótico Autônomo.
ABSTRACT
This project presents the development of a micro-controlled system of remote
configuration through ICSP (In-circuit Serial Programming) protocol, using radio
frequency for data transmission to robots. This innovative methodology aims the
optimization of time and cost to remotely write in microcontrollers PIC (Peripheral
Interface Controller) used in robotics.
This proposal may be used with advantages in applications as communication with
robotic modules, facilitating program upgrades or modification at a distance. It can also
be applied in an educational environment, in order to demonstrate the use of diverse
embedded technologies. Given that the proposed robotic module contains a
microprocessor reprogrammable at a distance, it becomes independent and the
transference of data may be made without the conventional necessity of writing kits
normally used.
This project depicts the different technologies used since the working prototype
called a robotic module, as well as languages, layouts and protocols developed.
Key Words: ICSP Protocol, Microcontroller, Radio Frequency, Embedded
System, Autonomous Robotic Module.
14
CAPÍTULO 1. INTRODUÇÃO
Cada vez mais os sistemas embarcados vêm sendo utilizados no desenvolvimento de
inúmeras aplicações. Os sistemas embarcados são circuitos eletrônicos, normalmente
digitais que utilizam microcontroladores, desenvolvidos para executar ações que
necessitem de algum tipo de processamento. Geralmente, estes sistemas também são
desenvolvidos com uma interface com o usuário, permitindo, desta forma, a entrada de
informações e o acompanhamento da tarefa executada.
Uma das grandes áreas de atuação dos sistemas embarcados é na robótica, estando
presentes não apenas nos robôs de grande porte utilizados na indústria, mas também
estão presentes no desenvolvimento de robôs de pequeno porte, que podem ser usados
em tarefas cotidianas, como por Rueda (2005). Quanto a aplicações profissionais podem
ser citados, entre outros, o uso de robôs para a limpeza de túneis e na detecção de
explosivos, utilizados por empresas e pela polícia (BROOKS, 2002).
O desenvolvimento de sistemas embarcados é feito usualmente em laboratório,
seguido por extensivos protocolos de teste e avaliação do firmware do microcontrolador
que será responsável por executar o processamento dos sinais e pelo controle dos
atuadores. Tal procedimento deve ser seguido, pois a partir do momento que o sistema
embarcado é comercializado não é possível efetuar nenhuma alteração deste. Caso o
código desenvolvido contenha erros, os produtos deverão retornar a empresa para a
correção do problema.
Um método que vem sendo utilizado em larga escala é o ICSP (In-circuit Serial
Programming) que permite a gravação do microcontrolador em campo. Este sistema
diminui o esforço de retirada física do microcontrolador, facilitando a correção de erros,
porém ainda é necessário que o técnico se encaminhe à localização do sistema para
efetuar sua correção (PEREIRA, 2002).
Este projeto tem como principal característica a união destes métodos, ou seja, a
combinação do ICSP com sistemas embarcados por meio da introdução de um sistema
de gravação remoto, eliminando a necessidade de remoção do microcontrolador do
circuito e facilitando a correção de eventuais problemas.
15
CAPÍTULO 2. ESTADO DA ARTE
Atualmente na literatura não foram encontrados trabalhos em desenvolvimento que
realizem a regravação a distância de um programa em um sistema embarcado com
microcontroladores PIC utilizando o protocolo de gravação ICSP. Por este motivo, na
seqüência serão apresentados alguns trabalhos que servem de base de referência para o
estudo atualmente em curso.
Segundo (KAMIMURA, 2005), módulos robóticos são peças individuais que se
deslocam numa determinada área com um objetivo específico sem a intervenção
humana. Estes módulos têm a capacidade futuramente de comunicar-se entre si para
realizar um determinado objetivo.
Uma comunicação segura é essencial para o funcionamento de um sistema
embarcado. Neste ambiente, deve haver ligação fundamental entre a eficiência e a
qualidade da rede. Uma atenção particular deve ser dada aos protocolos, que
determinam muito o comportamento da rede. E finalmente, métodos de detecção do erro
que são necessários para construir um sistema de comunicação de confiança
(UPENDER, 1994).
Os sistemas robóticos móveis autônomos têm conquistado espaço tanto nas
universidades quanto na indústria, devido à intensa modernização que os sistemas de
automação industriais vêm sofrendo nos últimos anos. Entre os fatores que impulsionam
esta modernização pode-se incluir a competitividade crescente, a rápida alteração dos
produtos oferecidos ao mercado e o avanço tecnológico, entre outros, que visam
aumentar a produtividade, a qualidade e a confiabilidade dos produtos. Além da área de
manufatura e transporte de materiais, outras aplicações destes sistemas incluem o
trabalho em ambientes perigosos ou insalubres e a exploração espacial (COSTA, 2003).
2.1. Sistemas Remotos
Sistemas remotos, independente de sua função, são largamente utilizados nos dias
atuais nas mais diversas áreas e aplicações, mesmo com todo o avanço cientifico e
tecnológico da indústria, os sistemas autônomos de acesso remoto tem suas limitações,
tanto tecnológica como financeira.
Como sistema equivalente ao projeto proposto pode ser mencionado o sistema OTA
(Over The Air programming), porém este método é utilizado em microcontroladores de
maior capacidade de processamento e para atualização de software de celulares e PDAs
(Personal Digital Assistant).
Quando OTA é usado para atualizar o firmware de um telefone operacional, é às
vezes chamado de FOTA (Firmware Over The Air). Para definições de serviço, a
tecnologia é muitas vezes conhecido como configuração de dispositivos.
16
Se o telefone móvel tem capacidade FOTA, pode-se baixar a atualização do
firmware diretamente do seu provedor de serviço de telefonia. O processo normalmente
leva entre 3 e 10 minutos, dependendo do tamanho do arquivo de atualização e da
velocidade de sua conexão sem fio. (WIKIPEDIA, 2009)
Os sistemas remotos são comumente desenvolvidos utilizando um microcontrolador.
Um microcontrolador é um computador em um chip, contendo um processador,
memória e funções de entrada/saída (PEREIRA, 2002). Na seqüência será detalhado
este elemento que é de suma importância.
2.2. Microcontrolador
Um microcontrolador (também denominado MCU ou µC) é um microprocessador
que enfatiza a alta integração, em contraste com os microprocessadores de uso geral (do
tipo usado em computadores pessoais). Além dos componentes lógicos e aritméticos
usuais de um microprocessador de uso geral, o microcontrolador integra elementos
adicionais tais como memória para armazenamento de dados ou programas, dispositivos
periféricos e interfaces de E/S que podem ir de um simples pino digital do componente
a uma interface USB (Universal Serial Bus) ou Ethernet.
Com freqüências de clock de poucos MHz ou ainda mais baixas,
microcontroladores são considerados lentos se comparados aos microprocessadores
modernos, mas isso é perfeitamente adequado para aplicações típicas. Eles consomem
relativamente pouca energia (miliwatts), e geralmente possuem a capacidade de
"hibernar" enquanto aguardam que aconteça algum evento interessante provocado por
um periférico, tal como o pressionar de um botão, que os colocam novamente em
atividade. O consumo de energia enquanto estão "hibernando" pode ser de nanowatts,
tornando-os ideais para aplicações de baixa energia e que economizem bateria
(HORENSTEIN, 2006).
De forma oposta aos microprocessadores, onde se superdimensiona ao máximo
tendo como limite o preço que o usuário deseja investir, a escolha do microcontrolador
é feita pelo projetista do equipamento. Existem duas linhas de pesquisa paralelas, mas
opostas. Uma criando microcontroladores mais capazes, para atender produtos de maior
complexidade tecnológica como os novos celulares ou receptores de TV digital e outra
para criar microcontroladores mais simples e baratos, para aplicações elementares
(como um chaveiro que emite sons).
De forma diferente da programação para microprocessadores, que em geral contam
com um sistema operacional e uma BIOS (Basic Input/Output System), o programador
ou projetista que desenvolve sistemas com microcontroladores tem que lidar com uma
gama muito grande de desafios, fazendo muitas vezes todo o processo construtivo do
aparelho: BIOS, firmware e circuitos (SEDRA, 2000).
17
2.3. Microcontroladores PIC
Os microcontroladores PIC são uma família de dispositivos fabricados pela
Microchip. Utilizando uma arquitetura RISC, com freqüências de clock de até 40MHz
até 2048K word de memória de programa e até 3968 bytes de memória RAM. Além
disso, podem ser encontrados com diversos periféricos internos, como: até quatro
temporizadores/contadores, memória EEPROM interna, gerador / comparador /
amostrador PWM, conversores A/D de até 12 bits, interface de barramento CAN,
I2C,SPI, entre outros. Existem basicamente três famílias de PICs diferenciadas pelo
tamanho da palavra de memória de programa: 12,14 e 16 Bits. Todos estes dispositivos
possuem um barramento interno de dados de oito bits.
Outra característica importante da arquitetura PIC reside na semelhança e
compatibilidade entre os diversos chips. Isto facilita grandemente a migração de um
MCU para outro, pois os princípios básicos e grande parte dos registradores não diferem
entre si (HORENSTEIN, 2006).
2.3.1. Apresentando o PIC18F452
O microprocessador reúne, em um circuito integrado, todos os elementos de uma
CPU RISC de alto desempenho, sendo fabricados em encapsulamentos PLCC, TQFP,
DIP ou SOIC. Algumas caracteristicas (Datasheet PIC18F452, Microchip Technology
Inc., 2006):
- Frequencia de Operação: 40 MHz;
- Memória de Programa (instruções): 16384;
- Memória de Dados (bytes): 32K;
- Portas de E/S: Portas A, B, C, D, E;
- Total de Pinos de E/S: 34;
- Total de canais de captura de entrada: 2;
- Comunicação Serial – Enhanced UART: 2;
- Comunicação Serial – SPI (3-wire/4-wire): 3;
- Comunicação Serial – I2C: 2;
- Comunicação Paralela (PMP/PSP): Sim;
- Streaming Parallel Port (SPP) for USB streaming transfers: Não;
- Packages: PLCC, TQFP, DIP ou SOIC;
- Set (Instruções): 75;
- Timers: 4.
2.3.1.1. O diagrama de pinos
Este diagrama nos oferece os nomes de todos os pinos contidos neste componente.
Pode-se observar o diagrama na Figura 2.1:
18
Figura 2. 1: Diagrama de pinos DIP do microcontrolador PIC18F452.
Fonte: Datasheet PIC18F452, Microchip Technology Inc., 2006.
2.3.1.2. O Diagrama de Blocos
Neste diagrama podemos verificar como cada parte deste componente funcionará.
Cada bloco contém uma função executada pelo microcontrolador PIC18F452. Pode-se
observar no diagrama da figura 2.2:
Figura 2. 2: Diagrama em blocos do PIC18F452.
Fonte: Datasheet PIC18F452, Microchip Technology Inc., 2006.
19
2.3.1.3. Organização da Memória de Programa
A memória de programa deste componente se comporta da seguinte forma (Figura
2.3):
Figura 2. 3: Organização da Memória do PIC18F452.
Fonte: Datasheet PIC18F452, Microchip Technology Inc., 2006.
A memória é onde o microprocessador procurará as instruções a executar. O espaço
da memória de programa deste microprocessador é organizado em blocos de
endereçamento de palavras (Fonte: Datasheet PIC18F452, Microchip Technology Inc.,
2006).
20
2.3.1.4. Memória de Dados
A memória de dados é onde o microcontrolador lê e escreve dados durante a
operação normal. Geralmente é do tipo volátil, embora memórias não-voláteis possam
ser utilizadas (Datasheet PIC18F452, Microchip Technology Inc., 2006). Observe a
estrutura de memória de dados do PIC18F452, na figura 2.4.
Figura 2. 4: Memória de Dados do PIC18F452.
Fonte: Datasheet PIC18F452, Microchip Technology Inc., 2006.
21
2.3.2. Apresentando o PIC18F4550
O microprocessador reúne, em um circuito integrado, todos os elementos de uma
CPU RISC de alto desempenho, sendo fabricados em encapsulamentos PLCC, TQFP,
DIP ou SOIC. Algumas caracteristicas (Datasheet PIC18F4550, Microchip Technology
Inc., 2006):
- Frequencia de Operação: 48 MHz;
- Memória de Programa (instruções): 16384;
- Memória de Dados (bytes): 2048;
- Portas de E/S: Portas A, B, C, D, E;
- Total de Pinos de E/S: 20;
- Total de canais de captura de entrada: 1;
- Comunicação Serial – Enhanced UART: 2;
- Comunicação Serial – SPI (3-wire/4-wire): 3;
- Comunicação Serial – I2C: 2;
- Comunicação Paralela (PMP/PSP): Não;
- Streaming Parallel Port (SPP) for USB streaming transfers: Sim;
- Packages: PLCC, TQFP, DIP ou SOIC;
- Set (Instruções): 75/ 83 com Set de Instruções Estendida Habilitado;
- Timers: 4.
2.3.2.1. O diagrama de Pinos
Este diagrama nos oferece os nomes de todos os pinos contidos neste componente.
Pode-se observar o diagrama na Figura 2.5:
Figura 2. 5: Diagrama de pinos DIP do microcontrolador PIC18F4550.
Fonte: Datasheet PIC18F4550, Microchip Technology Inc., 2006.
22
2.3.2.2. O Diagrama de Blocos
Neste diagrama podemos verificar como cada parte deste componente funcionará.
Cada bloco contém uma função executada pelo microcontrolador PIC18F4550. Pode-se
observar no diagrama da figura 2.6:
Figura 2. 6: Diagrama em Blocos do PIC18F4550.
Fonte: Datasheet PIC18F4550, Microchip Technology Inc., 2006.
23
2.3.2.3. Organização da Memória de Programa
A memória de programa deste componente se comporta da seguinte forma (Figura
2.7):
Figura 2. 7: Organização da Memória do PIC18F4550.
Fonte: Datasheet PIC18F4550, Microchip Technology Inc., 2006.
24
2.3.2.4. Memória de Dados
A memória de dados é onde o microcontrolador lê e escreve dados durante a
operação normal. Geralmente é do tipo volátil, embora memórias não-voláteis possam
ser utilizadas (Datasheet PIC18F4550, Microchip Technology Inc., 2006). Observe-se
na figura 2.8 a estrutura de memória de dados do PIC18F4550.
Figura 2. 8: Memória de Dados do PIC18F4550.
Fonte: Datasheet PIC18F4550, Microchip Technology Inc., 2006.
25
2.4 Memória EEPROM
Uma EEPROM (de Electrically-Erasable Programmable Read-Only Memory) é um
chip de armazenamento não-volátil usado em computadores e outros aparelhos.
A memória EEPROM pode ser programada e apagada várias vezes, eletricamente, e
pode ser lida um numero ilimitado de vezes. (Datasheet 24FC512, Microchip
Technology Inc., 2004.)
2.4.1 Memória 24FC512
O Microchip Technology Inc. 24AA512/24LC512 / 24FC512 (24XX512) é um (512
KBit) Serial EEPROM, capaz de funcionar através de uma ampla gama de tensão (1,8 V
a 5,5V).
Foi desenvolvido para aplicações de baixa potência tais como comunicação pessoal
e aquisição de dados. Este dispositivo também tem uma capacidade de gravação de até
128 bytes de dados, sendo capaz de ler tanto de forma aleatória, como seqüencial com
um limite de 512Kbytes.
Linhas de endereço funcional permitem até oito dispositivos no mesmo barramento,
para até 4 Mbits de espaço de endereçamento. Este dispositivo tem em packages
DIP, DIP, DFN e TSSOP. (Datasheet 24FC512, Microchip Technology Inc., 2004.)
2.4.2. Diagrama de Pinos
Este diagrama nos oferece os nomes de todos os pinos contidos neste componente.
Pode-se observar o diagrama na Figura 2.5:
Figura 2. 9: Diagrama de Pinos da Memória 24FC512.
Fonte: Datasheet 24FC512, Microchip Technology Inc., 2004.
2.4.3. O Diagrama de Blocos
Neste diagrama pode-se verificar como cada parte deste componente funcionará.
Cada bloco contém uma função executada pela memória 24FC512. Pode-se observar no
diagrama da figura 2.10:
26
Figura 2. 10: Diagrama de Blocos da Memória 24FC512.
Fonte: Datasheet 24FC512, Microchip Technology Inc., 2004.
2.4.4. Organização da Memória de Programa/Endereçamento
A memória de programa deste componente se comporta da seguinte forma (Figura
2.11):
Figura 2. 11: Organização da Memória 24FC512.
Fonte: Datasheet 24FC512, Microchip Technology Inc., 2004.
2.5. Interface de Comunicação
Para a comunicação entre o módulo base e o módulo robótico, foram utilizados um
transmissor de RF 433MHz e de 315MHz e um receptor de RF 433MHz e 315MHz.
São utilizadas duas frequências diferentes, devido a facilidade de operação dos
mesmos, para evitar conflitos de envio e recebimento de informações simultâneas e
também devido a um pino de Power Down (PDN) que permite colocar o módulo em um
estado de baixo consumo, ideal para alimentação a baterias.
27
2.5.1. Características
A seguir são apresentadas as caracterísicas dos módulos de comunicação, da marca
TATO. (Datasheet TXMRXM, TATO Equipamentos Eletrônicos.)
• Alcance 150 metros com linha de visão;
• Taxas de transferência alta (2400 ~ 19200 Bauds dependendo do controlador);
• Conector padrão barra de pinos SIP, ideal para testes em protoboard;
• Compatível com todos os BASIC Step e outros microcontroladores;
• Muito fácil de utilizar, apenas um comando SEROUT é necessário;
• Modo de economia de bateria (Power Down).
2.5.2. Modo de Operação
Todo campo de RF possui uma largura de onda que é proporcional ao inverso de
sua freqüência. Os módulos de Tato utilizam uma freqüência de 433,92 MHz, o que
corresponde a uma largura de onda de 0,69 metros. A frequência de 433MHz
classificada na faixa de UHF que é definida de 300MHz ~ 3GHz. (Datasheet
TXMRXM, TATO Equipamentos Eletrônicos.).
2.5.3. Definição dos Pinos e Consumo
Os módulos de comunicação estão divididos em módulo de transmissão e módulo
de recepção como descrito a seguir:
2.5.3.1: Definição dos Pinos do Módulo de Transmissão
Figura 2. 12: Módulo Transmissor 315MHz/433MHz.
Fonte: Datasheet TXMRXM, TATO Equipamentos Eletrônicos.
Tabela 2. 1: Definição dos Pinos do Módulo de Transmissão.
Pino Nome Função
1 PDN Indicador do nível de sinal recebido
2 DATA Entrada de Dados
3 5V Entrada de alimentação
4 GND Terra
Fonte: Datasheet TXMRXM, TATO Equipamentos Eletrônicos.
2.5.3.1.1. Consumo de Corrente do Módulo de Transmissão
Tabela 2. 2: Consumo de Corrente do Módulo de Transmissão.
Com entrada em nível alto 5,1mA
Com entrada em nível baixo 1,8mA
Modo Power Down. 5uA
Fonte: Datasheet TXMRXM, TATO Equipamentos Eletrônicos.
28
2.5.3.2: Definição dos Pinos do Módulo de Recepção
Figura 2. 13: Módulo Receptor 315MHz/433MHz.
Fonte: Datasheet TXMRXM, TATO Equipamentos Eletrônicos.
Tabela 2. 3: Definição dos Pinos do Módulo Receptor.
Pino Nome Função
1 RSSI Indicador do nível de sinal recebido
2 PDN Power Down, ativo em 0, deixe em aberto para função normal
3 DATA Saída de dados
4 5V Entrada de alimentação
5 GND Terra
Fonte: Datasheet TXMRXM, TATO Equipamentos Eletrônicos.
2.5.3.2.1. Consumo de Corrente do Módulo de Recepção
Tabela 2. 4: Consumo de Corrente do Módulo Receptor.
Em Operação 5,2 mA
Em Power Down 28uA
Fonte: Datasheet TXMRXM, TATO Equipamentos Eletrônicos.
2.5.4. Calibração dos Módulos de Comunicação
Ao iniciar a comunicação entre os módulos, um pulso de sincronismo deve ser
enviado para restabelecer o link de RF entre os módulos. Uma série de caracteres pode
fazer este sincronismo, mas um pulso em nível alto é mais eficiente. (Datasheet
TXMRXM, TATO Equipamentos Eletrônicos).
2.5.5. Aplicações
• Sensores sem fio;
• Controle remoto de robôs;
• Aquisição de dados sem fio.
2.6. Linguagem de Desenvolvimento
2.6.1. A Linguagem C
A linguagem C é uma linguagem imperativa e procedural de alto nível, para
implementação de sistemas. Seus pontos de design foram para ele ser compilado,
fornecendo acesso de baixo nível à memória e baixos requerimentos do hardware.
Além disso, teve-se o uso do software MPLAB para o desenvolvimento dos
programas utilizados nos microcontroladores.
29
2.6.2. Linguagem Assembly
A Linguagem Assembly é uma família de linguagens de baixo nível
para programação de computadores, microprocessadores, microcontroladores, e
outros (geralmente) de circuitos integrados. Eles implementam uma representação
simbólica da máquina de códigos numéricos e outras constantes necessárias para o
programa de uma arquitetura da CPU em particular. Esta representação é normalmente
definida pelo fabricante do hardware, e baseia-se em abreviaturas (chamados
mnemônicos) que ajudam o programador a lembrar de instruções individuais, registros,
etc. A linguagem Assembly é, portanto um conjunto de códigos específicos para uma
determinada arquitetura de computador físico ou virtual (ao contrário da maioria
linguagens de alto nível, que são geralmente portáteis).
Um programa utilitário chamado assembler é utilizado para traduzir a montagem de
instruções na linguagem em código do computador de destino da máquina. A montadora
realiza uma tradução isomórfica, um mapeamento, das declarações mnemônicas em
instruções de máquina e dados. Isto está em contraste com linguagens de alto nível, em
que uma única instrução geralmente resulta em muitas instruções de máquina. (Intel®
64 and IA-32 Architectures Software Developer’s Manual – Volume 1: Basic
Architecture).
2.6.3. Software MPLAB
MPLAB Integrated Development Environment (IDE) é um software livre,
integrado a base GCC (GNU Compiler Collection), têm ferramentas para o
desenvolvimento de aplicações embarcadas empregando Microcontroladores PIC da
Microchip e microcontroladores dsPIC.
O IDE MPLAB funciona como uma aplicação 32-bits no Microsoft Windows, e
incluem vários outros componentes de software para desenvolvimento de aplicativos,
simulação de hardware e de depuração. MPLAB IDE também serve como interface
gráfica unificada sendo compatível a softwares de terceiros e ferramentas de
desenvolvimento de hardware.
Tanto a linguagem Assembly como a linguagem de programação C podem ser
usadas com MPLAB IDE. Outras linguagens podem ser suportadas por meio do uso de
programas de terceiros.
MPLAB IDE não suporta ao Linux, Unix ou Macintosh com sistemas operacionais.
(MPLAB USER’S GUIDE, 2009).
2.6.3.1. Arquivo Intel Hex
Após o desenvolvimento do programa no ambiente MPLAB, independente da
linguagem utilizada, no momento de gravação deste software para o microcontrolador, o
MPLAB faz uma codificação do arquivo a ser enviado, para o formato Intel Hex.
O formato Intel Hex é o formato padrão para microcontroladores, sendo que o
microcontrolador reconhecerá as instruções a serem executadas. Mais detalhes podem
ser vistos no Apêndice A – Intel Hex.
30
2.7. Protocolos de Comunicação
Para a comunicação entre os microcontroladores e a memória para gerenciamento
de informações e regravação de novos dados foi utilizado protocolos de comunicação
desenvolvido em linguagem C que é a linguagem compativel com a programação de um
microcontrolador.
Entre os protocolos compatíveis e utilizados atualmente nos microcontroladores
serão usados os Protocolos I2C e SPI, protocolos padrões de comunicação entre
microcontroladores e o Protocolo ICSP responsável pela regravação de dados na
memória de um microcontrolador (PEREIRA, 2002).
2.7.1. Protocolo SPI
A tecnologia de comunicação SPI (Serial Peripheral Interface) foi desenvolvida
pela Motorola para a linha de processadores da família MC68K. O SPI é um protocolo
síncrono, opera no modo full duplex e é composto por quatro sinais.
O protocolo SPI não permite o endereçamento. A comunicação só pode ser feita
entre dois pontos, sendo um deles o Master e outro o Slave. É feita por três vias:
• Clock: trata-se da via de clock, que pode ser entrada (Slave) ou saída (Master);
• Data in: trata-se da entrada de dados, ou seja, a via de recepção;
• Data out: trata-se da saída de dados, ou seja, a via de transmissão.
2.7.2. Protocolo I2C
I²C (Inter-Intergrated Circuit) é um barramento serial multi-mestre desenvolvido
pela Philips que é usado para conectar periféricos de baixa velocidade a uma placa-
mãe, a um sistema embarcado ou a um telefone celular.
O I²C utiliza apenas duas linhas bidirecionais de dreno aberto, Dados Seriais (Serial
Data - SDA) e Clock Serial (Serial Clock - SCL). Este protocolo especifica dois sinais
de comunicação, um com o sinal de clock (gerado pelo mestre) e outro de dados,
bidirecional.
2.7.3. Protocolo de gravação ICSP
ICSP possibilita uma maneira conveniente de programar microcontroladores PIC
sem remover o microcontrolador da placa de desenvolvimento ou de produção. Não
havendo a necessidade de sockets de programação para pacotes de chips que
normalmente tem um alto custo. (ICSP GUIDE, 2003)
Cinco conectores são necessários para programar um PIC:
- Sinal PGC e PGD (Clock e Data)
Os dados (PGD) e o pulso de disparo (clock) (PGC) transmitem dados ao
microcontrolador PIC. Os primeiros dados são emitidos em alta ou baixa tensão. Isto
possibilita a leitura e gravação no firmware do microcontrolador PIC.
PGD é também a linha dirigida pelo microcontrolador PIC durante sua verificação,
isto é, é um pino bidirecional.
31
- Sinal PGM (Sinal de programação de baixa tensão)
A finalidade deste pino é manter PGM baixo (baixa tensão, com nível lógico zero)
assim o microcontrolador não entra na modalidade de LVP (Low Volt Programming).
- +Vdd/-Vss
Estes são respectivamente o Power e o Ground (Terra), pinos padrões nos
microcontroladores. Responsáveis pela alimentação do microcontrolador PCI.
- MCLR/Vpp
Este é o pino de tensão de programação. Um PIC entra em modo de programação
quando a tensão esta acima de 13 volts.
2.7.3.1. Bits de configuração
A configuração de bits pode ser programada em 0, ou deixar de ser programada em
1, para selecionar vários dispositivos configurados.
Estes bits são mapeados começando na memória do programa no endereço
(300000h-3FFFFFh), e só podem ser acessadas utilizando a tabela de escrita e leitura.
Os registradores de configuração são escritos um byte por vez.
O registrador utilizado para entrar no modo gravação ICSP é o CONFIG4L, com
endereçamento 300006h, e funciona segundo a figura abaixo. (In-Circuit Serial
Programming (ICSP) Guide.)
Figura 2. 14: Registrador de Configuração 4 Low (CONFIG4L).
Fonte: In-Circuit Serial Programming (ICSP) Guide.
32
2.7.3.2. Registradores de Controle
Vários registradores de controle são utilizados em conjunto com as instruções de
TBLRD( leitura) e TBLWT (escrita), os mais importantes para a gravação são:
2.7.3.2.1. Tablat
O Tablat (Table Latch Register) é um registrador de 8 bits mapeado no espaço SFR
(Special Function Register). O Tablat é utilizado para manter os 8 bits de dados durante
a transferência entre a memória de programa e a memória de dados.
2.7.3.2.2. TBLPTR
A tabela de ponteiros (TBLPTR) endereça um byte dentro do programa de memória,
é utilizada pelas instruções TBLRD e TBLWT em um dos quatro modos de operação
como mostrada na tabela 2.6.
2.7.3.3. Modo Gravação
Para entrar no modo gravação, os pinos devem ser configurados da maneira a seguir:
~ MCLR/VPP = H, RB6 e RB7= 0v. PGM (RB5) = L
Tabela 2. 5: Descrição dos pinos no modo gravação.
Nome da
Pinagem
Durante a Programação
Pino Tipo Descrição
~MCLR/VPP VPP P Programming Power
VSS VDD P Power Supply
VDD VSS P Ground
RB6 RB6 I Serial Clock
RB7 RB7 I/O Serial Data
Legenda: I= Input, O= Output, P= Power.
Fonte: In-Circuit Serial Programming (ICSP) Guide.
2.7.3.4. Low Voltage ICSP Programming
O bit LVP (Low Voltage programming). Habilita o registrador CONFIG4L. Este
tipo de configuração permite ao microcontrolador ser programado via ICSP utilizando o
VDD (4,5 a 5,5V).
2.7.3.5. 4-Bits Serial Instruction
Um conjunto de instruções de 4 bits são fornecidos para o modo ICSP. As instruções
mais utilizadas podem ser executadas mais rapidamente
O opcode de 4 bits é deslocado enquanto a instrução previamente buscada é
executada.
Os 4 bits de instrução contém os 4 bits menos significativos do opcode os outros 12
bits são todos zeros. Os 12 primeiros bits são considerados por default instruções
especiais.
33
Tabela 2. 6: Instruções Especiais para Execução de Instruções Seriais e ICSP.
Mnemonic,
Operands
Description Cycles 4-bit
Opcode
NOP No Operation (Shift in 16-bit instrucion) 1 0000
TBLRD * Table Read (no change to TBLPTR) 2 1000
TBLRD *+ Table Read (post-increment TBLPTR) 2 1001
TBLRD *- Table Read (post-decrement TBPLTR) 2 1010
TBLRD +* Table Read (pre-increment TBLPTR) 2 1011
TBLWT * Table Write(no change to TBLPTR) 2 1100
TBLWT *+ Table Write (post-increment TBLPTR) 2 1101
TBLWT *- Table Write (post-decrement TBPLTR) 2 1110
TBLWT +* Table Write (no change to TBLPTR) 2 1111
Fonte: In-Circuit Serial Programming (ICSP) Guide.
2.7.3.6. Pseudo-Comandos
Os pseudo-comandos são utilizados uma vez que as instruções são carregadas em
um registrador de deslocamento e o dispositivo espera por um comando a ser recebido.
Na tabela 2.7 é descrito como implementar os pseudo-comandos utilizando
instruções de máquina.
Tabela 2. 7: Mapeamento de Pseudo Comandos ICSP.
ICSP Command Golden Gate Instrunctions
Load Configuration
MOVLW #Address 1
MOVWF TBPLTR
MOVLW #Address 2
MOVWF TBLPTRH
MOVLW #Address 3
MOVWF TBLPTRU
Load
Data
Not needed. Data encoded in 4-
bit TBLWT instruction sequence.
Read Data TBLRD Instruction
Increment Address Not needed.Data encoded in 4-
bit TBLWT instruction sequence.
Load Adderess MOVLW #Addr_Low
MOVWF TBPTRL
MOVLW #Addr_High
34
MOVWF TBLPTRH
MOVLW #Addr_upper
MOVWF TBLPRU
RESET Address
MOVLW #Data
MOVWF TBLPTRH
MOVWF TBLPTRU
MOVWF TBLPTRL
Begin Programming TBLWT
End Programming Not Needed.Programming Will
cease at the end of TBLWT
execution.
Fonte: In-Circuit Serial Programming (ICSP) Guide.
2.7.3.7. Seqüência de Programação
A programação é realizada executando a instrução TBLWT. No modo ICSP, esta
seqüência de instruções inclui 16 bits de dados deslocados dentro de um buffer de dados
e logo gravado no Word location endereçado pelo TBLPTR.
Os 16 bits são deslocados dentro do TABLAT e nos buffers dos registradores. O
TBLPTR aponta à palavra que será programada. (In-Circuit Serial Programming (ICSP)
Guide.)
Após habilitar o modo de gravação, é seguida uma seqüência de instruções
conforme o algoritmo abaixo:
1. Setar o TLBTR com o primeiro endereço a ser programado (byte par ou impar);
2. Deslocar em uma instrução 4-bit TBLWT;
3. 16 bits de dados são deslocados para programação tanto para o byte mais
significativo e menos significativo do primeiro programa alocado;
4. Executar a instrução TBLWT para o programa anteriormente alocado;
5. Verificar o byte mais significativo (endereço ímpar) executando a instrução
TLBRD*- (pós-decremento). (TBLPTR aponta ao endereço ímpar).
2.7.3.8. Fluxogramas
No ANEXO B são apresentados os fluxogramas de Gravação ICSP e Recebimento
e Gravação na Memória do Módulo Robótico.
35
CAPÍTULO 3. ESPECIFICAÇÃO DO PROJETO
3.1. Descrição Geral
Este projeto foi dividido em dois subsistemas. O primeiro, chamado de módulo base,
é composto por um programa e um circuito eletrônico interligado a um computador
destinados a receber o novo firmware e transmiti-lo para o sistema embarcado.
O segundo subsistema é composto por um módulo robótico que receberá os dados
transmitidos pelo módulo base, enviará dados de posicionamento e do ambiente para o
computador e movimentará o robô.
Na figura 3.1, é apresentado como o sistema se comporta.
Figura 3. 1: Interação entre o computador, que envia a nova configuração para o
módulo robótico microcontrolado.
Na seqüência, será apresentado individualmente e com maior detalhamento, cada um
dos módulos contidos no projeto.
3.2. Especificação de Hardware
Nesta etapa serão especificados todos os componentes eletrônicos utilizados para o
desenvolvimento deste projeto
3.2.1. Módulo Base
O módulo base se comunica com o PC por meio de uma conexão USB, recebendo e
enviando os dados segundo protocolo próprio, pré-especificado e apresentado na
seqüência. Este protocolo é utilizado para separar dados de comunicação normal a
serem transmitidos e a transmissão de um novo programa, a ser gravado no
microcontrolador do robô.
Para se comunicar com o módulo robótico, o módulo base contém um sistema de RF,
responsável por retransmitir todos os dados recebidos pela interface USB para o módulo
robótico. Da mesma forma, todos os dados recebidos do módulo robótico por meio do
PC /
Módulo Base
Módulo
Robótico
Comunicação RF
36
sistema RF são retransmitidos ao computador por meio da interface USB. Na figura 3.2,
é apresentado um diagrama em blocos do módulo base.
Figura 3. 2: Diagrama em blocos do computador com a placa responsável pela
comunicação com o módulo robótico.
O dado recebido pelo módulo será enviado à memória EEPROM para realizar o teste
de consistência, uma vez verificado o dado, este será gravado no segundo PIC.
Este teste de consistência é feito antes da sobreposição de dados e funciona da
seguinte forma: Antes da transmissão o arquivo é dividido em vários pacotes. Cada
pacote tem uma seqüência inicial de bytes (Figura 3.3). O primeiro byte determina se o
pacote é um dado ou programa e, o segundo byte representa a ordem seqüencial do
pacote transmitido. No final da transmissão verifica-se se todos os bytes foram
recebidos. Sendo assim é possível determinar se o arquivo está ou não corrompido.
Como os dados são recebidos via RF, somente após o recebimento de todos os
pacotes, é realizado o teste de consistência, visando à integridade das informações:
Figura 3. 3: Tamanho do pacote de dados.
- Tamanho Total do pacote: 18 bytes.
- Estrutura do pacote: Primeiro byte: tipo de pacote (dado ou programa).
Segundo byte: ordem do pacote.
- Consistência do Pacote: Divisão dos bytes em pacotes para segurança na
transmissão de informações.
3.2.2. Módulo Robótico
O módulo robótico é constituído de dois microcontroladores trabalhando em
paralelo. O primeiro microcontrolador tem a função de realizar o controle robótico,
sendo que o objetivo inicial deste módulo é a detecção e desvio de obstáculos. Este
objetivo pode ser alterado a qualquer momento via comandos da base, sem a
necessidade de uma regravação do programa.
PIC18F4550Módulo RF
433 MHz
SPIUSBComputador
37
O segundo microcontrolador tem o objetivo de controlar a comunicação entre o
controlador do robô e o módulo base. Atua como um intermediário na comunicação,
verificando se o dado transmitido é uma informação que deverá ser encaminhada ao
controlador do robô ou se é uma informação de um novo programa a ser gravado no
controlador. No primeiro caso, o dado é transmitido de forma transparente para o
módulo robótico. No caso do dado transmitido ser um novo programa, este é
armazenado até o final da transmissão, para então ser gravado no microcontrolador
através do protocolo ICSP.
Na figura 3.4, é apresentado um esquema da ligação entre os dois microcontroladores.
Figura 3. 4: Comunicação entre os microcontroladores PIC.
Na figura 3.4, o módulo receptor é responsável por receber as informações da base e
encaminhá-las via serial RS-232 ou ICSP, dependendo da informação.
3.2.3. Diagrama em blocos do módulo Robótico.
O Módulo Robótico é composto de sensores infravermelhos responsáveis pela
detecção de obstáculos, dois motores DC que realizam o deslocamento do mesmo.
O circuito é responsável pela transmissão, recepção e gravação de dados e também
contém o software com o objetivo do módulo.
A figura 3.5 descreve o funcionamento geral do módulo robótico.
CIRCUITOMOTOR DC MOTOR DC
SENSOR
INFRAVERMELHO
SENSOR
INFRAVERMELHO
SENSOR
INFRAVERMELHO
SENSOR
INFRAVERMELHO
Figura 3. 5: Diagrama em Blocos do Módulo Robótico.
PIC18F452
módulo de
controle
PIC18F452
módulo
receptor /
reconfigurador
SERIAL
TX/RX
ICSP
38
3.2.4. Diagrama em blocos do circuito do módulo robótico.
O circuito é responsável pela transmissão, recepção e gravação de dados e também
contém o software com o objetivo do módulo.
Na figura 3.6, é apresentado um diagrama em blocos do circuito implementado para
a transmissão entre o módulo robótico e um computador.
Figura 3. 6: Diagrama em blocos do circuito do módulo robótico.
O bloco Módulo RF é um transmissor-receptor de dados seriais que trabalha a uma
freqüência de 433MHz. O primeiro PIC18F452 é o microcontrolador responsável por
efetuar a comunicação com a antena, e de gerenciar o armazenamento do novo
programa que será recebido. Após um teste de consistência efetua-se a regravação do
sistema embarcado. O segundo PIC18F452 é o microcontrolador responsável pelo
controle robótico que tem como propósito o deslocamento autônomo do módulo.
Na tabela 3.1 são descritas as funcionalidades de cada microcontrolador:
Tabela 3. 1: Descrição das funcionalidades de cada microcontrolador.
Componente Funcionalidade Descrição de Funcionalidade
PIC18F452 A Protocolo ICSP Protocolo de gravação entre os
microcontroladores.
Protocolo SPI Canal de comunicação entre o módulo RF e
o PIC-18F452.
Protocolo RF Comunicação pelo RF
Protocolo I2C Responsável pela comunicação e gravação
da memória.
PIC18F452 B Algoritmo de
movimentação.
Responsável pela movimentação do módulo.
Leitura e interpretação
de sensores óticos.
Responsável pela detecção de obstáculos
Módulo RF
433MHz
Memória
EEPROM
24FC512
PIC18F452
B
PIC18F452
A
SPI
SERIAL
TX/RX
ICSP
I2C
39
3.3. Especificação de Software
Tem-se como objetivo principal a criação de uma biblioteca ICSP responsável pelo
funcionamento do protocolo de gravação de um microcontrolador para que este possa se
configurar de forma autônoma, ou seja, sem ajuda de outros periféricos ou kits de
gravação. Com isto, o microcontrolador poderá gravar os dados (previamente recebidos
via radio frequência) para outro microcontrolador que tenha suporte a ICSP. No caso da
aplicação desenvolvida, este segundo PIC contém a lógica responsável pelo controle
robótico do módulo. Os programas são desenvolvidos em linguagem C tanto no módulo
como no PC.
Neste projeto são utilizados dois microcontroladores PIC. O primeiro contém
somente o protocolo de recebimento e gravação de dados e o segundo contêm a lógica
computacional responsável pelo funcionamento do módulo. Esta separação é feita
devido à quantidade de memória limitada em um único PIC. O dado recebido é enviado
à memória EEPROM e, após passar por um teste de consistência, é gravado no segundo
PIC.
3.3.1. Fluxograma do Software no PC
Segue na figura 3.7 o fluxograma do software desenvolvido no PC.
Inicio
Abrir Porta Com
Abrir Arquivo
Hexadecimal
Decodificar
Arquivo
Enviar
Erro
Sim
Não
Fim
Figura 3. 7: Fluxograma do software no PC.
40
Na figura 3.7 é descrito o fluxograma no software no PC, que consiste em:
1- Abrir o programa;
2- Habilitar porta de comunicação COM, estabelecendo-se assim uma conexão entre o
módulo base e o computador.
3- Abri o arquivo a ser decodificado;
4- Executar a decodificação;
5- Enviar o arquivo ao módulo robótico.
3.3.2. Diagrama de Caso de Uso
Segue na figura abaixo o diagrama de caso de uso do software desenvolvido no PC.
Figura 3. 8: Diagrama de Caso de Uso.
3.3.3. Tela do Software do PC
A Figura a seguir mostra a tela desenvolvida para o PC, com o objetivo de fazer a
decodificação do arquivo hexadecimal e seu envio para o módulo robótico por meio do
módulo base conectado ao PC.
Figura 3. 9: Tela do software para PC.
41
3.3.4. Exemplo de Programa a ser decodificado e enviado
Este é um exemplo do formato de arquivo Intel Hex, que é gerado pelo software
MPLAB.
:02 0000 04 0000 FA
:10 0000 00 02EF00F0F86AD09EEA6AE96AC180C182 14
:10 0010 00 C184C196926A896A92908980948482B4 DC
:10 0020 00 09D09296899692988998929289829294 10
:10 0030 00 89942CD0948682B609D0929289929294 17
:10 0040 00 899492968996929A898A20D0948882B8 C7
:10 0050 00 09D09296899692988998929289929294 D0
:10 0060 00 898414D0948A82BA09D0929289929294 07
:10 0070 00 8994929689869298899808D092928992 CA
:10 0080 00 929489849296898692988998C5D70300 1C
:02 0000 04 0030 CA
:0E 0000 00 00220C0E000181000FC00FE00F40 27
:00000001FF (FINAL DO PROGRAMA)
3.3.5. Exemplo do Programa decodificado
O código em verde representa um exemplo do programa já decodificado e pronto
para ser enviado ao microcontrolador.
Isto se da ao fato que nem todo o arquivo Intel Hex gerado pelo MPLAB é utilizado
pelo microcontrolador, sendo que alguns caracteres são somente cabeçalhos com
informações referentes às linhas de instrução, como explicado no Apêndice A.
02EF00F0F86AD09EEA6AE96AC180C182
C184C196926A896A92908980948482B4
09D09296899692988998929289829294
89942CD0948682B609D0929289929294
899492968996929A898A20D0948882B8
09D09296899692988998929289929294
898414D0948A82BA09D0929289929294
8994929689869298899808D092928992
929489849296898692988998C5D70300
O código em verde demonstra a decodificação, ou seja, os dados que serão enviados
por meio do protocolo de transmissão.
42
3.3.6. Protocolo de Transmissão
Após a decodificação do arquivo Intel Hex, é montado pacotes como demonstrado
na figura 3.3 que contém as informações a serem transmitidas. Na tabela 3.2 é
apresentado um exemplo de como as informações hexadecimais ficam separadas nos
pacotes a serem transmitidos.
Tabela 3. 2: Detalhes do Pacote a ser Transmitido.
0 1 02 EF 00 F0 F8 6A D0 9E EA 6A E9 6A C1 80 C1 82
0 2 C1 84 CA 96 92 6A 89 6A 92 90 89 80 94 84 82 B4
3.3.7. Protocolo ICSP
Como mencionado anteriormente o protocolo ICSP foi desenvolvido para a gravação
de informações no microcontrolador a distância, em anexo é demonstrado os códigos
necessários para o funcionamento do protocolo ICSP.
Estes códigos que formam o protocolo ICSP seguem uma seqüência que pode ser
observadas nos fluxogramas no Anexo B.
3.3.8. Fluxograma de Detecção de obstáculos
O módulo robótico é composto de sensores infravermelhos responsáveis pela
detecção de obstáculos, dois motores DC que realizam o deslocamento do mesmo. A
partir disso foi criado um fluxograma de funcionamento dos motores que é apresentado
na Figura 3.7.
Figura 3. 10: Fluxograma de detecção de obstáculos.
INICIO
Liga
Motores
Sensor
AtivoSIM
Motores
Ligados
NAO
Qual sensor ?
Desliga Motor
Esquerdo
Motor Direto Gira
Sentido Anti-Horário
TraseiroDianteiro
Qual Posição?
Desliga Motor Direito
Motor Esquerdo Gira
Sentido Anti-Horário
DireitoEsquerdo
Desliga Motor
Esquerdo
Motor Direto Gira
Sentido Horário
Desliga Motor Direito
Motor Esquerdo Gira
Sentido Horário
Qual Posição?Esquerdo Direito
43
3.4. Vantagens do Projeto
Seguem algumas vantagens do projeto e os motivos que levaram ao
desenvolvimento de um módulo robótico com gravação de microcontroladores via rádio
frequência:
- Tempo e Custo: O projeto permite a otimização de tempo e custo, pois a gravação
de programas é feita remotamente, sem a necessidade de encaminhar o dispositivo a
centros especializados para efetuar a atualização ou correção do sistema embarcado.
- Segurança: O circuito foi projetado considerando a segurança de operação do
módulo robótico, com o propósito de não afetar o funcionamento deste. Pois existem
dois microcontroladores trabalhando em paralelo cada um com diferentes
funcionalidades (Tabela 3.1).
- Diversidade de aplicações: O objetivo inicial deste projeto consiste no uso para
fins educacionais, pois é possível alterar a programação do módulo robótico, colocando
novos objetivos por meio de outros algoritmos de inteligência artificial. Também é
possível a utilização de sensores diversos como, por exemplo, sensores de temperatura,
umidade, pressão, etc.
- Interação de dispositivos: Futuramente é possível o desenvolvimento de mais
módulos robóticos para interagirem entre si.
3.5. Desvantagens do Projeto
Segue algumas vantagens e limitações do projeto:
- Limitação de microcontroladores: Este projeto limita-se ao uso de
microcontroladores PIC.
- Baixo processamento de informações em relação aos outros microcontroladores
encontrados em dispositivos como celulares e PDAs.
- Baixa capacidade de armazenamento em memória, pois não é possível armazenar o
protocolo de gravação e o objetivo do módulo no mesmo microcontrolador, sendo
necessário o uso de memória externa.
3.6. Tabela de Custos
Criou-se uma tabela de custos, conforme Anexo D, baseando-se em valores reais a
nível corporativo.
Foram levados em conta os componentes comprados para desenvolvimento do
projeto, a utilização da estrutura dos laboratórios da Universidade, entre outros.
3.7. Cronograma de Desenvolvimento
Para manter o cumprimento de prazos, foi desenvolvido um cronograma com todas
as etapas de pesquisa e desenvolvimento do projeto, conforme Anexo E.
44
CAPÍTULO 4. VALIDAÇÃO E RESULTADOS
Na figura 4.1 é apresentada a descrição geral do projeto desenvolvido. Mostrando a
interação do módulo base, responsável pela comunicação com o módulo robótico e a
transmissão de dados, via radio frequência.
Figura 4. 1: Interação entre o módulo base e o módulo robótico.
Os testes realizados para validação do projeto foram divididos de duas formas: testes
reais, em que foi realizado a implementação do sistema com componentes físicos e
verificado seu funcionamento; e testes de simulação, em que foi verificada a validade de
códigos de firmware. Na seqüência serão apresentados os testes realizados.
4.1. Validação dos Motores
Foram avaliados quatro tipos de motores DC para o controle de movimentação do
robô. Os parâmetros para avaliação dos motores são: torque, rotação e corrente
consumida. Na tabela 4.1, são apresentados os quatro modelos de motores. Devido ao
fato do módulo robótico ter um peso de 3,5kg, foi selecionado o motor AK360/12-R44
para o desenvolvimento do projeto.
45
Tabela 4. 1: Modelos de motores avaliados para o projeto.
Modelo Rotação (rpm) Corrente (A) Torque
(kgf/cm)
AK360/12-R44 32,6 0,41 2,24
AK510/12R-3 2,7 0,15 15
AK510/12R1-3 11,7 0,3 8,5
AK555/12-R83 65,4 1,606 11,1
Fonte: Datasheet AK360/12-R44
A partir disso foi criado um fluxograma de funcionamento dos motores que foi
apresentado anteriormente (Figura 3.7), basicamente o programa inicial proposto faz o
deslocamento do módulo, desviando de obstáculos reconhecidos por meio dos sensores
de distância.
Este fluxograma foi na seqüência escrito em linguagem de programação C e simulado
no software Proteus, conforme esquemático da figura 4.2.
No teste de simulação foi possível obter uma velocidade máxima de 3,6 m/s, sendo
necessário um espaço de manobra, para desviar, de 20 cm.
Figura 4. 2: Esquemático do funcionamento do motor no software Proteus.
Na figura 4.3 visualiza-se o sistema embarcado do módulo robótico. Este é
composto, pelo circuito à esquerda, responsável pelo gerenciamento dos dispositivos
microcontrolados conforme capítulo 3 e, o circuito à direita, responsável pelo controle
dos motores.
46
Figura 4. 3: Sistema embarcado do módulo robótico.
Com isto observa-se na figura 4.4 o módulo robótico completo, composto pelo
sistema embarcado, motores responsáveis pelo seu deslocamento, sensores de detecção
de obstáculos e antenas que efetuam a transmissão e recepção de dados.
Figura 4. 4: Módulo Robótico.
47
4.2. Detecção de distância
Para avaliar o desempenho dos sensores de distância foram realizados diversos
testes. Estes testes tinham por objetivo avaliar: a interferência de outros elementos de
iluminação em relação ao fotodetector, e avaliar a distância de detecção de diversos
materiais comumente encontrados em ambientes de laboratório, como cadeiras, mesas,
armários e pessoas.
Os testes foram realizados variando a iluminação ambiente e o objeto a ser detectado.
Sendo que na tabela 4.2 são apresentados os resultados destes testes.
Tabela 4. 2: Relação entre iluminação do objeto a ser detectado e distância de
detecção do circuito desenvolvido.
Iluminação
(lux)
Objeto Distância
medida (cm)
100 Cadeira 40
200 Cadeira 42
400 Cadeira 43
800 Cadeira 46
100 Mesa 48
200 Mesa 52
400 Mesa 55
800 Mesa 57
100 Pessoa 43
200 Pessoa 46
400 Pessoa 49
800 Pessoa 51
Estes resultados foram baseados na unidade lux, este é utilizado como sistema de
medida da intensidade da luz detectado pelo olho humano, como descrito na tabela 4.3.
Tabela 4. 3: Nível de intensidade da luz em diversos ambientes.
Intensidade da Luz (lux) Descrição
100 Tempo Nublado / Escuro
320–500 Luz branca no ambiente
400 Nascer do sol e por do sol em um dia claro
1000 Tempo aberto com sol ao meio dia.
Fonte: Wikipedia - LUX
4.3. Comunicação
A validação da comunicação sem fio foi realizada analisando os pacotes
transmitidos tanto do módulo robótico para o módulo base quanto o inverso. Foi
analisada também a estrutura do protocolo para detecção de pacote de comunicação e
pacote de programa.
O teste de validação da comunicação foi realizado enviando pacotes seqüência (burst)
de 10 bytes a um intervalo de 20ms, primeiro do módulo robótico para o módulo base e
após o inverso, neste teste foi avaliado a distância máxima de comunicação entre os
48
módulos em ambientes fechados, abertos e mistos, sendo que neste último o módulo
base está em um ambiente fechado e o módulo robótico em um ambiente aberto. Na
tabela 4.4, são apresentados os resultados de desempenho dessas transmissões.
Tabela 4. 4: Resultado dos testes de distância máxima de comunicação entre os
módulos.
Tipo de
ambiente
Direção de
comunicação
Distância
Máxima (m)
Aberto Base-robô 60
Fechado Base-robô 20
Misto Base-robô 37
Aberto Robô-Base 55
Fechado Robô-Base 18
Misto Robô-Base 35
Quanto aos testes de protocolo, foram enviados pacotes diversos e intercalados entre
dados e programa. Foi verificado que durante a transmissão de um programa não é
possível enviar pacotes de dados sendo necessário aguardar o termino desta transmissão
para efetuar um novo envio.
Por último, o consumo de energia dos módulos de RF foi de 8mA para o módulo base
e 6mA para o módulo robótico, sendo considerado um consumo relativamente baixo na
literatura.
4.4. Protocolo ICSP
Baseando-se nas etapas pré-especificadas do modo gravação ICSP foram realizados
os testes de execução, para validar o protocolo de gravação. O processo consistia em
enviar o algoritmo responsável pela detecção de obstáculo, via radio freqüência e gravá-
lo no microcontrolador PIC18F452-A, responsável pelo recebimento dos pacotes
(capítulo 3). Em seguida é feito o teste de consistência na memória 24FC512 para
verificar o envio completo dos pacotes. Após esta análise de consistência, é feita a
gravação da informação no microcontrolador PIC18F452-B, através do protocolo ICSP.
Foi possível validar o protocolo ICSP, pois a gravação estava sendo realizada,
porém ocorreram falhas no parâmetro de execução, já que a gravação ocorria no
microcontrolador PIC18F452-A ao invés de ser enviado ao microcontrolador
PIC18F452-B, devido a problemas na execução dos passos responsáveis pelo modo de
gravação ICSP composto pelos pinos PGC, PGD, PGM. Estes passos foram revisados,
testados e executados de forma individual conforme as especificações técnicas do ICSP
Programming Guide.
49
4.5. Validação do Recebimento e Gravação na Memória
Para confirmar o recebimento de informações, a gravação na memória e sua
consistência, foi enviada uma seqüência pré-determinada de caracteres (15 EF 00 F0 EA
6A 0E). Este teste pode ser visualizado no osciloscópio, como demonstrado na figura
4.5.
Figura 4. 5: Exemplo de envio de um caractere.
A figura 4.5 exemplifica o envio de um caractere. O canal 1 (CH1) representa o
envio do caractere a partir do módulo base e o canal 2 (CH2) representa este caractere
sendo recebido pelo módulo robótico, especificamente no PIC18F542-A, é feita sua
gravação na memória 24FC512. Após o término desta ação, o microcontrolador lê a
informação gravada na memória e efetua o reenvio para o módulo base, confirmando
assim todos os passos necessários para a transmissão, recepção e gravação de
informações via rádio frequência.
Com o auxílio de um gravador serial e o software IC-PROG, foi possível realizar a
leitura e visualização do conteúdo da memória. Confirmando assim que as informações
que eram enviadas via radio frequência, chegavam ao destino e estavam em total
igualdade com as informações transmitidas.
A figura 4.6 mostra o programa IC-PROG com a memória vazia.
50
Figura 4. 6: Programa IC-PROG.
Após a inicialização do programa e a execução da gravação de dados, foi efetuada a
leitura da memória para confirma a correta gravação das informações e assim verificar o
conteúdo gravado na memória, conforme figura 4.7.
Figura 4. 7: Informações gravadas na memória.
51
4.6. Problemas Encontrados
Foram encontrados alguns problemas no decorrer do desenvolvimento do projeto,
porém solucionados, e serão abordados pelos seguintes tópicos:
- Sensores Ópticos;
- Reconhecimento de Comandos para os Motores;
- Sincronia das Antenas.
4.6.1 Sensores Ópticos
Devido à alta sensibilidade de luminosidade, a princípio houve uma má
interpretação dos níveis lógicos que determinavam a existência ou não de obstáculos.
Esta foi corrigida através da realização de vários testes de incidência da luz e cálculo
dos resistores responsáveis pela calibração da distância dos obstáculos a serem
detectados.
4.6.2. Reconhecimento de Comandos para os Motores
Foi constatado que nem todos os comandos enviados pelos sensores eram
reconhecidos pelo microcontrolador, responsável pela detecção de obstáculos. A partir
de simulações (Capítulo 4.1) chegou-se a conclusão que o problema era de hardware, e
após visualizar no osciloscópio foi encontrado um pico de interferência no pino
responsável pelo envio de comandos aos motores, como mostrado na figura 4.8.
Figura 4. 8: Interferência no microcontrolador.
Houve interferência de campos eletromagnéticos nas trilhas da placa de circuito
impresso do módulo robótico e a flutuação da energia que interferia no funcionamento
dos componentes. Foi solucionado com o aumento da largura das trilhas, com a adição
de filtros capacitivos e a separação exclusiva do controle dos motores em uma nova
placa de circuito impresso.
A figura 4.9 mostra o sinal após as correções descritas anteriormente.
52
Figura 4. 9: Sinal sem interferência.
Com esta diminuição de interferência foi possível o microcontrolador reconhecer os
níveis lógicos e assim executar de forma correta o algoritmo de detecção de obstáculos.
4.6.3. Sincronia das Antenas
Como mencionado no capítulo 3, foi utilizado um microcontrolador com interface
USB (via pinos específicos D+ e D-, Capítulo 2) para efetuar a comunicação entre a
antena e o software do PC. Conforme figura 4.10.
Figura 4. 10: Módulo base.
Desenvolveu-se uma interface serial com comunicação USART que tem como
objetivo o reconhecimento do computador com o dispositivo externo (módulo base).
53
Existia uma diferença de velocidade do processamento da taxa de transmissão
(baud) entre o microcontrolador do módulo base e o microcontrolador do módulo
robótico.
A possível causa para esta diferença ocorreu porque o firmware do módulo base foi
desenvolvido para atuar como uma porta de comunicação serial, mesmo o conector
físico sendo USB. Ressaltando que a velocidade de uma porta COM é menor da
velocidade de processamento do PC.
Porém levando em consideração as especificações técnicas, este tipo de problema
não deveria ocorrer, já que segundo o fabricante não existe problemas relacionados a
este tipo de incompatibilidade.
Foi corrigido após vários testes a fim de se encontrar o equilíbrio entre os dois
sistemas, diminuindo o baud do módulo base e mantendo o baud do módulo robótico.
A figura 4.11 mostra as antenas fora de sincronia.
Figura 4. 11: Antenas fora de sincronia.
A figura 4.11 demonstra em detalhes esta falta de sincronia. Sendo que o canal 1
(CH1) esta em nível lógico baixo e o canal 2 (CH2) esta transmitindo de forma aleatória
sua freqüência.
54
Figura 4. 12: Antenas sincronizadas.
Já a figura 4.12 mostra ambos os sinais em nível lógico alto, indicando que as
antenas entraram em sincronia, conforme esperado segundo especificações técnicas.
55
CAPÍTULO 5. CONCLUSÃO
Neste trabalho foi proposto o desenvolvimento de um novo esquema para a
reconfiguração de microcontroladores remotamente, utilizando-se o protocolo ICSP.
O sistema remoto microcontrolado continuou sua operação normal, pois o
microcontrolador B permaneceu inalterado enquanto o microcontrolador A recebeu
dados e novos programas de configuração que, após uma análise de consistência
verificou-se a informação foi efetivamente gravada pelo protocolo ICSP.
Neste projeto podem ser citadas diversas vantagens, entre elas, benefícios
econômicos devido ao baixo custo dos materiais utilizados, operabilidade por ser um
sistema embarcado regravável à distância. Além disso, o sistema apesar de propor algo
extremamente útil ao desenvolvimento de aplicações, ainda é inédito em relação à
forma de gravação de microcontroladores PIC atualmente disponível.
Este dispositivo tem uma grande flexibilidade no envio de programas diversos.
Permitindo ao usuário mudar o objetivo ou funcionamento do sistema, de acordo com a
necessidade atual do sistema. Provendo, por exemplo, a economia de energia, fazendo
com que um sistema com diversos sensores e atuadores instalados para fins específicos
sejam utilizados apenas quando necessário. Tendo assim uma grande aplicabilidade nas
mais diversas áreas, sendo que seu uso inicial será voltado para fins didáticos.
Como trabalhos futuros, é possível continuar o desenvolvimento provendo: a
comunicação entre vários módulos robóticos, a programação para realizar experimentos
com diversos algoritmos como, por exemplo, o algoritmo de aprendizagem por reforço.
56
CAPÍTULO 6. REFERÊNCIAS
AKIRA KAMIMURA, HARUHISA KUROKAWA, EIICHI YOSHIDA, Member,
IEEE, SATOSHI MURATA, Member, IEEE, et al. .: Automatic Locomotion Design
and Experiments for a Modular Robotic System. In IEEE/ASME Transactions On
Mechatronics, vol. 10, no.3, June 2005.
BISHOP, OWEN.: The Robot Builder's Cookbook. Editora Newnes Publicado por
Elsevier Ltd., United Kingdom, 2007.
BROOKS, RODNEY. Robot.: The Future of Flesh & Machines. UK, Penguin, 2002,
Disponível em: <http://people.csail.mit.edu/brooks/books%20&%20movies.html
>Acesso em: mar 2009.
COSTA, EDUARDO R., GOMES MARCEL L., BIANCHI REINALDO A. C.: Um
Mini Robô Móvel Seguidor de Pistas Guiado por Visão Local. VI Simpósio
Brasileiro de Automação Inteligente, Setembro, 2003.
DATASHEET PIC18F452A, “High-Performance, Enhanced Flash Microcontrollers
with 10-Bit A/D”, Microchip Technology Inc., 2006. Disponível em: <
http://www.datasheetcatalog.com/datasheets_pdf/P/I/C/1/PIC18F452.shtml> Acesso
em: fev 2009.
DATASHEET PIC18F4550A, “High-Performance, Enhanced Flash
Microcontrollers with 10-Bit A/D”, Microchip Technology Inc., 2006. Disponível em:
< http://www.datasheetcatalog.com/datasheets_pdf/P/I/C/1/PIC18F4550.shtml> Acesso
em: fev 2009.
DATASHEET 24FC512, “512K I2C™ CMOS Serial EEPROM”, Microchip
Technology Inc., 2004. Disponívele em: <
http://ww1.microchip.com/downloads/en/devicedoc/21754G.pdf> Acesso em: fev 2009.
DATASHEET AK360/12-R44. Disponível em:
<http://www.motores.akiyama.com.br/pdf/AK360%2012%20-%20R44.pdf> Acesso
em: out 2008.
HORENSTEIN, MARK N., “Microeletrônica circuitos & dispositivos”, Rio de
Janeiro: Prentice-Hall do Brasil, 1996.
In-Circuit Serial Programming (ICSP) Guide. Disponível em: <
http://ww1.microchip.com/downloads/en/DeviceDoc/30277d.pdf> Acesso em: maio
2008.
Intel® 64 and IA-32 Architectures Software Developer’s Manual – Volume 1:
Basic Architecture. Disponível em:
<http://www.intel.com/Assets/PDF/manual/253665.pdf> Acesso em: set 2009.
57
KANTEK, PEDRO, “Inteligência Artificial”, 1ª Edição, Curitiba: Universidade
Positivo, 2007.
Microchip Technology – EEPROM: Disponível em:
<http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2128
¶m=en025151> Acesso em: out 2009.
MPLAB Integrated Development Environment . Disponível em: <
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406
&dDocName=en019469&part=SW007002> Acesso em: out 2009.
PEREIRA, FABIO, “Microcontroladores PIC : técnicas avançadas”, 2ª Edição, São
Paulo: Erica, 2002.
RUEDA, THIAGO C., SANTOS, LUCIANO M., RABELO, GIOVANNI F.: Controle
Automático do Nível de Poeira Baseado em Microcontrolador. Universidade Federal
de Lavras, Setembro 2005.
SEDRA, ADEL S. & Smith, Kenneth C., “Microeletrônica”, 4ª Edição, São Paulo:
Makron Books, 2000.
TATO Equipamentos Eletrônicos – Transmissor e Receptor de 433 MHz e 315 Mhz.
Disponível em: < http://www.tato.ind.br/files/TXMRXM.pdf> Acesso em: abr 2009.
UPENDER, BHARGAV P., KOOPMAN, PHILLIP J.: Communication Protocols for
Embedded Systems. Embedded Systems Programming, November 1994.
Wikipedia – FOTA, Disponível em: <
http://en.wikipedia.org/wiki/FOTA_(technology) > Acesso em: Dez 2009.
Wikipedia - LUX, Disponível em: < http://en.wikipedia.org/wiki/Lux> Acesso em: Jul
2009.
Wikipedia – OTA, Disponível em: < http://en.wikipedia.org/wiki/Over-the-
air_programming > Acesso em: Dez 2009.
58
ANEXO A – DIAGRAMAS ESQUEMÁTICOS
Esquemático do sensor que detecta obstáculos. Há quatro sensores no módulo
robótico, sendo assim possível a detecção de todos os lados.
Circuito Impresso do Sensor
59
Esquemático do Controle do Motor responsável pelo controle dos motores para
deslocamento do módulo robótico.
Circuito Impresso do Controle do Motor
60
Esquemático do Modulo Robótico responsável pelo recebimento do arquivo, sua
gravação na memória e gravação através do protocolo ICSP para o segundo
microcontrolador.
61
Circuito Impresso do Controle do Motor
62
Esquemático do módulo base, responsável pela conexão com o PC para transmissão
de dados.
Circuito Impresso do Módulo Base
63
ANEXO B – FLUXOGRAMAS
Fluxograma de Gravação ICSP.
Inicio
Endereço = 0
Lê primeiro byte
da memoria
Incrementa
Endereço
Lê segundo byte
da memoria
Armazena
primeiro byte em
Low Address
Armazena
segundo byte em
High Address
Tamanho * 18 /2
Chama gravação
Load Configuration
Incrementa
Endereço
Fim da Gravação
ICSP
64
Fluxograma de Recebimento e Gravação na Memória do Módulo Robótico
Inicio
Recebe primeiro byte, ver.
Recebe segundo, ver ordem
do pacote
Decrementa
tamanho pacote
Armazena na memoria
Incrementa
endereçamento
Recebe pacote
Laço Gravação
Verifica tamanho = 0
Inicio
Endereçamento = 0
Repete 18 vezes
65
ANEXO C – CÓDIGO DO PROTOCOLO ICSP
Funções Principais responsáveis pelo protocolo ICSP.
void Reset_Adress()
{
#asm
NOP
MOVLW 0x00
NOP
MOVWF TBLPTRU
NOP
MOVWF TBLPTRH
NOP
MOVWF TBLPTRL
#endasm
}
void Load_Address()
{
#asm
NOP //4-bit instruction
MOVLW Low_Address
NOP //4-bit instruction
MOVWF TBLPTRL
NOP //4-bit instruction
MOVLW High_Address
NOP //4-bit instruction
MOVWF TBLPTRH
66
NOP //4-bit instruction
MOVLW Upper_Address
NOP //4-bit instruction
MOVWF TBLPTRU
#endasm
}
void load_config()
{
for(;;)
{
output_high(pin_B7);
delay_ms(100);
output_low(pin_B7);
delay_ms(100);
}
}
void Load_Configuration()
{
#asm
NOP
MOVLW 0x03
NOP
MOVWF TBLPTRU
NOP
MOVLW Low_Config_Address
NOP
MOVWF TBLPTRL
NOP
MOVLW High_Config_Address
NOP
MOVWF TBLPTRH
NOP
TBLWT*+
67
#endasm
}
void Verify_Sequence()
{
#asm
TBLRD*-
TBLRD*
#endasm
}
void Read_Data()
{
#asm
TBLRD
#endasm
}
void Sequence_Programming()
{
#asm
NOP
MOVLW Low_Byte_Address
NOP
MOVWF TBLPTRL
NOP
MOVLW High_Byte_Address
NOP
MOVWF TBLPTRH
NOP
MOVLW Upper_Byte_Address
NOP
MOVWF TBLPTRU
TBLWT+*
#endasm
}
68
ANEXO D – TABELA DE CUSTOS
Itens Custo Unidade Padrão Total
Mão de Obra
CEO (Coordenador) R$ 109,00 hora 80 R$ 8.720,00
Gerente Projeto
(orientador) R$ 63,50 hora 160 R$ 10.160,00
Engenheiros R$ 30,00 hora 1760 R$ 52.800,00
SubTotal R$ 71.680,00
Insumos
Laboratório R$ 7,00 m2 /mês 40 R$ 2.520,00
Mobiliário R$ 416,00 mês 9 R$ 3.744,00
Computador R$ 160,50 mês 9 R$ 1.444,50
Notebook R$ 291,50 mês 9 R$ 5.247,00
Osciloscópio R$ 410,00 mês 9 R$ 3.690,00
Ferramentas R$ 60,00 mês 9 R$ 540,00
Multímetro R$ 41,00 mês 9 R$ 369,00
Fonte R$ 140,00 mês 9 R$ 1.260,00
Gravador PIC R$ 58,00 mês 9 R$ 522,00
Antena RF R$ 20,00 mês 9 R$ 180,00
Insumos aplicados R$ 733,07 anual 1 R$ 733,07
Frete Compras R$ 30,00 anual 1 R$ 30,00
Kits(geral) R$ 15,83 mês 9 R$ 142,50
Água R$ 50,00 mês 9 R$ 450,00
Luz R$ 100,00 mês 9 R$ 900,00
Telefone / celular R$ 130,00 mês 9 R$ 1.170,00
Internet R$ 60,00 mês 9 R$ 540,00
Deslocamento R$ 16,00 mês 9 R$ 144,00
Furadeira R$ 0,45 mês 9 R$ 4,05
Prensa R$ 0,12 mês 9 R$ 1,08
SubTotal R$ 23.631,20
Documentação
Livro R$ 20,83 mês 9 R$ 187,50
Copias R$ 0,10 Copias 1500 R$ 150,00
Encadernação R$ 50,00 total 2 R$ 100,00
DVD R$ 10,00 total 1 R$ 10,00
SubTotal R$ 447,50
69
Software
Windows / Office R$ 83,50 mês 9 R$ 2.254,50
Project R$ 83,50 mês 9 R$ 751,50
Visual Studio R$ 50,00 mês 9 R$ 900,00
Orcad R$ 1,90 hora 10 R$ 19,00
Proteus R$ 5,70 hora 100 R$ 570,00
Compilador C R$ 1,55 hora 200 R$ 620,00
Pic C / Mplab R$ 0,52 hora 20 R$ 10,40
SubTotal R$ 5.125,40
Total do projeto R$ 100.884,10
Impostos 35,70% R$ 56.011,86
Total Geral R$ 156.895,96
70
ANEXO E – CRONOGRAMA
71