Guida Arduino �e ai circuiti elettronici
© FB - 03.2025 - v1.3 (new)
Arduino
La piccola scheda italiana che anima le cose
2
© FB - 12.2021
Indice
3
© FB - 12.2021c
Indice
4
© FB - 12.2021c
Introduzione
I microcontrollori
I microcontrollori collegano il mondo del software al mondo dell'hardware. Consentono agli sviluppatori di scrivere software che interagisce con il mondo fisico nello stesso modo deterministico e accurato del ciclo della logica digitale. Occupano l'angolo inferiore sinistro dello spazio prezzo/prestazioni, vendendo i loro fratelli più potenti di un fattore dieci a uno. Sono i cavalli di battaglia che alimentano la trasformazione digitale del nostro mondo. [ref]
Arduino è uno scheda Open Source che semplifica la progettazione e la prototipazione elettronica offrendo a studenti, insegnanti, artisti o semplici appassionati (i Makers) una piattaforma hardware e software per l’implementazione rapida delle loro idee in progetti interattivi, multimediali e multidisciplinari e senza dover disporre di molte conoscenze tecniche.
6
© FB - 12.2021
Nascita del progetto
Il progetto nasce nel 2005 da Wiring, una piattaforma per la prototipazione elettronica semplificata, destinata ad artisti, architetti e altri professionisti digiuni di elettronica e di informatica, realizzata da Hernando Barragán per la sua tesi di laurea (di cui Massimo Banzi, creatore di Arduino, era relatore) presso l’Interaction Design Institute di Ivrea.
7
© FB - 12.2021
Il team di sviluppo e il nome Arduino
Massimo Banzi (a destra nell’immagine) ad Ivrea insieme al suo team di sviluppo originale di Arduino David Cuartielles, Tom Igoe, Gianluca Martino e Davide Mellis.
Il nome Arduino nasce da quello di una caffetteria di Ivrea frequentata da alcuni dei fondatori del progetto. Arduino d’Ivrea è stato re d’Italia dal 1002 al 1014.
8
© FB - 12.2021
Banzi promuove Arduino in diversi seminari
© FB - 12.2021
9
I Makers utilizzatori di Arduino
I Maker sono personaggi interessanti: non sono nerd, anzi sono dei tipi piuttosto fighi che si interessano di tecnologia, design, arte, sostenibilità, modelli di business alternativi. Vivono di comunità online, software e hardware open source ma anche del sogno di inventare qualcosa da produrre autonomamente, per vivere delle proprie invenzioni. In un momento di crisi si inventano il loro lavoro invece che cercarne uno classico.
(da un’intervista a Massimo Banzi su Wired)
10
© FB - 12.2021
Open Source
L'Open Source, o software a codice aperto, si riferisce a un modello di sviluppo software in cui il codice sorgente del programma è reso disponibile al pubblico. Questo significa che chiunque può visualizzare, modificare e distribuire il codice del software. L'idea fondamentale dietro l'Open Source è la condivisione e la collaborazione, che favoriscono lo sviluppo di software più trasparente, flessibile e accessibile.
Le licenze Open Source consentono agli sviluppatori di utilizzare, modificare e distribuire il software senza restrizioni e affermano la libertà degli utenti di eseguire, studiare, modificare e distribuire il software a loro volta. Questo modello ha portato alla creazione di una vasta comunità di sviluppatori che contribuiscono alla crescita e all'evoluzione continua di molti progetti software.
Un esempio ben noto di software Open Source è il sistema operativo Linux, insieme a molti altri progetti come Apache, MySQL, Python e molti altri. L'approccio Open Source ha dimostrato di essere efficace non solo nello sviluppo di software, ma anche in molte altre aree, come l'hardware, la scienza e l'istruzione. La filosofia dell'Open Source promuove la condivisione delle conoscenze e la collaborazione, contribuendo così a creare un ambiente più aperto e innovativo.
Il codice sorgente del software Arduino è aperto e accessibile al pubblico. Questo permette agli sviluppatori di esaminare, modificare e migliorare il firmware secondo le proprie esigenze. Arduino ha una vasta e attiva comunità di sviluppatori e appassionati. L'approccio Open Source di Arduino ha contribuito a rendere l'elettronica e la programmazione di microcontroller più accessibili. Il fatto che il software e l'hardware siano aperti ha permesso a molte persone di imparare e contribuire alla comunità Arduino.
11
© FB - 01.2024
Open hardware
L'Open Hardware, o hardware a codice aperto, segue una filosofia simile all'Open Source applicata al software, ma si estende al mondo hardware. Si tratta di condividere il progetto e il design di componenti hardware, consentendo a chiunque di accedere, modificare, distribuire e utilizzare liberamente le specifiche hardware.
Le principali caratteristiche dell'Open Hardware includono la disponibilità del design hardware, la documentazione completa e la possibilità per gli utenti di creare, modificare e condividere le proprie versioni del prodotto. Questo approccio mira a promuovere la collaborazione, la trasparenza e l'innovazione nell'ambito della progettazione hardware.
Ci sono numerosi progetti e iniziative Open Hardware che coprono una vasta gamma di dispositivi, dai microcontrollori alle schede madri, passando per droni e stampanti 3D. Un esempio ben noto è Arduino, una piattaforma di sviluppo di hardware a sorgente aperta, utilizzata per la creazione di progetti e prototipi elettronici.
L'Open Hardware offre una maggiore libertà agli sviluppatori e agli appassionati, permettendo loro di comprendere appieno il funzionamento dei dispositivi, modificarli per adattarli alle proprie esigenze e condividere le loro modifiche con la comunità. Questo approccio contribuisce a favorire l'innovazione e la collaborazione nella progettazione di hardware.
12
© FB - 01.2024
Cosa permette di fare
Con Arduino si possono realizzare rapidamente e in modo abbastanza semplice piccoli dispositivi come controllori di luci, di velocità per motori, sensori di luce, temperatura e umidità e molti altri progetti che utilizzano sensori, attuatori e comunicazione con altri dispositivi.
Ecco alcuni dei principali utilizzi delle schede Arduino: Progetti di Elettronica e Prototipazione; Progetti Domotici; Robotica; Monitoraggio Ambientale; Arte Interattiva e Installazioni; Strumenti Musicali Elettronici; Progetti Educativi; Automazione Industriale a Scala Ridotta; E tanto altro…
13
© FB - 12.2021
Hardware
Arduino Boards
15
© FB - 12.2021
Arduino Boards
16
© FB - 12.2021
16
Arduino Boards
17
© FB - 12.2021
17
Arduino Boards
18
© FB - 12.2021
18
Shield
19
© FB - 12.2021
19
Segnali analogici e digitali
20
© FB - 12.2021
Analogico vs Digitale
© FB - 12.2021
21
Conversione di un segnale Analogico in digitale
Grazie al convertitore Analogico digitale presente all’interno del microcontrollore possiamo acquisire una tensione come numero, per poi elaborarla all’interno del nostro programma.
Il segnale analogico di ingresso deve avere un'ampiezza compresa tra l’alimentazione del convertitore (Con Arduino Uno 0-5V)
22
© FB - 04.2020
Dispositivi analogici
23
© FB - 04.2020
x\
Dispositivi digitali (input o output)
24
© FB - 04.2020
Dispositivi �di Input e di Output
25
© FB - 12.2021
Dispositivi di Output
26
© FB - 04.2020
Dispositivi di Input
27
© FB - 04.2020
Sensori e attuatori
28
© FB - 12.2021
Sensori (lettura del valore di una grandezza fisica)
touch tocco pir luminosità suono
temperatura
29
© FB - 04.2020
x\
Attuatori (convertono un valore digitale in grandezza fisica)
Motori Suono Servomotore Buzzer
30
© FB - 04.2020
L’ambiente di sviluppo
IDE per Arduino
32
© FB - 07.2023
IDE Arduino, le librerie
33
© FB - 03.2021
Alternative all’IDE ufficiale - VsCode
Visual Studio Code è un editor di codice sorgente, multipiattaforma, sviluppato da Microsoft a partire dal 2015, si può utilizzare per lo sviluppo con diversi linguaggi di programmazione. E’ possibile utilizzare diversi plugin che sono disponibili sul repository. Anche per programmare con Arduino è disponibile un apposito plugin. [tutorial]
34
© FB - 03.2021
Alternative all’IDE ufficiale - VS Code and PlatformIO IDE
35
© FB - 03.2022
Simulazione Online
36
© FB - 07.2023
Codecraft
38
© FB - 01.2022
Codecraft
Codecraft è un software di programmazione grafica adatto a chi sta imparando a programmare.
Si basa sul linguaggio Scratch 3.0 e consente la programmazione semplicemente "trascinando e rilasciando" i blocchi.
Oltre alla capacità di Scratch di programmare giochi o animazioni interattive, Codecraft supporta anche una varietà di dispositivi hardware comuni, consentendo l'integrazione hardware e software, il che rende la programmazione ancora più divertente.
39
© FB - 01.2022
La programmazione
Gli sketch
41
© FB - 07.2023
Gli sketch e i blocchi Setup e Loop
I programmi per arduino sono chiamati Sketches e sono file con estensione .ino. Sono dei programmi scritti in linguaggio C o C++.
All’interno degli Sketches sono sempre presenti due funzioni particolari chiamate Setup e Loop
42
© FB - 12.2023
Configurazione dell’hardware
43
© FB - 07.2023
Istruzioni pinMode()
44
© FB - 03.2021
Istruzioni pinMode(), digitalWrite() e digitalRead()
45
© FB - 03.2021
Funzioni di supporto ai programmi
46
© FB - 07.2023
L’istruzione delay() e delayMicroseconds()
L’esecuzione delle singole istruzione, dipende dalla velocità del clock del microcontrollore ed è solitamente molto veloce, parliamo di usec
L'istruzione delay(int millisecondi); in Arduino è una funzione che mette in pausa l'esecuzione del programma per un certo periodo di tempo specificato in millisecondi.
L’istruzione delayMicroseconds(int microsecondi); blocca il microcontrollore per il tempo indicato
Queste istruzioni sono spesso utilizzata per controllare il ritmo di esecuzione di uno sketch, consentendo, ad esempio, di creare pause o intervalli specifici tra le istruzioni. Tuttavia, è importante notare che l'utilizzo eccessivo di delay() può rendere il programma non responsivo, specialmente in progetti più complessi che richiedono un controllo più preciso del tempo.
Per mitigare questo problema, in molti casi è preferibile utilizzare il concetto di programmazione a stati o la gestione del tempo basata su interruzioni (millis()), che consente al programma di eseguire altre operazioni durante i periodi di attesa, rendendo così il sistema più reattivo.
47
© FB - 12.2023
Esempio: lampeggio led
Per far lampeggiare un led possiamo usare le istruzioni digitalWrite(LED_PIN, HIGH) e digitalWrite(LED_PIN, LOW) alternate ad un ritardo
void setup() {
// initialize digital pin2 as an output.
pinMode(2, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(2, HIGH); //turn the LED on (HIGH is the voltage level)
delay(500); //wait for 0.5 second
digitalWrite(2, LOW); //turn the LED off by making the voltage LOW
delay(500); //wait for 0.5 second
}
48
© FB - 02.2022
L’istruzione micros()
L'istruzione micros(), restituisce il numero di microsecondi da quando la scheda Arduino ha iniziato a eseguire il programma corrente.
il valore restituito e di tipo unsigned long (32 bit)
Possiamo utilizzare questa istruzione per misurare un intervallo di tempo
ES.
time_start = micros(); //Es. 1.235.000
Serial.println(time_start); //prints time since program started
delay(1000);
time_end = micros(); //Es. 2.235.000
Serial.println(time_end ); //prints time since program started
Serial.println(time_end - time_start); //Intervallo in microsecondi
49
© FB - 05.2021
L’istruzione millis()
millis è una funzione built-in di Arduino che restituisce il numero di millisecondi trascorsi dalla pressione del tasto di reset o dall'avvio del programma. La funzione millis utilizza un contatore interno che aumenta di continuo, e quindi fornisce un modo semplice per misurare il tempo trascorso durante l'esecuzione di un programma. L'unità di misura è il millisecondo, ovvero un millisecondo è un'unità di tempo equivalente a 1/1000 di secondo. millis è spesso utilizzato in applicazioni che richiedono un controllo del tempo, come per esempio la creazione di timer, la gestione dei delay, e molto altro ancora. Il valore restituito e di tipo unsigned long (32 bit)
Possiamo utilizzare questa istruzione ad esempio per scrivere una funzione che se richiamata all'interno di un loop fa lampeggiare un led senza bloccare l’esecuzione del microcontrollore:
void ledTask() {
static unsigned long previousMillis = 0;
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 1000) {
previousMillis = currentMillis;
digitalWrite(ledPin, !digitalRead(ledPin));
}
}
50
© FB - 01.2023
Il convertitore ADC di Arduino
int adcVc; //conterrà valori tra 0-1023
adcVc = analogRead(A0); //Facciamo una misura sul pin A0
se:
adcVc = 1023 -> su A0 abbiamo 5V
adcVc = 0 -> su A0 abbiamo 0V
adcVc = 512 -> su A0 abbiamo 2,5V
adcVc = 256 -> su A0 abbiamo 1,25V = 256*4,88
adcVc = 1-> su A0 abbiamo 5/1024 = 4,88mV
51
© FB - 04.2020
Trasformare i valori misurati
float Vc; int adcVal;�//Vc : adcVal = 5 : 1023�Vc = (adcVal * 5) / 1023.0; //Attenzione! dividere con float
int adcVal = analogRead(0);�float Vc = map(Vc , 0, 1023, 0, 5000);�Serial.write(Vc);
52
© FB - 04.2020
true e false
Ci sono due costanti usate per rappresentare vero e falso nel linguaggio Arduino: true e false.
Notare che le costanti true e false sono scritte in minuscolo a differenza di altre costanti come ad esempio: HIGH, LOW, INPUT e OUTPUT.
53
© FB - 04.2020
Istruzioni bitRead()
54
© FB - 03.2021
Come implementare la nostra bitRead()
55
© FB - 03.2021
Operatori “Bitwise” per lavorare sui singoli bit
56
© FB - 03.2021
Operatori “Bitwise” per lavorare sui singoli bit
57
© FB - 03.2021
Operatori Booleani per lavorare su funzioni logiche
Gli operatori Booleani restituiscono vero (1) o falso (0) in base all’operazione booleana corrispondente (not, and, or)
58
© FB - 03.2021
Come calcolare un funzione logica
Possiamo calcolare la funzione usando sia gli operatori Booleani che Bitwise
bool Y,A,B;�Y = !A&&B || A&&!B;
oppure se consideriamo l'ultimo bit degli interi A e B (stesso discorso vale anche per gli altri tipo di numeri (char, byte, ecc.)
int Y,A,B;�Y = (A^B)&1;
L’And finale con 1 permette di considerare solo il bit meno significativo ed azzerare tutti gli altri.
59
© FB - 03.2021
Generazione di segnali PWM
La funzione analogWrite(pin, value) genera un onda PWM sul “pin” specificato. Può essere utilizzato per accendere un LED a luminosità variabili o azionare un motore a varie velocità. Dopo una chiamata ad analogWrite(), il pin genererà un'onda rettangolare costante con il duty-cicle specificato fino alla successiva chiamata ad analogWrite() sullo stesso pin.
60
© FB - 11.2021
Il monitor seriale
61
© FB - 02.2024
Il monitor seriale dell’IDE Arduino
Con Arduino non è possibile stampare contemporaneamente numeri e testo contemporaneamente (come sono abituati a fare i programmatori C con la funzione printf)
62
© FB - 05.2021
Preparazione della stringa da stampare utilizzando sprintf
Possiamo preparare una stringa da stampare sul monitor seriale utilizzando l'istruzione sprintf(). L’istruzione sprintf() ti consente di formattare una stringa come desideri, includendo valori di variabili e costanti all'interno della stringa formattata. Ecco un esempio:
void setup() {
Serial.begin(9600); // Inizializzare la comunicazione seriale a 9600 bps
}
void loop() {
int temperature = 25;
float humidity = 60.5;
char buffer[50]; // Dichiarare un array di caratteri per contenere la stringa formattata
// Formattare la stringa utilizzando sprintf()
sprintf(buffer, "Temperatura: %d°C, Umidità: %.1f%%", temperature, humidity);
// Stampare la stringa sul monitor seriale
Serial.println(buffer);
delay(1000); // Attendere un secondo prima di eseguire nuovamente il loop
}
63
© FB - 02.2024
Visualizzazione dati su plotter (monitor) seriale
i numeri visualizzati dal monitor seriale possono essere rappresentati graficamente dal plotter seriale
64
© FB - 05.2021
Librerie
65
© FB - 11.2021
Come installare librerie aggiuntive
Le librerie sono una raccolta di codice che semplificano l’utilizzo di un sensore, display, modulo, ecc.
Questa è la guida per installare librerie aggiuntive sull’IDE Arduino
Installing Libraries | Arduino Documentation
66
© FB - 04.2022
Libreria Servo.h
Questa libreria consente alla scheda Arduino di controllare i servomotori. I servomotori standard consentono di posizionare l'albero su vari angoli, solitamente tra 0 e 180 gradi. I servomotori a rotazione continua consentono di impostare la rotazione dell'albero a varie velocità. La libreria Servo supporta fino a 12 motori sulla maggior parte delle schede Arduino. [codice sorgente]
myservo.attach(pin) Collega la variabile servo ad un pin
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);
}
void loop() {}
67
© FB - 11.2020
Libreria Servo.h
myservo.write(angle) Scrive un valore sul servomotore, controllando di conseguenza la posizione dell'albero. Su un servomotore standard, imposterà l'angolo dell'albero (in gradi). Su un servomotore a rotazione continua, questo imposterà la velocità del servo (dove 0 è la massima velocità in una direzione, 180 è la massima velocità nell'altra e un valore vicino a 90 è nessun movimento).
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);� myservo.write(90); // set servo to mid-point
}
void loop() {}
68
© FB - 11.2020
Task paralleli
Task non bloccanti
In un contesto di programmazione per microcontrollori come Arduino, spesso è preferibile utilizzare approcci non bloccanti per garantire che il sistema possa continuare a rispondere ad eventi in modo tempestivo. Un modo comune per implementare ciò è utilizzare il concetto di task (compiti o attività) non bloccanti. Ciò significa che il codice può eseguire diverse attività in modo simultaneo, senza aspettare il completamento di ciascuna attività prima di passare alla successiva.
La creazione di task non bloccanti è un aspetto critico nella progettazione di sistemi basati su Arduino o altri microcontrollori, specialmente quando si affrontano compiti che richiedono la gestione simultanea di più attività o quando si desidera mantenere la responsività del sistema.
Responsività del Sistema: L'utilizzo di delay blocca l'esecuzione del programma per il periodo specificato, impedendo al microcontrollore di eseguire altre operazioni durante quel tempo. Questo può portare a un sistema non reattivo, specialmente in presenza di più attività contemporanee.
Gestione di Più Attività: I progetti più complessi spesso richiedono la gestione simultanea di diverse attività. Creare task non bloccanti consente al microcontrollore di eseguire operazioni in parallelo, migliorando l'efficienza del sistema.
Simulazione di Multithreading: Sebbene i microcontrollori a basso livello non supportino nativamente il multithreading, l'implementazione di task non bloccanti può creare l'illusione di esecuzione simultanea di più attività.
70
© FB - 01.2024
Variabili Statiche e Lampeggio led con Arduino
In Arduino, la funzione millis() restituisce il numero di millisecondi trascorsi dal momento in cui Arduino è stato acceso. Questo può essere utilizzato per implementare un lampeggio di uno o più LED senza bloccare l'esecuzione del programma. Ecco un esempio di una funzione Arduino che fa lampeggiare un LED utilizzando millis() e variabili statiche:
71
© FB - 12.2021
72
© FB - 03.2023
Multitasking
73
© FB - 02.2025
Multitasking
74
© FB - 03.2025
Circuiti elettronici digitali
La breadboard per la prototipazione di circuiti
La breadboard per la prototipazione di circuiti
77
© FB - 02.2024
La Breadboard
E’ utilizzata per realizzare prototipi di circuiti elettronici. Non necessita la saldatura dei componenti elettronici come avviene per la basetta mille fori o i circuiti stampati quindi è riutilizzabile.
© FB - 09.2020
La Breadboard
Le breadboard sono dispositivi di prototipazione che consentono di testare progetti di circuiti elettronici. I componenti del circuito sono interconnessi inserendo cavi nei fori della breadboard e utilizzando cavi jumper per completare il circuito quando necessario.
© FB - 03.2021
La Breadboard
I fori nella breadboard sono allineati con clip metalliche perché il metallo conduce l'elettricità e consente alla corrente di fluire. I fori nel breadboard sono collegati da clip metalliche nel modello mostrato dalle linee verdi nell'immagine qui a fianco:
© FB - 03.2021
La Breadboard
© FB - 04.2020
La Breadboard
© FB - 04.2020
Montaggio circuito su Breadboard
© FB - 04.2020
Montaggio disordinato da non imitare
Montaggi a confronto
Schema elettrico e montaggio a confronto
Montaggio
Una corretta alimentazione è fondamentale per il funzionamento del circuito, ma soprattutto evita il danneggiamento dei componenti. Per poter controllare facilmente una corretta alimentazione usiamo questa convenzione dei colori:
Consigli di utilizzo
Pinza a becco piatto, pinza tronchesina, forbice elettricista
© FB - 10.2019
Esercitazioni
90
© FB - 02.2024
Esercitazioni
91
© FB - 02.2024
I diodi Led
I Diodi
93
© FB - 09.2021
Il diodo
Il diodo è un componente elettronico a due terminali la cui funzione ideale è quella di permettere il flusso di corrente elettrica in un verso (dall’anodo al catodo) e di bloccarla quasi totalmente nell'altro.
94
© FB - 10.2021
Gli inventori del diodo
Il primo diodo funzionante è stato realizzato nel 1905 dall’inventore britannico Sir John Ambrose Fleming sulla base degli studi nel 1873 del fisico britannico Frederick Guthrie e gli esperimenti di Thomas Alva Edison nel 1880.
Fleming pensò di costruire un rivelatore delle oscillazioni radioelettriche composto da due elettrodi racchiusi in un bulbo di vetro a vuoto: l'uno (il catodo) è elettricamente riscaldato ed emette elettroni; l'altro (l'anodo) riceve gli elettroni.
In tal modo la corrente elettrica scorre in una sola direzione. Da qui il nome di valvola termoionica perché basata sull'effetto termoelettrico; o semplicemente di "diodo" perché composta di due elettrodi.
95
© FB - 09.2021
Diodo led
96
© FB - 09.2021
Il diodo led
97
© FB - 10.2021
Il diodo led
Il diodo a emissione di luce (LED Light Emitting Diode), in elettronica, indica un dispositivo optoelettronico che sfrutta la capacità di alcuni materiali semiconduttori di emettere radiazioni elettromagnetiche nello spettro del visibile (rosso, verde, blu, giallo, bianco) e dell’invisibile (infrarosso).
I led infrarossi sono utilizzati per l’invio di dati (telecomandi).
Il primo LED fu sviluppato nel 1962. Negli anni novanta, vennero realizzati LED con efficienza sempre più elevata e in una gamma di colori sempre maggiore, realizzando anche luce bianca. Parallelamente, è aumentata la quantità di luce emessa a livelli competitivi con quelli delle comuni lampadine. Nell'illuminotecnica, il LED si configura come una tecnologia ad alta efficienza che garantisce un ottimo risparmio energetico. [wikipedia]
98
© FB - 10.2021
Il diodo led
I primi diodi ad emissione luminosa erano disponibili solo nel colore rosso. Venivano utilizzati come indicatori nei circuiti elettronici, nei display a sette segmenti e negli optoisolatori. Successivamente, ne vennero sviluppati alcuni che emettevano luce gialla e verde e vennero realizzati dispositivi che integravano due LED.
I vari tipi di diodi led conducono corrente (e quindi emettono luce) solo quando la tensione di polarizzazione diretta applicata tra l’anodo e il catodo supera un certo valore, che dipende dalla lunghezza d’onda emessa (colore).
99
© FB - 10.2021
Datasheet
Corrente massima ammissibile: tipicamente accettano correnti tra 1 e 20mA. Prima di ogni utilizzo bisogna verificare con il data sheet la corrente massima utilizzabile.
Tensione di breakdown: Tensione massima inversa applicabile ai capi del diodo senza danneggiarlo.
Lunghezza d’onda: E’ la lunghezza d’onda della radiazione elettromagnetica emessa, che nello spettro del visibile corrisponde a colori differenti
Datasheet: Nei datasheet (es. led smd)troviamo l’elenco completo delle caratteristiche elettriche del diodo. Come ad esempio: intensità luminosa, potenza dissipata, ecc.
100
© FB - 12.2021
Tipologie di led
101
© FB - 01.2022
Polarizzazione del diodo led
Per dimensionare un circuito con diodo bisogna recuperare dal datasheet la corrente di lavoro IF, la tensione di polarizzazione diretta VF (Vℽ).
Ipotizziamo di avere un diodo rosso a foro passante da 5mm con:�
102
© FB - 01.2022
Diodi led con package SMD
103
© FB - 10.2021
Esercitazioni
104
© FB - 02.2024
Esercitazioni
105
© FB - 02.2024
Display a 7 segmenti
Display a 7 segmenti
107
© FB - 02.2024
Display a 7 segmenti
Utilizzo dei display a 7 segmenti. Esempi pratici
108
© FB - 10.2021
Il display a 7 segmenti
I display a 7 segmenti sono realizzati con 8 diodi LED, solitamente di colore rosso e vengono utilizzati nei sistemi elettronici per la visualizzazione di numeri e/o lettere.
In passato erano molto utilizzati nella strumentazione�e per la visualizzazione in vari dispositivi elettronici.
Adesso si preferisce utilizzare i display LCD�perchè con costi simili permettono di visualizzare�una quantità maggiore di informazioni.
109
© FB - 01.2022
Display a catodo comune o ad anodo comune.
110
© FB - 04.2021
Display a catodo comune o ad anodo comune.
111
© FB - 04.2021
Il display 7 segmenti a catodo comune
112
© FB - 04.2021
Il display 7 segmenti a anodo comune
113
© FB - 04.2021
Codifica da BCD a 7 Seg con 7448
114
© FB - 04.2021
Pilotaggio e Codifica da BCD a 7 Seg
Il display 7 segmenti
Tabella per la generazione di numeri e lettere
115
© FB - 04.2021
Montaggio su breadboard
116
© FB - 04.2021
Il display 7 segmenti
117
© FB - 04.2021
Polarizzazione del display
118
© FB - 01.2022
Display 7 segmenti e Arduino
119
© FB - 02.2021
Esercitazioni
120
© FB - 02.2024
Esercitazioni
121
© FB - 02.2024
Display LCD e OLED
Display LCD e OLED
123
© FB - 12.2021
Pulsanti
Pulsanti e microcontrollori
Utilizzo di pulsanti, interruttori e deviatori con i microcontrollori
125
© FB - 12.2020
Pulsanti, interruttori, deviatori e invertitori
negli impianti elettrici
126
© FB - 11.2021
Interruttori, deviatori e invertitori negli impianti civili
127
Per i collegamenti al neutro si usano cavi blu. Bisogna sempre interrompere la fase e non il neutro, diversamente da quanto riportato nelle precedenti immagini.
© FB - 11.2021
Pulsanti, interruttori, deviatori e invertitori
128
© FB - 11.2021
Interruttori bipolari
Un interruttore bipolare è un dispositivo che interrompe l’alimentazione di entrambi i poli (fase e neutro) del nostro circuito elettrico. Viene utilizzato per l’accensione e lo spegnimento dei dispositivi con consumi medio-elevati.
129
© FB - 11.2021
Relè passo passo negli impianti civili
Il relè passo passo viene comandato tramite pulsanti elettrici. E’ utilizzato quando è necessario avere molti punti di comando. Permette quindi di semplificare i collegamenti altrimenti necessari.
130
© FB - 11.2021
Pulsanti, interruttori, deviatori e invertitori
nei circuiti elettronici
131
© FB - 11.2021
Pulsanti, interruttori, deviatori nei circuiti elettronici
132
© FB - 11.2021
Pulsanti, interruttori e contatti
Pulsanti, interruttori e contatti sono dispositivi elettromeccanici di comando destinati, se azionati, a cambiare lo stato di un circuito.
Pulsanti, interruttori e contatti possono essere NA o NC
133
© FB - 11.2021
Pulsante NA e NC
Un esempio di pulsante NA è il campanello, che quando è rilasciato torna in posizione di riposo. Un esempio di pulsante NC è il pulsante del frigorifero, che spegne la luce se premuto. Per ogni tipologia di interruttore, pulsante o contatto, il passaggio di corrente avviene ogni volta che due lamelle metalliche si toccano tra loro a seguito di un’azione meccanica da parte di un utilizzatore esterno.
134
© FB - 11.2021
Parametri caratteristici
Gli interruttori e i pulsanti, come ogni altro componente elettronico, sono caratterizzati da alcuni parametri, di seguito indicati, che aiutano il progettista a effettuare la scelta più corretta in relazione alle proprie esigenze.
135
© FB - 11.2021
Pulsanti
136
© FB - 11.2021
Deviatore - Toggle switch - Slide switch
137
© FB - 11.2021
Deviatore
138
© FB - 11.2021
Interruttori dip-switch
139
© FB - 11.2021
Rotary coding switch
140
© FB - 11.2021
Collegare un pulsante al microcontrollore
Simboli usati negli schemi elettrici
141
© FB - 11.2021
Pull-up/Pull-down
142
© FB - 10.2021
Resistenze di pull-up e di pull-down
La pratica sconsiglia vivamente di lasciare liberi (floating -flottanti) ingressi di componenti MOS/CMOS perchè, nelle condizioni peggiori, sono in grado di funzionare da sensibili antenne per disturbi di ogni genere, anche di frequenze radio, e creare situazioni di malfunzionamento assai difficili da debuggare. Considerazioni per il dimensionamento:
[Approfondimenti: Resistenza di pull-up / pull-down; Come calcolare le resistenze di pull-up e pull-down - Video 238]
143
© FB - 02.2021
Collegamento tipico pull-up
144
© FB - 12.2020
Collegamento tipico con pulsante pull-down
145
© FB - 12.2020
Collegamento tipico con pulsante pull-down
146
© FB - 12.2020
Utilizzo delle resistenze interne di pull-up e pull-down
Molti microcontrollori incorporano al loro interno resistenze di pull-up e pull-down attivabili via software. �Con questo tipo di collegamento e configurazione del microcontrollore, quando il pulsante non è premuto, sul pin dove è collegato, sarà presente il livello logico alto (5V), mentre con la pressione, ci sarà un collegamento diretto a massa e quindi il livello logico basso (0V).
147
© FB - 01.2023
Utilizzo delle resistenze interne di pull-up e pull-down
#define LED_PIN 13
#define SW_PIN 2
void setup() { // Inizializzazione
pinMode(LED_PIN, OUTPUT);
pinMode(SW_PIN, INPUT_PULLUP);
}
void loop() { // Loop infinito
if(digitalRead(SW_PIN)==HIGH)
//Pulsante non premuto
digitalWrite(LED_PIN, HIGH);
else
//Pulsante premuto
digitalWrite(LED_PIN, LOW);
}
Approfondimenti:
148
© FB - 11.2021
Pin di I/O per il microcontrollore STM32L476
Il microcontrollore STM32L476 permette di attivare via software le resistenze di pull-up e pull-down
Dispone anche di due diodi di protezione e di un trigger di Schmitt
149
© FB - 12.2019
Rimbalzi e Debounce
150
© FB - 10.2021
Rimbalzi e Debounce
Alla pressione o al rilascio del pulsante o dell’interruttore si osservano dei rimbalzi del segnale che possono durare diversi ms (2-30ms)
151
© FB - 11.2020
Eliminazione hardware dei rimbalzi
152
© FB - 11.2020
Trigger di Schmitt
153
© FB - 10.2021
154
© FB - 09.2019
155
© FB - 09.2019
156
© FB - 09.2019
Codice di esempio
157
© FB - 12.2021
Routine di esempio
visto che la pressione del pulsante dura alcuni millisecondi possiamo controllare per 5-50msec che il pulsante rimanga premuto, per scartare pressioni non valide.
per rilevare un click dobbiamo aspettare che il pulsante venga rilasciato
un pulsante può anche generare gli eventi:
Se volessimo utilizzare la pressione del pulsante per impostare un orologio realizzato con microcontrollore bisognerebbe utilizzare l’evento LongPress e non Press. Provate a tenere premuto un tasto sul pc e pensate a cosa succederebbe se non ci fosse un ritardo tra due letture successive.
158
© FB - 02.2025
Esercitazioni
159
© FB - 12.2021
Esercitazione
160
© FB - 12.2021
Esercizio c
Generare due segnali impulsivi adatti a comandare il servomotore nelle posizione 90° e 180°, simulando una sbarra nelle posizioni aperta e chiusa. Utilizziamo il pulsante per spostare la sbarra da aperta a chiusa e viceversa. Impostare l’oscilloscopio in modo che si veda bene il segnale impulsivo generato.
Raccogliere in un unico documento lo schema di montaggio, il codice e le simulazioni.
161
© FB - 11.2020
Esercizio d
Generare un segnale impulsivo adatto a pilotare il servomotore. Collegare il circuito come nello schema seguente. Scrivere un programma che a seguito della pressione o il click dei pulsanti SW_DW e SW_UP faccia ruotare in giù o in sù il servomotore. Impostare l’oscilloscopio in modo che si veda bene il segnale impulsivo generato.
Raccogliere in un unico documento lo schema di montaggio, il codice e le simulazioni.
162
© FB - 11.2020
Relè
Relè
164
© FB - 02.2024
Come funziona un relè
Il relè è un componente elettromeccanico il cui azionamento avviene mediante un elettromagnete costituito da una bobina di filo conduttore elettrico, generalmente di rame, avvolto intorno ad un nucleo di materiale ferromagnetico. Al passaggio di corrente elettrica nella bobina, l'elettromagnete attrae l'ancora alla quale è vincolato il contatto mobile che quindi cambierà posizione. Nella figura a fianco è rappresentato un relè con tre contatti: uno mobile e due fissi. Quando il relè è a riposo il contatto mobile è in contatto con uno dei due contatti fissi. Quando il relè è "eccitato", cioè quando la bobina è percorsa da corrente elettrica, la situazione si inverte e il contatto mobile si sposta sull'altro contatto. [wikipedia]
165
© FB - 09.2021
Come funziona un relè
Internante il relè dispone di un elettromagnete, ovvero un cilindro di ferro intorno al quale è avvolto un filo di rame.
Al passaggio della corrente nel filo di rame detto bobina, il cilindro di ferro si magnetizza e attira una lamina che meccanicamente sposta un contatto mobile dalla posizione di riposo (N.C.) alla posizione di eccitamento (N.A). Aprendo e chiudendo così un circuito elettrico esterno.
In questo modo è possibile attivare carichi molto grandi e mantenere un completo isolamento elettrico tra il circuito di pilotaggio ed il circuito controllato.
166
© FB - 09.2021
Come funziona un relè
Relè per impianti civili o comandato da circuiti elettronici
167
© FB - 09.2021
Come funziona un relè
circuiti elettronici che comandano relè
168
© FB - 09.2021
Utilizzi
169
© FB - 09.2021
L’inventore del Relè
Il relé venne inventato nel 1835 dallo scienziato americano Joseph Henry.
Il nome relè deriva dal francese relais che indicava ognuna delle stazioni di posta dove i messi postali, durante il loro itinerario, potevano cambiare i cavalli in modo da svolgere più celermente il loro servizio.
Per analogia, ai primordi della telegrafia si usò il termine relè nell'indicare i dispositivi grazie ai quali si trasferiva un messaggio in codice Morse da una stazione di partenza a una stazione di arrivo, come se un virtuale messo postale si servisse di tali dispositivi per arrivare finalmente alla meta.
170
RELE’
RELE’
Il relè viene impiegato per isolare il circuito di comando da quello di potenza, come nella figura A2.10. Nella sezione di comando il pulsante chiude il circuito della bobina, che viene alimentata dalla batteria in BT.
Nella sezione di potenza il campo magnetico generato dalla bobina chiude il contatto della MT, quindi la lampadina viene alimentata dalla tensione di 230 V. Rispetto ai tradizionali apparecchi di manovra (interruttore, deviatore, invertitore) il relè assicura una maggiore sicurezza elettrica dovuta ai seguenti fattori: il circuito di comando è elettricamente separato dal circuito comandato; il circuito di comando può essere a bassa tensione
Relè con autoritenuta
Per mezzo del pulsante normalmente aperto (N.O.) "START" viene chiuso il circuito che alimenta (eccitandolo) il relè o contattore K1, nello stesso momento il contatto ausiliario normalmente aperto di K1 si chiude e trovandosi in parallelo al pulsante di marcia è come se cortocircuitasse quest' ultimo. In questo momento, successivamente al rilascio del pulsante "START" la bobina viene mantenuta eccitata proprio dal contatto K1.
Per eseguire l'arresto e quindi diseccitare il relè, si agisce sul pulsante "STOP" normalmente chiuso (N.C.) che essendo posto in serie a "START" e a "K1" interrompe l'alimentazione anche dopo la sua pressione (poiché il relè diseccitandosi riapre il contatto K1). A questo punto tutto è nuovamente allo stato di partenza.
173
© FB - 01.2022
Contattori o teleruttore
Un contattore o teleruttore è un dispositivo elettromeccanico di manovra, generalmente previsto per un numero elevato di operazioni, è anche detto dispositivo di tipo monostabile poiché ha una sola posizione di riposo, ad azionamento non manuale, capace di stabilire, sopportare ed interrompere correnti in condizioni di sovraccarico.
La posizione di riposo corrisponde ordinariamente alla posizione di apertura dei contatti principali. Si distingue dal relè per il fatto che quest'ultimo è impiegato per il comando di potenze relativamente piccole o segnali in ambito elettronico, mentre il teleruttore è impiegato nel comando di potenze anche molto elevate.
174
© FB - 01.2022
Relè Omron G5LE-1
Il relè Omron G5LE-1 è eccitabile con una tensione di 5 volt e in grado di commutare tensioni fino a 250 volt AC e carichi resistivi da 10 Ampere o induttivi da 5 Ampere.
La corrente assorbita dalla bobina è di circa 80mA
175
© FB - 01.2022
Quanto costa un RELE’ ?
SCHEMA DELL’INTERFACCIA
Un diodo sulla bobina del relé, chiamato diodo di ricircolo, proteggere il Mosfet dalle sovratensioni generate dalla bobina del relè al momento dell’interruzione di corrente.
GPIO
CARICO
RELE’
MOSFET
Esercitazioni
179
© FB - 02.2024
Esercitazioni
180
© FB - 02.2024
Buzzer
Buzzer
Un buzzer o beeper è un dispositivo di segnalazione audio, che può essere meccanico, elettromeccanico, o piezoelettrico. I tipici utilizzi del buzzer includono dispositivi di allarme, timer, e PC speaker per i feedback sugli input dell'utente, come pressione dei tasti o click del mouse, nei vecchi personal computer. [Wikipedia]
182
© FB - 11.2021
Buzzer attivi e passivi
Un buzzer attivo usa un oscillatore interno che permette di emettere un tono a frequenza fissa se viene alimentato con una tensione continua. L’oscillatore interno è in grado di modificare il campo magnetico di una bobina a cui è connesso meccanicamente una membrana che oscillerà alla frequenza fissata dall’oscillatore.
Un buzzer passivo non possiede un oscillatore interno e quindi è indispensabile un circuito esterno in grado di generare un’onda quadra che mettere in oscillazione la membrana interna del buzzer, questi attuatori potranno così emettere toni a diversa frequenza. . [Maffucci.it]
183
© FB - 11.2021
Utilizzo del buzzer con Arduino
184
© FB - 11.2021
Buzzer
Per il collegamento diretto del buzzer ad Arduino, verificare che la corrente assorbita sia inferiore a 20mA. E’ altamente raccomandato comandare il buzzer tramite un transistor.
185
© FB - 11.2021
Codice
è possibile generare dei toni a frequenze diverse utilizzando un delay oppure le funzioni tone e noTone di Arduino. Per emettere dei semplici beep è sufficiente impostare al livello logico alto il pin del buzzer.
#define BUZZER_PIN 6
void setup(){
pinMode(BUZZER_PIN, OUTPUT);
}
void loop(){
digitalWrite(BUZZER_PIN, HIGH);
delay(300);
digitalWrite(BUZZER_PIN, LOW);
delay(1000);
}
186
© FB - 12.2021
Utilizzo del buzzer con le schede ESP32
187
© FB - 11.2021
Codice
Con le schede ESP32 non esistono funzioni tone e noTone di Arduino e vanno quindi create.
#define BUZZER_CHANNEL 2 //il canale 0 non funziona
#define BUZZER_RESOLUTION 8
#define BUZZER_DUTYCYCLE 128 //50%
void noTone() {
//set DutyCycle = 0
ledcWrite(BUZZER_CHANNEL, 0);
}
void tone(int pin, int freq, int durata) {
// configure LED PWM functionalitites
ledcSetup(BUZZER_CHANNEL, freq, BUZZER_RESOLUTION);
// attach the channel to the GPIO to be controlled
ledcAttachPin(BUZZER_PIN, BUZZER_CHANNEL);
ledcWrite(BUZZER_CHANNEL, BUZZER_DUTYCYCLE);
delay(durata);
}
188
© FB - 12.2021
Pilotaggio tramite transistor
189
© FB - 11.2021
Pilotaggio del Buzzer tramite transistor
190
© FB - 11.2021
Se il buzzer è di tipo induttivo bisogna aggiungere il diodo D1 di protezione
Esercizio a
191
© FB - 11.2021
Esercizio a
Scrivere un programma che all’accensione del microcontrollore faccia suonare il buzzer per tre volte ad intervalli di 200ms.
192
© FB - 12.2021
Esercizio b
193
© FB - 11.2021
Esercizio b
Usando le funzioni tone e noTone di Arduino scrivere un programma che suoni delle melodie con il buzzer.
194
© FB - 12.2021
Esempi vari di codice
195
© FB - 02.2024
Sensore ad ultrasuoni SRF05
Sensore ad ultrasuoni SRF05
È capace di misurare la distanza di oggetti che si trovano di fronte il raggio di azione del sensore. Utilizzo del sensore ad ultrasuoni SRF05 con la Raspberry PI e con vari microcontrollori.
197
© FB - 11.2021
SFR05
198
© FB - 05.2021
Introduzione
L'SRF05 è un’evoluzione dell'SRF04 ed è stato progettato per aumentarne la flessibilità, aumentare la portata e ridurre ulteriormente i costi. In quanto tale, l'SRF05 è completamente compatibile con l'SRF04. La portata è aumentata da 3 metri a 4 metri. Una nuova modalità operativa (che collega il pin della modalità a massa) consente all'SRF05 di utilizzare un singolo pin sia per il trigger che per l'eco, risparmiando così preziosi pin sul controller. Quando il pin della modalità viene lasciato scollegato, l'SRF05 funziona con trigger separati e pin di eco, come l'SRF04. L'SRF05 include un piccolo ritardo prima dell'impulso di eco per dare ai controller più lenti come il Basic Stamp e il Picaxe il tempo di eseguire il loro impulso nei comandi.
199
© FB - 05.2021
Introduzione
Tensione Operativa 5V
Corrente Operativa Tipica 4mA
Frequenza 40 Khz
Portata 1cm - 4mt
Dimensioni 43 x 20 x H 17 mm
Impulso di ritorno: Segnale TTL positivo, di durata proporzionale alla distanza rilevata.
Trigger di Input: Impulso TTL di durata minima di 10 uS.
Modalità di funzionamento: Pin singolo per trig/echo o 2 Pin SRF04 compatibile.
200
© FB - 05.2021
Mode 1 - Mode no connection (SFR04 compatible)
Questa modalità utilizza i pin trigger e pin di eco in modo separato ed è la modalità più semplice da usare. Tutti gli esempi di codice per SRF04 funzioneranno per SRF05 in questa modalità. Per utilizzare questa modalità, lascia semplicemente scollegato il pin della modalità: l'SRF05 ha una resistenza di pull up interna su questo pin.
201
© FB - 05.2021
SFR05 Timing Diagram, mode 1
202
© FB - 05.2021
Mode 2 - Pin singolo per Trigger ed Echo
Questa modalità utilizza un singolo pin per entrambi i segnali Trigger ed Echo. Per utilizzare questa modalità, collegare il pin Mode a 0v. Il segnale di eco apparirà sullo stesso pin del segnale di trigger. L'SRF05 non alza la linea dell'eco fino a 700uS dopo la fine del segnale di trigger. Abbiamo quindi tutto il tempo per modificare il pin di trigger/echo e renderlo un input e misurare quindi la durata dell’impulso.
203
© FB - 05.2021
SFR05 Timing Diagram, mode 2
204
© FB - 05.2021
Calcolo della distanza
I diagrammi temporali dell’SRF05 sono mostrati sopra per ciascuna modalità. È sufficiente fornire un breve impulso da 10uS all'ingresso trigger per avviare la misurazione. L'SRF05 invierà una serie di 8 cicli di ultrasuoni a 40 kHz e alzerà la sua linea di eco alta (o la linea di trigger in modalità 2). Quindi ascolta un eco e non appena ne rileva uno abbassa nuovamente la linea dell'eco. La linea dell'eco è quindi un impulso la cui larghezza è proporzionale alla distanza dall'oggetto. Misurando la durata dell'impulso è possibile calcolare la distanza.
Se l'ampiezza dell'impulso è misurata in uS, dividendo per 58 si otterrà la distanza in cm, oppure dividendo per 148 si otterrà la distanza in pollici. uS/58 = cm o uS/148 = pollici.
L'SRF05 può essere attivato ad intervalli di 50 ms (20 volte al secondo). È necessario quindi attendere 50 ms prima del trigger successivo, anche se l'SRF05 rileva un oggetto vicino e l'impulso dell'eco è più breve. Questo per garantire che il "segnale acustico" ultrasonico sia svanito e non causi una falsa eco alla successiva misurazione.
205
© FB - 05.2021
Calcolo della distanza (www.mauroalfieri.it)
206
© FB - 05.2021
Beam pattern and Beam width
Non esiste un modo semplice per ridurre o modificare l'ampiezza del raggio di trasmissione. La configurazione del raggio dell'SRF05 è conica e la larghezza del raggio è una funzione della superficie dei trasduttori ed è fissa. Di seguito è mostrato lo schema del fascio dei trasduttori utilizzati sull'SRF05, tratto dalla scheda tecnica del produttore.
207
© FB - 05.2021
208
© FB - 05.2021
SFR05 & Arduino
209
© FB - 05.2021
Collegamenti
210
© FB - 10.2021
Codice di esempio
#define LED 7
#define US 10
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
int getDistance() {
//Set pin US as output
pinMode(US, OUTPUT);
delay(2);
//Send trig pulse
digitalWrite(US, HIGH);
delayMicroseconds(15);
digitalWrite(US, LOW);
//Set pin US as intput
pinMode(US, INPUT);
//Wait for echo start
while(digitalRead(US)==LOW) {;}
//Wait for echo end
long startTime = micros();
while(digitalRead(US)==HIGH) {;}
long travelTime = micros() - startTime;
//Get distance in cm
int distance = travelTime/58;
return distance;
}
void loop()
{
Serial.print("Distanza ostacolo ");
Serial.print(getDistance());
Serial.println();
delay(200);
//TODO accendere il led solo se la distanza
//dell'ostacolo risulta minore a 20cm
digitalWrite(LED, HIGH);
}
https://github.com/filippo-bilardo/TPSIT_2/blob/main/004/sfr05.ino
211
© FB - 10.2021
Esempi di codice
212
© FB - 05.2021
Esercizi a-c
213
© FB - 09.2021
Esercizio a
214
© FB - 09.2021
Esercizio d
215
© FB - 05.2021
Altri esercizi
216
© FB - 11.2021
Sensore infrarossi TCRT5000
Sensore infrarossi TCRT5000
218
© FB - 11.2021
I Servomotori
Utilizzo dei servomotori
220
© FB - 10.2021
I servomotori
Un servomotore è un particolare tipo di motore, generalmente di piccola potenza. A differenza dei motori tradizionali che ruotano in modo continuo, rimane fisso su una posizione in base al segnale periodico utilizzato per comandarlo.
Può essere elettrico, pneumatico, idraulico.
I servomotori trovano applicazione nei controlli di posizione, nelle macchine a controllo numerico, nei sistemi automatici di regolazione e nelle periferiche di sistema, come stampanti e plotter. [wikipedia]
© FB - 10.2020
I servomotori
possono ruotare con un angolo compreso tra 0° e 180°, mantenendo stabilmente la posizione raggiunta. (in realtà esistono anche alcuni servo che ruotano a 360° ma sono una minoranza)
© FB - 10.2020
I servomotori
© FB - 10.2020
Utilizzo dei servomotori
---
© FB - 10.2020
Utilizzo dei servomotori
---
© FB - 10.2020
I servomotori
© FB - 10.2020
I servomotori
© FB - 10.2020
Collegamenti
© FB - 10.2020
Pilotaggio di un servomotore
Dobbiamo generare un segnale impulsivo con periodo di 20ms e impostare il duty cycle in modo da avere la parte impulsiva con durata tra 1 e 2ms. L’ampiezza del segnale dipenda dal servomotore scelta ed è di solito compresa tra 3,3V e 7,2V
© FB - 10.2020
I Servomotori con Arduino
230
© FB - 02.2021
Arduino e Servomotori
Utilizziamo Arduino di Tinkercad per generare un’onda impulsiva da utilizzare per comandare un servomotore
© FB - 10.2020
Libreria Servo.h
Questa libreria consente alla scheda Arduino di controllare i servomotori. I servomotori standard consentono di posizionare l'albero su vari angoli, solitamente tra 0 e 180 gradi. I servomotori a rotazione continua consentono di impostare la rotazione dell'albero a varie velocità. La libreria Servo supporta fino a 12 motori sulla maggior parte delle schede Arduino. [codice sorgente]
myservo.attach(pin) Collega la variabile servo ad un pin
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);
}
void loop() {}
© FB - 11.2020
Libreria Servo.h
myservo.write(angle) Scrive un valore sul servomotore, controllando di conseguenza la posizione dell'albero. Su un servomotore standard, imposterà l'angolo dell'albero (in gradi). Su un servomotore a rotazione continua, questo imposterà la velocità del servo (dove 0 è la massima velocità in una direzione, 180 è la massima velocità nell'altra e un valore vicino a 90 è nessun movimento).
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9);� myservo.write(90); // set servo to mid-point
}
void loop() {}
© FB - 11.2020
Esercizio a
234
© FB - 02.2021
Esercitazione a
© FB - 10.2020
Esercizio b
236
© FB - 02.2021
Esercizio b
Trovare il numero dell'iniziale del proprio cognome IC e del proprio nome IN (es Bianchi Dario IC=2, IN=4)�Generare un segnale impulsivo con TH=((int)IC/5+1)*100ms e TL=((int)IN/5+1)*300ms sul pin ((int)IC/3+1) di Arduino. Collegare un led con resistenza e l’oscilloscopio per verificare il corretto funzionamento del programma.
237
© FB - 10.2020
Esercizio b
Nel progetto inserire la cattura dell’oscilloscopio in modo che si possa vedere bene il segnale generato.
238
© FB - 10.2020
Esercizio c
239
© FB - 02.2021
Esercizio c
Scrivere un programma (oppure tre diversi programmi) capace di pilotare le diverse posizioni di un servo motore (0°, 90° e 180°). Collegare servomotore e oscilloscopio ad Arduino per verificare il corretto funzionamento del programma.
240
© FB - 11.2020
Esercizio c
241
© FB - 11.2020
Esercizio c
242
© FB - 11.2020
Esercizio d
243
© FB - 02.2021
Esercizio d
Scrivere una funzione capace di pilotare le diverse posizioni di un servomotore (angolo X)(es. servoPos(int angolo). Quindi in base al parametro angolo il servo dovrà ruotare con l’angolo specificato.�Scrivere un programma di test per testare la funzione scritta (ad es. impostare il servo nelle posizioni da 0° a 180° ad incrementi di step° e tenerlo fermo per N sec) �Collegare servomotore e oscilloscopio ad Arduino per verificare il corretto funzionamento del programma.
202122_TPS2_A_ES05 - I servomotori
244
© FB - 11.2020
Circuiti elettronici analogici
Resistenze
Resistenze
247
© FB - 02.2024
La resistenza
Il resistore (anche chiamato impropriamente resistenza per metonimia), è un tipo di componente elettrico lineare e passivo destinato ad opporre una specifica resistenza elettrica al passaggio della corrente elettrica.
I resistori hanno innumerevoli applicazioni sia in apparecchiature elettriche che elettroniche. Sono a volte utilizzati per convertire energia elettrica in energia termica.
248
© FB - 10.2019
Unità di misura
249
© FB - 10.2019
La legge di Ohm
La legge di Ohm stabilisce che la corrente in un conduttore tra due punti è direttamente proporzionale alla differenza di potenziale tra i due punti stessi. La costante di proporzionalità è detta resistenza elettrica.
V=RI
dove I è la corrente attraverso il conduttore, V è la differenza di potenziale ed R è la resistenza. Nel sistema internazionale la corrente si misura in ampere, la differenza di potenziale in volt e la resistenza in ohm.
250
© FB - 10.2019
Dissipazione dell’energia
Se applichiamo una Tensione (differenza di potenziale) ai capi di una resistenza, la resistenza dissipa una potenza elettrica sotto forma di calore
251
© FB - 10.2019
Classificazione delle resistenze
252
© FB - 10.2019
Teconologie smd e tht
253
© FB - 10.2019
Resistenze di potenza
254
© FB - 10.2019
Le serie delle resistenze
Le resistenze che troviamo in commercio sono raggruppate in serie di valori.
Le serie dipendono dalla tolleranza. Se abbiamo una tolleranza del 10% non avrebbe senso vendere una resistenza con valore intermedio tra 10Ω e 12Ω
255
© FB - 10.2019
La serie E12
256
© FB - 10.2019
Codice dei colori
Con il codice dei colori delle resistenze è possibile determinare il valore nominale della resistenza, la tolleranza e, in qualche caso, il coefficiente di temperatura.
257
© FB - 09.2021
Tabella dei colori delle resistenze a 3 o 4 anelli
258
© FB - 10.2019
Tabella dei colori delle resistenze a 5 o 6 anelli
259
© FB - 10.2019
Calcolo della tolleranza
R = 470 ohm, tolleranza = 10%
Rmin = 470 - 470*10% = 470*(1-10%) = 470*0,9 = 423
Rmax = 470 + 470*10% = 470*(1+10%) = 470*1,1 = 493
260
© FB - 10.2020
Tabella dei colori
261
© FB - 10.2019
I valori delle resistenze smd
262
© FB - 09.2021
263
264
265
Nanobook Z80
vs
Tiny 2040
Approfondimenti
266
© FB - 09.2021
Approfondimenti
267
© FB - 02.2022
Esercitazioni
268
© FB - 02.2024
Esercitazioni
269
© FB - 02.2024
Driver e Motori in corrente continua
Motori in corrente continua
La macchina in corrente continua (brevemente macchina CC o macchina DC, dall'inglese Direct Current) è stata la prima macchina elettrica realizzata, ed è tuttora utilizzata ampiamente per piccole e grandi potenze, da generatore o da motore. Sono a corrente continua (o comunque alimentabili in corrente continua) numerosi motori di piccola potenza per usi domestici, come anche motori per trazione ferroviaria e marina della potenza di molte centinaia di kW. [wikipedia]
271
© FB - 12.2021
Motori DC
272
© FB - 09.2021
I motori CC (o DC Direct Current)
Un motore in corrente continua (CC) è un tipo di macchina elettrica che converte l’energia elettrica in energia meccanica. Assorbe energia elettrica attraverso la corrente continua e la converte in rotazione meccanica.
Nei motori CC parte che gira è detta rotore o armatura mentre la parte che genera il campo magnetico fisso (nell'esempio i due magneti colorati) detta statore. Un interruttore rotante detto commutatore o collettore a spazzole inverte due volte ad ogni giro la direzione della corrente elettrica che percorre i due avvolgimenti generando un campo magnetico che entra ed esce dalle parti arrotondate dell'armatura. Nascono forze di attrazione e repulsione con i magneti permanenti fissi (indicati con N ed S nelle figure).
273
© FB - 12.2021
I motori CC (o DC Direct Current)
La velocità di rotazione dipende da:
La coppia generata è proporzionale alla corrente ed il controllo più semplice agisce sulla tensione d'alimentazione, mentre nei sistemi più complessi si usa per la tensione un controllo in retroazione. [wikipedia]
274
© FB - 12.2021
Driver Motori�Ponte ad H
275
© FB - 09.2021
Pilotaggio di motori
Il transistor comandato in modalità on/off, permette di disaccoppiare il circuito di comando dove è presente il microcontrollore dal circuito di potenza che alimenta il motore. Il diodo permette di bloccare la corrente inversa generata dal motore.
276
© FB - 11.2021
Segnale PWM
Pilotando il motore con un segnale pwm possiamo regolarne la velocità di rotazione. Durante la parte bassa del segnale il motore continuerà a girare per inerzia, ma la velocità corrisponderà al valore medio del segnale.
277
© FB - 12.2021
Ponte ad H (H bridge)
Il ponte ad H è un circuito che permette di invertire la corrente del carico collegato.
Quindi permette di controllare il verso di rotazione del motore. E’ anche possibile frenarlo.
278
© FB - 12.2021
Ponte ad H (H bridge)
279
© FB - 12.2021
Driver motori HG7881
280
© FB - 02.2024
HG7881
Dual-H-Bridge Current-Control Motor Driver
281
© FB - 02.2024
HG7881
282
© FB - 12.2021
Driver motori DRV8833
283
© FB - 09.2021
DRV8833 - Dual-H-Bridge Current-Control Motor Driver
284
© FB - 12.2021
Motor voltage | 2.7V – 10.8V |
Logic Voltage | 3.3-5V |
Output Current per H-Bridge | 1.5A RMS, 2A Peak |
under-voltage lockout, over-current, and over-temperature | |
DRV8833
285
© FB - 12.2021
DRV8833
EEP low for the sleep mode (need to disconnect the module after th J2 short contact, the module default point for the connection and connect to high).
ULT for the protection of the alarm output, overheating and overcurrent protection int the work of the output low-level alarm signal.
286
© FB - 02.2024
DRV8833
287
© FB - 12.2021
DRV8833 e scheda STM32 o Arduino
288
© FB - 12.2021
288
DRV8833
289
© FB - 12.2021
289
Controllo motori con ESP32 e LM298A
290
© FB - 12.2021
Controllo motori con ESP32 e LM298A
291
© FB - 12.2021
Controllo motori con Arduino e DRV8833
292
© FB - 12.2021
Collegamento driver e motori ad Arduino
293
© FB - 12.2021
293
Esercitazioni
294
© FB - 02.2024
Esercitazioni
295
© FB - 02.2024
Prove con ESP32+DRV8833+N20
296
© FB - 02.2024
Altri circuiti elettronici analogici
Altri circuiti elettronici analogici
298
© FB - 04.2022
Strumenti di laboratorio
Strumenti di laboratorio
300
© FB - 04.2022
Altre esercitazioni
Materiale per le esercitazioni
302
© FB - 04.2022
Esercitazioni
303
© FB - 04.2022
Approfondimenti
Approfondimenti
305
© FB - 04.2022
Grazie per l’attenzione
Link/Riferimenti
307
Revisioni
v1.0 15/11/17 - versione iniziale �v1.1 01/11/21 - nuovi contenuti�v1.2 30/12/21 - cambiato il tema delle slide e ampliati i contenuti�v1.3 20/01/24 - aggiunti i contenuti per le esercitazioni