Finalità delle misuremisure.mecc.polimi.it/files/Materiale Didattico Gasparetto/lab6... · •...
Transcript of Finalità delle misuremisure.mecc.polimi.it/files/Materiale Didattico Gasparetto/lab6... · •...
1
Sistemi di controllo industriale tramite Arduino
Ing. Lorenzo Comolli
Arduino
•• In ambito scientificoIn ambito scientifico, studiare i fenomeni, , studiare i fenomeni, verificare sperimentalmente modelli verificare sperimentalmente modelli matematici e teorie scientifiche, monitorare matematici e teorie scientifiche, monitorare lo stato per effettuare previsioni.lo stato per effettuare previsioni.
•• In ambito commercialeIn ambito commerciale quantificare quantificare parametri a cui parametri a cui èè associato il valore delle associato il valore delle merci (metrologia legale).merci (metrologia legale).
••In ambito industrialeIn ambito industriale monitorare i processi, monitorare i processi, certificare conformitcertificare conformitàà di prodotti, di prodotti, controllare i processi.controllare i processi.
Finalità delle misure
2
Arduino
•• Utilizzare un sistema che consente di:Utilizzare un sistema che consente di:
•• acquisire datiacquisire dati da strumenti diversi anche da strumenti diversi anche con modalitcon modalitàà di trasmissione del segnale di trasmissione del segnale diverse (segnale analogico o digitale),diverse (segnale analogico o digitale),
•• ““apprendereapprendere”” una logica di una logica di controllocontrollo,,
•• generare uscitegenerare uscite tramite cui tramite cui ““regolareregolare”” un un processo.processo.
•• Evidenziare le potenzialitEvidenziare le potenzialitàà di un sistema di un sistema basato su basato su ““microcontrolloremicrocontrollore”” rispetto a rispetto a controllori controllori ““tradizionalitradizionali””..
•• Imparare a usare un Imparare a usare un sistema semplice ed sistema semplice ed economicoeconomico, eventualmente utilizzabile a casa , eventualmente utilizzabile a casa per le proprie applicazioni.per le proprie applicazioni.
Finalità dell’esercitazione
vs.
ADC
DAC
Arduino
•• ÈÈ un un Circuito Integrato (IC)Circuito Integrato (IC) che riunisce:che riunisce:
•• CentralCentral Processing Processing UnitUnit (CPU)(CPU)
•• Memoria RAMMemoria RAM
•• Memoria ROM, EEPROM o FLASHMemoria ROM, EEPROM o FLASH
•• Interfaccia di Input/Output (analogico, digitale, Interfaccia di Input/Output (analogico, digitale, seriale)seriale)
•• Un circuito di clockUn circuito di clock
•• Il microcontrollore riunisce tutti i componenti per Il microcontrollore riunisce tutti i componenti per operare come un computer operare come un computer standalonestandalone, ovvero , ovvero èèprogrammabile.programmabile.
•• Sono piccoli ed economici, hanno vasto impiego in Sono piccoli ed economici, hanno vasto impiego in molti settori (industriale, domotica, veicoli, giochi).molti settori (industriale, domotica, veicoli, giochi).
Definizione di “microcontrollore”
3
Arduino
Arduino Arduino èè una una piattaforma di sviluppopiattaforma di sviluppo basata su basata su microcontrolloremicrocontrollore
Può interagire con il mondo mediante I/O analogici e Può interagire con il mondo mediante I/O analogici e digitalidigitali
Sia il software sia l'hardware sono Sia il software sia l'hardware sono ““Open SourceOpen Source””
•• Il linguaggio di programmazione Il linguaggio di programmazione èè molto simile al molto simile al ““CC”” e ha e ha una IDE dedicata molto intuitivauna IDE dedicata molto intuitiva
•• E' sviluppato da una comunitE' sviluppato da una comunitàà molto vasta di molto vasta di programmatori, ingegneri e designer programmatori, ingegneri e designer
•• Può essere trovato su: Può essere trovato su: http://www.arduino.cchttp://www.arduino.cc
Cosa è “Arduino”
Arduino
Esempi di applicazionihttp://http://hacknmod.comhacknmod.com//hackhack/top/top--4040--arduinoarduino--projectsprojects--ofof--thethe--web/web/
Console portatile Console portatile
Veicolo aereo senza pilota Veicolo aereo senza pilota
Fotografia di fenomeni velociFotografia di fenomeni veloci
Sistema automatico Sistema automatico d'irrigazione d'irrigazione Fotografia (dolly Fotografia (dolly
DynamicDynamic PerceptionPerception))
4
Arduino
Caratteristiche tecnicheAVR AVR AtmelAtmel Atmega328Atmega328
Oscillatore quarzo 16 MHzOscillatore quarzo 16 MHz
Alimentazione da 5 V a 12 VAlimentazione da 5 V a 12 V
6 Ingressi analogici 06 Ingressi analogici 0--5 V5 V
14 input/output digitali 014 input/output digitali 0--5 V5 V
6 uscite PWM 06 uscite PWM 0--5 V 5 V
Pulsante ResetPulsante Reset
Flash Flash MemoryMemory 32 KB (0.5 KB occupato dal 32 KB (0.5 KB occupato dal bootloaderbootloader))
SRAM 2 KBSRAM 2 KB
EEPROM 1 KBEEPROM 1 KB
TX/RX LED per la comunicazione serialeTX/RX LED per la comunicazione seriale
Connettore USB con convertitore USB/seriale giConnettore USB con convertitore USB/seriale giààintegratointegrato
Arduino
Uscita PWM - Pulse-widthmodulation
E' un sistema per modificare una informazione analogica (es. tensione del segnale) utilizzando la modulazione di ampiezza di un impulso.
Esempio: "simulare" un segnale in tensione sinusoidale (con valore qualsiasi tra 0 V e 5 V) utilizzando una uscita digitale (che può assumere solo due valori, 0 V o 5 V).
(tratto da wikipedia)
5
Arduino
Ambiente di sviluppo software
•• Linguaggio programmazione in stile Linguaggio programmazione in stile ““CC”” semplificatosemplificato
•• Gestione integrata degli ingressi e delle uscite, sia Gestione integrata degli ingressi e delle uscite, sia analogici sia digitalianalogici sia digitali
•• Operazioni Operazioni realreal timetime, reazione a , reazione a watchdogwatchdog e interrupte interrupt
•• Compilazione del codice (librerie AVR) e download Compilazione del codice (librerie AVR) e download tramite porta serialetramite porta seriale
•• Comunicazione seriale integrata (funzione di Comunicazione seriale integrata (funzione di debuggingdebugging))
•• Ampio set di librerie disponibiliAmpio set di librerie disponibili
Arduino
Struttura del codice
Eseguito una sola voltaEseguito una sola volta
(inizializzazione)(inizializzazione)
Eseguito iterativamenteEseguito iterativamente
Memorizzato nella memoria internaMemorizzato nella memoria interna
6
Arduino
Estensione dell'hardware: gli “shield”
•• Estensione delle capacitEstensione delle capacitàà hardwarehardware
LCD LCD shieldshield
Motor Motor shieldshield
Ethernet Ethernet shieldshield
Arduino
Estensione del software: la porta seriale•• E' possibile comunicare dati in input e output con altri tutti gE' possibile comunicare dati in input e output con altri tutti gli altri linguaggi li altri linguaggi
tramite comunicazione seriale (Matlab, C C++ tramite comunicazione seriale (Matlab, C C++ C#C#, Java, , Java, PythonPython, Processing), Processing)
Comunicazione
seriale
••Esempio di comunicazione con Processing (www.processing.org)Esempio di comunicazione con Processing (www.processing.org)
oscilloscopio analogico/digitaleoscilloscopio analogico/digitale
http://http://code.google.comcode.google.com/p//p/arduinoscopearduinoscope//
7
Arduino
Esperienza 1Logica programmabile e logica cablata
Arduino
Logica programmabile e logica cablata
In passato il controllo dei sistemi industriali era svolto tramite circuiti analogici (elettrici, pneumatici, oleodinamici).
Si è passati a sistemi programmabili basati su microcontrollore in quanto offrono:
• Prestazioni migliori
• Integrazione delle funzioni (acquisizione dei segnali, elaborazione, attuazione)
• Approccio basato sulla scrittura di software
• Abbattimento dei costi per passaggio alla tecnologia digitale (riduzione componenti esterni e processo produttivo economicamente vantaggioso)
• Maggiore flessibilità ed orientamento al cliente
8
Arduino
Esempio: logica cablata integrata
t = 1.1 R C
Compito: accendere un LED per un tempo Compito: accendere un LED per un tempo tt stabilito al premere di un pulsantestabilito al premere di un pulsante
Soluzione analogica: circuito integrato NE555 (multivibratore) iSoluzione analogica: circuito integrato NE555 (multivibratore) in configurazione monostabile n configurazione monostabile (schema funzionale)(schema funzionale)
La costante di tempo La costante di tempo èè funzione dei componenti del sistemafunzione dei componenti del sistema
Arduino
Esempio: logica programmabile
Compito: accendere un LED per un tempo Compito: accendere un LED per un tempo tt stabilito, al premere di un pulsantestabilito, al premere di un pulsante
La costante di tempo La costante di tempo èè una variabile del software una variabile del software delaydelay((tt))
•• Maggior precisione (incertezza nei valori di R e C)Maggior precisione (incertezza nei valori di R e C)
•• Riprogrammabile con facilitRiprogrammabile con facilitàà
•• Maggior flessibilitMaggior flessibilitàà
9
Arduino
Realizzazione pratica
Logica cablata NE555Logica cablata NE555Logica programmabileLogica programmabile
Arduino
Schema elettrico
10
Arduino
Software da caricare su Arduino: TimedButton.pde
#define BUTTON 7
#define LED 9
int brightness = 255;
int durata = 2000; //[ms]
int val = 0;
void setup()
{
pinMode(LED,OUTPUT);
pinMode(BUTTON,INPUT);
}
void loop()
{
val = digitalRead(BUTTON);
if (val == HIGH)
{
delay(10); //debouncing
digitalWrite(LED,HIGH);
delay(durata); //tempo in cui il LED resta acceso
digitalWrite(LED,LOW);
}
}
Definizioni
Inizializzazione I/O
Ciclo
Arduino
Esperienza 2Controllo di processo
11
Arduino
Controllo di processo
PLC (programmable logic controller)
Esempio di controllo grandezze:
• Di processo
• Temperatura
• Pressione
• Tecnologiche
• Finitura superficiale
Arduino
PLC: componenti base
Componenti di un PLCRACK industriale
12
Arduino
PLC Monitoraggio della temperatura
Cella di Cella di peltierpeltier
VisivaVisiva
AcusticaAcustica
Arduino
PLC schema elettrico
fare attenzione!
13
Arduino
Software da usare
Programmi residenti e su PC:
• programma residente su Arduino: gira indipendentemente, ovvero posso staccare il PC
• programma su PC (processing): sfrutta Arduino per leggere informazioni e per controllare dispositivi; se si stacca il collegamento da PC, il programma smette di funzionare.
Questa esperienza richiede due software:
• residente su Arduino, serve solo per comunicare
• su PC, che visualizza e attua la logica
Si trova nella cartella: Graph2D_adv
Arduino
Esperienza 3Bus di campo
14
Arduino
Bus di campo: introduzione
Bus industrialeBus industriale
CAN (CAN (AutomotiveAutomotive))
Arduino
Bus di campo: introduzione I2CIl Il protolloprotollo II22C C èè usato per comunicare con dispositivi in cui semplicitusato per comunicare con dispositivi in cui semplicitàà e basso costo sono prioritari e basso costo sono prioritari rispetto alla velocitrispetto alla velocitàà di trasmissione. Trattandosi di un protocollo di trasmissione. Trattandosi di un protocollo serialeseriale i vantaggi offerti sono i vantaggi offerti sono l'impegno di l'impegno di sole due lineesole due linee (e quindi due pin dei dispositivi che lo usano), oltre a quelle(e quindi due pin dei dispositivi che lo usano), oltre a quelle di di alimentazionealimentazione(+5V o +3,3V) ed il (+5V o +3,3V) ed il riferimentoriferimento (GND).(GND).
Applicazioni comuni sono:Applicazioni comuni sono:
Accesso a Memorie flash ed EEPROM Accesso a Memorie flash ed EEPROM
Accesso a DAC e ADC a bassa velocitAccesso a DAC e ADC a bassa velocitàà
Cambiamento dei settaggi nei monitorCambiamento dei settaggi nei monitor
Controllo di display come nei telefoni cellulariControllo di display come nei telefoni cellulari
Accesso sensori MEMS (esempio controller Accesso sensori MEMS (esempio controller nintendonintendo WII)WII)
15
Arduino
Bus di campo: funzionamento I2CIl protocollo hardware dell'I2C richiede due linee seriali di coIl protocollo hardware dell'I2C richiede due linee seriali di comunicazione:municazione:
SDA (Serial SDA (Serial DAtaDAta lineline) per i dati) per i dati
SCL (Serial Clock SCL (Serial Clock LineLine) per il clock (per la presenza di questo segnale l'I2C ) per il clock (per la presenza di questo segnale l'I2C èè un bus sincrono)un bus sincrono)
Alimentazione (Alimentazione (VccVcc: +5V o +3,3V): +5V o +3,3V)
Riferimento di zero (GND)Riferimento di zero (GND)
Esistono due tipologia di dispositivi: Esistono due tipologia di dispositivi:
nodo master nodo master –– il dispositivo che emette il segnale di clock (generalmente il il dispositivo che emette il segnale di clock (generalmente il microcontrollore)microcontrollore)
nodo slave nodo slave –– il nodo che si sincronizza sul segnale di clock senza poterlo cil nodo che si sincronizza sul segnale di clock senza poterlo controllare (generalmente i sensori)ontrollare (generalmente i sensori)
Il tipo di trasferimento dati può essere:Il tipo di trasferimento dati può essere:
un master trasmette un master trasmette –– controlla il clock e invia dati agli slavecontrolla il clock e invia dati agli slave
un master riceve un master riceve -- controlla il clock ma riceve dati dallo slavecontrolla il clock ma riceve dati dallo slave
lo slave trasmette lo slave trasmette –– il dispositivo non controlla il clock ma invia dati al masteril dispositivo non controlla il clock ma invia dati al master
lo slave riceve lo slave riceve –– il dispositivo non controlla il clock e riceve dati dal masteril dispositivo non controlla il clock e riceve dati dal master
Arduino
Bus di campo: funzionamento I2C
Ogni dispositivo della rete ha un proprio indirizzo. Il correttoOgni dispositivo della rete ha un proprio indirizzo. Il corretto indirizzamento dei dati indirizzamento dei dati èè garantito dalle resistenze di pullgarantito dalle resistenze di pull--up up RpRp che mantengono la linea normalmente che mantengono la linea normalmente ““altaalta””
Trasmissione dei datiTrasmissione dei dati
S S èè lo START bit (la linea SDA viene forzata bassa dal master mentrlo START bit (la linea SDA viene forzata bassa dal master mentre il clock SCL e il clock SCL èè a livello logico alto). Segue, quando a livello logico alto). Segue, quando SCL SCL èè basso il settaggio del primo bit B1 (in blu) la commutazione dibasso il settaggio del primo bit B1 (in blu) la commutazione di SCL indica che il dato SCL indica che il dato èè stabile e può essere letto stabile e può essere letto (verde). La stessa procedura prosegue fino all'ultimo bit BN. La(verde). La stessa procedura prosegue fino all'ultimo bit BN. La transazione termina con lo STOP bit (P) in giallo in cui transazione termina con lo STOP bit (P) in giallo in cui SDA viene commutato da basso ad alto quando SCL SDA viene commutato da basso ad alto quando SCL èè altoalto
(tratto da wikipedia)Altre informazioni: http://en.wikipedia.org/wiki/I2c
16
Arduino
I2C: misura di vibrazioni
Misura delle vibrazioni su un sistema meccanico mediante accelerMisura delle vibrazioni su un sistema meccanico mediante accelerometro MEMS BMA180 prodotto dalla BOSCH per ometro MEMS BMA180 prodotto dalla BOSCH per il settore il settore automotiveautomotive
Accelerometro 2
Motore
Accelerometro 1
Il motore movimenta una massa eccentrica che forza la mensola adIl motore movimenta una massa eccentrica che forza la mensola ad oscillare. Le vibrazioni sono misurate dai due oscillare. Le vibrazioni sono misurate dai due accelerometri. La velocitaccelerometri. La velocitàà di rotazione del motore di rotazione del motore èè regolabile via software mediante un'uscita PWM (regolabile via software mediante un'uscita PWM (PulsePulse WidthWidthModulationModulation: onda quadra a duty : onda quadra a duty ciclecicle variabile) che simula un'uscita analogica a valore variabile.variabile) che simula un'uscita analogica a valore variabile.
Accelerometro BMA180Accelerometro BMA180
Sistema vibranteSistema vibrante
Arduino
I2C: misura di vibrazioni
Collegamenti utilizzatiCollegamenti utilizzati
Diagramma di connessione dei componentiDiagramma di connessione dei componenti
17
Arduino
I2C: schema elettrico
Arduino
Software da usare
Analogo alla esperienza 2: software residente su Arduino usato per comunicare con il PC (processing).
Si trova nella cartella: EsercitazioneMotoreArduino