Robotica: mudanças entre as edições
De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Sem resumo de edição |
|||
Linha 29: | Linha 29: | ||
O '''[http://www.lego.com/en-us/mindstorms/ Lego Mindstorms]''' é uma linha do brinquedo LEGO, voltada para a educação tecnológica. É constituído por um conjunto de peças de montar da linha tradicional LEGO e peças especiais integradas com motores, eixos, engrenagens, polias e correntes, acrescido de sensores de toque, de intensidade luminosa e de temperatura, controlados por um processador programável. | O '''[http://www.lego.com/en-us/mindstorms/ Lego Mindstorms]''' é uma linha do brinquedo LEGO, voltada para a educação tecnológica. É constituído por um conjunto de peças de montar da linha tradicional LEGO e peças especiais integradas com motores, eixos, engrenagens, polias e correntes, acrescido de sensores de toque, de intensidade luminosa e de temperatura, controlados por um processador programável. | ||
;Projetos para Lego NXT 2.0: | |||
*[http://www.nxtprograms.com/projects2.html Projetos com Lego Mindstorms] | *[http://www.nxtprograms.com/projects2.html Projetos com Lego Mindstorms] | ||
;Software para módulo Lego NXT: | ;Software para módulo Lego NXT: | ||
*O '''Lego NXT''' usa software proprietário que roda sobre a plataforma '''Windows''' da '''MicroSoft'''. | *O '''Lego NXT''' usa software proprietário que roda sobre a plataforma '''Windows''' da '''MicroSoft'''. | ||
*O '''[[Enchanting e LeJOS|Enchanting]]''' é uma adaptação da linguagem '''[[Scratch]]''', voltada para a programação dos módulos '''Lego NXT''', através da substituição do ''firmware'' original pelo sistema '''LeJOS''' (''Lego Java Operating System''). | |||
* | |||
==Seguidor de Linha com controle PID== | ==Seguidor de Linha com controle PID== |
Edição das 17h32min de 31 de outubro de 2022
Robótica
Objetivo
O objetivo do projeto de Robótica é preparar equipes de alunos para participar das competições da Olimpíada de Robótica do IFPR.
- Modalidades
- Seguidor de linha Junior (Lego)
- Seguidor de linha Pro (Arduíno)
- Resgate OBR (Lego e Arduíno)
- Sumô 1 kg (Lego)
- Mini Sumô 500 g (Arduíno)
Oficina de Robótica
Nesta oficina são desenvolvidos os conhecimentos básicos sobre o Arduíno, assim como o uso de sensores de linha e controle de motores, necessários para a montagem de Robôs Seguidores de Linha.
Materiais sobre robótica com Arduíno
- Sensores
- Baterias
Robótica com Lego Mindstorms
O Lego Mindstorms é uma linha do brinquedo LEGO, voltada para a educação tecnológica. É constituído por um conjunto de peças de montar da linha tradicional LEGO e peças especiais integradas com motores, eixos, engrenagens, polias e correntes, acrescido de sensores de toque, de intensidade luminosa e de temperatura, controlados por um processador programável.
- Projetos para Lego NXT 2.0
- Software para módulo Lego NXT
- O Lego NXT usa software proprietário que roda sobre a plataforma Windows da MicroSoft.
- O Enchanting é uma adaptação da linguagem Scratch, voltada para a programação dos módulos Lego NXT, através da substituição do firmware original pelo sistema LeJOS (Lego Java Operating System).
Seguidor de Linha com controle PID
- Seguidor de Linha com controle PID
- Página Wiki com resumo da Teoria de Controle PID e de uma forma de implementação deste tipo de controle em um Robô Seguidor de Linha.
Programas Exemplo
Teste do sensor Infra Vermelho
//Arduino Sensor Infra Red
int sensor = 0;
int leitura = 0;
void setup()
{
pinMode(sensor, INPUT);
Serial.begin(9600);
}
void loop()
{
leitura1 = analogRead(sensor);
Serial.print("Leitura: ");
Serial.println(leitura);
Serial.println();
delay(1000);
}
Teste dos motores com módulo Ponte H L298
//Programa para teste do motor CC com o L293D
//Definicoes pinos Arduino ligados a entrada da Ponte H
int IN1 = 2;
int IN2 = 4;
int IN3 = 7;
int IN4 = 8;
int MA = 5;
int MB = 6;
int velocidade = 200; //Velocidade do motor (0? a 255)
//Testar velocidade mínima para vencer inércia dos motores
void setup()
{
//Define os pinos como saida
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(MA, OUTPUT);
pinMode(MB, OUTPUT);
}
void loop()
{
//Configura velocidade dos motores
analogWrite(MA, velocidade);
analogWrite(MB, velocidade);
//Aciona o motores
digitalWrite(IN1, LOW); //A
digitalWrite(IN2, HIGH); //A
digitalWrite(IN3, LOW); //B
digitalWrite(IN4, HIGH); //B
delay(1000);
//Pára motores
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
delay(1000);
//Aciona o motores no sentido inverso
digitalWrite(IN1, HIGH); //A
digitalWrite(IN2, LOW); //A
digitalWrite(IN3, HIGH); //B
digitalWrite(IN4, LOW); //B
delay(1000);
//Pára motores
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
delay(1000);
}
Programa Seguidor de Linha 2022
- Ponte H
- Módulo L298D
//Componentes: Ponte H L298D e sensor InfraRed
//Programador: Evandro Cantu
//Veriáveis utilizadas
int sensorEsq, sensorLinha, sensorDir;
//int sensorFim;
int velMin = 120, velMed = 180, velMax = 240; //Velocidades dos motores
int limiar = 400; //limiar do sensor de luz
//Definicoes pinos Arduino ligados a entrada da Ponte H
int IN1 = 2;
int IN2 = 4;
int IN3 = 7;
int IN4 = 8;
int MA = 5; //Motor direito
int MB = 6; //Motor esquerdo
void setup(){
//Define os pinos como saida
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(MA, OUTPUT);
pinMode(MB, OUTPUT);
}
void para_frente(int vel) {
//Configura velocidade dos motores
analogWrite(MA, vel);
analogWrite(MB, vel);
//Aciona o motores
digitalWrite(IN1, LOW); //A
digitalWrite(IN2, HIGH); //A
digitalWrite(IN3, LOW); //B
digitalWrite(IN4, HIGH); //B
}
void vira_esquerda(int vel) {
//MotorA_frente
analogWrite(MA, vel);
digitalWrite(IN1, LOW); //A
digitalWrite(IN2, HIGH); //A
//MotorB_tras
analogWrite(MB, vel);
digitalWrite(IN3, HIGH); //B
digitalWrite(IN4, LOW); //B
}
void vira_direita(int vel) {
//MotorA_tras
analogWrite(MA, vel);
digitalWrite(IN1, HIGH); //A
digitalWrite(IN2, LOW); //A
//MotorB_frente
analogWrite(MB, vel);
digitalWrite(IN3, LOW); //B
digitalWrite(IN4, HIGH); //B
}
void segueLinha(){
//le os sensores
sensorDir = analogRead(2);
sensorLinha = analogRead(1);
sensorEsq = analogRead(0);
//sensorFim = analogRead(3);
//Se estiver na linha segue em frente
if (sensorLinha < limiar){
para_frente(velMax);
}
//Se sensorDir acha linha vire para a direita
if (sensorDir < limiar && sensorLinha > limiar){
vira_direita(velMed);
}
//Se sensorEsq acha linha vire para a esquerda
if (sensorEsq < limiar && sensorLinha > limiar){
vira_esquerda(velMed);
}
}
void loop(){
segueLinha();
}
Programa Seguidor de Linha V7 2017
- Motor Shield
- DK Electronics
//Componentes: Motor Shield DKelectronics e sensor InfraRed
//Programadores: Eduardo Alexandre; Joabe Oliveira; Evandro Cantu
#include <AFMotor.h>
AF_DCMotor motorEsq(2); //Seleciona o motor esquerdo
AF_DCMotor motorDir(1); //Seleciona o motor direito
int sensorEsq, sensorLinha, sensorDir, sensorFim;
int contFim = 4; //Conta marcas de início, fim e cruzamentos
boolean flag = false;
long tempoTotal; //Tempo total da volta
int tempoExtra = 2000; //Tempo extra após fim de pista
int velMin = 80, velMed = 120, velMax = 255; //Velocidades dos motores
int limiar = 500; //limiar do sensor de cor
void segueLinha(){
//le os sensores
sensorEsq = analogRead(5);
sensorLinha = analogRead(4);
sensorDir = analogRead(3);
sensorFim = analogRead(1);
//Se estiver na linha segue em frente
if (sensorLinha < limiar){
motorEsq.setSpeed(velMax);
motorEsq.run(FORWARD);
motorDir.setSpeed(velMax);
motorDir.run(FORWARD);
}
//Se sensorDir acha linha vire para a direita
if (sensorDir < limiar && sensorLinha > limiar){
motorEsq.setSpeed(velMed);
motorEsq.run(FORWARD);
motorDir.setSpeed(velMin);
motorDir.run(BACKWARD);
}
//Se sensorEsq acha linha vire para a esquerda
if (sensorEsq < limiar && sensorLinha > limiar){
motorDir.setSpeed(velMed);
motorDir.run(FORWARD);
motorEsq.setSpeed(velMin);
motorEsq.run(BACKWARD);
}
}
void setup(){
}
void loop(){
//Segue linha até encontrar marca de fim de pista
while(contFim > 0){
segueLinha();
if (sensorFim < limiar)
flag = true;
if (sensorFim > limiar && flag == true){
flag=false;
contFim--;
}
}
//Segue linha por mais 2 segundos antes de parar
tempoTotal = millis();
while((millis() - tempoTotal) < tempoExtra)
segueLinha();
//Pára motores
motorDir.run(RELEASE);
motorEsq.run(RELEASE);
//Espera 10s
delay(10000);
while(true);
}
Referências
- ↑ FelipeFlop. Motor DC com Driver Ponte H L298N, 2013. https://www.filipeflop.com/blog/motor-dc-arduino-ponte-h-l298n/