Questa risorsa è stata scritta dagli studenti dell'Istituto ITIS "Enrico Mattei" di Urbino, della classe 4A/EN (Matteo Coccia, Andrea Piergiovanni, Daniel Gostoli) nell'a.s. 2021/2022, all'interno del corso di Sistemi automatici per le superiori 2.

Per favore, prima di apportare modifiche, attendi sino alla fine dell'anno scolastico (termina il 30 giugno 2022) oppure contatta il docente di riferimento Giacomo Alessandroni nel caso venissero rilevati contenuti non in linea con le linee guida della comunità.

Se leggi questo avviso ad anno scolastico concluso puoi rimuoverlo.

In questa risorsa viene mostrato come comandare una mano robotica tramite un guanto con estensimetri, così da poterlo pilotare tramite i movimenti della mano.

laboratorio
laboratorio
Mano Robotica
Tipo di risorsa Tipo: laboratorio
Materia di appartenenza Materia: Sistemi automatici per le superiori 2
Avanzamento Avanzamento: laboratorio completa al 50%

Descrizione del progetto

modifica
 
Estensimetro elettrico

Per pilotare la mano robotica vengono utilizzati cinque estensimetri quante le dita della mano, i quali pilotano cinque servomotori che movimentano le dita della mano robotica.

Componenti utilizzati
Descrizione Q.tà
Senosori di flessione 5
Arduino UNO 1
Servomotori 5

Schema di montaggio

modifica

Di seguito viene mostrato lo schema di montaggio del circuito:

il codice per il corretto funzionamento del progetto è il seguente:

#include <Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;

int pos1;                 
int pos2;
int pos3;
int pos4;
int pos5;

//posizione  dei vari servo 

int flexSensorPin1 = A0;          //analog pin 0
int flexSensorPin2 = A1;          //analog pin 1
int flexSensorPin3 = A2;          //analog pin 2
int flexSensorPin4 = A3;          //analog pin 3
int flexSensorPin5 = A4;          //analog pin 4

void setup(){
  Serial.begin(9600);
  
  servo1.attach(9);
  servo2.attach(10); 
  servo3.attach(11);
  servo4.attach(12); 
  servo5.attach(13);

  pinMode(flexSensorPin1, INPUT);
  pinMode(flexSensorPin2, INPUT);
  pinMode(flexSensorPin3, INPUT);
  pinMode(flexSensorPin4, INPUT);
  pinMode(flexSensorPin5, INPUT);
}

void loop(){
  Serial.write("Posizione ");

  flexSensorReading1 = analogRead(flexSensorPin1); 
  pos1 = map(flexSensorReading1, 0, 1023, 0, 180);
  servo1.write(pos1);
  Serial.write(pos1);
  Serial.write(" ");
  
  flexSensorReading2 = analogRead(flexSensorPin2); 
  pos2 = map(flexSensorReading2, 0, 1023, 0, 180);
  servo2.write(pos2);
  Serial.write(pos2);
  Serial.write(" ");
  
  flexSensorReading3 = analogRead(flexSensorPin3); 
  pos3 = map(flexSensorReading3, 0, 1023, 0, 180);
  servo1.write(pos3);
  Serial.write(pos3);
  Serial.write(" ");
  
  flexSensorReading4 = analogRead(flexSensorPin4); 
  pos4 = map(flexSensorReading4, 0, 1023, 0, 180);
  servo4.write(pos4);
  Serial.write(pos4);
  Serial.write(" ");
  
  flexSensorReading5 = analogRead(flexSensorPin5); 
  pos5 = map(flexSensorReading5, 0, 1023, 0, 180);
  servo5.write(pos5);
  Serial.writeln(pos5);
}

Quando i sensori di flessione vengono piegati, essi inviano un determinato dato che indica di quanto abbiamo piegato il dito (nella mano dove abbiamo inserito il guanto) e di conseguenza tramite Arduino andremo ad azionare i servo motori di quel determinato valore, per far si che il dito della mano robotica simuli lo stesso movimento della mano reale.

Espansioni suggerite

modifica

Le modifiche che vorremmo applicare a questo progetto sono diverse come ad esempio controllare la mano tramite dei sensori di muscolo ed avere il controllo nono solo della mano ma dell'intero braccio.