Omet navegació

6.6) Motors amb l'escut L298 (PWM)

Fes el muntatge:

Arduino + Escut L298 PWM + Motors A i B

A continuació fes el següent programa amb Blockly@rduino:

Escut Arduino L298 PWM

Aquest escut fa anar H el motor A amb l'entrada IN2 activada, i aH amb l'entrada IN1 activada. El motor B el fa anar H amb l'entrada IN4 activada i el fa anar aH amb l'entrada IN3 activada. El PWM quan activa el pin ENA (Enable A) controla la velocitat amb que gira el motor A variant entre 0 i 255 a màxima velocitat. El PWM quan activa el pin ENB (Enable B) controla la velocitat amb que gira el motor B variant entre 0 i 255 a màxima velocitat. 

El programa equivalent per l'Arduino IDE és aquest:

// Motor A Horari PWM
void Motor_A_Horari_PWM() {
  Serial.println("Escut L298 motor A Horari");
  Serial.println("Activem IN1=6 ");
  digitalWrite(6, HIGH);
  Serial.println("Desactivem IN2=7");
  digitalWrite(7, LOW);
  Serial.println("ENA=11 PWM varia entre 0 i 255");
  analogWrite(11, 128);
}


// Motor B Horari PWM
void Motor_B_Horari_PWM() {
  Serial.println("Escut L298 motor B Horari");
  Serial.println("Activem IN4=4 ");
  digitalWrite(4, HIGH);
  Serial.println("Desactivem IN3=5");
  digitalWrite(5, LOW);
  Serial.println("ENB=10 PWM varia entre 0 i 255");
  analogWrite(10, 128);
}


// Motor A antiHorari PWM
void Motor_A_antiHorari_PWM() {
  Serial.println("Escut L298 motor A antiHorari");
  Serial.println("Desactivem IN1=6 ");
  digitalWrite(6, LOW);
  Serial.println("Activem IN2=7");
  digitalWrite(7, HIGH);
  Serial.println("ENA=11 PWM varia entre 0 i 255");
  analogWrite(11, 128);
}


// Motor B antiHorari PWM
void Motor_B_antiHorari_PWM() {
  Serial.println("Escut L298 motor B Horari");
  Serial.println("Desactivem IN4=4 ");
  digitalWrite(4, LOW);
  Serial.println("Activem IN3=5");
  digitalWrite(5, HIGH);
  Serial.println("ENB=10 PWM varia entre 0 i 255");
  analogWrite(10, 128);
}


// Atura motor A
void Atura_Motor_A() {
  Serial.println("Escut L298 motor A aturat");
  Serial.println("Desactivem IN1=6 ");
  digitalWrite(6, LOW);
  Serial.println("Desactivem IN2=7");
  digitalWrite(7, LOW);
}


// Atura motor B
void Atura_Motor_B() {
  Serial.println("Escut L298 motor B aturat");
  Serial.println("Desactivem IN4=4 ");
  digitalWrite(4, LOW);
  Serial.println("Desactivem IN3=5");
  digitalWrite(5, LOW);
}



void setup() {
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(10, OUTPUT);
  Serial.begin(9600);

}

void loop() {
    Motor_A_Horari_PWM();
    delay(5000);
    Motor_A_antiHorari_PWM();
    delay(5000);
    Atura_Motor_A();
    delay(5000);
    Motor_B_Horari_PWM();
    delay(5000);
    Motor_B_antiHorari_PWM();
    delay(5000);
    Atura_Motor_B();
}

Fes la pràctica de motors PWM 1.