Escolar Documentos
Profissional Documentos
Cultura Documentos
VOLTA REDONDA/RJ
2016
1
DIEGO DE OLIVEIRA CARVALHO
MICHEL PAULA ALVES
VICTOR NÉLIO DIAS ELEUTÉRIO
VITOR MIGUEL LIMA
WEBER PAULO CEZÁRIO DOS SANTOS
2
ERRATA
3
DIEGO DE OLIVEIRA CARVALHO
MICHEL PAULA ALVES
VICTOR NÉLIO DIAS ELEUTÉRIO
VITOR MIGUEL LIMA
WEBER PAULO CEZÁRIO DOS SANTOS
Data de aprovação:__/__/____
Resultado:_______________
APROVADO POR:
____________________________________________
Nome do Professor Orientador/ Coordenador de Curso
______________________________
______________________________
______________________________
______________________________
Professores Banca Examinadora
4
Dedicamos aos nossos pais que sempre
ficaram ao nosso lado nos apoiando.
Dedicamos também ao nosso coordenador,
aos professores e nosso Orientador pela
dedicação e comprometimento.
5
AGRADECIMENTOS
Agradecemos, primeiramente, a Deus por ter nos permitido estar aqui hoje
e ter nos dado forças para não desistir. Agradecemos aos nossos pais por
terem nos apoiado, tanto financeiramente como moralmente.
6
“A verdadeira motivação vem da realização,
desenvolvimento pessoal, satisfação no
trabalho e reconhecimento.”
Frederick Herzberg
SUMÁRIO
7
1 INTRODUÇÃO ...................................................................................... 09
2.5 ACELERÔMETRO................................................................................ 11
2.6 SHIELD................................................................................................ 11
3 FLUXOGRAMA........................................................................................ 12
4. DIAGRAMA......................................................................................... 13
5. CRONOGRAMA........................................................................................ 14
7. PROGRAMAÇÃO...................................................................................... 16
7. PROGRAMAÇÃO..................................................................................... 17
7. PROGRAMAÇÃO..................................................................................... 18
7. PROGRAMAÇÃO..................................................................................... 19
7. PROGRAMAÇÃO..................................................................................... 20
7. PROGRAMAÇÃO..................................................................................... 21
7. PROGRAMAÇÃO..................................................................................... 22
8. DIFICULDADES......................................................................................... 23
9. APLICAÇÕES INDUSTRIAIS.................................................................... 23
11. CONCLUSÃO..............................................................................................25
8
1. INTRODUÇÃO:
1.1 OBJETIVOS:
2. FUNDAMENTAÇÃO TEÓRICA:
9
2.1 MICROCONTROLADOR:
Utilizamos no nosso projeto o microcontrolador Arduino, que é responsavel
pela comunicação entre os sensores e os motores. No caso dos motores, os
sensores infravermelhos enviam um comando para os motores através do
ponte H para executar o movimento corretamente e se manter na trilha. No
caso do desvio, o Arduino se comunica com o Ultrassônico, verificando a
distancia medida, e através de uma função especificada programção, ele
realiza o desvio caso a distância seja menor que 11cm.
Arduino é uma placa de protoatipagem eletrônica, baseado em um
microcontrolador ATMega 2560 que se conecta ao computador pessoal através
de uma porta serial USB. Ele possui uma linguagem de programação própria,
que é a linguagem tipo C, baseada em Wiring, que é implementada em um
ambiente de desenvolvimento (IDE), que pode ser utilizada em varios sitemas
operacionais.
O modelo do Arduino que estamos utilizando no projeto é o
ATMega2560 que possui entrada USB e também conector de alimentação
externa.
10
através de funções especificadas na programação, ele controla os motores
para seguir a trilha.
2.4 ULTRASSÔNICO:
2.5 ACELERÔMETRO:
2.6 SHIELD:
Usamos nesse projeto um Motor Shield L293D Driver Ponte H, este Arduino
Motor Shield é baseado no chip L293D e com ele é possível controlar até 4
Motores DC, 2 Servos ou 2 Motores de Passo. O chip L293D possui
internamente 2 Ponte H e suporta uma corrente de saída de 600mA por canal,
ou seja, será possível controlar até 2 motores com 600mA cada, visto que
neste Shield temos 2 chips. Tensão suportada de 4,5-36V.
11
3. FLUXOGRAMA:
12
4. DIAGRAMA:
13
5. CRONOGRAMA :
14
6. TABELA DE CUSTO
15
7. PROGRAMAÇÃO:
#include <AFMotor.h>
#include <MMA_7455.h>
#include <Wire.h>
MMA_7455 mySensor = MMA_7455();
char xVal, yVal, zVal;
AF_DCMotor motor1(2); //Seleciona o motor 1
AF_DCMotor motor2(3); //Seleciona o motor 2
const int SENSOR1 = A11;
const int SENSOR2 = A10;
const int SENSOR3 = A9;
const int SENSOR4 = A8;
#include <Ultrasonic.h>
#define eco 15
#define trig 14
Ultrasonic ultrasonic(trig,eco);
int cm = 0 ;
int Valor1 = 0;
int Valor2 = 0;
int Valor3 = 0;
int Valor4 = 0;
int Corte = 700;
float distancia = 0;
long leitura = 0;
void setup() {
void loop() {
Valor1 = analogRead(SENSOR1);
Valor2 = analogRead(SENSOR2);
Valor3 = analogRead(SENSOR3);
Valor4 = analogRead(SENSOR4);
xVal = mySensor.readAxis('x'); //Read out the 'x' Axis
yVal = mySensor.readAxis('y'); //Read out the 'y'a Axis
zVal = mySensor.readAxis('z'); //Read out the 'z'
16
long t=ultrasonic.timing();
cm=ultrasonic.convert(t,Ultrasonic::CM);
if ((cm) > (10) && (cm) < (13))
{ motor1.run(RELEASE);
motor2.run(RELEASE);
delay(500);
motor1.setSpeed(182);
motor2.setSpeed(170);
motor1.run(FORWARD);
motor2.run(BACKWARD);
delay(450);
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(500);
motor1.setSpeed(182);
motor2.setSpeed(170);
motor1.run(FORWARD);
motor2.run(FORWARD);
delay(600);
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(500);
motor2.setSpeed(170);
motor1.run(RELEASE);
motor2.run(FORWARD);
delay(950);
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(500);
motor1.setSpeed(182);
motor2.setSpeed(170);
motor1.run(FORWARD);
motor2.run(FORWARD);
delay(900);
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(500);
motor2.setSpeed(170);
motor1.run(RELEASE);
motor2.run(FORWARD);
delay(900);
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(500);
motor1.setSpeed(182);
motor2.setSpeed(170);
motor1.run(FORWARD);
motor2.run(FORWARD);
17
delay(700);
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(500);
motor1.setSpeed(182);
motor2.setSpeed(170);
motor1.run(FORWARD);
motor2.run(BACKWARD);
delay(400);
motor1.run(RELEASE);
motor2.run(RELEASE);
delay(500);
motor1.setSpeed(140);
motor2.setSpeed(140);
}
Serial.print("ACELEROMETRO");
if (xVal > -2)
{Serial.println("NORMAL");
// curva 90 direita
if((Valor4) < (Corte) && (Valor3) > (Corte) && (Valor2) > (Corte)&& (Valor1) > (Corte))
{
motor1.setSpeed(140);
motor2.setSpeed(140);
motor1.run(FORWARD);
motor2.run(BACKWARD);
}
// curva normal direita
if((Valor4) > (Corte) && (Valor3) < (Corte) && (Valor2) > (Corte)&& (Valor1) > (Corte))
{
motor1.setSpeed(160);
motor1.run(FORWARD);
motor2.run(RELEASE);
}
//curva 90 direita
if((Valor4) < (Corte) && (Valor3) < (Corte) && (Valor2) > (Corte)&& (Valor1) > (Corte))
{
motor1.setSpeed(140);
motor2.setSpeed(140);
motor1.run(FORWARD);
motor2.run(BACKWARD);
}
//curva normal esquerda
if((Valor4) > (Corte) && (Valor3) > (Corte) && (Valor2) < (Corte)&& (Valor1) > (Corte))
18
motor2.setSpeed(140);
motor1.run(RELEASE);
motor2.run(FORWARD);
}
//linha reta
if((Valor2) < (Corte) && (Valor3) < (Corte) && (Valor4) > (Corte) && (Valor1) > (Corte))
{
motor1.setSpeed(140);
motor2.setSpeed(140);
motor1.run(FORWARD);
motor2.run(FORWARD);
}
// curva 90 direita
if((Valor4) < (Corte) && (Valor3) < (Corte) && (Valor2) < (Corte)&& (Valor1) > (Corte))
{
motor1.setSpeed(140);
motor2.setSpeed(140);
motor1.run(FORWARD);
motor2.run(BACKWARD);
}
//curva 90 esquerda
if((Valor4) > (Corte) && (Valor3) > (Corte) && (Valor2) > (Corte)&& (Valor1) < (Corte))
{
motor1.setSpeed(150);
motor2.setSpeed(150);
motor1.run(BACKWARD);
motor2.run(FORWARD);
}
// curva 90 esquerda
if((Valor1) < (Corte) && (Valor2) > (Corte) && (Valor3) > (Corte)&& (Valor4) > (Corte))
{
motor1.setSpeed(140);
motor2.setSpeed(140);
motor1.run(BACKWARD);
motor2.run(FORWARD);
}
// curva 90 esquerda
if((Valor4) > (Corte) && (Valor3) < (Corte) && (Valor2) < (Corte)&& (Valor1) < (Corte))
{
motor1.setSpeed(140);
motor2.setSpeed(140);
19
motor1.run(BACKWARD);
motor2.run(FORWARD);
}
// cruzamento
if((Valor1) < (Corte) && (Valor2) < (Corte) && (Valor3) < (Corte) && (Valor4) < (Corte))
{
motor1.setSpeed(140);
motor2.setSpeed(140);
motor1.run(FORWARD);
motor2.run(FORWARD);
}
// falha
if((Valor1) > (Corte) && (Valor2) > (Corte) && (Valor3) > (Corte) && (Valor4) >
(Corte))
{
motor1.setSpeed(140);
motor2.setSpeed(140);
motor1.run(FORWARD);
motor2.run(FORWARD);
}}
if (xVal < -1)
{Serial.println("SUBINDO");
// curva 90 direita
if((Valor4) < (Corte) && (Valor3) > (Corte) && (Valor2) > (Corte)&& (Valor1) > (Corte))
{
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(FORWARD);
motor2.run(BACKWARD);
}
20
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(FORWARD);
motor2.run(BACKWARD);
}
//curva normal esquerda
if((Valor4) > (Corte) && (Valor3) > (Corte) && (Valor2) < (Corte)&& (Valor1) > (Corte))
{
motor2.setSpeed(255);
motor1.run(RELEASE);
motor2.run(FORWARD);
}
//linha reta
if((Valor2) < (Corte) && (Valor3) < (Corte) && (Valor4) > (Corte) && (Valor1) > (Corte))
{
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(FORWARD);
motor2.run(FORWARD);
}
// curva 90 direita
if((Valor4) < (Corte) && (Valor3) < (Corte) && (Valor2) < (Corte)&& (Valor1) > (Corte))
{
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(FORWARD);
motor2.run(BACKWARD);
}
//curva 90 esquerda
if((Valor4) > (Corte) && (Valor3) > (Corte) && (Valor2) > (Corte)&& (Valor1) < (Corte))
{
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(BACKWARD);
motor2.run(FORWARD);
}
// curva 90 esquerda
if((Valor1) < (Corte) && (Valor2) > (Corte) && (Valor3) > (Corte)&& (Valor4) > (Corte))
{
motor1.setSpeed(255);
motor2.setSpeed(255);
21
motor1.run(BACKWARD);
motor2.run(FORWARD);
}
// curva 90 esquerda
if((Valor4) > (Corte) && (Valor3) < (Corte) && (Valor2) < (Corte)&& (Valor1) < (Corte))
{
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(BACKWARD);
motor2.run(FORWARD);
}
// cruzamento
if((Valor1) < (Corte) && (Valor2) < (Corte) && (Valor3) < (Corte) && (Valor4) < (Corte))
{
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(FORWARD);
motor2.run(FORWARD);
}
// falha
if((Valor1) > (Corte) && (Valor2) > (Corte) && (Valor3) > (Corte) && (Valor4) >
(Corte))
{
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(FORWARD);
motor2.run(FORWARD);
}}}
22
8. DIFICULDADES:
9. APLICAÇÕES INDUSTRIAIS :
Este veículo foi desenvolvido com o objetivo de minimizar custos e ter uma
alta flexibilidade no momento de incorporar novos componentes.
23
10. COMO SE MOVIMENTAM ?
Wire Guidance (guiado por cabo): A trajetória é fixada por um fio que vai
sob do solo.
24
11. CONCLUSÃO :
25
.
26