Sei sulla pagina 1di 3

Progetto cella di carico

Descrizione
A volte c’è chi chiede un aiuto per una propria idea. In questo caso mi ha stimolato fare degli
esperimenti per una cella di carico. Come si potrebbe immaginare non è proprio un progetto completo
ma solo la prova con un convertitore analogico digitale specifico per la lettura di una cella di carico.

Lo sviluppo si basa su un modulo che monta un HX711.


Secondo le direttive di chi mi ha chiesto l’aiuto ho utilizzato una MCU
16F877A. Di seguito ho montato un insieme di display a sette segmenti
(Chiamiamolo 7SD, che sarebbe 7 Segments Display). Ci sono altre
opzioni per programmare un diverso display. Come si può notare nello
schema.

Schema

A riguardo del 7SD, ci sono le opzioni per la larghezza da un minimo di quatto cifre o più. Direi che
non ho considerato oltre sei cifre, non penso che dia problemi.
Tra le varie opzioni c’è la possibilità d’ interfacciare una periferica UART. Per questo io ho montato il
modulo bluetooth, con attenzione a mettere il partitore resistivo al piedino TX del micro.
Come mostra lo schema si vede che ci può essere un collegamento diretto con un LCD, seguendo le
indicazioni delle etichette alle linee di collegamento. Non è previsto il controllo della retro-
illuminazione, ma basta un semplice transistor NPN che porta a massa il piedino 16 (catodo) del
display.
Eventualmente si può utilizzare anche un modulo d’ interfaccia I2C che si trovano comunemente ai
negozi online.
In caso del collegamento diretto non viene previsto il controllo di retro-illuminazione. Magari basta un
transistor con una fotoresistenza.

Programma
Il programma e commentato in inglese, come precedenti sviluppi. Per quelli che non sono avvezzi,
potrei farne una copia tradotta, mentre la mia ambizione sarebbe di poterlo divulgare anche per coloro
che non conoscono l’Italiano anche perché è razionale che sia scritto in modo internazionale.

Il compilatore usato è il Proton Basic, del quale mi trovo bene per le varie peculiarità. Tra cui inserire
codice in assembly. Per questo c’è un caso da notare nella posizione delle variabili, in special modo per
i due array, visto che si utilizza un metodo che non accetta salti di banchi di memoria.

In questo progetto è stato usato un metodo di separare il file in tre parti. Una parte si prende carico di
determinare le variabili e altre definizioni, lasciando migliore visibilità nella parte importante del
programma. Un altro file è necessario solo se si vuole utilizzare il display con interfaccia I2C.

Nel programma principale (Wscale??.Bas) si nota un paio di $define di rilievo. Questi definiscono
quale grandezza di misura si vuole implementare in chilogrammi. Vedasi alla riga 10. Infatti si può
usare per celle di carico da 5, 10 o 20 chili.
Nella riga 12 si decide il livello di informazioni che si vuole vedere durante il processo. Infatti per
risoluzione del problema si aumenta il livello e quindi entra a far parte del programma anche la
comunicazione tramite seriale.

Di seguito ci sono le linee che permettono di optare se usare un 7SD o un LCD, del quale una opzione
seguente determina il tipo di collegamento.

Il programma prevede anche il risparmio energetico. Allora se non si usa il sistema per un periodo di 10
secondi il display viene disattivato.
In alcuni casi, i disturbi elettrici o meccanici possono prolungare il periodo di accensione. Infatti non
solo le attività coi tasti rinnovano il periodo, ma anche le variazioni di letture permettono di mantenere
il display attivo.

È previsto anche una costante che sceglie il numero di campioni da effettuare per ogni lettura della
cella. Al momento sono stati previsti venticinque campioni. Credo che sia il valore ottimale, perché in
caso di meno campioni subentrerebbe troppe variazioni, mentre nel caso di numero alto, allora la
risposta alla lettura diventerebbe alquanto lunga. Già con quaranta campioni la risposta si aggira sul
secondo di tempo.
Inoltre si rischierebbe di disturbare la visualizzazione del 7SD, in quanto una lettura del modulo viene
fatta senza interrupt attivi.
Modalità d’uso
Il modo di utilizzare e composto da quattro tasti.

• TARE (collegato a RD4) che si utilizza in due e più fasi.


All’avvio si preme brevemente per azzerare il valore che quindi da il punto di tara.
Premendo per almeno 2 secondi si entra alla fase di calibrazione.
• UP (collegato a RD5) si utilizza per aumentare un valore durante la calibrazione.
Se premuto brevemente esce la calibrazione con il valore solo in memoria.
• DOWN (collegato a RD6) come per UP serve a diminuire un valore durante la calibrazione.
Se premuto dopo la fase di conferma determina il salvataggio della calibrazione in EEPROM.
• SETTING (collegato a RD7) ha qualche funzione a secondo dei casi.
Se premuto brevemente durante la fase di calibrazione, viene accettato il valore. Solo che si
hanno quattro secondi per accettare o ignorare di salvare in EEPROM.
Se premuto per almeno 2 secondi, allora abbandona la procedura di calibrazione e nessuna
variazione sarà attuata.
In caso di errore fatale, se premuto allora effettuerà un reset del sistema. Se non si risolve,
significherà che ci sono dei danni da verificare.

Durante la presentazione con 7SD, che lampeggia per quattro volte, si può interrompere premendo
qualsiasi tasto dei quattro.
Anche quando entra in azione il risparmio energetico, qualsiasi tasto permette di riattivare il
funzionamento.
Per quanto riguarda la calibrazione, si pone un peso noto per la verifica e quindi si inserisce il suo
valore.
L’immissione si presenta con sei zeri (o meno per quei 7SD con meno cifre). Il punto decimale (per
7SD) o il trattino di sottolineatura (per LCD) determina la posizione che si vuole modificare. Quindi
coi tasti UP o DOWN si potrà cambiare il valore. Per passare alla cifra a destra successiva si preme
TARE per poco. In caso si volesse modificare una cifra a sinistra si dovrà premere TARE in
successione fino a che il posizionamento riprende dalla prima cifra a sinistra.

Si potrebbe anche usare il fattore di calibrazione come un moltiplicatore di comodo. In tal modo
potrebbe essere un prezzo o una variabile di comodo che serve per il proprio scopo. Il programma non
prevede immissione di numeri in virgola mobile. Anche il valore di pesatura è espresso in grammi.
Automaticamente verrà visualizzato il punto per le migliaia. Mentre per valori inferiori a mille non c’è
il punto.

A breve vi mostrerò il video...

Potrebbero piacerti anche