PDA

Visualizza Versione Completa : Focheggiatore elettronico con Arduino Nano a doppia velocità



over885
15-07-2020, 21:39
Ciao a tutti,

magari a qualcuno potrebbe interessare questo semplice ed economico progetto per la messa a fuoco elettronica tramite pulsantiera (rimovibile), a 4 pulsanti, di cui 2 comandano la velocità alta e due la velocità bassa per movimenti di precisione il tutto alimentato a 12Vcc con a parte un regolatore di tensione impostato a 5Vcc per l'alimentazione del motorino.
É stato creato utilizzando un Arduino Nano per ottimizzare gli ingombri ed un motorino passo passo del tipo 28BYJ-48, mentre la scocca che contiene il motorino è stampata in PLA utilizzando appunto una stampante 3D, così come gli ingranaggi.

Il progetto fa fede alle misure di un focheggiatore da 1.25", uno di quelli che si trovano su telescopi di fascia economica, in questo caso un Newtoniano.
39285

Viene installato direttamente sui fori filettati che fissano il coperchio ingranaggi del focheggiatore. (il coperchio originale può essere eliminato se viene aggiunta una lamiera da 1mm di spessore come rinforzo, vedi foto)
39284

Su un lato della scocca è stato ricavato lo spazio per poter fissare un connettore femmina del tipo RJ45 per poter permettere la rimozione della tastiera una volta finita la messa a fuoco.
39286


Gli ingranaggi hanno una distanza di 22mm tra il centro e nello specifico quello del motore ha 16 denti, mentre quello sul focheggiatore ne ha 40
39287

La pulsantiera è stata ricavata utilizzando una scatola elettrica (0.90€) al cui interno si trova Arduino nano (con l'aggiunta di nastro isolante per evitare contatti indesiderati) ed un regolatore di tensione necessario al corretto funzionamento del motorino passo passo. Su un lato della scatola si trova il connettore per l'alimentazione mentre sul coperchio i 4 pulsanti.
39288 39289

Il risultato finale è questo
39291 39292

over885
15-07-2020, 21:54
Cliccando qua (https://www.thingiverse.com/thing:4543199) potete vedere i file per poter stampare tutti i vari oggetti, mentre di seguito trovate il codice da inserire in Arduino per programmarlo:

int button_1 = 2;
int button_2 = 3;
int button_3 = 4;
int button_4 = 5;
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;

int motor_Speed = 9;
int motor_Step;
int val1 = 0;
int val2 = 0;

void setup() {
pinMode(button_1, INPUT);
pinMode(button_2, INPUT);
pinMode(button_3, INPUT);
pinMode(button_4, INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}

void loop() {

val1 = digitalRead(button_1);
if (val1 == HIGH)
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(motor_Speed);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(motor_Speed);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motor_Speed);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motor_Speed);

}

val1 = digitalRead(button_1);
if (val1 == LOW)
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}

val2 = digitalRead(button_2);
if (val2 == HIGH)
{
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delay(motor_Speed);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delay(motor_Speed);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin1, LOW);
delay(motor_Speed);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, HIGH);
delay(motor_Speed);
}

val2 = digitalRead(button_2);
if (val2 == LOW)
{
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
}

val1 = digitalRead(button_3);
if (val1 == HIGH)
{
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(3);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(3);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(3);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(3);

}

val1 = digitalRead(button_3);
if (val1 == LOW)
{
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}

val2 = digitalRead(button_4);
if (val2 == HIGH)
{
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delay(3);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delay(3);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin1, LOW);
delay(3);
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, HIGH);
delay(3);
}

val2 = digitalRead(button_4);
if (val2 == LOW)
{
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
}
}


Questo per finire è il collegamento elettrico:
39295

In questo schema vengono usati 5Vcc per alimentare scheda e motorino. Se come nel mio caso avete un alimetatore a 12Vcc dovrete usare uno step down e dedicarlo all'alimentazione del motorino regolandolo a 5Vcc necessari per il motorino 28BYJ-48

Heisenberg
16-07-2020, 10:50
Sembra davvero ben fatto, complimenti. Hai avuto modo di testarlo? Io non me ne intendo molto di arduino, l'unica esperienza l'ho avuta con una termocoppia... Quanto è difficile realizzarlo e montarlo?

gspeed
16-07-2020, 15:27
Complimenti!!! Sto pensando a qualche progetto con arduino anche io. Per ora al fok ho collegati un vecchio motorino di un giocattolo e me la cavo ma prima o poi mi sa che faccio l'upgrade!

gianluca74
16-07-2020, 17:46
Bel progetto complimenti.
Mi stuzzica parecchio anche perchè un paui di motori step come quello che hai usato ce li ho e anche il resto dovrebbe saltare fuori dalle mie scatole di cianfrusaglie :biggrin:

Solo una domanda, visto che Arduino l'ho usato poco.
Il programma che hai gentilmente condiviso funziona anche su Arduino UNO o va modificato?

over885
16-07-2020, 17:56
Sembra davvero ben fatto, complimenti. Hai avuto modo di testarlo? Io non me ne intendo molto di arduino, l'unica esperienza l'ho avuta con una termocoppia... Quanto è difficile realizzarlo e montarlo?

L'ho ultimato ieri pomeriggio e non ho ancora avuto modo di provarlo, stasera tempo permettendo dovrei riuscirci...
Per la realizzazione è alquanto semplice poi tutto è in relazione alla manualità della persona che lo fa, diciamo che se sei pratico del fai da te è una passeggiata! Altrimenti potresti trovare qualche difficoltà, come è normale, ma nulla di difficile fidati.



Certo gianluca74 funziona anche su Arduino UNO, non va modificato basta fare un copia e incolla dello sketch che ho postato

DavideP
16-07-2020, 18:49
Spettacolo, proprio bello, hai fatto bene a lasciare diseccitate le bobine dei motori a focheggaitore fermo, io li avrei bloccati lasciando eccitata una bobina per bloccare il tutto onde evitare eventuali spostamenti dovuti al peso degli accessori, ma ripensandoci poi si sarebbe scaldato troppo visti i tempi di utilizzo in una sessione osservativa, mentre sicuramente avrei usato un movimento half step, forse più preciso no?

over885
16-07-2020, 19:30
Grazie Davide! Si, le ho lasciate diseccitate perché l'intento era quello di avere una pulsantiera rimovibile quindi sarebbe stato inutile mantenere alimentato il motore, comunque all'inizio l'ho provato e scalda abbastanza...
Per quanto riguarda i movimenti non ho usato gli half step perché già il movimento "rapido" non è poi così veloce, infatti dato il rapporto di riduzione degli ingranaggi 40:16 ho un giro completo di rotella focheggiatore solo dopo 2,5 giri di albero motore, ovvero circa 15 secondi e in questo tempo l'escursione del focheggiatore è di 23,5mm. Quindi in velocità lenta questo movimento è molto più lento e mi sembra sufficiente, comunque lo capisco appena proverò sul campo...

over885
19-07-2020, 15:44
Finalmente sono riuscito a provarlo ieri sera!
Funziona bene, la messa a fuoco risulta facile e precisa, tramite maschera di bahtinov si vede la lineetta che lentamente si avvicinava al punto di fuoco coincidendo con le altre due, cosa che manualmente (per la scarsa qualità del mio focheggiatore) era difficoltosa. Posso ritenermi soddisfatto!:D

Zoroastro
19-07-2020, 17:06
Bravo bel lavoro! Io ho preso i componenti per il MyFocuser Pro 2, appena finisco la Cam86 mi ci butto!

Alessandro_R87
13-11-2021, 12:01
Salve . Intanto complimenti per il progetto davvero incredibile ben fatto. Rispetto al tuo vorrei utilizzare un motore nema 17 da 12v. Cambia qualcosa a livello di componentistica oppure posso utilizzare lo stesso driver ULN2003A, le resistenze da 10k e arduino nano ? La lista della spesa sarebbe questa dove potete vedere tutte le componenti che ho selezionato https://www.amazon.it/hz/wishlist/ls/2EL4B2JSQRG3N?ref_=wl_share grazie a chi mi darà un feedback

over885
13-11-2021, 14:49
Ciao,
Grazie per i complimenti!
Così su due piedi non saprei rispondere, devo dare un occhiata e rispolverare il progetto perché è passato un po'di tempo. Ti farò sapere

Alessandro_R87
13-11-2021, 15:07
Ciao,
Grazie per i complimenti!
Così su due piedi non saprei rispondere, devo dare un occhiata e rispolverare il progetto perché è passato un po'di tempo. Ti farò sapere
Grazie infinite! Appena mi dai l'ok ordino tutto e me lo creo pure io (sarà leggermente diverso perché ho un newton con focheggiatore diverso ma a me basta far funzionare il motore il resto faccio tutto io)

over885
15-11-2021, 19:14
Ho rispolverato un po' il progetto ed ho concluso che, questo progetto, non può essere adattato al pilotaggio di un nema17 per due motivi.
Il primo è che questo codice è scritto per far funzionare motori di tipo unipolare, mentre i nema17 sono di tipo bipolare;
Il secondo è che l'integrato utilizzato da me è nato per lavorare a correnti di 0,4A.

Mi rendo conto che nello schema che ho postato a suo tempo viene raffigurato un motore di tipo nema che effettivamente può portare a malintesi, ma non sono riuscito a trovare il componente grafico adeguato, per questo chiedo scusa. :rolleyes:

Comunque il motore che ho utilizzato nel progetto, per questo tipo di lavori va più che bene in quanto ha una buona riduzione, infatti ha un rapporto di 64:1.

Alessandro_R87
15-11-2021, 19:41
Ho rispolverato un po' il progetto ed ho concluso che, questo progetto, non può essere adattato al pilotaggio di un nema17 per due motivi.
Il primo è che questo codice è scritto per far funzionare motori di tipo unipolare, mentre i nema17 sono di tipo bipolare;
Il secondo è che l'integrato utilizzato da me è nato per lavorare a correnti di 0,4A...
Grazie per il feedback. Effettivamente mi sono reso conto che questo sistema permette di focheggiare solo in una direzione e non tornare indietro. Come hai risolto questo problema?

over885
15-11-2021, 20:56
Non capisco cosa intendi, quello che ho fatto va sia avanti che indietro. Ci sono 4 bottoni: avanti lento, avanti veloce, indietro lento, indietro veloce