• Non ci sono risultati.

6. PROGRAMMAZIONE

6.4 PROGRAMMI SVILUPPATI

Calibrazione della cella di carico

Prima di procedere al programma che si dedica alla prova eseguita dal macchinario, è stato sviluppato un programma in IDE di Arduino che serve per la calibrazione della cella di carico.

È basato su un ciclo in loop che restituisce in output continuo il valore che viene letto dalla cella. Per calibrarlo si utilizza il fattore di calibrazione che varia a seconda delle dimensioni e del materiale della cella.

Inoltre è stato prodotto un campione ed è stato misurato in laboratorio utilizzando una bilancia di precisione, dalla quale si ottiene che pesa 335.9 𝑔 pari a 3.295 𝑁.

Figura 73: Cella di carico con campione per la calibrazione

Per procedere alla calibrazione basta caricare lo sketch del programma su Arduino e aprire il monitor seriale. A quel punto compariranno tutte le istruzioni per aumentare o diminuire in tempo reale il fattore di calibrazione e verificare che la misura della forza del campione sia corretta. Inoltre viene data la possibilità di eseguire un azzeramento del valore di output in qualsiasi momento.

Struttura finale del programma

Di seguito viene inserito il flow chart del programma che è stato sviluppato.

Arduino

Il programma in Arduino è stato scritto in linguaggio C/C++, utilizzando il software Arduino IDE. Lo script è organizzato in diverse sezioni:

 Inserimento delle librerie  Definizione dei pin arduino

 Inizializzazione delle variabili (tipologia di variabile)  Setup

 Loop

Come descritto precedentemente le librerie utilizzate sono tre: HX711.h, AccelStepper.h e Encoder.h. Esse servono ad eseguire delle funzioni per il convertitore della cella di carico, il motore step e l’encoder.

Successivamente vengono inizializzati e definiti i pin di comando e controllo collegati ad Arduino. Dopodiché vengono inizializzate tutte le variabili che verranno utilizzate nel programma, come le velocità e le posizioni del motore.

Nel setup si inizializza la porta seriale con un Baud Rate1 di 115200 Baud; viene impostato a questo

valore perché dal datasheet dell’encoder si ricava che la comunicazione in seriale deve essere settata in questo modo. Sempre nel setup si impostano i pin dei microstepper, si chiedono in input i valori di velocita e posizione da Matlab e si eseguono tutte le conversioni necessarie per controllare il 1motore

ed eseguire i feedback di posizione.

Infine c’è la sezione dedicata al loop all’interno della quale sono eseguiti i comandi per le movimentazioni del motore alle diverse velocità e per leggere l’encoder e dare un feedback di posizione. Esso è strutturato in modo tale da far avanzare il motore ad una determinata velocità; nel momento in cui l’encoder legge la posizione prefissata dall’utente (feedback di posizione), il motore si arresta e passa alla movimentazione successiva.

Matlab

Lo script in Matlab viene anch’esso diviso in sezioni:  Comunicazione seriale con arduino

 Setup della prova

 Trasmissione di dati e plot in tempo reale

Nella sezione dedicata alla seriale si inizializza la comunicazione modificando le impostazioni del Baud Rate come quelle di Arduino in modo tale da consentire il passaggio di dati (se il Baud Rate non è lo stesso, è come se il microcontrollore e il PC parlassero due lingue completamente diverse). Di seguito si presenta il setup dove vengono richiesti in input i valori di posizione e velocità del motore, per poi essere trasmessi mediante comunicazione seriale al microcontrollore.

Infine nella sezione finale sono presenti le funzioni necessarie per ricevere i dati di posizione e forza dall’encoder e dalla cella di carico. Inoltre si è deciso di impostare il programma in modo tale da eseguire un plot dei dati in tempo reale creando un grafico della forza sullo spostamento della vite a ricircolo di sfere.

Verifica di funzionamento

Terminata la compilazione dei programmi sono stati eseguiti numerosi test, prima di arrivare ad una soluzione definitiva. Nello script Matlab è stato verificato anche il tempo di campionamento medio dei dati che risulta essere:

𝑇𝑠≃ 0.025 𝑠

Una volta che il macchinario verrà realizzato si dovrà verificare che il tempo di campionamento ottenuto sia abbastanza piccolo da approssimare correttamente la curva delle prove di inserzione e estrazione.

Di seguito viene inserito il grafico che riporta un esempio di curva forza spostamento eseguito con i programmi sviluppati.

Figura 75: Grafico dimostrativo dell'acquisizione dei dati di forza e spostamento

Si nota che nel momento in cui parte la prova, dopo aver eseguito 60 𝑚𝑚 in velocità rapida, si azzera la posizione per avere uno spostamento sul grafico che parte da 0 𝑚𝑚 e arriva allo spostamento prefissato per il test (in questo esempio sono 6 𝑚𝑚). Le frecce riportate nel grafico indicano l’ordine cronologico in cui sono stati acquisiti i dati, facendo prima la prova di inserzione e successivamente la prova di estrazione (da notare il valore della forza).

Inserzione

6.5 Interfaccia utente

Per consentire una maggior praticità all’utente è stata sviluppata un’interfaccia in AppDesigner di Matlab dove viene data la possibilità di selezionare la tipologia del test da eseguire, le velocità e lo spostamento del motore e di eseguire le movimentazioni manuali. Inoltre è presente un pulsante per far ritornare il macchinario in posizione di home.

Per avviare la prova viene inserito un pulsante START seguito da uno di STOP che la termina in qualsiasi momento. È presente anche un grafico nel quale sarà possibile verificare in qualsiasi momento l’andamento della curva di inserzione o estrazione.

Alla fine del test, per verificare se la prova è andata a buon fine, si accenderà una delle due lampadine (Test OK o Warning) che riveleranno il responso della prova all’operatore.

Figura 76: Interfaccia per l'utente

Nel caso di studio è stato proposto il layout dell’interfaccia che rimane da implementare al programma in Matlab in un secondo momento. Inoltre rimane aperta la possibilità di implementare all’interfaccia dei limiti superiori o inferiori delle forze sull’andamento della curva, per avere più precisione sul responso della prova.

7. Conclusioni

Il macchinario progettato soddisfa tutte le specifiche imposte ad inizio progetto, ed è composto da:  Un sistema di movimentazione composto da una vite a ricircolo di sfere attuata da un motore

step

 Un sistema di centraggio dell’asse del pin con l’asse del connettore evitando la generazione di forze non inerenti alla realtà del test

 Una cella di carico per ricavare i dati della forza

 Un trasformatore per alimentare l’elettronica del banco prova

 Un microcontrollore che gestisce i segnali e i dati di tutte le componenti.

Il sistema di movimentazione è stato progettato con una vite a ricircolo di sfere per evitare attriti eccessivi e per ridurre al minimo i giochi che potrebbero causare errori durante l’acquisizione dei dati della posizione. Viene utilizzato un motore step per rispondere all’esigenza di poter impostare delle velocità di avanzamento che possono variare da 25 𝑚𝑚/𝑚𝑖𝑛 a 500 𝑚𝑚/𝑚𝑖𝑛.

Il banco prova è stato progettato per rispondere alle specifiche di progetto, nella seguente tabelle vengono inserite le sue prestazioni che sono state calcolate dalle prove eseguite sul motore, sulla cella di carico e sull’encoder.

Velocità minima Velocità massima Corsa Forza massima Risoluzione posizione Risoluzione forza 𝑇𝑠 15 𝑚𝑚/𝑚𝑖𝑛 800 𝑚𝑚/𝑚𝑖𝑛 68 𝑚𝑚 30 𝑁 0.05 𝑚𝑚 0.01 𝑁 0.025 𝑠

La velocità minima e quella massima sono dei limiti posti dalla struttura del programma che è stato sviluppato e dalla libreria del controllo del motore. Infatti esse sono le velocità che garantiscono sempre la corretta movimentazione del motore.

La corsa massima è imposta dalla costruzione meccanica della struttura (lunghezza della vite) e tiene conto della variabilità del punto di partenza del test. Questo è legato al metodo di identificazione dello zero macchina, che opera nel seguente modo:

 Salita del sistema fino all’identificazione di un segnale del finecorsa

 Discesa del motore fino al riconoscimento del segnale di azzeramento dell’encoder.

Per questo motivo in funzione di come il motore è montato sul sistema esiste la possibilità che il segnale dall’encoder avvenga dopo massimo un giro del motore. Quindi alla corsa massima fornita dalla lunghezza della vite (72 𝑚𝑚) si devono sottrarre almeno 4 𝑚𝑚 che possono essere occupati dalla ricerca della posizione home.

La risoluzione in posizione del sistema è vincolata dai giochi assiali della vite che è fissata a 0.05 𝑚𝑚 o meno.

Invece la risoluzione della forza è vincolata dall’elettronica del convertitore e amplificatore di segnale che viene utilizzato. Infatti esso riesce a restituire valori inferiori a questa precisione ma non sono costanti nel tempo, quindi si decide di fissarla ad un valore più elevato ma costante di 0.01 𝑁.

Il tempo di campionamento viene trovato calcolando il tempo medio che intercorre tra un’acquisizione e l’altra dei dati.

Terminata questa prima fase di analisi e progettazione, resta comunque da realizzare la costruzione meccanica e verificare il corretto funzionamento del banco prova.

8. Sviluppi futuri

In questo capitolo si accennano i possibili scenari futuri di questo progetto.

In primo luogo si devono acquistare tutte le componenti (meccaniche e elettroniche), realizzare le parti progettate, assemblarle e verificare il corretto funzionamento della struttura meccanica completa. In essa è necessario verificare che:

 Il sistema di centraggio degli assi funziona correttamente

 La vite è libera di scorrere senza rischio di grippaggio (verificare che tutte le tolleranze siano rispettate)

Dopo aver eseguito tutti i controlli della meccanica si passa all’implementazione dell’elettronica che, dopo aver eseguito il collegamento del programma con l’interfaccia utente, può essere messa in funzione. Si consiglia di eseguire il cablaggio su Arduino Mega Proto Shield per ridurre la lunghezza dei cavi (disturbi sul segnale) e per renderlo più piccolo e compatto.

Figura 77: Arduino Mega Proto Shield

Una volta ottenuto il macchinario funzionante vanno eseguiti dei test per verificare che le curve ottenute siano coerenti con quelle acquisite in precedenza dall’azienda. Inoltre, è necessario verificare se il tempo di campionamento è abbastanza basso da far acquisire al software anche le piccole variazioni.

Vengono anche proposte delle modifiche della parte elettronica:

 Aggiungere un Arduino Mega per rendere completamente indipendente il motore dall’amplificatore della cella di carico, che a causa di una bassa frequenza di campionamento genera problemi nella movimentazione. Questa soluzione è più costosa della seconda ma di facile implementazione sul sistema (programmi praticamente già sviluppati)

 Sostituire Arduino Mega con Raspberry che permette di avviare due cicli di lavoro differenti. Questa soluzione risulta essere meno costosa ma più difficile a livello di programmazione rispetto alla prima.

9. Bibliografia

[1] Banchi prova per il test delle forze, Sinergica soluzioni su misura, https://www.sinergica- soluzioni.com/dinamometri-sauter.asp, data di consultazione: giugno 2019

[2] Sauter, Sauter & KERN, https://www.sauter.eu/lshop,showrub,,en,,produkte.263.308, 15,.htm, data di consultazione: giugno 2019

[3] Attuatore lineare, Wikipedia, https://it.wikipedia.org/wiki/Attuatore_lineare, data di consultazione: giugno 2019

[4] Attuatore lineare, Wikipedia, https://it.wikipedia.org/wiki/Attuatore_lineare, data di consultazione: giugno 2019

[5] Tipologie di trasduttori, Inftub, http://www.inftub.com/economia/finanze/CLASSIFICAZIONE- DEI-TRASDUTTOR63819.php, data di consultazione: giugno 2019

[6] Dinamometro, Wikipedia, https://it.wikipedia.org/wiki/Dinamometro, data di consultazione: giugno 2019

[7] Dinamometro Sauter, Sauter, https://www.sauter.eu/lshop,showdetail,,it,,produkte.263.308,FL- S%7C-%7C-%7C308,15,Tshowrub--produkte.263.308,.htm, data di consultazione: giugno 2019

[8] Gobbi Alberto, Sensori di forza e coppia per macchine automatiche, Tesi di laurea, Università degli studi di Padova, 2011/2012

[9] Prof. Mario Luciano, Sensori ad effetto Hall, Presentazione,

http://nuke.citelli.it/LinkClick.aspx?fileticket =FdeCR0uhqh0%3D&tabid=480&mid=1516, data di consultazione: giugno 2019

[10] Francesco Castelli, Organi di presa per manipolatori industriali, Tesi di laurea triennale, Università degli studi di Padova, 2012/2013

[11] Cristian Secchi, Sensori e trasduttori, Presentazione, Università degli studi di Modena e Reggio Emilia

[12] Prof. Enrico Ravina, Manipolazione Meccatronica: Sistemi di presa – Selezione e Dimensionamento, Presentazione, Università Cattaneo LIUC

[13] Attuatore SMAC, SMAC Moving Coil Actuators, https://www.smac-mca.com/it/technical- resources/moving-coil-technology, data di consultazione: giugno 2019

[14] Forum arduino, https://forum.arduino.cc/index.php?board=34.0, data di consultazione: agosto 2019

[15] Forum Matlab, MathWorks, https://it.mathworks.com/matlabcentral/, data di consultazione: agosto 2019

10. Allegati

A – Datasheet

B – Disegni 2D

C – Programmi

Documenti correlati