implementação de uma plataforma robótica terrestre não

123
Centro de Tecnologia e Urbanismo Departamento de Engenharia Elétrica Rubens Galante Filho Implementação de uma plataforma robótica terrestre não tripulada microcontrolada utilizando controle PID Monografia apresentada ao curso de Engenharia Elétrica da Universidade Estadual de Londrina como parte dos requisitos necessários para a obtenção do título de Engenheiro Eletricista. Londrina, PR 2014

Upload: duongquynh

Post on 07-Jan-2017

213 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Implementação de uma Plataforma Robótica Terrestre não

Centro de Tecnologia e Urbanismo

Departamento de Engenharia Elétrica

Rubens Galante Filho

Implementação de uma plataforma robótica terrestre não tripulada

microcontrolada utilizando controle PID

Monografia apresentada ao curso de

Engenharia Elétrica da Universidade

Estadual de Londrina como parte dos

requisitos necessários para a obtenção

do título de Engenheiro Eletricista.

Londrina, PR

2014

Page 2: Implementação de uma Plataforma Robótica Terrestre não

Rubens Galante Filho

Implementação de uma plataforma robótica terrestre não tripulada

microcontrolada utilizando controle PID

Monografia apresentada ao curso de

Engenharia Elétrica da Universidade

Estadual de Londrina como parte dos

requisitos necessários para a obtenção

do título de Engenheiro Eletricista.

Orientador:

Prof. Dr. Aziz Elias Demian Junior

Londrina, PR

2014

Page 3: Implementação de uma Plataforma Robótica Terrestre não

Ficha Catalográfica

Rubens Galante Filho

Rubens Galante Filho

Galante Filho, Rubens

Implementação de uma plataforma robótica móvel terrestre não

tripulada com controlador PID, identificação e desvio de obstáculos.

Londrina, PR, 2014. 106 p.

Monografia (Trabalho de Conclusão de Curso) – Universidade

Estadual de Londrina, PR. Departamento de Engenharia Elétrica.

1. Plataforma Robótica 2. Controlador PID 3. Sistema

Embarcado Controle de velocidade. Departamento de

Engenharia Elétrica.

Page 4: Implementação de uma Plataforma Robótica Terrestre não

Implementação de uma plataforma robótica terrestre não tripulada

microcontrolada utilizando controle PID

Monografia apresentada ao curso de

Engenharia Elétrica da Universidade

Estadual de Londrina como parte dos

requisitos necessários para a obtenção

do título de Engenheiro Eletricista.

Comissão Examinadora

___________________________________

Prof. Dr. Aziz Elias Demian Junior Depto. De Engenharia Elétrica

Orientador

_____________________________________

Prof. Dr. Leonimer Flávio de Melo Depto. De Engenharia Elétrica

Universidade Estadual de Londrina

__________________________________

Prof. Dr. Ernesto Fernando F. Ramírez Depto. De Engenharia Elétrica

Universidade Estadual de Londrina

17 de Novembro de 2014

Page 5: Implementação de uma Plataforma Robótica Terrestre não

Dedicatórias

Dedico este trabalho à minha mãe Rose, pela dedicação à minha vida e

minha educação.

Às minhas irmãs Yasmin e Rebecca Galante.

À minha noiva Thiemi Shiraishi por todo amor, companheirismo, dedicação e

paciência.

Em especial ao meu pai, Rubens Galante (in memoriam) sempre me

apoiando nos estudos e na vida, sendo minha maior fonte de inspiração e orgulho.

Sem dúvidas, mesmo não estando presente neste momento tenho certeza que de

onde esteja também realizou um sonho.

Page 6: Implementação de uma Plataforma Robótica Terrestre não

Agradecimentos

Primeiramente a Deus por minha vida, família e amigos. Aos meus pais

Rubens e Rose, às minhas irmãs Yasmin e Rebecca, à minha noiva Thiemi por toda

ajuda e paciência durante os momentos mais difíceis. Agradeço aos amigos João

Gabriel, Guedes, Chapecó, Stellio, Leonardo, Heitor, Guilherme, David,

companheiros de estudo que fizeram parte da minha formação. Agradeço aos

professores Aziz e Leonimer por sempre estarem disponíveis para ajudar e pela

paciência. Ao professor Osni Vicente por estar presente me aconselhado em

momentos difíceis.

Page 7: Implementação de uma Plataforma Robótica Terrestre não

Resumo

Cada vez mais protótipos robóticos estão sendo inseridos no mercado com o

intuito de facilitar o trabalho humano e aumentar a eficiência de produção nos mais

variados campos industriais. Neste trabalho foi projetado um protótipo robótico

terrestre não tripulado microcontrolado por um PIC 18F452 executando trajetórias

aleatórias e desviando de obstáculos presentes à frente do protótipo utilizando

sistema de detecção por sensor ultrassônico. O sistema será acionado através de

sinais PWM por um módulo contendo ponte H dupla para controlar o sentido de giro

dos motores. O controle de velocidade ficará por conta de um controlador PID,

ajustando a igualdade entre a velocidade angular de ambos os motores para a

execução de trajetórias retilíneas quando necessárias. O firmware introduzido neste

sistema embarcado deverá controlá-lo, de forma a realizar todas as tarefas pré-

definidas, eliminando eventuais erros, respeitando sempre os limites físicos do

sistema. O protótipo foi submetido à ensaios, testes e simulações para verificação

do desempenho do sistema, principalmente relacionado ao controle de velocidade.

Palavras–chave: robótica móvel, sistemas embarcados, controle de velocidade,

controlador PID, sistemas de malha fechada.

Page 8: Implementação de uma Plataforma Robótica Terrestre não

Abstract

Increasingly robotic prototypes are being entered in the market in order to

facilitate human work and increase production efficiency in many fields on the

industry. This work was designed a land prototype robotic no manned

microcontrolled by a PIC 18F452 executing a random paths and dodging obstacles in

front of the prototype using a detection system by ultrasonic sensor. The system is

triggered by PWM signals for a module containing double H bridge to control the spin

direction of the motors. The speed control will be the responsibility of a PID

controller, adjusting the equality between the angular speeds of both motors for

executing straight trajectories when necessary. The firmware added in this

embedded system should control it performing all pre-defined tasks, eliminating

errors while respecting the physical limits of the system. The prototype was subjected

to trials, tests and simulations to verify the performance of the system, mainly about

to speed control.

Key-words: mobile robotics, embedded systems, speed control, PID controller,

closed loop systems.

Page 9: Implementação de uma Plataforma Robótica Terrestre não

Sumário

Lista de Figuras

Lista de Tabelas

Lista de Acrônimos

1. Introdução 1

1.1 Objetivos Gerais ..................................................................................... 4

1.2 Objetivos Específicos ............................................................................. 5

1.3 Motivação e Justificativa ........................................................................ 6

1.4 Estrutura do Trabalho ............................................................................ 7

2 Revisão Bibliográfica 8

2.1 Sistemas embarcados ........................................................................... 8

2.2 Sistemas de controle ............................................................................. 9

2.3 Controle automático ............................................................................. 10

2.4 Sistemas de controle em malha aberta ............................................... 11

2.5 Sistemas e controle em malha fechada ............................................... 12

2.6 Sistemas de controle em malha aberta x sistemas de controle em

malha fechada ...................................................................................... 13

2.7 Controle digital .................................................................................... 13

2.8 Modulação por largura de pulso .......................................................... 15

2.9 Sistemas de controle para motores de corrente contínua ................... 16

2.10 Análise de resposta transitória e resposta estacionária ..................... 17

2.11 Controlador PID ................................................................................. 18

2.11.1 Ação proporcional ..................................................................... 19

Page 10: Implementação de uma Plataforma Robótica Terrestre não

2.11.2 Ação integral ............................................................................. 21

2.11.3 Ação derivativa ......................................................................... 22

2.11.4 Regras de sintonia para controladores PID .............................. 23

2.12 Motor de corrente contínua ............................................................... 26

2.13 Ponte H ............................................................................................. 29

2.14 Sensor de Ultrassom ........................................................................ 31

2.15 Microcontroladores ........................................................................... 32

2.16 Plataforma robótica móvel ................................................................ 35

3 Descrição do projeto 36

3.1 Descrição do software ........................................................................ 36

3.2 Descrição do hardware ....................................................................... 38

3.2.1 Microcontrolador PIC 18F452 ................................................... 42

3.3 Implementações ................................................................................. 43

4 Metodologia 44

4.1 Testes e simulações com PIC ............................................................ 44

4.1.1 PCW PIC C – IDE ..................................................................... 44

4.1.2 Proteus Design Suite ................................................................ 46

4.1.3 Programando o microcontrolador ................................................48

4.2 Testes dos componentes do protótipo ............................................... 53

4.2.1 Motores ..................................................................................... 53

4.2.2 Módulo L298N ........................................................................... 56

4.2.3 Encoders ................................................................................... 60

4.3 Placa de circuito impresso .................................................................. 60

4.4 Controlador PID .................................................................................. 62

4.5 Módulo HC-SR04 ............................................................................... 63

Page 11: Implementação de uma Plataforma Robótica Terrestre não

4.6 Potência consumida ............................................................................. 66

5 Resultados 68

6 Conclusão 83

7 Referências Bibliográficas 86

Apêndice A - Firmware 88

A.1 Firmware finalizado ...............................................................................88

A.2 Definições do microcontrolar .................................................................94

Anexo A – Microcontrolador PIC 18F452 95

Anexo B – L298 104

Anexo C – MÓDULO HC-SR04 106

Page 12: Implementação de uma Plataforma Robótica Terrestre não

Lista de Figuras

1.1 Diagrama de blocos do funcionamento do sistema..............................1

1.2 Motores e encoders fixados no protótipo..............................................2

2.1 Sistema de controle multivariável........................................................12

2.2 Sistema de controle a malha aberta (sem retroação)..........................12

2.3 Sistema de controle a malha fechada (com retroação).......................13

2.4 Amostragem de sinal senoidal.............................................................15

2.5 Sinal modulado por largura de pulso através de sinal analógico.......16

2.6 Sinais PWM com diferentes ciclo tarefa...............................................17

2.7 Controle de velocidade de motor CC com retroação...........................17

2.8 Diagrama de blocos do controlador PID..............................................20

2.9 Diagrama de blocos ação proporcional................................................21

2.10 Simulação de valores da constante proporcional.................................21

2.11 Diagrama de blocos ação integral........................................................22

2.12 Simulação para valores da constante integral......................................22

2.13 Diagrama de blocos ação derivativa.....................................................23

2.14 Simulação para valores da constante integral......................................24

2.15 Sistema estável com controlador PID...................................................26

2.16 Sistema instável com controlador PID..................................................26

2.17 Motor de corrente contínua de 6 Volts..................................................27

2.18 Seção transversal de motor de imã permanente..................................28

2.19 Inversão dos polos do rotor..................................................................29

Page 13: Implementação de uma Plataforma Robótica Terrestre não

2.20 Ponte H com transistores bipolar para acionamento de motor cc........30

2.21 Funcionamento da ponte H...................................................................31

2.22 Comprimento da onda comparada ao diâmetro mínimo do objeto.......32

2.23 Robô móvel – ‘Inspector Bot’.................................................................36

3.1 Fluxograma do código gerado para o sistema robótico.........................38

3.2 Componentes do kit robótico.................................................................40

3.3 Kit robótico montado..............................................................................41

3.4 Diagrama de pinos PIC 18F452.............................................................44

4.1 Ambiente Gráfico de desenvolvimento PCW.........................................46

4.2 Compilador PCW PIC C.........................................................................47

4.3 Exemplo de simulação no software Proteus..........................................48

4.4 Simulação para testar ponte H com PIC 16F873A................................49

4.5 Bateria de íon-lítio .................................................................................50

4.6 Programador PIC KIT 2..........................................................................51

4.7 Conexões entre microcontrolador PIC18F452 e PIK KIT 2....................52

4.8 Operações para programação PIC18F452 através do MPLAB..............53

4.9 Funcionamento do motor utilizando fonte de tensão continua...............54

4.10 Motor acionado por ponte H com transistores bipolares.........................55

4.11 Módulo L298N.........................................................................................56

4.12 Diagrama do circuito integrado L298N....................................................57

4.13 Verificação do funcionamento do módulo L298N....................................59

4.14 Teste dos motores utilizando módulo L298N...........................................60

4.15 Teste de encoder utilizando osciloscópio analógico................................60

Page 14: Implementação de uma Plataforma Robótica Terrestre não

4.16 Projeto da placa de circuito impresso......................................................61

4.17 Alimentação dos componentes do circuito..............................................62

4.18 Leitura dos encoders através de osciloscópio digital...............................62

4.19 HC-SR04 módulo sensor ultra-sônico......................................................64

4.20 Diagrama temporal sensor ultrassônico...................................................65

4.21 Teste com protótipo com rodas sem contato com a superfície................66

5.1 Código para geração de sinal PWM.........................................................67

5.2 Simulação de sinal PWM para acionamento de motores com L298........69

5.3 Primeira versão do hardware do projeto...................................................70

5.4 Interrupção para determinação da velocidade do protótipo......................72

5.5 interrupção para contagem dos pulsos dos encoders...............................73

5.6 Primeira tentativa para correção de velocidade.........................................73

5.7 Constantes do controlador PID..................................................................75

5.8 Equação do controlador PID para correção da velocidade........................77

5.9 Código para determinação de obstáculo....................................................77

5.10 Código para desvio de obstáculo...............................................................78

5.11 Placa de circuito impresso..........................................................................79

5.12 Projeto da placa de circuito impresso em 3D..............................................80

5.13 Projeto da placa de circuito impresso em 3D..............................................81

5.14 Plataforma robótica final..............................................................................82

Page 15: Implementação de uma Plataforma Robótica Terrestre não

Lista de tabelas

1.1 Tipos de memória do PIC 18F452.......................................................................43

4.1 Portas do módulo L298N.....................................................................................58

4.2 Potências consumidas no protótipo...................... ..............................................68

Page 16: Implementação de uma Plataforma Robótica Terrestre não

Lista de Acrônimos

CAD Computer–Aided Design

PID Proporcional-Integral-Derivativo

PWM Pulse Width Modulation

PTM Pulse Time Modulation

LCD Liquid Crystal Display

CC Corrente Contínua

DC Direct Current

PIC Peripheral Integrated Controller

HD Hard Disk

PDA Personal Digital Assistant

LED Light Emitting Diode

RS Recommended Standard

CAN Controller Area Network

I²C Inter-Integrated Circuit

SPI Serial Peripheral Interface

IDE Integrated Development Environment

USB Universal Serial Bus

TCP/IP Transmission Control Protocol/ Internet Protocol

A/D Analog/ Digital

D/A Digital/ Analog

EEPROM Electrical Erasable Programmable Read Only Memory

RAM Random Access Memory

ROM Read Only Memory

OTP One Time Programmable

Page 17: Implementação de uma Plataforma Robótica Terrestre não

USART Universal Synchronous/ Asynchronous Receiver/ Transmitter

SSP Software Support Package

LIN Local Interconnect Network

IRDA Infra-red Data Association

DIP Dual in Line Package

PCB Printed Circuit Board

ANSI American National Standards Institute

CCP Capture/Compare/PWM

FFT Fast Fourier Transform

TTL Transistor – Transistor - Logic

IEEE Institute of Electrical and Electronics Engineers

Page 18: Implementação de uma Plataforma Robótica Terrestre não

1

1 Introdução

Com o avanço da tecnologia tornou-se necessário a utilização de circuitos

eletrônicos cada vez menores e com maiores velocidades de processamento. A

partir daí surgiram os primeiros sistemas embarcados, sendo sistemas

microcontrolados com tarefas especificas com um microprocessador controlando

todo o sistema através de um programa chamado firmware (programa específico

para realizar as tarefas projetadas).(BOSE, 1992).

Com a melhoria dos sistemas microcontrolados tem trazido inúmeras

inovações para o campo da engenharia e com isso a otimização dos mais diversos

setores industriais com a introdução de sistemas robóticos otimizando e aumentando

a produtividade, diminuindo o trabalho exaustivo e braçal, melhorando a qualidade

de vida de trabalhadores neste setor, entre muitos outros benefícios.

Com o intuito de melhorar cada vez mais a eficiência de produtividade e

também auxiliar em pesquisas e verificações em ambientes agressivos aos seres

humanos plataformas mecânicas móveis com certa autonomia para locomoção

começaram a ser criadas. (AFUSO, 2012)

A diferença entre robótica móvel e outras áreas da robótica é o realce quanto

ao estudo sobre sua locomoção em um ambiente qualquer levando em consideração

os obstáculos móveis e imóveis, presentes a esse ambiente tendo a capacidade de

reconhecê-los, analisá-los e reagir em tempo real. (MELO, 2007)

Um protótipo terrestre autônomo possui diversas utilidades desde inspeções e

manutenção de equipamentos em áreas de difícil acesso até robôs domésticos

promovendo maior conforto para as pessoas.

A base geral para um protótipo terrestre para as mais diversas funções é a

mesma. Uma base mecânica, possuindo um sistema de locomoção autônomo ou

controlado através de comandos enviados por um dispositivo auxiliar. Desta maneira

basta modificar tais bases robóticas de maneira específica de acordo com a tarefa a

ser executada.

Page 19: Implementação de uma Plataforma Robótica Terrestre não

2

Através destes conceitos será projetado um protótipo embarcado terrestre

não tripulado.

A figura 1.1 mostra um diagrama de blocos contendo as funções a serem

projetadas pelo protótipo.

Figura 1.1: Diagrama de blocos do funcionamento do sistema.

Como pode ser visto através da figura acima, um sistema embarcado

microcontrolado controlará todo o sistema através de um firmware projetado para

realizar as tarefas cabíveis ao projeto.

Os motores serão acionados através de circuito contendo ponte H via sinal

PWM criados a partir do sistema embarcado projetado. Mas, para um controle de

velocidade preciso entre dois motores, apenas ondas moduladas por largura de

pulso não são o suficiente, pois motores reais, com as mesmas curvas

características, especificações e mesma tensão de operação, possuem ainda sim

Page 20: Implementação de uma Plataforma Robótica Terrestre não

3

velocidades angulares diferentes. Para isso serão utilizados encoder ópticos para

leitura de velocidade dos motores, realimentando o sistema. Para restaurar o erro

causado pela diferença de velocidade entre as duas roda será projetado um

controlador PID (proporcional, integral e derivativo) através da leitura realizada pelos

encoders. Desta maneira o sinal PWM poderá ser compensado de moto a igualar a

velocidade angular de ambos os motores.

Um sensor ultrassônico será utilizado na parte frontal do protótipo, enviando

sinais ao microcontrolador quando fizer a detecção de obstáculos a uma distância

mínima a ser projetada. Com isso o protótipo deverá realizar operação para fazer o

desvio de tais obstáculos.

Paralelamente a este projeto alguns tipos de comunicação serão introduzidos

no protótipo com o intuito de controlar perfeitamente a trajetória do veículo. Um

exemplo de comunicação será uma pequena tela de LCD, de onde os comandos de

direção e sentido serão gerados, comandados via bluetooth. Desta maneira o

veículo possuirá uma trajetória precisa.

Figura 1.2: Motores e encoders fixados no protótipo.

Page 21: Implementação de uma Plataforma Robótica Terrestre não

4

A figura 1.2 evidencia a base a ser utilizada no projeto contendo dois motores

de corrente contínua e um sistema de tração diferencial com roda livre na parte

frontal. Os encoders estão acoplados ao eixo do motor.

1.1 Objetivos Gerais

Programação de um microcontrolador PIC 18F452 para um protótipo móvel

terrestre não tripulado, realizando trajetórias aleatórias desviando de obstáculos

estáticos ou móveis.

Desenvolvimento de um firmware para controlar o sistema embarcado em

questão, projetar controlador PID e determinar suas constantes de forma precisa,

simulações a partir do software ISIS PROTEUS, design e roteamento de placa de

circuito impresso.

Testes práticos com o protótipo, com hardware completamente finalizado,

alterando algumas variáveis do circuito de forma a otimizá-lo.

Page 22: Implementação de uma Plataforma Robótica Terrestre não

5

1.2 Objetivos específicos

Estudo de microcontrolador PIC.

Estudo de controlador PID.

Projeto de circuitos eletrônicos.

Projeto e aplicação de sistemas embarcados.

Implementação de firmware para microcontrolador PIC 18F452.

Estudo da cinemática aplicada.

Estudo de encoder óptico.

Aplicação do módulo integrado (L298N) com ponte H dupla para acionamento

de motores CC.

Controle de velocidade de motores CC.

Estudo e aplicação de sensor ultrassônico (HC-SR04).

Roteamento e produção de placa de circuito impresso em software de CAD

Page 23: Implementação de uma Plataforma Robótica Terrestre não

6

1.3 Motivação e Justificativas

Robôs móveis autônomos possuem as mais diversas aplicações na área da

ciência. Manutenções, explorações, inspeções, entre muitas outras ações vem

sendo aprimoradas devido à utilização de robôs móveis. Porém devido o alto custo,

baixa confiabilidade e robustez esses robôs não são produzidos em larga escala

para utilização doméstica e industrial.

O aprimoramento deste tipo de tecnologia irá beneficiar a sociedade, incluindo

tais robôs em um ambiente real, executando tarefas ainda realizadas por seres

humanos, aumentado à eficiência da tarefa realizada independentemente da área de

atuação.

Através de uma base móvel autônoma, diversas aplicações podem ser feitas.

Neste trabalho o protótipo estudado e construído poderá servir, por exemplo, como

base de uma cadeira de rodas para deficientes físicos. Hoje, no Brasil, o preço de

uma cadeira de rodas motorizada custa em dia R$ 5000,00 e para muitos deficientes

físicos torna-se inviável adquiri-la.

Outros projetos estão sendo estudados paralelamente a este com o intuito de

agregar dispositivos ao protótipo como alguns tipos de comunicação e displays de

LCD para o controle da dinâmica do protótipo.

Este projeto tem o intuito também de aprendizado acadêmico, pois várias

ramificações da engenharia elétrica como instrumentação eletrônica, sistemas de

controle, sistemas embarcado, eletrotécnica, programação, microcontroladores, são

utilizadas.

Page 24: Implementação de uma Plataforma Robótica Terrestre não

7

1.4 Estrutura do Trabalho

O presente trabalho é dividido em capítulos para facilitar ao leitor o

entendimento do projeto.

Inicialmente efeito uma introdução sobre o projeto em geral para situar o leitor

sobre o trabalho em si, todos os objetivos que devem ser alcançados, as propostas

para o protótipo e um pouco sobre o porquê a pesquisa sobre o assunto.

No capitulo 2 é mostrado e explicado, segundo diversos livros, monografias,

teses e artigos, de forma geral, todos os assuntos pertinentes ao projeto, de forma

sucinta e objetiva, para dar o embasamento necessário ao leitor para o

entendimento sobre as ações feitas no trabalho, descritas nos tópicos seguintes.

O capitulo 3 é a descrição do projeto. Todas as implementações e descrições

dos softwares utilizados e hardware construído para o sistema embarcado em

questão.

O capitulo 4 refere-se à metodologia utilizada no trabalho. Esta é uma parte

extremamente importante do trabalho, pois mostra e explica vários testes, medições

e simulações para comprovar o funcionamento de componentes, a veracidade do

firmware programado e a potência consumida pela plataforma móvel.. Neste capitulo

encontram-se também algumas soluções para alguns casos onde as ações do

protótipo não funcionaram devidamente como nos objetivos estipulados no inicio do

trabalho.

Todos os resultados obtidos no decorrer do projeto encontram no capitulo 5.

Hardware inicial e final, partes do firmware projetado, projeto da placa de circuito

impresso em 3D, resultados falhos e o resultado final são alguns dos itens presentes

neste capitulo.

No capitulo 6 encontra-se a conclusão final do trabalho. Nesta parte é

apresentada a conclusão adquirida em relações às constantes do controlador PID e

sobre o encoder utilizado para fazer a realimentação do sistema e assim fazer a

correção do erro gerado. Nesta parte encontram-se também algumas sugestões

para trabalhos futuros.

Page 25: Implementação de uma Plataforma Robótica Terrestre não

8

2 Revisão Bibliográfica

2.1 Sistemas Embarcados

Sistemas embarcados são sistemas microprocessados onde o computador

que controla o sistema por um todo é devidamente dedicado. Ao contrário de

computadores convencionais que possuem muiti tarefas, os sistemas embarcados

são arquitetados para realizar apenas tarefas específicas, otimizando o projeto de

forma a reduzir seu tamanho, diminuir o custo do produto como um todo e aumentar

a capacidade de processamento. (HEATH, 2003).

Na década de 1980, com o avanço da tecnologia, componentes analógicos

externos foram introduzidos em uma unidade ou módulo, juntamente com o

microprocessador, a esta circuito integrado deu-se o nome de microcontroladores. A

partir deste momento começou a transição do uso de componentes analógicos por

eletrônica digital controlada por microcontroladores.

Desta maneira o custo de circuitos eletrônicos, agora conhecidos como

sistemas embarcados, diminuiu bastante tornando-se possível a utilização em

massa para os mais variados projetos.

Os softwares desenvolvidos para sistemas embarcados são comumente

chamados de firmware, e armazenados em memoria ROM ou flash do

microcontrolador, não necessitando da utilização de discos rígidos (HD’s),

diminuindo assim o custo do projeto e o tamanho do hardware.

A partir do projeto pré-estabelecido, basta inserir o programa na unidade de

processamento e construir o hardware apenas com componentes específicos de

acordo com o projeto e, desta maneira, as tarefas projetadas serão executadas.

Como o sistema possui tarefas especificas este pode ser reduzido

drasticamente em um tamanho mínimo, comparado a um computador de uso geral,

pelo fato do uso de apenas componentes necessários para o projeto.

Page 26: Implementação de uma Plataforma Robótica Terrestre não

9

Os sistemas embarcados podem ou não ter interface para o usuário. Essas

interfaces vão desde as mais simples como push-buttons, leds, displays para

mostrar alguma informação, como podem ser mais sofisticadas como a utilização de

PDA’s (Personal Digital Assistant) que funciona basicamente como um sistema

operacional de um sistema embarcado.

A comunicação com o meio externo é feita a partir de periféricos. Os tipo mais

comum de periféricos são:

Leds

Display’s de LCD

Interface serial Assíncrona (RS-232)

Interface serial (protocolo CAN, I2C, protocolo SPI, entre outros)

USB

TCP/IP

Diariamente temos contato com dispositivos embarcados como, por exemplo

telefones celulares, impressoras, roteadores, videogames, eletrodomésticos entre

muitos outros (HEATH, 2003).

.

2.2 Sistemas de Controle

Um sistema pode ser definido como um dispositivo qualquer que após receber

certa entrada, elabora uma saída, correspondente à entrada.

Sistemas de controle, como o próprio nome sugere, é um ou mais dispositivos

que tem a função de controlar algum sistema. Tais sistemas devem ser específicos

para cada função a ser controlada (OGATA, 1998).

.

Segundo (DORF; BISHOP, 2001, pg. 2) “um sistema de controle é uma

interconexão de componentes formando uma configuração de sistema que produzirá

uma resposta desejada ao sistema”.

Page 27: Implementação de uma Plataforma Robótica Terrestre não

10

2.3 Controle Automático

O controle automático essencial em qualquer campo da engenharia ou

ciência. Temos exemplos de métodos de controle em nosso cotidiano sem que

percebamos sua existência. A grande maioria de equipamentos eletrônicos que

utilizamos possuem controle automático e a tecnologia em que hoje se fala tanto

seria impossível ter tal crescimento sem as técnicas de controle (OGATA, 1998).

.

O primeiro controle automático surgiu em meados do século XVIII, inventado

por James Watt que consistia em um controlador centrífugo para o controle de

velocidade de uma maquina à vapor (DORF; BISHOP, 2001).

.

Durante a década de 1940 tivemos um grande avanço relacionado as

técnicas de controle onde foram introduzidos os conceitos de sistemas de controle

de malha fechada a partir dos métodos de resposta em frequência melhorando o

desempenho dos sistemas de controle da época. Nessa época foi também

desenvolvido o método de lugar das raízes por Evans, constituindo dessa maneira a

teoria de controle clássica.

Com avanço da tecnologia surgiram sistemas mais modernos com múltiplas

entradas e saídas e, com isso a teoria de controle clássica não era suficiente para

resolução dos problemas e a partir da década de 1960, com o auxilio de

computadores digitais foi desenvolvida a moderna teoria de controle baseada em

técnicas de análise e síntese através de variáveis de estado e também o controle

ótimo de sistemas determinísticos e estocásticos (OGATA, 1998).

Page 28: Implementação de uma Plataforma Robótica Terrestre não

11

Figura 2.1: Sistema de controle multivariável (DORF; BISHOP, 2001).

Os sistemas de controle possuem dois tipos:

Sistemas de controle em malha fechada.

Sistemas de controle em malha abera.

2.4 Sistemas de controle em malha aberta

Figura 2.2: Sistema de controle a malha aberta (sem retroação) (DORF; BISHOP, 2001).

Neste sistema os valores desejados serão conhecidos apenas após a

operação ter sido completada. Não possui realimentação e, portanto não se pode

fazer um monitoramento temporal das variáveis em questão. A resposta de saída

não exerce qualquer ação no sinal de controle. Para cada valor de saída irá

corresponder uma condição da variável de entrada. Este sistema de controle de

malha aberta deve ser utilizado apenas quando a relação entre entrada e saída é

muito bem conhecida. A isso dá-se o nome de função de transferência, que será

abordado mais pra frente neste trabalho. Em um sistema de controle em malha

Page 29: Implementação de uma Plataforma Robótica Terrestre não

12

aberta possui alguns elementos básicos como o sinal de entrada, o controlador que

engloba o elemento de controle juntamente com o elemento de correção para

eliminar possíveis ruídos indesejados, o processo e sim e desta maneira temos o

sinal de saída.

Em um sistema de controle de malha aberta, o sinal de saída não é enviado

de volta para a comparação com o sinal de entrada e assim comparado com o

mesmo (OGATA, 1998).

2.5 Sistemas de controle em Malha fechada.

Figura 2.3: Sistema de controle a malha fechada (com retroação). (DORF; BISHOP, 2001)

Comumente referido como sistema de controle com retroação, refere a

uma operação que, em presença de ruídos desconhecidos, ou seja, sinais de erro,

tenta diminuir a diferença entre o sinal retroativo do sistema e algum sinal de

referência pré-estabelecido fazendo com que tal sinal de erro reduza e desta

maneira o valor do sinal de saída seja o desejado. Distúrbios conhecidos

previamente podem ser compensados ao longo do sistema. O sinal de erro em

sistemas de malha fechada é a diferença entre o sinal de entrada e o sinal de

retroação (que pode ser o próprio sinal de saída ou uma função deste sinal)

(OGATA, 1998).

.

Page 30: Implementação de uma Plataforma Robótica Terrestre não

13

2.6 Sistemas de em controle malha fechada X sistemas de

controle em malha aberta.

Como sistemas de malha fechada utilizam realimentação através do sinal de

retroação temos que ruídos externos e variações internas do sistema afetam

relativamente muito pouco tal sistema, fazendo-se desta maneira o uso de

componentes com menos exatidão sem maiores problemas, porém pelo fato da

correção do sinal de erro, temos certa instabilidade do sistema. Outra desvantagem

para o sistema de malha fechada é a quantidade de componentes utilizados

tornando o custo do projeto mais caro. (OGATA, 1998).

Em contrapartida sistemas de malha aberta são mais estáveis comparados ao

anterior e menos componentes são necessários para o projeto deste sistema,

tornando-o menos caro e com economia de potência em relação ao sistema de

malha fechada. Porém o sistema de malha aberta deve ser usado apenas quando as

entradas do sistema são conhecidas antecipadamente.

Dependendo do projeto pode-se usar combinações de sistemas de malha

aberta com sistemas de malha fechada tornando o sistema om operação satisfatória

e sendo menos dispendiosos, principalmente na questão de potência. (OGATA,

1998).

2.7 Controle Digital

Com o avanço da tecnologia, o crescimento na área computacional nas

ultimas décadas e a invenção dos mais modernos e eficientes microcontroladores,

fez-se necessário a implementação dos sistemas de controle digitalmente para

atender a demanda de mercado que está cada vez mais exigente em questão de

precisão e velocidade de processamento.

Page 31: Implementação de uma Plataforma Robótica Terrestre não

14

Devido à simplicidade e flexibilidade na implantação em sistemas dinâmicos,

os controles digitais têm sido muito utilizados na indústria, substituindo os circuitos

analógicos, cujas configurações são rígidas e pré-definidas (REZEK, et. al, 2003).

A saída de um controlador digital como o próprio termo sugere possui a

resposta digital, para isso a informação antes analógica e agora digital (após

conversão feita por um conversor A/D) passa por um processo de amostragem (com

frequência e instantes de amostragem definidos) e posteriormente quantização.

Figura 2.4: Amostragem de sinal senoidal. (DORF; BISHOP, 2001).

Após a quantização da informação tem-se o sinal digital, que foi transformado

em um código binário. Com o código binário pode-se fazer uso de

microprocessadores ou microcontroladores que realizarão todas as devidas

operações necessárias para operação do sistema conforme o projetado. Após todas

as operações realizadas o sinal é convertido para analógico novamente (através de

um conversor D/A) para que o sinal binário (onde esses seriam ‘sinais’ ora nível

logico ‘1’ ora nível logico ‘0’) se transforme em níveis contínuos de tensão (DORF;

BISHOP, 2001).

Page 32: Implementação de uma Plataforma Robótica Terrestre não

15

2.8 Modulação por Largura de Pulso

Do inglês “Pulse Width Modulation”, mais conhecido como PWM, é um dos

principais tipos de modulação dor tempo de pulso (PTM, “Pulse time modulation”).

Valores da forma do sinal analógico são utilizados para determinar a largura

do pulso do sinal. Através de detector de sinal PWM como mostra a figura 2.5

(COUCH, 1997).

Figura 2.5: Sinal modulado por largura de pulso através de sinal analógico(COUCH, 1997).

.

PWM é um sinal digital que codifica níveis sinais analógicos. A onda digital

uma frequência fixa onde apenas o ciclo de trabalho é alterado, ou seja, o sinal

PWM possui nível lógico alto e nível lógico baixo e o ciclo de trabalho determina a

porcentagem em que o sinal permanece em nível lógico alto durante o período da

onda. A figura 2.6 a seguir mostra três sinais PWM com diferentes ciclos de trabalho

(BARR, 2009).

.

Page 33: Implementação de uma Plataforma Robótica Terrestre não

16

Figura 2.6: Sinais PWM com diferentes ciclo tarefa(BARR, 2009)

.

2.9 Sistemas de controle para motores de corrente contínua

Figura 2.7: Controle de velocidade de motor CC com retroação. (DORF; BISHOP, 2001).

Quando o motor CC está operando, a velocidade angular da roda pode ser

alterada devido a vários distúrbios e, desta maneira, o veículo não consegue

executar sua trajetória em linha reta (sem variações angulares). Tais distúrbios

podem ser provenientes de vários fatores como variações de cargas mecânicas

aplicadas à seu eixo, pequenas variações na tensão de alimentação do motor,

variações na curva entre dois motores, entre outros aspectos.

Page 34: Implementação de uma Plataforma Robótica Terrestre não

17

O controlador tem como função manter a variável controlada segundo

determinação do projeto, ou seja, um valor estabelecido anteriormente (SOARES,

2004).

Como descrito anteriormente, a função de um método de controle em malha

fechada é fazer uma comparação entre o valor medido e o valor desejado e com

isso fazer as correções necessárias.

É necessário um método de controle para controlar a velocidade de rotação

do motor e o torque do mesmo. Existem basicamente dois tipos de controle de

velocidade para motores CC.

Controle de potência.

Controle por PWM (modulação por largura de pulso).

(DORF; BISHOP, 2001).

2.10 Análise de resposta transitória e resposta estacionária.

A análise de respostas transitórias é feita para investigar características de

um sistema de controle no domínio do tempo.

O sinal de saída de um sistema de controle possui dois tipos de respostas. A

resposta transitória e a resposta estacionária (OGATA, 1998)..

Segundo (OGATA, 1998, p.113) “ Entende-se por resposta transitória aquela

que vai do esta do inicial até o estado final. Por resposta estacionária entende-se a

maneira como o sinal de saída do sistema quando o t tende a infinito.”

Segundo (DORF; BISHOP, 2001, pg 322). “A resposta em frequência de um

sistema é definida como a resposta de estado estacionário do sistema a um sinal

senoidal de entrada. A onda senoidal é um sinal de entrada peculiar, e o sinal de

saída resultante em um sistema linear, bem como os sinais ao longo deste, é

senoidal em regime permanente; difere da forma de onda do sinal de entrada

somente no que diz respeito a amplitude e ângulo de fase.”

Page 35: Implementação de uma Plataforma Robótica Terrestre não

18

Além de sinais de entrada e saída dos sistemas de controle, outra variável de

extrema importância é a estabilidade que pode ser definida quando um sistema

linear e invariante no tempo quando submetido à uma condição inicial sua saída

retorna a um estado de equilíbrio. Em um sistema de controle pode-se ter uma

estabilidade absoluta quando o sistema é instável ou não ou também estabilidade

relativa que caracteriza o grau de estabilidade (DORF; BISHOP, 2001).

Ainda, segundo (DORF; BISHOP, 2001, pg 230).“Um sistema estável é um

sistema dinâmico com uma resposta limitada a uma entrada limitada.

2.11 Controlador PID

O controle PID (Proporcional, Integral e derivativo) apesar de ser

implementado a bastante tempo é um dos métodos de controle mais usados pela

indústria atualmente pela sua facilidade de implementação tanto para aplicações

analógicas como aplicações digitais.

Controladores PID são de grande utilidade para reduzir o erro de estado

estacionário e melhorar a resposta transitória do sistema (DORF; BISHOP, 2001).

Segundo (OGATA, 1998, p.544) “É interessante assinalar que mais da

metade dos controladores industriais em uso nos dias atuais utiliza estratégias de

controle PID ou PID modificadas. A maioria dos controladores analógicos é

hidráulica, pneumática, elétrica e eletrônica, ou resulta em combinações destes

tipos. Correntemente, muitos deles são transformados em digitais por intermédio dos

microcontroladores.”

Tal método consiste em um algoritmo matemático que possui a função de

controlar precisamente uma ou mais variáveis de um sistema, fazendo com que o

sistema atue estavelmente como projetado mesmo existindo ruídos, distúrbios ou

variações que poderiam afetar a estabilidade do sistema. (SOARES, 2004).

A equação matemática abaixo descreve o controle proporcional, integral e

derivativo:

Page 36: Implementação de uma Plataforma Robótica Terrestre não

19

𝑚(𝑡) = 𝐾𝑃 . 𝑒(𝑡) + 𝐾𝐼 ∫ 𝑒(𝑡)𝑑𝑡𝑡

0+ K𝐷.

𝑑𝑒(𝑡)

𝑑𝑡 (2.1)

onde:

_ m(t) é a variável manipulada.

_ 𝐾𝑃 é o ganho proporcional.

_ 𝐾𝐼 é o ganho integral.

_ K𝐷 é o ganho derivativo.

_ e(t) é o erro.

(OGATA, 1998)

Figura 2.8: Diagrama de blocos do controlador PID (OGATA, 1998).

.

2.11.1 Ação Proporcional

Controlador proporcional tem por objetivo amplificar a variável manipulada, ou

seja, quanto maior o erro de regime, maior deve ser o a correção do projeto. Se o

ganho proporcional for escolhido corretamente o sistema tenderá a ficar estável,

porém esta ação apresenta um erro estacionário em função do ganho proporcional.

Page 37: Implementação de uma Plataforma Robótica Terrestre não

20

A relação entre a saída do controlador e o sinal de erro, também conhecida

como função de transferência do controlador, é o ganho proporcional como pode ser

confirmado na equação 2.2, descrita abaixo (PANTANÉ,2008).

𝑢(𝑡) = 𝐾𝑃. 𝑒(𝑡) (2.2)

Figura 2.9: Diagrama de blocos ação proporcional. (PANTANÉ, 2008)

.

A função proporcional produz um erro proporcional à saída devido ao ganho

proporcional e quanto maior a constante, maior a instabilidade do sistema e quanto

menor a constante de integração, maior o tempo de resposta, ou seja, o erro demora

mais para ser compensado. (ASTRÖM; HÄGGLUND, 1995).

Figura 2.10: Simulação de valores da constante proporcional (ASTRÖM; HÄGGLUND, 1995).

Page 38: Implementação de uma Plataforma Robótica Terrestre não

21

2.11.2 Ação Integral

A ação de controle integral atua no processo no decorrer de todo o tempo que

existir algum sinal de erro (a diferença entre o valor medido e o valor esperado) e

tem como principal função eliminar o erro estacionário causado pelo controlador

proporcional, porém piora a estabilidade do sistema graças ao aumento do tempo de

estabelecimento do atuador (PANTANÉ,2008).

𝑢(𝑡) = 𝐾𝐼 ∫ 𝑒(𝑡)𝑑𝑡𝑡

0 (2.3)

Figura 2.11: Diagrama de blocos ação integral. (PANTANÉ, 2008)

A função integral elimina o erro causado pela constante proporcional e

acelera o movimento do processo até o ponto desejado, porém como esta função é

uma somatória de erros instantâneos, o resultado do processo pode ultrapassar o

ponto desejado, fenômeno conhecido como overshoot. (ASTRÖM; HÄGGLUND,

1995).

.

Page 39: Implementação de uma Plataforma Robótica Terrestre não

22

Figura 2.12: Simulação para valores da constante integral (ASTRÖM; HÄGGLUND, 1995).

2.11.3 Ação Derivativa

O controle derivativo permite aumentar a velocidade de resposta do sistema,

tendo como principal função melhorar o desempenho do processo em regime

transitório, atenuando as variações em ocorrência. Quando ocorre uma perturbação

no sistema, tirando-o do estado de equilíbrio, o controle derivativo consegue detectar

tal perturbação rapidamente diferentemente do controle proporcional que começa

atuar apenas quando há uma ‘quebra’ de estabilidade do sistema.

Vale ressaltar que a ação derivativa ocorre apenas com a variação de erro do

sistema. Caso o processo esteja estável tal controle não é efetivo (PANTANÉ,2008).

𝑢(𝑡) = K𝐷 .𝑑𝑒(𝑡)

𝑑𝑡 (2.4)

Figura 2.13: Diagrama de blocos ação derivativa. (PANTANÉ, 2008).

Page 40: Implementação de uma Plataforma Robótica Terrestre não

23

A função derivativa diminui o tempo de estabilidade do sistema bem como o

overshoot causado pela ação integral.

Pelo fato de ser bastante susceptível à ruído, quanto maior o valor da

constante derivativa, maior o ruído introduzido ao sistema e consequentemente pode

causar retardo na resposta do sistema. (ASTRÖM; HÄGGLUND, 1995).

Figura 2.14: Simulação para valores da constante integral. (ASTRÖM; HÄGGLUND, 1995).

2.11.4 Regras de sintonia para controladores PID

Se a planta do sistema possuir um modelo matemático, várias técnicas de

projeto para as determinações do controlador proporcional, integral e derivativo

podem ser utilizadas obtendo respostas em regime transitório e regime permanente

do sistema.

Caso não seja possível obter o modelo matemático da planta do sistema,

métodos experimentais devem ser utilizados para a sintonia do controlador PID, ou

seja, a determinação de seus parâmetros.

As regras de Ziegler-Nichols determinam valores para o ganho proporcional

( 𝐾𝐶), o tempo integral (𝑇𝐼) e o tempo derivativo (𝑇𝐷) (OGATA, 1998).

Page 41: Implementação de uma Plataforma Robótica Terrestre não

24

A sintonia do controlador deve ser feita para a determinação dos parâmetros

de controle do sistema para produzir uma saída desejada, permitindo a otimização

do processo e minimização dos erros.

Durante a década de 1940, Ziegler e Nichols inventaram dois métodos para

obtenção dos parâmetros de um controlador PID.

Quando há realimentação do erro através de medidos, este método pode ser

utilizado.

A equação do controlador PID é mostrada a seguir:

𝑢(𝑡) = 𝐾𝐶[𝑒(𝑡) +1

𝑇𝐼∫ 𝑒(𝜏)𝑑𝜏

𝑡

0+ 𝑇𝐷

𝑑𝑒(𝑡)

𝑑𝑡] (2.5)

onde:

u(t) é o sinal de controle

e(t) é o erro ou a diferença entre o valor esperado e o valor medido

𝐾𝐶 é o ganho proporcional

𝑇𝐼 é o tempo integral (dimensiona o controlador integral)

𝑇𝐷 é o tempo derivativo (dimensiona o controlador derivativo)

t é o tempo necessário para a medição do erro.

No processo experimental, segundo o algoritmo de Ziegler-Nichols Basta

fazer 𝑇𝐼=999 e 𝑇𝐷=0, desta maneira o sistema irá operar apenas com a ação

proporcional. O valor da constante proporcional deve ser alterado de um valor

pequeno até obter a estabilidade parcial do sistema. Após isso Manter 𝑇𝐷=0 e

encontrar o valor de 𝑇𝐼 de modo a melhorar a estabilidade do sistema e por último

fazer o mesmo processo para 𝑇𝐷.

Deve-se tomar cuidado para superamortecer o sistema de modo a perder a

estabilidade como mostram as figuras 2.15 e 2.16:

Page 42: Implementação de uma Plataforma Robótica Terrestre não

25

Figura 2.15: Sistema estável com controlador PID. (BENNETT, 2006).

Figura 2.16: Sistema instável com controlador PID. (BENNETT, 2006).

A Vantagem do sistema deve-se ao fato da fácil obtenção dos valores das

constantes do controlador PID.

A desvantagem fica por conta da possível demora a determinar os parâmetros

do controlador PID. (BENNETT, 2006).

.

Page 43: Implementação de uma Plataforma Robótica Terrestre não

26

2.12 Motor de corrente contínua

Figura 2.17: Motor de corrente contínua de 6 Volts. (Fitzgerald, et. al, 2006).

A nomenclatura motores “DC” deriva do fato dos motores funcionarem por

corrente contínua (do inglês, Direct Current).

O motor de corrente contínua converte energia elétrica em energia mecânica.

(SIMONE, 2000).

Para motores de corrente contínua de baixa potência os comumente

utilizados são motores DC com imã permanente (estator) e com escovas. (BRAGA,

2012).

.

Page 44: Implementação de uma Plataforma Robótica Terrestre não

27

Este tipo de motor possui duas estruturas magnéticas como mostra a figura

2.18. Rotor e estator (imã permanente).

Figura 2.18: Seção transversal de motor de imã permanente. (FITZGERALD, et. al, 2006).

Um sistema de comutação é alimentado por uma bateria onde sua função é

inverter a corrente para o rotor e com isso comutando os polos positivo e negativo

nas bobinas. Quando a bateria fornece a tensão constante apropriada para o motor,

a corrente contínua introduzida passa por entre as espiras de cobre do motor

gerando um campo magnético.

Tal campo magnético induz atração ou repulsão com os imãs fixos no motor

fazendo desta maneira com que o rotor gire devido à repulsão entre polos iguais

como mostra a figura 2.19 de forma a encontrar a região de equilíbrio ou seja, com

polos distintos entre estator e campo magnético induzido. O comutador entra nesta

parte. À medida que o estator e o campo magnético induzido começam a entram em

equilíbrio, o comutador inverte a corrente para o rotor fazendo com que a polaridade

no rotor mude e assim saindo da região de equilíbrio, fazendo com que o rotor gire

constantemente enquanto houver uma fonte de tensão injetando corrente.

A intensidade de corrente elétrica que o motor necessita para é proporcional

ao trabalho que o motor realizará. Quanto maior o esforço mecânico (maior a

Page 45: Implementação de uma Plataforma Robótica Terrestre não

28

resistência para o movimento), maior será a intensidade de corrente que o motor irá

usufruir.

Porém como o motor de corrente continua não mantém uma velocidade

precisamente constante, é necessário um circuito auxiliar de controle de velocidade

para que assim consiga tal velocidade constante (Fitzgerald, et. al, 2006).

Figura 2.19: Inversão dos polos do rotor.

Na figura 2.19, a repulsão faz o motor girar meia volta, mas antes de

conseguir chegar em sua região de equilíbrio o comutador inverte os polos do rotor

fazendo com que o motor não pare de girar. (BRAGA, 2012).

Page 46: Implementação de uma Plataforma Robótica Terrestre não

29

2.13 Ponte H

A ponte H é comumente utilizada em circuitos eletrônicos para acionamento

de motores de corrente contínua a partir de sinais elétricos fazendo o controle e

determinando o sentido de rotação do motor. Porém, os motores em geral

necessitam de potências altas e a ponte H fornece o ganho de corrente para o

funcionamento exato do motor.

O nome ponte H é dado pelo fato da forma do circuito assume quando

montado como pode ser evidenciado na figura 2.20.

Figura 2.20: Ponte H com transistor bipolar para acionamento de motor cc. (BARR, 2009).

O circuito é constituído por quatro chaves, geralmente transistores, onde

metade dos transistores são PNP e a outra metade são NPN. Os transistores, para

funcionarem como chaves, trabalham na forma de corte e saturação.

O funcionamento do circuito é relativamente simples. Segundo configuração

da figura 2.20, temos os transistores NPN com seus emissores ligados à referência

(sem tensão) e os transistores PNP com seus emissores ligados a uma fonte de

Page 47: Implementação de uma Plataforma Robótica Terrestre não

30

tensão Vcc (geralmente quando se trabalha com microcontroladores essa tensão é 5

Volts). Chamaremos o transistor superior esquerdo de S1, o inferior esquerdo de S3,

o superior direito de S2 e o inferior direito de S4.

Como mostrado na teoria de transistores trabalhando na região de corte e

saturação temos que quando um transistor NPN possui tensão de base em nível

lógico alto, sua base está polarizada e desta maneira conduz corrente entre o coletor

e o transmissor do transistor tornando-se praticamente um curto circuito, caso

contrário torna-se um circuito aberto, impedindo a passagem de corrente. O

funcionamento de transistores PNP é o contrário do NPN pois para polarizar a base

deste tipo de transistor basta introduzir nível lógico baixo na base e desta maneira a

corrente flui de emissor para coletor. (BOYLESTAD, 2004).

As bases dos transistores da ponte H (A e B) serão alimentadas com entradas

1 e 0, ou seja, 5V e 0V, respectivamente, como mostrado na figura. Caso no lado

esquerdo da ponte H existir 5V injetados nas bases de S1 e S3 (no ponto A) e como

explicado acima, apenas o transistor a chave S3 irá conduzir. Já do lado direito da

ponte H (ponto B) temos nível lógico zero nas bases de S2 e S4 e, portanto, apenas

S2 irá conduzir.

Desta maneira, a corrente fluirá pelo motor da direita para esquerda fazendo-

o girar em um sentido. Para inverter o sentido de rotação do motor, basta abrir as

chaves S2 e S3 e fechar as chaves S1 e S4. Pra isso basta inverter as tensões de

base, colocando as bases de S1 e S3 em nível lógico baixo e as bases de S2 e S4

em nível lógico alto.

Figura 2.21: Funcionamento da ponte H. (BARR, 2009).

Page 48: Implementação de uma Plataforma Robótica Terrestre não

31

Deve-se tomar muito cuidado para não fechar as quatro chaves da ponte H

pois isso poderá danificar o motor.

A troca de tensão para inverter o sentido de rotação do motor não pode ser

feita manualmente e por isso ela deve ser feita com o auxilio de um

microcontrolador.

2.14 Sensor de ultrassom

Sensores ultrassônicos são amplamente utilizados, principalmente em

aplicações industriais para fazer a detecção de objetos, substâncias, presença de

pessoa, etc. em uma linha de produção.

O principio de funcionamento de um sensor é baseado nas ondas emitidas

pelos morcegos para detectar objetos e presas durante seu vôo, devido seu baixo

campo visual.

Pelo fato do baixo comprimento de onda emitido pelo sensor de ultra-som, as

ondas são refletidas pelo objeto e desta maneira captadas por um receptor embutido

no sensor de forma a detectar o mesmo, bem como a distância aproximada.

O comprimento de onda do ultrassom está intimamente ligado ao diâmetro do

objeto, onde o sensor consegue detectar objetos de no mínimo 10%

aproximadamente do comprimento de onda.

Figura 2.22: Comprimento da onda ultrassônica comparada ao diâmetro mínimo do objeto.

Page 49: Implementação de uma Plataforma Robótica Terrestre não

32

Basicamente o sensor é formado por um emissor que um receptor onde eles

emitem e recebem, respectivamente, as ondas ultrassônicas. (SABER

ELETRÔNICA, 2006).

2.15 Microcontroladores

A evolução da tecnologia com o dispositivo transistor que surgiu ao fim da

década de 40, possibilitou ao homem uma imensa gama de aplicações (não

imediatas). Vale a pena destacar que grandes computadores após o

desenvolvimento do circuito integrado aliado aos transistores, puderam ser

reduzidos de tamanho físico e adquiriram uma capacidade de processamento que

crescia ao longo do tempo, então cada vez mais era possível calcular problemas

mais complicados e mais elaborados, criando assim, sempre um projeto mais

avançado. Atualmente a utilização de microcontroladores esta cada vez mais

frequente dentro das mais distintas áreas de produtos, presente no nível industrial,

pesquisa, militar e casual.

No inicio da década de 70 foi lançado o primeiro processador de 4 bits,

chamado 4004, operando a uma frequência de 6 KHz. Em abril de 1972 a Intel

lançou o processador de 8 bits (conhecido como 8008) e logo após começaram

aparecer outras empresas concorrentes lançando novos processadores com cada

vez maior capacidade de processamento.

Os microcontroladores possuem todas as funcionalidades em uma única

pastilha como memorias, chipsets e dispositivos de entrada e saída por exemplo.

Os PIC (Peripheral Integrated Controler) são uma família de

microcontroladores fabricados pela Microchip Technology, que processam dados de

8 bits com extensa variedade de modelos, com recursos de programação por

memória FLASH,

EEPROM e OTP. Os microcontroladores PIC têm famílias de 12 bits, 14 bits e

16 bits de núcleo de processamento e trabalham em velocidade de 0kHz a 48MHz.

Page 50: Implementação de uma Plataforma Robótica Terrestre não

33

Funcionam com tensões de alimentação de 2 a 6V e os modelos possuem

encapsulamento de 6 a 100 pinos em diversos encapsulamentos

Seus principais periféricos internos são:

• Conversores Analógico-Digitais de 8 a 12 bits

• Contadores e timers de 8 e 16 bits

• Comparadores Analógicos

• USARTs

• Controladores de comunicação I2C, SSP, USB

• Controladores PWM

• Controladores de LCD

• Controladores de motores• Periféricos para LIN, CAN

• Controladores Ethernet

• Periféricos IRDA

• Codificadores para criptografia Keeloq

• Watchdog timer

• Detetores de falha na alimentação

• Portas digitais com capacidade de 25mA (fornecer ou drenar) para acionar

circuitos externos

• Osciladores internos

A programação de um microcontrolador pode ser deveras complicada, porém

com o avanço da tecnologia tornou-se bem mais pratico. Tudo isso porque começo

da existência dos microcontroladores, eles eram programados em linguagem de

máquina que consiste códigos binários realmente complexos. Com o avanço no uso

de programação foi criada a linguagem assembly que nada mais é de uma forma

alternativa de representar os códigos binários usando abreviações que descrevem

as operações. Mas a linguagem assembly ainda não resolvia todos os problemas na

questão de operações e rotinas fazendo com que o programador tivesse bastante

trabalho para executá-las. A partir daí foram criadas as linguagem de alto nível como

a linguagem C, por exemplo.

Hoje em dia a grande maioria dos microcontroladores é programada em

linguagem C ou derivações da mesma devida sua facilidade de execução e

Page 51: Implementação de uma Plataforma Robótica Terrestre não

34

eficiência, pois para microcontroladores que possui um limite baixo de palavras de

memória é estritamente necessário economizar memoria. Isto é possível com

linguagem de programação C pelo fato da sua proximidade com o hardware e a

linguagem assembly. (PEREIRA, 2004).

2.16 Plataforma robótica Móvel

A robótica teve grande avanço no século XXI, onde vários robôs foram

introduzidos em indústrias e muitas outras áreas. No setor industrial a robótica

possui o intuito de aumentar a produtividade e qualidade dos produtos bem como

amenizar os serviços braçais muitas vezes desgastantes, melhorando a qualidade

de vida dos trabalhadores. (SECCHI, 2008).

Nos anos de 1960 os robôs manipuladores foram introduzidos na indústria

otimizando o processo de produção e a partir daí pesquisadores de diversas áreas

começaram a desenvolver robôs cada vez mais rápidos precisos, melhorando cada

vez mais a produtividades do setor industrial.

Robôs móveis são plataformas mecânicas possuindo algum sistema de

locomoção com certa autonomia podendo ser terrestre, aéreo e até mesmo aquático

podem ter diversas finalidades como domésticos, militares, para pesquisa entre

muitas outras. Geralmente estas plataformas móveis estão relacionadas à

aplicações que podem oferecer algum risco à integridade humana, executando as

mais variadas tarefas. (SECCHI, 2008).

A autonomia destes robôs móveis está desde a parte energética como a

capacidade de execução de tarefas sem a intervenção humana, mediantes à

limitação física do sistema.

A figura 2.23 mostra um robô móvel conhecido como ‘Inspector Bot’ capaz de

inspecionar tubulações, da empresa Eventronic ES (SECCHI, 2008).

Page 52: Implementação de uma Plataforma Robótica Terrestre não

35

Figura 2.23: Robô móvel – ‘Inspector Bot’. (SECCHI, 2008).

Ao contrário de robôs presentes nas indústrias atualmente as plataformas

robóticas móveis podem ser deslocadas de um local para o outro permitindo

diversas aplicações nas áreas de educação e pesquisa como afirma o Engenheiro

Hugo Bertone com formações na área de mecânica, elétrica e eletrônica

(BERTONE, 2012).

Page 53: Implementação de uma Plataforma Robótica Terrestre não

36

3 Descrição do Projeto

O projeto a ser desenvolvido compreende o estudo e a implementação de um

sistema embarcado microcontrolado através de um microcontrolador PIC 18F452

introduzido em uma plataforma robótica móvel.

O projeto proposto faz a montagem, programação e simulação de um

protótipo autônomo terrestre, onde este percorre uma trajetória retilínea qualquer

desviando de obstáculos presentes à sua frente. Quando o protótipo detectar algum

obstáculo ele deve parar, executar leve conversão em relação ao seu eixo e seguir

em frente mantendo sua velocidade constante.

3.1 Descrição do Software

O firmware gerado para o controle do sistema robótico será feito a partir do

ambiente de desenvolvimento integrado PCW PIC C, compilando o código e

gerando os arquivos necessários para a programação do microcontrolador.

O fluxograma a seguir demonstra as ações a serem executadas pelo

microcontrolador e com isso o suporte para a construção do firmware:

Page 54: Implementação de uma Plataforma Robótica Terrestre não

37

Figura 3.1: Fluxograma do código gerado para o sistema robótico.

Como pode ser analisado, a primeira etapa a ser executada é a determinação

das constantes do controlador PID. Após isso será habilitado o sentido do motor de

Page 55: Implementação de uma Plataforma Robótica Terrestre não

38

forma com que o protótipo siga para frente com a velocidade inicial estipulada de

aproximadamente 40% da velocidade máxima.

Nesse momento o protótipo não conseguirá se movimentar de forma retilínea

e assim deve ser feita a correção das velocidades. O primeiro passo é determinar a

roda de referência e a roda ser corrigida. Com isso, será feito uma rotina de

interrupção para contar a quantidade de pulsos enviada através do encoder para o

microcontrolador. A maneira com que os pulsos são gerados já foi explicada

anteriormente.

A diferença entre o numero de pulsos gerados pela roda de referência e a

roda a ser corrigida será o sinal de erro a ser compensado pelo controlador PID.

Através da equação do controlador PID, será feita a correção do erro e a cada

iteração ocorrida, o irá diminuindo de forma a manter a mesma velocidade angular

para ambas as rodas.

Caso haja algum obstáculo no meio da trajetória, o protótipo irá parar, retornar

de forma a fazer uma ligeira curva e continuar sua trajetória. Porém, quando a

trajetória é reiniciada, o erro também é reiniciado. Desta maneira o processo para

eliminação do erro deve ser feito novamente.

3.2 Descrição do Hardware

A plataforma robótica terrestre possui como base mecânica um kit robótico,

comumente utilizado por iniciantes com o microcontrolador Arduíno. O kit é

encontrado em diversos sites de compra online e possui os itens descritos abaixo:

Plataforma em acrílico

Dois motores CC – (6V)

Caixa de bateria

Parafusos para fixação

2 rodas de borracha

1 roda boba (utilizada para apoio frontal e fazer curvas)

Page 56: Implementação de uma Plataforma Robótica Terrestre não

39

2 discos de encoders

Suporte para pilha

As figuras 3.2 e 3.3 possuem os componentes presentes no kit adquirido e o

protótipo montado, respectivamente.

Figura 3.2: Componentes do kit robótico.

Page 57: Implementação de uma Plataforma Robótica Terrestre não

40

Figura 3.3: Kit robótico montado.

Este módulo mecânico servirá como base para o módulo eletrônico.

Todo o sistema é microcontrolado através do Microchip PIC 18F452, onde o

firmware programado deverá executar todas as tarefas que o projeto tem por

objetivo.

As rodas, que estão acopladas aos eixos dos motores, devem girar em ambos

os sentidos e para isso será utilizado um módulo L298N contendo ponte H dupla via

sinais PWM gerados pelo microcontrolador com o intuito de controlar a velocidade

dos motores. Este módulo permitirá inverter o sentido de giro dos motores quando

necessário.

Contudo, os motores recebendo o mesmo sinal PWM, ou seja, com uma

mesma tensão média, os motores não possuem as mesmas velocidades angulares,

podendo ser comprovado, pois as rodas giram com velocidades diferentes. Isso

implica que fisicamente o veículo não consegue manter a trajetória retilínea proposta

anteriormente.

Page 58: Implementação de uma Plataforma Robótica Terrestre não

41

Para manter as rodas girando com mesma velocidade angular para manter a

trajetória em linha reta deve ser feito um controlador para compensar a roda que

está girando com menor velocidade angular.

O controlador utilizado será um controlador PID (proporcional, integral e

derivativo) que, através da compensação do erro gerado entre a diferença de

velocidade das duas rodas, fará a correção da rotação do motor a ser corrigido em

relação ao motor utilizado para referência, Assim será possível fazer com que o

protótipo consiga se locomover em linha reta.

A leitura da velocidade de ambos os motores será feita através de enconders.

Os encoders farão a realimentação do sistema, enviando o monitoramento da

velocidade dos motores para o microcontrolador consiga, desta maneira, compensar

a defasagem de velocidade de uma das rodas, aumentando o valor do sinal PWM

enviada para a mesma.

Após isso será introduzido no sistema o módulo ultrassônico HC-SR04 tendo

por função detectar os obstáculos presentes à frente do protótipo.

Os códigos gerados serão simulados através do software ISIS Proteus

sempre que possível antes da programação no microcontrolador

Com a simulação do projeto torna-se mais fácil a detecção de erros bem

como a autenticação da funcionalidade do projeto, podendo assim, em um passo

seguinte montar o circuito em uma placa de circuito impresso com total certeza que

o circuito projetado está correto.

Para fazer a programação do microcontrolador será utilizado um programador

PIC KIT 2 fazendo a conexão entre software MPLAB que carregará o código com o

PIC 18F452.

Page 59: Implementação de uma Plataforma Robótica Terrestre não

42

3.2.1 Microcontrolador PIC 18F452

Os microcontroladores PIC da família 18F, em especial o PIC 18F452 possui

16 núcleos de processamento. Possui velocidade de processamento maior em

comparação aos seus antecessores, com 10 MPIS a 40MHz de clock, níveis de

prioridade para interrupções e encapsulamento de 40 pinos(DIP – “Dual in Line

Package”).

Possui também arquitetura Harvard, onde tanto os programas como os dados

podem ser acessados de maneira diferentes, facilitando a operação dos circuitos de

entrada e saída.

A tabela a seguir mostra a quantidade e tipo de memórias de um PIC 18F452.

Tabela 1.1: Tipos de memória do PIC 18F452.

Tipo Quantidade(bytes)

Memória FLASH 32768

Palavras de instrução 16384

Memória RAM de uso geral 1536

Memória de dados EEPROM 256

As principais características são:

8 canais para conversão analógico/digital a 10 bits.

Alta corrente (25 mA).

Três pinos de interrupção externa.

Timer 0: timer 16 bits e contador de 8 bits com 8 bits de prescaler

programável.

Timer 1: timer/contador de 16 bits.

Timer 2: timer 8 bits e contador com 8 bits de registrador.

Timer 3: timer/contador 16 bits.

Dois módulos de captura, comparação e PWM (CCP1 e CCP2).

I2C ™ modo ‘mestre e escravo’.

Módulo USART (suporta RS-485 e RS-232).

Frequência de operação de DC 40MHz.

Page 60: Implementação de uma Plataforma Robótica Terrestre não

43

5 portas de entrada/saída.

Quatro(4) Timers

8 canais entrada para módulo conversão A/D.

18 fontes internas/externas de interrupção.

Figura 3.4: Diagrama de pinos PIC 18F452. (MICROCHIP, 2006).

3.3 Implementações

Para a montagem da placa de circuito impresso para o controla embarcado do

sistema, será utilizado o software ALTIUM DESIGN, gerando também imagens da

placa em 3D, facilitando para o design final da placa.

Nesta placa estará inclusa o microcontrolador PIC 18F452, o cristal de 8MHz

que determinará a frequência de oscilação do microcontrolador, o módulo com

sensor ultrassônico, led para informação do funcionamento do circuito, resistores

para evitar queima de componentes, capacitores e conectores para alimentação e

outros periféricos.

Após a placa devidamente roteada com todos os componentes soldados,

serão conectados outros periféricos como o módulo ponte H dupla, os encoders e a

fonte de alimentação do circuito.

Page 61: Implementação de uma Plataforma Robótica Terrestre não

44

4 Metodologia

Em um projeto eletrônico é essencial a utilização de equipamentos para

aferições bem como softwares para simulações, pois em um ambiente real existem

muitas fontes de ruído e interferências devidos a diversos fatores. As simulações

servem para que o sistema funcione com todos os componentes ideais, livres de

ruído e interferência.

Neste projeto foram utilizados alguns equipamentos para verificação da

veracidade de componentes e testes dos mesmos como multímetros para medir

continuidade entre conexões, fazer a verificação de tensões e correntes,

osciloscópio analógico e digital, fonte de tensão contínua e gerador de sinais.

4.1 Testes e simulações com o PIC

4.1.1 PCWH PIC C – IDE

Software compilador que consiste em um ambiente de desenvolvimento

Integrado implementado pela CCS para microcontroladores Microchip PIC sendo

utilizado em sistema operacional Windows™.

O compilador suporta todas as famílias de microcontroladores PIC desde a

série PIC12 até a série PIC18 (com exceção da série PIC17).

O IDE é constituído por módulos dependo da quantidade de bits do

dispositivo. O PCH é utilizado para dispositivos de 16 bits, no caso

microcontroladores da série PIC18.

O compilador da CCS possui um ambiente gráfico de programação, como

mostra a figura 4.1.

Page 62: Implementação de uma Plataforma Robótica Terrestre não

45

Figura 4.1: Ambiente Gráfico de desenvolvimento PCW.

Segundo (PEREIRA, 2004 p. 33). “As principais características do compilador

em estudo são:

Compatibilidade com a padronização ANSI e ISO;

Grande eficiência no código gerado;

Grande diversidade de funções e bibliotecas da linguagem C, tais como:

entrada/saída serial, manipulação de strings e caracteres, funções

matemáticas C, etc.;

Grande portabilidade de código entre os diversos microcontroladores PIC.

inclusive um código para outros microcontroladores ou sistemas. Isto significa

que é muito fácil adaptar um programa escrito em C para outro dispositivo ou

sistema.;”

O ambiente de programação é bastante interativo possuindo bastante

facilidade para programação, incluindo seleção de alguns quesitos como módulos

CCP microcontrolador, seleção e configuração de timers, habilitação de pinos como

entrada ou saída, habilitação de interrupções, entre muitas outras funcionalidades.

Com a seleção dos itens listados acima, o próprio compilador gera linhas de

código, facilitando assim o trabalho do programador.

Page 63: Implementação de uma Plataforma Robótica Terrestre não

46

Um exemplo de teste é mostrado na figura 4.2. O teste consiste na geração

de sinais PWM para o acionamento de motores de corrente contínua através de

ponte H construída a partir de transistores bipolares onde. O sinal PWM é

incrementado através de botões. .

Figura 4.2: Compilador PCW PIC C.

4.1.2 Proteus Design Suite

Isis Proteus, pertencente à indústria inglesa Labcenter Eletronics, sendo um

software para simulação e design de placas de circuito impresso.

Entre as funcionalidades deste software está a simulação de circuitos

integrados programáveis como o PIC, por exemplo, através da ferramenta ISIS.

Page 64: Implementação de uma Plataforma Robótica Terrestre não

47

A simulação se torna essencial em projetos elétrico-eletrônicos pelo fato de

ruído térmico presente à temperatura acima de zero Kelvin, capacitâncias parasitas

presentes em protoboard (utilizado para montagem de um circuito), maus contatos,

indutâncias parasitas, entre muitos outros fatores presentes em um ambiente real

que podem atrapalhar no correto funcionamento do sistema.

Além dos quesitos mencionados acima, o software é uma ferramenta que

pode ser implementada com extrema facilidade introduzindo os componentes

analógicos, bem como circuitos integrados que podem ou não serem programáveis

através das bibliotecas do próprio programa.

A figura 4.3 mostra um exemplo de amostra fornecida pelo software no

ambiente ISIS Professional para simulação de circuitos.

Figura 4.3: Exemplo de simulação no software Proteus.

Várias simulações foram feitas utilizando a ferramenta ISIS do software

Proteus com o intuito de projetar o sistema em um ambiente ideal, livre de ruído ou

Page 65: Implementação de uma Plataforma Robótica Terrestre não

48

interferências e desta maneira comprovar a veracidade do firmware projetado.

Abaixo na figura 4.4, a simulação do teste programado na figura 4.2.

Figura 4.4: Simulação para testar ponte H com PIC 16F873A.

4.1.3 Alimentação do circuito

Inicialmente, após a construção da primeira versão do hardware da

plataforma robótica, a alimentação do circuito era feira a partir de uma fonte de

alimentação contínua evitando o uso de baterias e o descarregamento das mesmas

bem como encontrar a melhor tensão de trabalho para o projeto. Em vários testes

essa fonte foi tensão foi utilizada, pois além da praticidade ela limita a corrente

enviada para o circuito evitando a queima de dispositivos eletrônicos.

Os testes de rodagem foram feitos através de um conjunto de seis pilhas

recarregáveis, mas além do peso sobre a plataforma as pilhas descarregavam

rapidamente. A alternativa encontrada foi o uso de baterias de íon-lítio, como na

figura 4.5. Essas baterias são as mesmas utilizadas em celulares atualmente. A

tensão fornecida por cada bateria é de 3.7 Volts quando totalmente carregada com

fornecimento de aproximadamente 2,6 amperes. Com isso foram ligadas 2 baterias

Page 66: Implementação de uma Plataforma Robótica Terrestre não

49

em serie para a alimentação do circuito, tendo a durabilidade muito maior que as

pilhas utilizadas anteriormente, devido sua maior densidade energética, melhora no

design e diminuição do peso.

Figura 4.5: Bateria de íon-lítio.

4.1.4 Programando o microcontrolador

Para testar a programação no ambiente real, o firmware era programado no

microcontrolador através de um programador PIC KIT 2 com o auxilio do software

MPLAB, onde os programas eram carregados, como mostram as figuras 4.6 e 4.7:

Page 67: Implementação de uma Plataforma Robótica Terrestre não

50

Figura 4.6: Programador PIC KIT 2.

O programador transporta o código do firmware para o microcontrolador PIC,

fazendo a comunicação do ambiente onde se encontra o código com o PIC.

As figuras a seguir mostram o passo-a-passo como é feita a programação do

código no microcontrolador.

Page 68: Implementação de uma Plataforma Robótica Terrestre não

51

Figura 4.7: Conexões entre microcontrolador PIC18F452 e programador PIC KIT 2.

Após conexões feitas entre o programador e o microcontrolador, o software

MPLAB fornecerá o suporte necessário para a inserção do firmware no PIC.

No ambiente do MPLAB, inicialmente deve-se fazer o reconhecimento com o

programador PIC KIT 2. Com o dispositivo reconhecido pelo software, o código a ser

gravado no PIC deve ser importado. O arquivo importado é a extensão ‘.hex’ gerada

pelo compilador. Após estas operações basta selecionar o comando para programar

o PIC.

Todas as operações podem ser vistas na figura 4.8.

Page 69: Implementação de uma Plataforma Robótica Terrestre não

52

Figura 4.8: Operações para programação PIC18F452 através do MPLAB.

Devido alguns testes de rodagem sem sucesso, alguns testes foram

feitos com alguns componentes da plataforma robótica.

Page 70: Implementação de uma Plataforma Robótica Terrestre não

53

4.2 Testes dos componentes do protótipo

4.2.1 Motores

Os testes com os motores foram feitos injetando tensão contínua nos

mesmos, proveniente da fonte de alimentação da figura 4.5. Através destes testes

foi constatado que os motores operavam de forma satisfatória.

Para testar o controle de velocidade através de sinais PWM, foi feito um teste

construindo uma simples ponte H com transistores bipolares sendo acionada através

de uma onda quadrada com frequência de 500 Hz, proveniente de um gerador de

sinais, simulando o sinal PWM que será criado pelo microcontrolador. O ciclo tarefa

da onda foi iniciado em 50% e quando era aumentado, manualmente, a rotação da

roda também aumentava.

Page 71: Implementação de uma Plataforma Robótica Terrestre não

54

Figura 4.9: Verificação do funcionamento do motor utilizando fonte de tensão contínua.

Page 72: Implementação de uma Plataforma Robótica Terrestre não

55

Figura 4.10: Motor acionado por ponte H com transistores bipolares.

Page 73: Implementação de uma Plataforma Robótica Terrestre não

56

4.2.2 Módulo L298N

A figurara 4.11 mostra um modulo Driver com ponte H dupla, ou seja, para

acionamento de dois motores de corrente contínua. Esse tipo de placa é muito boa

para trabalhar em conjunto com um microcontrolador, pois possibilita o controle de

velocidade dos motores com grande facilidade.

Figura 4.11: Módulo L298N. (ST MICROELETRONICS, 2000).

O módulo L298N possui saída para dois motores, alimentação externa, saída

de 5V, diodos de proteção, chave liga/desliga, led indicador de alimentação, leds

indicadores de direção do motor, regulador de tensão de 5V (LM7805), Resistores

de Pull-up, duas entradas para habilitar os respectivos motores, controle de direção

dos motores, circuito integrado L298 com dissipador de potência.

A tabela 4.1 descreve cada porta do módulo L298N:

Page 74: Implementação de uma Plataforma Robótica Terrestre não

57

Tabela 4.1: Portas do módulo L298N.

Nome da porta Descrição

Vcc Alimentação externa da placa

GND Referência externa da placa

ENA Habilita motor A

ENB Habilita o motor B

IN1 Controle de direção motor A

IN2 Controle de direção motor A

IN3 Controle de direção motor B

IN4 Controle de direção motor B

Motor A Saída para o motor A

Motor B Saída para o motor B

CSA Pino para testar corrente da ponte A

CSB Pino para testar corrente ponte B

UR Resistores de pull-up

5V Módulo fornece 5V.

O funcionamento do módulo é relativamente simples e bastante didático para

usar. Basta conectar os motores, habilitar as saídas (enable A e B) e conectar as

entradas (IN1, IN2, IN3, IN4) conforme o sentido de rotação desejado para os

motores. Esta parte deve ser ligada com muito cuidado para não ligar dois lados da

mesma ponte como mencionado acima.

Para o controle de velocidade, basta ligar sinais pwm (gerados por um

microcontrolador) nas entradas de habilitação dos motores (enable). E para controlar

o sentido de rotação do motor basta ligar as entradas (IN1, IN2, IN3, IN4) de entrada

e saída do microcontrolador que, com a programação correta irá responder ao

desejado.

Page 75: Implementação de uma Plataforma Robótica Terrestre não

58

Figura 4.12: Diagrama do circuito integrado L298N. (ST MICROELETRONICS, 2000).

Alguns testes quanto ao funcionamento do módulo L298N foram feitos,

testando apenas suas portas de habilitação, alimentação, entrada e saída e também

acionando motor de um protótipo móvel.

Page 76: Implementação de uma Plataforma Robótica Terrestre não

59

Figura 4.13: Verificação do funcionamento do módulo L298N.

Figura 4.14: Teste dos motores utilizando módulo L298N.

Page 77: Implementação de uma Plataforma Robótica Terrestre não

60

4.1.3 Encoders

Os testes dos encoders foram executados utilizando osciloscópio analógico,

analisando a resposta que o sensor enviará ao microcontrolador.

Figura 4.15: Teste de encoder utilizando osciloscópio analógico.

4.3 Placa de circuito impresso

A placa de circuito impresso foi projetada através do software Altium

Designer, conforme a figura 4.16.

Page 78: Implementação de uma Plataforma Robótica Terrestre não

61

Figura 4.16: Projeto da placa de circuito impresso.

Este software possui diversas ferramentas, facilitando na execução para

construção da placa, inclusive simulação 3D e organização dos componentes com

suas respectivas conexões.

Figura 4.17: Alimentação dos componentes do circuito.

Page 79: Implementação de uma Plataforma Robótica Terrestre não

62

Após impresso o desenho da placa, ela deve ser roteada com todo o cuidado

possível. O processo de soldagem de componentes requer muito cuidado e precisão

devido ao tamanho das trilhas e conexões entre componentes, pois qualquer ligação

equivocada ou mesmo uma quantidade mínima de estanho pode relacionar duas

trilhas diferentes e quando o circuito é alimentado, poderá ocorrer um curto circuito

ocasionando na queima de componentes. Portanto, apesar de parecer uma simples,

este trabalho requer muita atenção e cuidado.

4.4 Controlador PID

Como dito anteriormente, o tipo de controlador usado foi o controlador PID

(proporcional, integral e derivativo), onde suas respectivas constantes, estipuladas

de maneira correta, determinam a estabilidade do sistema.

Os primeiros testes para determinar as constantes do controlador PID foram

feitos através de um osciloscópio digital onde os sinais de ambos os encoders eram

lidos e subtraídos. Teoricamente o sinal dos encoders deveriam ser ondas

quadradas ciclos tarefa diferentes devido à diferença de velocidade proporcionada

pelos motores. A subtração das duas formas de onda seria uma onda também

quadrada onde seu ciclo tarefa seria a subtração dos dois primeiros. Aplicando a

Transformada de Fourier Rápida (FFT, do inglês “Fast Fourier Transformation”)

Obter-se-á uma onda sinc com o mesmo período da onda no domínio do tempo. E

assim, quanto menor a diferença (erro) entre a leitura dos encoders, menor seria o

período da onda no domínio da frequência. Quando o erro tende-se a zero teríamos

apenas um pulso na origem.

Porém, não foi isso que aconteceu, pois o osciloscópio não conseguia ler

ondas perfeitamente quadradas provenientes do encoder como podem ser visto na

figura 4.18.

Page 80: Implementação de uma Plataforma Robótica Terrestre não

63

Figura 4.18: Leitura dos encoders através de osciloscópio digital.

Desta maneira foram feitos testes práticos de rodagem com o protótipo. Toda

vez que as constantes eram alteradas, o microcontrolador era reprogramado, como

nas imagens acima, com o auxilio de um pic kit 2 e do software Microchip MPLAB.

Através de análise visual as constantes foram reguladas até encontrar o ponto mais

próximo do ideal.

4.5 Módulo HC-SR04

Como mostra a figura 4.19 o módulo possui quatro pinos com Vcc, GND, Trig

e Echo.

Page 81: Implementação de uma Plataforma Robótica Terrestre não

64

Figura 4.19: HC-SR04 módulo sensor ultrassônico. (ELECFREAKS, 2006)

O módulo sensor ultrassônico funciona como um detector de objetos,

permitindo medir distâncias de até 400 cm com precisão de aproximadamente 3 mm

e ângulo de medição de 15° Possui transmissor de ultra-som, recepto e circuito de

controle. Opera com 5 Volts DC ligado ao pino Vcc e 0V ao pino GND. Sua

frequência e corrente de operação são de 40 KHz e 15 mA, respectivamente. O sinal

de entrada de trigger possui pulso TTL de 10µs e o sinal de saída Echo é

proporcional ao sinal de entrada TTL.

Segundo o diagrama temporal mostrado abaixo o trigger envia um curto pulso

de 10µs e o módulo enviará uma onda de 40KHz com 8 ciclos e o pino de Echo

receberá uma onda TTL com largura de pulso proporcional à distância do objeto. A

distância entre o módulo e o objeto pode ser calculada através do tempo entre o

disparo e o recebimento do pulso, bastando apenas dividir esse tempo (em micro

segundos) por 58 e desta forma terá a distância em centímetros.

Lembrando apenas que o sinal trigger deve ser enviado conforme

programado pelo usuário e este intervalo de tempo deve ser tal que não sobreponha

as ondas ultrassônicas enviadas anteriormente.

Page 82: Implementação de uma Plataforma Robótica Terrestre não

65

Figura 4.20: Diagrama temporal sensor ultrassônico. (ELECFREAKS, 2006).

Como descrito anteriormente, toda a lógica para desviar o protótipo será feita

através do microcontrolador com o firmware produzido pelo software PCW PIC C.

A distância com que o sensor de ultrassom irá detectar os obstáculos será

determinada a partir do intervalo de tempo do sinal enviado e do sinal refletido no

obstáculo, podendo ser calculada através de uma simples equação, mostrada na

folha de dados do sensor.

𝐷 = ∆𝑡

58 (4.1)

Onde D é distância em centímetros, ∆𝑡 é a diferença de tempo entre a onda

transmitida e a onda recebida e 58 é o valor fornecido pelo datasheet do módulo HC-

SR04 para obtenção da distância em centímetros.

Os testes com o módulo HC-SR04 foram feitos primeiramente sobre uma

bancada, evitando o contato das rodas com qualquer superfície. Quando qualquer

obstáculo era colocado à frente do sensor a menos de 20 centímetros, os motores

paravam de funcionar, invertiam o sentido de uma das rodas, mantendo a outra

parada, de forma a fazer o desvio de obstáculo e continuava sua trajetória. Um

exemplo de teste é mostrado na figura 4.21.

Page 83: Implementação de uma Plataforma Robótica Terrestre não

66

Figura 4.21: Teste com protótipo com rodas sem contato com a superfície.

Após isso o teste foi através de rodagem do protótipo.

Quando algum objeto era detectado pelo sensor, os motores desligavam,

porém devido à inercia dos motores, o protótipo não parava instantaneamente,

consequentemente acabava colidindo com o obstáculo.

A alternativa executada foi ‘dar um tranco para trás’, ou seja, diminuir um

pouco a velocidade dos motores e inverter o sentido de giro de ambos sem pará-los

previamente. Com isso o protótipo para quase que instantaneamente, evitando a

colisão com os obstáculos.

4.6 Potência consumida

Alguns testes foram feitos quanto à potência consumida. Para isso o protótipo

foi colocado sobre a bancada, como na figura 4.21, onde as rodas não tinham

contato direto com a superfície, ou seja, as rodas não sofriam atrito. A alimentação

do circuito foi feita com a fonte de tensão DC e foi medida a tensão e a corrente de

Page 84: Implementação de uma Plataforma Robótica Terrestre não

67

em três casos. Partida, rodando normalmente e inversão do sentido quando é

detectado o obstáculo.

Através da equação:

Potência [Watt] = Tensão [Volt] x Corrente [Ampere] [4.2],

Foi obtida a tabela 4.2.

Tabela 4.2: Potências consumidas no protótipo.

Tensão [V] Corrente [A] Potência [W]

Partida 8 0,95 7,60

Rodagem 8 0,45 3,60

Detecção obst. 8 1,60 12,80

Como pode ser visto na tabela 4.2, a potência demandada quando há

detecção de obstáculos é maior até quando ocorre a partida dos motores. Isso

ocorre pelo fato do tranco gerado quando há tal detecção. Antes mesmo de parar os

motores, o microcontrolador envia um sinal para o módulo L298N para inverter o

sentido de giro dos motores, acarretando tal consumo demasiadamente grande de

potência comparado à partida dos motores.

Page 85: Implementação de uma Plataforma Robótica Terrestre não

68

5 Resultados

A execução do projeto foi realizada em três partes.

Controle de malha aberta apenas com sinal PWM acionando os motores

Controle em malha fechada com encoders realimentando o microcontrolador

para compensação do sinal PWM através d controlador PID.

Introdução do módulo sensor ultrassônico no sistema para detecção e desvio

de obstáculos.

Primeiramente foi gerada a primeira versão do firmware para construção do

sinal PWM para acionamento dos motores. Essa primeira versão apenas testava o

PWM nos motores, ou seja, após a escolha da frequência do PWM de 500 Hz, o

microcontrolador gerava o pulso de um valor inicial igual a zero até 1000 e

reiniciava-o, pois como o PWM do PIC 18F452 possui 10 bits a largura de pulso

máxima será:

𝐿𝑀𝐴𝑋 = 2𝑛 − 1 = 210 − 1 = 1023

Esta primeira versão girava as rodas em apenas um sentido.

Figura 5.1: Código para geração de sinal PWM.

Page 86: Implementação de uma Plataforma Robótica Terrestre não

69

Após o programa compilado, com o auxilio do software MPLAB, de um

programador PIC KIT 2, o microcontrolador PIC foi programado com o firmware

acima, da figura 5.1.

O veículo não funcionou como esperado porque apenas uma das rodas

funcionava. A programação foi revisada bem como as conexões do hardware para

analisar fios mal encaixados ou possíveis interferências causadas por capacitâncias

parasitas, porém nada foi constatado. Com isso foi feita simulação no software

Proteus.

Figura 5.2: Simulação de sinal PWM para acionamento de motores com módulo L298.

A simulação funcionava perfeitamente, mas quando o programa era

introduzido no hardware, os resultados não eram como os previstos pela simulação.

Alguns testes foram feitos com relação aos motores, apenas injetando tensão

de 6V obtida a partir de uma fonte de tensão DC em casa um deles para ver se

funcionavam perfeitamente. Os polos das ligações nos motores foram invertidos

para ter certeza do correto funcionamento em ambos os sentidos.

Page 87: Implementação de uma Plataforma Robótica Terrestre não

70

No teste apenas a roda esquerda gira corretamente quando 6 Volts são

colocados entre os termineis do motor acoplado ao eixo desta. A roda direita

também funciona corretamente em ambos os sentidos.

Com os motores funcionando corretamente, o próximo passo foi testar o

módulo L298N (ponte H dupla).

A priori, neste primeiro teste, o módulo estava funcionando corretamente.

Então o último teste cabível a ser feito era montar uma ponte H com transistores e

introduzir o sinal PWM na ponte H de forma a variar o sentido de giro o motor.

O sinal PWM foi simulado através de um gerador de sinais como é mostrado

na figura acima, com uma onda quadrada de aproximadamente 500 Hz e ciclo tarefa

de 100%.

Os resultados obtidos foram satisfatórios, pois os motores giraram conforme

planejado e com isso foi concluído que os motores funcionavam corretamente. Mas

quando o sistema foi novamente testado, com a primeira versão do firmware o

mesmo problema aparecia. Apenas uma roda girava.

Com isso o módulo L298N foi novamente testado, apenas introduzindo tensão

contínua nas portas que habilitam o módulo L298N, ou seja, as duas ponte H foram

habilitadas (enable A e B com 5V em suas portas – nível lógico alto) e as entradas

que indicam o sentido de giro do motor foram corretamente ligadas (IN1, IN2, IN3 e

IN4 com 5V,0V,5V,0V, respectivamente). O módulo foi ligado ao protótipo e o

resultado foi que apenas uma das rodas girava e com uma análise aprofundada com

auxilio de um multímetro medindo a continuidade entre componentes foi constatado

que o lado motor B do módulo estava queimado.

Com isso foi adquirido outro módulo L298N e posteriormente testado

conforme descrito acima. Este novo teste obteve resultados satisfatórios onde as

duas rodas do protótipo funcionaram corretamente em ambos os sentidos, como

planejado.

Novamente o protótipo foi testado conforme e desta vez o teste foi concluído

com sucesso, ou seja, o sinal PWM funcionava corretamente.

Page 88: Implementação de uma Plataforma Robótica Terrestre não

71

A figura 5.3 mostra a primeira versão do hardware do projeto.

Figura 5.3: Primeira versão do hardware do projeto.

Após a conclusão da primeira etapa, os encoders foram ligados ao sistema e

desta maneira feita a segunda versão do firmware.

Como mostrado anteriormente os encoders possuem discos com vários

orifícios que permitem a passagem de luz. Sabendo disso, o encoder possui um

diodo emissor de luz (led) e um foto sensor receptor que irá captar este feixe de luz.

À medida que a roda gira, o disco de encoder gira conjuntamente, pois está

acoplado ao eixo da roda, alternando entre orifícios e partes sólidas.

O led transmissor está sempre transmitindo um feixe de luz e à medida que o

disco de encoder roda, quando o feixe de luz passa pelo orifício do disco o foto

sensor consegue captar esse feixe, emitindo um sinal elétrico.

Page 89: Implementação de uma Plataforma Robótica Terrestre não

72

O encoder será ligado a uma porta de entrada do microcontrolador onde este

receberá a informação quando o foto sensor capta o feixe luz.

Através da programação basta gerar uma rotina de interrupção em um

determinado tempo para contar quantas vezes houve passagem de luz.

Tecnicamente falando, quando há uma passagem de luz (o receptor consegue

captar o feixe de luz) o encoder envia um pulso para o microcontrolador e assim

simplesmente foi feita a contagem de pulsos no intervalo de tempo estabelecido pela

interrupção.

Figura 5.4: Interrupção para determinação da velocidade do protótipo.

Page 90: Implementação de uma Plataforma Robótica Terrestre não

73

Figura 5.5: interrupção para contagem dos pulsos dos encoders.

Os códigos acima são interrupções geradas pelo compilador. A primeira é

uma interrupção por tempo e a segunda uma interrupção na porta B. Para as portas

‘B’ selecionadas, segundo o datasheet da Microchip PIC 18FXX2, as portas B4 a B7

estão reservadas para esse tipo de interrupção. Desta maneira os sinais gerados

pelos dois encoders estão ligados nas portas ‘B4’ e ‘B5’, respectivamente.

Durante um segundo, toda vez que houver uma mudança de borda no sinal

proveniente do encoder, a variável ‘AuxVelocidade’ será incrementada. Ao final de 1

segundo, teremos a quantidade de bordas em ‘AuxVelocidade1’ e ‘AuxVelocidade2’

referentes ao encoder1 e encoder2, respectivamente . Porém, como queremos

apenas as bordas de subida, esse valor foi dividido por dois e gravado nas variáveis

‘qtid_borda_subida1’ e ‘qtid_borda_subida2’.

Através da equação:

𝑉 = ∆𝑆

∆𝑡 (5.1)

Onde:

V é velocidade, ∆𝑆 deslocamento e ∆𝑡 o tempo

Page 91: Implementação de uma Plataforma Robótica Terrestre não

74

E sabendo que o perímetro do disco do encoder possui 20 centímetros e

possui 20 orifícios. Conseguimos descobrir a velocidade como mostra a figura

acima.

A partir das variáveis do sistema ‘qtid_borda_subida1’ e ‘qtid_borda_subida2’

foi possível estabelecer a diferença de velocidade em cada uma das rodas. Essa

diferença será o sinal de é o sinal de erro que deve ser compensado de forma a

igualar as quantidades de bordas e subida e por consequência a velocidade em

ambas as rodas.

A primeira tentativa foi fazer uma simples compensação do sinal PWM a

partir das velocidades obtidas nesta versão do programa.

A técnica limita-se em verificar se a velocidade de uma roda está entre dois

valores, no caso 19 cm/s e 21 cm/s. Caso a variável esteja fora destes valores a

variável ‘controle_pwm’ será incrementada ou decrementada de 10 unidades. O

mesmo será feito para a outra roda.

A variável ‘controle_pwm’ como o próprio nome sugere, irá controlar o PWM

em um valor especifico. Como mencionado anteriormente a variável que indica o

valor do pwm poderá ir apenas de 0 a 1023.

A diferença entre a velocidade da roda direita do protótipo (roda de referência)

e a roda esquerda (roda a ser corrigida) é o sinal a ser compensado.

Através do encoder temos um sistema de malha fechada onde o sinal de erro

realimenta o sistema e como se pode perceber, através da figura abaixo, a cada

ciclo de operação tal sinal de erro diminui, ou seja, ao final de infinitas iterações o

erro tende a zero o que implica em igualdade das variáveis ‘controle_pwm1’ e

‘controle_pwm2’. Desta maneira o veículo irá se locomover em linha reta.

Page 92: Implementação de uma Plataforma Robótica Terrestre não

75

Figura 5.6: Primeira tentativa para correção de velocidade.

O próximo passo foi simular este programa. Porém o software PROTEUS não

disponibiliza esse tipo de encoder para simulação, com isso não foi possível simular

esta versão do firmware.

Assim, a segunda versão do firmware foi passada para o microcontrolador e

testado. O resultado não ocorreu como o esperado, pois o controle de velocidade

não funcionou.

Após uma analise detalhada desta versão da programação não foram

encontrados erros e assim o hardware foi novamente testado. Desta vez foram feitos

testes com ambos os encoders com o auxilio de um osciloscópio analógico. A

resposta esperada seria uma oscilação entre pulsos positivos e zeros, mostrando

que o foto sensor está recebendo o sinal do led transmissor e enviando-o para o

microcontrolador. Com uma ponta de prova nas portas do PIC onde estão

conectados ambos os encoders foram analisados o sinal de resposta.

Foi constatado que um dos encoders não funcionava, pois a porta do

microcontrolador em que este encoder estava conectado mantinha-se em nível

lógico alto quando a roda estava girando. Desta maneira podemos concluir que o

foto sensor não estava recebendo o sinal transmitido pelo led.

Page 93: Implementação de uma Plataforma Robótica Terrestre não

76

Após a substituição do encoder defeituoso, foi feito um novo teste. O controle

de velocidade estava funcionando, mas não como esperado. O veículo andava em

forma de S, bastante desbalanceado.

Na prática, o erro não seria totalmente eliminado, pois a variável

‘controle_pwm’ é ajustada conforme uma diferença de valores através das variáveis

‘velocidade1’ e ‘velocidade2’ e esta variação é razoavelmente grande para sistemas

microcontrolados. Outro fator é o incremento e decremento da variável

‘controle_pwm’ de 10 unidades. O correto seria um incremento ou decremento

menor uma unidade, porém o sistema demoraria muito para estabilizar.

Após algumas pesquisas sobre controle de velocidade, um controle PID

(proporcional, integral e derivativo) foi escolhido para ser utilizado.

Com isso alguns métodos foram estudados e o mais acessível a ser

implementado era o método de Ziegler-Nichols. Este método é um algoritmo para se

determinar as constantes do controlador quando não há o modelo matemático do

sistema, como descrito anteriormente.

Utilizando algoritmo de Ziegler-Nichols, as constantes do PID foram obtidas

experimentalmente, e ajustadas a partir de várias tentativas.

Com isso foi gerada a terceira versão do firmware. As imagens das figuras 5.7

e 5.8 mostram os valores das constantes e a correção efetuada através do

controlador PID, respectivamente.

Figura 5.7: Constantes do controlador PID.

Page 94: Implementação de uma Plataforma Robótica Terrestre não

77

Figura 5.8: Equação do controlador PID para correção da velocidade.

Após a regulação das constantes de controlador PID, o firmware foi

programado no microcontrolador e testado o protótipo. Os resultados foram

satisfatórios e desta maneira a quarta e ultima versão do firmware contendo a

programação sensor de ultrassom foi inserido no sistema.

Como mostrado anteriormente, o módulo HC-SR04 possui quatro pinos. Dois

para sua alimentação (Vcc e GND), o pino trigger para emitir o sinal e o pino echo

para captar o sinal refletido no obstáculo.

Através desta lógica foi estipulada uma distância mínima de 20 centímetros

para detecção de objetos.

A cada iteração do firmware, o trigger envia o sinal durante 20µs. Caso o echo

capte algum onda proveniente da reflexão em algum obstáculo, este pino envia uma

onda quadrada ao microcontrolador proporcional à distância do que se encontra

esse obstáculo.

O tempo de duração desta onda é reservado no timer 1. Caso este tempo (em

micro segundos) dividido por 58 for menor que os 20 cm estipulado anteriormente, o

protótipo para, faz uma pequena curva e continua seu trajeto.

Page 95: Implementação de uma Plataforma Robótica Terrestre não

78

Figura 5.9: Código para determinação de obstáculo.

Page 96: Implementação de uma Plataforma Robótica Terrestre não

79

Figura 5.10: Código para desvio de obstáculo.

A figura abaixo mostra o hardware do protótipo finalizado contento o módulo

ponte H, placa de circuito embarcado contendo microcontrolador e sensor de

ultrassom e baterias de íon-lítio que fornecem alimentação para o sistema.

Para finalização do projeto foi roteada uma placa de circuito impresso com

todos os componentes a serem utilizados. O software utilizado possui ferramenta

para simulação da placa em 3D com todos os componentes, antecipando e tendo

como referência a placa final.

Page 97: Implementação de uma Plataforma Robótica Terrestre não

80

Figura 5.11: Placa de circuito impresso.

Figura 5.12: Projeto da placa de circuito impresso em 3D.

Page 98: Implementação de uma Plataforma Robótica Terrestre não

81

Figura 5.13: Projeto da placa de circuito impresso em 3D.

As figuras 5.11 a 5.13 foram geradas através do software ALTIUM DESIGN, com o auxilio

das especificações de desenvolvimento do software. (ALTIUM LIMITED, 2014).

Page 99: Implementação de uma Plataforma Robótica Terrestre não

82

Figura 5.14: Plataforma robótica final.

Page 100: Implementação de uma Plataforma Robótica Terrestre não

83

6 Conclusões

O trabalho apresentado possui a proposta de desenvolvimento de um sistema

de controle embarcado para uma plataforma robótica móvel terrestre não tripulada

possuindo um sistema de controle em malha fechada para controle da velocidade

bem como a detecção e desvio de obstáculos presentes à sua trajetória aleatória.

Fica evidente a importância de testes, simulações, medições e monitoramento

do funcionamento do protótipo a fim de validar a veracidade dos componentes

físicos do sistema e fazer as atualizações devidas do firmware implementado para o

sistema embarcado em questão.

Com o decorrer do desenvolvimento do trabalho nota-se a importância e a

dificuldade de fazer um controle de velocidade preciso. Este com certeza é o ponto

mais importante do trabalho. No caso deste trabalho a variável a ser controlada é a

diferença de velocidade entre as rodas traseiras, em vista que o protótipo possui um

sistema de tração diferencial. Os sistemas em malha fechada proporcionam um

controle mais preciso da variável a ser controlada e com isso os encoders utilizados

fizeram a realimentação do sistema onde o controle da variável controlada estava

intimamente ligado ao sinal obtido na saída e reenviado para a entrada do sistema

com o objetivo da compensação do sinal.

Através dos resultados obtidos nota-se a eficiência do controlador

proporcional, integral e derivativo para sistemas robóticos móveis, mas, pelo fato da

falta de dados dos parâmetros dos motores de corrente contínua, torna-se uma

tarefa, apesar de simples, bastante trabalhosa, pois as constantes do controlador

que satisfazem o sistema para a compensação da variável controlada foram

determinadas empiricamente, através de diversas tentativas.

Ainda sobre o controlador PID pode-se concluir em virtude dos testes

aplicados ao sistema, a ação proporcional possui grande impacto ao protótipo, ou

seja, seria possível a utilização de apenas essa ação para um protótipo com menos

precisão.

Page 101: Implementação de uma Plataforma Robótica Terrestre não

84

Apesar de fazer a estabilidade parcial do sistema, os incrementos da

constante proporcional que irá fazer a compensação do sinal de erro possui uma

margem de extensão relativamente grande de valores. Como este valor foi

encontrado empiricamente e não de forma exata isso ajudou para manter a

estabilidade do sistema.

A ação integrativa realmente corrige o erro causado pela ação proporcional

através da analise feita durante os testes, porém o incremento um pouco maior que

o necessário torna o sistema instável, saindo do ponto de equilíbrio. Já a ação

derivativa possui um comportamento extremamente sensível ao sistema. Pôde ser

comprovado com o aumento da constante derivativa, o tempo para que o sistema

encontre o ponto de equilíbrio indubitavelmente diminui, porém devido a essa

sensibilidade extrema ocasionada por esta ação, um mínimo incremento pode

ocasionar na instabilidade do sistema.

Os discos de encoder utilizados no protótipo possuem resolução

relativamente baixa, pois a cada volta completa do disco o encoder consegue enviar

apenas 20 pulsos ao microcontrolador. Como os dois motores utilizados são iguais,

a diferença entre a quantidade de pulsos durante uma volta do disco gerada pela

roda de referência é basicamente igual a quantidade de pulsos gerada pela roda a

corrigida. Isso implica em um maior tempo para que o sistema encontre seu ponto

de estabilidade, ou seja, as duas rodas possuam a mesma velocidade angular.

Com isso o sistema opera satisfatoriamente de modo a atender os objetivos

quanto ao controle de velocidade da plataforma robótica.

A detecção de obstáculos funciona como programado para a distância de 20

centímetros. Através de testes de rodagem ficou evidente que a inercia derivada dos

motores implicava na frenagem não imediata do protótipo ocasionando a colisão do

mesmo com o obstáculo. Após a mudança da lógica para a frenagem, o sensor

funcionou adequadamente.

A sugestão de melhorias para projetos futuros consiste na obtenção de uma

plataforma robótica móvel mais robusta ou até mesmo profissional, diferentemente

da plataforma utilizada no processo proveniente de um kit de “hobby” para iniciantes,

Page 102: Implementação de uma Plataforma Robótica Terrestre não

85

com motores de corrente contínua possuindo parâmetros especificados e encoders

ópticos com maior resolução.

Através dos parâmetros dos motores de corrente contínua, a função de

transferência dos mesmos poder ser encontradas e com isso através do método de

Ziegler-Nichols a obtenção dos parâmetros do controlador PID torna-se imediata.

Um microprocessador com maior capacidade de processamento tornará o

firmware mais eficiente, realizando as operações mais rapidamente e

consequentemente encontrando a estabilidade do sistema com maior facilidade.

Fazer a implementação de comunicações para o controle de todas as ações a

serem executadas no protótipo com o intuito de aprimorar a eficiência do mesmo.

Page 103: Implementação de uma Plataforma Robótica Terrestre não

86

7 Referências Bibliográficas

AFUSO, S. H., Controlador Digital Aplicado a Robótica Móvel Embarcada, 2012.

ALTIUM LIMITED. Unfied Eletronic Product Development. 2014. Disponível em:

<www.altium.com>. Acesso em Out/2014.

ASTRÖM, K J., HÄGGLUND, T. PID Controllers: Theory, Design and Tuning. 2. ed.,

Instrument of Society of America, 1995).

BARR, M. Pulse Width Modulation, Embedded Systems Programming, 2001.

Disponível em: < http://www.barrgroup.com/Embedded-Systems/How-To/PWM-

Pulse-Width-Modulation> acessado e 04/10/2014.

BENNETT, J.; BHASIN, A.; et. al., PID TUNING CLASSICAL, 2006. Disponível em:

<https://controls.engin.umich.edu/wiki/index.php/PIDTuningClassical#Ziegler-

Nichols_Method > . Acesso em Set/2014.

BERTONE, O. H., Desenvolvimento de uma plataforma universal para aplicação em

robôs móveis., 2012.

BOSE, B. K., Modern Power Eletronics – Evolution, Technology and Applications,

IEEE Industrial Eletronics Society, New York, USA, 1992.

BOYLESTAD, R. L.; NASHELSKY, L. Dispositivos Eletrônicos e Teoria de Circuito.

Pearson Prentice Hall, 2004.

COUCH II, L.W., Digital e Analog Communication Systems, 5. ed. Pearson Prentice

Hall, 1997.

DORF, R. C.; BISHOP, R. H., Sistemas de Controle Modernos, 8. ed. LTC Editora,

2001.

EMBEDDED ARCHITECTS. Disponível em: <http://www.embarc.com.br/p1600.

aspx> . Acesso em Out/2014.

FITZGERALD, A.E.; KINGLEY, C.; UMANS, S. D., Máquinas Elétricas. 6. ed.

Bookman, 2006.

HEATH, S. Embedded Systems Design, 2. ed. Newnes, 2003.

INSTITUTO NEWTON C. BRAGA. Como funciona o moto de corrente contínua

(ART476). Disponível em <http://www.newtoncbraga.com.br/index.php/como-

funciona/3414-art476a>. Acesso em Out/2014.

Page 104: Implementação de uma Plataforma Robótica Terrestre não

87

MANUAL DO USO DO COMPILADOR CCS PCW PIC C. Disponível em

<http://www.mecatronica.org.br/disciplinas/programacao/004/manual_ccs.pdf>.

Acesso em Mar/2014.

MELO, L. F., Proposta de simulador virtual para sistema de navegação de robôs

móveis utilizando conceitos de prototipagem rápida., 2007.

MICROCHIP, PIC18FXX2 Data Sheet. Disponível em <http://www.alldatasheet.

com/view.jsp?Searchword=Pic18f452%20datasheet>. Acesso em Mar/2014.

OGATA, K. Engenharia de Controle Moderno, 3. ed. Pearson Prentice Hall, 1998.

PANTANÉ, E. J. Implementação de controle de velocidade em malha fechada para

motores de corrente contínua utilizando sistema de aquisição de dados, 2008.

PEREIRA, F., PIC – Programação em C, 3 ed, Editora ÉRICA, 2004.

PROTEUS. Disponível em < http://www.labcenter.com/index.cfm>. Acesso em 2014.

REZEK, J.J.R. et. Al., Análise comparativa de desempenho de reguladores digitais

em acionamento controlado para motor série corrente continua. Revista Intech,

2003.

SABER ELETRÔNICA. Sensores ultra-sônicos. Disponível em <http:/www.

sabereletronica.com.br/artigos/1753-sensores-ultra-snicos>. Acesso em Out/2014.

SECCHI, H. A., Una Introcción a los Robots Móviles, 2008.

SIEMENS, MOTORES DE CORRENTE CONTÍNUA/Guia rápido para uma

especificação precisa. 2006. Disponível em <http://www.siemens.com.br/

medias/FILES/2910_20060505141908.pdf>. Acesso em Set/2014.

SIMONE, G. A. MÁQUINAS DE CORRENTE CONTÍNUA. 1. ed. Editora Érica, 2000.

SOARES, W. V. Projeto de compensadores PID e avanço de fase em motor de

corrente contínua com imã permanente. 2004.

ST MICROELETRONICS, L298 – Dual Full-Bridge Driver. Disponível em

<http://www.alldatasheet.com/view.jsp?Searchword=L298n%20datasheet>>. Acesso

em Mar/2014.

ULTRASONIC RANGING MODULE HC-SR-4. Disponível em <http://users.ece.

utexas .edu/~valvano/Datasheets/HCSR04b.pdf>. Acesso em Set/2014.

Page 105: Implementação de uma Plataforma Robótica Terrestre não

88

Apêndice A - Firmware

A.1 Firmware finalizado.

O código a seguir representa o firmware final programado no PIC18F452 para

execução do protótipo robótico com todos os comentários necessários para

entendimento do processo.

#include <main.h>

// Determina a velocidade inicial (valor DO pwm de 0 - 1023). #define VEL_INICIAL 350

// Determina a distancia para colizão (em cm). #define DIST_MIN 20

// Variáveis utilizadas para contar a duração dos pulsos dos encoders. // A palavra VOLATILE indica que essas variáveis são acessadas fora do programa // principal. volatile SIGNED INT16 cntA, cntB;

void main() { // Constantes DO controlador PID. const FLOAT Kp = 18.3; // Constante de proporção. const FLOAT Ki = 0.3; // Constate de integral. const FLOAT Kd = 0.002; // Constante de diferencial.

// Variáveis contendo a velocidade de ambas as rodas. SIGNED INT16 VelA; // Contém a velocidade da roda A. SIGNED INT16 VelB; // Contém a velocidade da roda B.

// Váriaveis para o sensor de ultrassom. UNSIGNED INT16 Dur; // Duração do pulso do sensor de distância.

Page 106: Implementação de uma Plataforma Robótica Terrestre não

89

UNSIGNED Int16 TempoI; // Tempo Inicial do pulso. UNSIGNED Int16 TempoF; // Tempo Final do pulso. UNSIGNED INT16 Dist; // Distância detectada pelo sensor.

// Variáveis para o controlador PID FLOAT Err; // Erro utilizado no PID. FLOAT I; // Soma dos erros ao longo do tempo. FLOAT Err_Tmp; // Erro anterior. FLOAT D; // Diferença entre o erro atual e o anterior. FLOAT Correcao; // Valor a ser ajustado na velocidade de B.

// Coloca os pinos de controle de sentido em 0V para o carrinho não andar // durante a configuração. output_low (FRENTE_B); output_low (FRENTE_A); output_low (TRAS_B); output_low (TRAS_A);

// Configura o CCP1 e 2 para modo PWM. setup_ccp1 (CCP_PWM); setup_ccp2 (CCP_PWM);

// Ajusta a frequência DO PWM. // Frequência do pwm = Frequência de osc (cristal) / (4 * t2div * (t2max + 1) // Nesse caso: Fpwm = 8e6 / (4 * 16 * (255 + 1) = 488,28 Hz setup_timer_2 (T2_DIV_BY_16, 255, 1);

// Determina o sinal PWM i igual a zero para ambas as rodas. set_pwm2_duty (0); // PWM2 - > Roda A. set_pwm1_duty (0); // PWM1 - > Roda B.

// Habilita as interrupções externas (INT0 e INT1) para o encoder. enable_interrupts (INT_EXT); enable_interrupts (INT_EXT1);

// Habilita o Timer 1 com um periodo de 1us. // Este timer será utilizado pelo sensor de distância. // Periodo = 4 * T1Div / Frequência de osc. setup_timer_1 (T1_INTERNAL|T1_DIV_BY_2);

// Desliga o led. Led com lógica invertida (0V - > Ligado, 5V - > Desligado) .

Page 107: Implementação de uma Plataforma Robótica Terrestre não

90

output_high (LED);

// Coloca o pino TRIGGER DO sensor de distância en 0V. output_low (TRIGGER);

// Define a velocidade inicial. VelA = VEL_INICIAL; VelB = VEL_INICIAL;

// Liga as rodas para andar para frente. output_high (FRENTE_B); output_high (FRENTE_A);

// Define o erro anterior igual a zero para ser utilizado no PID. Err_Tmp = 0; // Loop infinito WHILE (TRUE) { // Ajusta o ciclo tarefa do sinal PWM da roda A e B. set_pwm2_duty (VelA); // PWM2 - > Roda A. set_pwm1_duty (VelB); // PWM1 - > Roda B.

// Zera os contadores dos encoders. cntA = cntB = 0;

// 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 400ms.

// Desabilita a contagem de pulsos dos encoders. disable_interrupts (GLOBAL);

Page 108: Implementação de uma Plataforma Robótica Terrestre não

91

// Controlador P.I.D. // Ajusta a velocidade da roda B para ficar iguar a roda A. Err = cntA - cntB; // Calcula o Erro. 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. set_pwm2_duty(VelA); // Mantem a velocidade da roda A. set_pwm1_duty (VelB); // Ajusta a velocidade da roda B.

// Detecta obstaculo. // Gera o sinal para iniciar a medida da distância. output_high (TRIGGER); // Coloca o trigger em 5V. delay_us (20); // Espera 20us. output_low (TRIGGER); // Coloca o trigger em 0V.

// 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.

// Calacula o tempo entra o sinal transmitido o sinal recebido. IF (TempoF >= TempoI) { Dur = TempoF - TempoI; // Calcula a duração. ELSE Dur = TempoI - TempoF; // Calcula a duração. }

// Calcula a distância (em cm) . De acordo com o datasheet DO sensor: // Dist [cm] = Dur [us] / 58 Dist = Dur / 58;

// Da meia volta se o objeto estiver muito perto.

Page 109: Implementação de uma Plataforma Robótica Terrestre não

92

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); // Espera 150 mili segundos. 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.

Page 110: Implementação de uma Plataforma Robótica Terrestre não

93

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; }

// Faz o led piscar. output_toggle (LED); }

}

// Interrupção INT0, conta pulsos DO encoder A. // Cada vez que der um pulso 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 pino RB1, incrementa o contador de pulsos B. #INT_EXT1 void EXT1_isr(VOID) { cntB++; }

Page 111: Implementação de uma Plataforma Robótica Terrestre não

94

A.2 Definições do microcontrolador.

O firmware acima possui uma extensão .h, onde as variáveis utilizadas como portas

de entrada ou saída do microcontrolador, o microcontrolador PIC utilizado e o clock

proveniente de um cristal externo são especificadas, como mostrado a seguir.

// Inclui a biblioteca do PIC18F452. #include <18F452.h> // Define o clock para o delay #use delay(clock=8MHz) // Define o oscilador a cristal #fuses HS // Pinos #define LED PIN_B4 #define TRIGGER PIN_B2 #define ECHO PIN_B3 #define ENC_A PIN_B0 #define ENC_B PIN_B1 #define EN_A PIN_C1 #define EN_B PIN_C2 #define FRENTE_A PIN_C4 #define TRAS_A PIN_C5 #define FRENTE_B PIN_D0 #define TRAS_B PIN_D1

Page 112: Implementação de uma Plataforma Robótica Terrestre não

95

Anexo A – Microcontrolador PIC 18F452

Page 113: Implementação de uma Plataforma Robótica Terrestre não

96

Page 114: Implementação de uma Plataforma Robótica Terrestre não

97

Page 115: Implementação de uma Plataforma Robótica Terrestre não

98

Page 116: Implementação de uma Plataforma Robótica Terrestre não

99

Page 117: Implementação de uma Plataforma Robótica Terrestre não

100

Page 118: Implementação de uma Plataforma Robótica Terrestre não

101

Page 119: Implementação de uma Plataforma Robótica Terrestre não

102

Page 120: Implementação de uma Plataforma Robótica Terrestre não

103

Page 121: Implementação de uma Plataforma Robótica Terrestre não

104

Anexo B – L298

Page 122: Implementação de uma Plataforma Robótica Terrestre não

105

Page 123: Implementação de uma Plataforma Robótica Terrestre não

106

Anexo C – Módulo HC-SR04