Escolar Documentos
Profissional Documentos
Cultura Documentos
CURITIBA
2015/2
2
CURITIBA
2015/2
3
......................................................................
Coordenador (a) do Curso
.......................................................................
Professor Orientador
........................................................................
Professor da Banca Examinadora
........................................................................
Professor da Banca Examinadora
4
AGRADECIMENTOS
RESUMO
ABSTRACT
A mobile robot may be used for performing tasks in certain media without the
need for a person exposed to these environments. With a study of techniques of
navigation and location, the project is to develop a mobile platform to follow a certain
path guided by ultrasound sensors, encoders and digital compass so that it moves,
and send your position to your computer via Bluetooth where is located the operator.
The purpose of this study aims at positioning and efficient control for mobile robots,
by a microcontroller programming that controls the system, tracing routes, collecting
data and sending them for this information to be stored and recalled later.
LISTA DE ILUSTRAÇÕES
Figura 1 – Triangulação..............................................................................................19
Figura 2 – Representação do filtro de Kalman...........................................................20
Figura 3 – Localização...............................................................................................23
Figura 4 – Diagrama de pinos microcontrolador AVR ATMEGA328P.......................25
Figura 5 – Diagrama de pinos microcontrolador PIC 16F877A..................................26
Figura 6 – Diagrama de pinos PIC18F4550...............................................................27
Figura 7 – Sensor Infravermelho GP2Y0A02YK0F da Sharp....................................29
Figura 8 – Sensor a laser E3Z da OMRON................................................................29
Figura 9 – Funcionamento prático do sensor ultrassônico.........................................31
Figura 10 – Sensor ultrassônico HC-SR04 da ElecFreaks........................................32
Figura 11 – Sensor encoder ótico HOA0901 da Honeywell.......................................33
Figura 12 – IMU GY-80..............................................................................................34
Figura 13 – Triangulação realizada pelo GPS............................................................37
Figura 14 – Motor de corrente contínua.....................................................................38
Figura 15 – Circuito utilizando transistores como chaves..........................................39
Figura 16 – Diagrama de blocos L298.......................................................................40
Figura 17 – Ciclos de PWM em aproximadamente 50%............................................41
Figura 18 – Ciclos de PWM em aproximadamente 25% ...........................................41
Figura 19 – Principais tipos de rodas: a) padrão; b) castor; c) sueca; d) esférica.....48
Figura 20 – Principais tipos de arranjos de rodas e legendas...................................49
Figura 21 – Webots....................................................................................................53
Figura 22 – V-REP.....................................................................................................54
Figura 23 – SuperLogo...............................................................................................55
Figura 24 – Diagrama das portas utilizadas...............................................................57
Figura 25 – Diagrama de blocos dos dispositivos eletroeletrônicos..........................58
Figura 26 – Placa microcontrolada com o PIC 16F877A...........................................59
Figura 27 – Disco usado com o sensor óptico...........................................................60
Figura 28 – Módulo com bússola HMC5883L da Honeywell......................................60
Figura 29 – Testes com a bússola.............................................................................60
Figura 30 – Disposição da bússola digital HMC5883L no protótipo...........................62
Figura 31 – Motor DC com redução acoplada............................................................63
Figura 32 – Ponte H com transistores em placa de circuito impressa.......................64
9
LISTA DE TABELAS
SUMÁRIO
1 INTRODUÇÃO........................................................................................................15
1.1 OBJETIVOS.........................................................................................................16
1.1.1 Objetivo geral..................................................................................................16
1.1.2 Objetivos específicos.....................................................................................16
1.2 JUSTIFICATIVA...................................................................................................16
1.3 METODOLOGIA...................................................................................................17
2. REFERENCIAL TEÓRICO....................................................................................18
2.1 ROBÓTICA MÓVEL.............................................................................................18
2.2 LOCALIZAÇÃO E NAVEGAÇÃO.........................................................................18
2.2.1 Planejamento de rota......................................................................................18
2.2.2 Técnicas para localização..............................................................................19
2.2.2.1 Triangulação...................................................................................................19
2.2.2.2 Filtro de Kalman.............................................................................................19
2.2.2.3 Localização baseada em Landmarks.............................................................20
2.2.2.4 Dead reckoning e odometria..........................................................................21
2.2.3 Tipos de Navegação........................................................................................22
2.2.4 Navegação com base na localização.............................................................23
2.3 ELETROELETRÔNICA........................................................................................24
2.3.1 Microprocessador e microcontrolador..........................................................24
2.3.1.1 Microcontroladores AVR.................................................................................25
2.3.1.2 Microcontroladores PIC..................................................................................26
2.3.2 Sensores..........................................................................................................28
2.3.2.1 Classificação dos sensores............................................................................28
2.3.2.2 Sensor infravermelho.....................................................................................29
2.3.2.3 Sensor a laser................................................................................................29
2.3.2.4 Sonar..............................................................................................................30
2.3.2.5 Encoder..........................................................................................................32
2.3.2.6 IMU.................................................................................................................34
2.3.2.6.1 Acelerômetro...............................................................................................35
2.3.2.6.2 Giroscópio...................................................................................................35
2.3.2.6.3 Magnetômetro.............................................................................................36
2.3.2.7 GPS................................................................................................................36
13
2.3.3 Motor.................................................................................................................37
2.3.4 Controle dos motores.....................................................................................39
2.3.4.1 Sentido de rotação.........................................................................................39
2.3.4.2 Controle de velocidade..................................................................................40
2.3.5 Alimentação.....................................................................................................42
2.3.6 Interfaces.........................................................................................................43
2.3.7 Bluetooth..........................................................................................................43
2.4 MECÂNICA .........................................................................................................44
2.4.1 Tipos de materiais para confecção da plataforma.......................................44
2.4.1.1 Aço carbono...................................................................................................44
2.4.1.2 Aços com baixo teor de carbono....................................................................45
2.4.1.3 Aços com médio teor de carbono...................................................................45
2.4.1.4 Aços com alto teor de carbono.......................................................................46
2.4.1.5 Aços inoxidáveis.............................................................................................46
2.4.1.6 Plásticos.........................................................................................................46
2.4.2 Locomoção......................................................................................................47
2.4.2.1 Tipo de rodas..................................................................................................47
2.4.2.2 Disposições das rodas...................................................................................48
2.5 COMPUTAÇÃO ...................................................................................................50
2.5.1 Programação....................................................................................................50
2.5.2 Comunicação...................................................................................................51
2.5.2.1 Comunicação serial assíncrona e síncrona....................................................52
2.5.2.2 Protocolo I2C..................................................................................................52
2.5.3 Simuladores para robôs móveis....................................................................53
2.5.3.1 Webots...........................................................................................................53
2.5.3.2 V-REP............................................................................................................54
2.5.3.3 O ambiente SuperLogo e a Linguagem Logo................................................54
2.5.4 Fluxograma......................................................................................................56
3 DESENVOLVIMENTO............................................................................................57
3.1 DESENVOLVIMENTO ELETRO-ELETRÔNICA .................................................57
3.1.1 Microcontrolador.............................................................................................57
3.1.2 Sensores..........................................................................................................59
3.1.3 Motores.............................................................................................................63
3.1.3.1 Controle dos motores.....................................................................................63
14
3.1.4 Interface...........................................................................................................64
3.1.5 Alimentação.....................................................................................................65
3.2 DESENVOLVIMENTO MECÂNICO ....................................................................65
3.2.1 Rodas...............................................................................................................65
3.2.2 Escolha do material........................................................................................66
3.2.3 Layout da plataforma......................................................................................66
3.2.4 Ambiente de atuação do robô........................................................................68
3.3 DESENVOLVIMENTO COMPUTACIONAL ........................................................69
3.3.1 Locomoção......................................................................................................69
3.3.2 Localização......................................................................................................71
3.3.2.1 Leitura dos Sonares.......................................................................................71
3.3.2.2 Programação dos encoders...........................................................................72
3.3.2.3 Leitura da bússola..........................................................................................74
3.3.2.4 Display LCD como interface...........................................................................75
3.3.2.5 Bluetooth........................................................................................................75
3.3.3 Fluxograma de funcionamento .........................................................................76
4 CONCLUSÃO.........................................................................................................78
REFERÊNCIAS..........................................................................................................79
15
1 INTRODUÇÃO
1.1 OBJETIVOS
Este trabalho tem como objetivo geral estudar, pesquisar, projetar e construir
o protótipo de um robô, capaz seguir rotas estipuladas com base em sua
localizaçãodentro de um ambiente indoor.
1.2 JUSTIFICATIVA
1.3 METODOLOGIA
2. REFERENCIAL TEÓRICO
Robôs móveis são robôs que podem se mover de um lugar para outro de
forma autônoma, isto é, sem a ajuda de operadores humanos externos. Ao contrário
da maioria dos robôs industriais que podem se mover apenas em um espaço de
trabalho específico, robôs móveis têm a particularidade de se movimentar livremente
dentro de um espaço de trabalho pré-definido para atingir seus objetivos desejados.
Esta capacidade de mobilidade os torna adequados para um grande repertório de
aplicações em ambientes estruturados e não estruturados (TZAFESTAS, 2014).
Sendo a robótica um ramo da tecnologia que alia todas as áreas envolvidas
em mecatrônica, ou seja, a mecânica, a eletroeletrônica e a computação, e que é
responsável pelo estudo, construção e concepção de sistemas robóticos, a robótica
móvel se diferencia basicamente pela mobilidade e pela autonomia.
2.2.2.1 Triangulação
Figura 01 – Triangulação
que lugares distintos podem parecer similares, o que leva a erros de localização.
Este problema é conhecido como percepção ambígua e ocorre em ambientes com a
aparência homogênea, como escritórios e laboratórios (ODAKURA, 2007).
Figura 03 – Localização
2.3 ELETROELETRÔNICA
com periféricos (LEDS, botões, sensores ou até outro PIC). É daí que vem o nome
PIC (Peripheral Integrated Controller, ou controlador integrado de periféricos). Um
microcontrolador, diferentemente de um microprocessador, possui memória volátil
(RAM) e não volátil (EEPROM), além de outros periféricos internos, o que o torna
bastante útil. Ele é capaz de operar independente de memórias externas, além de
poder ser programado em linguagem de alto nível, como a linguagem C (PEREIRA,
2002).
No projeto foi utilizado um microcontrolador PIC 16F877A de 8 bits. A
frequência de operação desse chip pode chegar até 20MHz, e possui um
encapsulamento do tipo DIP com 40 pinos.
2.3.2 Sensores
Sensores Laser também são conhecidos como Ladar (Laser Detection and
Ranging), seu funcionamento é similar ao ultrassônico, com o diferencial do tipo de
energia emitido para o ambiente, nesse caso, a luz. A energia do laser é emitida
numa sequência de pulsos rápidos e curtos que vão diretamente ao objeto a ser
detectado. O tempo necessário para que o laser emitido chegue ao objeto e retorne
é usado para calcular a distância através da velocidade da luz. A resolução para
esse tipo de sensor varia desde centímetros a metros, ao longo de uma extensa
gama de modelos (EVERETT, 1995).
2.3.2.4 Sonar
2.3.2.5 Encoder
2.3.2.6 IMU
2.3.2.6.2 Giroscópio
2.3.2.6.3 Magnetômetro
2.3.2.6.4 GPS
2.3.3Motor
2.3.4.2Controle da velocidade
O sinal PWM consiste num sinal de frequência fixa em que é variado o ciclo
ativo da onda, conhecido como duty cycle. É muito utilizado no controle de potência
(fonte chaveadas, controles de velocidade, etc.) (PEREIRA, 2002).
2.3.5 Alimentação
2.3.6 Interfaces
2.3.7 Bluetooth
2.4 MECÂNICA
São aqueles aços que têm de 0,25 a 0,76% de carbono na sua composição.
Possuem como características básicas: limite de escoamento da ordem de 450 (45
kg/mm²) Mpa e limite de resistência à tração em torno dos 650 MPa (65 kg/mm²),
boa ductilidade, tenacidade e boa soldabilidade. Algumas aplicações típicas para os
aços de médio carbono são: rodas e trilhos ferroviários, engrenagens, chapas para
tubos, vasos e tanques, peças para máquinas resistentes à abrasão, componentes
estruturais de alta resistência e vergalhões para construção civil. Os aços de médio
carbono são disponíveis principalmente em perfis laminados a quente, chapas em
bobinas laminadas a quente e chapas médias e grossas laminadas a quente
(NUNES, 2012).
ductilidade. Algumas aplicações típicas para os aços de alto carbono são: matrizes,
ferramentas, lâminas de serras, molas, peças para máquinas altamente resistentes à
abrasão, componentes estruturais de alta resistência, os aços de alto carbono são
disponíveis principalmente em tarugos para fundição e forjamento (NUNES, 2012).
São conhecidas como aços inoxidáveis de ligas ferrosas, com teor de carbono
na faixa dos aços comuns e teores de cromo de 12 a 26, podendo ter níquel até 22%
e eventualmente molibdênio. Os aços inoxidáveis podem ser classificados em: Aços
inoxidáveis austeníticos, que são ligas de Fe-Cr- Ni, Aços inoxidáveis ferríticos, que
são ligas de Fe-Cr com baixo teor de carbono. Aços inoxidáveis martensíticos, que
são ligas de Fe-Cr com maior teor de carbono, Aços inoxidáveis duplex (ferrítico -
austenítico), que são ligas de Fe-Cr-Ni e Mo, com baixo teor de carbono (NUNES,
2012).
Algumas aplicações típicas para os aços inoxidáveis são: tubos e
componentes de alta resistência à corrosão, chapas para tubos, vasos e tanques,
componentes estruturais de alta resistência à corrosão, turbinas a gás, caldeiras
para altas temperaturas, fornos para tratamento térmico, aeronaves e mísseis,
unidades geradoras de energia nuclear, utensílios domésticos resistentes à
corrosão, como, por exemplo, talheres, panelas, etc (NUNES, 2012).
2.4.1.6 Plásticos
2.4.2 Locomoção
necessário que o centro de massa do mesmo esteja abaixo do eixo das rodas.
Alguns robôs são omnidirecionais, ou seja, podem se mover a qualquer momento
para qualquer direção, independentemente de sua orientação em relação ao seu
eixo vertical. Esse grau de manobrabilidade exige rodas que possam se mover em
mais de uma direção, e por isso robôs omnidirecionais normalmente possuem rodas
suecas ou esféricas que são tracionadas. Em geral existe uma relação inversamente
proporcional entre a controlabilidade e a manobrabilidade, nos necessitamos de um
grau de processamento significativo para converter as rotações e translações de
cada roda em um valor desejado para a movimentação do robô como um todo. Além
disto, os arranjos omnidirecionais possuem elevados números de graus de
liberdade. Por exemplo, a roda sueca possui um arranjo de rolamentos livres em
torno do perímetro da roda. Esses graus de liberdade causam uma acumulação de
possibilidades de derrapagem, tendendo a reduzir a precisão do movimento e
aumentar a complexidade do projeto (SIEGWART; NOURBAKHS; SCARAMUZZ,
2011).
Para a seleção dos tipos de rodas e sua configuração de geometria no chassi
existem muitas variações das disposições, como mostradas na figura 22, e a partir
destas foi definido como sendo a melhor opção para nosso projeto, o arranjo com
três rodas, sendo duas do tipo padrão tracionada e uma multidirecional castor não
tracionada.
2.5COMPUTAÇÃO
2.5.1 Programação
2.5.2 Comunicação
2.5.3.1 Webots
Figura 21 – Webots
2.5.3.2 V-REP
Figura 22 – V-REP
Fonte:Coppeliarobotics, 2015.
Figura 23 – SuperLogo
Cada comando deve ser seguido por um espaço embranco, logo após a
indicação do descolamento ou giro.Após a digitação do comando, pressiona-se a
tecla Enterou Executar na barra de comandos. Os comandos pf e pt alteram a
posição da tartaruga e os comandos pd e pe, asua orientação em relação ao seu
eixo de simetria (MOTTA; MIRANDA, 2008).
2.5.4 Fluxograma
3 DESENVOLVIMENTO
3.1.1 Microcontrolador
3.1.2 Sensores
Dessa forma, a bússola digital está sendo usada apenas para indicar os
pontos cardeais e colaterais da terra, mesmo assim foi necessário isolar o integrado
do protótipo devido ao campo eletromagnético gerado pelos motores. Através de
testes executados verificou-se que a partir de 30 cm de distância do protótipo a
bússola passou a fornecer valores mais estáveis.
3.1.3 Motores
3.1.4 Interface
3.1.5 Alimentação
PIC 1 300
Sonar 3 15
Motor 2 200
Bluetooth 1 40
Encoder 2 0,1
TOTAL: 786,8
3.2.1 Rodas
O ambiente físico para o qual o robô foi projetado para atuar é um labirinto
(figura 39) usado em competições de robô labirinto na Faculdade de Tecnologia
Tupy de Curitiba, instituição mantida pela Sociedade Educacional de Santa Catarina.
3.3.1 Locomoção
void Esquerda()
{
output_low(PIN_d7);
output_high(PIN_d6);
output_low(PIN_d5);
output_low(PIN_d4);
}
void Direita()
{
output_low(PIN_d7);
output_low(PIN_d6);
output_low(PIN_d5);
output_high(PIN_d4);
}
Para o controle de velocidade foram utilizadas as portas CCP do PIC
configuradas como PWM, utilizando a seguinte função:
voidpwm()
{
setup_timer_2 (T2_DIV_BY_16, 100, 10);
setup_ccp1 (ccp_pwm); //configura ccp1 modo pwm
setup_ccp2 (ccp_pwm); //configura ccp2 modo pwm
set_pwm1_duty (0); //zera o ciclo ativo do pwm1
set_pwm2_duty (0); //zera o ciclo ativo do pwm2
}
Sendo que o ciclo de trabalho é configurado indicando um valor de 0% a
100% nos comandos set_pwm1_duty (ciclo_1) e set_pwm2_duty (ciclo_2).
3.3.2 Localização
Para evitar que o protótipo venha a colidir com as paredes do labirinto, foram
utilizados os três sensores sonares, que calculam a distância do robô até as
71
cee++;
ee=!ee;
}
}
Para calcular a distância percorrida basta dividir o contorno da roda que é de
21,5cm pela resolução do encoder que é de 20 pulsos, ou seja, para cada pulso o
robô se move 1,075cm, conforme equação:
dist_ed=ced*1.075 (1);
dist_ee=cee*1.075 (2);
Como o cálculo da distância percorrida deve ser o mais preciso possível, para
que o robô realize a leitura dos sonares, por exemplo, é necessário parar os
motores, assim o tempo gasto para a leitura dos sensores não interfere na contagem
de pulsos do encoder, uma alternativa seria usar a própria interrupção interna do
microcontrolador, porém o modelo selecionado ao inicio do projeto só possui uma
interrupção externa, assim a melhor alternativa encontrada foi realizar a interrupção
via software:
if (((dist_ee%20)==0)||((dist_ed%20)==0))
{
stop();
leitura_sensores();
}
Dessa forma a cada 20cm de deslocamento, o robô para e verifica os
sensores de ultrassom.
int16 norte;
norte=HMC5883l_heading();
Para a utilização do display LCD como interface foram dedicadas seis portas
do microcontrolador e incluído no código a biblioteca LCD_20x04_P2, que declara
as portas que são utilizadas para comunicação e configuração do display.
No inicio do programa, é necessário inicializar o LCD chamando a função
inicializa_lcd(), após essa declaração é possível exibir dados ou mensagens no
mesmo, antes indicando a linha e a coluna que se deseja iniciar a escrita e em
seguida usando a função “printf()” do próprio compilador e entre parêntese declarar
onde será a escrita:
caracter_inicio(1,1);
printf(escreve_lcd,"Norte: %lu", norte);
No exemplo acima seria exibido o valor da leitura da bússola, iniciando a
escrita na linha 01 e coluna 01 do LCD. O código “%lu” indica que o valor a ser
exibido se trata de um inteiro longo.
3.3.2.5 Bluetooth
4 CONCLUSÃO
REFERÊNCIAS
BRAGA, C. Newton. Eletrônica básica para mecatrônica. 1.Ed. São Paulo: Editora
Saber, 2005.
SOUZA, David José de. Desbravando o PIC - Ampliado e Atualizado para PIC
16F628A. 12ª Edição Nacional: Érica, 2008.
81
SOUZA, Líria Alves De. Qual a diferença entre pilhas e baterias?. Brasil Escola.
Disponível em <http://www.brasilescola.com/quimica/qual-diferenca-entre-pilhas-
baterias.htm>. Acesso em: 13 out. 2015.
APÊNDICE A
BASE DO ROBÔ
83
APÊNDICE B
ESPAÇADOR ENTRE A BASE E A PLACA
84
APÊNDICE C
MONTAGEM DA BASE E ESPAÇADORES
85
APÊNDICE D
ESQUEMÁTICO CIRCUITO ELETRÔNICO
86
APÊNDICE E
AMBIENTE PADRÃO UTILIZADO
87
APÊNDICE F
PROGRAMAÇÃO DO MICROCONTROLADOR
Programa principal
#include "D:\PIC\Biblioteca\Lib_encoder.h"
int1ed=0, ee=0;
int i=0, pwm1=55, pwm2=57, liga=9, c=0;
int16dist_ed=0, dist_ee=0, ced=0, cee=0;
voidmain()
{
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8
inicializa_lcd(); // Inicializa o LCD
delay_ms(1000);
HMC5883L_init();
limpa_lcd(); // Limpa o display do LCD
pwm();
set_pwm1_duty (pwm1); //esquerda min.49 53
set_pwm2_duty (pwm2); //direita min.52 55
caracter_inicio(1,1);
printf(escreve_lcd,"Teste Encoder");
delay_ms(1000);
output_low(led_1);
output_low(led_2);
if ((!input(enc_d))) ed=1;
if ((input(enc_d))) ed=0;
if ((!input(enc_e))) ee=1;
if ((input(enc_e))) ee=0;
while(true)
{
88
caracter_inicio(1,15);
printf(escreve_lcd,"N: %c%c", n, nn);
caracter_inicio(2,13);
printf(escreve_lcd," ");
caracter_inicio(2,1);
printf(escreve_lcd,"SF:%lu SE:%lu SD:%lu", d_1, d_2, d_3);
caracter_inicio(3,1);
printf(escreve_lcd,"Dist_D = %luPd %lu", dist_ed, ced);
caracter_inicio(4,1);
printf(escreve_lcd,"Dist_E = %luPe %lu", dist_ee, cee);
if (kbhit())
{
i = getc(); // Leitura porta serial
i=i-48; // Conversão de ASCII para Decimal
if(i==0) liga=0;
elseif(i==1) liga=1;
elseif(i==2) liga=2;
elseif(i==9) liga=9;
}
stop();
liga=1;
}
elseif (d_3<9)
{
direita();
delay_ms(20);
stop();
liga=1;
}
else
{
// Leitura da Bússola
norte=HMC5883L_heading();
bussola();
liga=2;
}
}
}
if ((input(enc_d)))
{
ced++;
ed=!ed;
output_toggle(led_1);
}
}
if (ee==0)
{
if (!input(enc_e))
{
cee++;
ee=!ee;
output_toggle(led_2);
}
}
elseif (ee==1)
{
if ((input(enc_e)))
{
cee++;
ee=!ee;
output_toggle(led_2);
}
}
dist_ed=ced*1.075;
dist_ee=cee*1.075;
if((dist_ee==0)&&(c==0))
{
printf("\nA01\n");
c++;
}
if(dist_ee>0)
92
{
if (((dist_ee%20)==0))
{
liga=1;//2
stop();
if (((dist_ee%40)==0) &&(c==1))
{
printf("\nA02\n");
c++;
stop();
}
elseif ((dist_ee>=80)&&(c==2))
{
printf("\nA03\n");
c++;
esquerda();
delay_ms(500);
frente();
liga=2; //2
}
elseif ((dist_ee>=120)&&(c==3))
{
printf("\nB03\n");
c++;
stop();
}
elseif ((dist_ee>=160)&&(c==4))
{
printf("\nC03\n");
c++;
stop();
}
elseif ((dist_ee>=200)&&(c==5))
{
93
printf("\nD03\n");
c++;
esquerda();
delay_ms(550);
frente();
liga=1;
}
elseif ((dist_ee>=240)&&(c==6))
{
printf("\nD02\n");
c++;
stop();
}
elseif ((dist_ee>=280)&&(c==7))
{
printf("\nD01\n");
c++;
direita();
delay_ms(550);
frente();
liga=1;
}
elseif ((dist_ee>=320)&&(c==8))
{
printf("\nE01\n");
c++;
direita();
delay_ms(550);
frente();
liga=1;
}
elseif ((dist_ee>=360)&&(c==9))
{
printf("\nE02\n");
94
c++;
stop();
}
elseif ((dist_ee>=400)&&(c==10))
{
printf("\nE03\n");
c++;
}
elseif ((dist_ee>=440)&&(c==11))
{
printf("\nE04\n");
c++;
direita();
delay_ms(550);
frente();
}
elseif ((dist_ee>=480)&&(c==12))
{
printf("\nD04\n");
c++;
}
elseif ((dist_ee>=520)&&(c==13))
{
printf("\nC04\n");
c++;
stop();
}
elseif ((dist_ee>=560)&&(c==14))
{
printf("\nB04\n");
c++;
stop();
}
elseif ((dist_ee>=600)&&(c==15))
95
{
printf("\nA04\n");
c++;
esquerda();
delay_ms(550);
frente();
}
elseif ((dist_ee>=640)&&(c==16))
{
printf("\nA05\n");
c++;
esquerda();
delay_ms(550);
frente();
}
elseif ((dist_ee>=680)&&(c==17))
{
printf("\nB05\n");
c++;
stop();
}
elseif ((dist_ee>=720)&&(c==18))
{
printf("\nC05\n");
c++;
stop();
}
elseif ((dist_ee>=760)&&(c==19))
{
printf("\nD05\n");
c++;
stop();
}
elseif ((dist_ee>=800)&&(c==20))
96
{
printf("\nE05\n");
c++;
stop();
}
elseif ((dist_ee>=840)&&(c==21))
{
printf("\nF05\n");
c++;
direita();
delay_ms(550);
frente();
}
elseif ((dist_ee>=880)&&(c==22))
{
printf("\nF06\n");
c++;
direita();
delay_ms(550);
frente();
liga=1;
}
elseif ((dist_ee>=920)&&(c==23))
{
printf("\nE06\n");
c++;
stop();
}
elseif ((dist_ee>=960)&&(c==24))
{
printf("\nD06\n");
c++;
stop();
}
97
elseif ((dist_ee>=1000)&&(c==25))
{
printf("\nC06\n");
c++;
stop();
}
elseif ((dist_ee>=1040)&&(c==26))
{
printf("\nB06\n");
c++;
stop();
}
elseif ((dist_ee>=1080)&&(c==27))
{
printf("\nA06\n");
c++;
stop();
liga=0;
}
if (((dist_ee%40)==0)) printf("%c%c\n", n, nn);
}
else liga=2;
}
}
}
}
#include <16F877A.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
98
#FUSES NOWDT
#FUSES HS
#FUSES PUT
#FUSES NOPROTECT
#FUSES NODEBUG
#FUSES BROWNOUT
#FUSES NOLVP
#FUSES NOCPD
#FUSES NOWRT
#use delay(clock=12000000)
#use i2c(master, sda=pin_C4, scl=pin_C3)
#use rs232(uart1, baud=9600)
#include <HMC5883L.h>
#include lcd_20x04_P2.h
output_low(PIN_d6);
output_low(PIN_d5);
output_high(PIN_d4);
}
char n=' ', nn=' ';
int16 norte;
void bussola()
{
if ((norte>=0)&&(norte<23))
{
n=('N');
nn=(' ');
}
elseif ((norte>22)&&(norte<68))
{
n=('N');
nn=('E');
}
elseif ((norte>67)&&(norte<113))
{
n=('L');
nn=(' ');
}
elseif ((norte>112)&&(norte<158))
{
n=('S');
nn=('E');
}
elseif ((norte>157)&&(norte<203))
{
n=('S');
nn=(' ');
}
elseif ((norte>202)&&(norte<248))
101
{
n=('S');
nn=('O');
}
elseif ((norte>247)&&(norte<293))
{
n=('O');
nn=(' ');
}
elseif ((norte>292)&&(norte<338))
{
n=('N');
nn=('O');
}
elseif ((norte>237)&&(norte<=360))
{
n=('N');
nn=(' ');
}
else
{
n=('-');
nn=('-');
}
}
set_timer1(0);
while(input(echo_1)) {}
tempo=get_timer1();
d_1=tempo/24,16666;
}
voidsonar_esquerda()
{
delay_us(10);
output_low(trig_2);
while(!input(echo_2)) {}
tempo=0;
d_2=0;
set_timer1(0);
while(input(echo_2)) {}
tempo=get_timer1();
d_2=tempo/24,16666;
}
voidsonar_direita()
{
delay_us(10);
output_low(trig_3);
while(!input(echo_3)) {}
tempo=0;
d_3=0;
set_timer1(0);
while(input(echo_3)) {}
tempo=get_timer1();
d_3=tempo/24,16666;
}
103
BERMAL, Juliano Piva; SLOMA, Renann Manzoni. Robô móvel com sistema de
localização para ambiente Indoor conhecido. 2015. 104 f. TCC (Graduação) -
Curso de Tecnologia em Mecatrônica Industrial, Faculdade de Tecnologia Tupy -
Unisociesc, Curitiba, 2015.