Upload
vuthuy
View
218
Download
3
Embed Size (px)
Citation preview
ALEX ARCHELA
ARQUITETURA EMBARCADA REATIVA DE HARDWARE E
SOFTWARE PARA CONTROLE DE ROBÔ MÓVEL
AUTÔNOMO
Londrina 2014
ALEX ARCHELA
ARQUITETURA EMBARCADA REATIVA DE HARDWARE E
SOFTWARE PARA CONTROLE DE ROBÔ MÓVEL
AUTÔNOMO
Trabalho de Conclusão de Curso apresentado ao Departamento de Engenharia Elétrica da Universidade Estadual de Londrina, como requisito parcial à obtenção do título de Bacharel em Engenharia Elétrica. Orientador: Prof. Dr. Leonimer Flávio de Melo
Londrina 2014
ALEX ARCHELA
ARQUITETURA EMBARCADA REATIVA DE HARDWARE E
SOFTWARE PARA CONTROLE DE ROBÔ MÓVEL
AUTÔNOMO
Trabalho de Conclusão de Curso apresentado ao Departamento de Engenharia Elétrica da Universidade Estadual de Londrina, como requisito parcial à obtenção do título de Bacharel em Engenharia Elétrica.
BANCA EXAMINADORA
____________________________________ Orientador: Prof. Dr. Leonimer Flávio de Melo
Universidade Estadual de Londrina - UEL
____________________________________ Prof. Dr. Aziz Elias Demian Junior
Universidade Estadual de Londrina - UEL
____________________________________ Prof. Dr. Francisco Granziera Júnior
Universidade Estadual de Londrina - UEL
Londrina, 16 de novembro de 2014.
AGRADECIMENTO (S)
Agradeço a Deus pela oportunidade de desenvolver este trabalho. À
meu orientador, prof. Dr. Leonimer Flávio de Melo, pela orientação. Gostaria de
agradecer também ao técnico de laboratório pelo suporte necessário para o
desenvolvimento deste trabalho.
ARCHELA, Alex. Arquitetura Embarcada Reativa de Hardware e Software para Controle de Robô Móvel Autônomo. 2014. 101. Trabalho de Conclusão de Curso (Graduação em Engenharia Elétrica) – Universidade Estadual de Londrina, Londrina, 2014.
RESUMO
Neste trabalho apresentar-se-á o estudo e desenvolvimento do projeto físico de um veículo terrestre autônomo, bem como o desenvolvimeto de um software capaz de fazer os tratamentos de dados necessários para que cada sensor trabalhe em comum acordo para o funcionamento deste. O desafio proposto a este projeto, foi construir um código capaz de reagir ao ambiente de forma que pudesse ser utilizado para desenvolvimento de robôs móveis de baixo custo. Portanto os recursos implementados no projeto são os menores possíveis, de forma que este reconhecimento ainda possa ser feito de forma satisfatória. Serão apresentados, ainda, as técnicas utilizadas para a construção do protótipo, comentando-se os resultados positivos e negativos de cada etapa até a obtenção do protótipo final. O veículo criado neste trabalho possui tanto o sistema de detecção de obstaculos, como um controle de velocidade de baixo custo baseado no controlador PID, de forma a possibilitar uma trajetória próxima da linear para o deslocamento do veículo. Palavras-chave: Robótica móvel. Controlador PID. PIC18F452. Sistema Embarcado. Veículo Terrestre Autônomo.
ARCHELA, Alex. Embedded Reactive Architecture of Hardware and Software to Control Autonomous Mobile Robotics. 2014. 101. Trabalho de Conclusão de Curso (Graduação em Engenharia Elétrica) – Universidade Estadual de Londrina, Londrina, 2014.
ABSTRACT
In this work will be presented the study and development of the physic project of a autonomous terrestrial vehicle and the development of a software capable of do the treatment of necessary data so that each sensor works in concert for the operation of this prototype. The challenge posed to this project was to build a code capable of react to the ambient so that could be used to development a low cost mobile vehicle. Therefore, the resources implemented on this project are the smallest possible, such that this recon still can be made with a satisfactory way. Will be presented, yet, all the techniques used for the construction of the prototype, commenting the results positives and negatives for each step until obtain the final prototype. The vehicle build of this work has both the obstacle detection system as a low-cost speed control, based on PID controller, so that a close to linear trajectory can be made for the vehicle displacement. Key words: Mobile Robotic. PID Controller. PIC18F452. Embedded System. Autonomous Land Vehicle.
LISTA DE ILUSTRAÇÕES
Figura 2.1 – Robôs móveis Flo (esquerda) e Pearl (centro e direita), desenvolvidos
pelo projeto Nursebot ............................................................................................... 16
Figura 2.2 – Cadeira de rodas, iBot, desenvolvida pela parceria entre DEKA e
Johnson and Johnson’s Independence Technology ................................................. 17
Figura 2.3 – Aspirador de pó, Trilobite, desenvolvido pela Electrolux ..................... 18
Figura 2.4 – AIBO, robô móvel de entretenimento, desenvolvido pela Sony ........... 18
Figura 2.5 – R-Gator, veículo militar autônomo desenvolvido pela parceria entre
iRobot Corporation e John Deere ............................................................................. 19
Figura 2.6 – Inspector Bot, robô móvel autônomo desenvolvido pela Eventronic para
inspeção de tubos .................................................................................................... 19
Figura 2.7 – CleanBot, robô móvel autônomo desenvolvido pela Eventronic para
limpeza de tubos ...................................................................................................... 20
Figura 2.8 – Modelo de robô móvel com rodas acionado por tração diferencial ..... 20
Figura 2.9 – Planos de referência global e local do robô ......................................... 22
Figura 2.10 – Sistema de controle de velocidade de um motor DC ......................... 27
Figura 2.11 – Circuito equivalente do controle de um motor usando o método de
controle de tensão na armadura ............................................................................... 29
Figura 2.12 – Diagrama de blocos do sistema de controle de um motor DC por
controle da tensão de armadura. .............................................................................. 31
Figura 2.13 – Sinal PWM com diferentes razões cíclicas ........................................ 32
Figura 2.14 – Diagrama de blocos do método analógico de geração de PWM ....... 35
Figura 2.15 – Circuito analógico gerador de sinal triangular dente-de-serra ........... 35
Figura 2.16 – Circuito de ponte H com operação nos quatro quadrantes ............... 37
Figura 2.17 – Operação do primeiro quadrante da ponte H com tensão e corrente
positivas, sobre a carga ........................................................................................... 38
Figura 2.18 – Operação do primeiro quadrante da ponte H com tensão igual a zero,
sobre a carga ........................................................................................................... 39
Figura 2.19 – Operação do segundo quadrante com tensão negativa e corrente
positiva, sobre a carga ............................................................................................. 40
Figura 2.20 – Modo de operação do terceiro quadrante com a corrente sobre a
carga aumentando ................................................................................................... 41
Figura 2.21 – Modo de operação do terceiro quadrante com a corrente sobre a
carga diminuindo ...................................................................................................... 41
Figura 2.22 – Circuito esquemático do funcionamento interno do CI L298 ............. 42
Figura 2.23 – Diagrama esquemático de blocos do controlador PID aplicado ........ 47
Figura 2.24 – Diagrama esquemático da implementação do controlador PID ......... 49
Figura 2.25 – Esquemático de funcionamento de um encoder óptico ..................... 50
Figura 2.26 – Esquemático das arquiteturas de Von Neumann e Harvard .............. 54
Figura 2.27 – Esquemático de montagem do circuito para utilização de um cristal
como entrada de clock no PIC18FXX2 .................................................................... 57
Figura 3.1 – Plataforma do robô móvel vista de baixo ............................................. 59
Figura 3.2 – Roda tipo castor usada no protótipo .................................................... 60
Figura 3.3 – Roda de tração do protótipo ................................................................ 61
Figura 4.1 – Primeiro modelo de alimentação, composto por pilhas alcalinas AA ... 63
Figura 4.2 – Alimentação por seis pilhas recarregáveis e três capacitores de
estabilização de tensão ............................................................................................ 64
Figura 4.3 – Alimentação realizada por baterias recarregáveis de celular e regulação
de tensão de alimentação do PIC realizada pela ponte H ........................................ 65
Figura 4.4 – Módulo de ponte H com CI L298N e dissipador de calor .................... 67
Figura 4.5 – Encoder óptico acoplado ao disco com ranhuras ................................ 68
Figura 4.6 – Disco com ranhuras para sensor de velocidade .................................. 69
Figura 4.7 – Módulo sensor de distância ................................................................. 70
Figura 4.8 – Motores de tração do protótipo ............................................................ 71
Figura 4.9 – Esquemático do circuito de utilização do microcontrolador ................. 72
Figura 4.10 – Placa do microcontrolador ................................................................. 73
Figura 5.1 – Fluxograma de funcionamento do programa do robô .......................... 74
Figura 6.1 – Robô móvel autônomo ........................................................................ 81
LISTA DE TABELAS
Tabela 2.1 – Regra de Zigler-Nichols ...................................................................... 49
Tabela 2.2 – Valores dos capacitores para oscilação do cristal de clock ................ 57
LISTA DE ABREVIATURAS E SIGLAS
PC Personal computer
DC Direct current
AC Alternating current
PID Proporcional integral derivativo
PIC Programmable Interface Controller
NASA National Aeronautics and Space Administration
PWM Power width modulation
CI Circuito integrado
DSP Digital signal processor
VLSI Very large scale integration
ASIC Application specific integrated circuit
ANSI American national standards institute
RAM Random access memory
EEPROM Electrically erasable programmable read only memory
RISC Reduced instruction set computer
CISC Complex instruction set computer
USART Universal synchronous asynchronous receiver transmitter
TTL Transistor-transistor logic
LED Light emitting diode
GND Ground
SUMÁRIO
1 INTRODUÇÃO .......................................................................................... 12
1.1 DESCRIÇÃO DO PROJETO ............................................................................. 12
1.2 OBJETIVOS .................................................................................................. 13
1.3 JUSTIFICATIVA ............................................................................................. 13
2 REVISÃO BIBLIOGRÁFICA ..................................................................... 15
2.1 ESTADO DA ARTE ........................................................................................ 15
2.2 SISTEMA DE TRAÇÃO DIFERENCIAL ............................................................... 20
2.3 MODELAGEM CINEMÁTICA ............................................................................ 21
2.3.1 Referencial Local....................................................................................... 22
2.3.2 Cinemática Direta ...................................................................................... 23
2.3.3 Cinemática Indireta ................................................................................... 24
2.4 PARADIGMAS DAS ARQUITETURAS DE CONTROLE ........................................... 24
2.4.1 Paradigma Hierárquico .............................................................................. 25
2.4.2 Paradigma Reativo .................................................................................... 25
2.4.3 Paradigma Híbrido Deliberativo-Reativo ................................................... 26
2.5 SISTEMA DE CONTROLE ............................................................................... 26
2.6 MÁQUINAS ELÉTRICAS ................................................................................. 28
2.6.1 Motor Corrente Contínua ......................................................................... 28
2.6.1.1 Equivalente elétrico do motor DC série .................................................... 29
2.6.1.2 Função de transferência do motor DC ..................................................... 30
2.6.1.3 Problemas práticos do motor DC ............................................................. 32
2.7 PWM ......................................................................................................... 32
2.7.1 Circuito Gerador de PWM ......................................................................... 34
2.7.2 Módulo PWM no PIC18FXX2 .................................................................... 36
2.8 PONTE H..................................................................................................... 37
2.8.1 Operação do Primeiro Quadrante ............................................................. 38
2.8.2 Operação do Segundo Quadrante ............................................................ 39
2.8.3 Operação do Terceiro Quadrante ............................................................. 40
2.8.4 Operação do Quarto Quadrante ................................................................ 42
2.8.5 Ponte H L298N .......................................................................................... 42
2.9 CONTROLE .................................................................................................. 43
2.9.1 Sistemas de Malha Aberta ........................................................................ 44
2.9.2 Sistemas de Malha Fechada ..................................................................... 44
2.9.3 Comparação Entre Sistemas de Malha Aberta e Fechada ....................... 44
2.9.4 Resposta Transitória e Estacionária .......................................................... 45
2.9.5 Controle para Motor DC ............................................................................ 45
2.10 PID ......................................................................................................... 46
2.10.1 Método de Ziegle-Nichols .......................................................................... 48
2.11 ENCODERS ÓPTICOS.................................................................................... 50
2.12 LINGUAGENS DE PROGRAMAÇÃO ................................................................... 51
2.12.1 Linguagem Assembly ................................................................................ 51
2.12.2 Compiladores ............................................................................................ 52
2.12.3 C ......................................................................................................... 52
2.13 PIC ......................................................................................................... 52
2.13.1 Arquiteturas dos Microcontroladores ......................................................... 53
2.13.2 RISC e CISC ............................................................................................. 54
2.13.3 Microcontroladores da Série PIC18F ........................................................ 55
2.13.3.1 Cristal ou ressonador cerâmico (XT) ........................................................ 56
2.13.3.2 Interrupções .............................................................................................. 58
2.14 ULTRASSOM HC-SR04 ................................................................................ 58
3 DESCRIÇÃO FÍSICA DO PROTÓTIPO .................................................... 59
3.1 MODELAGEM CINEMÁTICA ............................................................................ 61
3.2 PARADIGMA DAS ARQUITETURAS ................................................................... 62
4 HARDWARE ............................................................................................. 63
4.1 ALIMENTAÇÃO ............................................................................................. 63
4.2 PONTE H..................................................................................................... 65
4.3 SENSORES DE VELOCIDADE, SENSOR DE DISTÂNCIA E MOTORES .................... 67
4.3.1 Sensor de Velocidade ............................................................................... 68
4.3.2 Sensor de Distância .................................................................................. 69
4.3.3 Motores ..................................................................................................... 70
4.4 MICROCONTROLADOR .................................................................................. 71
5 SOFTWARE .............................................................................................. 74
6 RESULTADOS OBTIDOS ........................................................................ 77
6.1 FUNCIONAMENTO ......................................................................................... 77
6.1.1 Detecção de Velocidade ........................................................................... 77
6.1.2 Correção da Velocidade ............................................................................ 79
6.1.3 Detecção de Obstáculos ........................................................................... 79
6.2 PROTÓTIPO COMPLETO ................................................................................ 80
7 CONCLUSÃO ........................................................................................... 83
REFERÊNCIAS......................................................................................... 84
APÊNDICES ............................................................................................. 87
APÊNDICE A – Rotina de frenagem e retorno .......................................... 88
ANEXOS ................................................................................................... 89
ANEXO A – Datasheet PIC18F452 ........................................................... 90
ANEXO B – Datasheet CI ponte-H L298N ................................................ 95
ANEXO C – Datasheet módulo HC-SR04 ................................................. 99
12
1 INTRODUÇÃO
A robótica móvel é uma área de pesquisa que lida com o controle de
veículos autônomos ou semiautônomos. O que diferencia a robótica móvel de outras
áreas de pesquisa em robótica, tal como a robótica de manipuladores convencionais
e inteligência artificial é a sua ênfase nos problemas relacionados com a
compreensão de ambientes complexos de larga escala, isto é, regiões do espaço
que se modificam dinamicamente, compostos tanto de obstáculos estáticos como de
obstáculos móveis. Para operar de modo inteligente neste tipo de ambiente não
implica apenas em lidar com a aquisição incremental de conhecimento, a estimação
do erro de posição, a habilidade de reconhecer objetos e lugares importantes ou
familiares, e tempo de resposta real, mas também requer que todas estas funções
sejam executadas em conjunto. Este problema de ambientes complexos influencia
em todos robôs móveis (DUDEK & JENKIN, 2010).
1.1 DESCRIÇÃO DO PROJETO
O conteúdo deste trabalho se refere ao estudo e desenvolvimento do
projeto de um sistema de controle embarcado para um robô móvel. A platafroma
móvel trabalhada possui duas rodas tracionadas por motores DC independentes,
caracterizando um sistema por tração diferencial, e uma terceira roda do tipo castor,
posicionada fora do eixo, apenas para equilíbrio do protótipo.
O veículo autônomo desenvolvido possui capacidade de locomoção
para frente ou para trás. Este também possui um sistema de detecção de obstáculos
posicionados na frente do veículo, o qual reage evitando a colisão e modificando a
rota.
Um sistema de controle de velocidade do tipo PID foi implementado
para que o robô pudesse ter controle sobre à rota a ser traçada, este possibilita uma
movimentação aproximadamente retilínea do protótipo.
O erro de velocidade da protótipo é calculado sobre o eixo do motor,
por meio da utilização de um encoder óptico. Todos os dados são processados por
microcontrolador PIC18F452, fabricado pela Microchip Tecnology Inc..
A apresentação e análise dos resultados obtidos, assim como o
embasamento teórico, a metodologia, descrição detalhada do protótipo, hardware e
13
software, serão comentados mais adiante neste trabalho.
1.2 OBJETIVOS
Os objetivos deste trabalho são estudar os processos e as
dificuldades envolvidas no desenvolvimento de um robô móvel autônomo.
Desenvolver um sistema embarcado de modo a possibilitar à plataforma capacidade
de locomoção frontal ou traseira controlada, ou seja, o resultado da movimentação
seja próximo o suficiente da rota desejada. Bem como, a detecção de objetos
(estáticos ou dinâmicos) posicionados à frete do veículo, de forma que este possa
evitar a colisão.
1.3 JUSTIFICATIVA
O surgimento da computação provou que a construção de máquinas
possibilita a execução de serviços que até então somente o homem era capaz de
fazer, de forma mais rápida e eficiente. As linhas de montagem automatizadas pelo
desenvolvimento da robótica de manipuladores deixa como prova estas vantagens
proporcionadas por estes estudos.
O estudo da robótica móvel não é diferente, projetos desenvolvidos
nesta área, como sondas robóticas, permitiram ao homem explorar e estudar com
mais detalhes planetas, com detalhes e por períodos que não seria vantajoso, ou
viável com a utilização de astronautas.
Entretanto, por mais que haja grandes estudos nesta área, os
protótipos desenvolvidos ainda não atingiram um grau de confiabilidade aliado ao
custo, que sejam interessantes para a comercialização em larga escala destes
objetos.
Outro ponto relevante ao estudo da robótica móvel é o rápido
desenvolvimento das tecnologias envolvidas no projeto deste, dentre as quais
podemos citar microprocessadores menores, mais leves e mais rápidos, sistemas de
comunicações sem fio capazes de sustentar o acompanhamento destes protótipos
sem conexões físicas, a busca por fontes energéticas mais eficientes, baterias de
maior duração, celulas combustível, entre outros. Estes fatores obrigam que as
pesquisas na área da robótica móvel sejam intermitentes, de forma que os projetos
14
possam incorporar, à medida do possível, tecnologias mais novas e mais eficientes.
Este trabalho, estuda o protótipo composto por tração diferencial,
semelhante à modelagem cinemática de uma cadeiras de rodas. Acredita-se que
com o desenvolvimento de projetos nesta área, seja possível a adaptação para
protótipos de reintegração social, bem como, a longo prazo, veículos de tráfego
urbano mais seguros e eficientes, além de outras utilidades.
15
2 REVISÃO BIBLIOGRÁFICA
A robótica móvel apresenta um alto grau de complexidade, a qual
pode envolver desde sistemas para tratamento de dados obtidos por sensores,
acionamento de motores, processadores, controladores, sistemas de potência,
interfaces, arquiteturas mecânicas, desenvolvimento de sensores ou mesmo de
fontes alternativas de alimentação. Devido à esse fator, robôs complexos são
usualmente desenvolvidos por equipes de pesquisa, a qual deve ser composta por
pesquisadores especializados em cada área.
Aliado à este fator, os robôs móveis são usualmente desenvolvidos
para execução de tarefas específicas, ou seja, o processo de adequação de um robô
móvel para uma tarefa diferente, exige uma mudança correspondente na arquitetura
do prototótipo, e por sua vez, uma alteração no projeto como um todo. Por este
motivo, a necessidade de execução de diferentes tarefas usualmente requerem a
contrução de um novo robô.
2.1 ESTADO DA ARTE
Nesta seção, será apresentado um breve histórico de alguns dos
protótipos de robôs móveis desenvolvidos pela comunidade científica, bem como
alguns produtos, desta área, existentes no mercado atual.
O interesse pela área da robótica móvel possui mais de 60 anos. Na
década de 50, Walter (1950) desenvolveu um protótipo capaz de seguir fontes
luminosas e “sentir” o caminho à ser traçado contornando o obstáculo (Walter,
1950).
Em Stanford, Nilsson (1969) desenvolveu o robô móvel SHARKEY, o
qual utilizava dois motores de passo em uma configuração cinemática diferencial
para se locomover, este, era equipado com sensores de distância, câmeras de vídeo
e sensores táteis além de ser conectado a dois computadores por links de rádio e de
vídeo. O robô SHAKEY utilizava programas para percepção, modelagem, e atuação
no ambiente. As tarefas desempenhadas pelo robô incluíam desviar de obstáculos e
detecção da movimentação de blocos coloridos. O robô móvel tinha grandes
dificuldades em processar e interpretar as informações sensoriais obtidas do
16
ambiente e nunca foi capaz de completar uma seqüência completa de ações em um
ambiente real (Melo, 2007).
Segundo (Melo, 2007), novamente em Stanford, no final da década
de 70, Moravec (1990) desenvolveu outro robô móvel. A tarefa do robô era desviar
de obstáculos utilizando uma câmera de vídeo. O robô móvel CART conseguia
desviar dos obstáculos com sucesso, mas era muito lento e tinha problemas em se
localizar no ambiente necessitando de uma iluminação propícia para perceber os
obstáculos adequadamente. Também no final da década de 70 foi desenvolvido o
robô móvel HILARE em Toulouse, França (BRIOT, 1979). Este foi um dos primeiros
projetos de robô móvel desenvolvido na Europa. HILARE utilizava câmeras de vídeo,
sensores de distância a laser e ultrassom para navegar no ambiente. O
planejamento de trajetória era executado utilizando-se uma representação poligonal
do ambiente. Os sensores ultrassônicos eram utilizados para evitar os obstáculos
próximos. O sistema de visão era utilizado para detectar obstáculos distantes e tinha
a limitação de ser muito lento.
Em 1998, foi formada uma equipe multidisciplinar de três
universidades, dando origem ao projeto Nursebot (Pollack. et. al., 2002). O projeto
inicial tinha como objetivo desenvolver um robô móvel assistente para idosos. Em
três anos este grupo havia desenvolvido dois protótipos autônomos Flo (esquerda) e
Pearl (centro e direita) apresentados na figura 2.1.
Figura 2.1: Robôs móveis Flo (esquerda) e Pearl (centro e direita), desenvolvidos
pelo projeto Nursebot.
Fonte: Montemerlo et al. (2002, p. 588).
17
Estes eram equipados com dois Pentium PCs, wireless Ethernet,
detectores de distância à laser SICK, sensores ultrassônicos, microfones para
reconhecimento de fala, caixas de som para síntese de fala, displays gráficos
sensíveis a toque, unidades centrais de atuação e sistemas de câmera stereo
(Montemerlo, 2002).
Em 2003, uma parceria entre a DEKA e Johnson and Johnson’s
Independence Technology desenvolveram uma cadeira de rodas motorizada
chamada iBOT (figura 2.2). Este robô móvel utilliza a tecnologia de um giroscópio, a
qual permite que ele se equilibre em apenas duas rodas, deste modo elevando o
assento. Com o sucessivo movimento de duas rodas sobre as outras duas, permitido
pelo iBOT, existe possibilidade do usuário subir escadas (Watanabe, 2009). Em
2009 a Johnson & Johnson retirou o produto das vendas e no final de 2013 o
suporte às unidades existentes também cessaram.
Figura 2.2: Cadeira de rodas, iBot, desenvolvida pela parceria entre DEKA e
Johnson and Johnson’s Independence Technology.
Fonte: http://en.wikipedia.org/wiki/IBOT.
Um aspirador de pó autônomo foi introduzido no mercado pela
Electrolux, no ano de 2001. Este produto, chamado Trilobite (figura 2.3), por
apresentar uma aparencia semelhante a um trilobita (artrópode característico do
Paleozóico), foi o primeiro aspirador de pó autônomo, comercialmente disponível. O
Trilobite possui a capacidade de mapear ambientes e evitar obstáculos, por meio de
sensores ultrassônicos e mais tarde infravermelho.
18
Figura 2.3: Aspirador de pó, Trilobite, desenvolvido pela Electrolux.
Fonte: http://en.wikipedia.org/wiki/Electrolux_Trilobite
Na área de entretenimento, desenvolvido pela Sony, um robô de
estimação foi criado, chamado AIBO (figura 2.4). O primeiro protótipo foi anunciado
em meados de 1998 e o produto à venda foi lançado em maio de 1999. O primeiro
modelo lançado possuia um processador de 64-bits RISC, 16 Mbytes de RAM,
sensores de toque, câmera, distância, microfone, aceleração e velocidade angular,
auto-falante e atuadores na perna, pescoço, boca e cauda.
Figura 2.4: AIBO, robô móvel de entretenimento, desenvolvido pela Sony.
Fonte: http://en.wikipedia.org/wiki/AIBO#mediaviewer/File:AIBO_ERS111_210.jpg
O protótipo foi desenvolvido de forma ao robô adiquirir uma pseudo-
personalidade, de acordo com os estímulos recebidos, além de reconhecimento de
ambiente e comandos de voz para as línguas inglês, espanhol e japonês.
19
Para operações militares a iRobot Corporation, juntamente com a
John Deere, desenvolveu a plataforma robótica não tripulada iRobot R-Gator (figura
2.5). Este veículo pode operar de modo autônomo patrulhando um perímetro ou
seguindo os pontos de passagem até chegar ao local previamente determinado.
Figura 2.5: R-Gator, veículo militar autônomo desenvolvido pela parceria entre
iRobot Corporation e John Deere.
Fonte: http://en.wikipedia.org/wiki/IRobot_R-Gator#mediaviewer/File:IRobot_John_Deere_R-
Gator.jpg
Este veículo que pesa aproximadamente 660 Kg, também possui
capacidade de seguir as tropas, ser operado à distância ou, caso necessário, ser
manualmente dirigido.
Modelos pequenos para inspeção e limpesa de tubos foram
desenvolvidos pela Eventronic, como é o exemplo do Inspector Bot (figura 2.6) e
CleanBot (figura 2.7).
Figura 2.6: Inspector Bot, robô móvel autônomo desenvolvido pela Eventronic para
inspeção de tubos.
Fonte: Secchi (2008, p. 8)
20
Figura 2.7: CleanBot, robô móvel autônomo desenvolvido pela Eventronic para
limpeza de tubos.
Fonte: Secchi (2008, p. 8)
2.2 SISTEMA DE TRAÇÃO DIFERENCIAL
A tração diferencial consiste de duas rodas alinhadas em um eixo,
alimentadas por dois motores mecanicamente independentes. Este modelo
apresenta uma terceira roda, roda livre do tipo castor, posicionada sobre a reta
perpendicular, simétrico às rodas motorizadas, como pode ser observado na figura
2.8.
Figura 2.8: Modelo de robô móvel com rodas acionado por tração diferencial.
Fonte: Modificado de Melo (2007, p. 13).
21
Este robô móvel é de simples estudo, porém possui uma grande
vantangem em termos de escalabilidade do sistema, i.e., uma vez desenvolvido o
controle para um protótipo de baixo custo, este pode ser facilmente adaptado para
sistemas mais robustos como sondas ou cadeida de rodas elétricas, sem alteração
no modelo de controle, nem cinemática.
Em contrapartida o robô móvel de tração diferencial possui um grau
de liberdade igual a dois, ou seja, este sistema não age de forma independente
sobre as variáveis de estado (x, y, θ) a que esse sistema está submetido (plano
horizontal), sendo necessária a utilização de manobras para realização de certas
trajetórias (Fierro & Lewis, 1998).
Para uma modelagem completa de um sistema robótico móvel, três
modelamentos são essenciais. Cinemático, determina a função de transferência das
variáveis que denominam a posição no ambiente a qual o robô está submetido, em
relação ao seu grau de liberdade de movimento. Dinâmico, são acrescentadas
consideração da massa e forças que agem sobre o sistema, gerando restrições no
sistema (Melo, 2007). Por fim, controle, este define trajetórias as quais a plataforma
móvel poderá se deslocar dentro do ambiente a que está submetida.
Abordagens mais específicas de um robô móvel sugerem a divisão
da modelagem cinemática e dinâmica em dois grupos cada. Os quais são o modelo
cinemático de estado (propriedades de capacidade de manobra do robô), a
configuração do modelo cinemático(teoria de sistemas não holonômicos), a
configuração do modelo dinâmico (descrição completa do sistema dinâmico) e o
modelo dinâmico de estado (resposta equivalente da configuração do modelo
dinâmico) (Campion, 1996).
2.3 MODELAGEM CINEMÁTICA
A cinemática é o estudo mais básico de modelos robóticos, esta
modelagem permite um entendimento prévio teórico de como o robô móvel poderá
se movimentar dadas as suas características mecânicas. Este estudo, comum
dentro da mecatrônica, não é especifico para robôs móveis. Manipuladores robóticos
são assuntos de pesquisas a mais de 30 anos (Melo, 2007).
Entretando existe uma diferença básica entre o estudo da cinemática
de sistemas robóticos móveis e manipuladores. Manipuladores estão fixos a um
22
determinado ponto do ambiente, limitando sua movimentação ao conjunto de
movimentos possíveis de cada junta, enquanto robôs móveis se movimentam dentro
de um ambiente sem qualquer tipo de ligação física ao seu ponto de partida.
Existem dois tipos de cinemática a serem estudas, a direta e a
inversa.
2.3.1 Referencial Local
Antes de abordarmos os conceitos de cinemática direta e inversa
discutiremos o modelamento matemático que possibilita o cálculo da razão entre as
velocidades em relação ao referencial inicial global e o referencial local.
Para se calcular o vetor velocidade instantânea global (𝜉𝑓), em
relação ao vetor velocidade instantâneas local é preciso primeiramente definir o
referencial local a ser adotado, este, pode ser observado na figura 2.9.
Figura 2.9: Planos de referência global e local do robô.
Fonte: Melo (2007, p. 11).
23
É importante enfatizar que o referencial móvel adotado para esse
estudo está posicionado sobre o ponto P da figura 2.9, i.e, o ponto médio do eixo
que passa pelas rodas motorizadas. Desta forma, podemos definir os vetores
velocidade intantânea relativa a cada referencial como:
𝜉𝐼 = [
θ
] ∴ 𝜉𝑅 = [
𝑅
𝑅
θ𝑅
]
(2.1)
Para se descrever o movimento do veículo em termos de suas
variáveis cinemáticas é preciso mapear o movimento ao longo dos eixos de
referência global em relação ao movimento ao longo dos eixos de referência local do
móvel. O mapeamento deve ser em função do posicionamento do móvel e dado em
função da matriz de rotação ortogonal (Cruz, 2007).
𝑅(θ) = [
cos θ sen θ 0− sen θ cos θ 0
0 0 1]
(2.2)
Onde θ é o ângulo formado entre a referência global e a referência
móvel adotada, deste modo substituindo (1) em (2) obtemos:
[
𝑅
𝑅
θ𝑅
] = [cos θ sen θ 0
− sen θ cos θ 00 0 1
] [
θ
]
(2.3)
2.3.2 Cinemática Direta
O estudo da cinemática direta, permite estimar o vetor velocidade
instantânea final do veículo em relação ao referencial inercial global (𝜉𝑓), a partir dos
valores locais de velocidade angular de rotação dos motores, distância entre rodas e
diâmetro delas.
Para determinação da cinemática direta do robô de tração diferencial
é preciso reescrever a equação de determinação de velocidades em relação ao
referencial global em função das variáveis conhecidas, i.e., o diâmetro de cada roda
24
(D), a distância entre rodas (L) e velocidade angular de cada roda (𝜙1 e 2) (Melo,
2007):
[
θ
] = 𝐹𝑇−1 [0] = [
cos θ − sen θ 0sen θ cos θ 0
0 0 1]
[ 𝐷
2(𝜙1 + 2)
0𝐷
𝐿(𝜙1 − 2)]
(2.4)
2.3.3 Cinemática Indireta
A cinemática inversa é o processo contrário à direta, ou seja,
escolhe-se um ponto alvo ou uma trajetória a que o robô deverá percorrer, então
defini-se o processo de manobras a que o sistema móvel será submetido para
execução desta tarefa.
2.4 PARADIGMAS DAS ARQUITETURAS DE CONTROLE
Para o desenvolvimento de robôs móveis complexos, é essencial
definir uma arquitetura de controle. Esta deve englobar diferentes módulos de
harware e software, determinar como estes módulos deverão ser implantados, bem
como formalizar a relação entre eles. O processo de instanciação de uma arquitetura
é conhecido como organização de controle (Britto, 2008).
As arquiteturas de controle podem divididas em três paradigmas
principais. Estas são paradigma hierárquico, paradigma reativo e paradigma híbrido
deliberativo-reativo. São duas as abordagens para descrever estes paradigmas
(Britto, 2008):
Relação entre as primitivas sentir, planejar e agir. Sentir,
corresponde à recepção e análise dos dados captados pelos sensores. Planejar,
está relacionado à produção de funções que o robô decide executar, como escolher
trajetos. Agir, se relaciona com movimentação do protótipo ou produzir comandos
para outros atuadores.
Modo como os dados sensoriais são processados e distribuidos no
sistema. Os dados dos sensores podem ser processados independentemente para
cada função do robô ou então, capta-se toda a informação sensorial e depois, se
25
processa a informação em um modelo global.
2.4.1 Paradigma Hierárquico
O paradigma hierárquico funciona de forma sequencial e organizada
(Britto, 2008). Primeiramente o robô capta todos os sinais possíveis pelos seus
sensores, em seguida ele organiza as informações processando elas de uma forma
global, criando o que é chamado modelo de mundo, em seguida há um
planejamento das possíveis ações e escolha da próxima tarefa, para, por fim, agir
realizando a diretiva.
Este modelo é adotado pela arquitetura NASREM (NASA Standart
Reference Model for Telebot Control System Architectures) [Albus et al., 1989].
Dentre as vantagens do paradigma hierárquico existe a precisão oferecida pelo
modelo de mundo para ambientes estáticos e capacitade de movimentos mais
complexos, entretanto há um grande gasto computacional e uma pequena robustez
para ambientes dinâmicos.
2.4.2 Paradigma Reativo
O paradigma reativo age de forma a responder a estimulos do
ambiente, sendo esta reação processada concorrentemente ou sequencialmente. O
acesso aos sensores são feitos de maneira independente para cada camada, sendo
que se uma delas deixar de funcionar as outras ainda continuam operando
normalmente.
Para o paradigma reativo, podemos dizer que não existe o
componente planejar, ficando este restrito a sentir o ambiente e reagir aos estímulos.
Dentre as arquiteturas que utilizam este modelo podemos citar Subsunção [Brooks,
1986], a baseada em Campos Potenciais [Murphy, 2000] e a arquitetura que será
apresentada mais adiante neste trabalho.
Este paradigma apresenta como vantagem a rápida execução do
sistema e rápida resposta a estímulos externos, tornando esta arquitura mais
robusta para ambientes dinâmicos, porém a inexistência de plajamento impossibilita
a execução de tarefas complexas.
26
2.4.3 Paradigma Híbrido Deliberativo-Reativo
O paradigma híbrido age em duas etapas. Primeiro há um
planejamento da tarefa a ser cumprida em seguida o robô age para o cumprimento
desta tarefa, simultaneamente reagindo aos estímulos do ambiente captados pelos
seus sensores. Após o cumprimento da tarefa cria-se um novo planejamento.
Este modo possui a vantagem do planejamento ser independente da
parte sensorial e funções de ação, ou seja, este modelo alia a precisão e
possibilidade de tarefas complexas, do paradigma hierarquico, com o rápido
processamento de mudanças súbitas do ambiente, do paradigma reativo.
Pela aparente vantagem deste método existem diversas arquiteturas
que seguem este paradigma, dentre elas podemos citar AuRa [Arkin et al., 1987],
PyramidNet [Roisenberg et al., 2004], 3-Tiered [Bonasso et al., 1997], Saphira
[Konolige & Myers, 1998], dentre outras.
2.5 SISTEMA DE CONTROLE
Além das limitações constatadas por meio da análise da modelagem
cinemática e dinâmica existe um terceiro fator a ser considerado para o
funcionamento satisfatório de um protótipo móvel autônomo. Este fator é chamado
sistema de controle.
Os controladores de tragetória podem ser projetados como
controladores dinâmicos, ou cinemáticos. Nos controladores dinâmicos o modelo
dinâmico do robô deve ser obtido experimentalmente, cujos parâmetros variam
conforme mudanças estruturais, ou variação do peso. Nos controladores cinemáticos
(utilizados neste trabalho) determina-se a velociadade de referência para os eixos,
que serão aplicadas pelo controlador de velocidade (Borges, 2003).
Um sistema de variação de velocidade moderno precisa ter quatro
componentes (Krishnan, 2001):
Máquinas elétricas: Motores AC síncronos ou assíncronos ou
motores DC.
Conversores de potência: Retificadores, PWM, Inversores ou
cicloconversores.
Controladores: Estes são projetados de acordo com as
27
especificações dos motores e conversores, de modo a
obedecer às especificações de projeto.
Carga: Juntas, rodas, esteiras, entre outros.
A não linearidade e a não igualdade entre os motores utilizados no
sistema de tração do robô móvel acarretam dois dos grandes problemas dos
sistemas de controle. Para a análise deste complexo estudo, far-se-á uso do sistema
de controle ilustrado na figura 2.10, para análise de cada componente sob a ótica do
surgimento, problemas acarretados, e possíveis soluções para a não linearidade e
não igualdade nos robôs móveis de tração diferencial.
Figura 2.10: Sistema de controle de velocidade de um motor DC.
Fonte: Adaptado de Bhagat & Bhaganagare (2009, p. 1).
O diagrama de blocos do sistema de controle de velocidade de um
motor DC é mostrado na figura 2.10. A velocidade do motor é obtida por um
comutador óptico e convertido em nível de tensão ou então, este sinal pode ser
entendido como frequência de rotação do motor por um microcontrolador.
A velocidade obtida é então comparada com a velocidade de
referência. O controle PID, então age no sinal de erro e gera um controle de
velocidade apropriado. O bloco do gerador PWM, então varia o ciclo ativo da tensão
de alimentação do motor, reajustando a velocidade (Bhagat & Bhaganagare, 2009).
28
2.6 MÁQUINAS ELÉTRICAS
As máquinas elétricas usadas atualmente nas aplicações para
controle de velocidade são as seguintes:
Máquinas DC: Paralelo, série, composto, motores DC
excitados separadamente e máquinas de relutância
comutada.
Máquinas AC: Indução, síncrono de rotor enrolado, síncrono
de campo permanente, relutância síncrona e máquinas de
relutância comutada.
Máquinas especiais: Máquinas de relutância comutada.
Neste trabalho, entretanto trataremos apenas do estudo de motores
DC.
2.6.1 Motor Corrente Contínua
Máquinas de corrente contínua tem sido utilizadas a mais de um
século, porém com o surgimento de motores de indução estas perderam seu
espaço, devido a fatores tais como alto custo.
Com o advento dos retificadores controlados, como por exemplo
transistores bipolares, e facilidade de controle de velocidade oferecida por estes
componentes, esse motores tiveram uma grande volta na utilização industrial
(Krishnan, 2001).
Os motores DC tem sido muito utilizados na área de controle
industrial a um longo tempo, pois estes apresentam um alto torque inicial, uma alta
resposta de performance e facilidade de se implementar um sistema de controle. A
velocidade (em rpm) de um motor DC é dada pela relação (Singh et al., 2013):
𝑁𝑟 =𝑉 − 𝐼𝑎. 𝑅𝑎
𝑘𝜑
(2.5)
Onde V é a tensão de alimentação, 𝑅𝑎 e 𝐼𝑎 são respectivamente a
resistência e a corrente de armadura e 𝜑 o fluxo de campo. A potência, tensão e
velocidade fornecidas pela placa de identificação do motor são valores nominais, ou
29
seja, para modo de operação contínuo após a estabilização do sistema. O torque de
eixo (𝑇0) da máquina é calculado, a partir da potência nominal (𝑃0), como (Krishnan,
2001):
𝑇0 = 𝑃0. 745.6
𝜔𝑚 [𝑁.𝑚]
(2.6)
𝜔𝑚 = 2𝜋𝑁𝑟
60 [𝑟𝑎𝑑/𝑠𝑒𝑐]
(2.7)
O cálculo da eficiência do motor é dado pela equação (2.8):
𝜂 = 𝑃0
𝑃𝑖
(2.8)
Este cálculo é importante para se estimar as perdas de energia
inerentes aos componentes de um robô, sem que haja algum trabalho realizado pelo
mesmo.
2.6.1.1 Equivalente elétrico do motor DC série
O circuito elétrico que representa o motor DC série com as
características citadas acima está ilustrado na figura 2.11.
Figura 2.11: Circuito equivalente do controle de um motor usando o método de
controle de tensão na armadura.
Fonte: Huang & Lee (2008, p. 401).
30
Onde 𝑅𝑎, 𝐼𝑎, e V (𝑒𝑎) são elementos da equação (2.5) e
correspondem respectivamente à resistência e corrente de armadura e tensão de
alimentação. Ainda, 𝐿𝑎 é a autoindutância de armadura, 𝐼𝑓 é a corrente de campo, 𝑒𝑏
é a força eletromagnética de volta na armadura, T o torque de saída do motor, ω é a
velocidade angular do rotor, J o momento de inércia equivalente do eixo do motor
mais carga e B o coeficiente de fricção do eixo do motor mais carga.
2.6.1.2 Função de transferência do motor DC
Motores DC possuem a capacidade de controle de velocidade, o que
resulta na possibilidade de alterar a velocidade, o torque ou mesmo a direção de
rotação deste, idealmente, a qualquer momento.
Para efetuar o controle de velocidade, deve-se primeiro obter a
função de transferência do motor. Pode-se obter esta função por meio da análise do
circuito equivalente do motor. Como a força eletromagnética equivalente de volta no
motor (𝑒𝑏) é diretamente proporcional à velocidade angular do rotor (ω) (Huang &
Lee, 2008).
𝑒𝑏(𝑡) = 𝐾𝑏
𝑑𝜃(𝑡)
𝑑𝑡= 𝐾𝑏 . ω(t)
(2.9)
Usando a lei de Kirchhoff para a malha temos:
𝑒𝑎(𝑡) = 𝑅𝑎𝑖𝑎(𝑡) + 𝐿𝑎
𝑑𝑖𝑎(𝑡)
𝑑𝑡+ 𝑒𝑏(𝑡)
(2.10)
Aplicando a lei de Newton no torque do motor obtém-se:
𝑇𝑚(𝑡) = 𝐽𝑑2𝜃(𝑡)
𝑑𝑡2+ 𝐵
𝑑𝜃(𝑡)
𝑑𝑡= 𝐾𝑡𝑖𝑎(𝑡)
(2.11)
Calcula-se a transformada de Laplace para as equações (9), (10) e
(11), respectivamente, desta forma:
31
𝐸𝑏(𝑠) = 𝐾𝑏Ω(𝑠) (2.12)
𝐸𝑎(𝑠) = (𝑅𝑎 + 𝐿𝑎𝑠)𝐼𝑎(𝑠) + 𝐸𝑏(𝑠) (2.13)
𝑇𝑚(𝑠) = 𝐵Ω(𝑠) + 𝐽𝑠Ω(𝑠) = 𝐾𝑇𝐼𝑎(𝑠) (2.14)
O modelo matemático da função de transferência de um motor DC é
ilustrado na figura 2.12.
Figura 2.12: Diagrama de blocos do sistema de controle de um motor DC por
controle da tensão de armadura.
Fonte: Huang & Lee (2008, p. 402).
Deste modo, como observado na figura 2.12 a função de
transferência do motor DC pode ser obtida como:
𝐺(𝑠) =Ω(𝑠)
𝐸𝑎(𝑠)=
𝐾𝑇
(𝑅𝑎 + 𝐿𝑎𝑠)(𝐽𝑠 + 𝐵) + 𝐾𝑏𝐾𝑇
(2.15)
Uma vez que se possua as especificações e a função de
transferência do motor, é possível contruir um sistema controlado capaz de ajustar a
tensão de entrada de tal modo que a frequência angular de saída do motor esteja
adequada às necessidades do projeto.
32
2.6.1.3 Problemas práticos do motor DC
O motor DC é um componente não linear sua velocidade varia com a
mudança de demanda de carga, disturbios, etc. Além de que o torque varia muito
com a velocidade, partindo do máximo torque (velocidade zero) até zero (velocidade
de rotação sem carga alguma) (Jayavishrutha et al., 2014).
Somado à não linearidade dos motores, temos que os fatores
internos de um motor para outro mudam, i.e., os valores dos componentes do
circuito elétrico equivalente é diferente de um motor para outro e por consequência,
sua função de transferência. Alterando-se a velocidade de estabilização para as
mesmas tensões de entrada.
2.7 PWM
No caso de um único estado AC ou DC de conversão de
alimentação, controladores por controle de fase são usados para acionar máquinas
DC. Entretanto, sempre que a fonte for uma tensão DC constante, como uma
bateria, utiliza-se um tipo diferente de conversão de uma tensão fixa para uma
variável e por consequência realizar o controle de velocidade do motor DC. Esse
controle é feito comutando a fonte de alimentação entre ligado e desligado
(Krishnan, 2001).
O conversor capaz de realizar tal tarefa é chamado PWM (Pulse
Width Modulator), ou modulador por largura de pulso. O PWM é um circuito que gera
uma forma de onda quadrada para uma fonte de tensão de alimentação constante.
Figura 2.13: Sinal PWM com diferentes razões cíclicas.
Fonte: http://kababaka.com/artykuly/sciemnianie-led/
33
Com o auxílio do sinal PWM ilustrado na figura 2.13, podemos
enfatizar três informações importantes sobre este sinal, a amplitude do pulso, a
frequência do sinal e a razão cíclica.
A amplitude do pulso de PWM é igual a tensão fornecida pela fonte
de alimentação menos as perdas internas do circuito gerador de PWM. Esta tensão
é a tensão que irá prover a velocidade máxima para o motor, quando não há
modulação, i.e., o motor está sob alimentação direta da fonte de tensão constante.
A frequência de operação do sinal (𝑇−1), que não se altera nos
sinais da figura 2.13, é obtida da seguinte forma:
𝑓𝑐 = 1
𝑡𝑜𝑛 + 𝑡𝑜𝑓𝑓 =
1
𝑇
(2.16)
Onde 𝑡𝑜𝑛 é tempo em que o sinal está ligado e 𝑡𝑜𝑓𝑓 o tempo em que
o sinal está desligado (Krishnan, 2001). A frequência de operação do sinal PWM não
tem efeito direto sobre a velocidade do motor, porém existem dois elementos
importantes a serem considerados quanto à sua escolha.
Para frequências baixas, o sinal médio sobre o motor DC é igual ao
de frequências altas, porém o tempo do ciclo ativo, ou reativo começam a ser
observáveis. Para casos extremos de frequência baixas o motor será acionado à
velocidade máxima e em seguida desligado até parar.
Sugere-se que a frequência de operação deva ser elevada de forma
que o motor trabalhe em torno do ponto desejado de sua curva de torque, sem que
este extrapole a de margem de erro aceitável de operação.
Para frequências altas, idealmente o sistema estabilizará cada vez
mais próximo do ponto desejado da curva de torque do motor, porém existe um fator
a ser considerado. A comutação de um sinal DC para zero, ou o caminho inverso,
gera frequências harmônicas indesejadas no circuito, isto é, com o aumento da
frequência aumenta-se também a amplitude das harmônicas na geração da onda
quadrada de forma a corromper o funcionamento ideal do sistema.
Como prática, sugere-se que a frequência do PWM seja muito maior
que a frequência de rotação do motor (Yedamale, 2003). Deste modo, garante-se
que o motor complete vários ciclos do PWM (sugere-se em torno de 10), antes que
este complete um ciclo de rotação.
34
A razão cíclica do sinal PWM é usada para controlar a tensão média
de alimentação do motor, i.e., varia-se a razão cíclica do PWM para controlar a
velocidade de rotação do motor (Bhagat & Bhaganagare, 2009). A razão cíclica (D) é
dada como:
𝐷 = 𝑡𝑜𝑛
𝑇
(2.17)
Esta técnica usada por Bhagat e Bhaganagare em 2009, também é
usada neste trabalho no qual o controle PID controla a tensão por meio do erro. O
controle de tensão é aplicado ao gerador de PWM o qual, pode mudar a razão
cíclica conforme seja necessário. A vantagem do PWM é que os pulsos chegam com
a tensão máxima de alimentação e produzirá um torque maior no motor e superará
com maior facilidade as resistências internas do motor (Bhagat & Bhaganagare,
2009).
Como dito anteriormente, a tensão de saída, para alimentação do
motor durante o período ativo do PWM é igual a diferença entre a tensão de
alimentação e as perdas do circuito gerador de PWM, porém se considerarmos um
sistema ideal, teremos uma tensão média sobre o motor, durante um ciclo de PWM
igual a (Krishnan, 2001):
𝑉𝐷𝐶 = 𝑡𝑜𝑛
𝑇𝑉𝑠 = 𝐷. 𝑉𝑠 [𝑉]
(2.18)
Onde 𝑉𝑠 é a tensão de alimentação do circuito.
2.7.1 Circuito Gerador de PWM
O circuito gerador de PWM analógico é de simples montagem, o
qual é composto por um sinal dente-de-serra comparado com um sinal de referência,
como ilustra a figura 2.14.
35
Figura 2.14: Diagrama de blocos do método analógico de geração de PWM.
Fonte: o próprio autor.
O amplificador operacional, ligado no seu formato de comparador,
irá comutar o sinal de saída para tensão máxima de alimentação, quando a onda
triangular tiver amplitude menor que o sinal de referência e apresentará um sinal de
saída nulo ou tensão mínima de alimentação, quando a onda triangular for maior que
o sinal de referência.
A módulo analógico capaz de gerar um sinal dente-de-serra está
ilustrado na figura 2.15.
Figura 2.15: Circuito analógico gerador de sinal triangular dente-de-serra.
Fonte: www.feng.pucrs.br/~stemmer/labeletronica/tr2/trab2_2.html
Este circuito apresenta na sua saída uma onda triangular composta
por duas fases. A primeira é uma rampa, que ocorre durante o carregamento do
capacitor, a segunda fase ocorre quando o capacitor acaba de se carregar, então
neste momento ocorre um rápido descarregamento do capacitor, fazendo com que o
36
tempo de descarga seja despresível. A onda resultante é chamada dente-de-serra.
A frequência do sinal PWM resultante é igual a frequência do sinal
dente-de-serra, enquanto que a razão cíclica do PWM é regulada pelo nível de
tensão da tensão de referência do PWM. Deste modo, a razão cíclica em
porcentagem representa a porcentagem da razão entre a tensão de pico da função
dente-de-serra e a tensão do nível de referência.
2.7.2 Módulo PWM no PIC18FXX2
O PIC18FXX2, possui dois módulos de PWM, módulo CCP1 e
módulo CCP2, estes módulos são compostos por registradores de 8 bits cada, os
quais são respectivamente, CCPR1L e CCPR2L (LSByte) e CCPR1H e CCPR2H
(MSByte). Enquanto os registradores CCP1CON e CCP2CON, respectivamente,
controlam a operação de CCP1 e CCP2.
O modo PWM possui como recurso o timer 2 para os dois PWMs,
fazendo com que os dois módulos possuam a mesma taxa de atualização e
frequência de operação, sendo esta igual ao inverso do período do timer. A
resolução do PWM, na saída dos pinos CCP1 e CCP2 é de 10 bits (cada) os quais
são dados por CCPRXL (MSByte) concatenados com CCPXCON<5:4>.
O período é especificado no registrador PR2 e pode ser calculado
como:
𝑇𝑃𝑊𝑀 = ((𝑃𝑅2) + 1). 4. 𝑇𝑂𝑆𝐶 . (𝑇𝑀𝑅2𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟) (2.19)
A resolução máxima que pode ser obtida, dada uma frequência de
operação fixa é dada por:
𝑃𝑊𝑀𝑅𝑒𝑠𝑜𝑙𝑢çã𝑜𝑀𝑎𝑥=
log (𝐹𝑜𝑠𝑐
𝐹𝑃𝑊𝑀)
log 2 [𝑏𝑖𝑡𝑠]
(2.20)
Os seguintes passos são sugeridos para a configuração do PWM
(Microchip Technology Inc., 2002):
Ajuste o perído do PWM por meio do registrador PR2.
37
Ajuste o ciclo ativo do PWM por meio dos registradores
CCPR1L e CCP1CON<5:4> bits.
Faça o pino CCP1 uma saída colocando o bit “0” para o bit
TRISC<2>.
Ajuste o valor de pré-escala TMR2 e habilite o Timer2 por
meio do registrador T2CON.
Configure o módulo CCP1 para operação PWM.
2.8 PONTE H
O sinal PWM é capaz apenas de gerar tensões médias entre zero e
𝑉𝑠, deste modo o sentido de rotação de um motor DC conectado à saída do gerador
PWM é capaz de regirar apenas em um sentido, porém para movimentação de robôs
móveis de tração diferencial muitas vezes é impressindível que ao menos uma das
rodas gire no sentido contrário.
Para que o sentido de rotação do motor DC seja invertido, sem que
seja necessário alterar o módulo de geração PWM, utiliza-se um módulo chamado
ponte H.
Um exemplo do circuito de ponte H está ilustrado na figura 2.16.
Este circuito combinado com os sinais de PWM também podem ser chamados de
circuito “chopper” de quatro quadrantes.
Figura 2.16: Circuito de ponte H com operação nos quatro quadrantes.
Fonte: Krishnan (2001, p.126).
38
É importante ressaltar que cada transistor deve ter um diodo de roda
livre ligado em anti-paralelo, pois transistores bipolares não suportam a tensão
reversa gerada pela indutância do motor após a comutação dos transistores.
2.8.1 Operação do Primeiro Quadrante
A operação do primeiro quadrante corresponde à uma tensão e
corrente positivas. Este efeito é obtido ao ativar os transistores 𝑇1 e 𝑇2
simultaneamente, deste modo a tensão no motor é igual ao da fonte, como ilustrado
na figura 2.17.
Figura 2.17: Operação do primeiro quadrante da ponte H com tensão e corrente
positivas, sobre a carga.
Fonte: Krishnan (2001, p.127).
Para se obter uma tensão de alimentação igual a zero, 𝑇1 ou 𝑇2
comutam para corte, deste modo a corrente no motor tenderá a baixar, ilustrado na
figura 2.18. Quando a corrente começa a baixar, a indutância do motor terá uma
tensão induzida reversa, assim o diodo 𝐷4 conduz até que a tensão chegue a
aproximadamente zero (Krishnan, 2001).
39
Figura 2.18: Operação do primeiro quadrante da ponte H com tensão igual a zero,
sobre a carga.
Fonte: Krishnan (2001, p.127).
A tensão sobre o motor, portanto, será uma onda quadrada como o
sinal PWM, com a tensão média de alimentação do motor variando entre 𝑉𝑠 e 0, uma
vez que a razão cíclica varia entre 0 e 1.
2.8.2 Operação do Segundo Quadrante
A operação do segundo quadrante corresponde a uma corrente
positiva com uma tensão negativa, sobre os terminais do motor. Uma vez que os
transistores 𝑇1 e 𝑇2 comutam para o estado de corte, a nova configuração do sistema
fica como ilustrado na figura 2.19.
40
Figura 2.19: Operação do segundo quadrante com tensão negativa e corrente
positiva, sobre a carga.
Fonte: Krishnan (2001, p.129).
A corrente induzida no motor deve continuar a passar até que a
energia neste chegue a zero. Portanto, os diodos 𝐷3 e 𝐷4 manterão a corrente do
motor na mesma direção, mas ao contrário do primeiro quadrante, a tensão nesta
configuração do circuito é negativa. Enquanto os diodos 𝐷3 e 𝐷4 estão conduzindo, a
fonte recebe energia da carga. Esta forma de recuperação de energia da carga é
conhecida como “regenerative braking” (Krishnan, 2001).
2.8.3 Operação do Terceiro Quadrante
A operação do terceiro quadrante provê corrente e tensão negativas.
O funcionamento deste quadrante é muito semelhante ao do primeiro, porém ao
invés dos trasistores 𝑇1 e 𝑇2 serem ativados, ativa-se 𝑇3 e 𝑇4. Resultando nos
circuitos ilustrados nas figuras 2.20 e 2.21.
41
Figura 2.20: Modo de operação do terceiro quadrante com a corrente sobre a carga
aumentando.
Fonte: Krishnan (2001, p.130).
Figura 2.21: Modo de operação do terceiro quadrante com a corrente sobre a carga
diminuindo.
Fonte: Krishnan (2001, p.130).
Como resultado para a corrente e tensão na carga negativas, há
uma rotação do motor no sentido contrário ao do primeiro quadrante, possibilitando o
motor a girar em dois sentidos com apenas um PWM (positivo) variando a razão
cícica de 0 a 1.
42
2.8.4 Operação do Quarto Quadrante
A operação do quarto quadrante corresponde a uma tensão positiva
e uma corrente negativa no motor. Sendo este semelhante ao segundo quadrante,
porém os diodos 𝐷1 e 𝐷2 são ativos neste caso.
2.8.5 Ponte H L298N
O CI L298 possui tensão limite de 46 V, corrente limite de 4 A,
proteção contra superaquecimento, alta imunidade contra ruído (1,5 V para bit “0”) e
baixa tensão de saturação, causando uma menor perda de tensão transferida da
fonte para o motor. Este circuito integrado monolítico possuí duas pontes H
completas e dois pinos habilitação das pontes, que são independentes dos sinais de
entrada (comutação dos transistores). O diagrama de blocos do circuito é mostrado
na figura 2.22.
Figura 2.22: Circuito esquemático do funcionamento interno do CI L298.
Fonte: Datasheet L298 (2000, p.1).
Os pinos 2:3 e 13:14 são, respectivamente, as saída para os dois
motores, enquanto os pinos 1 e 15, são conectados resistores para controlar a
corrente que irá para o motor. Os pinos 6 e 11, são responsáveis por habilitar ou
desabilitar a ponte A e B, respectivamente, e os pinos 5;7 e 10;12 controlam as
43
entradas do TTLs das pontes A e B, i.e., o sentido de giro do motor.
O pino 8 corresponde ao terra do circuito, enquanto o pino 4
corresponde à alimentação do circuito, ou seja, o valor de tensão sobre o motor mais
a perda de saturação dos TTLs. Por fim, o pino 9 alimenta os blocos lógicos do
circuito. Sugere-se utilizar capacitores de 100 nF entre os pinos 4;8 e 9;8, de modo a
manter a alimentação do circuito mais estável (STMicroelectronics, 2000).
2.9 CONTROLE
A introdução do acionamento com velocidades variáveis aumentou a
produtividade e, no processo, a eficiência. O ganho de eficiência de um sistema
pode ser aumentada de 15 a 27% ao introduzir o acionamento com velocidades
variáveis no lugar da velocidade constante de operação. A energia poupada neste
sistema possui benefícios de conservação de recursos naturais, redução de poluição
atmosférica através de menores produções e consumo de energia, e competitividade
na economia (Krishnan, 2001).
O primeiro trabalho significativo em controle automático foi o de
James Watt, que construiu um controlador centrífugo para controle de velocidade de
uma máquina à vapor no século XVIII. Além disto, em 1922, Minorsky trabalhou em
controladores automáticos para pilotagem de navios e mostrou como poderia ser
“determinada” a estabilidade a partir das equações diferenciais que descrevem o
sistema. Em 1932, Nyquist desenvolveu um procedimento relativamente simples
para determinar a estabilidade de sistemas de malha-fechada com base na resposta
à entradas senoidais em regime permanente da malha-aberta. Em 1934, Hazen, que
introduziu o projeto de servomecanismos à relé capazes de seguir muito de perto
uma entrada variável (Ogata, 1985).
Na década de 1940, os métodos de resposta em frequência
possibilitaram o projeto de sistemas de controle realimentados lineares. Em 50, o
método do lugar das raízes em projeto de sistemas de controle foi completamente
desenvolvido (Ogata, 1985).
Os controladores são montados com circuitos analógicos e
integrados. A tendência atual é se usar microprocessadores, processadores de
sinais digitais [DSPs], VLSI e chips especiais customizados também conhecidos
como ASICs (Application Specific Integrated Circuits) para compor um grupo de
44
funções do controlador. A capacidade computacional em tempo real destes
controladores permite algoritmos de controle complexos para serem implementados.
Também, permitem o controle remoto, portanto abrindo caminho para sistemas
flexíveis de manufatura e um alto grau de automação (Krishnan, 2001).
Os controladores incorporam as leis de controle de forma a controlar
as características do motor e suas interações. Muitas estratégias de controle tem
sido formuladas para acionamento de vários motores e os controladores
implementam seus algoritmos (Krishnan, 2001).
2.9.1 Sistemas de Malha Aberta
Sistemas de controle em malha-aberta são sistemas de controle nos
quais a saída não tem efeito na ação do controle. Isto é, em um sistema de controle
em malha-aberta, a saída nem é medida nem é realimentada para compensação
com a entrada (Ogata, 1985).
2.9.2 Sistemas de Malha Fechada
Um sistema de controle em malha-fechada é aquele no qual o sinal
de saída possui um efeito direto na ação de controle. Isto é, sistemas de controle em
malha-fechada são sistemas de controle com realimentação. O sinal erro atuante,
que é a diferença entre o sinal de entrada e o sinal realimentado, é alimentado no
controlador de modo a reduzir o erro e manter a saída do sistema em um valor
desejado. Em outras palavras, o termo “malha-fechada” implica o uso de ação de
realimentação com a finalidade de reduzir o erro do sistema (Ogata, 1985).
Um sistema de controle em malha fechada deve conter pelo menos
três componentes, sendo estes a planta, que é função de transferência do objeto a
ser controlado, um sensor para medir a saída da planta e o controlador, que gera o
sinal de entrada na planta (Doyle, 1990).
2.9.3 Comparação Entre Sistemas de Malha Aberta e Fechada
Os sistemas de controle em malha-fechada, possuem a vantagem
de ser mais robústo quanto à disturbios externos, ou variações internas, devido ao
45
uso da realimentação, mesmo que estes possuam componentes de baixa precisão,
ainda é possível obter um controle satisfatório para determinados parâmetros de
exigência.
Quanto à estabilidade, controles de malha-aberta podem ser mais
fáceis de serem construídos de forma a se obter uma estabilidade satisfatória.
Entretanto, controles em malha-fechada muitas vezes possuem oscilações de
amplitude constante ou variável em torno do ponto de estabilidade desejado.
2.9.4 Resposta Transitória e Estacionária
A resposta temporal de um sistema de controle consiste em duas
partes: a resposta transitória e resposta estacionária. A primeira é aquela que vai do
estado inicial até o estado final, enquanto a resposta estacionária é a maneira como
a saída do sistema se comporta quando o tempo tende a infinito (Ogata, 1985).
2.9.5 Controle para Motor DC
A velocidade de um motor pode ser variada para atingir um certo
valor de velocidade angular, com a diminuição do fluxo de campo, com um aumento
da resistência de armadura, ou com o uso de um sistema de controle de velocidade
de mallha fechada, sendo o mais usado, pois não altera muito as características do
mecanismo e nem acrescenta muitas perdas por calor (Sarhan, 2014).
Existem dois tipo de controle de velocidade para motores DC.
Controle por campo, onde neste método a corrente de campo ou a corrente através
do estator é variada para controlar a velocidade do motor. Controle de armadura,
neste método, a tensão na armadura é variada para controlar a velocidade no motor
por meio de um sinal PWM (Bhagat & Bhaganagare, 2009).
Para se estudar a resposta de malha-aberta do motor DC, este foi
modelado como um sistema de primeira ordem. A função de transferência do motor
DC controlado por tensão na armadura é dado por (Bhagat & Bhaganagare, 2009):
𝜔(𝑠)
𝑉(𝑠)=
𝐾𝑚
𝑠𝑇 + 1
(2.21)
46
Onde 𝜔 é a velocidade (rpm) do motor, V a tensão (V) na armadura,
𝐾𝑚 é a constante de ganho do motor (rpm/V) e T a constante de tempo do motor. É
importante ressaltar que a equação (2.21) é uma aproximação da equação (2.15),
quando se considera a indutância da armadura muito baixa. Neste caso (Huang &
Lee, 2008):
𝐾𝑚 = 𝐾𝑇
𝑅𝑎𝐵 + 𝐾𝑏𝐾𝑇
(2.22)
𝑇 = 𝑅𝑎𝐽
𝑅𝑎𝐵 + 𝐾𝑏𝐾𝑇
(2.23)
A medida de 𝐾𝑚 pode ser obtida, também, ao plotar o gráfico da
tensão da armadura pela velocidade do motor. A inclinação da curva é o valor de
𝐾𝑚.
Para se obter o valor da constante de tempo T, deve-se variar a
velocidade de saída do motor de zero ao máximo. O gráfico da frequência pela
tensão do conversor é chamado tensão de realimentação. A inclinação do gráfico é
o ganho do sistema em malha fechada (𝐾𝑇).
𝑇 =
1
2. 𝑓. 𝑙𝑛 (1 −𝑉𝑓𝑏
𝑉𝑚. 𝐾𝑚. 𝐾𝑇)
(2.24)
Deste modo, ao substituir os valores na equação (2.24), obtemos o
valor da constante de tempo (Bhagat & Bhaganagare, 2009).
2.10 PID
O desenvolvimento da teoria de controle já possui mais de 65 anos,
o controle PID tem sido um dos métodos de projeto de sistemas mais longos da
história. Entretanto, este método é extensivamente usado em diversos trabalhos
(Huang & Lee, 2008).
A combinação das ações de controle proporcional, integral e
derivativo, é chamado controle PID. Os controladores PID são de uso comum para
47
regular o comportamento no domínio de tempo de muitos tipos diferentes de plantas
dinâmicas. Estes controladores são muito populares, pois pode-se obter boas
características de resposta para malhas-fechadas (Singh et al., 2013).
O termo proporcional serve para ajuste da saída do controlador de
acordo com a magnitude do erro. O integral é usado para remover o erro do estado
estacionário do sistema de controle e aumentar a resposta deste. O termo derivativo
é usado para prever a tendência do erro e melhorar a resposta do estado transitório
do sistema (Huang & Lee, 2008).
A figura 2.23, mostra um sistema realimentado, onde é assumido
uma planta de um motor DC que deve ter sua velocidade regulada.
Figura 2.23: Diagrama esquemático de blocos do controlador PID aplicado.
Fonte: Adaptado de Singh et al. (2013, p.23).
O controlador PID é colocado no caminho direto, para que sua saída
seja a tensão aplicada na armadura do motor, e a velocidade do motor é a
realimentação do sistema.
A velocidade de saída do motor é somada com um sinal de
referência, ou sinal de comando, de forma a se obter o sinal de erro. Deste modo, o
sinal de erro é o sinal de entrada do controlador PID (Singh et al., 2013).
𝑈(𝑡) = 𝐾𝑝. 𝑒(𝑡) + 𝐾𝑖 ∫𝑒(𝑡). 𝑑𝑡 + 𝐾𝑑
𝑑𝑒(𝑡)
𝑑𝑡
(2.25)
48
Estas funções tem sido suficientes para a maioria dos processos.
Porque a estrutura do controlador PID é simples, este método de controle é o mais
usado na indústria até agora. O controlador PID é praticamente o ajuste apropriado
dos ganhos proporcional (𝐾𝑝), integral (𝐾𝑖) e derivativo (𝐾𝑑), de modo a se obter a
otimização do funcionamento do controle.
A função de transferência do controlador PID pode ser descrita pela
equação (2.26).
𝐶(𝑠) = 𝐾𝑝1 + (1
𝑇𝑖. 𝑠+ 𝑇𝑑. 𝑠)
(2.26)
Onde 𝑇𝑖 é o tempo de reset do integrador e 𝑇𝑑 é o tempo ou taxa de
derivação (Jayavishrutha et al., 2014). Para a determinação das constantes 𝐾𝑝, 𝑇𝑖 e
𝑇𝑑 existe um método utilizado em larga escala, este é o método de Ziegler-Nichols.
2.10.1 Método de Ziegle-Nichols
A determinação das constantes usando o método do maior ciclo
dado pelas regras de Ziegler-Nichols, o qual é resultado de um experimento
realizado com o controlador já instalado.
A determinação das constantes do PID usando este método é dado
da seguinte forma (Bhagat & Bhaganagare, 2009):
Complete a malha-fechada conectando o controlador antes da
planta.
49
Figura 2.24: Diagrama esquemático da implementação do controlador PID.
Fonte: Adaptado de Bhagat & Bhaganagare (2009, p.8).
Os modulos integral e derivativo são desconectados. Inicia-se
um valor baixo de Kp.
Aumenta-se Kp até que a planta comece a apresentar
oscilações constantes.
Mede-se o tempo de período das oscilações (Pu) e o
correspondente ganho (Kpu).
Os valores obtidos são usados no tabela 2.1 de modo a se
obter os valores de Kp, Ti e Td.
Tabela 2.1: Regra de Zigler-Nichols.
Modo de Controle Método do Maior Período
𝑃𝑐𝑜𝑛𝑡𝑟𝑜𝑙𝑒 𝐾𝑝 = 0,5 𝐾𝑝𝑢
𝑃𝐼𝑐𝑜𝑛𝑡𝑟𝑜𝑙𝑒 𝐾𝑝 = 0,45 𝐾𝑝𝑢
𝑇𝑖 = 0,83 𝑃𝑢
𝑃𝐼𝐷𝑐𝑜𝑛𝑡𝑟𝑜𝑙𝑒
𝐾𝑝 = 0,6 𝐾𝑝𝑢
𝑇𝑖 = 0,5 𝐾𝑝𝑢
𝑇𝑑 = 0,125 𝑃𝑢
Fonte: Bhagat & Bhaganagare (2009, p.8).
50
2.11 ENCODERS ÓPTICOS
Sensores podem ser classificados em dois grupos funcionais, sendo
esses proprioceptivo/exteroceptivo e passivo/ativo. Proprioceptivo se refere a
sensores que medem valores internos do robô móvel, como velocidade do motor.
Exteroceptivo se refere a que medem informações da ambiente externo, como
ultrassom (Siegwart, 2004).
Um tacômetro digital pode ser projetado utilizando um fotosensor
infra-vermelho em formato “U” e um microcontrolador. Sob condições normais a luz
emitida pelo diodo é focada no opto-transistor, durante a interrupção a condução
cessa (Jayavishrutha et al., 2014). O sistema é ilustrado na figura 2.25.
Figura 2.25: Esquemático de funcionamento de um encoder óptico.
Fonte: Adaptado de http://www.fem.unicamp.br/~instmed/Deformacao_Torque.htm
O eixo do motor é conectado no centro do disco de anteparo, deste
modo a frequência de rotação do anteparo é idêntica à do motor. Conforme o disco
de anteparo gira, um sinal de onda quadrada é obtido na saída do fotosensor, uma
vez que seu sensor comuta entre estados de corte e saturação.
Para se obter a frequência de rotação do motor é preciso conhecer
apenas o número de ranhuras que o disco de anteparo possui, assim o período de
rotação é igual ao tempo necessário para se obter o número de pulsos por revolução
na saída do foto transistor. Resultando na equação (2.27):
51
𝑓𝑚𝑜𝑡𝑜𝑟 =1
𝑇=
1
𝜏. 𝑁
(2.27)
Onde 𝑓𝑚𝑜𝑡𝑜𝑟 é a frequência de rotação do motor (rad/s), T o período
de rotação do motor (s), 𝜏 período (s) do sinal na saída do foto transistor, N número
de ranhuras do anteparo.
Um número pequeno de ranhuras no disco de anteparo pode gerar
problemas de precisão no controle de velocidade, principalmente para rotações em
velocidades pequenas no eixo do motor. Entretanto, um número muito alto de
ranhuras, associado à uma rotação muito alta do eixo do motor geram problemas de
origem óptica, como efeito de Lau e Moiré, o que levam à necessidade de sistemas
mais robustos para análise destes sistemas.
2.12 LINGUAGENS DE PROGRAMAÇÃO
O primeiro computador eletrônico foi o ENIAC. Construído nos EUA
durante a II Guerra Mundial e concluído em 1946, tinha por finalidade calcular
rapidamente as tabelas de tiro para peças de artilharia e bombardeamento (Barros,
2003).
Os programas eram inseridos por meio de um leitor de cartões
perfurados (da IBM), sendo escritos diretamente em código-máquina. A linguagem
de máquina, sendo a única que os computadores são capazes de processar,
oferecem grandes dificuldades aos programadores, como longo tempo e grandes
custos de aprendizagem e cada máquina nova utiliza uma nova linguagem (Barros,
2003).
2.12.1 Linguagem Assembly
A descoberta do transistor permitiu a construção de computadores
mais compactos e rápidos. Porém, o modelo de programação em linguagem de
máquina não permitia o acompanhamento da programação com as novas máquinas.
Surge-se, então, a linguagem assembly.
A linguagem assembly é considerada uma linguagem de baixo nível,
muito próximo à linguagem de máquina. Um programa escrito em assembly seria
52
traduzido para linguagem de máquina por um assembler, que recorreria a uma
tabela de tradução. O assembly permitiu aumentar o número de programadores e o
desenvolvimento de aplicações para computadores (Barros, 2003).
2.12.2 Compiladores
Em 1957 surgiu a primeira linguagem de alto nível, o Fortran. A partir
daí, surgiram outras linguagens de alto-nível (e.g. ALGOL, BASIC, COBOL, C), que
ofereciam aos programadores a possibilidade de escreverem programas em
linguagens próximas do inglês. Surgiram então os compiladores, aplicações capazes
de procurar erros de sintaxe e concepção nos textos dos programas e transformar as
instruções em linguagem quase-neural para linguagem de máquina (Barros, 2003).
2.12.3 C
A linguagem C foi desenvolvida na década de 1970 no laboratório
AT&T Bell Labs, por Brian Kernighan e Dennis M. Ritchie (Melo, 2011).
Em 1983, a ANSI (American National Standards Institute
estabeleceu um comite o qual teve como objetivo a produção de uma definição não-
ambígua e independente da máquina a ser utilizada, para a linguagem C. O
resultado foi o “ANSI standard for C” (Kernighan & Ritchie, 1988).
Existem vários compiladores no mercado para microcontroladores
da família PIC18F. Estes compiladores possuem recursos semelhantes e podem ser
usados para programas de alto nível. Dentre os compiladores podemos citar o
mikroC, PICC18, C18 e CCS.
2.13 PIC
O termo microcomputador é usado para descrever um sistema que
inclui no mínimo um microprocessador, memória programável, memória de dados e
pinos de entrada ou saída. Alguns sistemas de microcomputadores incluem
componentes adicionais como timers, contadores e conversores analógicos-digitais
(Ibrahim, 2008).
Microcomputadores compostos por apenas um chip de silício são
53
chamados microcontroladores. Existem diversos microcontroladores no mercado,
porém abordaremos neste trabalho apenas a série PIC (Programmable Interface
Controller), produzida pela Microchip Technology Inc.
Outro termo para microcontroladores é controlador embarcado, pois
a maioria dos microcontroladores estão embarcados no dispositivo que eles
controlam (Ibrahim, 2008).
Microcontroladores tem sido tradicionalmente programados com o
uso da linguagem assembly. Embora esta linguagem seja rápida, ela possui muitas
desvantagens, como aprendizagem. A manutenção de um programa escrito usando
a linguagem assembly também é muito difícil (Ibrahim, 2008).
Microcontroladores são classificados pelo número de bits que estes
processam, sendo 8 bits os mais populares. Microcontroladores com 16 e 32 bits são
muito mais poderosos, mas são normalmente mais caros que os de 8 bits.
A memória RAM (Random Access Memory) é uma memória para
uso geral, que normalmente armazena os dados do usuário no programa. A memória
RAM é volatil e não pode reter dados caso a alimentação seja desligada. O
microcontrolador PIC18F452 (usado neste trabalho) possui 1536 bytes de RAM
(Ibrahim, 2008).
A memória EEPROM (Electrically Erasable Programmable Read
Only Memory) é uma memória não volátil que pode ser apagada e reprogramada
usando o dispositivo de programação correto. Esta memória é usada para salvar
informações, valores máximos e mínimos, identificação de dados, etc. Para o
PIC18F452 possui 256 bytes de memória EEPROM, onde cada byte pode ser
programado e apagado diretamente por aplicações de softwares (Ibrahim, 2008).
A memória Flash EEPROM, é semelhante à EEPROM, porém
normalmente mais rápida. O PIC18F452 possui 32 Kbytes desta memória. Nos
microcontroladores PIC, um ciclo de instrução toma quatro períodos de clock. Assim
o microcontrolador opera com uma taxa de clock que é um quarto da frequência
atual do oscilador. Os microcontroladores da série PIC18F podem operar em uma
frequência até 40 MHz.
2.13.1 Arquiteturas dos Microcontroladores
Existem duas arquiteturas convensionais para microncontroladores,
54
estas são Von Newmann e Harvard, ilustradas na figura 2.26.
Figura 2.26: Esquemático das arquiteturas de Von Neumann e Harvard.
Fonte: Adaptado de Ibrahim (2008, p.13).
Arquitetura Von Neumann, usada por uma boa porcentagem dos
micontroladores, possui toda memória no mesmo barramento. Instrução e dados
também usam o mesmo barramento (Ibrahim, 2008).
Na arquitetura Harvard (usada nos microcontroladores PIC), código
e dados estão em barramentos diferentes, o que permite ser buscados
separadamente, resultando em uma melhor performance (Ibrahim, 2008).
2.13.2 RISC e CISC
RISC (Reduced Instruction Set Computer) e CISC (Complex
Instruction Set Computer) refere-se ao conjunto de instruções do microcontrolador.
Em um microcontrolador RISC de 8 bits, dados possuem tamanho de 8 bits, mas
palavras de instrução são maiores que 8 bits (normalmente 12, 14 ou 16 bits) e as
instruções ocupam uma palavra na memória do programa. Assim as instruções são
transmitidas e executadas em um único ciclo, o qual aumenta a performance. Nos
microcontroladores CISC, ambos dados e instruções são de 8 bits.
Microcontroladores CISC normalmente possuem mais de duas mil instruções. Dados
e código estão no mesmo barramento e não podem ser transmitidos
simultaneamente (Ibrahim, 2008).
55
2.13.3 Microcontroladores da Série PIC18F
A Microchip Inc. tem desenvolvido a série de microcontroladores
PIC18F para uso de grande quantidade de pinos, alta densidade e aplicações
complexas. Dispositivos PIC18F proveem memória flash programável com tamanhos
de 8 a 128 kbytes e memória de dados de 256 a 4 kbytes, operando em uma
amplitude de 2,0 a 5,0 V, com velocidade de 40 MHz (Ibrahim, 2008).
As informações básicas dos microcontroladores da série PIC18F são
(Ibrahim, 2008):
77 instruções.
Código fonte compatível com PIC16.
Até 2 Mbytes de memória programável.
Dados de memória endereçados em até 4 kbytes.
DC para operação em 40 MHz.
Multiplicador hardware 8x8.
Níveis de prioridade de interrupção.
Instruções de 16 bits, caminho de dados de 8 bits.
Até dois timers/counters de 8 bits.
Até três timers/counters de 16 bits.
Até quatro interrupções externas.
Capacidade de até 25 mA (fonte).
Até cinco módulos capture/compare/PWM.
Módulo de porta serial Master synchronous (SPI e I²C).
Até dois módulos USART.
Portas paralelas escravas.
Conversor analógico-digital rápido de 10 bits.
Módulo programável de detecção de baixa voltagem (LVD).
Power-on reset (POR), power-up timer (PWRT) e oscilador
start-up timer (OST).
Watchdog timer (WDT) com oscilador RC.
Programação in-circuit.
O microcontrolador PIC18F452, possui quatro timers/counters, dois
módulos capture/compare/PWM , dois módulos seriais de comunicação, oito canais
56
de conversão A/D 10 bits, 256 bytes de EEPROM.
O PIC18F452 possui cinco portas paralelas chamadas PORTA,
PORTB, PORTC, PORTD e PORTE, as quais, possuem na maioria dos pinos,
multiplas funções.
São oito as fontes de clock possíveis para o microcontrolador
PIC18F452, estas podem ser configuradas pelo registrador CONFIG1H, e são:
Cristal de baixa potência (LP).
Cristal ou ressonador cerâmico (XT).
Cristal de alta velocidade ou ressonador cerâmico (HS).
Cristal de alta velocidade ou ressonador cerâmico com PLL
(HSPLL).
Clock externo com Fosc/4 no OSC2 (EC).
Clock externo com I/O no OSC2 (porta RA6)(ECIO).
Resistor/capacitor externo com saída Fosc/4 no OSC2 (RC).
Resistor/capacitor externo com I/O no OSC2 (porta
RA6)(RCIO).
2.13.3.1 Cristal ou ressonador cerâmico (XT)
Para a utilização do cristal externo, este deve ser conectado entre os
pinos OSC1 e OSC2. Para aplicações onde precisão de tempo é importante, um
cristal deve ser usado. Se um cristal for usado é necessário utilizar capacitores em
paralelo com as entradas assim como mostra a figura 2.27. Os valores dos
capacitores estão na tabela 2.2.
57
Figura 2.27: Esquemático de montagem do circuito para utilização de um cristal
como entrada de clock no PIC18FXX2.
Fonte: Ibrahim (2008, p.62).
Tabela 2.2: Valores dos capacitores para oscilação do cristal de clock.
Modo Frequência C1, C2 (pF)
LP 32 KHZ 33
200 KHz 15
XT
200 KHz 22-68
1,0 MHz 15
4,0 MHz 15
HS
4,0 MHz 15
8,0 MHz 15-33
20,0 MHz 15-33
25,0 MHz 15-33
Fonte: Ibrahim (2008, p.62).
58
2.13.3.2 Interrupções
Um evento de interrupção requer que a CPU pare a execução do
programa normal e então execute um programa relacionado ao evento causando a
interrupção. Interrupções podem ser geradas internamente ou externamente
(Ibrahim, 2008). O microcontrolador PIC18452 possui interrupções por ações externa
nos pinos INT0, INT1, INT2, RB4:RB7 e timer0 overflow.
As interrupções da família PIC18F podem ser divididas em alta ou
baixa prioridades. Deste modo, aplicações que requerem mais atenção são
colocadas em alta prioridade, sendo assim, uma interrupção de alta prioridade pode
parar uma de baixa prioridade que está em progresso.
2.14 ULTRASSOM HC-SR04
O sensor de ultrassom provê uma função de medida de 2 a 400 cm,
com uma precisão de até 3 mm. Este módulo possui um transmissor de ultrassom,
um receptor e um circuito de controle. O qual funciona sob o seguinte princípio:
Um sinal de 10 µs (bit “1”) ativa o transmissor.
O módulo automaticamente emite oito ondas de 40 kHz e
detecta caso o sinal seja refletido de volta.
Se o sinal de elétrico no pino do módulo for alto (bit “1”) o
tempo em alto na saída terá o tempo que a onda demorou
para atingir o obstáculo e retornar ao dispositivo.
O teste de distância pode ser calculado pela seguinte equação.
𝑑 = (𝑡ℎ𝑖𝑔ℎ 𝑙𝑒𝑣𝑒𝑙 ∗ 340)/2 (2.28)
59
3 DESCRIÇÃO FÍSICA DO PROTÓTIPO
Para o desenvolvimento deste trabalho foi utilizado uma plataforma
composta por duas rodas tracionadas por motores independentes e uma terceira
roda do tipo castor.
Figura 3.1: Plataforma do robô móvel vista de baixo.
Fonte: o próprio autor.
O protótipo possui uma distância entre as duas rodas de tração
(rodas amarelas na figura 3.1) de 14,05 ± 0,05 cm, medida do ponto central de uma
roda ao ponto central da outra. Porém a distância entre as rodas considerando o
ponto de apoio mínimo das rodas ao chão se dá em 12 ± 0,05 cm, sendo medido de
uma extremidade interna da roda à outra.
A terceira roda, do tipo castor (roda branca) está posicionada a uma
distância de 8,33 ± 0,05 cm do eixo das rodas motorizadas. Esta segunda medida se
dá em relação ao eixo vertical da roda castor, sem considerar o desvio de 1,3 ± 0,05
cm do eixo vertical da roda castor ao centro da roda. Este desvio pode ser
observado na figura 3.2.
60
Figura 3.2: Roda tipo castor usada no protótipo.
Fonte: o próprio autor.
Este sistema de organização de controle se caracteriza como tração
diferencial, ou seja, a direção do protótipo é definida pela diferença de velocidade no
eixo de cada roda. Quando esta diferença se aproxima de zero, o robô móvel tende
a uma trajetória retilínea.
61
Figura 3.3: Roda de tração do protótipo.
Fonte: o próprio autor.
As rodas motorizadas, mostrada na figura 3.3 apresentam um
diâmetro de 6,5 ± 0,05 cm e a roda castor, figura 3.2, de 3,0 ± 0,05 cm. Com essa
relação de distância entre rodas e diâmetro, podemos definir a modelagem
cinemática do protótipo.
3.1 MODELAGEM CINEMÁTICA
A função de transferência que descreve a modelagem cinemática do
protótipo estudado neste trabalho é definida pela equação (2.4), ao se substituir os
valores de diâmetro das rodas e distância entre elas obtemos.
[
θ
] = [cos θ − sen θ 0sen θ cos θ 0
0 0 1] [
3,25(𝜙1 + 2)
00,461(𝜙1 − 2)
]
(3.1)
A separação da forma matricial em um sistema de equações
diferenciais na equação (3.2) possibilita uma melhor compreensão sobre a
movimentação do protótipo.
62
= 3,25 cos 𝜃 (𝜙1 + 2)
= 3,25 sen 𝜃 (𝜙1 + 2)
θ = 0,461 (𝜙1 − 2)
(3.2)
Desta forma pode-se observar claramente que o robô móvel não
possui capacidade de movimentação lateral, porém, ainda assim, este protótipo
possui maior capacidade de movimento que um automóvel comum, pois apresenta
capacidade de rotação em torno de seu eixo vertical.
Em termos de substituição das rodas do protótipo, pode-se dizer que
com o aumento do diâmetro das rodas obtêm-se uma maior velocidade linear final
para o protótipo, porém há uma perda na regulação do controle de velocidade e um
aumento na exigência do torque do motor para o funcionamento deste.
Na possível substituição do chassi do protótipo com uma maior
distância entre as rodas, o veículo apresentará uma maior estabilidade no
deslocamento retilíneo do veículo e maior confiabilidade quanto aos movimentos
curvilíneos, porém este exigirá do controle uma maior variação das velocidades de
eixo de cada motor para que uma trajetória curvilínea seja executada.
3.2 PARADIGMA DAS ARQUITETURAS
O protótipo de estudo foi desenvolvido de modo a se entender os
processos de desenvolvimento de robô móvel autônomo, para que esse processo
pudesse ter o melhor aproveitamento possível foi utilizado equipamentos de baixo
custo e alta escalabilidade. Deste modo, foi possível acompanhar cada etapa do
desenvolvimento do projeto, bem como as dificuldades envolvidas em cada parte
deste processo.
Devido ao uso de equipamentos de baixo custo optou-se pela
utilização do paradigma de arquitetura reativo. No qual o robô móvel tem
possibilidade de reação a estímulos gerados pelo ambiente e readaptação a estes,
mas não tem domínio sobre o ambiente.
Entretanto, por mais que projeto seja de forma simples, este possui
uma alta escalabilidade, ou seja, com o desenvolvimento deste projeto é possível a
reutilização dos módulos que o compõem este sistema para outros projetos mais
complexos, sem a necessidade de uma profunda readaptação do projeto.
63
4 HARDWARE
O hardware deste trabalho foi divido em cinco módulos principais,
sendo estes, a alimentação, a ponte H, os sensores de velocidade, sensor de
distância e motores, e o microcontrolador.
4.1 ALIMENTAÇÃO
O módulo de alimentação do protótipo foi alvo de muitas variações
durante o desenvolvimento deste projeto. Alguns detalhes devem ser avaliados
cuidadosamente para a escolha da alimentação do robô móvel.
A alimentação máxima do PIC18F452 especificada, pelo datasheet
disponibilizado pelo fabricante, é de 7,5 V, porém para um acionamento seguro,
escolheu-se trabalhar com 5,0 V. A tensão de alimentação dos motores é 7,0 V,
portanto como opção de alimentação escolheu-se dividir a fonte de alimentação em
duas. Inicialmente foram utilizadas três pilhas alcalinas AA para alimentação do
microcontrolador, somando um total de 4,5 V e uma quarta pilha adicionada ao
sistema resultando em 6,0 V na alimentação dos motores. A figura 4.1 mostra as
pilhas utilizadas.
Figura 4.1: Primeiro modelo de alimentação, composto por pilhas alcalinas AA.
Fonte: o próprio autor.
64
Este sistema apresentou uma grande falha quanto ao acionamento
do motor. A corrente de partida do motor é muito maior que a corrente deste quando
a velocidade está estabilizada. As pilhas deste sistema não eram suficientes para
suportar a corrente exigida do sistema para o acionamento do motor, como
consequência a tensão diminuía e o microcontrolador reiniciava.
Em um segundo momento foi utilizado três capacitores de 10 nF em
paralelo de modo a tentar estabilizar a tensão sobre o PIC, como resultado foi um
sistema capaz de operar satisfatoriamente.
Apesar das pilhas alcalinas AA, associadas aos capacitores
apresentarem um resultado satisfatório, optou-se pela substituição destas pelo uso
de baterias recarregáveis. A figura 4.2 mostra o segundo módulo de alimentação
ligado ao protótipo (ainda em fase de testes).
Figura 4.2: Alimentação por seis pilhas recarregáveis e três capacitores de
estabilização de tensão.
Fonte: o próprio autor.
A substituição pelas pilhas recarregáveis regrediu ao problema
original, no qual o módulo de alimentação não era capaz de suportar a corrente
exigida pelo motor.
65
Por fim, foi proposto o uso de baterias de celular recarregáveis, no
qual se obteve um resultado satisfatório. Com a utilização de duas baterias, as quais
apresentam tensão em torno de 4,0 V cada, resultando em 8,0 V. A figura 4.3 mostra
a alimentação final do protótipo.
Figura 4.3: Alimentação realizada por baterias recarregáveis de celular e regulação
de tensão de alimentação do PIC realizada pela ponte H.
Fonte: o próprio autor.
Neste último modelo, a tensão de alimentação é colocada
integralmente sobre a ponte H (que atuará sobre os motores) o qual possui um
capacitor de 220 µF para regulação da tensão, deste modo, a bateria é capaz de
suprir os picos de corrente exigidos pelo motor sem comprometer o funcionamento
do robô. A tensão de alimentação do PIC18F452 é realizada por meio de um
regulador de tensão de 5,0 V integrado no módulo da ponte H e utiliza-se um
capacitor de 10 nF para estabilização da tensão.
4.2 PONTE H
Assim como o sistema de alimentação o módulo da ponte H também
passou por várias modificações até que se desenvolvesse um sistema capaz de
66
responder satisfatoriamente. Como primeira tentativa, foi montado um circuito de
ponte H composto por transistores bipolares de junção NPN.
É importante destacar que, dentre os cuidado necessários para
montagem de uma ponte H com transistores bipolares, cada transistor deve ter um
diodo colocado em antiparalelo. Pois, no momento em que há comutação do
transistor de saturação para corte, existe uma tendência de se manter a corrente
constante no motor, o qual, para esse caso surgiria uma tensão reversa no transistor
levando-o à queima. Esse evento foi abordado no capítulo 2.6.1 deste trabalho.
Este circuito funcionava, porém o fato dos componentes usados não
serem ideais, o ganho das correntes de base não eram grandes o suficiente para a
saturação esperada no transistor. Como resultado, havia uma queda muito grande
sobre os transistores, da ordem de 1,5 V, resultando em uma tensão de excursão de
aproximadamente 3,0 V.
Uma segunda tentativa foi proposta, baseada no modelo de
configuração Darlington. O circuito de ponte H montado com transistores bipolares
na configuração Darlington apresentou um resultado aceitável, em questão de
excursão da tensão de alimentação por meio do PWM. Porém a necessidade do uso
de 16 transistores (8 para cada motor do protótipo) inviabilizou a utilização deste,
devido ao espaço ocupado pela montagem sobre a plataforma.
Com a intensão de reduzir o tamanho do espaço ocupado pela ponte
H sobre o robô móvel, realizamos a montagem da ponte H por meio do circuito
integrado (CI) L293, fabricado pela Texas Instruments Inc.. Este CI possui
internamente duas pontes H completas, deste modo se utilizava apenas um único CI
para montagem de todo o módulo da ponte H.
A utilização do CI L293 foi bastante satisfatória, resultando em uma
perda de tensão desprezível, entre a tensão de alimentação e a tensão sobre os
motores.
Entretanto, apesar de um resultado muito satisfatório, com a
substituição do CI L293 pelo módulo de ponte H, composto pelo CI L298N (fabricado
pela STMicroelectronics), possibilitou uma saída de tensão regulada de 5,0 V, deste
modo poder-se-ia utilizar uma única fonte de tensão para alimentação de todo o
protótipo. O módulo de ponte H utilizado neste trabalho está representado na figura
4.4.
67
Figura 4.4: Módulo de ponte H com CI L298N e dissipador de calor.
Fonte: o próprio autor.
Os pinos OUT1 e OUT2 são as saídas para o motor da roda direita,
enquanto os pinos OUT3 e OUT4 são saídas para o motor da roda esquerda. Os
pinos ENA e ENB são, respectivamente, habilitam a ponte H para o lado direito e
esquerdo. Os quatro fios abaixo dos “enables” são as quatro entradas de ativação
das chaves da ponte H.
O bloco azul composto por três entradas/saídas são VCC, GND e
5,0 V o qual o VCC é a tensão de alimentação do motor provida pelas baterias e 5,0
V é a saída provida pelo regulador de tensão embutido no módulo da ponte H.
4.3 SENSORES DE VELOCIDADE, SENSOR DE DISTÂNCIA E MOTORES
Os sensores e motores podem ser considerados um único módulo,
pois estes interagem entre sí, porém é possível fazer uma análise separada de cada
um dos três de modo a se obter uma melhor abordagem o funcionamento de cada
parte.
68
4.3.1 Sensor de Velocidade
Os sensores de velocidades usados neste protótipo são compostos
por um encoder óptico e um disco de anteparo de 20 ranhuras por revolução, ao se
considerar cada borda (subida ou decida) um evento, pode-se dizer que o sensor
envia 40 sinais, ao microcontrolador, a cada revolução. A figura 4.5 mostra o
encoder óptico e a figura 4.6 o disco de ranhuras, formando o módulo do sensor de
velocidade.
Figura 4.5: Encoder óptico acoplado ao disco com ranhuras.
Fonte: o próprio autor.
69
Figura 4.6: Disco com ranhuras para sensor de velocidade.
Fonte: o próprio autor.
Considerando os valores de diâmetro das rodas que compõe o
protótipo pode-se calcular a sensibilidade, do sistema usado como sensor de
velocidade, em cm.
𝜎 =𝐷𝑟𝑜𝑑𝑎𝜋
𝑁𝑟𝑎𝑛ℎ𝑢𝑟𝑎𝑠= 0,5105 [𝑐𝑚]
(4.1)
Pode-se dizer, então, que as rodas podem apresentar uma diferença
de meio centímetro de distância, sem que o sistema seja capaz de perceber.
4.3.2 Sensor de Distância
O módulo de ultrassom usado para o desenvolvimento deste
trabalho está ilustrado na figura 4.7.
70
Figura 4.7: Módulo sensor de distância.
Fonte: o próprio autor.
O módulo de ultrassom inclui o transmissor de ultrassom, o receptor
e circuito de controle. Deste modo, a utilização deste é feita a partir da alimentação
de 5 V entre VCC e GND, e um sinal de trigger de 10 us.
O sinal de trigger deve ser ativado sempre que se deseja acionar o
sensor. A resposta do sensor, caso haja algum objeto a sua frente em até 4 metros,
é dada pelo pino “echo”, sendo o tempo de estado em alto deste, o tempo no qual a
onda demorou a percorrer o trajeto de ida, reflexão e volta.
4.3.3 Motores
Os motores usados para o desenvolvimento deste projeto, por serem
motores de baixo custo, não apresentam curva de torque nem características dos
componentes do circuito equivalente, por este motivo, foi necessário desenvolver um
sistema de controle empiricamente, sem a curva de torque deste. O resultado desta
metodologia é um desenvolvimento trabalhoso e obtenção de um sistema não ótimo.
O motor utilizado é mostrado na figura 4.8.
71
Figura 4.8: Motores de tração do protótipo.
Fonte: o próprio autor.
É possível observar nesta figura a conexão do motor com o disco
com ranhuras se já no eixo do motor do lado oposto à roda.
As correntes de pico sobre o motor são de aproximadamente 350
mA na aceleração do protótipo e 800 mA na frenagem deste. A frenagem consiste
em uma manobra para evitar a colisão do robô com objetos do ambiente, tal
procedimento será explicado com mais detalhes no capítulo 5 deste trabalho.
4.4 MICROCONTROLADOR
O microcontrolador é a parte central do robô móvel, ou seja, este
capta os sinais dos sensores, computa qual ação deve ser tomada, este também
controla as velocidades dos motores, altera trajetórias. O circuito que contém o
PIC18F452 está mostrado na figura 4.9.
72
Figura 4.9: Esquemático do circuito de utilização do microcontrolador.
Fonte: o próprio autor.
O circuito com microcontrolador pode ser dividido em sessões. O
circuito responsável pela alimentação e tratamentos de dados do encoder esquerdo
se encontra na parte superior e o do encoder direito na parte inferior. Deste modo,
podemos observar que os pinos 33 e 34, são entradas para os sinais dos encoders
direito e esquerdo, respectivamente.
O ultrassom é ativado pelo sinal de trigger que sai do pino 35,
enquanto o sinal de echo do sensor é lido pelo pino 36. O LED posicionado ao lado
do sensor de ultrassom ativado pelo pino 37, o qual inverte o seu sinal a cada ciclo
completo da rotina, deste modo pode-se observar visualmente se o protótipo está
funcionando normalmente.
Utiliza-se um cristal de 8 MHz com dois capacitores de 15 pF para
controlar o clock do PIC. Coloca-se o pino 1 em nível lógico alto (“1”). A alimentação
73
das baterias com o capacitor de 220 µF é usada para alimentar a ponte H que envia
de volta o sinal 5 V DC regulado para alimentação do microcontrolador.
A ponte H é controlada pelas seis pinos, sendo estes 16 e 17 sinais
de “enable”, 23 e 24 entradas para a ponte H direita e 19 e 20 entradas para a ponte
H esquerda.
A placa resultante da montagem do circuito é mostrada na figura
4.10.
Figura 4.10: Placa do microcontrolador.
Fonte: o próprio autor.
74
5 SOFTWARE
O software do robô móvel é a parte central do protótipo, esta, é
responsável pelo processamento e compreensão dos sinais emitidos pelos
sensores, pela medição da velocidade, feita pelo sensor de velocidade e pela
regulagem da velocidade feita pelo controle PID, esta também determina a direção
de rotação dos motores.
A programação do software do microprocessador foi desenvolvido
em três ambientes de programação diferentes, sendo estes o MikroC (desenvolvido
pela MikroElektronika), o MPLAB X IDE (desenvolvido pela Microchip) e o PCWH
(desenvolvido pela Custom Computer Services, Inc.). Porém o programa final foi
desenvolvido por meio do ambiente de programação PCWH.
O programa foi escrito integralmente na linguagem C, pois esta, em
comparação com o assembly, apresenta inúmeras vantagens em termos de
aprendizagem, recursos de funções pré-criadas, facilidade de compreensão,
modificação e reutilização do código, entre outras. O compilador PCWH é um
compilador ANSI C para Microchip PIC® MCUs.
A gravação do microncontrolador foi realizada por meio da utilização
do gravador de PIC, ora PICKit2, ora PICKit3, por meio do “hex file” gerador pelo
compilador do código.
O programa desenvolvido para o funcionamento do robô móvel está
representado no fluxograma ilustrado na figura 5.1.
Figura 5.1: Fluxograma de funcionamento do programa do robô.
Fonte: o próprio autor.
75
Como pode ser observado no fluxograma, o microcontrolador faz as
configurações iniciais ao ser ligado, após este momento, este entra em um loop no
qual se verifica a velocidade de cada roda, faz a regulação da velocidade, atualiza-
se a velocidade, verifica-se se existem obstáculos à frente, caso haja ativa-se a
mudança de direção, por fim reinicia-se o loop.
A velocidade é verificada por meio do número de pulsos no encoder
A, que foi considerado a referência, diferença de velocidade entre a roda A e a roda
B é considerado o erro de velocidade, este erro serve de entrada para o controlador
PID que calcula a correção necessária para alteração de velocidade na roda B. A
equação do controlador PID é representada pelas equações abaixo.
𝑉𝑒𝑙𝐵 = 𝑉𝑒𝑙𝐵 + 𝐶𝑓𝑎𝑡𝑜𝑟 𝑑𝑒 𝑐𝑜𝑟𝑟𝑒çã𝑜 (5.1)
𝐶𝑓𝑎𝑡𝑜𝑟 𝑑𝑒 𝑐𝑜𝑟𝑟𝑒çã𝑜 = 𝐸𝑟𝑟𝑜 ∗ 𝐾𝑝 + 𝐼 ∗ 𝐾𝑖 + 𝐷 ∗ 𝐾𝑑 (5.2)
A velocidade na roda B é alterada, neste momento inicia-se o
processo com o segundo sensor, o sensor de distância. Um sinal de “trigger” é
enviado ao módulo de ultrassom. A distância do obstáculo à frente (caso haja) é
calculada com relação ao tempo de nível lógico alto (bit “1”) no sinal de “echo”
(resposta do módulo ultrassom). Pela equação (5.3):
𝐷 = 𝑇𝑢𝑠/58 (5.3)
Onde D é a distância do objeto em relação à plataforma, 𝑇𝑢𝑠 o
tempo de duração do pulso de “echo”, equivalente ao tempo de ida e volta da onda
ultrassônica, divido por 58 (equação 2.28), o qual é dado pelo inverso da metade da
velocidade do som (0,017 cm/µs). Caso a distância para o obstáculo seja menor do
que a mínima estipulada (20 cm, para este caso) o veículo entra em uma sequência
de frenagem e parada, então faz um giro em torno de uma das rodas e retoma ao
início do loop.
Uma das desvantagens do código utilizado é leitura linear do código,
ou seja, quando este está regulando a velocidade não há verificação de obstáculos,
em seguida, quando este muda para a procura de obstáculos à frente a velocidade
76
não é verificada. Desta forma existe a possibilidade de ocorrer falhas na verificação
de obstáculos ou na regulação da velocidade, sem que o robô móvel seja capaz de
detectar e corrigir.
Devido à inexistência de uma curva de torque, ou características do
circuito equivalente para o motor adotado, os valores das constantes do controlador
PID e os valores de PWM e duração da frenagem e rotação do protótipo tiveram que
ser levantados empiricamente.
77
6 RESULTADOS OBTIDOS
Como resultado do estudo e desenvolvimento do protótipo
apresentado neste trabalho pode-se afirmar que por mais que os módulos de um
protótipo móvel sejam de conhecimento básico e de fácil entendimento da
engenharia, a combinação destes, aliado com o código, de forma a se obter um
resultado ótimo é de difícil obtenção.
Quanto ao resultado do estudo, sugere-se o desenvolvimento
individual de cada módulo, tanto no processo de hardware, como de software, com o
aumento do grau de complexidade acrescido pelo aumento de sensores e motores é
fácil o desenvolvedor perder a compreensão do trabalho como um todo, permitindo a
ocorrência de erros de programação ou de hardware.
Com a ocorrência de erros em sistemas complexos, é importante
que testes sejam realizados separadamente no hardware, com o um código já
testado e confiável, ou no software, com um hardware confiável, pois para sistemas
complexos os erros de software e hardware tendem a se confundir, inviabilizando o
desenvolvimento do trabalho.
6.1 FUNCIONAMENTO
O funcionamento do robô móvel, executado pela programação do
microcontrolador, desenvolvida neste trabalho, pode ser dividido em três partes
principais, estes são a medição da velocidade, a correção da velocidade e a
detecção de obstáculos.
6.1.1 Detecção de Velocidade
A detecção da velocidade do protótipo, como já abordado neste
trabalho, é medida por meio de pulsos gerados por encoder e um disco de ranhuras
acoplado ao eixo do motor. Á medida que a luz do LED passa pela ranhura do disco
o fototransistor satura e o microcontrolador recebe 5 V, em contrapartida, quando a
luz é impedida pelo anteparo um sinal de 0 V vai para o respectivo pino do
microcontrolador.
78
Com a contínua rotação do motor o sinal no pino do PIC comuta
entre 0 e 5 V, resultando em uma onda quadrada de aproximadamente 50% (teórico)
de ciclo ativo. A medição do número de pulsos em um determinado período leva à
determinação da velocidade de rotação do motor e, por consequência, à velocidade
linear do protótipo.
O seguinte código foi implementado no programa do PIC18F452, o
qual utiliza desta técnica para determinação da velocidade de cada roda.
// Habilita chave global de interrupção para contagem de pulsos dos
//encoders.
enable_interrupts (GLOBAL);
//Pega a velocidade das rodas através dos encoders.
delay_ms (400); //Espera 400 ms.
//Desabilita a contagem de pulsos dos encoders.
Disable_interrupts (GLOBAL);
A rotina de interrupção é ativada por 400 ms. A cada comutação do
pino de entrada de 5 para 0 V, ou o contrário, ativa a rotina de interrupção da
respectiva porta, que realiza a contagem do número de pulsos de clock.
// Interrupção INT0, conta pulsos do encoder A.
// Cada vez que der um pulso no pino RB0, incrementa o contador de
//pulsos A.
#INT_EXT
void EXT_isr(VOID)
cntA++;
//Interrupção INT0, conta pulsos do encoder B.
//Cada vez que der um pulso no pino RB1, incrementa o contador de
//pulsos B.
#INT_EXT1
void EXT1_isr(VOID)
cntB++;
Duas mudanças de estados são feitas por ranhura do disco, deste
modo uma revolução completa do disco gerará 40 mudanças de estado. Sabe-se
também que uma rotação completa do motor leva a um deslocamento linear de
20,42 cm.
79
6.1.2 Correção da Velocidade
O sistema de correção da velocidade é feito por meio de um
controlador PID digital. As constantes proporcional, integral e derivativa foram
obtidas empiricamente, devido à ausência das características físicas do motor, e por
consequência, ausência da função de transferência. Tais valores, apresentados na
seção anterior e declarados no código do PIC, são de funcionalidade apenas para
estes motores, ou seja, caso haja uma troca dos motores de tração será necessário
recalcular as constantes.
// Constantes do controlador PID.
const FLOAT Kp = 18.3; // Constante de proporção.
const FLOAT Ki = 0.3; // Constante de integral.
const FLOAT Kd = 0.002; // Constante de diferencial.
Após a medição da velocidade de rotação do motor, o erro é
calculado, como sendo a diferença de velocidade entre a rotação do motor A e B.
Desta forma, este passa pelo controlador PID.
I +=Err; //Add o erro ao I (Calcula a integral do erro).
D = Err – Err_Tmp; //Calcula o diferencial do erro.
Err_Tmp = Err; // Salva o erro atual.
Correcao = Err * Kp + I * Ki + D * Kd; // Calcula o ajuste da roda B.
VelB = VelB + ((SIGNED INT16) Correcao); //Calcula a nova velocidade.
Como é possível observar no código acima, a integral do erro é a
soma dos erros desde o início até o atual, pois a função do erro é um sinal digital. De
forma semelhante, a derivada do erro é a diferença entre o sinal anterior e o atual,
no intervalo de tempo. A correção da velocidade é então calculada o reajuste da
velocidade é feita de modo ao motor B apresentar uma velocidade mais próxima do
A.
6.1.3 Detecção de Obstáculos
A detecção de obstáculos é realizada mediante a um pulso de 20 µs
ao módulo de ultrassom, em seguida o microcontrolador espera o sinal de retorno do
80
módulo. Uma vez que o ultrassom envia o sinal de resposta começa a contagem de
tempo a qual determina a duração do sinal de volta do detector de objetos.
//Detecta o obstáculo.
// Gera o sinal para iniciar a medida da distância.
output_high (TRIGGER); //Coloca o trigger em 5 V.
delay_us (20); //Espera 20 us.
output_low (TRIGGER); //Coloca o trigger em 0 V.
//Espera o sinal de Echo aparecer.
WHILE (input (ECHO) == 0);
//Captura a duração.
TempoI = get_timer1 (); // Pega o tempo inicial.
WHILE (input (ECHO) == 1); //Espera o sinal do echo acabar.
TempoF = get_timer1 (); //Pega o tempo final.
IF (TempoF >= Tempo I)
Dur = TempoF – TempoI; //Calcula a duração.
ELSE
Dur = TempoI – TempoF; //Calcula a duração.
Uma vez que o tempo de duração do pulso de volta é determinado o
sinal passa pela determinação do cálculo da distância em que o objeto se encontra
do protótipo.
//Calcula a distância (em cm). De acordo com o datasheet do sensor:
//Dist [cm] = Dur [us] / 58
Dist = Dur / 58;
O cálculo da distância é determinado de acordo com o datasheet do
módulo de ultrassom, no qual a distância em cm do obstáculo é a duração do pulso
de volta em µs divido por 58. A partir da distância determinada, o veículo decide
prosseguir ou retornar.
O processo de frenagem e retorno, assim como as constantes do
controlador PID, foi determinado empiricamente, o código para execução deste
procedimento encontra-se como apêndice A neste trabalho.
6.2 PROTÓTIPO COMPLETO
Quanto ao resultado do desenvolvimento do robô móvel, foi obtido
um protótipo capaz de detectar objetos no ambiente e evitar a colisão com estes.
81
Tais objetos podem ser fixos ou móveis, devido à capacidade de reação do
protótipo.
Além do sistema de detecção de obstáculos, este veículo autônomo
também possui um sistema de detecção e controle de velocidade por meio de um
controlador PID. A utilização deste sistema proporciona a capacidade, explorada
pelo protótipo, de se desenvolver trajetórias próximas das retilíneas. A figura 6.1
mostra o protótipo final desenvolvido neste trabalho.
Figura 6.1: Robô móvel autônomo.
Fonte: o próprio autor.
A frente do protótipo foi definda como sendo o lado esquerdo, deste
modo as rodas direita e esquerda são respectivamente a superior e a inferior na
figura. Na parte traseira do protótipo está posicionado a ponte H (placa verde),
responsável pela orientação de rotação das rodas.
Os sensores de velocidade estão posicionados um de cada lado do
protótipo, entre a ponte H e a bateria, de onde saem os fios laranja, brando e verde.
A bateria, posicionada no centro do protótipo, gera a tensão e corrente de
82
alimentação do protótipo.
O microcontrolador PIC18F452, responsável pelo tratamento de
todas as informações recebidas pelo robô, está posicionado na parte dianteira deste,
o qual possui em sua extremidade dianteira o módulo de ultrassom, responsável por
alertar o veículo autônomo a distância de um possível obstáculo posicionado à frente
do protótipo.
83
7 CONCLUSÃO
É possível concluir neste trabalho que o desenvolvimento de um
robô móvel deve ser estudado sistematicamente em um processo gradual. A
separação do projeto completo em módulos possibilita a evolução mais rápida do
projeto, porém principalmente viabiliza um maior grau de escalabilidade do sistema.
Para construção de novos protótipos, considera-se importante a
construção do protótipo inicial sob arquitetura reativa, de modo que este possa
conviver de modo satisfatório com o meio em que está submetido, para então
acrescentar parte deliberativa, ou controle remoto, de acordo com a necessidade do
projeto. Esta organização facilita o desenvolvimento do projeto e complexidade e
compreensão e correção de erros.
Foi observado também que é possível a realização do controle de
motores genéricos de baixo grau de confiabilidade por meio de um controlador PID e
que para o caso da ausência dos parâmetros do motor, pode-se achar as constantes
do controlador empiricamente, como realizado neste trabalho.
A alimentação de um protótipo pode ser muitas vezes um grande
problema, quanto à sua duração, peso e capacidade de corrente. Para pequenos
protótipos, pudemos observar que baterias de celular apresentam um ótimo
resultado, pois estas apresentam um volume e peso menores, quando comparados
à outras formas de alimentação para pequenas tensões, mas apresentam também,
principalmente, uma ótima capacidade de corrente, possibilitando à alimentação de
motores de pequenas correntes sem quedas na tensão.
O protótipo desenvolvido neste trabalho possibilita a movimentação
do robô móvel em uma trajetória próxima da linear, sendo este também capaz de
detectar obstáculos posicionados à frente do protótipo e alterar a trajetória a fim de
evitar a colisão deste.
Para próximos trabalhos sugere-se utilizar o sistema de detecção e
controle de velocidade desenvolvido neste trabalho para geração de velocidade para
criação de trajetórias curvilíneas. Sugere-se também acrescentar sensores de
reconhecimento de obstáculos e o desenvolvimento do software de geração de
trajetórias ótimas para desvio.
84
REFERÊNCIAS
AIBO. Wikipedia, the free encyclopedia. Disponível em:
<http://en.wikipedia.org/wiki/AIBO>. Acesso em: 13 nov. 2014.
BARROS, A. M. de S. ANSI C para quem tem pressa. 24 feb. 2003. Disponível em:
<http://www.dei.isep.ipp.pt/~abarros/docs/ANSI_C.pdf>. Acesso em: 12 out. 2014.
BHAGAT, N. A.; BHAGANAGARE, M. DC motor speed control using PID controllers.
2009. Disponível em:
<http://bhagatnikunj.weebly.com/uploads/1/0/4/6/10469153/esd_report.pdf>. Acesso em: 12
out. 2014.
BORGES, G. A.; LIMA, A. M. N.; DEEP, G. S.. Controladores cinemáticos de trajetória
para robôs móveis com tração diferencial. In: SIMPÓSIO BRASILEIRO DE
AUTOMAÇÃO INTELIGENTE, VI. Bauru. 2003.
BRITTO, R. de S. Uma arquitetura distribuída de hardware e software para controle de
um robô móvel autônomo. 2008. 68 f. Dissertação (Mestrado em Engenharia Elétrica e de
Computação) – Centro de Tecnologia, Universidade Federal do Rio Grande do Norte, Natal,
2008.
CAMPION, G.; BASTIN, G.; D’ANDRÉA-NOVEL, B.. Structural properties and
classification of kinematic and dynamics models of wheeled mobile robots. IEEE
transactions on robotics and automation. v. 12, n. 1, p. 47-62. 1996.
CRUZ, A. P. B. Modelagem dinâmica de uma estrutura de base holonômica para robôs
móveis: inclusão das não-linearidades de entrada. 2007. 118-f. Dissertação (Mestrado em
Engenharia Elétrica) – Universidade Federal da Bahia, Bahia, 2007.
DOYLE, J.; FRANCIS, B.; TANNENBAUM, A.; Feedback control theory. Macmillan
Publishing Co., 1990. Disponível em:
<http://www.control.utoronto.ca/people/profs/francis/dft.pdf>. Acesso em: 12 out. 2014.
DUDEK, G.; JENKIN, M.. Computational principles of mobile robotics. 2ª edição. New
York: Cambridge University Press, 2010.
ELECTROLUX TRILOBITE. Wikipedia, the free encyclopedia. Disponível em:
<http://en.wikipedia.org/wiki/Electrolux_Trilobite>. Acesso em: 13 nov. 2014.
FIERRO, R.; LEWIS, F. L.. Control of a nonholonomic mobile robot using neural networks.
IEEE transactions on neural networks. v. 9, n. 4, p. 589-600. 1998.
HUANG, G.; LEE, S.. PC-based PID speed control in DC motor. IEEE Transactions on
Audio, Language and Image Processing, -ICALIP 2008, Shanghai, 7-9., p. 400-407, jul 2008.
IBOT. Wikipedia, the free encyclopedia. Diponível em: <http://en.wikipedia.org/wiki/IBOT>. Acesso em: 13 nov. 2014.
IBRAHIM, D. Advanced PIC microcontroller projects in C: from USB to ZIGBEE with
the PIC 18F series. Burlington: Newnes, Elsevier, 2008.
85
IROBOT R-GATOR. Wikipedia, the free encyclopedia. Disponível em:
<http://en.wikipedia.org/wiki/IRobot_R-Gator>. Acesso em: 13 nov. 2014.
JAYAVISHRUTHA, G.V.; PRIYA, P. J.; PRASATH, T. A.. Speed control of PMDC motor
with the combination of error amplifier and PID controller. International Journal of
Electrical & Electronics Engineering Advanced Research, v. 2, SP-1, feb. 2014.
KASPRZYK, L.. Led’s world. Disponível em: <kababaka.com/artykuly/sciemnianie-led/>.
Acesso em: 04 out. 2014.
KERNIGHAN, B. W.; RITCHIE, D. M.. The ANSI C programming language. 2ª edição.
Englewood Cliffs, NJ: Prentice Hall, 1988.
KRISHNAN, R. Eletric motor drives: modeling, analysis, and control. New Jersey: Prentice
Hall, 2001.
MEDIÇÃO de deformação, tensão, força e movimento. Disponível em:
<http://www.fem.unicamp.br/~instmed/Deformacao_Torque.htm>. Acesso em: 12 out. 2014.
MELO, J. L. G. G. de. Mini Curso: microcontrolador PIC 18F452 / PROTEUS, Curitiba,
2011. Disponível em:
<http://www.eletrica.ufpr.br/~james/Laboratorio%20V/arquivos/Mini%20Curso%20Microco
ntrolador.pdf>. Acesso em: 12 out. 2014.
MELO, L. F. de. Proposta de simulador virtual para sistema de navegação de robôs
móveis utilizando conceitos de prototipagem rápida. 2007. 264 f. Tese (Doutorado em
Engenharia Mecânica) – Departamento de projeto mecânico, Universidade Estadual de
Campinas, Campinas, 2007.
MICROCHIP. PIC18FXX2 Data Sheet: high-performance, enhanced flash microcontrollers
with 10-bit A/D. 2006. Disponível em:
<http://ww1.microchip.com/downloads/en/DeviceDoc/39564c.pdf>. Acesso em: 12 out.
2014.
MONTEMERLO, M.; PINEAU, J.; ROY, N.; THRUN, S.; VERMA, V. Experiences with a
mobile robotic guide for the elderly. National Conference on Artificial Intelligence. AAAI-
02 Proceedings. 2002, p. 587-592.
OGATA, K.. Engenharia de controle moderno. New Jersey: Prentice Hall, 1985.
ONDA triangular dente de serra. Disponível em:
<http://www.feng.pucrs.br/~stemmer/labeletronica/tr2/trab2_2.html>. Acesso em: 04 out.
2014.
POLLACK, M. E. Pearl: A mobile robotic assistant for the elderly. AAAI Technical
Report WS-02-02. 2002.
SARHAN, H. Software-based speed control of a DC motor using pulse-width modulation.
International Knowledge Sharing Platform: Journals & books hosting – conferences &
workshops solutions. Disponível em:
<http://www.iiste.org/Journals/index.php/CTI/article/view/13187>. Acesso em: 12 out. 2014.
86
SECCHI, H. Uma introdução aos robôs móveis. Núcleo de estudos em robótica e
autômoção. Instituto Federal de Educação em Robótica e Automação. 2012.
SIEGWART, R.; NOURBAKHSH, I. R.. Introduction to autonomous mobile robots.
Massachusetts: The MIT press, 2004.
SINGH, A. P.; NARAYAN, U.; VERMA, A.. Speed control of DC motor using PID
controller based on Matlab. International Conference on Recent Trends in Applied
Sciences With Engineering Application, v. 4, n. 6. 22-28, 2013.
SINGH, V.; Garg, V. K.. Tuning of PID controller for speed control of DC motor using soft
computing techniques – A Review. International Journal of Applied Engineering
Research. Research India Publications. v. 9, n. 9, p. 1141-1148, 2014.
STMICROELECTRONICS. L298: dual full-bridge driver. Disponível em:
<http://www.tech.dmu.ac.uk/~mgongora/Resources/L298N.pdf>. Acesso em: 12 out. 2014.
ULTRASSONIC ranging module HC – SR04. Disponível em:
<http://users.ece.utexas.edu/~valvano/Datasheets/HCSR04b.pdf>. Acesso em: 12 out. 2014.
WALTER, W. G. An imitation of life. Scientific American, v. 182, n. 5, p. 42-45, 1950.
WATANABE, L. Independence Technology Discontinues the iBOT. Disponível em:
<http://www.mobilitymgmt.com/Articles/2009/02/01/Independence-Technology-
Discontinues-the-iBOT.aspx>. Acesso em: 13 nov. 2014.
YEDAMALE, P.; MICROCHIP TECHNOLOGY INC.. Brushless DC (BLDC) motor
fundamentals. Disponível em:
<http://electrathonoftampabay.org/www/Documents/Motors/Brushless%20DC%20(BLDC)%
20Motor%20Fundamentals.pdf>. Acesso em: 12 out. 2014.
87
APÊNDICES
88
APÊNDICE A
Rotina de Frenagem e Retorno
A rotina de frenagem e retorno, escrita na linguagem C para o compilador PCWH, está
descrita abaixo.
// Da meia volta se o objeto estiver muito perto.
IF (Dist < DIST_MIN)
// Desliga os motores.
set_pwm1_duty (170);
set_pwm2_duty (170);
// Inverte o sentido da roda A.
output_low (FRENTE_A);
output_high (TRAS_A);
// Inverte o sentido da roda B.
output_low (FRENTE_B);
output_high (TRAS_B);
delay_ms (150) ;
// Desliga os motores.
set_pwm1_duty (0);
set_pwm2_duty (0);
// Espera o motor parar.
delay_ms (200);
// Inverte o sentido da roda A.
output_low (FRENTE_A);
output_high (TRAS_A);
// Inverte o sentido da roda B.
output_high (FRENTE_B);
output_low (TRAS_B);
// Gira um pouco.
set_pwm2_duty (250); // Coloca uma velocidade baixa.
delay_ms (400); // Espera girar.
// Volta a andar para frente.
output_low (TRAS_A);
output_high (FRENTE_A);
// Reseta a velocidade.
VelA = VEL_INICIAL;
VelB = VEL_INICIAL;
// Reseta o PID para que ele não desestabilizar.
I = 0;
Err_Tmp = 0;
89
ANEXOS
90
ANEXO A
DataSheet PIC18F452
As primeiras cinco páginas do datasheet do PIC18F452, usado neste trabalho como
microcontrolador embarcado no robô móvel estão disponíveis abaixo:
91
92
93
94
95
ANEXO B
DataSheet CI Ponte-H L298N
As primeiras quatro páginas do datasheet do CI L298N, usado neste trabalho como
base do módulo driver com dupla ponte-H, estão disponíveis abaixo:
96
97
98
99
ANEXO C
DataSheet Módulo HC-SR04
O datasheet do módulo HC-SR04, usado neste trabalho como sensor de distância está
disponível integralmente abaixo:
100
101