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

 

Robot_arduino_telecamera.JPG Robot_arduino_telecamera-1.JPG

homotix

PCBA

OurPCB

 

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:

pan_tilt-ridotto-taglio.jpg
Prima fase di taglio
pan_tilt-ridotto-foratura.jpg
Foratura dei particolari
pan_tilt-ridotto-piego.jpg
Particolari piegati e pronti per la foratura
pan_tilt-ridotto-verniciatura.jpg
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.

pan_tilt-ridotto-montaggio-1.jpg
Fissaggio del servo Pan

Fase 2

Nella seconda fase, si fissa il servomotore TILT mediante 4 viti M3x10 complete di rondelle e dadi.

pan_tilt-ridotto-montaggio-2.jpg
Fissaggio del servo Tilt

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.

pan_tilt-ridotto-montaggio-3.jpg pan_tilt-ridotto-montaggio-4.jpg
Dettaglio distanziale per rotazione Fissaggio supporto telecamera
pan_tilt-ridotto-montaggio-6.jpg pan_tilt-ridotto-montaggio-5.jpg
 
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.

 

Servomotore

CARATTERISTICHE 

Potenza
 
(Kg/cm)

4,8 V

 6 V

3,35

3,50

Velocità(sec./60°)

0,21

0,17

Alimentazione 4,8 - 6 V
Dimensioni (mm) 40x19x36 
Peso  (g) 47
Tipo ingranaggi Nylon
Uscita Bronzina
Tipo spina Futaba

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.

joystick_07.jpg

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
Private Policy Cookie Policy Termini e Condizioni