Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

INSTITUTO FEDERAL DO MARANHÃO. 
CAMPUS AÇAILÂNDIA. 
CURSO TÉCNICO EM AUTOMAÇÃO INDUSTRIAL 
 
 
 
MATHEUS VICTOR SARMENTO 
PEDRO MANOEL LIMA GUSTAVO SOUSA 
VITOR MAGALHÃES SAMPAIO 
 
 
 
 
 
 
APLICAÇÃO DE CONTROLE PROPORCIONAL EM ROBÔ 
SEGUIDOR DE LINHA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AÇAILÂNDIA 
2017 
MATHEUS VICTOR SARMENTO 
PEDRO MANOEL LIMA GUSTAVO SOUSA 
VITOR MAGALHÃES SAMPAIO 
 
 
 
 
 
 
 
 
APLICAÇÃO DE CONTROLE PROPORCIONAL EM ROBÔ 
SEGUIDOR DE LINHA 
 
 
Trabalho de Conclusão de Curso elaborado sob a 
orientação do professor Brehme Mesquita e apresentado 
ao curso de Automação Industrial, do IFMA – Campus 
Açailândia, com o objetivo de obtenção de nota de 
aprovação para a titulação de técnico em Automação 
Industrial. 
 
Orientador: Prof. Mestre Brehme Dnapoli Mesquita 
 
 
 
 
 
 
 
 
AÇAILÂNDIA 
2017
 
LISTA DE FIGURAS 
FIGURA 1 – ESQUEMA DE MODULAÇÃO POR LARGURA DE PULSO. ................. 5 
FIGURA 2 - CICLO DE TRABALHO PWM. ................................................................. 5 
FIGURA 3 - ESTRUTURA DE UM SISTEMA DE CONTROLE REALIMENTADO ...... 7 
FIGURA 4 - SISTEMA COM CONTROLE PROPORCIONAL ..................................... 8 
FIGURA 5 - SISTEMA DE CONTROLE PROPORCIONAL EM ATUAÇÃO .............. 10 
FIGURA 6 - PLACA ARDUINO UNO ........................................................................ 10 
FIGURA 7 - FOTOTRANSISTOR .............................................................................. 11 
FIGURA 8 - ESQUEMA DE FUNCIONAMENTO DO FOTOTRANSISTOR .............. 11 
FIGURA 9 - DESENHO (A) FOTO (B) DE UM MOTOR CC. ..................................... 13 
FIGURA 10 – PRINCÍPIO DE FUNCIONAMENTO DE MOTOR CC ......................... 13 
FIGURA 11 - SEGUIDOR DE LINHA EM INDÚSTRIA ............................................. 14 
FIGURA 12- ESQUEMA DO FUNCIONAMENTO DO SEGUIDOR DE LINHA ......... 16 
FIGURA 13 - DEMONSTRAÇÃO DO FUNCIONAMENTO DOS SENSORES.......... 17 
 
 
LISTA DE TABELAS 
TABELA 1 - VARIAÇÃO DO VALOR PWM EM RELAÇÃO AO ERRO ..................... 22 
TABELA 2 - VALORES DE AJUSTE DE CADA SENSOR. ....................................... 23 
 
 
LISTA DE EQUAÇÕES 
EQUAÇÃO 1 – CICLO DE TRABALHO ...................................................................... 6 
EQUAÇÃO 2 – TENSÃO MÉDIA EM PWM ................................................................ 6 
EQUAÇÃO 3 – RELAÇÕES DE PROPORÇÃO ENTRE O AJUSTE E O ERRO ........ 8 
EQUAÇÃO 4 – RELAÇÕES DE PROPORCIONALIDADE ......................................... 9 
EQUAÇÃO 5 – VALORES DE ERRO NA REALIMENTAÇÃO DO KP ........................ 9 
EQUAÇÃO 6 – FORMA FINAL DE ESQUEMATIZAÇÃO DO AJUSTE ...................... 9 
EQUAÇÃO 7 – RELAÇÕES DE CORRENTE NOS TRASISTORES ........................ 12 
EQUAÇÃO 8 – RELAÇÕES DE TENSÃO NO TRANSISTOR .................................. 12 
 
 
SUMÁRIO 
1. INTRODUÇÃO .................................................................................................. 3 
1.1. OBJETIVO GERAL........................................................................................ 3 
1.2. OBJETIVOS ESPECÍFICOS .......................................................................... 3 
2. REFERENCIAL TEÓRICO ................................................................................ 4 
2.1. MODULAÇÃO POR LARGURA DE PULSO (PWM) ...................................... 4 
2.2. CONTROLE PROPORCIONAL ..................................................................... 6 
2.2.1. SISTEMA REALIMENTADO ....................................................................... 7 
2.2.2. PRINCÍPIO DE FUNCIONAMENTO DO CONTROLADOR 
PROPORCIONAL .................................................................................................... 8 
2.3. ARDUINO ..................................................................................................... 10 
2.4. FOTOTRANSISTOR .................................................................................... 11 
2.5. MOTOR DE CORRENTE CONTÍNUA ......................................................... 12 
2.6. ROBÔ SEGUIDOR DE LINHA NA INDÚSTRIA ........................................... 14 
3. FUNCIONAMENTO DO ROBÔ SEGUIDOR DE LINHA ................................. 16 
3.1. CAPTAÇÃO E PROCESSAMENTO DO SINAL ........................................... 17 
3.2. MOVIMENTAÇÃO DO SEGUIDOR DE LINHA ............................................ 18 
3.3. CONTROLE DOS MOTORES ..................................................................... 18 
3.4. FONTE DE ALIMENTAÇÃO ........................................................................ 19 
3.5. CONTROLE GERAL DO SISTEMA ............................................................. 20 
4. RESULTADOS FINAIS ................................................................................... 21 
5. CONCLUSÕES ............................................................................................... 24 
6. REFERÊNCIAS BIBLIOGRÁFICAS ............................................................... 25 
ANEXO A ............................................................................................................... 26 
 
3 
 
1. INTRODUÇÃO 
As revoluções industriais desempenharam um papel crucial para o 
desenvolvimento tecnológico, pois através delas, técnicas de mecanização e 
posteriormente a robótica, esta última a partir da terceira revolução industrial, 
começaram a ser desenvolvidas. Com os avanços tecnológicos cada vez mais 
presentes no mundo, o desenvolvimento da automação, técnica de automatizar os 
processos, começou a surgir. O primeiro termo utilizado para designar automação foi 
o de controle automático de processos [1]. 
O presente trabalho consiste na demonstração de um tipo de robótica 
autônoma, com percurso “auto-programável”. Trata-se de um robô seguidor de linha 
que funcionará com base em um controle do tipo Proporcional, em que a ação 
corretiva da trajetória é proporcional ao erro atuante. Tal funcionamento será fruto da 
interação de circuitos com sensores, atuadores e uma lógica de programação que 
fará com que o robô percorra um circuito desenhado por uma faixa de cor preta com 
uma cor clara ao redor. 
1.1. OBJETIVO GERAL 
Realizar o experimento de uma lógica de programação que guie o robô 
seguidor de linha ao longo de uma faixa preta em um circuito qualquer, com uma cor 
clara ao redor da referida faixa. 
1.2. OBJETIVOS ESPECÍFICOS 
 Testar um controle do tipo Proporcional para o funcionamento do seguidor de 
linha; 
 Explicar o funcionamento dos sensores e atuadores envolvidos; 
 Explicitar o funcionamento do microcontrolador Arduino e sua programação; 
 
4 
 
2. REFERENCIAL TEÓRICO 
Neste tópico abordaremos alguns temas importantes para o entendimento do 
projeto do seguidor de linha. Falaremos sobre modulação por largura de pulso, que 
é uma tecnologia de controle de potência que utilizamos para controlar a velocidade 
dos motores; controle proporcional, tipo de controle utilizado neste projeto; o 
Arduino, microcontrolador que fará o controle geral do sistema; fototransistores, que 
são os sensores presentes no seguidor de linha; motores de corrente contínua, que 
são os atuadores presentes no robô; além de robô seguidor de linha na indústria, 
para um melhor entendimento da importância deste tipo de tecnologia. 
2.1. MODULAÇÃO POR LARGURA DE PULSO (PWM) 
PWM, ou modulação por largura de pulso, é uma tecnologia de controle de 
potência muito utilizada em diversos circuitos eletrônicos e também em 
micromotores elétricos. Por meio desta tecnologia, podem-seobter resultados 
analógicos a partir de sinais digitais [2]. 
Basicamente, o PWM gera uma onda quadrada de alta frequência, e controla 
a porcentagem de tempo em que essa onda permanece em nível lógico alto. Tal 
percentual é o chamado ciclo de trabalho, e conforme este se altera, provoca uma 
mudança no valor médio de tensão da onda. Este valor médio pode variar entre 0 e 
5V para o Arduino [2]. 
 
5 
 
 
Figura 1 – Esquema de modulação por largura de pulso. 
Fonte: https://www.arduino.cc/en/Tutorial/PWM 
. 
 
O ciclo de trabalho é um valor expresso em percentual, calculado a partir da 
razão entre o tempo em que o sinal permanece em nível alto e o tempo total da 
oscilação [2], como mostra o esquema a seguir: 
 
Figura 2 - Ciclo de trabalho PWM. 
Fonte: https://www.arduino.cc/en/Tutorial/PWM. 
 
 
O ciclo de trabalho pode ser determinado a partir da seguinte equação: 
6 
 
 
 
 
𝐶𝑡(%) = 
𝑥
𝑥 + 𝑦
× 100 =
𝑥
𝑇
 × 100 
(Equação 1) 
 
Em que: 
Ct (%) = Ciclo de trabalho (valor percentual) 
x = tempo em nível alto 
y = tempo em nível baixo 
T = tempo total 
 
O valor médio da onda é obtido por meio da seguinte equação: 
 
 
 𝑉𝑚é𝑑𝑖𝑎 = 𝑉𝑚á𝑥 × 𝐶𝑡(%) (Equação 2) 
 
Vmédia = tensão média 
Vmáx = tensão máxima 
Ct (%) = Ciclo de trabalho (valor percentual) 
 
No Arduino, o ciclo de trabalho é um valor armazenado em 8 bits que vai de 0 
(0%) a 255 (100%). Para um sinal PWM de valor 165, por exemplo, tem-se: se 255 é 
100%, 165 é aproximadamente 65%. 
Considerando a tensão máxima do Arduino sendo 5V, tem-se: 
 
𝑉𝑚é𝑑𝑖𝑎 = 5 × 65% 
𝑉𝑚é𝑑𝑖𝑎 = 3,25𝑉 
2.2. CONTROLE PROPORCIONAL 
Para um melhor entendimento do controle Proporcional, é necessário o 
entendimento de como funciona um sistema realimentado, utilizado amplamente no 
ramo da automação. A seguir iremos explicar como funciona este tipo de sistema. 
 
7 
 
2.2.1. SISTEMA REALIMENTADO 
Um sistema realimentado consiste em um esquema de funcionamento de 
malha fechada, em que o estado da variável controlado é sempre monitorado pelos 
sensores na saída do sistema, que enviam um sinal que retorna à entrada do 
sistema para um comparador, que detecta se há erro, ou seja, diferença entre o 
valor desejado e o valor real do estado da variável, para que desta forma o sistema 
continue a manipulá-la até obter sucesso. 
. 
 
Figura 3 - Estrutura de um sistema de controle realimentado 
Fonte: https://www.embarcados.com.br/controlador-proporcional/ 
 
Um sistema realimentado pode ser dividido em três estruturas básicas: 
 O Sistema a ser controlado; 
 O controlador utilizado nesse sistema; 
 A realimentação, por meio dos sensores. 
Na entrada do sistema existe uma referência, que é o valor para o qual a 
variável manipulada deverá ser modificada. O sinal da referência passa para o 
centro de controle, que é responsável pelo funcionamento do sistema em si, dando 
ordens para os atuadores realizarem seus respectivos papéis na manipulação da 
variável. Esses atuadores podem ser dos mais diversos tipos, como motores, 
resistências, relés, cilindros, entre outros. Os atuadores então realizam o trabalho 
definido e desta forma, o sistema possui um sinal de saída [3]. 
Em sistemas de malha aberta, em que não há realimentação, este sinal de 
saída não é recuperado pela entrada do sistema, e o processo acaba ali. No caso de 
sistema realimentado, os sensores captam o sinal da saída do sistema, apontando 
desta forma o novo estado da variável manipulada. Este sinal é reenviado para um 
comparador na entrada do sistema, que compara o valor da saída com o valor 
8 
 
configurado inicialmente no setpoint. Havendo erro, ou seja, diferença entre os dois 
sinais, o sistema de controle permanece atuando para o ajuste da variável [3]. 
Em resumo, o controle e a realimentação trabalham de maneira rápida e em 
conjunto para que o sistema apresente o melhor desempenho, rapidez e eficácia 
possíveis. Tal tipologia visa reduzir ao máximo o erro, e aproximar ao máximo o 
estado da variável ao valor de referência [3]. 
 
2.2.2. PRINCÍPIO DE FUNCIONAMENTO DO CONTROLADOR 
PROPORCIONAL 
Controladores Proporcionais realizam uma ação corretiva proporcional ao 
valor do erro da saída do sistema. 
 
 
Figura 4 - Sistema com Controle Proporcional 
Fonte: https://www.embarcados.com.br/controlador-proporcional/ 
 
De acordo com o que foi dito anteriormente, e conhecendo a forma de 
funcionamento de um controlador proporcional, pode-se fazer uma análise 
matemática do funcionamento do mesmo e de como se dá o ajuste quando existe 
um sinal de erro recebido por intermédio da realimentação. 
Pode-se, matematicamente, analisar a proporcionalidade entre os sinais de 
ajuste e de erro da seguinte forma: 
 
 𝑎(𝑡) ∝ 𝑒(𝑡) (Equação 3) 
 
Em que: 
PWMM 
9 
 
a (t)= ajuste 
e (t) = erro 
 
Assim, para chegar-se a uma fórmula de determinar o ajuste, admitiu-se uma 
constante de proporcionalidade Kp entre os dois termos, que será o ganho 
proporcional, como mostrado abaixo na equação do ajuste: 
 
 
 𝑎(𝑡) = 𝐾𝑝 ∙ 𝑒(𝑡) (Equação 4) 
 
O erro é a diferença entre o valor da referência e o coletado na saída do 
sistema. Matematicamente pode-se defini-lo como: 
 
 
 𝑒(𝑡) = 𝑃𝑊𝑀𝑀 − 𝑠(𝑡) (Equação 5) 
Em que: 
PWMM = valor de referência (PWM médio) 
s(t) = valor da saída do sistema 
Assim, a fórmula final é dada por: 
 
 
 𝑎(𝑡) = 𝐾𝑝 𝑥 [𝑃𝑊𝑀𝑀 − 𝑠(𝑡)] (Equação 6) 
 
A imagem abaixo expressa a forma com a qual o sistema de controle 
proporcional corrige o erro, trazendo o traçado ao valor de referência do sistema. 
 
10 
 
 
Figura 5 - Sistema de Controle Proporcional em atuação 
Fonte: https://www.smarti.blog.br/controladores-pid/ 
 
2.3. ARDUINO 
Os microcontroladores são dispositivos que podem ser programados para a 
realização de determinadas funções. São comumente usados para controlar 
circuitos e devido a isto é facilmente encontrado numa variedade de dispositivos. O 
Arduino é um microcontrolador que atualmente tem sido o cérebro de uma variedade 
de dispositivos. Uma grande comunidade de fabricantes atualmente se reúne em 
torno desta plataforma de código aberto [4]. 
 
 
Figura 6 - Placa Arduino Uno 
Fonte: Wikimedia, Disponível em:<https://commons.wikimedia.org/wiki/File:Arduino-uno-perspective-
whitw.jpg>. Acesso em 25 de agosto de 2017. 
 
Como já dito anteriormente, é uma plataforma eletrônica de código aberto, 
mas, além disso, é baseada em hardware e software fáceis de usar. As placas 
11 
 
Arduino são capazes de ler entradas e transformá-las em uma saída que é 
determinada por um conjunto de instruções previamente declaradas pelo seu 
programador. Para fazer isso, é necessário o uso da linguagem de programação 
Arduino (com base na fiação) e o software Arduino (IDE), com base no 
processamento [5]. 
2.4. FOTOTRANSISTOR 
 O fototransistor consiste em um dispositivo eletrônico fundamentado nos 
conceitos de fotocondutividade [6]. Nos seus aspectos construtivos, assim como o 
transistor convencional é a combinação de dois diodos de junção, contudo, 
associado ao efeito transistor aparece o efeito fotoelétrico. Por meio disto, além de 
detectar a incidência de luz, amplifica o sinal a ele referido. Em geral, possui dois 
terminais acessíveis, o coletor e o emissor, sendo a base incluída apenas para o 
controle elétrico [7]. Conforme isso, o fototransistor funciona como resistência 
elétrica em função da intensidade da luz incidente na sua base. 
 
Figura 7 - fototransistor 
Fonte: http://pteletronica.com/optoacoplador-foto-diodo-foto-transistor/Figura 8 - esquema de funcionamento do fototransistor 
Fonte: https://www.abcelectronica.net/productos/sensores/ftrans/ 
12 
 
 
A corrente que passa pela base do fototransistor depende especificamente do 
fluxo luminoso incidente [7]. Os fototransistores são dispositivos que apresentam 
uma alta sensibilidade à luz [8]. Deste modo, na ausência de luz, a corrente de base 
será zero e o fototransistor cortado, resultando em uma tensão no coletor igual à 
tensão de polarização Vcc, quando o que ocorre é o contrário, ou seja, quando há 
incidência de luz na base do fototransistor, a tensão irá diminuir no coletor conforme 
o aumento da corrente na base [7]. 
A corrente de emissor (IE) é composta pela soma das correntes de base (IB) e 
de coletor (IC). Analogamente, observamos que, a tensão entre coletor-emissor (VCE) 
é composta pela soma das tensões base-emissor (VBE) e base-coletora (VCB) [9]. 
Portanto, podemos escrever: 
 
 IE = IB + IC (Equação 7) 
 VCE = VBE + VBC (NPN) (Equação 8) 
 
2.5. MOTOR DE CORRENTE CONTÍNUA 
O motor de corrente contínua é constituído principalmente de duas estruturas 
magnéticas, sendo estas: o estator (circuito indutor) e o rotor (circuito induzido). 
Dá-se o nome de estator a parte fixa, responsável pela criação de um campo 
magnético permanente. A figura 10 mostra o desenho de um motor CC de 2 polos 
com enrolamento de campo. O rotor, a parte móvel do motor, é um eletroímã 
composto de um núcleo de ferro, os enrolamentos em sua superfície são 
alimentados por um sistema mecânico de comutação (figura 9). Esse sistema é 
formado por um comutador, que tem como função inverter a corrente na fase de 
rotação apropriada de forma a que o conjugado desenvolvido seja na mesma 
direção [10]. 
 
13 
 
 
Figura 9 - Desenho em (a) foto em (b) de um motor de corrente contínua de dois polos. 
Fonte: SIEMENS – Motor de corrente contínua edição 01.2006 
 
 Os condutores do rotor são dispostos com as mesmas distâncias entre seus 
dois polos, desta forma o motor apresentará mesmo torque em suas fases de 
rotação. A imagem a seguir demonstra o esquema de funcionamento de um motor 
de corrente contínua [10]. 
 
 
Figura 10 – Princípio de funcionamento de motor CC 
Fonte: SIEMENS – Motor de corrente contínua edição 01.2006 
 
O esquema acima demonstra de maneira simples e detalhada de como se dá 
o movimento do motor. O campo magnético do estator permanece fixo e o rotor é 
uma bobina por onde circula a corrente elétrica. Assim que rotor recebe corrente 
14 
 
elétrica, esta bobina se comporta com polaridade N (norte) em uma de suas 
extremidades e S (sul) como mostrados na figura[10]. 
Num primeiro instante (a) a bobina se encontra na sua posição horizontal, 
devido à tração magnética, a bobina experimenta um torque que age no sentido anti-
horário (b). Assim que a bobina encontra sua posição de estabilidade (c), ou seja, o 
momento em que o torque é nulo, o comutador age, invertendo o sentido da 
corrente, aproveitando o torque anterior e mantendo a continuidade do giro (d) [10]. 
Tem um alto custo, além disso, para seu funcionamento ocorra, é necessária 
uma fonte de corrente contínua. Podem funcionar com velocidade ajustável entre 
amplos limites e se prestam a controles de grande flexibilidade e precisão. Por isso 
seu uso é restrito a casos especiais em que estas exigências compensam o custo 
muito mais alto da instalação [11]. 
2.6. ROBÔ SEGUIDOR DE LINHA NA INDÚSTRIA 
Ao longo dos anos, o sistema de produção industrial foi se tornando cada vez 
mais exigente, em função da demanda e da concorrência. Desta forma, os avanços 
tecnológicos foram se tornando rotina, e cada vez mais as tarefas, desde as mais 
simples até as mais complexas, passaram a ser executadas de forma autônoma, 
dispensando intervenção humana e aumentando o ritmo de trabalho [12]. Nos dias 
atuais, em que o uso da tecnologia está cada vez mais necessário, os robôs 
seguidores de linha possuem um papel muito importante nas indústrias, comércios, 
hospitais e clínicas e até mesmo no âmbito residencial. 
 
Figura 11 - Seguidor de linha em indústria 
Fonte:http://www.jornaldasavassi.com.br/arquivos/images/mer_12%20(4)(1).JPG 
 
São chamados também de "robôs industriais" e realizam tarefas como 
mapeamento de uma área, monitoramento, transporte de materiais entre os setores 
15 
 
da produção, entre outras tarefas, e fazem essas tarefas de forma automática, na 
maioria das vezes sem intervenção humana alguma. Desta forma, sua importância 
não se resume ao fato de executar algumas tarefas, mas ao passo que reduz a 
intervenção humana, reduz também o risco de acidentes e de alguém se machucar 
no processo [13]. 
Robôs seguidores de linha são tipos de veículos guiados automaticamente 
(ou AGVs - Automated Guided Vehicle), capazes de se deslocar em trajetos pré-
definidos, assim excluindo o uso de mão de obra humana. Sendo autônomos, eles 
são capazes de seguir determinadas instruções, carregar e distribuir materiais com 
inúmeras vantagens, ou seja, podem se deslocar em áreas apertadas, podendo se 
adaptar a mudanças de percurso. Suas aplicações são comuns no transporte de 
matérias para linhas de produção, devido a uma capacidade de carga variável e 
pouca necessidade de manutenção [13]. 
 
 
 
16 
 
3. FUNCIONAMENTO DO ROBÔ SEGUIDOR DE LINHA 
O seguidor de linha utilizado é o μMaRT-INO e funciona, essencialmente, com 
base em um grupo de sensores, dois motores, e um microcontrolador. 
O sensoriamento ótico do robô lhe permite distinguir a diferentes intensidades 
luminosas e, por meio disto, é viável a movimentação do robô em determinado 
ambiente. Este sistema de sensoriamento pode ser realizado com o uso de sensores 
fotoelétricos. O robô μMaRT-INO dispõe de fototransistores para o sensoriamento 
das variáveis que compõem o nosso sistema. 
O circuito de controle do robô seguidor de linha é fundamentado com base em 
dois grupos de sensores de linha como é mostrado na figura 11. Os sensores são 
dispostos de tal forma que tenha um espaçamento, o qual deve ser o lugar da faixa 
de contraste. Mesmo estando estes sensores conectados às portas analógicas do 
Arduino, enviam um sinal que por sua vez apresenta características digitais devido à 
lógica do sistema de controle com a função de se tratar do sinal e controlar os dois 
motores por meio da saída do sistema. Quando um dos sensores identifica uma 
faixa de contraste, detecta a mudança, o que permite corrigir sua rota. 
 
 
Figura 12- Esquema do funcionamento do seguidor de linha 
Fonte: Próprio autor 
 
O tipo de controle utilizado neste robô seguidor de linha foi controle 
Proporcional. Os sensores captam a todo instante os sinais luminosos advindos do 
solo; sendo eles da faixa de contraste e do restante do solo. Os sinais captados 
pelos seis fototransistores são enviados para o Arduino. Estes sinais são 
interpretados, seguindo a lógica do algoritmo que foi utilizado. A lógica de 
programação foi feita no ambiente ARDUINO IDE, versão 1.8.1. As saídas do 
Arduino foram ligadas aos motores de corrente contínua de ambos os lados do robô. 
A lógica proporcional então processa os sinais recebidos dos sensores e, de acordo 
com os mesmos, é possível manipular a velocidade dos motores de forma 
17 
 
independente. Desta forma o robô se movimenta e se estabiliza por sobre a faixa 
preta, percorrendo assim o traçado definido. 
3.1. CAPTAÇÃO E PROCESSAMENTO DO SINAL 
O robô utilizado neste trabalho é guiado por meio da navegação por 
referência ótica. Assim, utiliza-se de dois grupos de fototransistores que operam em 
modo de reflexão. Um dos grupos opera à direitaenquanto o outro opera à 
esquerda. 
 Os fototransistores dispõem de uma base coletora muito sensível à luz. 
O sensor converte luz em corrente elétrica, a qual é gerada quando fótons são 
absorvidos no fotodiodo, dependendo da frequência da cor do plano, a corrente 
gerada também varia por meio das resistências do circuito, isso permite com que 
seja efetuada a diferenciação de cores. 
Os sensores, ao captarem a linha preta, emitem um sinal 1 (alto) para o 
Arduino. Quando estivessem sobre o solo em branco, o sinal dos sensores é 0 
(baixo). O esquema a seguir demonstra como se dá esse comportamento. 
 
 
Figura 13 - Demonstração do funcionamento dos sensores [15] 
 
Sinal 0 (baixo) Sinal 0 (baixo) 
 
Sinal 1 (alto) 
 
Sinal 0 (baixo) 
 
18 
 
O sinal da saída dos sensores é comparado no sistema de controle, distribui a 
alimentação devida a cada motor do sistema. Os sensores, quando em 
funcionamento, distinguem a diferença da cor, pois quanto mais claro maior é a 
corrente gerada, possibilitando uma resposta aos motores do robô por intermédio da 
lógica desenvolvida. 
3.2. MOVIMENTAÇÃO DO SEGUIDOR DE LINHA 
O sinal enviado pelo bloco comparador controla o acionamento dos motores 
do robô de tal forma que sua velocidade varie conforme a tensão média gerada na 
entrada PWM do motor. Quando um dos sensores envia um sinal lógico alto (HIGH), 
ou seja, quando um dos sensores está localizado na faixa escura, a velocidade dos 
motores é ajustada para que seja possível realizar a correção de sua trajetória. 
Portanto, o veículo precisa para realizar tais manobras, motores posicionados 
de forma oposta e polarizados de forma independente, para que o sentido seja o 
mesmo. Para facilitação do processo, foram empregados dois micromotores com 
caixa de redução para aumentar o torque e dar mais precisão no giro das rodas, nos 
micromotores também existem encoders1 para melhor controle de velocidade de 
cada roda. 
3.3. CONTROLE DOS MOTORES 
Após o tratamento do sinal, os motores do seguidor de linha são alimentados 
para se manterem na rota indicada pela faixa de contraste (branco/preto). As 
entradas IN1 e IN2, definem o sentido de rotação dos motores enquanto a entrada 
PWM, a velocidade com a qual os motores giram. 
 
 
 
 
 
 
 
 
 
1 - sensor que converte um movimento angular ou linear em uma série de pulsos digitais elétricos, 
fornecendo para o controlador dados suficientes para transforma-los em informações como posição, 
velocidade ou rpm (rotação por minuto)[14]. 
19 
 
 
Figura 14 – Controle do motor [16] 
 
 
3.4. FONTE DE ALIMENTAÇÃO 
Para conferir autonomia ao robô, é possível que este seja alimentado pela 
sua própria placa ou Arduino. Seu sistema que propicia a fonte de alimentação é 
composto por um chaveamento que é responsável por ligar ou desligar o robô 
completo. 
 
 
Figura 15 – Diagrama de alimentação do seguidor de linha via placa [16] 
 
20 
 
3.5. CONTROLE GERAL DO SISTEMA 
O Arduino é responsável pelo controle geral do processo, desde receber o 
sinal dos sensores até o envio dos resultados para os motores. Na figura abaixo, é 
possível ver a definição de cada um dos pinos utilizados. 
 
 
Figura 16 - Definições dos pinos das portas do Arduino [16] 
 
Na memória do Arduino foi armazenada a lógica de programação responsável 
pelo controle do seguidor de linha. Através dela, o processamento dos sinais 
advindos dos sensores é realizado e desta forma ocorre a tomada de decisões. 
 
 
 
 
 
 
21 
 
4. RESULTADOS FINAIS 
Este projeto teve o intuito de experimentar uma programação em um robô 
para que este seguisse um traçado definido por uma fita de cor preta, com o restante 
do solo em cor branca. Através da ação conjunta dos sensores e atuadores, 
seguindo o algoritmo, o robô a todo o momento corrigiria sua trajetória de modo a 
seguir o traçado. 
Para programar no microcontrolador Arduino do robô, utilizamos o software 
próprio do Arduino, que dispões de uma biblioteca que o torna capaz de ser 
programado em diversas linguagens, como C ou C++. 
A programação apresentou alguns erros no decorrer da elaboração do 
trabalho, que faziam com que o microcontrolador não a entendesse, ou o robô 
apresentasse comportamento diferente do esperado, entre outros. No entanto, ao 
longo de dias, nos aprofundamos no assunto e fomos corrigindo um a um os erros 
presentes na programação, até atingir o objetivo. 
Optamos por utilizar o tipo de controle proporcional para guiar o seguidor de 
linha. Assim, as correções de sua trajetória seriam sempre proporcionais ao erro da 
posição do robô. Após vários testes, fomos definindo valores na programação que 
apresentassem um melhor resultado na prática. Adotamos para o ajuste da trajetória 
do robô a constante de proporcionalidade 3 que multiplica o sinal de erro. Desta 
forma, a correção sempre seria maior que o erro. Essas adaptações permitiram 
realizar as curvas com uma maior precisão. 
A alimentação do robô seguidor de linha, incialmente seria feita através de 
uma bateria de 9V, que por sua vez tinha tensão suficiente, mas o robô seguidor de 
linha não teria potência hábil para realizar as funções do algoritmo. Após vários 
testes escolhemos que para a alimentação do robô seguidor de linha a entrada USB 
do Arduino dispõe de potência suficiente para a alimentação dos motores, e por sua 
vez, o algoritmo. 
Como visto ao longo do trabalho, o movimento do robô se deu através dos 
sinais coletados dos sensores e da lógica de programação, que por sua vez, tem a 
função de realizar o controle dos atuadores, que são os motores. 
A tabela 1 a seguir mostra as situações às quais o robô foi submetido e como 
o motor reagiu a essas situações. 
 
 
22 
 
SENSORES DA 
ESQUERDA 
SENSORES DA DIREITA PWM DOS MOTORES 
LINHA 
1 
LINHA 
2 
LINHA 
3 
LINHA 
4 
LINHA 
5 
LINHA 
6 
ESQUERDA DIREITA 
1 0 0 0 0 0 -15 165 
1 1 0 0 0 0 0 150 
0 1 0 0 0 0 
15 135 
1 1 1 0 0 0 
0 1 1 0 0 0 30 120 
0 0 1 0 0 0 45 105 
0 0 1 1 0 0 
75 75 
0 0 0 0 0 0 
0 0 0 1 0 0 105 45 
0 0 0 1 1 0 120 30 
0 0 0 1 1 1 
135 15 
0 0 0 0 1 0 
0 0 0 0 1 1 150 0 
0 0 0 0 0 1 165 -15 
Tabela 1 - Variação do valor PWM em relação ao erro diagnosticado 
 
Para o PWM médio, após alguns testes, foi definido o valor 75. Os sensores 
estão definidos, da esquerda para a direita na visão superior do seguidor de linha, 
como: LINHA 1, LINHA 2, LINHA 3, LINHA 4, LINHA 5 e LINHA 6. 
O peso inicial de cada um dos motores foi estabelecido da seguinte forma: Os 
sensores LINHA 1 e LINHA 6, presentes na extremidades, têm um peso maior. Para 
estes, foi definido -30 e 30, respectivamente. Para os sensores LINHA 2 e LINHA 5, 
o peso é o correspondente a aproximadamente 66% do peso dos sensores das 
extremidades, totalizando -20 e 20, respectivamente. Para os sensores centrais, 
LINHA 3 e LINHA 4, estabeleceu-se o valor que corresponde a aproximadamente 
33% do peso dos sensores da extremidades, ou seja, -10 e 10, respectivamente. 
Pelo fato de se tratar de um controle proporcional, e tendo admitido uma constante 
de proporcionalidade entre o erro e o ajuste, sendo esse valor igual a 3, os valores 
de cada um dos sensores ficaram segundo mostra a tabela a seguir: 
23 
 
SENSORES DA ESQUERDA SENSORES DA DIREITA 
LINHA 1 LINHA 2 LINHA 3 LINHA 4 LINHA 5 LINHA 6 
-90 -60 -30 30 60 90 
Tabela 2 - Valores de ajuste de cada sensor. 
 
O valor do PWM dos motores é calculado somando-se o valor do ajuste, dado 
pela média aritmética entre os sensores que detectam algum sinal, ao valor doPWM 
médio, no caso do motor da esquerda, ou subtraindo o valor do ajuste do PWM 
médio, no caso do motor da direita. Quando todos os sensores têm sinal alto/baixo, 
o erro é sempre igual a 0, o que mantém uma trajetória retilínea do seguidor de 
linha. Matematicamente, fica da seguinte maneira: 
 
PWM esquerdo 𝑃𝑊𝑀𝑀 + 𝑎 (9) 
PMW direito 𝑃𝑊𝑀𝑀 − 𝑎 (10) 
 
Onde a é o ajuste de acordo com o erro coletado e PWMM é o valor do PWM médio. 
 
Desta forma é dado o ajuste para correção do erro do robô seguidor de linha, 
o que permite que ele siga o traçado sempre corrigindo sua rota. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24 
 
5. CONCLUSÕES 
O projeto apresentou resultado satisfatório. A partir de um sistema de malha 
fechada, dotado de controle, atuadores e sensores, foi possível realizar um 
programa com fim a colocar para funcionar um robô seguidor de linha. As 
simulações nos permitiram realizar ajustes e correções. O seguidor de linha realizou 
todos os percursos aos quais foi submetido de forma satisfatória, conseguindo 
realizar todas as curvas, inclusive de até 90º. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25 
 
6. REFERÊNCIAS BIBLIOGRÁFICAS 
[1] RIBEIRO, Marco Antônio. Automação Industrial, 3ºed. 
Tek Treinamento & Consultoria Ltda. Salvador – BA, 1999. 
[2] ARDUINO TUTORIAL PWM >https://www.arduino.cc/en/Tutorial/PWM< 
[3] MADEIRA, Daniel. Controlador proporcional. Julho, 2016. 
[4] Arduino, Introduction. Disponível em:< 
https://www.arduino.cc/en/Guide/Introduction>. Acesso em 25 de agosto de 2017. 
[5] Wikimedia, Disponível em:<https://commons.wikimedia.org/wiki/File:Arduino-uno-
perspective-whitw.jpg>. Acesso em 25 de agosto de 2017. 
[6] CEFET – FLORIANÓPOLIS – SC Prof. Valdir Noll. Disponível 
em:<http://www.cefetsc.rct-sc.br/vnoll/fotoscondutivos.pdf>. 
[7] Eletrônica, Volume 1 - Albert Paul Malvino. 
[8] Instituto Newton C Braga, Como testar fototransistores, 2014. 
[9] Laboratório de Eletricidade e Eletrônica , F. G. Capuano e M. A. M. Marino. Ed. 
Érica. 
[10] SIEMENS – Motor de corrente contínua edição 01.2006. 
[11] MERLIN, Victor Luiz, 2014. 
[12] SILEVIRA, Leonardo e LIMA, Weldson. Um breve histórico conceitual da 
Automação Industrial e Redes para Automação 
Industrial, maio de 2013. 
[13] http://roboticaufopa.blogspot.com.br/2014/06/introducao-ao-robo-seguidor-de-
linha.html. 
[14] http://www.mecatronicaatual.com.br/educacao/1027-encoders. 
[15] ANDRADE, Daniel Spillere, Projeto: Robô Seguidor de Linha, 2013. 
[16] SILVA, Kléber Lima, Micromouse_and_robotracer, janeiro de 2015. 
 
 
 
 
 
 
 
 
 
26 
 
ANEXO A - ALGORITMO 
/** 
 ***************************************************************** 
 * Arquivo umart_ino_seguidor_linha.ino 
 * Autor Kleber Lima da Silva (micromousebrasil@gmail.com) 
 * Versão V1.0.0 
 * Data 12-Maio-2015 
 * Resumo Programa de demonstração do Robô uMaRT-INO no modo 
 * robotracer (seguidor de linha) 
 ***************************************************************** 
 */ 
 
// Definição dos pinos no modo ROBOTRACER ------------------------ 
const int LINHA6 = A0; // Sensor de linha 6 (esquerda) 
const int LINHA5 = A1; // Sensor de linha 5 
const int LINHA4 = A2; // Sensor de linha 4 
const int LINHA3 = A3; // Sensor de linha 3 
const int LINHA2 = A4; // Sensor de linha 2 
const int LINHA1 = A5; // Sensor de linha 1 (direita) 
const int EMISSORES = 13; // LEDs dos sensores de linha 
const int LED1 = 0; // LED1 
const int LED2 = 1; // LED2 
const int B_ENC_E = 2; // Encoder do motor esquerdo (sinal B) 
const int A_ENC_D = 3; // Encoder do motor direito (sinal A) 
const int A_ENC_E = 4; // Encoder do motor esquerdo (sinal A) 
const int B_ENC_D = 5; // Encoder do motor direito (sinal B) 
const int PWM_E = 6; // PWM do motor esquerdo 
const int IN2_E = 7; // IN2 da ponte H do motor esquerdo 
const int IN1_E = 8; // IN1 da ponte H do motor esquerdo 
const int IN1_D = 9; // IN1 da ponte H do motor direito 
const int IN2_D = 10; // IN2 da ponte H do motor direito 
const int PWM_D = 11; // PWM do motor direito 
const int SW1 = 12; // Botão SW1 
 
// Constantes do controlador ------------------------------------- 
const float KP = 3; 
const int PWM_MEDIO = 75; 
 
// Definição das constantes do programa -------------------------- 
#define LINHA HIGH // LOW: linha branca | HIGH: linha preta 
#define INFINITO 255 // Para indicar que nenhum sensor leu linha 
27 
 
 
// Protótipos das funções ---------------------------------------- 
int lerSensoresLinha(void); 
void setMotores(int pwm_esquerda, int pwm_direita); 
 
// Variáveis ----------------------------------------------------- 
int erro = 0, erro_anterior = 0; 
int MV = 0; 
 
// Inicialização dos pinos --------------------------------------- 
void setup() 
{ 
 pinMode(LINHA6, INPUT); 
 pinMode(LINHA5, INPUT); 
 pinMode(LINHA4, INPUT); 
 pinMode(LINHA3, INPUT); 
 pinMode(LINHA2, INPUT); 
 pinMode(LINHA1, INPUT); 
 pinMode(EMISSORES, OUTPUT); 
 pinMode(LED1, OUTPUT); 
 pinMode(LED2, OUTPUT); 
 pinMode(PWM_E, OUTPUT); 
 pinMode(IN1_E, OUTPUT); 
 pinMode(IN2_E, OUTPUT); 
 pinMode(PWM_D, OUTPUT); 
 pinMode(IN1_D, OUTPUT); 
 pinMode(IN2_D, OUTPUT); 
 pinMode(SW1, INPUT); 
 
 // Aguarda o botão SW1 ser pressionado para ligar o robô 
 while(digitalRead(SW1) == LOW); 
 delay(1000); 
} 
 
// LOOP principal do programa ------------------------------------ 
void loop() 
{ 
 unsigned long t0; 
 
 // Registra o tempo inicial para garantir uma base de tempo fixa 
28 
 
 t0 = micros(); 
 
 // Verifica a leitura dos sensores 
 erro = lerSensoresLinha(); 
 if (erro == INFINITO) 
 { 
 erro = erro_anterior; 
 } 
 
 // Indica o estado dos sensores através dos LEDs 
 digitalWrite(LED1, LOW); 
 digitalWrite(LED2, LOW); 
 if (erro > 0) 
 { 
 digitalWrite(LED1, HIGH); 
 } 
 else if (erro < 0) 
 { 
 digitalWrite(LED2, HIGH); 
 } 
 else if (erro == 0) 
 { 
 digitalWrite(LED1, HIGH); 
 digitalWrite(LED2, HIGH); 
 } 
 
 // Controlador Proporcional 
 MV = KP * erro; 
 
 // Acionamento dos motores 
 setMotores(PWM_MEDIO + MV, PWM_MEDIO - MV); 
 
 // Aguarda 1 milisegundo (base de tempo do controlador) 
 while((micros() - t0) < 1000); 
} 
/* Função para leitura dos sensores de linha --------------------- 
 * Retorna valores entre -30 e 30 (valores negativos indicam que o robô precisa se deslocar para a 
esquerda) 
 */ 
int lerSensoresLinha(void) 
29 
 
{ 
 int erro = 0, soma = 0, n = 0; 
 unsigned long t0 = micros(); 
 
 // Habilita os emissores por 100 us 
 digitalWrite(EMISSORES, HIGH); 
 while((micros() - t0) < 100); 
 
 // Realiza a leitura de todos os sensores de linha. Os sensores 
 // das extremidades possuem peso maior. No final é realizada 
 // a média ponderada 
 if(digitalRead(LINHA1) == LINHA) 
 { 
 soma += -30; 
 n++; 
 } 
 if(digitalRead(LINHA2) == LINHA) 
 { 
 soma += -20; 
 n++; 
 } 
 if(digitalRead(LINHA3) == LINHA) 
 { 
 soma += -10; 
 n++; 
 } 
 if(digitalRead(LINHA4) == LINHA) 
 { 
 soma += 10; 
 n++; 
 } 
 if(digitalRead(LINHA5) == LINHA) 
 { 
 soma += 20; 
 n++; 
 } 
 if(digitalRead(LINHA6)== LINHA) 
 { 
 soma += 30; 
 n++; 
30 
 
 } 
 
 // Desabilita os emissores 
 digitalWrite(EMISSORES, LOW); 
 
 // Retorna a média ou retorna a constante INFINITO indicando 
 // que nenhum sensor leu linha 
 if(n != 0) erro = soma / n; 
 else erro = INFINITO; 
 
 return erro; 
} 
 
/* Função para acionamento dos motores --------------------------- 
 * pwm_esquerda e pwm_direita recebem valores entre -255 e 255 
 * (valores negativos giram o respectivo motor para trás) 
 */ 
void setMotores(int pwm_esquerda, int pwm_direita) 
{ 
 if(pwm_esquerda < 0) 
 { 
 pwm_esquerda = -pwm_esquerda; 
 
 digitalWrite(IN1_E, LOW); 
 digitalWrite(IN2_E, HIGH); 
 } 
 else 
 { 
 digitalWrite(IN1_E, HIGH); 
 digitalWrite(IN2_E, LOW); 
 } 
 
 if(pwm_direita < 0) 
 { 
 pwm_direita = -pwm_direita; 
 
 digitalWrite(IN1_D, LOW); 
 digitalWrite(IN2_D, HIGH); 
 } 
 else 
31 
 
 { 
 digitalWrite(IN1_D, HIGH); 
 digitalWrite(IN2_D, LOW); 
 } 
 
 if(pwm_esquerda > 255) pwm_esquerda = 255; 
 if(pwm_direita > 255) pwm_direita = 255; 
 
 analogWrite(PWM_E, pwm_esquerda); 
 analogWrite(PWM_D, pwm_direita); 
}

Mais conteúdos dessa disciplina