Servo e sensore di flessione

La mano biomeccanica e altre realizzazioni di mano hanno necessità di un servo e sensore di flessione per risprodurre il movimento delle tue dita sulla mano robotica.

servo mano sensore di flessione

L’uso del sensore di flessione e come collegarlo ad arduino per leggerne i valori li hai già letti negli articoli:

è ora di collegare il primo servo e sensore di flessione ad arduino per controllare il movimento del primo con il secondo.

Collegamento del servo e sensore di flessione

Un servo è un componete semplice da collegare ad arduino, se non sai come fare ti invito alla lettura dell’articolo Tutorial: arduino servo con alimentazione esterna, il sensore di flessione oramai non ha più segreti 🙂

Ecco come collegare il servo

arduino servo con alimentazione esterna

Ecco come collegare il sensore di flessione

schema collegamenti

Taratura del sensore di flessione

il sensore di flessione restituisce valori differenti in funzione della flessione applicata e questa varia in base alla posizione del sensore sul guanto, come hai letto nel precedente articolo.

E’ pertanto necessario procedere alla taratura del sensore di flessione con lo sketch che trovi nell’articolo dedicato al guanto con sensore di flessione e segnare su un foglio il valore letto quando il dito è piegato e quando il dito è steso; nel mio esempio il valore con il dito piegato è circa 130 mentre il valore alla massima estensione del dito è circa 260.

I due valori ti serviranno per impostare correttamente lo sketch in modo da controllare il servo con la completa estensione del dito.

Lo Sketch di controllo

#include <Servo.h> 

#define sensIndice A5
#define pinIndice 6

Servo indice;

int valueIndice = 0;
int rangeIndice[] = {130,260};
int gradiIndice[] = {0,180};

void setup() {
  Serial.begin(9600);
  pinMode( sensIndice,INPUT );
  indice.attach( pinIndice );
  indice.write( gradiIndice[0] );  
}

void loop() {
  valueIndice  = analogRead( sensIndice  );

  Serial.print( valueIndice );
  Serial.print( "\n" );

  valueIndice  = map(analogRead(sensIndice), rangeIndice[0], rangeIndice[1], gradiIndice[0], gradiIndice[1]);

  indice.write( valueIndice    );

  delay( 10 );
}

Lo sketch compie tre operazioni importanti:

  1. la prima è recepire i valori inviati dal sensore
  2. la seconda è adattarle il range min-max del sensore al range min-max del servo
  3. la terza è posizionare il servo al giusto grado di rotazione

Le linee 03-04: definisci i pin a cui hai collegato rispettivamenti il sensore di flessione ed il servocomando;

linea 06: definisci indice ossia l’istanza della classe Servo.h che userai per inviare i comandi al servo;

linea 08: imposta una variabile di tipo intero ( integer ) valueIndice in cui memorizzerai i valori adattati da sensore a servo;

linea 09: imposta un array di valori interi rangeIndice i cui due valori rappresentano il valore minimo e massimo letti dal sensore, nell’esempio 130 è il valore minimo e 260 quello massimo;

linea 10: imposta un array di valori interi gradiIndice i cui due valori rappresentano il grado minimo e grado massimo che il servo può raggiungere, questa taratura dipende dalla meccanica del tuo progetto;

linee 14-16: definisci la modalità di uso del pin a cui è collegato il sensore di flessione, esegui l’attach() del pin del servo, ossia imposti l’istanza indice per controllare il servo mediante il pin a cui lo hai collegato ed infine posizioni il servo al suo valore minimo gradiIndice[0]

linea 20: leggi il valore restituito dal sensore indice;

linea 22: mappa il valore letto alla linea 20 con il range minimo e massimo del sensore di flessione ed il range minimo e massimo dei gradi del servo.

linea 28: fai il lavoro più semplice invia all’istanza indic il valore in gradi da eseguire sul server;

linea 30: imposta un ritardo di 10 millisecondi tra un ciclo di loop ed il successivo questo consente al servo di raggiungere la posizione desiderata.

Il video

ho realizzato un piccolo video in cui puoi vedere il servo che si muove in fuzione della distenzione o piegatura del mio dito, quello nel guanto 🙂

Buona realizzazione !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/servo-e-sensore-di-flessione.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.