23/07
Planejamento de equipes
Mostrando postagens com marcador sumô. Mostrar todas as postagens
Mostrando postagens com marcador sumô. Mostrar todas as postagens
quarta-feira, 23 de julho de 2014
Torneio Juvenil de Robótica 2014
Marcadores:
2014,
cabo de guerra,
competição,
resgate de alto risco,
sumô,
torneio juvenil de robótica
domingo, 25 de agosto de 2013
Resultado Torneio Juvenil de Robótica 2013 - São Paulo
Das 7 modalidades que participamos, ganhamos medalhas em 5 modalidades - 71% de eficência - e 6 medalhas - eficiência de 85%. Um resultado inesperado e acima das nossas expectativas. Só faltou a medalha de ouro...
Resultado: TJR Torneio Juvenil de Robótica 2013 - São Paulo
Sumô Tradicional - Nível II
Ouro - SPECTRUS
Prata - SDS
Bronze - TRON
Sumô MMA - Nível II
Ouro - CHALLENGERS 4
Prata - TIME 3.2
Bronze - TIME 4.1
Resgate de Alto Risco - Nível II
Ouro - SPECTRUS
Prata - LEGENDÁRIOS
Dança - Nível II
Ouro - NOVA GERAÇÃO TIAOZINHO 3
Sumô Large - Nível II
Ouro - CHALLENGERS 2
Prata - TIME 4
Bronze - TIME 3.1
Cabo de Guerra - Nível II
Ouro - FOURC1
Prata - CHALLENGERS 7
Bronze - FOURC2
Resgate no Plano - Nível II
Ouro - TRON
Prata - LCA
Bronze - SPECTRUS
Viagem - Nível II
Ouro - LEGOTEEN VCT
Prata - CHALLENGERS 13
Bronze - WINNERS JUNIOR C
Bronze - SPECTRUS
Sumô Tradicional - Nível III
Ouro - CHALLENGERS N
Prata - l1I2
Bronze - LEGOTEEN HS
*participamos mas não ganhamos medalha
Sumô MMA - Nível III
Ouro - CHALLENGERS 5
Prata - PEQUENOS CIENTISTAS EF
Resgate de Alto Risco - Nível III
Ouro - EQUIPE SHARK'S LITORAL
Prata - JAGUAR IFRJ - RESGATE
Bronze - LEGENDÁRIOS
Dança - Nível III
Ouro - PSYTRON
Prata - JAGUAR IFRJ - DANÇA
Bronze - CHALLENGERS 11
Viagem - Nível III
Ouro - CHALLENGERS 14
Prata - VIAJANTES DE VERNE
Bronze - LEGOTEEN HS VCT
Sumô Large - Nível III
Ouro - CHALLENGERS 88
Prata - TITAN
Cabo de Guerra - Nível III
Ouro - TIME 1
Prata - IFRJ JAGUAR - CABO DE GUERRA
Bronze - CHALLENGERS 8
*participamos mas não ganhamos medalha
Resgate no Plano - Nível III
Ouro - EQUIPE SHARK'S LITORAL
Prata - JAGUAR IFRJ - DONATELO
Labirinto - Nível III
Ouro - IFRJ JAGUAR - LABIRINTO
Sumô Tradicional - Nível IV
Ouro - CHALLENGERS 1
Prata - FEG-ROBÓTICA
Bronze - PEQUENOS CIENTISTAS 2
Sumô Large - Nível IV
Ouro - CHALLENGERS 3
Prata - PEQUENOS CIENTISTAS
Cabo de Guerra - Nível IV
Ouro - CHALLENGERS 9
Prata - PEQUENOS CIENTISTAS
Viagem - Nível IV
Ouro - VIAJANTES DE VERNE 2
Prata - GER
Bronze - CHALLENGERS 15
Sumô MMA - Nível IV
Ouro - CHALLENGERS 6
Prata - PEQUENOS CIENTISTAS 2
Bronze - PEQUENOS CIENTISTAS 1
Dança - Nível IV
Ouro - CHALLENGERS 12
Super Time - Cabo de Guerra
Ouro - FOURC1 e SPECTRUS
Prata - FOURC2 e CERBERUS
Prêmio de Incentivo
B.I.N.O
fonte: torneiojrobotica.org
Resultado: TJR Torneio Juvenil de Robótica 2013 - São Paulo
Sumô Tradicional - Nível II
Ouro - SPECTRUS
Prata - SDS
Bronze - TRON
Sumô MMA - Nível II
Ouro - CHALLENGERS 4
Prata - TIME 3.2
Bronze - TIME 4.1
Resgate de Alto Risco - Nível II
Ouro - SPECTRUS
Prata - LEGENDÁRIOS
Dança - Nível II
Ouro - NOVA GERAÇÃO TIAOZINHO 3
Sumô Large - Nível II
Ouro - CHALLENGERS 2
Prata - TIME 4
Bronze - TIME 3.1
Cabo de Guerra - Nível II
Ouro - FOURC1
Prata - CHALLENGERS 7
Bronze - FOURC2
Resgate no Plano - Nível II
Ouro - TRON
Prata - LCA
Bronze - SPECTRUS
Viagem - Nível II
Ouro - LEGOTEEN VCT
Prata - CHALLENGERS 13
Bronze - WINNERS JUNIOR C
Bronze - SPECTRUS
Sumô Tradicional - Nível III
Ouro - CHALLENGERS N
Prata - l1I2
Bronze - LEGOTEEN HS
*participamos mas não ganhamos medalha
Sumô MMA - Nível III
Ouro - CHALLENGERS 5
Prata - PEQUENOS CIENTISTAS EF
Resgate de Alto Risco - Nível III
Ouro - EQUIPE SHARK'S LITORAL
Prata - JAGUAR IFRJ - RESGATE
Bronze - LEGENDÁRIOS
Dança - Nível III
Ouro - PSYTRON
Prata - JAGUAR IFRJ - DANÇA
Bronze - CHALLENGERS 11
Viagem - Nível III
Ouro - CHALLENGERS 14
Prata - VIAJANTES DE VERNE
Bronze - LEGOTEEN HS VCT
Sumô Large - Nível III
Ouro - CHALLENGERS 88
Prata - TITAN
Cabo de Guerra - Nível III
Ouro - TIME 1
Prata - IFRJ JAGUAR - CABO DE GUERRA
Bronze - CHALLENGERS 8
*participamos mas não ganhamos medalha
Resgate no Plano - Nível III
Ouro - EQUIPE SHARK'S LITORAL
Prata - JAGUAR IFRJ - DONATELO
Labirinto - Nível III
Ouro - IFRJ JAGUAR - LABIRINTO
Sumô Tradicional - Nível IV
Ouro - CHALLENGERS 1
Prata - FEG-ROBÓTICA
Bronze - PEQUENOS CIENTISTAS 2
Sumô Large - Nível IV
Ouro - CHALLENGERS 3
Prata - PEQUENOS CIENTISTAS
Cabo de Guerra - Nível IV
Ouro - CHALLENGERS 9
Prata - PEQUENOS CIENTISTAS
Viagem - Nível IV
Ouro - VIAJANTES DE VERNE 2
Prata - GER
Bronze - CHALLENGERS 15
Sumô MMA - Nível IV
Ouro - CHALLENGERS 6
Prata - PEQUENOS CIENTISTAS 2
Bronze - PEQUENOS CIENTISTAS 1
Dança - Nível IV
Ouro - CHALLENGERS 12
Super Time - Cabo de Guerra
Ouro - FOURC1 e SPECTRUS
Prata - FOURC2 e CERBERUS
Prêmio de Incentivo
B.I.N.O
fonte: torneiojrobotica.org
Marcadores:
sumô,
torneio juvenil de robótica
domingo, 30 de setembro de 2012
SENSOR DE ULTRASSOM HC-SR04
Aplicação em robôs de sumô: detecção de objetos.
Programa de testes- Utilizado para 2 sensores de ultrassom:
// Comandos para leitura de sensor de ultrassom para os robôs TITAN e ORION.
//sensor 1
#define echoPin 2 // Pino do Arduino para emissor
#define trigPin 3 // Pino do Arduino para receptor
//sensor 2
#define echoPin1 4 // Pino do Arduino para emissor
#define trigPin1 5 // Pino do Arduino para receptor
float distancia=0; // variável para distância do sensor 1
float distancia1=0;//variável para distância do sensor 2
float valorSensor=0; //valor do sensor 1
float valorSensor1=0;//valor do sensor 2
void setup(){
Serial.begin(9600);
pinMode(echoPin, INPUT); // seta pino 2 como entrada - receptor - echo
pinMode(trigPin, OUTPUT); // seta pino 3 do Arduino como saída - transmissor - trigger
pinMode(echoPin1, INPUT);//seta o pino 4 como entrada receptor
pinMode(trigPin1, OUTPUT);//seta o pino 5 como saída (gatilho) - transmissor
}
void loop(){
//sensor de objeto 1
digitalWrite(trigPin, LOW); // desliga o pino gatilho do sensor por 2 microssegundos
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);// gatilho ativado por 10 microssegundos
delayMicroseconds(10);
digitalWrite(trigPin, LOW);// gatilho desligado
//sensor de objeto 2
digitalWrite(trigPin1, LOW); // desliga o pino gatilho do sensor por 2 microssegundos
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH); // gatilho ativado por 10 microssegundos
delayMicroseconds(10);
digitalWrite(trigPin1, LOW); // gatilho desligado
int distance = pulseIn(echoPin, HIGH);//leitura do sensor 1 - alto ou baixo.
int distance1 = pulseIn(echoPin1, HIGH);//leitura do sensor 2 - alto ou baixoo pulso em microssegundos.
distance = distancia/58;//converte o valor do sensor1 em cm
distance1 = distancia1/58;//converte o valor do sensor2 em cm
//a partir daqui pode seguir com as variáveis para controlar os motores usando a distância
//comando para exibir no serial monitor o valor de distância
Serial.print(distancia);
Serial.print(distancia1);
Serial.println(distancia);
Serial.println(distancia1);
delay(100);
}
FONTE: http://www.webtronico.com/documentos/HC-SR04.pdf
Programa de testes- Utilizado para 2 sensores de ultrassom:
// Comandos para leitura de sensor de ultrassom para os robôs TITAN e ORION.
//sensor 1
#define echoPin 2 // Pino do Arduino para emissor
#define trigPin 3 // Pino do Arduino para receptor
//sensor 2
#define echoPin1 4 // Pino do Arduino para emissor
#define trigPin1 5 // Pino do Arduino para receptor
float distancia=0; // variável para distância do sensor 1
float distancia1=0;//variável para distância do sensor 2
float valorSensor=0; //valor do sensor 1
float valorSensor1=0;//valor do sensor 2
void setup(){
Serial.begin(9600);
pinMode(echoPin, INPUT); // seta pino 2 como entrada - receptor - echo
pinMode(trigPin, OUTPUT); // seta pino 3 do Arduino como saída - transmissor - trigger
pinMode(echoPin1, INPUT);//seta o pino 4 como entrada receptor
pinMode(trigPin1, OUTPUT);//seta o pino 5 como saída (gatilho) - transmissor
}
void loop(){
//sensor de objeto 1
digitalWrite(trigPin, LOW); // desliga o pino gatilho do sensor por 2 microssegundos
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);// gatilho ativado por 10 microssegundos
delayMicroseconds(10);
digitalWrite(trigPin, LOW);// gatilho desligado
//sensor de objeto 2
digitalWrite(trigPin1, LOW); // desliga o pino gatilho do sensor por 2 microssegundos
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH); // gatilho ativado por 10 microssegundos
delayMicroseconds(10);
digitalWrite(trigPin1, LOW); // gatilho desligado
int distance = pulseIn(echoPin, HIGH);//leitura do sensor 1 - alto ou baixo.
int distance1 = pulseIn(echoPin1, HIGH);//leitura do sensor 2 - alto ou baixoo pulso em microssegundos.
distance = distancia/58;//converte o valor do sensor1 em cm
distance1 = distancia1/58;//converte o valor do sensor2 em cm
//a partir daqui pode seguir com as variáveis para controlar os motores usando a distância
//comando para exibir no serial monitor o valor de distância
Serial.print(distancia);
Serial.print(distancia1);
Serial.println(distancia);
Serial.println(distancia1);
delay(100);
}
FONTE: http://www.webtronico.com/documentos/HC-SR04.pdf
Descrição:
Medidor de distância ultrasônico é capaz de medir distâncias de 2cm a 5 metros. O módulo possui um circuito pronto, com emissor e receptor ultrasônico.
Conexões:
- 5V Supply
- Trigger Pulse Input
- Echo Pulse Output
- 0V Ground
Também pode ser utilizado para detectar objetos, movimento, etc.
Especificações:
- power supply :5V DCCorrente: 15mA
- quiescent current : <2mA
- effectual angle: <15°
- alcance da medição : 2cm – 500 cm
- resolution : 3mm
O módulo possui 4 pinos : VCC , Trig, Echo, GND . Sendo assim, é muito simples utiliza-lo. O processo de medição se resume em: coloque o pino TRIG em nível ALTO por mais de 10us, e a medição começa; Quando o ultrassom emitido bater em um obstáculo e voltar, o pino ECHO ficará em nível ALTO pelo tempo correspondente a distância medida. Assim, a distância do obstáculo pode ser medida pelo tempo (largura do pulso) que o pino ECHO ficar em nível alto usando a seguinte regra:
Distância em CEMTIMETROS: (largura do pulso em uS) / 58;
Distância em POLEGADAS: (largura do pulso em uS) / 148;
Se a largura do pulso for igual a 38ms, então não tem obstaculo.
Marcadores:
arduíno,
sensor,
sensor ultrassom,
sumô,
sumô robot
sábado, 1 de setembro de 2012
Novo projeto
Recebemos da Diretoria de Educação a verba de projetos descentralizados que permitirá a compra de material de pesquisa. Isso nos estimulou a criação de um novo projeto que envolve um robô de esteiras, sem nome definido ainda. Na verdade este projeto já está em desenvolvimento, precisando de ajustes.
Em relação a verba recebida da prefeitura de Campo Limpo Paulista, nesta sexta a nota fiscal e os dados de depósito foram enviados a Prefeitura e agora, é só questão de tempo. Ainda nos resta o problema de baterias.
terça-feira, 14 de agosto de 2012
Sumo 20x20 - Pequenos Cientistas
Aqui estão os rascunhos de construção da estrutura do robô de sumô e viagem ao centro da Terra e as fotos da montagem, de responsabilidade do Daniel. Estas estruturas estão sem medidas pois se baseiam no projeto original e as adaptações foram feitas conforme os problemas foram surgindo. As fotos foram realizadas pelo celular do Daniel.
Base do chassi e suporte para os servo-motores
Suporte do Arduíno e Protoboard
Rodas
Rampa de proteção
Bom depois de elaborar os rascunhos começou a construção:
Arduino sobre o suporte e Protoboard:
Montagem final do robô com a base, rodas, suporte e rampa de defesa. Agora só falta os sensores:
Programa usado no pré-teste dos motores, para testar o L297N (ponte H) e os servo motores:
/* Este código permite o passo de 2 motores*/
//motor direito
int motorPin1 = 7;
int motorPin2 = 8;
//motor esquerdo
int motorPin3 = 3;
int motorPin4 = 4;
int delayTime = 3000;
void setup() {
//configura os pinos digitais do motor direito
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
//configura os pinos digitais do motor esquerdo
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop() {
//motor direito
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}
Vídeo do teste dos motores com L297:
Vídeos da montagem final com baterias, falta apenas a instalação dos sensores. O programa usado foi o mesmo do teste anterior mas agora somente
Vídeo do sistema completo embarcado, sem alimentação por fonte ligada a tomada.
Boas notícias:
- O chassi está quase pronto, faltando detalhes de regulagem
- Temos 7 sensores e falta apenas 7 sensores que ficam prontos nesta quarta-feira
- A bateria que montamos de 2 baterias chumbo-ácidas doadas estão "pegando" carga o que quer dizer uma economia de R$ 30 reais e uma bateria de 8V com 400 mAh
- Conseguimos, graças ao Paulo da Equipe Orion, uma broca de 1,5 mm que pode funcionar para fazer as placas de sensores que faltam, testaremos amanhã, por um módico preço de R$2,60.
- Estamos no prazo com todas as equipes.
Problemas a resolver ainda:
- Comprar L298N para a equipe Orion.
- Instalar os sensores de linha e distância e testar.
- Melhorar os sensores de distância pois o alcance está limitado a 5 cm.
- Testar as 2 configurações novas de sensores - aumentando a distância entre os led´s emissores e receptores para 2cm e usando resistores de 170 ohm no emissor e 4k7 no receptor.
Em breve postaremos as fotos dos sensores IR e o chassi com eles embarcados.
Estamos quase lá, força pessoal.
PS: Ainda não postamos nada da equipe Orion pois o material está no celular da Coordenadora Vani do Elza Facca.
Marcadores:
arduino,
l298n,
motores,
ponte H,
robô de sumô,
robôs,
robot,
rodas para robôs,
sumô,
sumô robot
terça-feira, 24 de julho de 2012
Teste Virtual do TITAN I - Simulino
Após o teste dos sensores utilizando led´s, agora testamos o programa em motores de passo no Simulino. O resultado foi positivo. O programa está pronto, falta a parte de chassi e placas.
Marcadores:
arduino,
blink,
eaduino,
l298,
mecatrônica,
Motor de passo,
ponte H,
sensor,
sensor infravermelho,
sensor ir,
Simulino,
stepper motor,
sumô
Teste - sensores ativando o passo e motores
O filme abaixo apresenta o teste em Simulino apresentando 6 sensores ativando 2 motores (led´s verdes) e o passo utilizado nestes motores (led´s azuis). O objetivo e controlar sincronicamente 2 motores de passo utilizando 6 sensores e o Arduino.
O código fonte utilizado está "sujo", ou seja, ainda não usa equações, vetores ou funções para obter o resultado final e, tem opção de 4 pinos digitais para ativação de motores.
/* Programa para leitura de 6 sensores IR - Projeto Robô Lutador de Sumô
Equipe Pequenos Cientistas 2012
*/
//variavel dos pinos analogicos
int IR1=0;
int IR2=1;
int IR3=2;
int IR4=3;
int IR5=4;
int IR6=5;
//variavel dos pinos digitais
//pinos de ativação dos motores
//int L1 = 4;
//int L2 = 5;
int L3 = 6;
int L4 = 7;
//pinos do passo
int L5 = 8;
int L6 = 9;
int L7 = 10;
int L8 = 11;
//tempo do passo
int tempo = 500;
//variaveis de comparação da leitura dos pinos analogicos
//valor da tensão do pino analógico que determina o sinal
int maximo = 2;
//variaveis das diversas leituras
int VR1;
int VR2;
int VR3;
int VR4;
int VR5;
int VR6;
void setup() {
// configura o pino como saida
//pinMode(L1, OUTPUT);
//pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);
pinMode(L7, OUTPUT);
pinMode(L8, OUTPUT);
// configura o pino como entrada
pinMode(IR1, INPUT);
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(IR3, INPUT);
pinMode(IR4, INPUT);
pinMode(IR5, INPUT);
Serial.begin (9600);
}
void loop(){
// le o estado do botao
VR1 = analogRead(IR1) * 0.0049;
VR2 = analogRead(IR2) * 0.0049;
VR3 = analogRead(IR3) * 0.0049;
VR4 = analogRead(IR4) * 0.0049;
VR5 = analogRead(IR5) * 0.0049;
VR6 = analogRead(IR6) * 0.0049;
// verifica se o sensor está ativo
if (VR1 > maximo) {
// aciona os motores 1 e 2
//digitalWrite(L1, HIGH);
//digitalWrite(L2, HIGH);
digitalWrite(L3, HIGH);
digitalWrite(L4, HIGH);
//passo
digitalWrite(L5, HIGH);
delay(tempo);
digitalWrite(L5, LOW);
digitalWrite(L6, HIGH);
delay(tempo);
digitalWrite(L6, LOW);
digitalWrite(L7, HIGH);
delay(tempo);
digitalWrite(L7, LOW);
digitalWrite(L8, HIGH);
delay(tempo);
digitalWrite(L8, LOW);
}
else {
//desliga os motores 1 e 2
//digitalWrite(L1, LOW);
//digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
//desliga o passo
digitalWrite(L5, LOW);
digitalWrite(L6, LOW);
digitalWrite(L7, LOW);
digitalWrite(L8, LOW);
}
if (VR2 > maximo){
//aciona um dos motores, o outro desligado
//digitalWrite(L1, HIGH);
//digitalWrite(L2, HIGH);
digitalWrite(L3, LOW);
digitalWrite(L4, HIGH);
//passo
digitalWrite(L5, HIGH);
delay(tempo);
digitalWrite(L5, LOW);
digitalWrite(L6, HIGH);
delay(tempo);
digitalWrite(L6, LOW);
digitalWrite(L7, HIGH);
delay(tempo);
digitalWrite(L7, LOW);
digitalWrite(L8, HIGH);
delay(tempo);
digitalWrite(L8, LOW);
}
else {
//digitalWrite(L1, LOW);
//digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
}
if (VR3 > maximo) {
//aciona o outro dos motores, o anterior desligado
//digitalWrite(L1, LOW);
//digitalWrite(L2, LOW);
digitalWrite(L3, HIGH);
digitalWrite(L4, LOW);
//passo
digitalWrite(L5, HIGH);
delay(tempo);
digitalWrite(L5, LOW);
digitalWrite(L6, HIGH);
delay(tempo);
digitalWrite(L6, LOW);
digitalWrite(L7, HIGH);
delay(tempo);
digitalWrite(L7, LOW);
digitalWrite(L8, HIGH);
delay(tempo);
digitalWrite(L8, LOW);
}
else {
//digitalWrite(L1, LOW);
//digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
}
if (VR4 > maximo) {
// aciona os motores 1 e 2
//digitalWrite(L1, HIGH);
//digitalWrite(L2, HIGH);
digitalWrite(L3, HIGH);
digitalWrite(L4, HIGH);
//PASSO INVERTIDO
digitalWrite(L8, HIGH);
delay (tempo);
digitalWrite(L8, LOW);
digitalWrite(L7, HIGH);
delay (tempo);
digitalWrite(L7, LOW);
digitalWrite(L6, HIGH);
delay (tempo);
digitalWrite(L6, LOW);
digitalWrite(L5, HIGH);
delay (tempo);
digitalWrite(L5, LOW);
}
else {
//digitalWrite(L1, LOW);
//digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
}
if (VR5 > maximo) {
//digitalWrite(L1, HIGH);
//digitalWrite(L2, HIGH);
digitalWrite(L3, HIGH);
digitalWrite(L4, LOW);
//PASSO INVERTIDO
digitalWrite(L8, HIGH);
delay (tempo);
digitalWrite(L8, LOW);
digitalWrite(L7, HIGH);
delay (tempo);
digitalWrite(L7, LOW);
digitalWrite(L6, HIGH);
delay (tempo);
digitalWrite(L6, LOW);
digitalWrite(L5, HIGH);
delay (tempo);
digitalWrite(L5, LOW);
}
else {
//digitalWrite(L1, LOW);
//digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
}
if (VR6 > maximo) {
digitalWrite(L3, LOW);
digitalWrite(L4, HIGH);
//PASSO INVERTIDO
digitalWrite(L8, HIGH);
delay (tempo);
digitalWrite(L8, LOW);
digitalWrite(L7, HIGH);
delay (tempo);
digitalWrite(L7, LOW);
digitalWrite(L6, HIGH);
delay (tempo);
digitalWrite(L6, LOW);
digitalWrite(L5, HIGH);
delay (tempo);
digitalWrite(L5, LOW);
}
else {
//digitalWrite(L1, LOW);
//digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
}
}
Marcadores:
arduino,
mecatrônica,
robôs,
sensor infravermelho,
Simulino,
sumô
segunda-feira, 23 de julho de 2012
Teste - Sensores de IR
Este teste usa o Simulino, simulador do Arduino no Proteus, com o código fonte abaixo, para simular a leitura de sensores IR. Estes sensores serão utilizados no TITAN I e outros robôs, sendo o código adaptado para cada situação em particular. Os botões atuam fechando o circuito, ou seja, se um objeto refletir a luz IR o Arduíno recebe um sinal acendendo um led específico. O fator de multiplicação converte o sinal analógico do Arduíno em tensão.
/* Programa para leitura de 6 sensores IR - Projeto Robô Lutador de Sumô
Equipe Pequenos Cientistas 2012
*/
int IR1=0;
int IR2=1;
int IR3=2;
int IR4=3;
int IR5=4;
int IR6=5;
int L1 = 5;
int L2 = 6;
int L3 = 7;
int L4 = 8;
int L5 = 9;
int L6 = 10;
int maximo = 2;
int VR1;
int VR2;
int VR3;
int VR4;
int VR5;
int VR6;
void setup() {
// configura o pino como saida
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);
// configura o pino como entrada
pinMode(IR1, INPUT);
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(IR3, INPUT);
pinMode(IR4, INPUT);
pinMode(IR5, INPUT);
Serial.begin (9600);
}
void loop(){
// le o estado do botao
VR1 = analogRead(IR1) * 0.0049;
VR2 = analogRead(IR2) * 0.0049;
VR3 = analogRead(IR3) * 0.0049;
VR4 = analogRead(IR4) * 0.0049;
VR5 = analogRead(IR5) * 0.0049;
VR6 = analogRead(IR6) * 0.0049;
// verifica se o sensor está ativo
if (VR1 > maximo) {
// se sim, acende o LED
digitalWrite(L1, HIGH);
}
else {
digitalWrite(L1, LOW);
}
if (VR2 > maximo){
// caso contrario, apaga o LED
digitalWrite(L2, HIGH);
}
else {
digitalWrite(L2, LOW);
}
if (VR3 > maximo) {
// se sim, acende o LED
digitalWrite(L3, HIGH);
}
else {
digitalWrite(L3, LOW);
}
if (VR4 > maximo) {
// se sim, acende o LED
digitalWrite(L4, HIGH);
}
else {
digitalWrite(L4, LOW);
}
if (VR5 > maximo) {
// se sim, acende o LED
digitalWrite(L5, HIGH);
}
else {
digitalWrite(L5, LOW);
}
if (VR6 > maximo) {
// se sim, acende o LED
digitalWrite(L6, HIGH);
}
else {
digitalWrite(L6, LOW);
}
}
O vídeo abaixo ilustra a execução do código.
sexta-feira, 20 de julho de 2012
Sensores Infravermelho para Robôs de Sumo
O projeto de robôs de sumo envolve o uso de sensores de linha, que normalmente são Infravermelhos (IR) e, sensores de distância, para identificar objetos. Os sensores de distância podem ser ultrassônicos (utilizam sons com frequências acima da audição humana) ou sensores de infravermelho. A escolha de infravermelho se deve ao custo deste em relação aos sensores de som - R$60,00 os de ultrassom, R$12,00 os IR e para fazer o sensor IR, cerca de R$5,00. A questão de fazer os sensores IR envolve a compra (TIL32 e TIL78 sofrem interferência da luza ambiente) e a montagem - o fototransistor é invertido, coisa que descobrimos do pior jeito (errando que se aprende).
É importante destacar que o ideal é testar os sensores antes de utilizar. A estática da mão pode queimar o fototransistor e a temperatura do ferro de solda pode fazer o mesmo. O sistema proposto abaixo economiza, e muito, energia durante os combates. Não pode ser usado para medir distâncias, apesar das informações deste esquema no Multisim ter indicado que o LED IR "pisca" com uma frequencia de 24Khz. Sem um osciloscópio não arriscaria usar esse valor como referência. Se bem isolado, consegue até 10 cm de sensibilidade.
O código abaixo pode ser utilizado para calcular a distância, mas o objetivo inicial deste código é apenas testar os 6 sensores.
/* Programa para leitura de 6 sensores IR - Projeto Robô Lutador de Sumô Equipe Pequenos Cientistas 2012
*/
int IR1=0;
int IR2=1;
int IR3=2;
int IR4=3;
int IR5=4;
int IR6=5;
int L1 = 5;
int L2 = 6;
int L3 = 7;
int L4 = 8;
int L5 = 9;
int L6 = 10;
int maximo = 400;
int VR1;
int VR2;
int VR3;
int VR4;
int VR5;
int VR6;
void setup() {
// configura o pino como saida
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);
// configura o pino como entrada
pinMode(IR1, INPUT);
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(IR3, INPUT);
pinMode(IR4, INPUT);
pinMode(IR5, INPUT);
Serial.begin (9600);
}
void loop(){
// le o estado do botao
VR1 = analogRead(IR1);
VR2 = analogRead(IR2);
VR3 = analogRead(IR3);
VR4 = analogRead(IR4);
VR5 = analogRead(IR5);
VR6 = analogRead(IR6);
// verifica se o sensor está ativo
if (VR1 >= maximo) {
// se sim, acende o LED
digitalWrite(L1, HIGH);
}
if (VR2 >= maximo){
// caso contrario, apaga o LED
digitalWrite(L2, LOW);
}
if (VR3 >= maximo) {
// se sim, acende o LED
digitalWrite(L3, HIGH);
}
if (VR4 >= maximo) {
// se sim, acende o LED
digitalWrite(L4, HIGH);
}
if (VR5 >= maximo) {
// se sim, acende o LED
digitalWrite(L5, HIGH);
}
if (VR6 >= maximo) {
// se sim, acende o LED
digitalWrite(L6, HIGH);
}
}
Aliás, é possível utilizar este código para controlar o robô bastando substituir os leds com seus resistores por pontes H. Caso se interesse verifique nosso post anterior.
Abaixo uma sugestão de como montar uma placa com sensores IR para um robô de sumô 20x20 cm.
Marcadores:
arduino,
distance,
mecatrônica,
robôs,
robot,
sensor infravermelho,
sensor ir,
sumô,
til32,
til78
Assinar:
Postagens (Atom)





















