CR18_lez10 Robot Avanzato (Motori)

by / venerdì, 22 Febbraio 2019 / Published in Archivio Robotica, Francesco

 

LEZIONE n° 10

– ROBOT AVANZATO –

– MOTORI –

 

 

Con questa lezione proseguiamo a gestire il robot in una maniera “avanzata”. Come detto per prima cosa dobbiamo organizzare l’hardware e seconda del tipo di robot (2 o 4 ruote) e del numero dei sensori. Dovremo porre particolare attenzione al collegamento dei vari blocchi elettrici del robot. Dopo aver collegato in modo adeguato tutti i blocchi potremmo continuare ad organizzare la gestione del robot.

 

Come già detto, il programma (in ordine) del Robot deve:

MANDARLO AVANTI

GESTIRE GLI URTI

GESTIRE LE LUCI

Il Robot Avanzato , oltre alle dotazioni base, può avere:

SENSORI DI URTO A DISTANZA

VARI SENSORE DI LUCE

ALCUNI LED o un DISPLAY

 

Il software per il Robot Avanzato , oltre alle dotazioni base, può gestire:

L’USCITA da una TRAPPOLA (CONTARE gli URTI)

TROVARE la LUCE da LONTANO

SEGUIRE i BORDI

 

Vediamo in dettaglio come dobbiamo agire per ottenere il “MASSIMO” dal nostro robot:

Cominciamo il lavoro con una considerazione sull’hardware

Per avere una informazione precisa, può bastare accettabile, della distanza libera davanti al robot abbiamo bisogno di un sensore di rilevamento della distanza. Se non lo abbiamo a disposizione possiamo anche farne a meno ma bisogna stare attenti a non esagerare con la velocità per ottenere degli urti che non distruggano il nostro robot.

Ricordiamo che per gestire i motori in modo adeguato dobbiamo agire sul TEMPO

(se giriamo a destra per “x” secondi la rotazione ottenuta corrisponderà ad “y” gradi)

Durante la navigazione, se non ci sono ostacoli potremmo aumentare la VELOCITA’

pertanto dobbiamo rilevare distanza degli ostacoli posti davanti:

se la distanza è grande possiamo accelerare (attenzione a mantenere una velocità adeguata)

Dovremo quindi:

  1. Leggere la distanza (sensore di prossimità)

  2. se è grande accelerare (aumento della velocità)

  3. Controllare sempre che la velocità sia adeguata (compresa tra il minimo ed il massimo)

  4. Impostarla nel programma del robot

Per prendere pratica con la programmazione si propone il seguente esercizio:

Aumentare in modo AUTOMATICO la VELOCITA:

LISTATO ESERCIZIO – Per provare a fare le modifiche proposte copiare il listato (colorato in rosso) ed incollarlo in un editor di solo testo [Notepad ad esempio]

/////////////////////////////////////////////////////////////////////

PotA_Speed_value = analogRead(potentiometerA_Speed);

PotA_Speed_value_m = map(PotA_Speed_value,0,400,0,800);

Serial.print(” Pot.V = ” );

Serial.print(PotA_Speed_value);

Serial.print(” distanza(cm) = ” );

Serial.print(PotA_Speed_value_m);

// DIREZIONE FISSA

digitalWrite(dir_a, HIGH); //Set motor direction, 1 low, 2 high

digitalWrite(dir_b, LOW); //Set motor direction, 3 high, 4 low

if (one_shot1 == 0)

{

Serial.print(” FIRST SPEED ” );

delay(10);

digitalWrite (led_RGB_G,HIGH);

digitalWrite (led_RGB_R,LOW);

digitalWrite (led_RGB_B,LOW);

Serial.print(speedM);

Serial.print(“\n “);

delay(tempo);

one_shot1 = 1;

}

if (PotA_Speed_value_m >= 100)

{

speedM = speedM +gap_speed;

digitalWrite (led_RGB_G,LOW);

digitalWrite (led_RGB_R,LOW);

digitalWrite (led_RGB_B,HIGH);

if (speedM >= SPEED_MAX)

{

speedM = SPEED_MAX;

digitalWrite (led_RGB_G,HIGH);

digitalWrite (led_RGB_R,LOW);

digitalWrite (led_RGB_B,LOW);

}

}

PotB_value = analogRead(potentiometerB);

Serial.print(” BUMP Pot.V = ” );

Serial.print(PotB_value);

if (PotB_value >= 200)

{

Serial.print(” SIMULATION BUMP ” );

digitalWrite (led_RGB_G,LOW);

digitalWrite (led_RGB_R,LOW);

digitalWrite (led_RGB_B,HIGH);

speedM = SPEED_MIN;

}

analogWrite(pwm_a, speedM); //set both motors to run at 100% duty cycle (fast)

analogWrite(pwm_b, speedM);

Serial.print(” SPEED ” );

Serial.print(speedM);

delay(tempo);

Serial.print(“\n “);

digitalWrite (led_RGB_G,LOW);

digitalWrite (led_RGB_R,HIGH);

digitalWrite (led_RGB_B,LOW);

delay(TIME_WAIT);

/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////

/*************************************************************

END PROGRAM

*************************************************************/

di seguito le slide della lezione

 

 

(13)

Lascia un commento

TOP