Corso Base Arduino ed Elettronica

Documenti analoghi
Controllo di una soglia analogica

Corso Base Arduino ed Elettronica

CORSO ARDUINO. Jacopo Belli Giulio Fieramosca Luca Mattii GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Stefano Panichi e Giulio Fieramosca

SENSORI OTTICI - FOTORESISTENZE

INSEGUITORE SOLARE CON ARDUINO. Dispositivo che insegue il movimento solare realizzato con: 1. Arduino 2. 2 foto resistenze 3.

CORSO ARDUINO. Corso ASEV Giulio Fieramosca Stefano Panichi. Lezione 3 PWM e motori. Stefano Panichi e Giulio Fieramosca

Tipologie dei dati nell SDK di Arduino come in un vero LP ad alto livello :

Corso Base Arduino ed Elettronica

ARDUINO Course.

ACCENDERE E SPEGNERE UN DIODO LED

FONDAMENTI DI ARDUINO

Cablaggio ponte H con integrato L293B

6^ parte : Acquisizione della temperatura con LM35. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Far lampeggiare un led o forse un semaforo?

Con i sensori sappiamo:

Facciamo lampeggiare un led

Prof. Capuzzimati Mario - ITIS Magistri Cumacini - Como MICROCONTROLLORE

Progetto Esami Di Stato Anno 2014/2015

5^ parte : Controllare un LED RGB con 3 potenziometri. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Display numerico con i LED

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style

Progetti reali con ARDUINO

Non solo Uatsap. Andrea Garattini 1

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

ARDUINO. Colleghiamolo al PC/MAC - FUNZIONA?

SVOLGIMENTO SECONDA PROVA 2017 SISTEMI AUTOMATICI: PARTE 1

CTU Presenta. Contest Automation con Arduino. IK0XBX - Francesco

11^ parte : Come gestire i servomotori con Arduino. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Per vedere tutti i tutorial:

QUADRO DI CONTROLLO AMBIENTALE

Tesina di Maturità. Gianfriddo Giuseppe Classe: 5^B I.T.I.S Indirizzo: Elettronica ed elettrotecnica Anno: 2014/15. Autore: Gianfriddo Giuseppe

La programmazione di Arduino

Lezione 2. Un corso gentilemente offerto con il sudore e le lacrime di MugRomaTre e Roma Tre e Magliana. Lezione 2 - Mug Roma 3

Arduino: Programmazione

In questo tutorial decodificheremo i segnali provenienti da un telecomando qualsiasi e utilizzeremo gli stessi segnali per comandare Arduino a

Cos'è Arduino? rilasciata con licenza di tipo open source.

ARDUINO. Misurare e controllare. Riccardo Barberi. Dip. di Fisica Univ. Della Calabria Rende (CS), Italy

MST_K12. Regolatore di velocita per motori in CC. Realizzazione e Applicazione

ELECTRONICS LAB [WITH ARDUINO]

E labirinto cronaca di un fallimento

Arduino. Led, pulsanti, PWM, tastierino, display sette segmenti, display LCD

TM1638 BOARD con ARDUINO

PRIMI PASSI CON ARDUINO

Laboratorio Arduino seconda lezione Pietro Bonora - L.S. Sabin - Bologna

Alimentatori. Schema a blocchi di un alimentatore non stabilizzato

Robot Beginner Kit 4WD

void setup() // funzione di configurazione dei Input/Output { pinmode(pin, OUTPUT); // setta il 'pin' come uscita (output) } 1

8^ parte: Pilotare Motori passo-passo bipolari usando l integrato SN754410NE. Author: Ing. Sebastiano Giannitto (ITIS M.

Corso Base Arduino ed Elettronica

Arduino. Laboratorio Arduino Base. HackLab Terni. Laboratorio aperto a tutti di elettronica, scienza e arte. hacklabterni.

Questo sistema si è poi diffuso in tutto il mondo, soprattutto in ambito didattico e hobbistico. Arduino mette a disposizione:

Progetto Arduino BART. Corso di Sistemi RT Prof. Davide Brugali Università degli Studi di Bergamo

Corso Arduino Maggio Riccardo Binetti Lezione 1 - Blinking LEDs with style

Progetti reali con ARDUINO

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Progetti reali con ARDUINO

Topward electronics TPS ALTERA Max EPM7128SLC84-15

Per controllare un motore DC (funzionante in corrente continua) con Arduino, devi utilizzare il circuito integrato Ponte H (nel mio caso un L293NE

CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE

Corso base su arduino Seconda parte

Alunna: Gennuso Ylenia classe VB a.s. 2014/2015

L'alfabeto di Arduino

CORSO ARDUINO. Jacopo Beli Giulio Fieramosca Luca Mati GOLEM Jacopo Belli Giulio Fieramosca Luca Mattii 1

Automobile Bluetooth

Introduzione a Arduino

ARDUINO COLOR SENSOR TCS230 / TCS3200

Telecontrollo escavatore LEGO con board Arduino

8^ parte : Motor shield FE e motore passo-passo bipolare. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Relazione attività di laboratorio - Arduino

7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD. Author: Ing. Sebastiano Giannitto (ITIS M.

ELABORAZIONE DEI SEGNALI ANALOGICI NEL PLC S7-1200

Macchina con Arduino Uno comandata tramite dispositivo Android e sensore ultrasuoni per fermarsi istantaneamente di fronte ad un ostacolo

ISTITUTO TECNICO INDUSTRIALE STATALE "G. MARCONI" Via Milano n PONTEDERA (PI) PROGRAMMAZIONE COORDINATA TEMPORALMENTE DISCIPLINA: ROBOTICA

Esercitazione Monitoraggio temperatura via WEB mediante Arduino YUN

L'alfabeto di Arduino

Per vedere tutti i tutorial:

CONOSCERE L HW. I / O digitale. Ingressi (INPUT) digitali: Pulsante (Push Button) Interruttore (Switch SPST) 03/05/2012. Struttura dei Programmi

Robot Beginner Kit con Arduino l elettronica

Classe III specializzazione elettronica. Sistemi automatici

Controllare un nastro trasportatore fischertechnik con Arduino

DISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE

Programmazione di Base Variabili Array Funzioni Strutture di controllo. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

La Keyes 4 relay non è proprio una shield nel senso classico definito nel mondo arduino in quanto una shield dovrebbe essere concepita per essere

Uno scenario IoT Maker Faire Rome, ott Internet of Things Duilio Peroni Alessandro Saracino

ARDUINO WORKSHOP Bologna, 30 Maggio Relatore: Ing. Paolo Guidorzi

Collaudo statico di un ADC

D sistema d allarme con sensori magnetici

14^ parte : Sensore a ultrasuoni HC SR04 e Arduino. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

FC-51: IR Infrared Obstacle Detection Sensor Module 2-30cm

8^ parte : Pilotare Motori passo-passo bipolari usando l integrato L298N. Author: Ing. Sebastiano Giannitto (ITIS M.

MODULI I/O REMOTI MODBUS TCP/IP SERVER SERIE DAT 8000

ARDUINO. Ing. Francesco Giurlanda

Arduino& Potenziometro

Sezione di PWM e Generatore di D/A Converter.

8^ parte : Come pilotare i motori passo-passo unipolari. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

6. GENERATORI DI SEGNALI DIGITALI

INDICE. 1 DESCRIZIONE pg VISTA DISPOSITIVO pg CARATTERISTICHE TECNICHE pg DESCRIZIONE CIRCUITALE pg. 5-6

Transcript:

Corso Base Arduino ed Elettronica Terzo incontro Sensori e comunicazione con il computer Relatore: Roberto Beligni rbeligni@altratecnoloiga.com

Il comunicazione seriale Per comunicare con la seriale abbiamo bisogno di tre fili: RX (pin 0), TX (pin1) e GND La comunicazione seriale in Arduino deve essere abilitata. Per farlo si da il comando: Serial.begin(speed); Il valore speed può assumere : 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200 Sulla seriale si può sia scrivere, con il comando: Serial.print(val, format); Serial.println(val, format); //scrive e va che leggere, con il comando Serial.read(); a capo

Il monitor seriale Dato che il nostro circuito non adotta nessun tipo di display il risultato della conversione A/D verrà archiviato nella variabile analogval e verrà inviato sulla seriale con il comando: Serial.println(analogValue, DEC); Il metodo println della classe Serial invia un testo terminato da un caporiga sul canale seriale. Il metodo richiede due parametri: Valore: è il valore che si vuole mandare sul canale; Formato: il formato in cui deve essere espressa la variabile (se omesso assume valore DEC). I formati possono essere: DEC = Decimali OCT = Ottali XEX = Esadecimali BIN = Binari

La conversione A/D La risoluzione del convertitore A/D è di 10 bit, quindi il valore analogico in ingresso, che è una tensione compresa tra 0V e +5V, viene convertito in un numero a 10 bit che può assumere valori che vanno da 0 a 1023. Infatti 2^10 = 1024 La grandezza continua rappresentata dalla tensione è stata quindi discretizzata ed il numero letto rappresenta una approssimazione del valore vero con una risoluzione 5000 mv /1024 = 4,88 mv Quindi ad esempio un valore 756 corrisponde a circa: 756 * 4,88 mv = 3689,28mV approssimato 3,69V

Potenziometro Materiali: Potenziometro 10K ohm A0

Potenziometro int analogval; //Dichiara una variabile void setup() { Serial.begin(9600); //Attiva la comunicazione seriale void loop() { analogval=analogread(a0); //Legge il valore analogico sul pin, lo converte in digitale e lo assegna alla variabile Serial.println(analogVal, DEC); valore sulla porta seriale delay(200); // Attende 200 millisecondi Compilare e premere il pulsante del monitor seriale sull'ide //Scrive il

int analogval; Conversione A/D float volt; approfondimento. void setup() { Realizziamo un Serial.begin(9600); Voltmetro void loop() { analogval=analogread(a0); volt=(analogval*4.88)/1000; Serial.print( Valore A/D ); Serial.println(analogVal, DEC); Serial.println(analogVal, BIN); Serial.print( Volts ); Serial.println(volt, DEC); delay(1000); Compilare e premere il pulsante del monitor seriale.

int analogval; Conversione A/D float volt; approfondimento. void setup() { Realizziamo un Serial.begin(9600); Voltmetro void loop() { analogval=analogread(a0); volt=(analogval*4.88)/1000; Serial.print( Valore A/D ); Serial.println(analogVal, DEC); Serial.println(analogVal, BIN); Serial.print( Volts ); Serial.println(volt, DEC); delay(1000); Compilare e premere il pulsante del monitor seriale.

Uscite PWM Il Duty Cycle (o PWM) è il rapporto che c è tra il segnale positivo e il periodo totale del segnale ad onda quadra ed è espresso in percentuale. Un Duty Cycle dello 0% equivale ad un segnale Basso continuo (0) Un Duty Cycle del 50% il segnale Alto dura quanto quello Basso (127) Un Duty Cycle del 100% equivale ad un segnale Alto continuo (255)

Uscite PWM Con il PWM è possibile simulare una uscita analogica su un piedino digitale. I pin utilizzabili su Arduino sono il 3, 5, 6, 9,10,11 (contrassegnati dal simbolo ~ ) Il PWM su tali piedini, se impostati come uscite digitali, è abilitato di default: pinmode(pin, OUTPUT); Per impostare il valore PWM in uscita su questi pin si usa il comando: analogwrite(pin, valore); Dove valore varia da 0 (PWM = 0%) a 255 (PWM = 100%) Con il PWM si può, per esempio, pilotare motori, creare variatori di luminosità, ecc..

Uscita PWM regolata da un potenziometro Materiali: Diodo LED, Resistenza 220 ohm, Potenziometro 10k ohm, Pulsante N.A. A0 7 11

Uscita PWM regolata da un potenziometro int analogval; //Dichiara una variabile int impopwm; //Dichiara una variabile void setup(){ pinmode(11, OUTPUT); //Imposta il pin 11 come output pinmode(7, INPUT_PULLUP); //Imposta il pin 7 come input Serial.begin(9600); // Abilita la comunicazione seriale void loop(){ analogval=analogread(a0); //Legge il valore analogico sul pin, lo converte in digitale e lo assegna alla variabile impopwm=analogval/4; //Il valore rilevato dall'a/d va da 0 a 1023, mentre il valore di PWM può andare da 0 a 255 quindi deve essere adattato Serial.println(analogVal, DEC); //Scrive sulla seriale il valore Serial.println(impoPWM, DEC); //Scrive sulla seriale il valore analogwrite(11, impopwm); //Scrive il valore convertito sul pin 11 delay(500); //Attende mezzo secondo

Approfondimento sulla programmazione Nell'esempio precedente abbiamo usato il comando: impopwm=analogval/4 In quanto c'era una proporzione diretta tra la lettura dell' A/D e l'uscita del PWM pari a 4:1 Poteva essere usato anche il comando: map(value, fromlow, fromhigh, tolow, tohigh) Per rimappare i valori da un range ad un altro, quindi: ImpoPWM = map(analogval,0,1023,0,255)

Uscita PWM regolata da pulsanti Materiali: Diodo LED, Resistenza 220 ohm, Potenziometro 10k ohm, 2 Pulsanti N.A. 5 7 11 A0

Uscita PWM regolata da pulsanti #define psu 5 #define pgiu 7 #define luce 11 int intensita=5; // PIN 5 aumenta la luminosità // PIN 7 diminuisce la luminosità // PIN 11 uscita pilotaggio LED // Dichara una variabile e gli preassegna il valore 5 void setup() { pinmode(psu, INPUT_PULLUP); pinmode(pgiu, INPUT_PULLUP); pinmode(luce, OUTPUT); void loop() { analogwrite(luce, intensita); // accende la luce con il livello uguale ad ad intensità, al primo loop sara a valore 5 CONTINUA NELLA PROSSIMA SLIDE...

Uscita PWM - Pulsanti.SEGUE DALLA SLIDE PRECEDENTE if (digitalread(psu) == LOW ) { // verifica se psu è premuto, se si aumenta l'intensità intensita+=5; if (intensita>=255) // Verifica se la soglia MAX è stata raggiunta ed evita di superarla intensita=255; if (digitalread(pgiu) == LOW ) { // verifica se pgiu è premuto, se si riduce l'intensità intensita-=5; if (intensita<=5) // Verifica se la soglia MIN è stata raggiunta ed evita di superarla intensita=5; // il LED non si spengerà mai in quanto intensita non scende mai sotto i 5 delay(300); // Ritardo per antirimbalzo pulzante

Il servo-motore Il servo motore è un piccolo motore in C.C. che tramite un sistema di ingranaggi fa ruotare un albero al quale è collegato un potenziometro. La lettura del valore resistivo del potenziometro fornisce la posizione esatta dell'albero. L'elettronica di verifica è contenuta al suo interno. Per essere azionato, oltre all'alimentazione, occorrerà inviare al servo-motore anche una sere di impulsi opportunamente modulati sia in frequenza che in ampiezza.

Il servo-motore Per approfondimenti andare su: http://www.adrirobot.it/servotester/il_servomotore.htm

Il servo-motore Materiali: Diodo LED, Resistenza 220 ohm, Servo-motore, Potenziometro 10k ohm, Pulsante N.A. 7 9 11 A0

Il servo-motore #include <Servo.h> //Carica la libreria Servo non occorre il ; finale Servo myservo; //Crea l'oggetto myservo int analogval; //Dichiara una variabile int impopwm; //Dichiara una variabile int imposrv; //Dichiara una variabile void setup(){ myservo.attach(9); //Imposta il pin 9 come output per servo su myservo pinmode(11, OUTPUT); //Imposta il pin 11 come output per il led pinmode(7, INPUT_PULLUP); //Imposta il pin 7 come input Serial.begin(9600); // Abilita la comunicazione seriale void loop(){ analogval=analogread(a0); //Legge il valore analogico sul pin, lo converte in digitale e lo assegna alla variabile CONTINUA NELLA PROSSIMA SLIDE...

Il servo-motore. SEGUE DALLA SLIDE PRECEDENTE impopwm = map(analogval,0,1023,0,255); //adatta il valore del potenziometro al valore max della luminosità del LED imposrv = map(analogval,0,1023,0,180); //adatta il valore del potenziometro al tipo di servo Serial.println(analogVal, DEC); //Scrive sulla seriale il valore Serial.println(impoPWM, DEC); //Scrive sulla seriale il valore Serial.println(impoSRV, DEC); //Scrive sulla seriale il valore myservo.write(imposrv); //Scrive il valore convertito sul pin 9 analogwrite(11, impopwm); //Scrive il valore convertito sul pin 11

Corso base arduino ed elettronica Licenza Creative Commons Questa opera di Roberto Beligni è concessa in licenza sotto la Licenza Creative Commons Attribuzione Non commerciale Condividi allo stesso modo 3.0 Italia.