Identificazione di un modello per un motore a corrente continua (DC) con l’utilizzo di Arduino e MATLAB/Simulink

Un motore DC (Direct Current), anche noto con l'acronimo CC (Corrente Continua), è uno qualsiasi di una classe di motori elettrici rotanti che converte l'energia elettrica a corrente continua in energia meccanica. I tipi più comuni si basano sulle forze prodotte dai campi magnetici. Quasi tutti i tipi di motori DC hanno un meccanismo interno, elettromeccanico o elettronico, per cambiare periodicamente la direzione della corrente in una parte del motore. I motori a corrente continua sono stati la prima forma di motore ampiamente utilizzata, poiché potevano essere alimentati da sistemi di distribuzione dell'energia di illuminazione a corrente continua esistenti. L'obiettivo di questo esperimento è utilizzare gli strumenti MATLAB/Simulink per la modellazione e la progettazione del controllo di sistemi meccatronici embedded. Consideriamo un motore DC a magneti permanenti (PMDC) interfacciato con Arduino su un circuito stampato su misura. L'obiettivo è identificare la funzione di trasferimento del motore PMDC, stimarne i parametri e progettare/implementare il controllo per regolare la velocità del motore PMDC.

Agenda

Nel seguito è riportata l'agenda dell'articolo. In altre parole, i punti che saranno mostrati durante la trattazione. Data la natura pratica della trattazione, con chiave prettamente per makers, il testo sarà diretto, accompagnato da molte immagini, lasciando poi all'area commenti lo scopo di chiarire eventuali dubbi o perplessità.

  • Acquisizione dei dati: i dati di ingresso e uscita (I/O) del motore CC vengono acquisiti sul PC host utilizzando il blockset Arduino Simulink
  • Identificazione/modellazione del sistema: il System Identification Toolbox (SID) di MATLAB è utilizzato per ottenere la funzione di trasferimento (dominio del tempo) della piattaforma motore PMDC utilizzando i dati I/O acquisiti come input alla casella degli strumenti SID
  • Stima dei parametri: i parametri del motore CC di Simscape sono sintonizzati in modo che corrispondano al motore CC sulla piattaforma, utilizzando i dati di I/O acquisiti
  • Progettazione del controllore: lo scopo è regolare i parametri del controller PID per controllare la velocità del modello Simscape del motore CC nella struttura a circuito chiuso
  • Prototipazione rapida: si realizza il deploy del controllore PID configurato per lavorare su piattaforma Arduino, la quale si occupa di catturare i dati I/O e verificare la risposta in velocità del motore PMDC

Requisiti hardware e software

Nel seguito sono elencati quelli che sono i requisiti hardware e software di cui disporre per poter proseguire nell'analisi ed identificazione dei parametri del motore.

Hardware

  • Motore CC a magneti permanenti con dinamo tachimetrica integrata (vedi Figura 1), le cui specifiche sono: Specifications: (1) velocità  +/- 4000 rpm a 12V; (2) induttanza 7mH; (3) resistenza 10 Ω; (4) coppia 3.45 Oz-in/amp; (5) tachimetro 1.9V/1000 rpm.
Figura 1: Motore a corrente continua (CC).

Figura 1: Motore a corrente continua (CC)

  • Board Arduino, in questo caso il modello Duemilanove (vedi Figura 2).
Figura 2: Scheda Arduino Duemilanove.

Figura 2: Scheda Arduino Duemilanove

  • Il circuito customizzato (vedi Figura 3). Queste le specifiche: (1) Arduino Duemilanove; (2) Super Droid H-Bridge Motor Driver (LMD 18200T); (3) un Op-Amp Level Shifter; (4) un DC-DC Converter module (DCW03A-12), 12 Volt; (5) un motore PMDC.
Figura 3:Board con tutti i componenti: motore, Arduino, e collegamenti vari.

Figura 3: Board con tutti i componenti: motore, Arduino e collegamenti vari

Software

Nel seguito sono elencati i requisiti software. Molti dei toolbox elencati sono già disponibili nel processo di installazione di MATLAB. Non c'è quindi la necessità di rifarsi ad installazioni secondarie. Da ricordare che MATLAB offre una licenza particolare a studenti e makers.

  1. MATLAB/Simulink (R2010a o superiore)
  2. Arduino Target Toolbox
  3. System Identification Toolbox
  4. Simulink design optimization Toolbox
  5. Simulink Control Design Toolbox
  6. Real-Time Workshop
  7. Real-Time Workshop Embedded Coder
  8. Instrument Control Toolbox
  9. State Flow and State Flow code

Cose da controllare/fare prima di iniziare

  • Controlla che Arduino Target toolbox sia installato correttamente in Simulink. Per farlo, (1) Apri Simulink e sulla sinistra dovresti trovare "Arduino Target"
  • Controlla di avere un adattatore DC, un cavo USB, una piattaforma di lavoro Arduino sul banco di lavoro
  • ATTENZIONE: si prega di prestare attenzione quando si lavora con l'installazione per evitare qualsiasi elettricità statica, e quindi che si possa scaricare sul circuito provocando seri danni alla strumentazione. In Figura 4 lo schema a blocchi dell'intero banco di lavoro.
Figura 4: Schema a blocchi completo con tutta la strumentazione.

Figura 4: Schema a blocchi completo con tutta la strumentazione

Procedura per l'identificazione del sistema

  • Collega la scheda "Arduino" alla porta USB del PC. I driver FTDI dovrebbero configurare e assegnare automaticamente una porta COM. (Diritti di amministratore richiesti sul computer per completare l'installazione del driver quando la scheda viene collegata per la prima volta)
  • Avvia MATLAB e rendi la tua cartella la directory di lavoro corrente in MATLAB
  • Apri "Simulink" digitando "simulink" nella finestra di comando o facendo clic sull'icona Simulink nella barra degli strumenti (vedi Figura 5)
Figura 6: Icona per aprire Simulink.

Figura 5: Icona per aprire Simulink

  • Realizzare lo schema Simulink riportato in Figura 6 e 7.
Figura 6: Schema Simulink per identificazione parametri motore.

Figura 6: Schema Simulink per identificazione parametri motore

 

Figura 7: Schema Simulink per comunicazione serial e con Arduino.

Figura 7: Schema Simulink per comunicazione seriale con Arduino

  • Controllare e annotare il numero della porta COM dalla finestra di comando. Utilizzare "Ctrl + B" o fare clic sull'icona "Build incrementale" presente sulla barra degli strumenti come mostrato di seguito (vedi Figura 8). Nel processo, osserva i LED "Tx" e "Rx" che lampeggiano sulla scheda Arduino e anche un messaggio "build riuscito" conferma la procedura di compilazione al target.
Figura 7: Build codice per comunicazione con hardware.

Figura 8: Build codice per comunicazione con hardware

  • Modificare il numero della porta COM del blocco di ricezione seriale (vedi Figura 7) se il sistema ha assegnato una porta COM diversa all'inizio. Questo può essere fatto facendo doppio clic sul blocco "Serial Receive" e modificando la porta COM dal menu a discesa come mostrato in Figura 9. Il sistema richiede quindi all'utente l'aggiunta di un blocco di "configurazione seriale" con il numero di porta COM corrente. Fare clic su "Sì". Fare doppio clic sul blocco "configurazione seriale" appena aggiunto e modificare il "Baud Rate" da 9600 a 57600. Eliminare il blocco "configurazione seriale" precedente.
Figura 9: Impostazioni Simulink per cambiare la porta seriale ed il bound rate.

Figura 9: Impostazioni Simulink per cambiare la porta seriale ed il baud rate

ATTENZIONE: Se il numero della tua porta COM non viene visualizzato nel menu a discesa, ARRESTA la procedura, riavvia MATLAB e Simulink e segui i passaggi dall'inizio. Inoltre, controlla il tempo di campionamento del blocco, il tipo di dati, l'intestazione, il terminatore e la dimensione dei dati. Dovrebbero corrispondere esattamente ai parametri di cui sopra.

  • Alimentare la scheda collegando l'adattatore CC e accendere la piattaforma del motore CC. Dovresti vedere il motore CC in funzione. Avvia l'acquisizione dei dati premendo "Avvia simulazione" in Simulink come mostrato in Figura 10.
Figura 10: Avvio Simulink con il tasto play.

Figura 10: Avvio Simulink con il tasto play

  • Esegui la simulazione per circa 10 secondi e fermati. Questo raccoglie i dati in ingresso e in uscita dal motore CC e li memorizza nell'area di lavoro nel nome della variabile "simout" e "simout1". Salva tutte e 5 le variabili presenti nell'area di lavoro in un unico file ".mat". Ad esempio, "Original_data.mat". A questo punto è possibile plottare i dati ricevuti dal motore, ottenendo un grafico simile a quello in Figura 11.
Figura 11: Input/Output in Simulink.

Figura 11: Input/Output in Simulink

  • Il System Identification toolbox viene utilizzato per trovare il modello nel dominio del tempo del motore CC. Questa cassetta degli attrezzi richiede la conoscenza di input, output e tempo di campionamento. La casella degli strumenti viene aperta digitando "ident" nella finestra di comando. Scegli il menu "Dati del dominio del tempo" dal menu a discesa come mostrato (vedi Figura 12). Immettere le variabili di input "ir" e output data "or" nella finestra Import data.
Figura 12: System Identification Toolbox.

Figura 12: System Identification Toolbox

  • Le variabili di interesse "ir" e "or" corrispondono agli RPM di ingresso e uscita del motore CC. Dovrebbero essere nell'area di lavoro (vedi Figura 13).
Figura 13: Segnali di ingresso ed uscita per il System Identification Toolbox.

Figura 13: Segnali di ingresso ed uscita per il System Identification Toolbox

  • Dal menu "Operazioni", selezionare l'intervallo per "Dati di lavoro" e "Dati di valutazione", come mostrato in Figura 14 e 15. Una volta selezionati, i dati di stima e i dati di convalida verranno visualizzati nel riquadro "Visualizzazioni dati".
Figura 14: Schema per l'importazione dei dati in Simulink.

Figura 14: Schema per l'importazione dei dati in Simulink

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2329 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend