Misuratore forza di impatto (con cella di carico)

Ragazzi so che quello che sto per scrivere in parte è già stato affrontato da qualche altra parte, ma le informazioni si sono frammentate e dispersive. Con il mio quesito potrei essere d'aiuto a tutte quelle persone che vogliono realizzare un progetto simile.
Come da oggetto, ho il bisogno di realizzare un misuratore (fissato verticalmente al muro) di forza di impatto. Praticamente un peso viene scagliato sul sensore (opportunamente protetto trascurando l'energia assorbita dalla protezione) e visualizzare sul display la forza letta. In seguito i pesi saranno più di uno e con RTC dovrò misurare quanti colpi subisce la cella in un arco di tempo prefissato, oppure dopo quanto tempo (dall'accensione di un LED) il peso colpisce il sensore. Ritornando al primo punto, ho messo su un circuito come in allegato, quindi un amplificatore di strumentazione INA125P con una Rg da 24ohm ricavata dalla formula Gain = 4 + (60000/Rg) per avere un guadagno di 2500 come illustrato nel datasheet.
Mentre le caratteristiche della cella sono le seguenti:
Capacità massima: 1000Kg
Sensibilità: 2mV/V
Alimentazione: 5V (arduino)
Mentre il gain dell'INA l'ho calcolato così:
Portata massima da leggere: 200Kg (diciamo che al massimo avrò una forza di impatto di 150Kg e per sicurezza ho ipotizzato 200Kg)
Output max con alimentazione della cella a 5V: 10mV se applicata una forza di 1000Kg (sensibilità 2mV/V), quindi 10m:1000Kg = x:200Kg avendo a 200Kg massimo un segnale a 2mV. Volendo rappresentare ciò su una scala da 0V a 5V (uscita analogica arduino), quindi 5v/2mV = 2500 che sarà il guadagno dell'INA da cui Rg = 24ohm come da formula.
Ho commesso qualche errore?

Leggendo i valori analogici (uscita dell'INA) trovo questo:

Kg - Lettura
0 - 12.5
3 - 13
4 - 14
5 - 14.1
6 - 15

Come incide il valore a vuoto sul risultato? E come levo quell'offset (misurato con il multimetro ho 0.6V a vuoto)? Mi sarei aspettato un incremento lineare, ovviamente corretti i miei errori/orrori :stuck_out_tongue: sarà così in quanto la linearità del sensore è certificata (con le dovute approssimazioni.)

Da qui ha avuto tutto inizio: http://cerulean.dk/words/?page_id=42

ma non fai prima ad usare il reference interno a 1,1V?
per le letture strane, uno dei motivi potrebbe essere il montaggio del circuito o il circuito stesso.
Gli ic della serie INAxxx hanno un'application note dove spiegano come posizionare/dimensionare correttamente le piste e come creare i piani di massa intorno ai pin in entrata, questo fattore non è da sottovalutare dato che quando si amplificano segnali bassi senza altri tipi di filtri si amplifica anche il rumore, comunque cercala sul sito di Texax Instruments e dagli un'occhiata.

se vuoi leggere 200Kg, allora 200Kg:1024=xKg:y

se X = 3Kg allora y = 15.36
se X = 6Kg allora y = 30

direi di ricontrollare i collegamenti, in paricolare quelli della load cell

Innanzitutto grazie per la risposta al mio post, io sono un informatico con poca predilezione verso l'elettronica. La cosa però mi sta affascinando, quindi cerco di colmare le mie incompetenze studiando quello che leggo di qua e di la e non scopiazzare inutilmente. Ovviamente le lacune son tante quindi mi scuso per le eventuali cacchiate che scrivo. Il progetto dopo prenderà un piega più "informatica" e li spero di cavarmela (per forza!!).

BrainBooster:
ora mi sto affacciando ad Arduino, per utilizzare il ref interno intendi usare AREF come pin e come lettura la funzione analogReference(INTERNAL)? Per il momento il circuito è filato, ma fatto decentemente. Scusami non ho capito cosa intendi con il cercare info sul sito TI. Nel tentativo ho trovato questo: INA 125p and its usage to build some basic application hardware - Amplifiers forum - Amplifiers - TI E2E support forums e andando sul sito del produttore ho trovato questo http://www.tenettech.com/download/sample/2580 Praticamente quello che al momento voglio realizzare io, ovvero una bilancia. Per il discorso delle masse sinceramente ci ho capito poco, mea culpa ma cercherò di colmare la lacuna.

lesto:
i collegamenti son giusto, filati ma giusti. Tnx per la proporzione.

Continuo a debuggare e vi terrò aggiornati.

lesto:
se vuoi leggere 200Kg, allora 200Kg:1024=xKg:y

se X = 3Kg allora y = 15.36
se X = 6Kg allora y = 30

direi di ricontrollare i collegamenti, in paricolare quelli della load cell

Dato che, come tutte le esperienze di altri utenti che ho ritrovato in rete, a vuoto quindi a 0Kg arduino mi restituisce un valore dipendente dalla Rg e non nullo (da 12-a14) la tua proporzione non può essere applicata. Es: 1024:200=x:0 non da assolutamente 12 come nel mio caso. Sicuramente quel valore è dovuto ad un rumore, infatti a vuoto con un multimetro misuro 0.07v che arduino converte in 12. Inoltre ho notato che tra 0Kg e 10Kg riesco a misurare con buona precisione, nel senso che l'uscita segue un andamento con incremento lineare, ma poi se per esempio salgo sulla cella per pesarmi, arduino inizia a darmi valori troppo elevati che non riesco più a controllare.

allora, l'ina permette di trasformare il vaore di una resistenza in una differenza di tensione proporzionale, in base al gain impostato.

è normale avere una tensione allo 0, equivale alla resistenza "a riposo" della tua cella. Considera quel valore come zero (quindi va sempre sottratto alla misurazione).

Non è detto (anzi!) che la tua cella cambi la sua resistenza in modo lineare rispetto al peso; covresti possedere dei grafici o dei dati che indicano la non-linearità.

se noti il tizio del circuito che hai linkato ha fatto delle misurazioni a partire da pesi noti e poi una map, quindi una proporzione, tanto usa una precisione di .1kg (100grammi) usando pesi tra 10 e 30kg su una cella di carico da >1000kg... insomma anche se non lineare, il pezzo di cirva che usa è talmente piccolo da poter essere considerato lineare

Ragazzi ho chiamato la società che ha venduto la cella ( datasheet http://www.laumas.com/files_pdf/cls.pdf ) e mi ha assicurato che la cella è perfettamente lineare. Ad essere sincero sbagliavo anche io nel mettere su i pesi,la cella ha un filetto centrale quindi va utilizzata con una vite nel filetto e un piccolo piatto sulla sua testa dove dovrò poggiare poi i pesi per la calibrazione. Vi farò sapere.

Nada!! Ho seguito i consigli del produttore della cella, ma continuo ad avere un'uscita "sballata". Ho provato ad alimentare la cella direttamente con l'INA ed ho notato sul pin Vref5 (collego il pin 4 con il 15) mi da 4V, non è strano? Condiziona qualcosa? Praticamente con un'alimentatore esterno a 5V sia su millefori che su breadboard raggiungo 4V su Ref5, se alimento con una 12V allora trovo 5V oppure 10V se collego il pin 4 sul 16 (come da ds INA grafico 1). Non credo che la mia cella abbia un'alimentazione minima altrimenti sul DataSheet sarebbe stato riportato quindi anche 4V dovrebbero bastare, ma . Cacchio sono bloccato su una "sciocchezza" spero...

Esiste una correlazione tra tensione di alimentazione V+ e Vref: V+ = (Vref+ 1.25V) to +36V

E' evidente che se alimenti INA125 con i 5V di Arduino, Vref = 5V - 1.25V = 3.75V

Non puoi, perciò, ottenere una Vref = 5V

Da notare che questa tensione la trovi sul piedino 4 e se colleghi anche il 14 ottieni una tensione di 2.5V (stante l'esempio con 5V di alimentazione singola sul datasheet dell'integrato (figura 6).

Ti consiglio di seguire quello schema.

INA125.pdf (405 KB)

cyberhs grazie per il tuo consiglio, ho risolto e credo di aver capito anche perchè l'altra configurazione on andava bene. In particolare prevedeva che Vin+ e Vin- dovevano essere 1V al di sopra del ground per avere un'uscita lineare all'amp. Spero di aver tradotto bene la nota di pagina "SINGLE SUPPLY OPERATION". Come dicevo ora ho come riferimento la configurazione di Figura 6 e devo dire le letture fatte con multimetro presentano incrementi lineari (0,012 V/Kg). La mia domanda ora è la seguente, anche se ho quasi vergogna nel porla, l'uscita del segnale dell'amp. (pin 10 o 11) come va collegata ad Arduino? Mi spiego, ora la leggo con il multimetro come differenza di potenziale tra il pin 10 e il pin 5, quindi utilizzando quest'ultimo come riferimento, con Arduino come dovrei comportarmi?

Bella domanda...

Potresti collegare il pin 11 ad un un ingresso analogico.
Il pin 5 è la pseudo massa ed è sempre a +2.5V, quindi la misura che fai sarà un valore X + 2.5V.

Cioè sottrarre sempre 2.5V (ovvero 512) alla misura (con Aref = +5V).

Ok era ovvia la risposta... sono un ciuchino!!! Ragazzi tutto risolto, ho una precisione a 0,01Kg!!!!!! Ringrazio tutti voi, ma terrò vivo questo 3d perchè continuerò con il progetto come descritto nel mio primo post. Sto aspettando che mi consegnino il modulo RTC per fare misure di tempo e poi proseguire con il display e qualche altra cosa divertente!
Grazie a tutti voi per i preziosi consigli che mi avete dato e a presto!

Ecchime ragazzi, ho accantonato un po il progettino ed ora l'ho ripreso. Come dicevo nello scorso post, sono arrivato ad un buon punto con la misura, ovvero a ero arrivato ad un buon punto. Al momento sono costretto ad effettuate più letture per poi fare la media, in quanto la misura è un po instabile. Ovvero se lascio un peso (o a vuoto) il valore che leggo varia e non di poco. Per esempio a vuoto la lettura oscilla tra gli 11.5 e i 13. La stabilità di questo valore è importante in quanto mi serve per correggere la misura.
La calibrazione l'ho effettuata così:
1 - lettura media del valore letto a vuoto
2 - lettura media del valore con peso da 4.5Kg - valore letto a vuoto (A/D)
3 - lettura media del valore con peso da 7.5Kg - valore letto a vuoto (A/D)
4 - differenza delle due letture / 3Kg = 3.1 (step per ogni Kg) (A/D)
5 - lettura media del valore con peso da 10.5Kg, quindi verifica del corretto valore visualizzato in Kg

Per il calcolo del peso seguo questo metodo: ( [valore letto (A/D)] - [512 (A/D) pseudo-ground a 2.5V] - [valore a vuoto (A/D)] ) / step per ogni Kg (A/D).
Per il mio progetto però serve calcolare una forza impressa per pochi istanti (max 1 sec) quindi fare una media non è la soluzione. Avete idea delle possibili cause del "valore ballerino"? Questo rumore (non l'ho ancora analizzato con l'oscilloscopio me ne servirebbe uno però) da cosa potrebbe essere causato? A vuoto cmq ho un'uscita di 0,2V (misurato con il multimetro quindi costante) e credo che su un fondo scala a 2.5V sia tanto. Il resistore di gain è da 20 Ohm ma ho provato anche con uno da 220.
Idee??

Con un RG da 20 ohm il guadagno è di circa 3000 volte: secondo me è più il rumore che altro.

Dovresti diminuire il guadagno aumentando RG secondo la tabella, in modo da eliminare del tutto quei 200mV:

Gain RG Nearest 1%
4 nc nc
5 60k 60.4k
10 10k 10k
20 3750 3740
50 1304 1300
100 625 619
200 306 309
500 121 121
1000 60 60.4
2000 30 30.1
10000 6 6.04

Ho provato pure con un resistore da 220 e a vuoto riesco ad eliminare quell'offset ma l'instabilità resta...

hai provato ad usare dei cavi schermati?

La cella ha la schermatura ma non la sto utilizzando mentre il circuito di condizionamento è su breadboard con i cavidel kit aArduino

In questi giorni stiamo discutendo sull'affidabilità delle misure analogiche.

Ti ricordo che la prima misura (o meglio le prime) possono essere errate e quindi pare sia meglio scartarle, altrimenti la media cambia di conseguenza.

Ho utilizzato la schermatura della cella mettendo l'apposito filo a massa comune con il circuito e sto provando con una RG da 100 Ohm. Le misure non sono ancora stabili e in questo caso eseguo una lettura ogni 1000ms senza effettuare medie.
Questo è l'output con cella a vuoto:

analogValue: 16.47
load: 1.41408
analogValue: 16.36
load: 1.27372
analogValue: 16.76
load: 1.78520
analogValue: 16.53
load: 1.49490
analogValue: 16.89
load: 1.95373
analogValue: 16.81
load: 1.85088
analogValue: 17.15
load: 2.29304
analogValue: 16.35
load: 1.26039
analogValue: 16.91
load: 1.97814
analogValue: 16.27
load: 1.15565
analogValue: 16.27
load: 1.15180
analogValue: 16.30
load: 1.19498
analogValue: 16.38
load: 1.29069
analogValue: 16.29
load: 1.17766

min: 16.27 e max: 17.15. Cosa ne pensate??

Mi sa che proverò con un circuito filato ed abbandonerò la breadboard, se tocco la RG improvvisamente i valori letti aumentano il che la dice lunga sulla stabilità del circuito. Proverò con saldature e fili migliori su una millefori, speriamo.