ultimo aggiornamento 2 marzo 2012 |
|
Per l'azionamento della
telecamera di
ArduinoBOT è previsto l'utilizzo di un dispositivo di Pan &
Tilt.
Il dispositivo è la versione auto costruita di quella che si trova sul sito
www.active-robots.com dove è possibile trovare
anche le
istruzioni per il
montaggio del dispositivo visibile sotto.
In alternativa si potrà utilizzare il kit (senza servo)
e per i servo considerare il materiale reperibile sul
sito Homotix.
Versione originale |
Progetto da me realizzato |
La struttura è costituita da due particolari (uno in lamiera di ferro,
il secondo in alluminio) opportunamente tagliati e piegati.
Per la rotazione ho utilizzato dei servo della
FUTABA modello S148,
mentre la telecamera è una semplice CMOS a colori dotata di
trasmettitore incorporato.
Per commenti,
e informazioni aggiuntive
Gli attrezzi necessari sono: un seghetto da ferro, un trapano possibilmente a colonna, una morsa, un martello , delle punte da trapano di diverso diametro, una lima per smussare gli spigoli, un cacciavite a taglio e uno a croce, una pinza per il montaggio.
Assemblaggio del dispositivo
Una volta realizzati i particolari 1 e 2,
si potranno verniciare con una bombola di smalto sintetico magari di colore nero
opaco satinato. Per le istruzioni attenersi a quelle indicate sulla bomboletta
stessa.
Si passerà poi al montaggio vero e proprio utilizzando i particolari e la
minuteria necessaria:
Prima fase di taglio |
Foratura dei particolari |
Particolari piegati e pronti per la foratura |
Particolari verniciati pronti per il montaggio |
• 4 viti testa cilindrica M3x10 (fissaggio servomotore TILT)
• 1 vite testa cilindrica M5x10 (cerniera di rotazione.)
• 8 viti autofilettanti ø 2 mm (fornite con servomotore.)
Per il montaggio ci si aiuterà con un cacciavite a taglio, uno a croce e una
pinza.
Fase 1
In questa prima fase si fissa il particolare 1 al servomotore del movimento PAN utilizzando 4 autofilettanti ø 2 mm.
Fase 2
Nella seconda fase, si fissa il servomotore TILT mediante 4 viti M3x10 complete di rondelle e dadi.
Fase 3
Nella terza fase si monta il particolare 2 fissandolo da un lato al servomotore TILT con 4 autofilettanti ø 2 mm da un lato e la vite M5X10, e dato antisvitamento dall’altro lato.
Dettaglio distanziale per rotazione | Fissaggio supporto telecamera |
|
|
Dettaglio | Dettaglio perno di rotazione |
Fase 4
Nella quarta fase di montaggio si potrà fissare la telecamera al
particolare 2, utilizzando 2 viti.
Come modello di telecamera potrà essere scelto qualunque modello di solito
utilizzato come sistema di videosorveglianza, e il cui costo completo di
ricevitore si aggira intorno ai 70 euro.
|
Collaudo del dispositivo
Prima di procedere nel montaggio
possiamo collaudare il funzionamento del dispositivo Pane & Tilt.
Per fare questo possiamo collegare alla porta I2C della scheda I/O expander un
piccolo Joystick molto simile a quello presente sul controller della
PS2 (PlayStation 2).
Il joystick e la basetta sono forniti dalla
SPARKFUN codice
COM-09032 e vendute in Italia
tramite il sito di Futura Elettronica
codice
7300-CSJOYSTICK. Esiste anche una versione prodotta dalla
Parallax non
dotato però del tasto funzione.
I movimenti direzionali sono semplicemente due
potenziometri - uno per ogni asse. Dal valore di 10kΏ. Questo joystick ha anche
un pulsante di selezione che viene azionato quando il joystick viene premuto,
questa funzione non è però utilizzata in questo programma.
Considerando lo schema, vediamo che le variazioni di resistenza portano a variazioni di tensione che vengono lette dalle porte analogiche di Arduino e convertite in valori che azioneranno i servomotori.
Schema di collegamento
Collegamento Joystick
Per la prova si connetterà l’alimentazione alla scheda e si caricherà il programma Test_Pan-Tilt-ArduinoBOT.pde, per il funzionamento occorre che sia presente la libreria SERVO. (per maggiori informazioni vedere https://arduino.cc/en/Reference/Servo )Per il funzionamento del programma sono utilizzati i pin sotto riportati
Pin +5V |
Alimentazione |
Pin GND |
Alimentazione |
Pin Digitale 3 |
PWM pin 3 servo TILT (alto-basso) |
Pin Digitale 9 |
PWM pin 9 servo PAN (destra-sinistra) |
Pin Analogico 4 |
Joystick PAN (SDA) H |
Pin Analogico 5 |
Joystick TILT (SCL) V |
Scarica Test_Pan-Tilt-ArduinoBOT.pde
Per un funzionamento corretto bisognerà variare il valore di scala per fare in modo che le variazioni del Joystick siano entro il range di rotazione del dispositivo e che con il joystick in posizione neutra, la telecamera sia posta in asse con il robot e in posizione verticale.
Test_Pan-Tilt-ArduinoBOT.pde
/* Test_Pan-Tilt-ArduinoBOT.pde Il programma permette il test del dispositivo Pan & Tilt del robot ArduinoBOT Vengono utilizzati i seguenti pin Pin +5V -> Alimentazione Pin GND -> Alimentazione Pin Digital 3 -> PWM pin 3 servo TILT (alto-basso) Pin Digital 9 -> PWM pin 9 servo PAN (destra-sinistra) Pin Analogico 4 -> Joystick PAN (SDA) H Pin Analogico 5 -> Joystick TILT (SCL) V Creato il 4/12/2011 da Adriano Gandolfo <https://www.adrirobot.it> Basato su programma realizzato da Fabio Biondi <http://www.fabiobiondi.com/blog> This example code is in the public domain. */ #include <Servo.h> const int servo1 = 3; // Servo TILT const int servo2 = 9; // Servo PAN const int joyV = 5; // Joystick TILT const int joyH = 4; // Joystick PAN int servoVal; // variabile per la lettura del valore dal pin analogico Servo servo_pan; // crea l'oggetto servo per controllarlo Servo servo_tilt; // crea l'oggetto servo per controllarlo void setup() { // Servo servo_pan.attach(servo1); // attribuisce il servo servo_tilt.attach(servo2); // attribuisce il servo // Inizialize Serial Serial.begin(9600); } void loop(){ // Visualizza i valori del Joystick utilizzando il monitor seriale outputJoystick(); // Legge il valore orizzontale del joystick (valore compreso tra 0 e 1023) servoVal = analogRead(joyH); servoVal = map(servoVal, 0, 1023, 20, 80); // scala il valore per usarlo con il servo (risultato compreso tra 20 e 80) servo_tilt.write(servoVal); // imposta la posizione del servo in base al valore in scala // Legge il valore verticale del joystick (valore compreso tra 0 e 1023) servoVal = analogRead(joyV); servoVal = map(servoVal, 0, 1023, 30, 130); // scala il valore per usarlo con il servo (risultato compreso tra 30 e 130) servo_pan.write(servoVal); // imposta la posizione del servo in base al valore in scala delay(15); // Attesa per portare i servo in posizione } /** * Mostra il valore dei joystick */ void outputJoystick(){ Serial.print(analogRead(joyH)); Serial.print ("---"); Serial.print(analogRead(joyV)); Serial.println ("---"); }
Elenco revisioni | |
02/03/2012 | Inserito filmato e programma |
21/06/2011 | Emissione preliminare |