Sistemi e Reti - Modulo 3 Lezione 03: Attuatori
Sistemi e Reti · Anno 3 · Modulo 3 · Lezione 03
✍ Autore: profgiagnotti · Materia: Sistemi e Reti

Attuatori: agire sul mondo fisico

Dal dato digitale all'azione reale: come i sistemi embedded muovono, illuminano e suonano. Relè, servo, motori DC e stepper, LED, PWM e criteri di scelta dell'attuatore giusto.

⏱ 60 min 📚 Anno 3 🧠 Attuatori 💻 PWM
✓Definire che cos'è un attuatore e spiegare la differenza con un sensore nel ciclo percezione-elaborazione-azione
✓Descrivere il funzionamento di relè, servomotore, motore DC con driver H-Bridge, stepper motor, LED e buzzer
✓Spiegare il principio del PWM (Pulse Width Modulation) e come simulare un'uscita analogica su pin digitali Arduino
✓Scegliere l'attuatore corretto per uno scenario dato, valutando tipo di energia, precisione, corrente e complessità di controllo
✓Collegare gli attuatori al tema successivo dei sistemi di controllo ad anello aperto e chiuso

1. Dal dato all'azione: sensori, controllore e attuatori

📌 Definizione da ricordare

Un attuatore è un dispositivo che converte un segnale elettrico o digitale, elaborato da un controllore, in un'azione fisica nel mondo reale: movimento, luce, suono o calore. È l'output del sistema embedded.

Nella lezione precedente abbiamo visto come i sensori traducono il mondo fisico in dati digitali. Ora percorriamo il percorso inverso: dal dato digitale elaborato dal controllore all'azione fisica nel mondo reale. Questo è il compito degli attuatori.

Se i sensori sono gli occhi e le orecchie del sistema, gli attuatori ne sono le mani. Un sistema di Physical Computing senza attuatori può solo osservare — non può intervenire, correggere, modificare. È il binomio sensore-attuatore che rende un sistema veramente autonomo.

🔍 SENSORE percepisce ⚙️ CONTROLLORE decide ⚡ ATTUATORE agisce - FOCUS 🌍 MONDO FISICO cambia
💬 Tip del docente

Per l'interrogazione ricorda la frase-ciclo: il sensore percepisce, il controllore decide, l'attuatore agisce. Se ti chiedono perché serve l'attuatore, rispondi: senza, il sistema è cieco dal punto di vista dell'intervento — può solo osservare, non può chiudere il loop di controllo.

2. Classificazione degli attuatori per tipo di energia

Gli attuatori si classificano in base al tipo di energia che producono in uscita: movimento meccanico, luce, suono, calore. Questa distinzione è importante perché determina quale grandezza fisica il sistema può controllare e quale hardware servirà.

01 · MECCANICI

⚙️ Movimento e forza

Motori DC, stepper, servomotori, relè, elettrovalvole, solenoidi. Convertono elettricità in rotazione o spostamento lineare.

02 · OTTICI

💡 Luce e visualizzazione

LED, strip RGB, display LCD/OLED, laser. Segnalazione, illuminazione e interfacce uomo-macchina.

03 · ACUSTICI / TERMICI

🔊🌡️ Suono e calore

Buzzer passivi/attivi, altoparlanti, resistenze riscaldanti, Peltier, ventole.

🎯 Esempio in classe

Termostato smart in aula: sensore DHT22 misura temperatura → Arduino decide se fa troppo caldo → attiva attuatore meccanico (ventola tramite relè) + attuatore ottico (LED rosso) + acustico (buzzer breve). Tre tipi di attuatori nello stesso progetto!

3. Attuatori meccanici: relè, servo, motore DC e stepper

3.1 Relè — l'interruttore controllato elettricamente

Il relè è uno dei componenti più antichi e ancora fondamentali. È un interruttore meccanico controllato da un segnale elettrico: un piccolo segnale (microcontrollore) comanda un circuito ad alta potenza che il microcontrollore non potrebbe gestire direttamente.

COME FUNZIONA

Bobina + armatura

Una bobina percorsa da corrente genera campo magnetico che attrae un'armatura mobile. Questo apre/chiude un contatto separato: il circuito di potenza. Bobina: 5V pochi mA. Contatto: 220V AC fino a 10A → isolamento completo.

PERCHÉ È UTILE · ISOLAMENTO GALVANICO

Proteggere Arduino

Arduino opera a 5V e max 40 mA per pin. Non può controllare un motore da 220V. Il relè fa da intermediario. Attenzione: usare sempre diodo flyback in parallelo alla bobina.

⚠️ Errore comune in laboratorio

Collegare direttamente un motore DC o una lampada 220V al pin Arduino. Il pin si brucia. Soluzione: usa sempre driver (transistor, relè, L298N). Per relè: non dimenticare il diodo 1N4007 in antiparallelo alla bobina per assorbire la extracorrente di apertura.

ARDUINO · RELÈ - ESEMPIO
const int relayPin = 7; void setup() { pinMode(relayPin, OUTPUT); } void loop() { digitalWrite(relayPin, HIGH); // chiude contatto -> carico ON delay(2000); digitalWrite(relayPin, LOW); // apre contatto -> carico OFF delay(2000); } // NOTA: modulo relè attivo LOW -> inverti logica se serve

3.2 Servomotore — controllo preciso della posizione angolare

Il servomotore è un motore con controllo integrato che posiziona l'albero con precisione — tipicamente 0°-180°. È l'insieme di motore DC + gearbox + potenziometro di feedback + circuito di controllo in unico package.

📌 Definizione da ricordare

Servo: si comanda con PWM a 50 Hz (impulso ogni 20 ms). Larghezza impulso = angolo: 1,0 ms → 0°, 1,5 ms → 90°, 2,0 ms → 180°. Libreria Arduino Servo.h nasconde i timing: myServo.write(angolo).

SERVO PWM - 50Hz - 20ms periodo 1.0 ms → 0° 1.5 ms → 90° (centro) 2.0 ms → 180° |---------------- 20 ms periodo ----------------| Servo.h: myServo.attach(9); myServo.write(90);
ARDUINO · SERVO - CODICE BASE
#include Servo myServo; void setup() { myServo.attach(9); // pin PWM } void loop() { myServo.write(0); delay(1000); myServo.write(90); delay(1000); myServo.write(180); delay(1000); }
🎯 Dove lo trovi

Robotica educativa, aeromodellismo, bracci meccanici, gimbal per telecamere, serrature smart. Tipi: standard 0-180°, continuo 360° senza controllo posizione (controllo velocità), digitale (risposta più rapida e precisa).

3.3 Motore DC — velocità e H-Bridge L298N

Il motore DC converte energia elettrica in rotazione continua. Velocità proporzionale a tensione, verso proporzionale a polarità. Un pin Arduino non basta: serve un driver che gestisca corrente e inversione di polarità.

💬 Tip del docente

L298N = ponte H = 4 transistor a forma di H. Logica: IN1=HIGH IN2=LOW → avanti, inverti → indietro, entrambi LOW → fermo. ENA con PWM 0-255 → velocità. Ricorda: modulo L298N ha caduta ~2V, meglio alimentazione esterna 7-12V per motori.

ARDUINO · L298N MOTORE DC
// Motore DC con L298N - controllo verso e velocità const int ENA = 9; // PWM velocità const int IN1 = 8; const int IN2 = 7; void setup() { pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); } void loop() { // avanti veloce digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, 200); delay(2000); // indietro lento digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); analogWrite(ENA, 120); delay(2000); // stop digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); delay(1000); }

3.4 Motore Stepper — passi precisi senza feedback

Lo stepper si muove di angoli discreti — i "passi" — attivando bobine in sequenza. Non ha bisogno di sensore di posizione: ogni impulso = angolo definito (tipicamente 1,8° = 200 passi/giro).

QUANDO STEPPER

Alta precisione open-loop

Stampanti 3D (testa stampa), CNC, telescopi (inseguimento stelle), messa a fuoco fotocamere. Coppia alta a bassa velocità, no slip.

STEPPER VS SERVO

Come scegliere

Stepper: open-loop, ideale dove serve posizione assoluta senza encoder, come CNC. Servo: closed-loop con feedback, alta velocità, reazione a carichi variabili, robotica.

4. Attuatori ottici e acustici: LED, display e buzzer

LED — Light Emitting Diode

Il LED è l'attuatore ottico più semplice. Diodo a semiconduttore che emette luce quando percorso da corrente diretta. Colore = materiale semiconduttore.

ELETTRONICA · CALCOLO RESISTENZA LED
Dato: VCC = 5V, Vf LED rosso = 2V, I = 20mA Formula: R = (Vcc - Vf) / I R = (5-2)/0.02 = 150 Ω → usa valore commerciale 220 Ω per sicurezza Collegamento: Pin 13 → [220Ω] → Anodo LED (gamba lunga) Catodo (corta) → GND

LED RGB — tre colori in uno

Il LED RGB integra R+G+B nello stesso package. Con PWM su tre pin si ottiene qualsiasi colore per sintesi additiva — stesso principio degli schermi.

R255 → Rosso G255 → Verde B255 → Blu R255 G165 → Arancio R128 B128 → Viola R255 G255 B255 → Bianco
ARDUINO · LED RGB - ARCOBALENO
const int pinR = 9, pinG = 10, pinB = 11; void setColor(int r, int g, int b){ analogWrite(pinR, r); analogWrite(pinG, g); analogWrite(pinB, b); } void setup(){ pinMode(pinR, OUTPUT); pinMode(pinG, OUTPUT); pinMode(pinB, OUTPUT); } void loop(){ setColor(255,0,0); delay(800); // rosso setColor(0,255,0); delay(800); // verde setColor(0,0,255); delay(800); // blu setColor(255,255,255); delay(800); // bianco }

Display LCD e OLED come attuatori visivi avanzati

LCD 16×2 I²C

Display caratteri

16 caratteri × 2 righe. Modulo I²C riduce fili da 16 a 4 (VCC GND SDA SCL). Libreria LiquidCrystal_I2C. Ideale per valori sensori real-time.

OLED 128×64 SSD1306

Pixel attivi

OLED = pixel auto-luminosi, contrasto altissimo. 128×64 pixel, I²C, libreria Adafruit_SSD1306. Mostra grafica, icone, grafici.

Buzzer attivo vs passivo

BUZZER ATTIVO

Frequenza fissa interna

Ha oscillatore interno → suona fisso quando alimentato. Controllo: solo ON/OFF (digitalWrite HIGH). Per allarmi semplici.

BUZZER PASSIVO

Melodie con PWM

Richiede PWM esterno. Frequenza PWM = tono. Con tone(pin, freq) suoni note e melodie. Fondamentale per feedback musicale.

ARDUINO · BUZZER PASSIVO MELODIA
#define BUZZER 8 void setup(){} void loop(){ tone(BUZZER, 262); delay(300); // DO tone(BUZZER, 294); delay(300); // RE tone(BUZZER, 330); delay(300); // MI noTone(BUZZER); delay(500); }

5. PWM: simulare l'analogico con il digitale

📌 Definizione da ricordare

PWM (Pulse Width Modulation): tecnica che simula valori analogici variando la percentuale di tempo in cui un segnale digitale è HIGH (duty cycle). Su Arduino: analogWrite(pin, 0-255) sui pin marcati ~ (3,5,6,9,10,11).

Il PWM è fondamentale perché i microcontrollori hanno solo uscite digitali binarie (0V o 5V). Variando rapidamente il tempo di ON vs OFF, si ottiene una tensione media intermedia. Usato per luminosità LED, velocità motori, posizione servo, volume audio.

PWM - Duty cycle e tensione media percepita 0% → 0V → LED spento 25% → 1.25V → fioco 50% → 2.5V → medio 75% → 3.75V → brillante 100% → 5V → max Perché funziona? Occhio >50Hz vede media. Motore: inerzia filtra. Freq Arduino 490/980Hz.
💬 Tip del docente

Domanda classica verifica: perché il PWM sembra analogico? Rispondi: perché il dispositivo ha inerzia. L'occhio integra luce oltre 50 Hz, il motore non può fermarsi a 490 Hz, quindi risponde alla tensione media (duty × Vcc). Frequenza PWM UNO: 490 Hz (pin 5,6) e 980 Hz (3,9,10,11).

ARDUINO · DIMMER LED CON POTENZIOMETRO
// Dimmer: potenziometro A0 -> LED PWM pin 9 const int potPin = A0; const int ledPin = 9; void setup(){ pinMode(ledPin, OUTPUT); } void loop(){ int val = analogRead(potPin); // 0-1023 int pwm = map(val, 0, 1023, 0, 255); analogWrite(ledPin, pwm); delay(10); }

6. Confronto finale: come scegliere l'attuatore giusto

La scelta dipende da: che effetto voglio (movimento? luce? suono?), quale precisione serve, quanta corrente ho, quanto deve essere semplice o complesso il controllo.

AttuatoreTipo uscitaControlloPrecisioneCaso d'uso
RelèON/OFF alta potenzaDigitaleBassaLampade AC, riscaldatori, pompe 220V
ServomotorePosizione 0-180°PWM 50HzAlta ±1°Robotica, serrature smart, gimbal
Motore DCRotazione continuaPWM + H-BridgeMediaRobot mobili, ventole, pompe DC
StepperRotazione a passiSequenza digitaleMolto alta 1.8°Stampanti 3D, CNC, telescopi
LEDLuceDigitale / PWMAlta 256 livelliSegnalazione, RGB, illuminazione
Buzzer passivoSuonoPWM frequenzaMediaAllarmi, feedback, melodie
Display OLEDGrafica/testoI²CAlta 128×64UI, grafici, dashboard sensori
🎯 Esercizio di scelta rapida

Scenario: cancello scorrevole automatico con telecomando e sensore ostacolo. Quale attuatore? Motore DC con L298N + encoder o fine-corsa per movimento continuo potente. Servo troppo debole, stepper troppo lento. Per segnalazione: LED lampeggiante + buzzer. Per sicurezza: relè per blocco alimentazione in emergenza.

7. Verifica / Esercizio

🔬 Attività pratica + domande

Progetto: braccio robotico a 2 servi + LED di stato + buzzer di fine corsa. Usa potenziometri per comandare i servi e testa il PWM per dimmerare il LED.

  1. Calcola la resistenza per un LED blu (Vf 3V, If 20mA) alimentato a 5V. Quale valore commerciale useresti?
  2. Spiega con un disegno il principio del duty cycle al 60%: quanta tensione media vede un motore a 5V?
  3. Perché per un motore DC serve un L298N e non basta un pin digitale? E per un relè perché il diodo flyback?
  4. Scegli tra servo e stepper per: stampante 3D, braccio robotico che deve tenere posizione sotto carico, tergicristallo auto. Motiva.
  5. Scrivi pseudocodice: se sensore ultrasuoni <20cm, accendi LED rosso, suona buzzer, ferma motore DC; altrimenti motore avanti.
✅ Soluzione ragionata (traccia)

1) R=(5-3)/0.02=100Ω → 120Ω o 150Ω per margine.
2) 60% di 5V = 3V medi. HIGH 60% periodo, LOW 40%. Media vista = 3V.
3) Pin Arduino max 40mA, motore richiede 500mA-2A + picchi. L298N fornisce corrente e inversione. Diodo flyback assorbe extratensione inversa bobina (Lenz).
4) Stampante 3D → stepper. Braccio sotto carico → servo closed-loop. Tergicristallo → motore DC.
5) if distance <20: LED ON, tone(1000), stopMotore() else: LED OFF, noTone(), motoreAvanti(180).

✓Attuatore = azione: converte segnale digitale in effetto fisico. Senza attuatori, sistema non chiude loop.
✓Relè = isolamento: separa logica 5V da potenza 220V AC. Servo = angolo via PWM 50Hz. DC = H-Bridge L298N. Stepper = precisione a passi.
✓PWM = pseudo-analogico: duty cycle varia tempo HIGH. analogWrite(pin,0-255) su pin ~. Funziona per inerzia.
✓LED RGB = sintesi additiva: R+G+B via PWM → 16M colori. OLED/LCD = attuatori visivi. Buzzer attivo ON/OFF, passivo melodie.
✓Scelta attuatore: effetto, precisione, corrente, complessità. Domanda guida: muovere con forza? Posizionare preciso? Illuminare? Suonare?

📚 Prossimo passo - Sistemi di controllo ad anello aperto e chiuso

Ora che sappiamo percepire (sensori) e agire (attuatori), chiuderemo il cerchio: come un sistema decide in autonomia mantenendo stabilità? Vedremo feedback, retroazione, PID introduttivo e differenza cruciale tra open-loop e closed-loop.