I sensori che puoi collegare ad arduino sono molteplici e potrei non finire mai di elencarli e testarli tutti, oggi montiamo il sensore di flessione: in grado di misurare la flessione di un corpo fisico.
Il sensore di flessione lo puoi acquistare on-line e ti arriva a casa nudo e pronto per essere montato.
Il montaggio del sensore di flessione
Per utilizzare il sensore di flessione dovrai innanzitutto saldare due fili ai contatti del sensore, puoi seguire i passaggi nelle foto:
Step 1: fondi dello stagno sui contatti del sensore:
Step 2: inserisci sui fili da saldare due pezzi di termo-retrattile:
Step 3: salda i contatti del sensore di flessione ai fili:
Step 4: retrai il termo-retrattile intorno ai contatti del sensore:
Schema di collegamento
Il sensore di flessione è una resistenza variabile in funzione della flessione che imponi al sensore stesso.
Collegando un tester ai capi del sensore con fondo scala 50Kohm e flettendolo vedrai cambiare il valore in ohm letti dal tester.
Per usare il sensore di flessione con arduino è necessario porre una resistenza di pull-down o pull-up tra uno dei pin del sensore e Gnd ( pull-down ) o +5v ( pull-up ). Ecco lo schema:
come noti puoi collegare un pin del sensore al +5v e l’altro sia al pin A5 di arduino sia ad una resistenza di pull-down verso Gnd.
In questa configurazione potrai leggere su arduino i valori analogici attraverso il pin A5 con il comando analogRead( A5 ); e scriverlo sul monitor seriale.
Lo sketch di test del sensore di flessione
Lo scketch che puoi utilizzare per eseguire il test è il seguente:
/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor. Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain. */ // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A5); // print out the value you read: Serial.println(sensorValue); delay(200); // delay in between reads for stability }
lo sketch lo avrai riconosciuto è l’esempio fornito con l’IDE arduino AnalogReadSerial.ino che ritrovi tra gli esempi di default, a cui ho apportato solo due modifiche:
linea 19: ho sostituito il pin letto dal comando analogRead() inserendo A5 poiché il sensore è collegato a tale pin;
linea 22: ho incrementato il delay da 1 millisecondo previsto nell’esempio di default a 200 millisecondi che ti permettono di visualizzare sul monitor seriale i valori letti.
Buon test !!!
19 commenti
2 ping
Vai al modulo dei commenti
Caro Mauro visto che ignoravo l’esistenza di questo sensore allora mi chiedo quali saranno gli altri sensori utilizzabili con Arduino? Mi puoi dare maggiori info.
Autore
Ciao Giovanni,
saranno migliaia i sensori che puoi collegare ad Arduino, puoi trovare una lista abbastanza completa sul blog o sul sito robot-domestici.it da cui io acquisto tali sensori, ma non saranno mai tutti.
Considera che a tutti i sensori commerciali prodotti nel mondo puoi aggiungere tutti i sensori auto-prodotti dai makers di tutto il globo di cui ignoro l’esistenza.
Mauro
Allora ti pongo la domanda in modo diverso e ciò ti fa comprendere che non ne so molto. Tutti i sensori esistenti sono compatibili con Arduino o solo alcuni sono espressamente dedicati ad essere usati con Arduino? Si tratta solo di differenza di potenziale?
Autore
Ciao Giovanni,
sono compatibili con arduino tutti i sensori che funzionano a +5v o inferiore, almeno per quello che concerne i sensori di tipo analogico.
Per i sensori di tipo digitale, SPI, ICSP, I2C o altro protocollo di comunicazione devi verificare sensore per sensore e sopratutto se esistono le librerie di controllo per arduino.
Se hai dei sensori che lavorano con livelli di segnale superiori ai +5v puoi sempre optare per un adattatore di segnale di tipo INPUT/OUTPUT.
Tu di che tipo di sensore avresti bisogno?
Mauro
Ti ringrazio per la risposta. In particolare non ho bisogno di nessun sensore ti ho posto la domanda solo per curiosità. Ero convinto, chissà perchè, che i sensori disponibili per Arduino fossero limitati.
Autore
Ciao Giovanni,
certamente non sono infiniti, sono di sicuro troppi per farne un elenco.
Quelli già pronti sono di numero limitato da produttore a produttore.
Mauro
Articolo da aggiungere alla tesina.Thanks
Autore
Ciao Fabio,
ne pubblicherò altri a breve 😉
Sulla taratura dei sensori e dei servo.
Mauro
Articolo davvero interessante..che mi potrebbe schiarire le idee sul progetto che sto cercando di ultimare ..un saluto Mauro.
Autore
Ottimo Giuseppe,
sono certo che ci riuscirai 🙂
Mauro
Speriamo!..comunque guardando l’articolo seguente mi sa che è proprio quello a cui stai mirando tu..(una mano robot immagino) ..a me dà solo piccoli problemi di corrente e poi dovrebbe essere a posto 😉
salve, complimenti innanzitutto per i tuoi tutorial! 🙂
leggendo i valori ho una scala che va da 520 circa a 820 circa.
il problema è che mettendo il sensore ad una certa flessione, cambia il valore ma sballa di continuo.
ad esempio nel piegare ho una scala del genere:
800
799
789
787
786
785
801 <<
784
800<<
783
782
Questo ovviamente si ripete nel tempo.
E mi crea dei problemi se devo attribuire il valore ad un servo, perchè il servo ha delle "vibrazioni" continue.
Spero tu possa aiutarmi!
Grazie in anticipo!
Autore
Ciao Kevin, i sensori in genere possono avere delle oscillazioni sui rilievi. Quelli di flessione in particolare ti sembra di tenerli fissi ad una posizione ma non é realmente così.
Aggiungi un certo grado di errore dovuto alla costruzione di un sensore per uso non professionale ed il gioco é quello che rilevi.
Il primo grado di auto correzione é eseguito dalla funzione map perché rimappando 800 valori su 180 é circa 1/4 di risoluzione persa a vantaggio della stabilità del servo.
Se non basta puoi agire con un campionamento di 10/20/30 valori e farne la media prima di inviarli al servo, ovviamente la media la farai anche prima del map()
Grazie della risposta Mauro.
Quindi se ho capito bene, leggo ad esempio 10 valori , faccio la media e poi uso la funzione map()?
Con quale istruzione potrei fare una media corretta in Arduino?
Autore
Ciao Kevin,
hai compreso in modo egregio.
La media la fai con una formula matematica: sommi tutti i valori letti nei 10 campioni e dividi per 10 il risultato.
grazie mille Mauro, proverò e farò sapere i risultati!
Autore
Ottimo Kevin !!!
Ciao ma la resistenza da inserire quale devo mettere? La 1k,10k o 100k??
Grazie
Autore
Ciao Francesco,
nello schema è riportata la resistenza che ho utilizzato io, è una 10K come puoi vedere dai colori.
[…] « Sensore di flessione – montaggio […]
[…] Sensore di flessione – montaggio […]