Dodicesima parte del tutorial di Marco Gottardo sui PIC. Costruzione di un braccio antropomorfo basato sulla piattaforma Micro-GT mini. Sarete guidati passo passo alla realizzazione meccanica, hardware, firmware. La versione demo dell'interfaccia software e' distribuita gratuitamente.

ROBOT HAND V2

      Let's GO PIC!!!

capitolo 12

Robot Hand V2


In Questo dodicesimo capitolo del tutorial online "Let's GO PIC !!!" viene presentato un progetto in continuo sviluppo la cui prima versione è stata pubblicata qualche anno fa. Si tratta di un braccio Robot dai movimenti abbastanza realistici la cui prima versione è risultata vincitrice del concorso internazionale "Don joan Bosco" tenutosi a Zaragoza nel marzo 2008. In questo tutorial oltre che alla descrizione tecnica hardware e software ci sarà la cronostoria di quel concorso e conoscerete grazie alla ampia documentazione video i miei ex allievi Diego Cocco e Diego Scortegagna, selezionati per la difesa del progetto davanti alla comissione, ai quali mando un caro saluto.

prof. Marco Gottardo

Cosa serve per la realizzazione.


In primo luogo avete bisogno di tanta, tanta fantasia, voglia di fare e creatività. Una buona dose di manualità e il materiale,disponibile qui o reperibile facilmente, sotto elencato.

  1. scheda controller per servomotori, ad esempio la Micro-GT mini.
  2. 6 servomotori da modellismo
  3. 2 servoclone della G-Tronic robotics, oppure dei servo di potenza ottenibili come più avanti esposto
  4. Lamiera di ottone sottile (dalle mie parti detta carta spagna)
  5. Cartoncino piuttosto rigido
  6. fogli di plastica trasparente rigida ma elastica
  7. Cordini tipo nastrini da confezione, e se preferite grosso filo da pesca.
  8. guanti di PET o lattice o comunque di gomma molto leggeri (forse va bene anche un guanto di lana)
  9. interfaccia VB6 o VB.net di controllo scaricabile gratuitamente qui presentata e distribuita

Gli attrezzi necessari sono invece:

  1. il vostro saldatore per assemblare la scheda Micro-GT mini
  2. La forbice da elettricista, utile anche per tagliare la lamiera di ottone.
  3. Riga e compasso, matite e pennarello indelebile
  4. Mini trapano DREMEL
  5. Pistola  per colla a caldo
  6.  Attrezzi comuni vari come cacciaviti, nastro adesivo, materiale di fortuna neccessario in itinere.

Assemblaggio dello chassy.

Lo chassy, ovvero la struttura meccanica, di norma è uno dei punti più difficili da affrontare per il progettista elettronico, trovandosi di fatto "out of topic" ovvero fuori argomento. Non bisogna mai scoraggiarsi e mai chiamarsi fuori altrimenti si rischia di autolimitarsi e non esternare mai delle realizzazioni di fatto possibili. Qui si trova avvantaggianto colui che possiede doti innate del "fai da te" o che come ET, è in grado di smontare un oggetto comune trovato in casa per costruire un telefono interplanetario. Qui entra in gioco la fantasia e l'intuito. Se vogliamo essere dei veri progettisti di sistemi non abbiamo diritto di dire "non è compito mio", allora cominciamo ad arrangiarsi con quello che troviamo qua e la in casa.

Nel caso del nostro braccio robot, alcuni elementi sono stati costruiti con materiali puttosto fragili, ma comunque in grado di assolvere la loro funzione dimostrativa. Da sempre mi prefiggo di relaizzare la versione 3 con interfacce potenziate sensoristica migliorata e chassy ottimizzato.

Nell'attuale versione il "Robot Hand" ha delle parti in cartoncino rigido, accettabilmente robusto per garantire prese delle dita su oggetti non troppo pesanti. L'evoluzione sarà certamente quella di realizzare le falangi in vetroresina o qualche materiale plastico come il nuovo "polimorph" in grado di essere plasmato facilmente, diciamo come pongo, quando portato alla temperaturatura plastica e successivamente irrigidirsi a livello di ABS.

Per le vostre prime realizzazioni stampare l'immagine sottostante, in varie scale al fine di ottenere la caratteristica differenza di lunghezza "human like" delle dita di una mano. Potete anche scegliere la dimensione di tutta la mano. Consigli personalmente di farla di misura somigliante alla vostra mano. Sciegliete quindi in maniera opportuna la scala prima di stampare.

Eseguite la stampa su carta adesiva se siete intenzionati a realizzare l'ogetto in lamiera di ottone, in questo caso procuratevi delle piccole cerniere miniaturizzate in qualche negozio di bricolage. Dato che vi siete recati al negozio del "fai da te" cercate anche delle sottili molle (esempio di quelle delle penne a scatto) lunghe circa 10 cm, almeno una per dito.  .

La lamierina di ottone, anche se tagliabile in maniera semplice con la forbice da elettricista, con poca più resistenza di quanto darebbe il cartoncino, risulta davvero molto robusta e rigida o elestaica a seconda delle pieghe/nervature che gli imprimiamo.

Si aggiunge il vantaggio che, dopo una leggera carteggiatura, accetta piccole saldature anche a stagno.

Nella foto vediamo il primo dito realizzato dopo la ripiegatura. Verrà richiuso con il nastro adesivo mentre sulla parte superiore verrà fissata con colla plastica tipo vinavil una striscetta di plastica trasparente (fogli trasparenti) avente funzione di molla di ritorno.

I servomotori avranno funzione solo di trazione in chiusura dell'arto perché al ritorno, ovvero apertura della mano,ci pensa la reazione elastica delle strisce di plastica applicate sul dorso del dito.

Dopo l'assemblaggio delle dita sul palmo della mano l'arto assume l'aspetto nella prossima figura nella quale sono stati passati e fissati i "tendini" all'interno delle cavità nelle dita. Al polpastrello i tendini vengono fissati con un pezzettino di nastro adesivo. La parte inferiore che da da base è in realtà il dorso della mano. Nel passsaggio successivo si dovrà chiudere il palmo in cui viene montato il pollice opponibile. 

 

La mano completamente assemblata ha l'aspetto della foto successiva. Sarà poi assemblata al grado di libertà del polso e quindi ai segmenti lunghi dell'arto attraverso cui scorrono i tendini. I servo sono infatti alloggiati nel primo segmento in prossimità della spalla.

Nel prossimo filmato vediamo la fase di assemblaggio del palmo della mano, dell'iserimento del cordino "tendine" nella cavità del pollice e le prime prove funzionalità. La trazione del cordino mostra un movimento molto verosimile.

Benché il materiale possa sembrare molto fragile, la successiva chiusura con rinforzi in nastro adesivo lo rende piuttosto resistente.

 

Nel filmato si nota come la forza necessaria per la chiusura delle dita sia davvero bassa, alla portata dei servomotori impiegati. I servo dovranno quindi garantire solo la solidità della presa dato che la coppia persa nella chassy è praticamente nulla. Si deve inoltre pensare che afferrando un oggetto come un uovo o una pallina da ping pong, su di esso agiranno la somma delle coppie di 4 servomotori più una certa parte di quella dovuta alla presenza del pollice opponibile.

.

 

Le cannucce di plastica che sta fissando Diego con la colla a caldo servono ad impedire attriti ed attorcigliamenti dei tendini (cordini rosa) nel percorso dai polpastrelli alle pulegge dei rispettivi servo.

Nella foto un unico servomotore è già munito di puleggia (il dischetto di ottone) che permette alla rotazione angolare limitata del servo di tirare della misura opportuna il tendine con effetto di serrare le dita.

Particolare delle pulegge autcostruite, sono state ottenute taliando due dischetti dalla lamiera di ottone, quella superiore semplicemente tonda e del diametro visibile in foto, mentre quelle inferiori sono aumentate in diametro della larghezza dei più due millimetri prima e dopo di questa misura che costituisce la larghezza della puleggia. Il tutto è semplicemente saldato con il saldatore classico.Nella foto non si vede ma la parte inferiore di ogni puleggia è munita di fori del diametro di un millimetro, quindi la stessa punta che si usa per forare gli stampati, in maniera coincidente con gli ancoraggi delle flange che vi forniscono assieme ai servomotori. La puleggia si fissa al servomotore usando del filo unipolare rigido a modo di filo di ferro. 

La presa risulta soddisfacentemente forte e precisa anche con questo primo prototipo.

 L'alloggiamento della scheda Micro-GT mini all'nterno dello chassy è molto semplice e comodo, nell'immagine sovrastante non si distingue bene come sono collegati i servo, quindi posto l'immagine successiva, anche se già nota dal precedente tutorial perché mostra più chiaramente come connettere i servomotori.

Dato che il numero di servomotori da alimentare è piuttosto elevato è indispensabile fornire una tensione di potenza separata, che può anche differire in valore da quella di alimentazione della scheda logica. Un chiaro esempio nella prossima immagine. 

 

I pallini colorati BLU, ROSSO,NERO, nel connettore strip line maschio, indicano le posizioni in cui innestare il connettore del primo servomotore, corrispondente al pin RBO del PIC16F876A. Proseguendo verso destra la numerazione dei servo è progressiva. Il nono servomotore va collegato al PORT C, presisamente al pin RC0 corrispondente al connettore S3 ovvero il primo sinistra. Seguono RC1, RC2, eccetera, fino al connettore S8 che si trova all'immediata sinistra di quello indicato nella foto.

Bisogna fare attenzione alle caratteristiche tecniche dei singoli servomotori utilizzati, difatti le tensioni si alimentazione non sono uguali per tutte le marche e modelli. Evitiamo di sovralimentare dei motori a 9Volt per soddisfare l'esegenza di un singolo collegato in mezzo agli altri. Preferibilmente usare servo tutti a 5 oppure tutti a 7 oppure tutti a 9 volt.

Le masse delle due alimentazioni sono internamente collegate, come chiaramente indicato nello schema elettrico presente nel tutorial precedente.

Gli schemi elettrici degli alimentatori e i PCB realizzati in FidoCad sono visibili all'interno della tesina scaricabile in questo articolo. 

 I file sorgenti ed hex

I sorgenti sono stati compilati due volte in modo che funzionino ugualmente nella Micro-GT mini  in cui sia istallato un quarzo da 4Mhz oppure da 20MHz. Questo programma per il momento funziona in catena aperta, quindi è solo un controllo diretto delle posizioni dei servo motori. La versione Robot hand V3 prevede l'acquisizione di sensori di temperatora e pressione ai polpastrelli (estensimetri) dando sensibilità all'arto.

 /************************************************
 *             RobotHand V 2                            *
 *          G-Tronic Robotic                            *
 *sviluppato per piattaforma Micro-GT mini *
 *   Sistemi informatici per la robotica          *
 *Revisione: 21/07/2011                              * 
 ************************************************/

#include <pic.h>
#include "delay.h"   // verificare nella prima riga di questo file la velocità del quarzo usato

static bit Servo1    @ ((unsigned)&PORTB*8+0);    // R/W
static bit Servo2    @ ((unsigned)&PORTB*8+1);    // R/W
static bit Servo3    @ ((unsigned)&PORTB*8+2);    // R/W
static bit Servo4    @ ((unsigned)&PORTB*8+3);    // R/W
static bit Servo5    @ ((unsigned)&PORTB*8+4);    // R/W
static bit Servo6    @ ((unsigned)&PORTB*8+5);    // R/W
static bit Servo7    @ ((unsigned)&PORTB*8+6);    // R/W
static bit Servo8    @ ((unsigned)&PORTB*8+7);    // R/W

static bit Servo9    @ ((unsigned)&PORTC*8+0);    // R/W
static bit Servo10    @ ((unsigned)&PORTC*8+1);    // R/W
static bit Servo11    @ ((unsigned)&PORTC*8+2);    // R/W
static bit Servo12    @ ((unsigned)&PORTC*8+3);    // R/W
static bit Servo13    @ ((unsigned)&PORTC*8+4);    // R/W
static bit Servo14    @ ((unsigned)&PORTC*8+5);    // R/W


extern void Var_Init(void);     //prototipi delle tre funzioni usate sono necessarie perché il corpo è scritto dopo il main   
extern void Agg_Pos(void);
extern void Par_ser(void);

unsigned char S1H,S2H,S3H,S4H,S5H,S6H,S7H,S8H,S9H,S10H,S11H,S12H,S13H,S14H;  //variabili
unsigned char S1L,S2L,S3L,S4L,S5L,S6L,S7L,S8L,S9L,S10L,S11L,S12L,S13L,S14L;
unsigned char C1,C2,C3,C4,RxPos,Flags; //Valori trasmessi nella stringa formattata
int Pos1,Pos2,Pos3,Pos4,Pos5,Pos6,Pos7,Pos8,Pos9,Pos10,Pos11,Pos12,Pos13,Pos14;

main(void)
{
PORTA = 0x00;        // azzera le porte
PORTB = 0x00;   
PORTC = 0x00;

TRISA = 0x00;        // tutte uscite per evitare interferenze
TRISB = 0x00;        // uscite per servi
TRISC = 0xf8;        // bit 6-7 Seriale, in caso i servo num. 12,13,14
                               // dovessero non rispondere sostituire la precedente
                               //definizione del TRISC=0xC0;

Var_Init();                   // inizializza variabili di posizione
ADCON1= 0x87;        // disabilita i convertitori analogici/digitali

//Inizializzazione uart
TXSTA= 0x20;         // TX abilitato
RCSTA= 0X90;        // Registro RX USART
BRGH = 1;               // USART impostato a alta velocità
SPBRG= 25;           // Baud Rate Generator (25=9600 baud)

//Inizializzazione TIMER1
T1CON   = 0;                           // TIMER 1 resettato
T1CKPS1 = 0,T1CKPS0=0;    // TIMER1 prescaler = 1
T1OSCEN = 0;                        // TIMER1 external oscillator disable
TMR1CS  = 0;                         // TIMER1 internal clock (fosc/4)
TMR1ON  = 0;                        // TIMER1 in STOP

//Inizializzazione interrupt
INTCON = 0;                          // Interrupt disabilitato
PIE1   = 0;                              // Interrupt di periferica disabilitati
GIE    = 1;                              // Global Interrupt Enable
PEIE   = 1;                             // Periferal Interrupt Enable
RCIE   = 1;                             // USART Receive Interrupt Enable

for(;;)
 {
 Servo1 = 1;                           // Servo uscita abilitata
 TMR1H=S1H;                       // Durata impulso
 TMR1L=S1L;   
 TMR1ON = 1;                       // TIMER1 ON
  while (TMR1IF==0){}           // Controllo flag interrupt timer 0
   Servo1 = 0;                         // Servo uscita disabilitata
   TMR1IF = 0;                       // Ripristino flag Interrupt
   TMR1ON = 0;                    // TIMER1 STOP

 Servo2 = 1;
 TMR1H=S2H;
 TMR1L=S2L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo2 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

 Servo3 = 1;
 TMR1H=S3H;
 TMR1L=S3L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo3 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

 Servo4 = 1;
 TMR1H=S4H;
 TMR1L=S4L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo4 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

 Servo5 = 1;
 TMR1H=S5H;
 TMR1L=S5L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo5 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

 Servo6 = 1;
 TMR1H=S6H;
 TMR1L=S6L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo6 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

 Servo7 = 1;
 TMR1H=S7H;
 TMR1L=S7L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo7 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

 Servo8 = 1;
 TMR1H=S8H;
 TMR1L=S8L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo8 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

Servo9 = 1;
 TMR1H=S9H;
 TMR1L=S9L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo9 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

Servo10 = 1;
 TMR1H=S10H;
 TMR1L=S10L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo10 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

Servo11 = 1;
 TMR1H=S11H;
 TMR1L=S11L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo11 = 0;
   TMR1IF = 0;
   TMR1ON = 0;

Servo12 = 1;
 TMR1H=S12H;
 TMR1L=S12L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo12 = 0;
   TMR1IF = 0;
   TMR1ON = 0;


Servo13 = 1;
 TMR1H=S13H;
 TMR1L=S13L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo13 = 0;
   TMR1IF = 0;
   TMR1ON = 0;


Servo14 = 1;
 TMR1H=S14H;
 TMR1L=S14L;   
 TMR1ON = 1;
  while (TMR1IF==0){}
   Servo14 = 0;
   TMR1IF = 0;
   TMR1ON = 0;


 if (Flags==1) Par_ser();
  
 Agg_Pos();             // Sposta Servi
 DelayMs(2);            // Delay aggiuntivo
 }
}

void
Var_Init(void)
{
S1H= 0xFF;        // Servo neutral (1.5ms)
S1L= 0X00;
S2H= 0xFA;       
S2L= 0X23;
S3H= 0xFA;
S3L= 0X23;
S4H= 0xFA;
S4L= 0X23;
S5H= 0xFA;
S5L= 0X23;
S6H= 0xFA;
S6L= 0X23;
S7H= 0xFA;
S7L= 0X23;
S8H= 0xFA;
S8L= 0X23;
S9H= 0xFA;
S9L= 0X23;
S10H= 0xFA;
S10L= 0X23;
S11H= 0xFA;
S11L= 0X23;
S12H= 0xFA;
S12L= 0X23;
S13H= 0xFA;
S13L= 0X23;
S14H= 0xFA;
S14L= 0X23;

Pos1 = 500;        // Nuova posizione (1.5 ms)
Pos2 = 500;
Pos3 = 500;
Pos4 = 500;
Pos5 = 500;
Pos6 = 500;
Pos7 = 500;
Pos8 = 500;
Pos9 = 500;
Pos10 = 500;
Pos11 = 500;
Pos12 = 500;
Pos13 = 500;
Pos14 = 500;

RxPos = 0;
Flags  = 0;
}

void
Agg_Pos(void)
{
S1H = (64535-Pos1)/256;
S1L = (64535-Pos1)-S1H*256;

S2H = (64535-Pos2)/256;
S2L = (64535-Pos2)-S2H*256;

S3H = (64535-Pos3)/256;
S3L = (64535-Pos3)-S3H*256;

S4H = (64535-Pos4)/256;
S4L = (64535-Pos4)-S4H*256;

S5H = (64535-Pos5)/256;
S5L = (64535-Pos5)-S5H*256;

S6H = (64535-Pos6)/256;
S6L = (64535-Pos6)-S6H*256;

S7H = (64535-Pos7)/256;
S7L = (64535-Pos7)-S7H*256;

S8H = (64535-Pos8)/256;
S8L = (64535-Pos8)-S8H*256;

S9H = (64535-Pos3)/256;
S9L = (64535-Pos3)-S3H*256;

S10H = (64535-Pos4)/256;
S10L = (64535-Pos4)-S4H*256;

S11H = (64535-Pos5)/256;
S11L = (64535-Pos5)-S5H*256;

S12H = (64535-Pos6)/256;
S12L = (64535-Pos6)-S6H*256;

S13H = (64535-Pos7)/256;
S13L = (64535-Pos7)-S7H*256;

S14H = (64535-Pos8)/256;
S14L = (64535-Pos8)-S8H*256;
}

void interrupt SerChar(void)    //prototipo ricezione
{
  if (RCREG==0x40 | RxPos > 6)  //se arriva la chiocciola dimensiona la stringa
   {
   C1=0,C2=0,C3=0,C4=0;        //azzero la stringa
   RxPos=0,Flags=0;
   }
  if (RxPos==1) C1=RCREG;    //ricezione della stringa comandi
  if (RxPos==2) C2=RCREG;
  if (RxPos==3) C3=RCREG;
  if (RxPos==4) C4=RCREG;
  if ((RxPos==5) && (RCREG==0x0d)) Flags=1; // <CR> terminator
  RxPos++;
}

void
Par_ser(void)               // Analisi comandi
{
 Flags=0;
 switch (C1)
  {
  case 0x41:    //carattere A
   Pos1 = C2*4;    //Pos1 assume il valore C2 trasmesso con A
   break;
  case 0x42:    //carattere B
   Pos2 = C2*4;
   break;
  case 0x43:    //carattere C
   Pos3 = C2*4;
   break;
  case 0x44:    //carattere D
   Pos4 = C2*4;
   break;
  case 0x45:    //carattere E
   Pos5 = C2*4;
   break;
  case 0x46:    //carattere F
   Pos6 = C2*4;
   break;
  case 0x47:    //carattere G
   Pos7 = C2*4;
   break;
  case 0x48:    //carattere H
   Pos8 = C2*4;
   break;
  case 0x49:    //carattere I
   Pos9 = C2*4;
   break;
  case 0x4A:    //carattere J
   Pos10 = C2*4;
   break;
  case 0x4B:    //carattere K
   Pos11 = C2*4;
   break;
  case 0x4C:    //carattere L
   Pos12 = C2*4;
   break;
  case 0x4D:    //carattere M
   Pos13 = C2*4;
   break;
  case 0x4E:    //carattere N
   Pos14 = C2*4;
   break;
  }
}

scarica il progetto compilato per 4Mhz -> UserFiles/ad.noctis/RobotHand_V2(4Mhz).zip

scarica il progetto compilato per 20Mhz -> UserFiles/ad.noctis/RobotHandV2_(20Mhz).zip

I servomotori.

Il sistema robotico è basato sull'azione di almeno 8 servomotori su di una struttura meccanica molto leggera munita di molti DOF (degree of freedom). Non tutti i gradi di libertà dovranno essere motorizzati al fine di ottenere un movimento realistico. Ad esempio le falangi sono "inerti", nel senso che sono controllate, per ogni dito, da un unico servomotore che agisce su un cordino che d'ora in poi chiameremo "tendine".

Per Le dita, compreso il pollice e anche il polso, ci affideremo alla coppia motrice resa disponibile dai servo per modellismo, mentre per per quanto riguarda l'avambraccio e la spalla, essendo notevolmente maggiore la leva e la coppia resistente collegheremo il servo clone di ad.noctis oppure il servo di potenza ottenibile con un semplice trucco e bricolage elettronico.

Per costruire il servo motore di potenza è possibile interfacciare un motoriduttore di dimensioni e peso opportune all'elettronica interna interna di un servo che risulta meccanicamente danneggiato, cosa che accade spesso nelle versioni con ingranaggi in plastica . 

Servomotori potenziati.

Dato la lunghezza della leva e del sommarsi dei pesi dei segmenti dell'arto robotizzato  man mano che ci si avvicina alla spalla si rende necessaria una moggiore coppia all'asse dei servo. Questi attuattori potrebbero risultare molto costosi al punto di risultare più convinte l'autocostruzione.

I servomotori più economici montano ingranaggi in nylon o teflon, che tendono a sgranarsi facilmente quando usati in maniera impropria. Se siamo in possesso si alcuni di questi defunti, smontiamoli delicatamente  salvaguardando l'elettronica interna.

Procuriamoci innanzitutto un ponte H, ad esempio questo:

http://www.gtronic.it/energiaingioco/it/scienza/Inverter_Mot_DC_ita.html

O se dovesse bastare massimo un ampere continuo anche questo:

http://www.gtronic.it/energiaingioco/it/scienza/mini_ponte_H.html

Usare il primo o il secondo dipenderà dal tipo di motore che intendiamo collegare an nostro servo potenziato.

Il piccolo motore, visibile nella foto dal lato morsetti è quello normalmente impiegato nei servomotori sanwa (una delle marche più ampiamente distribuite). Quello con etichetta Blu è un Micro Motor con indotto a 12 Volt, e riduzione meccanica a 60 RPM.  E' molto leggero e ben dimensionato per la nostra applicazione.

Come possiamo notare entrambi questi motori sono pilotati con il ponte H integrato nel PCB in grado di sostenere una corrente di 1 ampere in maniera continua.

scarica il video del servomotore G-Tronic, "le fasi del collaudo, in formato 3gp, visibile con quicktime  dal link sottostante:

UserFiles/ad.noctis/Servomotore Gtronic.zip.

 

Nel caso necessitasse una coppia ancora maggiore si può optare per questo motore, da me testato in alcuni gradi di liberta di automi un po più pesanti:

 

 

La riduzione può essere dimensionata a cura dell'utente al moento dell'ordine, quindi la coppia all'asse  e la velocità in RPM. Anche la tensione di indotto va richiesta al costruttore. Le dimensioni meccaniche sono riportate sotto:

 

Molto importanti per il "robottaro" sono le informazioni riguardanti la flangiatura (modalità di vincolo allo chassy) quindi le misure e le posizioni dei fori filettati e il diametro dell'asse, ovviamente fondamentali sono peso e misure totali dell'ingombro del motore.

Personalmente me li sono fatti assemblare dal costruttore "Servotrade" in modo che presenti all'asse 33 rpm dato che considero ottimale questa velocità per questa applicazione e come servomotore di potenza per le spalle e l'avanbraccio.

La targhetta riporta i seguenti dati:

casa costruttrice: Servotrade

nome prodotto: D.C. Motorgearbox

sigla identificativa assemblaggio: MG-S-3736-01-90 (definisce il rapporto di riduzione desiderato)

tensione di indotto: 12V

speed: 33 rpm

Le tabelle costruttive fornite dalla Servotrade definiscono per questa combinazione i seguenti valori:

Rapporto di riduzione: 1/90  (riferito alla velocità prescelta all'asse di 33 rpm)

coppia all'asse: 7Kg cm (notevole per un motore cosi piccolo)

corrente a vuoto: 0,2 A

corrente a  carico: 0,7A (riferiro alla coppia all'asse del dato precedente)

Ecco la tabella completa fornita dalla casa sulla quale basarci per fare assemblare il motoriduttore dimensionato sulle specifiche esigenze.

Riporto il PCB del servomotore potenziato, ma non mi dilungo molto perché è già stato argomento di precedente puppblicazione dalla qualle possiamo scaricare il supporto PCB sviluppato in FidoCad.

Analogamente, senza troppo approfondire posto lo schema elettrico.

Prima versione dell'interfaccia di controllo dei servomotori.

 

Seconda versione dell'interfaccia.
Scarica il file cabinet con l'installer dell'interfaccia realizzata in Visual Basic 6 -> UserFiles/ad.noctis/RobotHand V2 setup package.zip

Lo screenshot della seconda versione dell'interfaccia è il seguente:

Esiste una terza versione, che costituisce la definitiva, dell'interfaccia "motorcontrol", sviluppara in VB.net 2010. Si tratta di una ricompilazione della precedente con in più l'aggiornamento di alcune classi. Il layout (form) è identico, distinguibile solo perché sulla barretta blu in alto a sinistra compare, affianco alla scritta "Form1" l'icona aggiornata VB.net , l'ambiente di sviluppo dotnet è quello visibile nella prossima foto.

In anteprima la medesima interfaccia, in fase di sviluppo per il prossimo progetto Micro-GT contenente la Micro-GT mini, si tratta di un piccolo Robot umanoide, realizzabile da tutti e in maniera molto economica dato che sarà limitato a 14 DOF nela versione base.

Queste versioni dimostrative dell'interfaccia sono piuttosto limitate perché funzionano in catena aperta. Non vi è alcun feedback del posizionamento del motore. Sono però possibili interessanti sviluppi a cui stimao già lavorando.  Se qualche lettore fosse interessato a varianti di queste interfacce (qui liberamente distribuite in versione demo), potrà rivolgersi all'amico Alejandro Gatto.  Se ha tempo, e se lo incentivate a farlo, potrebbe sviluppare delle interessanti customizzazioni.  La sua mail è: agattoc@gmail.com

Versione Hardware dell'interfaccia di controllo.

Con il passare del tempo pensai che questo oggetto potesse costituire un sipatico giocattolo per ragazzioni o per persone che non usano il computer, e quindi andava completato con un Hardware in grado di muovere le dita e vari segmenti dell'arto.

L'articolo completo in cui si espone "l'interfaccia Hardware multiservo" si trova sul mio sito personale ed è raggiungibile tramite il link-> http://www.gtronic.it/energiaingioco/it/scienza/console_multiservo.html

Invito i volenterosi a riprendere in mano questo progetto magari munendolo di un bel display grafico in cui sono indicati i movimenti dei segmenti dell'arto, e altri parametri quali la coppia/pressione impressa dalla chiusura della mano, la temperatura, ecc.

Arrivo a Saragoza, messe a punto finali.

Finalmente giunti nella città spagnola ci viene assegnato uno spazio comune assieme ad altri concorrenti. Ogni gruppo comincia le verifiche finali del proprio progetto e l'integrità dei materiali dopo avere subito il trasporto. I miei studenti hanno un momento di disorientamento dovuto alla rapidità del susseguirsi degli eventi. Sono bombardati da voci in una lingua che non conoscono bene ma che vagamento intuiscono per similitudine con la nostra. Al fine di cercare di ripristinare concentrazione ed attenzione gli interrogo facendogli provare la discussione della tesi. Il primo risultato è catastrofico!!!    Farfugliano cose sconnesse e volte poco sensate, non ricordano quasi niente di quanto studiato e costruito assieme.

Vediamo il risultato nel video successivo:

http://www.youtube.com/watch?v=y8OVptvxbA0&feature=related

Ultime messe a punto in sala comune il giorno prima della discussione della tesi.

http://www.youtube.com/watch?v=ilq2sIyN3EY&feature=related

 La difesa del progetto (discussione della tesi)

Ecco i due allievi Cocco Diego e Scortegagna Diego pronti per entare nella sala della discussione delle tesi. mancano davvero pochi minuti. Io sono molto fiducioso, loro dimostrano forza d'animo ma anche un velo di preoccupazione.

Nel video una parte della discussione della tesi, risultata poi vincente.  Gli spagnoli ci mettono a nostro agio non evidenziando le difficoltà con la lingua e assegnandoci anche un professore di origine italiana che ci faccia da interprete.

http://www.youtube.com/watch?v=3zjouasDdww&feature=related

Stand espositivo il giorno dopo la difesa del progetto.

Preparazione dello stand italiano, prove di funzionalità della mano e del polso. Eravamo pronti per accogliere i visitatori. A questo punto ancora non si conosceva il verdetto della commissione esaminatrice, ma di certo avevamo superato la fase più stressante dovuta all'esame.

http://www.youtube.com/watch?v=HPgUWWspIMI&NR=1

Visitatori spagnoli allo stand Italiano:

 http://www.youtube.com/watch?v=ghS2i_RWFtE&NR=1

 

 Tesi di presentazione del progetto.

La Tesi, in lingua spagnola,  contenete il firmware nella prima versione in C++, lo sviluppo dell'hardware, cenni teorici del funzionamento, la classificazione delle onde celebrali, e l'esperimento di Martingale è scaricabile da questo link.

UserFiles/ad.noctis/XXI_edición_Premio_Nacional_Don_Bosco.doc 

Una rielaborazione del medesimo progetto, migliorato sia dal punto di vista software che hardware si ha nella tesina relativa all'esame "sistemi informatici per la robotica" Robot's hand V2.

UserFiles/ad.noctis/sistemi informatici per la robotica.doc

 

Auguro a tutti quelli si vorranno cimentare nella copia di questo progetto, o nella realizzazione di uno proprio prendendo spunto da questo un buon divertimento.

Fatemi vedere i vostri risultati.

Marco Gottardo as ad.noctis

Questo progetto è ridistribuibile secondo i termini di licenzaCreative Commons Attribuzione-Condividi allo stesso modo 3.0 Italia

 

Appendice all'articolo: La premiazione del progetto a Zaragoza.

Al concorso internazionale erano presenti oltre cento progetti, come dicono gli spagnoli "de inovacion e investigacion tecnologica". suddivisi per aree tematiche, di "medio ambiente", de "investigacione eletronica y robotica.

La bella signorina che vedete nel prossimo video da istruzioni su come iscrivere il team al concorso internazionale e espone le regole principali.



La sala delle esposizioni comprendeva moltissimi stand in cui studenti e insegnati presentavo il loro lavoro di ricerca e innovazione ai numerosi imprenditori e rappresentanti del "gobierno de Aragon"  invitati all'evento. Massiccia la presenza dell'esercito, non tanto in difesa dei numerosi politici presenti ma perché parte integrate dell'organizzazione. Lo stesso esercito e scuole militari hanno presentato numerosi progetti.

Ecco un filmato presente su youtube che mostra l'ambiente in cui si è svolto il concorso e alcuni dei progetti presentati:



 Nel prossimo filmato vediamo l'atrio dove si preparavano i progetti prima di trasportarli nelle aule in cui "el tribunal" ovvero la commissione di esperti, formata da professori dell'università di Zaragoza e noti imprenditori giudicavano il progetto.



 

Nelle prossime foto la premiazione dei vincitori del settore robotica.

 

Cocco Diego. Scortegagna Diego. Gottardo Marco.

Ai lati le autorità premianti, al centro da sinistra Marco Gottardo (insegnante), Scortegagna Diego, Cocco Diego.

 

Le nostre foto, da sinistra Diego Cocco, Diego Scortegagna, Marco Gottardo, compaiono il giorno successivo alla premiazione sui due giornali di maggiore distribuzione locale "Heraldo de Aragona" e nazionali "El periodico".

Molte fans degli allievi Diego e Diego chiamano ai cellulari dopo avere visto la cerimonia di premiazione trasmessa in diretta su internet e sulle televisoni spagnole.

Al nostro riotrno ne parlò anhe il giornale di vicenza dopo una bella intervista ai due studenti.

Una nota di merito ai ragazzi che vedrete sul video successivo, pensate che in italia sarebbero considerati di "bassa scolarità" perché hanno frequentato la scuola di formazione professionale, quindi sono a un livello inferiore che periti.

Se si potesse gli farei un applauso via internet sono MOLTO MOLTO BRAVI !!!




Nel video, spiegano che il robot è controllato con PIC 16F876A, il medesimo usato nella Micro-GT mini.

 

Nel prossimo video possiamo vedere l'intervento di Maria Vittoria Broto, Consejera de educacion Cultura y Deporte, ovvero l'equivalente del nostro ministro dell'istrizione. Esprime parole di forte supporto per le persone della formazione professionale definendole fondamentali per la società spagnola e la sua evoluzione. In italia la formazione professionale è invece pesantemente sminuita, ad errore.



Le ultime parole di Maria Vittoria Broto del prossimo video giustificano la presenza della formazione professionale nel sistema scolastico spagnolo. "esiste semplicemente per una ragione, Perché la società lo chiede"



 Segue il Discorso del presidente del gobierno de Aragon



Questo progetto è ridistribuibile secondo i termini di licenzaCreative Commons Attribuzione-Condividi allo stesso modo 3.0 Italia