Motors amb control PWM
Arduino UNO no té prou intensitat a les eixides digitals per controlar cap motor de corrent continu. Per això cal utilitzar l'escut Arduino Rev3 que té un integrat L293 per augmentar la intensitat a l'eixida on estan connectats els motors. Fes el muntatge següent amb dos motors.
Ara fes el següent programa amb Blockly@rduino.
Aquest escut usa els pins 12 i 13 per controlar la direcció dels motors posats als canals A i B. Usa els pins 9 i 8 com fre per aturar els motors o permetre el seus funcionament als motors A i B. Els pins 3 i 11 controlen la velocitat amb la funció PWN variant des de 0 fins 255. A continuació mira el programa equivalent per Arduino IDE:
// Motor A horari
void Motor_A_Horari() {
Serial.println("pinDirA=12 Ho activem per sentit Horari");
digitalWrite(12, HIGH);
Serial.println("pinFreA=9 Ho desactivem per fer anar el motor");
digitalWrite(9, LOW);
Serial.println("pinPWM_A=3 En variar de 0 a 255 varia velocitat");
analogWrite(3, 255);
}
// Motor B horari
void Motor_B_Horari() {
Serial.println("pinDirB=13 Ho activem per sentit Horari");
digitalWrite(13, HIGH);
Serial.println("pinFreB=8 Ho desactivem per fer anar el motor");
digitalWrite(8, LOW);
Serial.println("pinPWM_B=11 En variar de 0 a 255 varia velocitat");
analogWrite(11, 255);
}
// Motor A antiHorari
void Motor_A_antiHorari() {
Serial.println("pinDirA=12 Ho desactivem per sentit antiHorari");
digitalWrite(12, LOW);
Serial.println("pinFreA=9 Ho desactivem per fer anar el motor");
digitalWrite(9, LOW);
Serial.println("pinPWM_A=3 En variar de 0 a 255 varia velocitat");
analogWrite(3, 255);
}
// Motor B antiHorari
void Motor_B_antiHorari() {
Serial.println("pinDirB=13 Ho desactivem per sentit antiHorari");
digitalWrite(13, LOW);
Serial.println("pinFreB=8 Ho desactivem per fer anar el motor");
digitalWrite(8, LOW);
Serial.println("pinPWM_B=11 En variar de 0 a 255 varia velocitat");
analogWrite(11, 50);
}
// Motor A aturat
void Motor_A_aturat() {
Serial.println("pinFreA=9 Ho activem per aturar el motor");
digitalWrite(9, HIGH);
}
// Motor B aturat
void Motor_B_aturat() {
Serial.println("pinFreB=8 Ho activem per aturar el motor");
digitalWrite(8, HIGH);
}
void setup() {
pinMode(12, OUTPUT);
pinMode(9, OUTPUT);
pinMode(3, OUTPUT);
pinMode(13, OUTPUT);
pinMode(8, OUTPUT);
pinMode(11, OUTPUT);
Serial.begin(9600);
}
void loop() {
Motor_A_Horari();
delay(5000);
Motor_A_antiHorari();
delay(5000);
Motor_A_aturat();
delay(5000);
Motor_B_Horari();
delay(5000);
Motor_B_antiHorari();
delay(5000);
Motor_B_aturat();
delay(5000);
}
Fes la pràctica Motor 1 i la pràctica Motor 2.