Costruiamo un Astroinseguitore

Costruiamo un Astroinseguitore 

a cura di Federico Masci.


Costruiamo un astroinseguitore

Con il nostro astroinseguitore potremo fare esposizioni di diversi secondi a seconda della focale che utilizziamo. Io non mi sono mai spinto oltre i 60 secondi  a 150 mm di focale , ma la mia pentax mi permette di utilizzare ISO alti (3200) e basso rumore ( quindi già con 30 secondi ottengo dei buoni risultati ).

La cosa fondamentale è stazionarla bene: attaccato alla cerniera (asse di rotazione) ci sarà un tubo che avrà la funzione di cannocchiale polare; in pratica dovremo cercare di posizionare la stella polare al centro del nostro tubo.

 

Cosa ci occore:

  • legno multistrato;
  • attacco per reflex;
  • cerniera 10×4 ( + viti);
  • asta filettata con passo da 1/4” (20 filetti per pollice) con 3 dadi;
  • 3 ruote dentate ( una più grande e due piccole);
  • 2 motori passo passo da 5V con driver ULN2003;
  • breadboard con cavetti maschio-maschio;
  • arduino uno;
  • alimentatore da 5V in uscita (se lo colleghiamo alla usb di arduino) o da 7V-12V (se lo colleghiamo dal jack di alimentazione).

 

Bene, ora che abbiamo tutto, iniziamo!
Prendete le misure che volete e tagliate; io ho scelto 30×15 per la tavoletta in alto e 30×18 per la tavoletta in basso.



Una volta tagliate le due tavolette, prendiamo un trapano e foriamo nei punti indicati. Io ho praticato anche 2 fori al centro per attaccare la slitta del treppiede.

 

N.B.: state attenti a prendere le misure dei fori per i motori! Dovrete essere più precisi possibile.



 Ora è il momento di piegare l’asta filettata, ma con quale raggio? Dalla base della tavoletta al foro per l’asta misuriamo 27 cm.  L’ asse di rotazione del nostro inseguitore sarà proprio il centro dell’ asse della cerniera, perciò calcoliamo il raggio ( del perno della cerniera ) che è di circa 3.5mm.



Fatto ciò abbiamo trovato il raggio della circonferenza per la nostra asta:

3.5mm+1.5mm+27cm=27.5cm

 

Sono sicuro che non avete un compasso così grande… aiutatevi con una corda, o qualsiasi fune non elastica, e una matita. Ora pieghiamo finalmente l’asta facendola combaciare con l’arco di circonferenza tracciato.



Possiamo ora inserire l’asta nei buchi: nel buco in alto la blocchiamo con due dadi (uno sotto e una sopra la tavoletta) e nel buco in basso la lasciamo libera.

Passiamo alla motorizzazione.
Un motore passo passo (STEPPER motor) è una macchina sincrona in corrente continua con un gran numero di step.

I motori passo-passo sono motori che, a differenza di tutti gli altri, hanno come scopo quello di mantenere fermo l’albero in una posizione di equilibrio: se alimentati si limitano infatti a bloccarsi in una ben precisa posizione angolare. Solo indirettamente è possibile ottenerne la rotazione: occorre inviare al motore una serie di impulsi di corrente, secondo un’opportuna sequenza, in modo tale da far spostare, per scatti successivi, la posizione di equilibrio. È così possibile far ruotare l’albero nella posizione e alla velocità voluta semplicemente contando gli impulsi ed impostando la loro frequenza, visto che le posizioni di equilibrio dell’albero sono determinate meccanicamente con estrema precisione.

Occorreva rialzare leggermente la ruota dentata centrale, così ho trovato un piccolo rialzo e l’ho forato; quindi l’ho incollato alla tavola. Sotto la ruota ho messo una rondella per limitare al minimo l’attrito.

Parte elettronica e codice

 Questi sono i collegamenti. Qui sotto vi scrivo il codice che va bene per questi specifici collegamenti!!
Altra cosa: quando portate l’alimentazione sul driver, i 5V che da Arduino avete messo sul ( + ) della breadboard li dovete riportare su VDD;  GND, che avete portato sul (-) della breadboard, lo riportiamo sul GND del driver.



Quando alimentate Arduino, se lo fate dalla usb usate SOLO 5V ; se lo alimentate dal jack usate da 7V a 12 V ( preferibilmente 9).

N.B.: Per le misure di questo progetto dovrete avere una rotazione della ruota dentata di circa 63.5 secondi.

 

Per il motore, possiamo utilizzare due codici. Per il primo proseguiamo nel seguente modo.
Il trucco sta nel calcolare il rapporto di trasmissione, dato da:

(numero denti ruota sull’ asta) / (numero denti ruota del motore)

Ad esempio, se la ruota dentata sull’ asta ha 50 denti e quella sul motore 25, il rapporto di trasmissione è pari a 2. Ciò significa che la ruota del motore (quindi il motore stesso) deve compiere due giri per far sì che la ruota sull’ asta ne compia uno.
A questo punto ci basterà impostare una proporzione per stabilire il tempo di rotazione di due giri del motore.

2 giri : 1 giro = (tempo rotazione motore) : 63.5 secondi

Quindi il tempo di rotazione trovato sarà riferito a 2 giri.

In setSpeed docremo inserire ( tra le parentesi) il numero di giri che il motore deve compiere in un minuto, quindi per ottenere questo dato impostiamo un’altra proporzione:

2 giri : 127 secondi = ( giri al minuto ) : 60 secondi

Ricordate che i motori devono girare in senso opposto, quindi in uno dei due comandi step scriviamo (-2048), come già scritto nel codice.
Inseriamo tale valore in setSpeed e abbiamo fatto
Per il secondo codice ci basterà variare il delayTime per ottenere il tempo di rotazione desiderato di 63,5 secondi.



Qui possiamo vedere il beneficio dell’utilizzo di questo strumento:

(Foto inseguita) 

 

(Foto non inseguita)


Qui  i codici per Arduino. Dovrete scaricare l’apposito programma per poter caricare i programmi sulla scheda direttamente dal sito di Arduino.


PRIMO CODICE:

#include <Stepper.h>

Stepper MotoreUno(2048,4,5,6,7);
Stopper MotoreDue(2048,8,9,10,11);

void setup() {

MotoreUno.setSpeed(1);
MotoreDue.setSpeed(1);
}

void loop() {

MotoreUno.step(2048);
MotoreDue.step(-2048);
}


SECONDO CODICE:

int MotorPin1 = 8;
int MotorPin2 = 9;
int MotorPin3 = 10;
int MotorPin4 = 11;
int MotorPin5 = 4;
int MotorPin6 = 5;
int MotorPin7 = 6;
int MotorPin8 = 7;
int DelayTime = 6;

void setup() {

pinMode(MotorPin1, OUTPUT);
pinMode(MotorPin2, OUTPUT);
pinMode(MotorPin3, OUTPUT);
pinMode(MotorPin4, OUTPUT);
pinMode(MotorPin5, OUTPUT);
pinMode(MotorPin6, OUTPUT);
pinMode(MotorPin7, OUTPUT);
pinMode(MotorPin8, OUTPUT);

}

void loop() {

digitalWrite(MotorPin1, LOW);
digitalWrite(MotorPin2, LOW);
digitalWrite(MotorPin3, LOW);
digitalWrite(MotorPin4, HIGH);

digitalWrite(MotorPin5, LOW);
digitalWrite(MotorPin6, LOW);
digitalWrite(MotorPin7, LOW);
digitalWrite(MotorPin8, HIGH);

delay(DelayTime);

digitalWrite(MotorPin1, LOW);
digitalWrite(MotorPin2, LOW);
digitalWrite(MotorPin3, HIGH);
digitalWrite(MotorPin4, LOW);

digitalWrite(MotorPin5, LOW);
digitalWrite(MotorPin6, LOW);
digitalWrite(MotorPin7, HIGH);
digitalWrite(MotorPin8, LOW);

delay(DelayTime);

digitalWrite(MotorPin1, LOW);
digitalWrite(MotorPin2, HIGH);
digitalWrite(MotorPin3, LOW);
digitalWrite(MotorPin4, LOW);

digitalWrite(MotorPin5, LOW);
digitalWrite(MotorPin6, HIGH);
digitalWrite(MotorPin7, LOW);
digitalWrite(MotorPin8, LOW);

delay(DelayTime);

digitalWrite(MotorPin1, HIGH);
digitalWrite(MotorPin2, LOW);
digitalWrite(MotorPin3, LOW);
digitalWrite(MotorPin4, LOW);

digitalWrite(MotorPin5, HIGH);
digitalWrite(MotorPin6, LOW);
digitalWrite(MotorPin7, LOW);
digitalWrite(MotorPin8, LOW);

delay(DelayTime);
}


Naturalmente, se avete dubbi e domande aspetto i vostri commenti nell’articolo.

Comments are closed.