Lab6 Arduino

Embed Size (px)

DESCRIPTION

ARDUINO

Citation preview

  • 1

    Insegnamento integrato di:

    Misure e Strumentazione Industriale

    Laboratorio di Energetica

    Arduino

    Sezione di Misure e Tecniche Sperimentali

    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

    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 dellesercitazione

    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

    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 lhardware sono Sia il software sia lhardware 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 dirrigazione dirrigazione

  • 2

    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 giintegratointegrato

    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)

    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

    Arduino

    Estensione dellhardware: 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//

  • 3

    Arduino

    Esperienza 1Logica programmabile e logica cablata

    Arduino

    Logica programmabile e logica cablata

    Il controllo dei sistemi energetici era svolto tramite circuiti anologici (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

    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 sistemaArduino

    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

    Arduino

    Realizzazione pratica

    Logica cablata NE555Logica cablata NE555Logica programmabileLogica programmabile

    Arduino

    Schema elettrico

  • 4

    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

    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

    Arduino

    PLC Monitoraggio della temperatura

    Cella di Cella di peltierpeltier

    VisivaVisiva

    AcusticaAcustica

    Arduino

    PLC schema elettrico

    fare attenzione!

  • 5

    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

    Arduino

    Bus di campo: introduzione

    Bus industrialeBus industriale

    CAN (CAN (AutomotiveAutomotive))

    Arduino

    Bus di campo: introduzione I 2CIl 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 limpegno di limpegno 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)

    Arduino

    Bus di campo: funzionamento I 2CIl protocollo hardware dellI2C richiede due linee seriali di coIl protocollo hardware dellI2C 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 lI2C ) per il clock (per la presenza di questo segnale lI2C 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 I 2COgni 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 allultimo bit BN. La(verde). La stessa procedura prosegue fino allultimo 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

  • 6

    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 unuscita PWM (regolabile via software mediante unuscita PWM (PulsePulse WidthWidthModulationModulation: onda quadra a duty : onda quadra a duty ciclecicle variabile) che simula unuscita analogica a valore variabile.variabile) che simula unuscita 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

    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: EsrcitazioneMotoreArduino