Oficina de Robotica: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 30: Linha 30:
;[https://drive.google.com/file/d/1o3nCXAXjwliVZnjdxDFUfVPxCy4EatIn/view?usp=sharing Vídeo Aula 4: Arduíno: Saídas analógicas]
;[https://drive.google.com/file/d/1o3nCXAXjwliVZnjdxDFUfVPxCy4EatIn/view?usp=sharing Vídeo Aula 4: Arduíno: Saídas analógicas]


==Programas Exemplo==
==Controle dos Motores==
===Teste do sensor Infra Vermelho===
 
<source lang="c">
===Circuito Integrado L298N===
//Arduino Sensor Infra Red
 
int sensor = 0; 
O '''L298N''' (''[https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf datasheet]'') é um circuito integrado '''ponte H''' de '''maior potência''', permite controlar velocidade e direção de até 2 '''motores DC''' que precisem de até 3 A de corrente contínua, acionados por voltagem de até 50 volts. Ele também pode ser usado para ativar relés, motores de passo e outros.
int leitura = 0; 
 
O funcionamento do L298N (similar ao L293D) segue a seguinte '''tabela verdade''' (exemplo para  motor A):
void setup()
{| class="wikitable"
{
|-
    pinMode(sensor, INPUT); 
| '''1IN''' || '''2IN''' || '''EnA''' || Motor A
    Serial.begin(9600);
|-
}  
| H || L || PWM<sup>1</sup> || Sentido Horário<sup>2</sup>
|-
void loop()
| L || H || PWM<sup>1</sup> || Sentido Anti-horário<sup>2</sup>
{
|-
  leitura1 = analogRead(sensor);
| L || L || X || Pára motor
  Serial.print("Leitura: ");
|-
  Serial.println(leitura);
| H || H || X || Pára motor
  Serial.println(); 
|-
  delay(1000);
| X || X || L || Ponto morto
}
|-
</source>
 
|}  
Obs:
:<sup>1</sup> Velocidade controlada pelo sinal PWM,
:<sup>2</sup> O sentido de rotação depende também da forma de conexão dos fios nos bornes do motor.
 
;Controle da corrente sobre a carga: Alem dos pinos de controle e saída, o circuito integrado '''L298''' apresenta dois pinos de saída chamados '''Sense A''' e '''Sense B''', nos quais devem ser conectados resistores para '''controlar a corrente sobre a carga''' (respectivamente para o Motor A e Motor B). O valor dos resistores R<sub>S1</sub> e R<sub>S2</sub> dependem da corrente da carga (Sugestão: R<sub>S1</sub> = R<sub>S2</sub> = 0.5 &Omega;). Além disto, deve ser conectada a alimentação dos motores em Vs.


===Teste dos motores com módulo Ponte H L298===
===Teste dos motores com módulo Ponte H L298===
Linha 113: Linha 119:
   delay(1000);
   delay(1000);
}   
}   
</source>
==Sensor de Linha Infra Vermelho==
===Teste do sensor Infra Vermelho===
<source lang="c">
//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);
}
</source>
</source>



Edição das 17h36min de 2 de maio de 2022

Oficina de Robótica

Objetivo

O objetivo da oficina de Robótica é preparar equipes de alunos para participar das competições da Olimpíada de Robótica do IFPR.

Esta oficina está voltada para a modalidade Robótica Livre permite que os robôs sejam construídos com materiais e componentes diversos e programados por qualquer sistema de microcontroladores, incluindo o Arduíno.

Conteúdo da oficina sobre robótica com Arduíno

Aula 1

Descrição do Arduíno
Arduíno: Saídas digitais e leds
Vídeo Aula 1: Descrição do Arduíno e saídas digitais

Aula 2

Arduíno: Entradas digitais e chaves
Vídeo Aula 2: Arduíno: Entradas digitais e chaves

Aula 3

Arduíno: Entradas analógicas
Vídeo Aula 3: Arduíno: Entradas analógicas

Aula 4

Arduíno: Saídas analógicas
Vídeo Aula 4: Arduíno: Saídas analógicas

Controle dos Motores

Circuito Integrado L298N

O L298N (datasheet) é um circuito integrado ponte H de maior potência, permite controlar velocidade e direção de até 2 motores DC que precisem de até 3 A de corrente contínua, acionados por voltagem de até 50 volts. Ele também pode ser usado para ativar relés, motores de passo e outros.

O funcionamento do L298N (similar ao L293D) segue a seguinte tabela verdade (exemplo para motor A):

1IN 2IN EnA Motor A
H L PWM1 Sentido Horário2
L H PWM1 Sentido Anti-horário2
L L X Pára motor
H H X Pára motor
X X L Ponto morto

Obs:

1 Velocidade controlada pelo sinal PWM,
2 O sentido de rotação depende também da forma de conexão dos fios nos bornes do motor.
Controle da corrente sobre a carga
Alem dos pinos de controle e saída, o circuito integrado L298 apresenta dois pinos de saída chamados Sense A e Sense B, nos quais devem ser conectados resistores para controlar a corrente sobre a carga (respectivamente para o Motor A e Motor B). O valor dos resistores RS1 e RS2 dependem da corrente da carga (Sugestão: RS1 = RS2 = 0.5 Ω). Além disto, deve ser conectada a alimentação dos motores em Vs.

Teste dos motores com módulo Ponte H L298

[1]

//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);
}

Sensor de Linha Infra Vermelho

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);
}

Referências

  1. FelipeFlop. Motor DC com Driver Ponte H L298N, 2013. https://www.filipeflop.com/blog/motor-dc-arduino-ponte-h-l298n/