desenvolvimento de um módulo robótico controlado através ... · pdf...

63
STELLIO SPERANDIO NETO Desenvolvimento de um módulo robótico controlado através de uma comunicação sem fio. Londrina 17 de novembro de 2014

Upload: dinhthuy

Post on 30-Mar-2018

223 views

Category:

Documents


3 download

TRANSCRIPT

STELLIO SPERANDIO NETO

Desenvolvimento de um módulo robóticocontrolado através de uma comunicação sem

fio.

Londrina17 de novembro de 2014

STELLIO SPERANDIO NETO

Desenvolvimento de um módulo robótico controlado

através de uma comunicação sem fio.

Trabalho de Conclusão de Curso apresentado aoDepartamento de Engenharia Elétrica da Uni-versidade Estadual de Londrina, como requi-sito parcial à conclusão do Curso de EngenhariaElétrica.

Orientador: Dr. Aziz Elias Demian JuniorCoorientador: Dr. Leonimer Flávio de Melo

Londrina17 de novembro de 2014

STELLIO SPERANDIO NETO

Desenvolvimento de um módulo robótico controladoatravés de uma comunicação sem fio.

Trabalho de Conclusão de Curso apresentado aoDepartamento de Engenharia Elétrica da Uni-versidade Estadual de Londrina, como requi-sito parcial à conclusão do Curso de EngenhariaElétrica.

Dr. Aziz Elias Demian JuniorOrientador

Dr. Leonimer Flávio de MeloCo-Orientador

Dr. Ernesto Fernando Ferreyra RamírezConvidado 1

Dedico este trabalho aos meus pais, Vera Lucia e José Marcos por acreditarem no meu

potencial, investirem em minha educação e terem me criado com tanto amor e carinho.

À minha querida namorada Bárbara Sfeir, por me proporcionar apoio acadêmico e muitos

momentos de felicidade.

Agradecimentos

Sou grato especialmente aos meus pais Vera e José pelo grande apoio e compreensãoao longo desses anos. Agradeço ao meu irmão e amigo Diego Sperandio pela ajuda fornecida.À minha namorada Bárbara por estar sempre me auxiliando e incentivando com muito amor epaciência. À minha irmã Lívia pela ajuda em momentos de necessidade.Também sou grato aos meus amigos e companheiros de sala Guedes, Arai, Chapecó, Led, Ri-sada, Karina, Jeff, pelas madrugadas de estudo e todos os momentos de diversão. Às minhasamigas Su, Havena e Carol que estão sempre próximas, agradeço também ao meu amigo Playpelos bons momentos. Ao professor Aziz por me ajudar e orientar durante o desenvolvimentodo trabalho.

"Os que se encantam com a prática sem a ciência são como os timoneiros que entram no

navio sem timão nem bússola, nunca tendo certeza do seu destino."(Leonardo Da Vinci)

ResumoEsse trabalho, visa o desenvolvimento de uma plataforma robótica móvel que será controladopor um telefone celular através de uma comunicação wireless. A movimentação da plataformapoderá ser comandada pelo operador do celular através de uma comunicação UDP ou realizadapor parâmetros previamente inseridos no programa de operação autônomo. A idéia é indicar queoutras aplicações possam ser implementadas com esse mesmo propósito, utilizando diferentesmicrocontroladores, para diferentes fins e controles mais precisos ou complexos. Independentedas aplicações a robótica se mostra necessária em diferentes setores.

Palavras-chaves: Arduino, Microcontrolador, Microprocessador, Xbee, Controle.

AbstractThe objective of this work is the aplication of a embedded microcontroller in a mobile roboticplatform, which will be controlled by a cellphone through wireless communication. The movi-mentation of the platform will be commanded by the phone operator or by parameters previ-ously inserted in the autonomous operation program. The idea is to show that other applicationsmay be used with the same purpose, with different microcontrollers, different objectives andmore complex and precise controls. Regardless the application, robotics presents itself essentialin many different sectors.

Key-words: Arduino, Microcontroller, Microprocessor, Xbee, Control.

Lista de ilustrações

Figura 1 – Representação esquemática de uma máquina CC . . . . . . . . . . . . . . . 17Figura 2 – Princípio de funcionamento do motor CC . . . . . . . . . . . . . . . . . . . 18Figura 3 – Elementos construtivos de um microcontrolador de uso geral . . . . . . . . 19Figura 4 – Processo a ser controlado. . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Figura 5 – Sistema de controle em malha aberta. . . . . . . . . . . . . . . . . . . . . . 20Figura 6 – Circuito de Ponte-H. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Figura 7 – Controle da potência em carga por reostato. . . . . . . . . . . . . . . . . . 23Figura 8 – Sinal de PWM com diferentes duty cicle . . . . . . . . . . . . . . . . . . . 23Figura 9 – Princípio de funcionamento de um sensor ultrassônico. . . . . . . . . . . . 24Figura 10 – Plataforma mecânica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Figura 11 – Movimentação no modo autônomo de operação. . . . . . . . . . . . . . . . 29Figura 12 – Movimentação no modo manual de operação. . . . . . . . . . . . . . . . . 30Figura 13 – Fluxograma simplificado do programa completo. . . . . . . . . . . . . . . . 31Figura 14 – Fluxograma do modo autônomo de operação. . . . . . . . . . . . . . . . . 32Figura 15 – Fluxograma do modo manual de operação. . . . . . . . . . . . . . . . . . . 33Figura 16 – Teste do sistema operando . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Figura 17 – Arduino IDE 1.0.5-r2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Figura 18 – Roteador WAP-4035 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Figura 19 – Wireless LAN Access Point do roteador WAP-4035 . . . . . . . . . . . . . . 36Figura 20 – XBee S6 Wi-FiTMModule . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Figura 21 – X-CTU 6.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Figura 22 – Interface do App TCP UDP Server Free . . . . . . . . . . . . . . . . . . . 39Figura 23 – Arduino UNO R3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Figura 24 – Mapeamento dos pinos do Atmel Atmega328. . . . . . . . . . . . . . . . . 41Figura 25 – Módulo com CI L298n . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Figura 26 – Sensor HC-SR04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Figura 27 – Exemplo do funcionamento dos pinos Trig e Echo. . . . . . . . . . . . . . . 43Figura 28 – Duty Cycle de 90%, CH1 - ENB, CH2 - ENA . . . . . . . . . . . . . . . . 45Figura 29 – Duty Cycle ajustado com +7% no ENA (CH2) . . . . . . . . . . . . . . . . 46Figura 30 – Leitura da porta serial com informações do sensor frontal. . . . . . . . . . . 47Figura 31 – Console do X-CTU após o recebimento do comando ’f’ e ’p’ enviado pelo

celular. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Lista de tabelas

Tabela 1 – Características do Arduino UNO R3. . . . . . . . . . . . . . . . . . . . . . 40Tabela 2 – Descrição dos pinos do módulo com CI L298n. . . . . . . . . . . . . . . . 42Tabela 3 – Tensão média e duty cycle. . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Lista de abreviaturas e siglas

ASCII American Standard Code for Information Interchange

CI Circuito Integrado

CC Corrente Contínua

CPU Central Processing Unit

DFSG Debian Free Software Guidelines

GPS Global Positioning System

IDE Integrated Development Environment

IEEE Institute of Electrical and Electronics Engineers

LED Light Emitting Diode

OSI Open Source Initiative

PWM Pulse Width Modulation

TCP Transmission Control Protocol

UDP User Datagram Protocol

USB Universal Serial Bus

WLAN Wireless Local Area Network

Sumário

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.1 Contextualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.2 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.3 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.3.1 Objetivos Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.3.2 Objetivos Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.4 Apresentação do trabalho . . . . . . . . . . . . . . . . . . . . . . . . 14

2 FUNDAMENTOS TEÓRICOS . . . . . . . . . . . . . . . . . . . . . . 162.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2 Sistemas Embarcados . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3 Comunicações sem fio . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3.1 IEEE 802.11ac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4 Motores CC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5 Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.6 Controle de sistemas . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.6.1 Controle em malha aberta . . . . . . . . . . . . . . . . . . . . . . . . . 202.7 Open Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.8 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.9 Ponte H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.10 Modulação por largura de pulso (PWM) . . . . . . . . . . . . . . . . 222.11 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.11.1 Sensor Ultrassônico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3 DESCRIÇÃO DO TRABALHO . . . . . . . . . . . . . . . . . . . . . . 263.1 Descrição do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2.1 Materiais Utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2.2 Descrição do Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2.2.1 Modo autônomo de operação . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2.2.2 Modo manual de operação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.3 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.1 Softwares Utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.2 Descrição do Software . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.3.2.1 Modo autônomo de operação . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.3.2.2 Modo manual de operação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.1 Programação do Arduino . . . . . . . . . . . . . . . . . . . . . . . . . 344.1.1 Linguagem de Programação do Arduino . . . . . . . . . . . . . . . . . 344.1.2 Arduino IDE (Integrated Development Environment) . . . . . . . . . . 354.2 Configuração do roteador . . . . . . . . . . . . . . . . . . . . . . . . 364.3 Configuração do XBee S6 . . . . . . . . . . . . . . . . . . . . . . . . 374.3.1 X-CTU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.3.2 UDP TCP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.4 Arduino UNO R3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.4.1 ATmega 328 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.5 Módulo CI L298n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.6 Módulo sensor HC-SR04 . . . . . . . . . . . . . . . . . . . . . . . . . 42

5 DISCUSSÃO DOS RESULTADOS . . . . . . . . . . . . . . . . . . . 445.1 Resultado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445.1.1 Análise do movimento dos motores . . . . . . . . . . . . . . . . . . . . 445.1.2 Fornecimento de energia . . . . . . . . . . . . . . . . . . . . . . . . . . 465.1.3 Leitura do HC-SR04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465.1.4 Comunicação wireless . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

6 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

APÊNDICE A – PROGRAMA DESENVOLVIDO . . . . . . . . . . . 52

13

1 Introdução

1.1 Contextualização

A partir da segunda metade do século XX, iniciou-se uma nova fase de processos tec-nológicos, em que houve uma maior integração da ciência à tecnologia. Nesse período, diversasáreas se destacaram como a telecomunicação, bioquímica, biotecnologia e a eletrônica. Até en-tão o componente mais próximo da eletrônica era a válvula termiônica, que trabalhavam comalta potência e desempenhavam diferentes funções com seus diversos modelos.

A atenção do mundo ciêntifico se voltou pra eletrônica quando foi desenvolvido um dis-positivo que quando comparado fisicamente com a válvula, era muito menor e tinha o mesmocomportamento, nesse momento surgiu o primeiro transistor. Com a exploração dos semicon-dutores a substituição das válvulas foi imediata devido ao seu custo e como consequência, umaminiaturização dos circuitos existentes, sendo assim, ficou cada vez mais viável a presença decircuitos eletrônicos em diferentes setores, acelerando a produção e desenvolvimento da área.

Com o espaço ocupado pelos componentes ficando cada vez menor, foi possível a cri-ação do primeiro circuito integrado, que futuramente daria a origem ao microcontrolador pro-gramável. Apartir desse momento, o desenvolvimento de microprocessadores, que compoem osmicrocontroladores, mais complexos e eficientes foi impulsionado pela utilidade dos mesmosna otimização de processos (HOEPERS, 2012).

Atualmente um microcontrolador que vem ganhado notoriedade no meio é o Arduino.A ideia do projeto, surgiu baseado no conceito open source, em 2005 na Itália quando a primeiraplaca foi criada. O intuito foi de desenvolver uma plataforma acessível financeiramente, comsimples programação e de boa qualidade para profissionais, entusiastas e leigos (ARDUINO,2014). Comumente utilizada para quem pretende aplicar idéas novas com a criação de algumdispositivo iterativo ou sistemas autonômos.

1.2 Motivação

A visão que o trabalho pretende fornecer é mostrar a amplitude da robótica nas aplica-ções práticas através da programação e utilização de microcontroladores para exercer funçõespré-determinadas, que podem ser adaptadas e modeladas para diferentes meios.

Existem diversas maneiras de realizar um controle de módulo móvel, neste caso o mi-crocontrolador utilizado foi o Arduino UNO R3 devido a sua popularidade no desenvolvimentode ideias. O Arduino vem sendo utilizado por grande parte de desenvolvedores pelo fato depossuir um baixo investimento financeiro e fornecer grande versatilidade em sua placa (AR-DUINO, 2014). O programa elaborado para este trabalho foi criado para executar funções emconjunto com dispositivos externos como sensores, motores, módulo de ponte H dupla e mó-

Capítulo 1. Introdução 14

dulo de comunicação. Esses periféricos representam parte do que pode ser implementado emum sistema mais complexo ou simplesmente para desempenhar diferentes funções.

A linguagem de programação está cada vez mais presente, principalmente desde o lan-çamento do primeiro computador pessoal. Um dos principais objetivos das linguagens de pro-gramação é permitir que programadores tenham uma maior produtividade, permitindo expressarsuas ideias mais facilmente do que quando comparado com o código de máquina. Assim, lin-guagens de programação podem ser mais facilmente entendida por programadores humanos.

O trabalho associado com a eletrônica, programação e robótica, cria um ambiente atualda engenharia mundial, em que adaptações são necessárias e o controle automatizado se mostracada vez mais importante, pela precisão das instruções ou produtividade otimizada.

1.3 Objetivo

1.3.1 Objetivos Gerais

O objetivo deste trabalho consiste na criação de um protótipo móvel controlado por umacomunicação sem fio (wireless) afim de realizar movimentos ordenados e controlados por umcomputador ou um telefone móvel. Esse controle será obtido através da programação adequadado microcontrolador, além de um segundo modo de operação autônomo, em que o módulo seorienta a partir da resposta do sensor de distância e aleatoriamente realiza diferentes rotinas dedesvios caso se aproxime de obstáculos.

1.3.2 Objetivos Específicos

∙ Elaboração de lógica programável

∙ Solução de problemas lógicos

∙ Trabalho de programação em linguagem C

∙ Implementar os periféricos para um microcontrolador embarcado open source

∙ Projetar uma comunicação Wi-Fi entre operador e o módulo, fazendo o sistema receber eenviar informações.

∙ Utilização do aplicativo UDP TCP Server

∙ Aplicação direta de robótica

1.4 Apresentação do trabalho

A idéia do trabalho é criar um módulo móvel que através de uma comunicação sem fio,responde ao comando para se movimentar. Serão apresentados detalhes, referentes à interface

Capítulo 1. Introdução 15

montada "Celular → XBee → Arduino → Ponte H → Motores", além de informações da lógicaprogramada para a obtenção dos resultados.

O projeto pode ser separado por etapas de funcionamento, e o conjunto delas em umúnico sistema. A transmissão começa com o XBee S6 Wi-fiTMque é um módulo embarcado,que possibilita a comunicação wireless com o Arduino. Através do reconhecimento do sím-bolo enviado para o microcontrolador, o sistema fornece uma saída para responder ao estímulo.Quando o Arduino fornece a resposta digital, a ponte H irá proporcionar a potência suficientepara que o motor responda aos comandos enviados. A partir desse momento, o sistema reco-nhece que modo está trabalhando e se posiciona adequadamente pelos sensores ultrassônicos,evitando possíveis obstáculos. A programação foi otimizada para poupar processamento e exe-cutar os movimentos de maneira rápida e precisa.

O capítulo 2 apresenta uma revisão da literatura sobre a teoria empregada no trabalho euma introdução aos componentes utilizados no desenvolvimento da plataforma. A descrição ea metodologia do trabalho é descrita no capítulo 3 e 4, junto com informações mais detalhadasdo software hardware empregado no sistema. O fechamento do trabalho se situa no capítulo 5com a discussão dos resultados através de gráficos obtidos e valores medidos.

16

2 Fundamentos Teóricos

2.1 Introdução

Neste capítulo, serão apresentadas informações teóricas pertinentes ao entendimentodo projeto. Uma breve explicação específica sobre os dispositivos utilizados, bem como o seufuncionamento acompanhado da revisão de literatura necessária.

2.2 Sistemas Embarcados

O uso de circuitos eletrônicos embarcados, está cada vez mais presente no dia a diada sociedade contemporânea. Dentre as mais variadas aplicações, se destaca a utilização emequipamentos da linha branca, na linha marrom (eletroeletrônicos focados no entretenimento),sistemas automotivos, sistemas de aplicação médica e dispositivos móveis. (TECNOLOGIA,2014)

Segundo (CUNHA, 2007) "Colocar capacidade computacional dentro de um circuitointegrado, equipamento ou sistema. Esta é uma definição para o que é um sistema embarcado.Note que um sistema como este deve ser mais do que um simples computador. É um sistemacompleto e independente, mas preparado para realizar apenas uma determinada tarefa."

Sistemas embarcados são sistemas digitais desenvolvidos específicamente para certasaplicações. Dispositivos como GPS, módulos eletrônicos de injeção de combustível, controla-dores de processo e dispositivos móveis são exemplos de sistemas embarcados. A integraçãoentre hardware e software, com o intuito de satisfazer os requisitos para um bom desempenho,é uma característica nestes sistemas. Além de utilizar soluções de hardware com microproces-sadores e microcontroladores, o software de controle com capacidade multitarefa é requisitobastante comum em tais sistemas.

2.3 Comunicações sem fio

As comunicações sem fio (wireless) consistem na transferência de informações e dadossem a utilização de conexões físicas entre o transmissor e o locar de recepção. As distânciasenvolvidas podem ser curtas ou longas (MEDEIROS, 2005). A transferência de dados ocorrepor meio de equipamentos de radio frequência ou comunicação por infravermelho, existindodiversas classificações com base na abrangência do sinal disponível.

Capítulo 2. Fundamentos Teóricos 17

2.3.1 IEEE 802.11ac

O Padrão IEEE 802.11ac é uma tecnologia de redes wireless que pertencem à família802.11, comercialmente conhecida como Wi-FiTM, e desenvolvida pela IEEE standards associ-

ation, que fornece redes locais sem fios (WLANs) de alto desempenho na frequência de 5GHz.Esta rede específica, trabalha com multi-estações de transmissão sem-fio de ao menos 1 Gbit/se de um link único de transferência de 500 Mbit/s. Pelo fato de operar em faixas de frequênciasque não precisam de licença para operação, a utilização da rede se torna atrativa.

2.4 Motores CC

Os motores de corrente contínua são caracterizados pela sua versatilidade, que devidoàs diferentes combinações de enrolamentos de campo. Pela facilidades de controle, sistemasque utilizam motores CC são usados frequentemente em aplicações que exigem diferentes ve-locidades de rotação ou um controle preciso da saída (FITZGERALD, 2006).

As principais características de um motor CC estão representadas esquematicamente nafigura 1. O estator possui pólos salientes e é excitado pela bobina de campo. A distribuição dofluxo gerado pelo enrolamento de campo no entreferro é simétrica em relação à linha centraldos pólos de campo (FITZGERALD, 2006). As escovas da figura 1 estão na posição em que acomutação ocorra quando os lados da bobina estejam na zona neutra, no meio do caminho entreos pólos de campo.

Figura 1 – Representação esquemática de uma máquina CC

Fonte: Fitzgerald (2006)

A figura 2 exemplifica o funcionamento de um motor CC em quatro etapas, onde o esta-tor é constituídos por ímãs permanentes e o rotor uma bobina de fio de cobre. Com a aplicaçãode uma tensão elétrica nos terminais, afim de fornecer energia elétrica ao enrolamento da ar-madura, uma corrente elétrica será gerada e percorre o enrolamento. Como a corrente elétricaproduz campo magnético, a bobina se comporta como um ímã de acordo com a indicação depólos da figura 2 (HONDA, 2006).

Capítulo 2. Fundamentos Teóricos 18

Figura 2 – Princípio de funcionamento do motor CC

Fonte: HONDA (2006)

1. A bobina se apresenta horizontalmente. Como os pólos opostos se atraem, a bobina ex-perimenta um torque que afim de girar a bobina no sentido anti horário.

2. A bobina sofre aceleração angular e continua seu giro para a esquerda.

3. O torque exercido continua até que os pólos se alcancem, da bobida e os opostos aos ímãsfixos. Neste ponto, não há torque, pois o rotor está em equilíbrio estável. Nesse instante éonde ocorre a inversão do sentido da corrente na bobina.

4. Nesse instante os pólos iguais estão próximos e ocorre a repulsão, acelerando o giro antihorário.

Pela inércia presente no rotor e a bobina já estar se movimentando no sentido anti horá-rio, ela continua com o movimento de giro e o novo torque devido às forças repulsivas contri-buem para a manutenção do movimento de rotação (HONDA, 2006).

Para que um robô autônomo possa se mover, ele necessita de motores, e a escolha ló-gica é por motores CC, já que estas aplicações móveis são alimentadas por baterias. Para estetipo de uso, destacam-se dois tipos de motores, os motores de corrente contínua sem escovas,conhecidos como brushless, e os motores de corrente continua com escovas, conhecidos comobrushed (FITZGERALD, 2006).

2.5 Microcontrolador

Um microcontrolador pode ser considerado um sistema computacional íntegro, poisem sua estrutura estão presentes ao menos uma Unidade Central de Processamento, memóriapara armazenar as instruções e trabalhar com os dados, sistema de clock para as atividades daCPU, portas de entrada e saída (Input/Output) para que haja contato com o ambiente externo e

Capítulo 2. Fundamentos Teóricos 19

os processamentos do CPU e um firmware imbutido no sistema (SILVA, 2010). Os primeiroscomputadores foram elaborados apartir dos microprocessadores, com a adição de periféricosexternos, como memórias, temporizadores, linhas de entrada e saída, entre outros.

Muitas vezes, microcontroladores e microprocessadores são confundidos. Por isso éimportante ressaltar a diferença entre eles. O principal característica de distinção é a funciona-lidade do microcontrolador. Para que o microprocessador possa ser utilizado, os outros compo-nentes devem ser adicionados a ele. Apesar de se encarregar do processamento computacional,não consegue isoladamente se comunicar com o ambiente. O microcontrolador foi projetadopara conter todos os componentes e circuitos de suporte em um único chip, o tornando aptopara operar sem ligações externas. Na figura 3 podem ser vistos os diversos componentes peri-féricos incluídos no chip de um microcontrolador de uso geral.

Figura 3 – Elementos construtivos de um microcontrolador de uso geral

Fonte: ELEKTRONIKA (2014)

Os microcontroladores atualmente, são facilmente encontrados no mercado brasileiro aum custo baixo, especialmente se comparado às opções anteriores. Nos modelos atuais a efici-ência energética foi priorizada, permitindo alimentação por baterias. Existem diversos modelos,com os mais variados periféricos, e diferentes capacidades de processamento, todas essas dife-renciações cobrem a maioria das aplicações atuais.

Capítulo 2. Fundamentos Teóricos 20

2.6 Controle de sistemas

A engenharia de controle se baseia na teoria da retroação e na análise de sistemas linea-res, integrando conceitos teóricos de circuitos com a telecomunicação. Por isso, a engenharia decontrole não se limita em apenas uma área, mas é aplicável na aeronáutica, química, mecânica,civil, elétrica, entre outras.

Segundo (DORF; BISHOP, 2001, p. 2) "Um sistema de controle á uma interconexãode componentes formando uma configuração de sistema que produzirá uma resposta desejadado sistema. A base para análise de um sistema é formada pelos fundamentos fornecidos pelateoria dos sistemas lineares, que supõe uma relação de causa e efeito para os componentes deum sistema. Além disso, um componente ou processo a ser controlado pode ser representadopor um bloco, como mostrado na figura 4".

Figura 4 – Processo a ser controlado.

Fonte: DORF, BISHOP (2001)

2.6.1 Controle em malha aberta

De acordo com (DORF; BISHOP, 2001, p. 140) "Um sistema de malha aberta (sistemadireto) opera sem retroação e gera diretamente a saída em resposta a um sinal de entrada". Essetipo de sistema pode ser representado pelo diagrama de blocos da figura 5, que indica o sinal dereferência como entrada seguindo para o controlador que comanda o atuador do sistema, umaperturbação é inserida para agregar um possível ruído e interferência.

Figura 5 – Sistema de controle em malha aberta.

Fonte: CESGRANRIO (2008)

Neste tipo de sistema não há como corrigir erros de trajetória ou realizar estimativa dedados com base na saída, pelo fato do sinal de saída não realizar nenhum tipo de conexão como controle. Esse tipo de controle é normalmente realizado quando o sistema não irá apresentargrandes desvios, pois a relação entre saída e entrada deve ser conhecida.

Capítulo 2. Fundamentos Teóricos 21

2.7 Open Source

Open source é um termo que foi criado em 1998 pela OSI (uma organização dedicadaà promover o software livre), esse conceito é definido por algumas condições segundo DFSG(que é a definição Debian de software livre), como a de distribuição livre, código fonte aces-sível, permitir modificações, a não discriminação contra qualquer usuário, a não discriminaçãocontra qualquer utilização, distribuição de licença, licença que não restrinja outros programas.O modelo Open Source é sustentado pela colaboração intelectual de usuários e desenvolvedo-res. Em um nível mundial, a quantidade de softwares livres vem aumentado ao longo dos anos,e cada vez mais é comum encontrar empresas que trabalham com esse tipo de produto, poisquando detectada uma falha no sistema, a solução livre pode rapidamente oferecer condiçõesde ser adaptada.

2.8 Arduino

O Arduino é considerado na comunidade de desenvolvedores (ARDUINO, 2014), umbom meio para quem está iniciando na robótica, pois forcene o necessário para aplicar conceitosa serem explorados e desenvolver experimentalmente as próprias ideias.

Essa plataforma beneficia grande parte das pessoas com conhecimento em programação,mas sem domínio da eletrônica, que podem realizar experimentos práticos. E também pessoasque possuem conhecimento da eletrônica mas sem conhecimento de programação podem reali-zar experimentos de alto nível. Abrindo espaço para leigos que desejam criar um protótipo útilque pode chegar a resultados consideráveis (WERNECK, 2009).

Existem outras plataformas de microcontroladores criadas antes mesmo do Arduino emantendo o mesmo objetivo. Entretanto não possuiam a característica financeira e a facilidadedo Arduino, um exemplo é o Basic Stamp. O Arduino pode ser utilizado no desenvolvimento deprojetos autônomos ou iterativos, que respondem à sensores ou switches e controlam motores,outras plataformas, relés ou outros tipos de saída (RODRIGO, 2011).

Pelo fato de ser um hardware e software livre, existem diversos tipos de placas no mer-cado com seus esquemáticos eletrônicos disponíveis, caso o consumidor que deseja criar a pró-pria placa possa construir ou mesmo modificar (ARDUINO, 2014). A base de desenvolvimentoArduino, é um sistema de computação físico que fornece ao usuário diversos pinos de entradaou saída, digitais e analógicos, que podem ser definidos na programação do microcontroladorutilizando o Arduino IDE.

No Arduino é possível criar rotina para Windows, Mac OS X e Linux, pois o seu am-biente de desenvolvimento é multiplataforma. A linguagem aceita pelo Arduino IDE é muitoparecida com a linguagem C++, porém mantém uma forma simplificada.

Capítulo 2. Fundamentos Teóricos 22

2.9 Ponte H

Circuitos digitais muitas vezes, não tem capacidade de fornecer corrente elétrica ne-cessária para o funcionamento de um sistema projetado. Para suprir essa carência de correnteelétrica, por exemplo para acionamento de motores, é utilizada a técnica da ponte H, que dis-ponibiliza potência suficiente e torna o sistema versátil. Visto que o sentido de rotação de ummotor de CC depende do sentido da corrente elétrica que percorre seus enrolamentos, isso sig-nifica que quando é invertida a polaridade do motor, também é invertido o sentido de rotação(BRAGA, 2009b). Um circuito básico de uma ponte-H é indicado na figura 6.

Figura 6 – Circuito de Ponte-H.

Fonte: Próprio autor

Para que o motor opere no sentido horário, o sinal positivo deve ser aplicado nos termi-nais A e D, fazendo com que os transistor.es T1 e T4 entrem em condução e a tensão nos polosdo motor seja de +Vcc. Se a necessidade é de que o motor opere no sentido anti-horário, deveser aplicado o sinal positivo, agora nos terminais B e C, assim os transistores T2 e T3 entramem condução e a tensão sobre o motor será de –Vcc.

Caso os terminais A, B, C e D sejam acionados juntos, o motor é posto em curto, por-tanto nada acontece, mas se os terminais A e B ou C e D forem acionados simultaneamente,causará curto entre o terminal positivo e negativo, podendo causar dano ao circuito.

2.10 Modulação por largura de pulso (PWM)

Diversos circuitos utilizam a tecnologia da Modulação de Largura de Pulso, como asfontes chaveadas, controles de potência, inversores de frequência, conversores para servomo-tor, entre outros. O método tradicional para se controlar a potência dissipada em uma carga, éadicionando um reostato em série, como está representado na figura 7. Com uma tensão cons-tante, a variação da resistência do reostato, ocasionará em uma modificação na corrente que

Capítulo 2. Fundamentos Teóricos 23

percorre a carga, consequentemente a potência dissipada. Este método é denominado "controlelinear"e possui como principal ponto negativo uma grande quantidade de energia desperdiçadadevido ao efeito Joule (BRAGA, 2009c). O efeito joule também é conhecido como efeito tér-mico, representa a relação entre o calor gerado pela corrente elétrica que percorre o condutorem determinado tempo, o calor gerado neste exemplo é um fator negativo da observação doefeito.

Figura 7 – Controle da potência em carga por reostato.

Fonte: Próprio autor

O PWM pode ser entendido como uma modulação que através do duty cicle, regula otempo em que o sinal fica em nível alto, ou seja, a largura do pulso, alterando a transferência depotência entregue a carga pela alteração da tensão média disponibilizada. Este controle, diminuia potência dissipada para um valor próximo de zero pois não há uma segunda carga de controle,o que se altera é o próprio sinal que a carga recebe. A figura 8 ilustra a modulação por largurade pulso com diferentes duty cicles.

Figura 8 – Sinal de PWM com diferentes duty cicle

Fonte: BARR (2001)

A frequência do PWM deve ser muito maior do que a frequência que afetaria a carga,pois a carga deve receber o sinal de tensão o mais regular possível. O método consiste em variaro período ativo de um sinal de freqüência geralmente fixa, variando entre um nível máximo

Capítulo 2. Fundamentos Teóricos 24

de tensão possível e zero, gerando um sinal de onda quadrada, e obtendo um valor médio detensão, que corresponderá a uma velocidade (BRAGA, 2009c).

2.11 Sensores

Os sensores são dispositivos amplamente utilizados na robótica e eletrônica devido asua necessidade de interagir com o ambiente. Estes instrumentos podem ser definidos comoperiféricos que detectam eventos ou mudanças e providenciam saídas correspondente à essasvariações. Segundo (THOMAZINI; ALBUQUERQUE, 2005), no caso de aplicações em robó-tica, a saída é um sinal elétrico que após ser manipulado, fornece informações que podem serreconhecidas em alguma unidade. Existem diferentes categorias para esses dispositivos, algunsexemplos podem ser descritos como:

∙ Sensor Fotoelétrico: respondem a ausência ou incidência de luz no componente foto sen-sível.

∙ Sensor Piroelétrico: geram uma tensão devido a presença de uma radiação infravermelhano ambiente.

∙ Sensor de Tato: reagem à uma força exercida no mesmo.

∙ Sensor Ultrassônico: realiza transmissão e recepção de uma onda ultrasônica e gera umsinal relativo a ao tempo decorrido.

2.11.1 Sensor Ultrassônico

Um tipo de sensor muito comum em aplicações industriais é o que utiliza ultrassom.Esses sensores podem ser usados para detectar objetos em uma linha de montagem, detectar apresença de pessoas ou ainda de substâncias em diversos estados num reservatório permitindoa medida de seu nível (BRAGA, 2009a).

O sensor de ultrassom, utiliza ondas mecânicas para transmissão e recepção no própriodispositivo e mede o intervalo de tempo decorrido dos dois eventos, sendo assim, é possívelobter a distância do objeto até o sensor caso considerada a velocidade do ar como uma constante,a figura 9 ilustra esse fenômeno.

Figura 9 – Princípio de funcionamento de um sensor ultrassônico.

Fonte: BRAGA (2009a)

Capítulo 2. Fundamentos Teóricos 25

Existem sensores ultrassônicos de alta precisão e outros capaz de detectar objetos avários metros de distância, a utilização de cada um irá depender da aplicação desejada.

26

3 Descrição do Trabalho

3.1 Descrição do Projeto

No projeto desenvolvido, foi realizada a montagem do módulo robótico e a programaçãopara que o mesmo opere em dois modos, autônomo e manual, como descritos a seguir:

∙ Autônomo

– O módulo se movimenta para frente sem necessitar de comandos para isso.

– Na presença de um obstáculo frontal realiza aleatóriamente uma de três rotinas dedesvios.

– Na presença de obstáculo frontal e traseiro, a plataforma gira em seu eixo até quehaja uma passagem aberta.

∙ Manual

– O módulo precisa de comandos enviados pela porta serial para que haja movimento.

– A plataforma se movimenta em duas direções, frente e trás

– O módulo gira em torno do seu eixo central afim de efetuar curvas, tanto no sentidohorário quanto anti horário.

– Caso haja um obstáculo próximo, o módulo para e aguarda um comando de movi-mento.

3.2 Hardware

Para a execução do projeto elaborado, foram necessários diferentes módulos que operamem conjunto. Esses módulos executam diferentes funções, como monitorar o ambiente físico,fornecer corrente para o motor, servir de estrutura mecânica para todo o sistema, realizar oprocessamento, entre outros.

3.2.1 Materiais Utilizados

∙ Plataforma mecânica contendo:

– Dois motores DC 6V.

– Chassi em acrílico.

– Ball caster composto de esfera deslizante em alumínio.

– Par de rodas de 65mm de diâmetro.

Capítulo 3. Descrição do Trabalho 27

∙ Arduino UNO R3.

∙ Sensor Ultrassônico HC-SR04.

∙ Módulo com CI L298n.

∙ XBee S6 com shield desenvolvido em laboratório.

∙ Duas baterias de 9V.

∙ Microcontrolador Atmega328.

3.2.2 Descrição do Hardware

A plataforma (figura 10) realiza o movimento através dos dois motores CC disponíveisque estão fixados ao chassis, cada um desses motores está acoplado diretamente à uma roda porengrenagens não visíveis. Pelo fato dos motores controlarem cada uma das rodas independen-temente, é possível realizar rotações sem que haja deslocamento considerável da plataforma.

Figura 10 – Plataforma mecânica.

Fonte: DX (2014)

Para o acionamento dos motores será utilizado o CI L298n em um módulo prático quecontém os componentes de segurança e proteção, o L298n contém internamente um circuitode ponte H dupla, permitindo que haja a inversão da polaridade nos motores, ou seja, ambospodem girar no sentido horário e anti horário. O controle da velocidade será realizado pelo duty

cicle do PWM estipulado no corpo do programa, como a módulação por largura de pulso definequal a porcentagem do período que o nível ficará alto ou baixo, o valor de tensão transferidopara o motor será uma média do PWM.

Capítulo 3. Descrição do Trabalho 28

O Arduino fornece duas frequências de PWM nas saídas digitais, 500Hz e 1kHz (AR-DUINO, 2014), como a tensão média não depende da frequência da modulação, no trabalhoserá utilizado uma frequência de cada, para comparar os valores práticos obtidos e realizaradaptações caso necessário.

Apesar dos motores possuírem os mesmos dados nominais, eles reagem de forma di-ferente com o mesmo nível de tensão. Pelo fato do trabalho não consistir em uma análise desistema em malha fechada com a utilização de encoder, para manter a velocidade angular entreos motores próximas, foram realizados vários testes experimentais e, a partir disso, ajustado oPWM de acordo com o melhor valor encontrado.

O movimento do conjunto irá depender em qual modo de operação o sistema está tra-balhando, pois a ideia é de poder realizar operações manualmente controladas e também queocorram desvios automáticos sem a interferência externa. Independente da velocidade, o sensorultrassônico detecta possíveis obstáculos que se aproximam devido ao movimento do conjuntoe repassa informações sobre a proximidade de objetos.

3.2.2.1 Modo autônomo de operação

No modo de operação autônomo, o conjunto deve se movimentar sem que haja necessi-dade de receber comandos. A plataforma deve estar com uma velocidade constante até encontrarum obstáculo, e quando alcançar a distância mínima estipulada no programa, realiza um desvioaleatório que pode ter duração 𝑡 = [1.5,5] segundos.

Em seguida, volta a se deslocar para a frente até que encontre outro obstáculo, mantendoa rotina de movimento até que seja modificado o modo de operação ou desativado o sistema.Neste caso o XBee deve simplesmente enviar o valor da leitura do sensor frontal para o telefonecelular e aguardar até que o modo de operação sejá alterado. A figura 11 ilustra em ordemsequencial o movimento da plataforma em modo autônomo de operação.

Capítulo 3. Descrição do Trabalho 29

Figura 11 – Movimentação no modo autônomo de operação.

Fonte: Próprio autor

3.2.2.2 Modo manual de operação

A movimentação do sistema no modo de operação manual, depende exclusivamente doque o operador deseja realizar. Estarão disponíveis alguns comandos como o de giro horário eanti horário, além dos de movimentação para frente e trás.

Para que sejam executadas as tarefas desejadas, o operador deve mandar o código deidentificação do comando para o XBee via Wi-FiTMe esse repassar o código ASCII para o mi-crocontrolador que reconhecerá e disponibilizará a saída desejada, fazendo o sistema responderadequadamente. Nesse caso, o XBee envia continuamente os dados capturados pelo sensor parao telefone celular e também está disponível para receber comandos do mesmo. A figura 12ilusta o funcionamento ideal da plataforma em modo de operação manual em movimentação.

Capítulo 3. Descrição do Trabalho 30

Figura 12 – Movimentação no modo manual de operação.

Fonte: Próprio autor

3.3 Software

O programa desenvolvido foi gravado no Arduino UNO R3, portanto esse será o res-ponsável por realizar o processamento dos dados recebidos e enviados. As operações desempe-nhadas pela plataforma está diretamente associada com os softwares utilizados para elaboraçãodo programa principal e também de configurações.

3.3.1 Softwares Utilizados

∙ Arduino IDE 1.0.5-r2

∙ X-CTU 6.1.2

3.3.2 Descrição do Software

O fluxograma apresentado na figura 13 representa básicamente como o programa fun-ciona, na próxima seção, cada parte, autônoma ou manual será explicada detalhadamente.

Capítulo 3. Descrição do Trabalho 31

Figura 13 – Fluxograma simplificado do programa completo.

Fonte: Próprio autor

Observando o fluxograma, é possível visualizar que a primeira etapa é reconhecimendodo modo de operação. No programa elaborado quando o Arduino é inicializado ele automati-camente irá setar o modo manual. Após o reconhecimento do modo de operação o programasegue dois caminhos distintos, caso ele esteja operando manualmente, o sistema todo aguardaum comando para executar alguma função e aguarda outro comando até que seja interrompidode continuar executando a mesma. Entre o loop de reconhecimendo de comandos o sensor estaráobtendo dados da proximidade de obstáculos e caso haja algum próximo, a velocidade é setadacomo zero e o sistema aguarda outro comando diferente do que se aproxima do obstáculo.

Caso o modo de operação seja alterado para autônomo, o sistema se movimenta parafrente até que ocorra a proximidade de um objeto ou o modo de operação seja alterado. Casoo objeto se encontre distanciado do sensor pelo valor limitante, será executada uma rotina dedesvio aleatória. O autônomo se mostra mais simples, pelo fato da movimentação dependerexclusivamente do sensor ultrassônico.

Capítulo 3. Descrição do Trabalho 32

3.3.2.1 Modo autônomo de operação

Enquanto o sistema estiver operando no modo autônomo, a movimentação do conjutodependerá exclusivamente da leitura do sensor ultrassônico, que quando não detecta obstáculos,o movimento será retilíneo. Caso um obstáculo seja detectado pelo sensor frontal, o sistemafará uma leitura do sensor traseiro, caso não haja nada impedindo a movimentação para trás,será executada aleatóriamente uma rotina de desvio. Quando forem detectados obstáculos porambos os sensores, haverá movimento horário até que a distância obtida pelo sensor frontal sejasatisfatória para o movimento retilíneo. A figura 14 indica o fluxograma no modo autônomo.

Figura 14 – Fluxograma do modo autônomo de operação.

Fonte: Próprio autor

Capítulo 3. Descrição do Trabalho 33

3.3.2.2 Modo manual de operação

Durante a operação no modo manual, o único sensor em funcionamento é o frontal, e omovimento do sistema depende dos comandos enviados pelo operador. Quando um obstáculo nadistância limite, para evitar colisões o sistema sofre a frenagem até adquirir velocidade igual à 0e aguarda o próximo comando do operador, sendo essa a única resposta automática do sistema.O fluxograma da figura 15 representa os processos.

Figura 15 – Fluxograma do modo manual de operação.

Fonte: Próprio autor

34

4 MetodologiaEm um projeto de robótica, é necessário que haja medições precisas a respeito de tensões aplica-das em determinados terminais. Isto deve ser considerado pelo fato dos componentes envolvidosserem boa parte de baixa potência e certos níveis de tensão podem prejudicar seu funcionamentopermanentemente caso ocorram erros de montagem. Portanto, além do cuidado com o controlefísico do sistema, é preciso que os datasheets dos dispotivos utilizados sejam cuidadosamenteanalisados, para que o sistema todo trabalhe da melhor maneira e evite-se prováveis erros.

A figura 16 ilustra parte dos testes realizados em laboratório. Nesse caso a fonte detensão foi regulada para operar em 9V constante, fornecendo um valor constante para todo osistema, diferentemente do que acontece com a bateria.

Figura 16 – Teste do sistema operando

Fonte: Próprio autor

4.1 Programação do Arduino

4.1.1 Linguagem de Programação do Arduino

Utilizando a linguagem do Arduino, um programa típico é elaborado apartir de duasfunções de estrutura principais, o "void setup()"que é executada toda vez que a plataforma éligada ou reiniciada, é utilizada para definir se os pinos definidos previamente são de entrada esaída, inicializar variáveis, definir bibliotecas, entre outros.

A outra função utilizada é o "void loop()"que na maioria dos casos é onde o programaprincipal se instala. Consiste em uma rotina de loop que executa o código elaborado de forma

Capítulo 4. Metodologia 35

repetida no microcontrolador. Dentro da "void loop()", neste caso, são chamadas outras subro-tinas que executam determinada parte do programa. Isto ocorre para manter uma organizaçãodentro do código para que possa ser compreendido por outras pessoas que não o elaboraram eem caso de modificações, fique mais fácil de alterar a estrutura e parâmetros.

4.1.2 Arduino IDE (Integrated Development Environment)

O ambiente de desenvolvimento é composto por uma barra de ferramentas superior,composta com funções como Verify, Upload, New, Open, Save e Serial Monitor. A opção Ve-

rify, procura erros de sintaxe no programa apresentado. A compilação e transferência para omicrocontrolador é feito pelo Upload. New cria uma nova aba em branco. Open abre um pro-grama já salvo. Save grava o programa escrito com um nome e extensão “.ino” e a opção Serial

Monitor é utilizada para fazer a comunicação com o Arduino pela porta serial, além de monito-rar dados que podem ser adquiridos com a placa.

Figura 17 – Arduino IDE 1.0.5-r2.

Fonte: Próprio autor

No trabalho, a utilização do Serial Monitor se mostrou prática, pelo fato do programaelaborado poder ser facilmente adaptado e testado, otimizando o processo metodológico. Atra-vés dele, foi possível realizar diversos testes de reconhecimento de erro, pela impressão decomandos estratégicamente inseridos no código.

Capítulo 4. Metodologia 36

4.2 Configuração do roteador

Para que ocorra a comunicação entre diferentes dispositivos, o meio utilizado foi o pa-drão IEEE 802.11 g, que pode ser gerado através do roteador disponibilizado pela UEL (figura18). Na figura 19 foi acessado o Access Point para a configuração do roteador, nesse ambientesão definidos vários parâmetros, como o nome da rede, a segurança atribuída, a faixa de IP(protocolo dinâmico), essas e outras informações podem ser observadas abaixo.

Figura 18 – Roteador WAP-4035

Fonte: Próprio autor

Figura 19 – Wireless LAN Access Point do roteador WAP-4035

Fonte: Próprio autor

Capítulo 4. Metodologia 37

4.3 Configuração do XBee S6

O XBee S6 Wi-Fi é um módulo embarcado produzido pela empresa DIGI, com ele serápossível a comunicação wireless com o Arduino e telefone celular. O XBee se comunica pelopadrão IEEE 802.11 b/g/n com dois tipos de rede,: Infraestrutura e Ad-Hoc. Através de umroteador cedido pela UEL, uma conexão segura é estabelecida entre a central de controle e oXbee embarcado, a utilização do mesmo só é possível com a análise do manual do fabricante.A figura 20 indica o modelo do módulo utilizado.

Figura 20 – XBee S6 Wi-FiTMModule

Fonte: DIGI (2014)

O XBee deve ser configurado para que a comunicação ocorra corretamente pela redesem fio.

4.3.1 X-CTU

O X-CTU é um software gratuito disponibilizado pelo fabricante do XBee, consiste emfornecer um ambiente gráfico para a configuração do módulo Wi-FiTM. O X-CTU inclui asferramentas que o desenvolvedor necessita para rapidamente utilizado o XBee(DIGI, 2014), nafigura 21 o ambiente é representado.

Capítulo 4. Metodologia 38

Figura 21 – X-CTU 6.1.2

Fonte: Próprio autor

4.3.2 UDP TCP Server

Para que ocorra a comunicação wireless o módulo deve receber informações de umacentral de comando, nesse caso será um telefone móvel. O aparelho deve estar apto para conec-tar na rede sem fio gerada através do roteador e por ela, enviar comando para o IP e porta dedestino do XBee, assim como receber informações do mesmo.

Para que isso seja possível, a utilização de um aparelho que opere com o sistema ope-racional Android será necessária devido à disponibilidade do aplicativo UDP TCP Server naGoogle Store. Pelo app é possível realizar a comunicação configurada, de acordo com as espe-cificações de destino e envio. A figura 22 ilustra o ambiente em que o sistema sera comandado,tanto no modo manual com as direções de movimento, como para o modo autônomo que reco-nhece somente a mudança de operação.

Capítulo 4. Metodologia 39

Figura 22 – Interface do App TCP UDP Server Free

Fonte: Próprio autor

4.4 Arduino UNO R3

O Arduino Uno R3, é uma placa microcontrolada de desenvolvimento, elaborada paratrabalhar com o microcontrolador Atmega328. O ambiente de desenvolvimento possui 14 pinosde input ou output digitais (sendo que 6 deles podem ser usados para saída PWM), 6 entradasanalógicas, 1 resonador cerâmico de 16MHz, conexão USB, conexão de energia e um botão dereset. A placa contém o necessário para dar suporte ao Atmega328, basta conectar o cabo USBao computador para iniciar a programação através do IDE (ARDUINO, 2014).

Capítulo 4. Metodologia 40

Figura 23 – Arduino UNO R3.

Fonte: ARDUINO (2014)

A tabela indica informações pertinentes a respeito da placa de desenvolvimento.

Tabela 1 – Características do Arduino UNO R3.

Características DescriçãoMicrocontrolador ATmega328

Tensão de operação 5VTensão de entrada 7-12V

Pinos de I/O digitais 14Pinos de entrada analógica 6Corrente DC por pino I/O 40mA

Corrente DC por pino 3.3V 50mAMemória Flash 32KB

Clock 16MHzSRAM 2KB

EEPROM 1 KB

Fonte: ARDUINO (2014)

4.4.1 ATmega 328

O microcontrolador Atmega328, é um dispositivo da fabricante Atmel que possui umaCPU de 8-bit combinada com uma memória flash ISP (In System Programming) de 32Kbytescom capacidade de leitura e escrita. O dispositivo possui 23 pinos configuráveis I/O e funci-ona entre 1,8-5,5 volts. A figura 24 representa o mapeamento dos pinos do microcontroladorutilizado.

Capítulo 4. Metodologia 41

Figura 24 – Mapeamento dos pinos do Atmel Atmega328.

Fonte: JAMECO (2014)

4.5 Módulo CI L298n

O CI L298 será utilizado pelo fato de conter um circuito de ponte H dupla, sendo as-sim é possível realizar o controle independente e simultâneo dos dois motores (STMICROE-LECTRONICS, 2000). O módulo em que se apresenta, contém componentes importantes paraproteção do circuito e pinos de I/O de fácil acesso, sua foto está apresentada na figura 25.

Figura 25 – Módulo com CI L298n

Fonte: FASTTECH (2014)

Os pinos de entrada e saída de informações se apresentam sempre duplicados, existemseis entradas de sinal digital, sendo três delas referentes a cada um dos motores, duas dessasentradas (IN) comandam o sentiro de giro do motor e a outra (ENABLE) define se o motor estaráligado ou não. O controle da velocidade será realizado com o PWM no pino ENABLE, enviandouma tensão média através da modulação.

Capítulo 4. Metodologia 42

Existem quatro saídas no módulo, que aos pares são ligadas nos motores e sua polari-dade é definida pelo nível lógico dos pinos IN, ou seja, o motor pode girar para os dois lados.Além desses pinos descritos, estão presentes os de alimentação, terra, 5V, entre outros. A tabela2 indica a pinagem do módulo contendo o CI L298n.

Tabela 2 – Descrição dos pinos do módulo com CI L298n.

Pino DescriçãoVMS Alimentação externaGND Referência externaENA Habilita a saída do motor A (ENABLE)ENB Habilita a saída do motor B (ENABLE)IN1 Controla sentido de giro do motor A (INPUT)IN2 Controla sentido de giro do motor A (INPUT)IN3 Controla sentido de giro do motor B (INPUT)IN4 Controla sentido de giro do motor B (INPUT)

Motor A (bipolar) Saída para o motor AMotor B (bipolar) Saída para o motor B

5V Tensão de referência disponível

Fonte: MICROELECTRONICS (2000)

4.6 Módulo sensor HC-SR04

O módulo HC-SR04 é um sensor ultrassônico que utiliza ondas acústicas para deter-minar a distância para um objeto. O sensor oferece um alcance de 2cm até 400cm, com umaresolução de 0.3cm, não é influenciado por luz solar ou materiais negros, entretanto pode terdificuldade de detectar materiais que são acusticamente isolantes, como espumas e isopor. Estefenômeno ocorre devido a atenuação da onda mecânica pelo material, prejudicando a reflexãoda mesma e consequentemente a obtenção do intervalo de tempo entre transmissão e recepção.

Figura 26 – Sensor HC-SR04

Fonte: MICROCONTROLLERELECTRONICS (2014)

Capítulo 4. Metodologia 43

O sensor utilizado possui 4 pinos, Vcc que corresponde à alimentação de 5V, GND comosendo o terra, e outros 2 pinos chamados de Trig e Echo.

Para iniciar a medição através do aparelho, é necessário energizar o módulo e estabe-lecer em nível alto o Trig por no mínimo 10us. Isso fará com que seja transmitida uma ondasonora, que será refletida quando encontrar um obstáculo, e recebida pelo receptor. Durante ointervalo de tempo de transmissão e recebimento da onda, o pino Echo permanece em nívelalto, sendo assim, é possível calcular a distância através do tempo decorrido.

A figura 27 exemplifica o funcionamento do HC-SR04, indicando o nível do pino Echo

e Trig e a onda de frequência 40kHz a ser transmitida.

Figura 27 – Exemplo do funcionamento dos pinos Trig e Echo.

Fonte: EZDENKI (2012)

O pino Trig um pulso único de 10𝜇s e o módulo sensor enviará 8 pulsos com umafrequência de 40kHz. Depois de transmitida a onda e refletica, o pino Echo receberá uma ondaTTL com largura de pulso proporcional à distância do objeto detectado.

44

5 Discussão dos Resultados

Neste capítulo serão discutidos os resultados obtidos através do experimento metodológico des-crito anteriormente. Como nem sempre os resultados são tão próximos dos valores ideais espe-rados, é importante que os desvios sejam discutidos e justificados.

5.1 Resultado

5.1.1 Análise do movimento dos motores

Após a realização da montagem adequada para que os motores operem com o mesmoDuty Cycle, foram cuidadosamente analisados com a ajuda de um osciloscópio digital, con-forme indica a figura 16. Apesar da frequência do PWM não influenciar no nível de tensão mé-dio reconhecido pela carga, o sinal enviado aos motores apresentaram diferentes valores para atensão média medida pelo osciloscópio, a tabela 3 indica os valores obtidos com a referentes %do Duty Cycle.

Tabela 3 – Tensão média e duty cycle.

Duty Cycle Tensão média do PWM em B, [V] Tensão média do PWM em A, [V]100% 5.00 4.5490% 4.45 4.0380% 3.96 3.5670% 3.52 3.0960% 2.98 2.5750% 2.56 2.0740% 2.12 1.5830% 1.60 1.1920% 1.12 0.7010% 0.73V 0.30

Como os motores operam com tensões médias diferentes, eles consequentemente pos-suem diferentes velocidade angular, afetando diretamente o movimento em linha reta. A leiturarealizada pelo osciloscópio pode ser verificada na figura 28, com os devidos valores médiorepresentados na lateral da imagem.

Capítulo 5. Discussão dos Resultados 45

Figura 28 – Duty Cycle de 90%, CH1 - ENB, CH2 - ENA

Fonte: Próprio autor

Como é possível observar, a frequência da modulação é diferente para cada um doscasos, isso ocorre pois foram utilizados os pinos 3 e 5 do Arduino que fornecem 500Hz e 1kHzde PWM, mas isso não altera o nível médio de tensão, entretanto ainda assim houve este desviodevido ao valor máximo de tensão fornecido pelo pino de saída, que pode ser observado namedição do 100%.

Para realizar a correção, foi incrementado no Duty Cycle do motor A um valor obtidoatravés de testes experimentais, até que os valores de tensão médios sejam os mais próximospossíveis. A figura 29 representa o PWM já alterado com um incremento de 7% no sinal quevai para o ENA.

Capítulo 5. Discussão dos Resultados 46

Figura 29 – Duty Cycle ajustado com +7% no ENA (CH2)

Fonte: Próprio autor

A diferença entre os valores de tensão média, se reduziu à 0.04V, essse valor pode serconsiderado insignificante para a movimentação prática do sistema, uma variação de tensãodessa ordem não gera desvios consideraveis.

5.1.2 Fornecimento de energia

Para que o sistema opere sem conexões físicas com outros equipamentos se fez neces-sário o uso de baterias. Para a alimentação do Arduino e do módulo com L298n, duas bateriasde 9V foram selecionadas, uma para cada módulo. Na realização dos testes em bancada foiutilizada a fonte controlada Minipa MPS-3003, disponível no laboratório. Essa fonte não temdificuldade no fornecimento de corrente e nem queda de tensão devido ao tempo de operação,enquanto a bateria perde parte de seu potencial, reduzindo a velocidade dos motores gradativa-mente.

5.1.3 Leitura do HC-SR04

O sensor ultrassônico utilizado, possui uma boa resolução nominal, entretanto na práticaem alguns momentos ele recebe um sinal de altíssimo valor, que não condiz com a realidade.Este fato ocorre possivelmente pelo fato da onda mecânica se refletir em diferentes objetos queforam diferentes ângulos em relação ao transmissor e receptor, criando assim um retorno emmultipercurso, que quando atinge o receptor indica um maior tempo de trajeto. A figura 30indica a verificação desse fato pelo serial monitor do Arduino IDE, os valores de distância indi-cados são referêntes ao sensor frontal. Para que fosse detectado esse erro, houve uma variação

Capítulo 5. Discussão dos Resultados 47

periódica de 5cm na posição do objeto, pois o programa desenvolvido não informa quando hápequenas variações.

Figura 30 – Leitura da porta serial com informações do sensor frontal.

Fonte: Próprio autor

5.1.4 Comunicação wireless

O módulo de comunicação utiliza a porta serial para comunicação direta com o Ar-duino, portanto teóricamente o que é aceito pelo serial monitor do Arduino IDE deve ser aceitopela informação transmitida pelo UDP TCP Server corretamente configurado. Quando todo osistema foi montado, surgiu um problema da não identificação do comando enviado pelo apli-cativo, após analise detalhada do problema foi constatado que isso ocorre devido à maneira quea informação é enviada para o XBee.

Quando a informação é enviada do celular para o XBee foi comprovado no console doX-CTU, que houve recebimento de mais dados que apenas comando de reconhecimento.

Capítulo 5. Discussão dos Resultados 48

Figura 31 – Console do X-CTU após o recebimento do comando ’f’ e ’p’ enviado pelo celular.

Fonte: Próprio autor

Pela tabela ASCII, 0D representa "volta ao início da linha"e 0A "nova linha", essasequência é sempre enviada pelo celular. Para solucionar esse problema, o programa foi al-terado para apenas identificar o primeiro dado enviado, que no exemplo da figura 31 é a letra"f"simbolizada por "66". Após essas correções o sistema funcionou adequadamente.

49

6 Conclusão

O trabalho descrito apresenta a criação de um sistema robótico que pode ser controladopelo aparelho celular ou se auto orientar fazendo utilização de sensores ultrassônicos para des-viar de eventuais obstáculos. A metodologia para solução de problemas teve suma importância,tanto no desenvolvimento do programa quanto nas dúvidas de hardware.

Através dos resultados é possível perceber que o ajuste de velocidade apesar da faltade algum dispositivo de percepção(encoder), se mostrou eficiênte para o seu propósito quandotestado em laboratório, o móvel consegue se manter praticamente em linha reta.

Quando o sistema todo foi testado com a fonte controlada no laboratório, os motoresmantiveram uma velocidade satisfatória, pelo fato da fonte possuir alta capacidade de correntee manter o valor de tensão estável. Na utilização de baterias 9V o sistema possui poucas horasde uso, pois o módulo que contém o CI L298n necessita de uma certa quantidade de corrente,consumindo rapidamente a energia armazenada na bateria. Para uma melhora neste quesito,seria ideal a implementação de uma bateria que tenha uma maior capacidade de corrente mesmoque opere com os 9V.

Os sensores ultrassônicos conseguem detectar rapidamente a presença de obstáculos,porém a quantidade de movimento presente no sistema é alta, com isso é possível que algumasvezes a plataforma encoste mesmo que haja detecção. Quando o conjunto robótico caminha emdireção à um canto, dificilmente o sensor consegue detectar, pelo fato do eixo em que a ondaultrassônica é transmitida não formar 90𝑜 com o plano dormado pelo objeto a frente.

Para que o sistema como um todo fosse otimizado, primeiramente a utilização de umafonte de energia confiável já mencionada, uma substituição dos componentes como motorese sensores por outros mais precisos e potentes. Também na parte de softwares, o desenvolvi-mento de um aplicativo para o Android que operede de maneira otimizada e haja mais opçõesde configurações, afim de trabalhar em conjunto com a comunicação pelo XBee. Além da im-plementação de diferentes módulos, como GPS, câmera, entre outros.

50

Referências

ARDUINO. Site Oficial. 2014. Acesso em Jul/2014. Disponível em: <http://www.arduino.cc>.

BARR, M. Pulse Width Modulation, Embedded Systems Programming. 2001. Acesso emOut/2014. Disponível em: <http://www.barrgroup.com/Embedded-Systems/How-To/PWM>.

BRAGA, I. N. Como funcionam os sensores ultrassônicos. 2009. Acesso em Out/2014.Disponível em: <http://www.newtoncbraga.com.br/index.php/como-funciona/5273-art691>.

BRAGA, I. N. Conheça as pontes H. 2009. Acesso em Out/2014. Disponível em:<http://www.newtoncbraga.com.br/index.php/robotica/5166-mec068a>.

BRAGA, I. N. O que é PWM. 2009. Acesso em Out/2014. Disponível em: <http://www.newtoncbraga.com.br/index.php/robotica/5169-mec071a>.

CESGRANRIO. PLANEJAMENTO DE PROJETOS E OBRAS: PROGRAMAÇÃO ECONTROLE. 2008. Acesso em Out/2014.

CUNHA, A. F. O que são sistemas embarcados. Saber Eletrônica-Ano, 2007.

DIGI, I. Site Oficial. 2014. Acesso em Out/2014. Disponível em: <http://www.digi.com/>.

DORF, R. C.; BISHOP, R. H. Sistemas de controle modernos. [S.l.]: Livros Técnicos eCientíficos, 2001.

DX. Smart Robot Car Chassis Kit for Arduino. 2014. Acesso em Ago/2014. Disponível em:<http://www.dx.com/>.

ELEKTRONIKA, M. Site Oficial. 2014. Acesso em Out/2014. Disponível em: <http://www.mikroe.com/>.

EZDENKI. The HC-SR04 Ultrasonic Sensor. 2012. Acesso em Out/2014. Disponível em:<http://www.ezdenki.com/ultrasonic.php>.

FASTTECH. Stepper Motor Dual Full Bridge Module. 2014. Acesso em Out/2014. Disponívelem: <www.fasttech.com>.

FITZGERALD, A. MÁQUINAS ELÉTRICAS, Tradução Anatólio Laschuk–. [S.l.]: PortoAlegre: Bookman, 2006.

HOEPERS, R. Veículo Autônomo Usando Arduino. 2012. Univeridade do Vale do Itajaí.

HONDA, F. MOTORES DE CORRENTE CONTÍNUA, Guia rápido para uma especificaçãoprecisa. 2006. SIEMENS.

JAMECO. Atmega328. 2014. Acesso em Out/2014. Disponível em: <www.jameco.com>.

MEDEIROS, J. C. d. O. O. Princípios de telecomunicações-teoria e prática. Editora Érica,2005.

MICROCONTROLLERELECTRONICS. HC-SR04 Distance Sensing. 2014. Acesso emOut/2014. Disponível em: <http://microcontrollerelectronics.com>.

Referências 51

MICROELECTRONICS, S. L298–Dual Full-Bridge Driver–Datasheet. 2000.

RODRIGO, L. Plataforma Arduino, Hardware e Visão Geral. 2011. Acesso em Ago/2014.Disponível em: <http://www.dihitt.com/barra/arduino--visao-geral>.

SILVA, L. A. d. Apostila de Android: Programando passo a passo. [S.l.]: Ed, 2010.

TECNOLOGIA, I. M. de. Sistemas eletrônicos embarcados. 2014. Acesso em Out/2014.Disponível em: <http://www.maua.br/posgraduacao/sistemas-eletronicos-embarcados>.

THOMAZINI, D.; ALBUQUERQUE, P. U. B. d. Sensores industriais–fundamentos eaplicações. São Paulo, v. 3, 2005.

WERNECK, P. Introdução ao arduino. Saber Eletrônica-Ano, 2009.

52

APÊNDICE A – ProgramaDesenvolvido

#define ENA 5 //PWM

#define ENB 3 //PWM

#define IN1 2 //Motor A

#define IN2 4 //Motor A

#define IN3 6 //Motor B

#define IN4 7 //Motor B

#define TRIG_PIN1 13 //Sensor Frontal

#define ECHO_PIN1 12 //Sensor Frontal

#define TRIG_PIN2 9 //Sensor Traseiro

#define ECHO_PIN2 8 //Sensor Traseiro

#define VELO_CM_US 0.034 // Velocidade do som [cm/us]

enum tipo_desvios {

DESVIO01,

DESVIO02,

DESVIO03,

DESVIO04,

};

enum modos_motor {

DESLIGADO,

TRAS,

FRENTE,

STANDBY,

};

double dist1, dist2; //Distância de leitura dos sensor dianteiro e traseiro.

unsigned long duracao1, duracao2; //Tempo entre transmissão e recepção do ultrasom

int velocidade2=90; //Velocidade para o motor B

int velocidade1=(velocidade2+7); //Velocidade para o motor A

int direcao1; //Define o sentido de rotação do motor A

APÊNDICE A. Programa Desenvolvido 53

int direcao2; //Define o sentido de rotação do motor B

const int tamanho_dados = 1; //Variável de apoio para a leitura serial

char dados[tamanho_dados];

int modo_op=1; //Inicialização do modo de operação em Manual

int freio=0;

//Comandos de leitura da porta serial

char cmd_frente[] = "f";

char cmd_parar[] = "p";

char cmd_esquerda[] = "e";

char cmd_direita[] = "d";

char cmd_tras[] = "t";

char cmd_operacao[] = "o";

char cmd_desligado[] = "D";

char cmd_velocidade[] = "v";

//Declaração dos pinos

void setup()

{

delay(3000);

Serial.begin (9600);

pinMode(TRIG_PIN1, OUTPUT);

pinMode(ECHO_PIN1, INPUT);

pinMode(TRIG_PIN2, OUTPUT);

pinMode(ECHO_PIN2, INPUT);

pinMode(ENA, OUTPUT);

pinMode(ENB, OUTPUT);

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);

}

//****************** Programa principal *******************

void loop()

{

APÊNDICE A. Programa Desenvolvido 54

if (modo_op == 1)

{

manual();

}

else

{

autonomo();

}

}

//****************** Modo Manual *******************

void manual()

{

pega_dist();

if ((dist1 <= 35) && (freio == 0)) //Detecção imediata do sensor

{

direcao1=3;

direcao2=3;

freio=1;

}

else if ((dist1 <= 35) && (freio == 1)) //Reconhecimento do obstáculo e aguarda por uma leitura serial para o desvio

{

motorA(direcao1, velocidade1);

motorB(direcao2, velocidade2);

leitura();

delay(100);

}

else //Segue na direção desejada

{

motorA(direcao1, velocidade1);

motorB(direcao2, velocidade2);

print_serial_info();

leitura();

freio=0;

delay(100);

}

APÊNDICE A. Programa Desenvolvido 55

}

//****************** Leitura da Serial *******************

void leitura()

{

Serial.setTimeout(10);

if (Serial.available())

{

pausa();

Serial.readBytes(dados, tamanho_dados);

}

reconhecimento();

for (int i = 0; i < tamanho_dados; i++)

{

dados[i] = 0;

}

}

//****************** Pausa *******************

void pausa()

{

motorA(3, velocidade1);

motorB(3, velocidade2);

delay(300);

}

//****************** Reconhecimento da Leitura *******************

void reconhecimento()

{

if ((strcmp(dados, cmd_frente) == 0) && (modo_op == 1)) //compara a leitura com o comando, se for igual e o modo de operação for manual(1), executa

{

// andar pra frente

Serial.print("Frente");

Serial.println("");

direcao1=2;

direcao2=2;

}

else if ((strcmp(dados, cmd_parar) == 0) && (modo_op == 1))

{

APÊNDICE A. Programa Desenvolvido 56

// parar

Serial.print("Parar");

Serial.println("");

direcao1=3;

direcao2=3;

}

else if ((strcmp(dados, cmd_tras) == 0) && (modo_op == 1))

{

// tras

Serial.print("Tras");

Serial.println("");

direcao1=1;

direcao2=1;

}

else if ((strcmp(dados, cmd_direita) == 0) && (modo_op == 1))

{

// Direita

Serial.print("Direita");

Serial.println("");

direcao1=1;

direcao2=2;

}

else if ((strcmp(dados, cmd_esquerda) == 0) && (modo_op == 1))

{

// esquerda

Serial.print("Esquerdar");

Serial.println("");

direcao1=2;

direcao2=1;

}

else if ((strcmp(dados, cmd_desligado) == 0) && (modo_op == 1))

{

// desligado

Serial.print("Desligado");

Serial.println("");

direcao1=0;

direcao2=0;

}

else if (strcmp(dados, cmd_operacao) == 0)

APÊNDICE A. Programa Desenvolvido 57

{

if (modo_op == 1)

{

Serial.print("Mudanca de MANUAL -> AUTONOMO"); //Mudança do modo de operação

Serial.println("");

modo_op = 2;

}

else

{

Serial.print("Mudanca de AUTONOMO -> MANUAL");

modo_op = 1;

direcao1 = 3;

direcao2 = 3;

}

}

}

//****************** Modo Autonomo *******************

void autonomo()

{

int tipo_desvio;

pega_dist();

if ((dist1 <= 35) && (dist2 <= 35)) //caso haja obstaculo traseiro

{

Serial.print("Atenção: obstaculo traseiro e frontal");

Serial.println("");

desvio(3);

}

else if (dist1 <= 35)

{

tipo_desvio = random(3);

desvio(tipo_desvio);

}

else

{

motorA(2, velocidade1);

motorB(2, velocidade2);

APÊNDICE A. Programa Desenvolvido 58

}

print_serial_info();

leitura();

delay(100);

}

//****************** Captura Distancia dos Sensores *******************

void pega_dist()

{

//Referente ao sensor frontal

digitalWrite(TRIG_PIN1, LOW);

delayMicroseconds(5);

digitalWrite(TRIG_PIN1, HIGH);

delayMicroseconds(15);

digitalWrite(TRIG_PIN1, LOW);

duracao1 = pulseIn(ECHO_PIN1, HIGH);

// O resultado fornecido pelo sensor é o tempo de ida e volta de uma onda sonora,

// como precisamos do tempo somente de ida (ou volta) dividimos o resultado por 2.

dist1 = (duracao1/2.0) * VELO_CM_US;

if (modo_op == 2)

{

//Referente ao sensor traseiro

digitalWrite(TRIG_PIN2, LOW);

delayMicroseconds(5);

digitalWrite(TRIG_PIN2, HIGH);

delayMicroseconds(15);

digitalWrite(TRIG_PIN2, LOW);

duracao2 = pulseIn(ECHO_PIN2, HIGH);

dist2 = (duracao2/2.0) * VELO_CM_US;

}

else

{

}

}

//****************** Rotina de Desvios *******************

APÊNDICE A. Programa Desenvolvido 59

void desvio(int desvios)

{

motorA(3, 70);

motorB(3, 65);

delay(1250);

switch (desvios)

{

case DESVIO01:

desvio1();

break;

case DESVIO02:

desvio2();

break;

case DESVIO03:

desvio3();

break;

case DESVIO04:

desvio4();

break;

}

}

//****************** Tipos de Desvios *******************

void desvio1()

{

do

{

pega_dist();

motorA(2, 85);

motorB(1, 80);

delay(250);

} while (dist1 <= 35);

}

void desvio2()

{

APÊNDICE A. Programa Desenvolvido 60

motorA(1, 95);

motorB(1, 60);

delay(1500);

motorA(2, 65);

motorB(2, 90);

delay(2000);

}

void desvio3()

{

motorA(1, 85);

motorB(1, 80);

delay(1500);

motorA(1, 80);

motorB(2, 70);

delay(750);

}

void desvio4()

{

do

{

pega_dist();

motorA(2, 75);

motorB(1, 70);

delay(250);

} while (dist1 <= 35);

}

//****************** Imprimir distância *******************

void print_serial_info()

{

static double dist_ant;

if ( !((dist1 <= dist_ant+1) && (dist1 >= dist_ant-1)) )

{

APÊNDICE A. Programa Desenvolvido 61

Serial.print("Distancia: ");

Serial.print(dist1);

Serial.println("cm");

Serial.println("");

}

dist_ant=dist1;

}

//****************** Motor A controle *******************

void motorA(int mode, int percent)

{

int duty = map(percent, 0, 100, 0, 255);

switch(mode)

{

case DESLIGADO:

digitalWrite(ENA, LOW);

break;

case TRAS:

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

analogWrite(ENA, duty);

break;

case FRENTE:

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

analogWrite(ENA, duty);

break;

case STANDBY:

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

analogWrite(ENA, duty);

break;

}

}

APÊNDICE A. Programa Desenvolvido 62

//****************** Motor B controle *******************

void motorB(int mode, int percent)

{

int duty = map(percent, 0, 100, 0, 255);

switch(mode)

{

case DESLIGADO:

digitalWrite(ENB, LOW);

break;

case TRAS:

digitalWrite(IN3, HIGH);

digitalWrite(IN4, LOW);

analogWrite(ENB, duty);

break;

case FRENTE:

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

analogWrite(ENB, duty);

break;

case STANDBY:

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

analogWrite(ENB, duty);

break;

}

}

//**********************************************************