Ecco qui un semplice inseguitore solare, realizzato con Arduino…
E’ solo una bozza, uno spunto da migliorare per creare nuovi progetti.
L’idea è molto semplice. Utilizzando due fotoresistenze (LDR), una che punta leggermente verso destra e l’altra leggermente verso sinistra, andiamo a leggerne i valori e muoviamo un servo a rotazione continua nella direzione della fotoresistenza che riceve più luce, finchè la luminosità non è circa uguale.
Il risultato finale è quello che vediamo nel seguente video:
Come potete vedere ho utilizzato Arduino Mini Pro come piattaforma, ma non cambia assolutamente nulla rispetto all’utlizzo con Arduino UNO. L’unica differenza è che nell’alimentare l’Arduino Pro Mini ho dovuto usare un regolatore esterno, perchè quello interno non è sufficiente per pilotare il servo.
Ma veniamo all’elenco dei materiali necessari:
1 – Una board Arduino UNO (o Duemilanove o qualsiasi altra board compatibile)
2 – Due fotoresistenze LDR da 20K (eventualmente con pochi aggiustamenti possono andare bene anche di altri valori)
3 – Due resistenze da 4.7K (eventualmente con condizione di luce differenti si possono usare valori differenti)
4 – Un servo a rotazione continua. (Difficili e/o costosi da trovare, ho modificato un servo standard seguendo le indicazioni che trovate a uno di questo link (http://www.gioblu.com/tutorials/azionamenti/188-modifica-rotazione-continua-microservi oppure http://robodroid.wordpress.com/2011/12/29/micro-servo-a-rotazione-continua/ oppure ancora http://www.robot-italy.com/article_info.php?articles_id=1)
5 – Una batteria da 9V, una breadboard, dei supporti di plastica e poco altro
I componenti vanno collegati nel seguente modo ad Arduino:
Come vedete il tutto è molto molto semplice.
Se volete scaricare il file in formato fritzing, questo è il link.
http://fritzing.org/media/fritzing-repo/projects/i/isarduino-micro-robot-inseguitore-solare-con-ardui/fritzing/ISArduino.fzz
Veniamo ora al codice che è il seguente:
/* ISArduino 0.1 Inseguitore Solare con Arduino by Luca Soltoggio - 2012 https://arduinoelettronica.wordpress.com */ #include <Servo.h> #include <Narcoleptic.h> /* Libreria che permette di mandare in standby il microcontrollore nei momenti di inattività (delay), risparmiando parecchia energia. Si può eventualmente anche non utilizzare (in tal caso va sostituita l'ultima istruzione Narcoleptic.delay(15) con delay(15). */ Servo myservo; int Value; int Center=105; /* La variabile Center rappresenta il valore di centratatura del servo a rotazione continua. Nel mio caso è 105, di solito è 90. Con questo valore il servo deve restare fermo. */ void setup() { Serial.begin(9600); myservo.attach(9); // Collega il servo al PIN 9 } void loop() { int sensorValue = analogRead(A0); // Legge il valore del sensore LDR di sinistra int sensorValue2 = analogRead(A1); // Legge il valore del sensore LDR di destra Value=(sensorValue-sensorValue2)/10; /* Calcola la differenza tra i due sensori e li divide per 10, in questo modo una differenza di 10 equivale a 1, una differenza di 53 equivale a 5 e cosi via */ if (Value==0) myservo.detach(); else myservo.attach(9); /* Se la differenza è uguale a 0 scollega il servo altrimenti lo collega (serve per risparmiare energia) */ if (Value>10) Value=10; if (Value<-10) Value=-10; /* Limita la differenza massima tra -10 e + 10 (per evitare una velocità eccessiva) */ Serial.println(Value); // Debug - Visualizza il valore sulla seriale myservo.write(Center+Value); /* Se il valore di Value è positivo, sposta il Servo a DX, se è negativo a SX. La velocità è direttamente proporzionale al valore assoluto di Value */ Narcoleptic.delay(15); /* Invece che usare un semplice delay, usiamo questo, così risparmiamo energia. Si può eventualmente sostituire con delay(15). */ }
Anche il codice è molto semplice ed autoesplicativo, quindi non mi dilungo più di tanto.
Se volete scaricare lo sketch per Arduino, lo trovate qui:
http://fritzing.org/media/fritzing-repo/projects/i/isarduino-micro-robot-inseguitore-solare-con-ardui/code/inseguitore_solare.ino
Qui di seguito trovate invece il link alla pagina Fritzing del progetto:
http://fritzing.org/projects/isarduino-micro-robot-inseguitore-solare-con-ardui/