Tramite questa attività potrai scoprire quanto pesi sulla Luna e sui vari pianeti del Sistema Solare.
Per raggiungere questo obiettivo useremo Arduino UNO, una piattaforma hardware utilizzata per costruire progetti di robotica, elettronica e automazione, sulla quale viene caricato un software (in linguaggio C) che consentirà di controllare una serie di sensori collegati alla scheda stessa e di interagire con essi.
Oltre alla sola scheda Arduino avremo bisogno di 9 pulsanti, uno per ogni pianeta del Sistema Solare più la Luna, una pedana quadrata di una quarantina di centimetri di lato che fungerà da base per la nostra bilancia (l’ideale sarebbe una base di legno in modo tale da resistere al nostro peso), 4 celle di carico con una portata di 50 kg (in questo modo potremo misurare un peso massimo di 200 kg) e infine il modulo HX711, fondamentale per amplificare e inviare alla scheda Arduino il segnale elettrico emesso dalle celle di carico.
Iniziamo con la costruzione del piatto della bilancia. Per prima cosa, prendiamo la nostra pedana e incolliamo, ai quattro lati della pedana, le celle di carico. Per fare questa operazione possiamo usare un po’ di colla a caldo che – mi raccomando – va applicata solo ed esclusivamente sul bordo esterno del sensore. Questo perché i sensori di peso sfruttano la variazione di resistenza elettrica che alcuni materiali manifestano quando sono sottoposti a compressione o a trazione.
Il cuore, anzi i cuori del sensore sono gli estensimetri che, opportunamente posizionati sulla cella di carico, forniscono indicazioni sufficienti a dimensionare la sollecitazione. L’estensimetro elettrico a resistenza è costituito da una griglia di sottilissimo filo metallico rigidamente applicata su di un supporto di materiale plastico. L’estensimetro viene utilizzato incollandolo sulla superficie del corpo di cui si vogliono misurare le deformazioni. Il filo segue le deformazioni della superficie a cui è incollato, allungandosi ed accorciandosi insieme ad essa; queste variazioni dimensionali causano una variazione della resistenza elettrica del filo. Misurando tali variazioni, è possibile risalire all’entità della deformazione che le ha causate. Le variazioni di resistenza vengono interpretate dal modulo HX711 che consente ad Arduino di ottenere precise indicazioni sul peso a cui le celle sono sottoposte. Perché il modulo possa rilevare correttamente la variazione di peso e comunicarle alla scheda Arduino, è necessario collegare le varie celle di carico in modo opportuno seguendo lo schema sottostante.
Collegamenti tra celle di carico e modulo HX711:
Cella di carico superiore sinistra:
Filo rosso —> uscita E- sensore HX711;
Filo bianco —> filo bianco cella di carico superiore destra;
Filo nero —> filo nero cella di carico inferiore sinistra.
Cella di carico superiore destra:
Filo rosso —> uscita A- sensore HX711;
Filo bianco —> filo bianco cella di carico superiore destra;
Filo nero —> filo nero cella di carico inferiore destra.
Cella di carico inferiore sinistra:
Filo rosso —> uscita A+ sensore HX711;
Filo bianco —> filo bianco cella di carico inferiore destra;
Filo nero —> filo nero cella di carico superiore sinistra.
Cella di carico inferiore destra:
Filo rosso —> uscita E+ sensore HX711;
Filo bianco —> filo bianco cella di carico inferiore sinistra;
Filo nero —> filo nero cella di carico superiore destra.
Collegamenti tra modulo HX711 e Arduino:
GND modulo HX711 —> GND Arduino;
VCC modulo HX711 —> 5v Arduino;
CLK modulo HX711 —> pin 2 Arduino;
DOUT modulo HX711 —> pin 3 Arduino.
Come si può notare dallo schema, alcuni fili delle celle di carico sono collegati tra loro per formare quello che viene chiamato ponte di Wheatstone. Questa disposizione consente di combinare e misurare contemporaneamente i carichi su tutti i diversi sensori delle celle di carico.
Fatti questi collegamenti occupiamoci ora dei 9 bottoni che rappresenteranno i pianeti del Sistema Solare più la Luna. Essi andranno collegati e programmati in modo tale che – nel momento in cui vengono premuti – forniscano, sul monitor seriale di Arduino, il peso che potrei avere su un dato pianeta. I bottoni di Arduino saranno collegati con un pin al Ground mentre il secondo pin lo collegheremo a una delle uscite digitali della scheda di Arduino. Di seguito trovate lo schema di collegamento.
Collegamenti tra pulsanti eArduino:
Pulsante Mercurio —> pin 4;
Pulsante Venere —> pin 5;
Pulsante Terra —> pin 6;
Pulsante Luna —> pin 7;
Pulsante Marte —> pin 8;
Pulsante Giove —> pin 9;
Pulsante Saturno —> pin 10;
Pulsante Urano —> pin 11;
Pulsante Nettuno —> pin 12.
N.B. In questa attività abbiamo deciso di collegare i pulsanti in questo modo. Tuttavia l’ordine può essere cambiato a patto di modificare anche il codice sottostante.
Realizzati tutti i collegamenti hardware passiamo ora alla programmazione della scheda.
Per prima cosa colleghiamo, con il suo opportuno cavo, la scheda Arduino al nostro pc dove abbiamo precedentemente installato il software per controllare e programmare la scheda Arduino. Dopo aver aperto l’IDE di Arduino, andiamo in strumenti/scheda e selezioniamo Arduino/Genuino Uno e successivamente, andiamo in strumenti/porta e selezioniamo la porta alla quale è collegato il nostro Arduino. In questo modo abbiamo settato l’ambiente di lavoro di Arduino e possiamo iniziare a scrive il codice per la nostra bilancia.
A questo punto dobbiamo caricare la libreria che consentirà ad Arduino di interpretare correttamente i dati ottenuti dal modulo HX711. La libreria è scaricabile qui. Per importare la libreria nell’ambiente Arduino basterà cliccare su Sketch/#include libreria/aggiungi libreria da file zip, da qui basterà cercare il file zip appena scaricato e cliccarci sopra. In questo modo Arduino inserirà all’interno del programma la libreria in questione.
Fatte queste operazioni preliminari prepariamoci a tarare la bilancia. Questa operazione è di fondamentale importanza perché le celle di carico offrono, per caratteristiche costruttive e modalità di utilizzo, risultati anche significativamente diversi tra loro, per cui il risultato di una pesata deve essere rettificato da un valore di scala da inserire nel programma generale della bilancia. Per determinare il valore di scala è fondamentale utilizzare un programma di taratura e un peso campione, di valore noto. Per fare ciò usiamo il programma che può essere scaricato da qui.
Per prima cosa apriamo lo sketch di taratura nell’IDE di Arduino (file/apri e poi selezioniamo il file taratura.ino) e carichiamolo sulla scheda, senza posizionare alcun peso sul piatto della nostra bilancia. Apriamo il monitor seriale di Arduino (per fare ciò basta cliccare sull’icona della lente di ingrandimento che si trova in alto a destra nell’ambiente di lavoro di Arduino) e una volta che sulla schermata si legge il primo valore, posizioniamo, sul piatto, un’oggetto di peso noto. Sul monitor seriale inizieranno a scorrere una serie di valori che rappresentano il peso dell’oggetto misurato dalle celle di carico. Ovviamente tali valori non rappresenteranno il peso reale ma, agendo sui tasti “a” e “z”, possiamo modificare il calibration_factor (fattore di calibrazione) finché il peso che leggiamo non sarà uguale al peso del nostro oggetto campione. Una volta che otteniamo il peso vero dell’oggetto prendiamo nota del calibration_factor, che andrà poi inserito all’interno del programma definitivo della bilancia. Attenzione: il calibration_factor può essere sia positivo che negativo.
Trovato il calibration_factor carichiamo nell’IDE di Arduino lo sketch bilancia.ino, questo è lo sketch che permetterà alla bilancia di funzionare correttamente. Prima di eseguire il software e caricarlo sulla scheda Arduino dobbiamo modificare il valore del calibration_factor preimpostato nel codice inserendo quello che abbiamo ottenuto con il programma precedente. A questo punto carichiamo il programma sulla scheda Arduino, che può essere scaricato da qui, e apriamo il monitor seriale.
Adesso non dobbiamo fare altro che salire sulla nostra bilancia e, cliccando sui vari bottoni, potremo leggere sul monitor seriale i valore del nostro peso sui vari pianeti del Sistema Solare!
Questo il link al webinar dedicato all’attività, svolto in occasione della Europe Code Week 2020: