Questo è il codice caricato su Arduino:
const int motor_l1 = 8;
const int motor_l2 = 9;
const int motor_r1 = 10;
const int motor_r2 = 11;
const int enable_l = 5;
const int enable_r = 6;
#define ML_MAX_SPEED 255
#define MR_MAX_SPEED 255
void setup() {
pinMode(enable_l, OUTPUT);
pinMode(enable_r, OUTPUT);
pinMode(motor_l1, OUTPUT);
pinMode(motor_l2, OUTPUT);
pinMode(motor_r1, OUTPUT);
pinMode(motor_r2, OUTPUT);
motorspeed(ML_MAX_SPEED/2, MR_MAX_SPEED/2);
}
void loop() {
delay(2000);
directionl(true);
directionr(true);
delay(2000);
directionl(false);
directionr(false);
}
void motorspeed (int motor_l_speed, int motor_r_speed) {
if (motor_l_speed > ML_MAX_SPEED ) motor_l_speed = ML_MAX_SPEED; // limit top speed
if (motor_r_speed > ML_MAX_SPEED ) motor_r_speed = ML_MAX_SPEED; // limit top speed
if (motor_l_speed < 0) motor_l_speed = 0; // keep motor above 0
if (motor_r_speed < 0) motor_r_speed = 0; // keep motor speed above 0
analogWrite (enable_l, motor_l_speed);
analogWrite (enable_r, motor_r_speed);
}
void directionl (bool dir) {
digitalWrite(motor_l1, !dir);
digitalWrite(motor_l2, dir);
}
void directionr (bool dir) {
digitalWrite(motor_r1, !dir);
digitalWrite(motor_r2, dir);
}
Nel video si vede chiaramente che il robot non va dritto seguendo una linea retta, ad un certo punto addirittura una ruota non riparte subito e quindi il robot ruota quasi su se stesso. Per questo motivo nella seconda versione dovremo introdurre l’utilizzo degli encoder per rilevare la velocità dei motori in modo da regolare di conseguenza la tensione applicata ad ogni motore.
Nello schema elettrico si può osservare l’impiego del driver per motori L293D. La funzione di questo integrato è quella di pilotare i motori con una alimentazione dedicata e non fornita dai pin di output di Arduino. Questi ultimi possono fornire infatti solo una corrente di 40 mA e non è sufficiente per pilotare i motori. L’integrato L293D consente di far girare i motori in senso orario e in senso antiorario o a fermarli del tutto. Inoltre è possibile pilotare i pin di enable con una uscita PWM di Arduino in modo da regolare la tensione applicata ai motori e quindi la velocità di rotazione.
In questa prima prova ho utilizzato un pacco batterie per alimentare i motori formato da 4 batterie AA. Ho utilizzato batterie ricaricabili che forniscono circa 1,2V per un totale di 4,8V (in realtà con le batterie da 2400 mAh a piena carica forniscono un totale di 5,07V). I motori richiedono una tensione compresa tra 3V e 6V. La tensione massima fornita ai motori dal driver non è però pari alla tensione fornita dal pacco batterie perché c’è un po’ di caduta di tensione nei circuiti interni e quindi con questa configurazione impostando i pin di enable alla massima tensione (5V) i motori ricevono poco più della tensione minima richiesta dal loro funzionamento. La tensione massima misurata sui pin di un motore a batterie completamente cariche è di 3,44V con una caduta di tensione causata dal driver di 1,63V.
Per questo motivo nella secondo versione del robot utilizzerò un pacco batterie formato da 6 AA (totale di circa 7,2V) in modo da avere una maggiore possibilità di controllo della velocità dei motori.
https://youtu.be/ikhG3K3KRk8 Peppa: Jestem świnka Peppa. To mój mały brat George. To mama świnka. A to…
https://www.youtube.com/watch?v=uhHHH8GqxK4 Peppa: Jestem świnka Peppa. To mój mały brat George. To mama świnka. A to…
https://www.youtube.com/watch?v=iD4XxFky5e4 Peppa: Jestem świnka Peppa. To mój mały brat George. To mama świnka. A to…
https://youtu.be/KDYDkS4mVuw Peppa: Jestem świnka Peppa. To mój mały brat George. To mama świnka. A to…
https://www.youtube.com/watch?v=TTi9aMd325s Peppa: Jestem świnka Peppa. To mój mały brat George. To mama świnka. A to…
Dopo aver parlato di quella che ritengo disinformazione riguardo agli investimenti nei piani di accumulo,…
View Comments
Salve,
sto cercando di costruire un piccolo robot alimentando i motori con una batteria da 9V utilizzando sia un L293 e anche un scheda L298N
Ho il problema che la batteria si scarica subito...hai idea di cosa potrebbe essere
Ammetto di non avere fatto funzionare il mio troppo a lungo quindi non ho indicazioni sulla durata precisa della batteria nel mio caso. Per alimentare i motori io comunque utilizzo 6 batterie ricaricabili da 2400 mAh.
Non saprei spiegare la scarica veloce della batteria a parte cose ovvie a cui avrai pensato anche tu come il peso eccessivo del robot.