Escolar Documentos
Profissional Documentos
Cultura Documentos
Robo Seguidor de Linha
Robo Seguidor de Linha
Site: www.robotizando.com
Email: Miojex360@hotmail.com
Concluso.......................................................................................................................... 31
Bibliografia ........................................................................................................................ 32
Introduo
Com a revoluo industrial e com o surgimento de um mercado competitivo a vida das
pessoas comeou a ser facilitado por diversos utenslios que so produzidos o tempo
todo, com passar do tempo a demanda foi aumentando esse fato comeou a estimular
os detentores do capital a investir em tecnologia, agora as indstrias eram equipadas
com rob que poderiam ser controlados pelo homem, hoje em dia existe algo muito
mais avanado, a inteligncia artificial, mtodo utilizado para que um dispositivo tenha
aes com embasamento no seu ambiente, um rob interage com ambiente atravs
de atuadores que no caso seria uma garra, por exemplo, ele consegue detectar o
ambiente atrs de sensores, por exemplo, um LDR 1, esse trabalho vai demonstrar
teoricamente a montagem de um carro capaz de seguir uma linha e de detectar um
objeto de dimenses especficas para depois desviar, o carro ser montado com
diversos sensores e apenas um tipo de atuador, o conhecimento para montagem desse
carro foi obtido de forma fragmentada ao longo de um ano e meio, muitas tcnicas
foram desenvolvidas pelo autor desse trabalho bibliogrfico, outras foram conseguidas
ao longo do ano no laboratrio de robtica da escola ferreira Viana 2 junto ao
orientador Cesar Bastos e colegas de equipe.
Light Dependent Resistor, Resistor que varia sua resistncia na presena da luz, sua composio
qumica permite ter uma capacidade de diminuir sua resistncia na presena da luz
2
O laboratrio de robtica da escola ferreira Viana tem suas atividades as quintas feiras das 18h30min
ate 20h30min tera no mesmo horrio para desenvolvimento de projetos dos veteranos
Objetivo geral
O rob deve seguir um algoritmo que harmonize todos os sensores, o rob e
estruturado da seguinte forma em cima temos um micro controlador da atmel ao lado
de um motor servo que orienta um sensor ultra-snico no meio temos um drive que
controla os motores em baixo temos um motor ao ladeado por dois sensores de luz, o
carro vai identificar a intensidade luminosa que esta em baixo dele a partir desses
dados feito um calculo para determinar as propriedades da superfcie que ele se
encontra, a cor, textura, ate mesmo a altura que ele se encontra, a partir destes
princpios o carro pode seguir uma linha preta no cho desde que o cho seja
totalmente branco, ou pode seguir uma linha branca desde que o cho seja totalmente
preto, o carro possui um sensor que capaz de detectar objetos de ate 6 metros de
distancia.
Objetivo especfico
O rob deve de forma totalmente autnoma seguir uma linha preta em uma pista
especifica para esse tipo de projeto, nessa pista vai existir um obstculo que deve ser
detectado e desviado depois disso o rob vai tentar localizar a linha para completar o
percurso, para execuo dessas tarefas os sensores sero orientados pelo uso de um
micro controlador que far os clculos e fornecer pulsos para dar inicio aos atuadores,
o micro controlador programvel em linguagem C/C++, a tcnica de programao
tem embasamento em inteligncia artificial.
Apresentao do material
Arduno
3
Apresentao do Arduno: uma placa micro-controladora baseada no microcontrolador ATmega 328. Ela tem 14 Pinos Input/output digitais, 6 entradas analgicas,
um boto de reset. Ele contm tudo que necessrio para o suporte do Microcontrolador, Ligando-a simplesmente a um computador atravs de um cabo USB, ou
alimentando-o com um Adaptador AC/AD (ou baterias 9V) para dar a partida.
Especificaes do hardware
Micro-controlador
Tenso de funcionamento
Tenso de entrada (recomendado)
Tenso de entrada (limites)
Pinos E/S Digitais
Pinos de Entrada Analgicos
Corrente DC por pino E/S
Corrente DC por pino 3.3V
Memria Flash
SRAM
EEPROM
ATmega328
5V
7-12V
6-20V
14 (dos quais 6 so sadas PWM)
6
40 mA
50 mA
32KB
2Kb
1KB
O Arduno vem com um bootloader que permite enviar novos programas sem o uso
de um programador de hardware externo. Ele se comunica utilizando o protocolo
original STK500 (referncia, C Header file). Tambm poder-se- programar o
ATmega328 atravs do ICSP (in-Circuit Serial Programming) header;4
Memria
O ATmega tem 32KB de memria flash para armazenar o cdigo ( dos quais 2KB so
utilizados pelo bootloader), alm de 2 KB de SRAM e 1 KB de EEPROM (electricallyerasable programmable Read-Only memory), quepode ser lida e escrita atravs da
biblioteca EEPROM.
Comunicao
Com o Arduno, a comunicao com um computador, com outro Arduno ou com
outros micro-controladores muito simplificada. O ATmega328 permite comunicao
srie no padro UART TTL (5V), que est disponvel nos pinos digitais 0 (RX) e 1 (TX).
3
Texto extrado da revista Saber eletrnica; Ano 47; n454-2011; Editora Saber LTDA pginas 12 a 15.
Autor Filipe pereira
4
Embasamento retirado da apostila da PET auto net autor: Micael bronzatti
Um chip FTDI FT232RL na placa encaminha esta comunicao srie atravs do USB e os
drives FTDI (includo no software do Arduno) fornecem uma porta COM virtual para o
software no computador. O software Arduno inclui um monitor srie que permite que
dados simples de texto sejam enviados placa Arduno.
Veja a aparncia fsica do Arduno.
Programao
A programao em C/C++ e estruturada em condicionais (if,else,for,while,do
while,swith) o Arduno j vem com uma biblioteca com funes como DigitalWrite
DigitalRead (escrever e ler sinais digitais), A programao ser mais detalhada no
tpico programao Estrutura lgica
Sensor Shield
Com a fama do Arduno comeou a produo de placas que mais tarde foram
chamadas de Shield, tais placas so encaixadas perfeitamente no Arduno para
aumentar a capacidade e a funcionalidade o mesmo, o sensor facilita o acesso as
portas e fornece um pino de VCC (5v) e pino GND (terra) para as portas digitais, para
as portas analgicas temos uma entrada especifica para sensores (trs pinos )
Sinal,vcc,gnd agora essa placa fornece terra e vcc para suprir grandes projetos como
esse que usa diversos sensores.
Sensor Ultrassnico
O ultra-som um som, uma onda de presso com uma freqncia maior do que o
limite superior audio humana, no H muitos sons na faixa Ultra podemos
aproveitar uma propriedade da onde muito interessante. Quando emitimos uma onda
para um local caso haja um obstculo ela pode sofrer uma reflexo e voltar, veja a
figura5
Ento para simular calcular a distancia em que uma parede esta de voc, preciso
saber a velocidade do som tempo da emisso e o momento da captao a partir de
um calculo pode-se determinar a distancia de um objeto, para simular esse evento
com ultra-som usamos um emissor snico junto com um receptor
Agora a parte que de fato interessa, ou voc monta um circuito para amplificar os
sinais e toda parafernlia que esse circuito vai precisar ou simplesmente compra
Vcc: tenso 5V
TRIG: comunicao
ECHO: comunicao
GND : Terra
As especificaes mais precisas do funcionamento sero explicadas em outro tpico
que fala sobre a programao.
Sensor de linha
10
Drive Motor
E bem difcil imaginar um rob que no tenha motor ou alguma forma de se
locomover, nesse projeto utilizamos 4 motores normais que funcionam um uma
tenso de 3V seu torque aumenta de acordo com a corrente ate certos limites
desconhecidos nesse projeto, nesse projeto e muito interessante o controle do motor
tanto para um sentido quanto para outro, esse problema pode ser controlado
utilizando um mtodo de chaveamento de transistores, esse mtodo e conhecido
como Ponte H 6
Esse simples circuito resolve nosso problema porem apenas para um motor, existem
outros fatores que complicam que incentiva a procura por uma nova sada de fato
existe duas alternativas uma e totalmente invivel seria a utilizao de rels a outra
seria usar um CI para essa funcionalidade, hoje em dia existem muitos, vamos usar
nesse projeto L298N esse CI nos permite controlar dois motores, ou seja, cada Ci tem
duas pontes H internas, veja os pinos
11
12
Pronto agora sim temos um drive que controle nossos motores, porem para o melhor
desempenho vamos usar um modulo que contem tudo Isso em SMD resistores de 1%
de preciso fusvel e reguladores tambm contem um Dissipador de calor . Veja a
imagem
13
14
Motor Servo
Para mover o rob usamos um motor comum, porem para controlar o movimento do
sensor ultrassnico precisamos de um motor que mapeie o movimento seu
movimento, infelizmente o moto servo no faz isso porem ele possibilita o movimento
em graus em certos limites (180) assim temos podemos mover o motor para ambos
os lados sem muito problema tanto para um sentido quanto para outro, o motor servo
contem uma ponte H interna, tambm existe um jogo de engrenagem denominada
Caixa de reduo que fornece uma vantagem mecnica ao movimento final do motor,
ou seja, temos um motor com mais torque (fora) veja um motor servo internamente
Existe um protocolo de comunicao que desconheo para esse tipo de motor, porem
existe uma biblioteca que facilita essa comunicao o motor servo utilizado esse
15
Alimentao
O Arduno precisa de uma alimentao prpria, o drive motor tambm assim como
todos os sensores e como qual quer componente eletrnico nesse projeto vamos ter 2
alimentaes e talvez uma terceira em caso de necessidade de potencia
Suporte para bateria (alimentao do Arduno)
16
Montagem do rob
Alimentao:
Pino Vin. alimentao do Arduno
Drive motor
Sensor de Cor A
Sensor de Cor B
Ultrassnico
Ligaes digitais
Ligao
~~ sem ligao ~~
~~ sem ligao ~~
~~ sem ligao ~~
Controle do motor para frente A
Controle do motor para trs A
Controle do Motor Servo
TRIG Pino do sonar
Controle do motor para frente B
Controle do motor para trs B
ECHO pino do sonar
Sensor ptico da Esquerda
~~ sem ligao ~~
~~ sem ligao ~~
Terra do drive motor
Suplemento de energia lgica (5v)
Bateria 9V
~~ sem ligao ~~
Motor 1 E 2
Motor 3 E 4
9V (bateria)
9V (6 pilhas)
5V (pino sensor shield)
5V (pino sensor shield)
5V (pino sensor shield)
Observaes:
Essa imagem foi retirada do site dealextreme, um site de venda de equipamentos importados, foi
nesse site que fiz a compra de todos os equipamentos para esse projeto
17
Todas as ligaes foram feitas utilizando cabos Jump, o cabo tem uma entrada que
entra perfeitamente nos sensores no drive e no Arduno, ou seja, esse cabo padro
Estrutura:
O rob tem dois andares so conectados por parafusos (espaadores) cerca de 5 cm de
distancia entre um e outro no meio fica o drive do motor os mores so presos por um
suporte de alumnio que e preso por dois parafuso com porcas, so 4 motores.
18
19
20
8
9
21
Funcionamento da IDE
Cada parte da ide tem uma funo veja a ilustrao abaixo
Estrutura da linguagem
Varivel:
Antes de falar de variveis costume meu antes de explicar uma linguagem de
programao por trabalho escrito dar um HELLO WORD bom como o Arduno no
tem propriamente um lugar para Exibir essa mensagem temos que usar um artifcio
ento vamos ficar com Serial.print(HELLO WORD);
Variveis so como gavetas que tem a funo de guardar dados, as variveis guardam
dados na memria do micro-processador, para declarar uma varivel voc precisa
dizer o tipo dela se e um numero ou carter ou um dado booleano depois dar um
nome a ela desde que o primeiro carter seja uma letra e no tenha espaos, depois
22
Estruturas de controle
Estrutura de controle e responsvel por guiar o cdigo para com alguma orientao
IF () { }
If uma condicional dentro dos () fica um teste lgico feito a partir de operadores
um assunto que no vou poder detalhar nesse trabalho. Veja a imagem
23
o if faz uma pergunta a condio se ela for verdadeira executa o que esta dentro das
chaves caso no for essa estrutura e pulada
If (condio) {
corpo
}
Para complementar essa condio existe ELSE que executa caso a condio no seja
verdadeira
If (condio) {
executa aqui se a condio
for verdadeira
} ELSE {
executa aqui caso a condio
for falsa
}
Estrutura de repetio:
o for e uma estrutura com que gera uma repetio controlada veja a sintaxe
For (iniciao;Condio;incremento)
{
comandos a serem repetidos
}
24
Bibliotecas:
Biblioteca no mundo da programao representa uma Class, e class uma estrutura
que agrupa funes nesse trabalho usamos a biblioteca para controlar o Sonar e o
moto servo, o Arduno possui milhares de class preparadas para da suporte a todo tipo
de equipamento, alem de facilitar o uso de class tambm simplifica o cdigo, hoje em
dia o uso de class e to importante que recebeu ate um nome, Programao orientada
a objeto, esse nome bem impactante no mercado, muita gente fica boba quando
ouve falar de POO.
Conexo:
muito importante mencionar que o Arduno pode fazer uma comunicao serial o
cdigo para fazer essa tarefa e atravs de uma biblioteca chamada Serial com esse
recurso se torna possvel analisar os dados que so obtidos pelo dispositivo pelo
computador, dessa forma facilitando a analise o projeto fica mais fcil de ser
construdo e elaborado.
Interao ambiente X programao:
Essa interao se baseia na seguinte teoria, atravs de sensores no ambiente o rob
toma executa aes atravs de atuadores, esse o principio da inteligncia artificial
nosso rob usa a programao para comparar situaes e tomar uma atitude, por
exemplo, caso houver um obstculo desvie se no tiver seguir reto a partir de
diversas dedues lgicas o algoritmo chega a possuiu uma espcie de inteligncia
artificial, inteligncia artificial algo muito mais complicado do que parece, eu j fiz
alguns projetos voltados inteligncia artificial porem no tive muito sucesso, esse
projeto, por exemplo, seqencial, pois segue uma regra e caso essa regra no exista
ele se desorienta e no procura resolver o problema, um exemplo, um rob seguidor
de linha segue uma linha preta e o cho e branco, se eu pudesse inverter isso o cho
preto e a linha branca, o rob se perderia na mesma hora entre tanto um rob com
inteligncia artificial poderia bolar um meio atravs de seu prprio algoritmo para
tentar entender a situao e talvez compreender que pode inverta a ordem seguir a
linha branca ao invs da preta.
25
Programao do carro
A varivel vel e responsvel pelo controle da velocidade com que o carro faz uma curva
e tempo1 o intervalo de tempo em mile segundos que ele vai fazer a curva na
velocidade vel, Servo motor e utrasonic so bibliotecas usadas no programa.
26
2)Funo Move
o rob se locomove atravs de 4 motores que so ligados em em pares (em paralelo)
para que funcione bolei o seguinte funo move(); essa funo tem 4 argumentos que
simbolizam o chaveamento do drive por exemplo Move(255,0,255,0); moveria o meu
motor a velocidade mxima para frente, veja dessa maneira Move(velocidade A para
frente, Velocidade A para trs,Velocidade B para frente,velocidade B para trs); essa
funo foi montada com a estrutura abaixo.
27
Script da funo
void linha () {
if (digitalRead(SED)==1){ //esquerda
move(vel,0,0,vel);
delay(tempo1);
Serial.print("esquerda");
Serial.println("\n");
Serial.println(digitalRead(SED));
}
else if (digitalRead(SEE)==1){ //direita
move(0,vel,vel,0);
delay(tempo1);
Serial.print("direita");
Serial.println("\n");
Serial.println(digitalRead(SEE));
}
Serial.print("seguindo para frente");
Serial.println("\n");
move(150,0,150,0);
delay(10);
}
4) Detector de Obstculos
Alm de seguir linha nosso rob e ser capaz de detectar um obstculo e desviar para
isso ele usei um motor servo para mover o sonar que faz a leitura em centmetros dos
objetos ao redor, existe uma rotina chamada loop que vamos detalhar em outro
tpico que faz a verificao constante da possibilidade de existir um obstculo, a
funo que detecta obstculo tem o nome de pedra, depois que o algoritmo j estiver
certo que h um obstculo a funo pedra vai virar o servo para esquerda e para
direita para verificar qual lado e disponvel para passar depois disso ele escolhe o lado
que estiver livre, caso os dois estejam livre ele vai para direita por padro, para o
funcionamento adequado do sensor existe um tempo de espera para executar o
movimento do motor, o motor servo gira em graus, 90 -> mirado para frente, 0,
esquerda ,180 Direita , veja o script na prxima pagina.
28
5)preparao
Antes de fato de executar o script preciso fazer uma preparao, para por exemplo
posicionar o sonar declarar entradas e algumas portas
void setup () {
pinMode(SED,INPUT);
pinMode(SEE,INPUT);
Serial.begin(9600);
motor.attach(8);
motor.write(90);
delay(500);
}
29
6)rotina de repetio
Finalmente a parte final, ate ento s declarei e preparei o programa de fato, agora o
programa vai entra em uma rotina infinita, nessa parte o programa vai organizar a
cadeia de eventos
void loop () {
linha();
if (OurModule.Ranging(CM) < 15) {
delay(200);
if (OurModule.Ranging(CM) < 15) {
pedra();
}
}
}
Nessa ultima parte h um teste para ver se existe obstculo, para ter certeza que no
haja uma interferncia momentnea (caso o sonar detectar um obstculo sem de fato
existir) o algoritmo far um segundo teste e s assim executara a funo pedra.
30
Concluso
Esse trabalho possibilitou a analise de dados de diversas reas que a robtica atua.
Eletrnica:
Houve diversos problemas com uso de baterias o Arduno consome muito em poucos
minutos uma bateria normal de 9V no consegue mais da suporte ao rob, isso se
deve pelo fato de ter N sensores drives entre outras coisas alimentadas pelo Arduno.
Fsica:
As rodas de borracha causam muito atrito com o cho, isso se torna um problema na
hora de fazer curvas, outra analise interessante com os sensores, a distancia dos
sensores com o cho e determinante para a preciso do sensor.
Programao:
preciso muita organizao no cdigo, pois o cdigo e constantemente alterado por
isso e importante desenvolver funes em forma de diagrama, pois caso uma parte
no funcionar, assim podemos ir direto ao erro e conserta sem a necessidade de
analisar todo o cdigo, estruturar com base em objetos e referencias aumentou
bastante a velocidade de processamento do programa.
31
Bibliografia
Bronzatti,AutoNet,Aprendendo a programar em Arduno,realizao PET
Marshall Brain. "HowStuffWorks - Como funciona a programao em C". Publicado
em 01 de abril de 2000 (atualizado em 14 de maio de 2008)
http://informatica.hsw.uol.com.br/programacao-em-c.htm (26 de julho de 2012)
SOAREZ, R. Curso de robots moviles. Universidad Carlos III de Madrid, Nov. 1999.
WALLNER, F., AND DILLMANN, R. Real-time map refinement by use of sonar and
active stereo-vision. Robotics and Autonomous Systems, 16 (1995), 4756.
32