prova de aptidão tecnológica
TRANSCRIPT
PROVA DE APTIDÃO TECNOLÓGICA
–
PROJECTO ROBOT DE BUSCA E
SALVAMENTO
Trabalho realizado por: Ricardo Antunes
PAT – Prova de Aptidão Tecnológica
Motivação.
Requisitos.
Conceitos Teóricos.
Arquitectura do sistema.
Implementação.
Conclusões.
Trabalho Futuro.
SUMÁRIO
Pesquisa de robots já existentes no mercado.
Compreensão de conceitos teóricos para iniciação do
projecto.
Planeamento da estrutura física do robot.
Desenho 3D utilizando a ferramenta de desenho INVENTOR.
Implementação do material a utilizar.
Planeamento da programação para posterior participação em
provas.
Conclusões retiradas com o projecto.
INTRODUÇÃO
Microcontrolador: ATmega1280.
Controlo dos motores: Ardumoto (L298).
Sensor de pista: Axe121.
Sonares: SRF05.
Motores: EMG30.
Chassis: Alumínio.
Sistema de movimento: Lagartas.
Bateria: 5v a 12v DC.
Comunicação: FT232R.
Servo: S05NF.
Garra: Sparksfun robotic claw.
REQUISITOS
PROVA DE ROBÓTICA NACIONAL
PROVADE ROBÓTICA NACIONAL - GARRA
PROVA DE ROBÓTICA NACIONAL - FOTOS
Robot: É um agente artifícial activo que possuí um corpo e cujo ambiente é o mundo real (físico).
Robot Autónomo: É um robot que realiza as suas próprias decisões usando o feedback que recebe do seu ambiente.
DEFINIÇÃO DE ROBOT
Agente : Um s istema computacional , s i tuado num dado ambiente , tem percepção do ambiente através de sensores e tem actuadores que vão desempenhar uma acção conforme a anál ise dos sensores do ambiente em conjunto com a programação.
Sistema mult i -agente : É um s istema em que 2 ou mais agentes, interagem ou trabalham em conjunto de forma a desempenhar um determinado conjunto de tarefas.
AGENTES E SISTEMAS MULTI-AGENTE
Um motor DC é :
Máquina de corrente contínua que poderá funcionar como motor ou
gerador.
É alimentado por uma corrente externa que em conjunto com 2
campos magnéticos gera um binário.
Um motor DC é constituído por:
Rotor (componente em movimento).
Estator (componente estática).
MOTORES DC
MOTORES DC
Esquema da constitução
de um motor dc com brushes.
O EMG30 é um motor de 12v , com encoder ótimo para
pequenos e médios robots.
Incluí um condensador redutor de ruído , nos enrolamentos do
motor.
EMG30
Rated voltage
12v
Rated torque
1.5kg/cm
Rated speed
170rpm
Rated current
530mA
No load current
150mA
Stall Current
2.5A
Encoder counts per output shaft turn
360
EMG30
EMG30
Wire
colourConnection
Purple
(1)Hall Sensor B Vout
Blue (2) Hall sensor A Vout
Green
(3)Hall sensor ground
Brown
(4)Hall sensor Vcc
Red (5) + Motor
Black
(6)- Motor
O impulso PWM significa Pulse-width modulation.
O PWM é a técnica mais usada para controlar a velocidade de
um motor DC , porque permite induzir no motor energias
electricas diferentes.
Este pulso é modulado em ondas quadradas.
MODULAÇÃO PWM
Entrada = 5V
Duty -Cycle 50% temos Saída 2,5V
Duty -Cycle 100% temos Saída 5,0 V
Duty -Cycle 37% temos Saída 1 ,85V
TCic lo = tempo total de 1 c ic lo . Chamamos de T.
Tl igado = tempo em al ta (h igh ) .
Tdesl igado = tempo em baixa ( low ) .
E = tensão de entrada.
CÁCULO DO PWM
CÁLCULO DO PWM
Para programação no Arduino:
analogWrite(valoranalógico).
AnalogWrite: Envia para a porta analógica de controlo do motor um valor analógico correspondente á velocidade pretendida.
Os valores analógicos variam de 0 a 255
Concluindo 0 corresponde a 0ve 255 ao nosso máximo. (neste caso 5v).
PROGRAMAÇÃO DO PWM
A Ponte H tem como função permitir a alteração do sentido de
rotação dos motores.
O Ardumoto pussiu o driver L298 que é uma ponte H.
PONTE H
+V
V112v
D4DIODE
D3DIODED2
DIODE
D1DIODE
M1
Q4NMOS
Q3NMOS
Q2NMOS
Q1NMOS
S4
S3
S2
S1
+V
V112v
D4DIODE
D3DIODED2
DIODE
D1DIODE
M1
Ao colocar uma certa
tensão na gate dos
MOSFETs desejados,
controlamos o sentido
com que a corrente
atravessa o circuito e
por consequência o
sentido de rotação do
motor.
Q1 Q2 Q3 Q4 Sentido
0 0 0 0 Parado
1 0 1 0 Parado
0 1 0 1 Parado
1 0 0 1 Frente
0 1 1 0 Trás
PONTE H
Para programar o sentido de um motor é necessário usar o seguinte código (arduino):
digitalWrite(dir_a, LOW);
digitalWrite(dir_a, HIGH);
DigitalWrite = Entrada digital do arduino
Dir_a = Motor A
Low = Direcção Trás
High = Direcção Frente
PROGRAMAÇÃO PARA CONTROLO DO
SENTIDO DOS MOTORES
Sinal analógico
Variação contínua
A função pode assumir
qualquer valor. (0 a 255).
Sinal digital
Variação discreta
A função assume um
conjunto de valores pré
definido (0 e 1).
Intervalo de sinalização.
DIFRENÇAS ENTRE SINAL ANALÓGICO E
SINAL DIGITAL
Ardumoto : PCB de controlo para 2 motores DC.
O Ardumoto é baseado na ponte H l298,tambem incluí dois
leds , um laranja e um azul que indicam a direcção em que o
motor está em rotação.
Os motores são ligados ao Porto A e Porto B que
correspondem respectivamente aos impulsos PWMA e PWMB.
(PWM = Pulse-width-modulation).
ARDUMOTO
O funcionamento de um sonar é de fácil compreensão.
O nosso emissor emite uma onda ultrasonica , que ao embater num objecto, vai se reflectir.
Ao se reflectir um receptor vai registar o tempo que demorou a chegar a onda .
FUNCIONAMENTO DE UM SONAR
SRF05
O SRF05 é um sonar evoluido do SRF04, em que o SRF04 usa
apenas um pino para trigger e echo.
O SRF05 usa dois pinos independentes para enviar e receber
informação (trigger e echo independentes).
O SRF05 funciona com uma tensão de 5v e tem apenas 5
pinos.
SRF05
O cálculo da distância apartir de um sonar é feito pelos
seguintes códigos (arduino):
distance = pulseIn(echo, HIGH);
distance = distance/58;
Estas linhas de código fazem com que o valor da distância
seja igual ao pulso do echo , e depois divide-se essa mesma
distância por 58 para obter o valor em centímetros da
distância.
PROGRAMAÇÃO PARA CÁLCULO DA
DISTÂNCIA COM UM SONAR
Na função de setup vamos defenir a velocidade de transmissão:
Serial.begin(9600);
Em seguida vamos ter de transferir o valor para a consola com a função:
Serial.println(distance);
Delay_miliseconds(10);
A função delay serve para criar um intrevalo de 10 mil isegundos na transmição de valores.
Se quisermos tambem fazer uma referência podemos tambem imprimir na consola(colocar este codigo antes do print do valor da distãncia):
Serial.println(“Distância --->”);
PROGRAMAÇÃO PARA OBTER O VALOR
DA DISTÂNCIA NA CONSOLA
Um encoder é um dispositivo electromecânico que converte
uma posição angular num código analógico ou digital e um
encoder dá-nos:
O sentido da rotação do motor.
A distância percorrida pelo motor.
ENCODERS
Este código serve para definir os pinos do encoder como uma
interrupção interna no flanco ascendente:
pinMode (encoder,INPUT);
attachInterrupt(2, CountA, RISING);
pinMode = define se o encoder é um input ou output.
attachInterrupt = define a interrupção interna no pino 2 que
vai a função de contagem , e define o flanco.
PROGRAMAÇÃO PARA O ENCODER
O Axe121 é um sensor de pista da picaxe , muito simples de
apenas 3 sensores de infra-vermelhos.
Funciona por apenas 5 ligações (V+, GND e 3 ligações
correspondentes ao sensor central , esquerda e direita).
SENSOR DE PISTA
Se pretendemos ter uma leitura dos sensores de
infravermelhos temos de utilizar o seguinte código(arduino):
pis_Ls = digitalRead(pis_L);
pis_Cs = digitalRead(pis_C);
pis_Rs = digitalRead(pis_R);
digitalRead = Faz a leitura do sinal digital dos infravermelhos.
pis_x = Variável onde se vai guardar o valor obtido na porta
digital (Ls(esquerda),Cs(centro),Rs(Direita).
PROGRAMAÇÃO PARA O SENSOR DE
PISTA AXE 121
S05NF : Servo de médio porte .
Rotação : 180°
Torque : 3.2kg/cm (19.6oz/in) (6V) ou 2.8kg/cm (19.6oz/in) (4.8V)
Voltagem : 4.8v a 6v
Dimensões : 28.8 x 13.8 x 30.2mm
S05NF
Robotic claw : Garra robótica da sparks fun , com uma
abertura de 6 cm máximo. Como a lata da prova tem 6,5 cm
de diâmetro foram feitas alterações ao sistema mecânico da
garra . Esta garra usa um servo S05NF .
ROBOTIC CLAW SPARKSFUN
O Atmega1280 é a PCB de controlo arduino , que utiliza o
microprocessador ATmega1280.
O Arduino é uma tecnologia Italiana , que é de fácil acesso ao
público e de facíl programação.
(http://arduino.cc/en/Main/ArduinoBoardMega)
ARDUINO ATMEGA1280
Arduino ATmega1280 M i c r o c o n t r o l l e r
ATmega12 8 0
O p e r a t i n g V o l t a g e 5V
I n p u t V o l t a g e ( r e c o m m e n d e d ) 7-12V
I n p u t V o l t a g e ( l i m i t s ) 6-20V
D i g i t a l I / O P i n s 54 (of which 15 prov ide PWM output )
A n a l o g I n p u t P i n s 16
D C C u r r e n t p e r I / O P i n 40 mA
D C C u r r e n t f o r 3 . 3 V P i n 50 mA
F l a s h M e m o r y 128 KB of which 4 KB used by boot loade r
S R A M 8 KB
E E P R O M 4 KB
C l o c k S p e e d 16 MHz
Arduino UNO M i c r o c o n t r o l l e r
ATmega32 8
O p e r a t i n g V o l t a g e 5V
I n p u t V o l t a g e ( r e c o m m e n d e d ) 7-12V
I n p u t V o l t a g e ( l i m i t s ) 6-20V
D i g i t a l I / O P i n s 14 (of which 6 prov ide PWM output )
A n a l o g I n p u t P i n s 6
D C C u r r e n t p e r I / O P i n 40 mA
D C C u r r e n t f o r 3 . 3 V P i n 50 mA
F l a s h M e m o r y 32 KB (ATmega3 2 8) of which 0 .5 KB used by boot load er
S R A M 2 KB (ATmega3 2 8)
E E P R O M 1 KB (ATmega3 2 8)
C l o c k S p e e d 16 MHz
COMPARAÇÃO ENTRE ATMEGA1280 E
UNO
Praticamente a fase inicial do projecto , a fase em que as
ideias do aspecto tinham se ser transferidas para um
desenho. (No caso utilizando o INVENTOR).
DESENHO 3D USANDO INVENTOR
Desenhos de alta qualidade que permitem o envio das peças
para fabrico.
DESENHO 3D USANDO INVENTOR
FLUXOGRAMA DO PROGRAMA USADO NO
ROBOT
Um robot não é um sistema fácil de construir.
Os custos de um robot são algo elevados , devido á
complexidade das peças utilizadas na sua construção.
O numero de testes a serem feitos é grande.
O numero de complicações que possam surgir na sua
construção é grande , porque o hardware nem sempre
funciona como pretendemos.
A utilização de encoders foi essencial.
CONCLUSÕES
Elaboração de uma pcb de controlo de motores original.
Elaboração de uma pcb para um sensor de pista mais potente.
Esquema 3D de uma caixa para colocar as pcbs de forma segura e facil itar a remoção das mesmas.
Melhorar o chassis
Adicionar um sensor de cor para as provas com vitimas de cor no solo.
Desenvolver um novo sistema para a garra.
TRABALHO FUTURO