Attuatori — agire sul mondo fisico

📋 Obiettivi di apprendimento
Definire un attuatore e spiegare la differenza rispetto al sensore nel ciclo percezione-elaborazione-azione
Descrivere il funzionamento di relè, servomotore, motore DC, stepper motor, LED e display
Spiegare il principio del PWM (Pulse Width Modulation) e come permette di simulare un’uscita analogica su pin digitali
Scegliere l’attuatore più adatto a uno scenario dato, motivando la scelta in base a tipo di energia, precisione e corrente richiesta
📄
Slides
Attuatori — tipologie, PWM e applicazioni

Dal dato all’azione

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.

Il ciclo completo — sensore, controllore, attuatore
🔍
SENSORE
percepisce
⚙️
CONTROLLORE
decide
ATTUATORE
agisce
🌍
MONDO FISICO
cambia

Classificazione degli attuatori

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.

⚙️
MECCANICI
Motori DC, stepper, servomotori, relè, elettrovalvole, solenoidi
💡
OTTICI
LED, strip RGB, display LCD/OLED, proiettori laser
🔊
ACUSTICI
Buzzer passivi e attivi, altoparlanti, cicalini piezoelettrici
🌡️
TERMICI
Resistenze riscaldanti, moduli Peltier, ventole di raffreddamento

Attuatori meccanici

Relè — l’interruttore controllato elettricamente

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

⚡ Come funziona

Una bobina (solenoide) percorsa da corrente genera un campo magnetico che attrae un’armatura metallica mobile. Questo movimento fisico apre o chiude un contatto elettrico separato — il circuito di potenza.

Bobina: 5V, pochi mA (Arduino)
Contatto: 220V AC, fino a 10A
→ Isola completamente i circuiti
🛡️ Perché è utile — isolamento galvanico

Arduino opera a 5V e può erogare al massimo 40 mA per pin. Non può controllare direttamente un motore da 220V o una lampada. Il relè fa da intermediario: il pin Arduino pilota la bobina, la bobina comanda il contatto ad alta potenza.

Attenzione: usare sempre un diodo di flyback in parallelo alla bobina per assorbire la corrente inversa allo spegnimento
✅ Applicazioni: lampade, motori AC, riscaldatori, compressori
❌ Limite: lento (ms), rumoroso, usura meccanica nel tempo
Alternativa moderna: SSR (Solid State Relay) — più veloce, silenzioso, nessuna usura

Servomotore — controllo preciso della posizione

Il servomotore è un motore con un sistema di controllo integrato che permette di posizionare l’albero motore con precisione angolare — tipicamente tra 0° e 180°. È la combinazione di un motore DC, un riduttore di velocità (gearbox), un potenziometro di feedback e un circuito di controllo in un unico componente.

Il servo si comanda con il PWM — un impulso che vale un angolo

Il servo riceve un segnale PWM a 50 Hz (un impulso ogni 20 ms). La larghezza dell’impulso determina la posizione angolare:

1,0 ms di impulso ogni 20 ms →
1,5 ms di impulso ogni 20 ms → 90° (posizione centrale)
2,0 ms di impulso ogni 20 ms → 180°

Con la libreria Servo.h di Arduino non devi calcolare i timing: myServo.write(90) porta il servo a 90°. La libreria gestisce automaticamente il PWM corretto.

✅ Applicazioni: robotica, aeromodellismo, bracci meccanici, gimbal telecamere, serrature smart
Tipi: standard (0–180°), continuo (rotazione 360° senza controllo posizione), digitale (risposta più precisa)

Motore DC — velocità variabile con H-Bridge

Il motore DC (a corrente continua) converte energia elettrica in rotazione continua. La velocità dipende dalla tensione applicata, il verso di rotazione dalla polarità. Un pin Arduino da solo non può pilotarlo — la corrente necessaria è troppo elevata e non è possibile invertire la polarità direttamente.

📌 L298N — il driver H-Bridge più usato con Arduino

Il modulo L298N contiene un ponte H (H-Bridge): quattro transistor disposti a forma di H che permettono di invertire la polarità della tensione sul motore. Combinando i segnali sui pin IN1, IN2 (per il canale A) e abilitando ENA con un segnale PWM, si controlla sia il verso che la velocità del motore.

IN1=HIGH, IN2=LOW → motore avanti
IN1=LOW, IN2=HIGH → motore indietro
IN1=LOW, IN2=LOW → motore fermo (free-wheel)
ENA=PWM 0–255 → controllo velocità

Motore Stepper — passi precisi senza feedback

Il motore passo-passo (stepper motor) si muove di angoli precisi e discreti — i “passi” — attivando le bobine interne in sequenza. Non ha bisogno di un sensore di posizione perché ogni impulso corrisponde a un angolo definito (tipicamente 1,8° per passo = 200 passi per giro completo).

Quando usare lo stepper
  • Stampanti 3D — posizionamento testa di stampa
  • CNC — fresatura con precisione micrometrica
  • Telescopi — inseguimento stelle
  • Macchine fotografiche — messa a fuoco automatica di precisione
Stepper vs Servo — quando scegliere cosa
Stepper: open-loop, alta coppia a bassa velocità, no slip, ideale per CNC e stampa 3D.
Servo: closed-loop con feedback, alta velocità, ideale per robotica dove serve reazione a carichi variabili.

Attuatori ottici — LED, RGB e Display

LED — Light Emitting Diode

Il LED è l’attuatore ottico più semplice e versatile. È un diodo a semiconduttore che emette luce quando percorso da corrente nella direzione di conduzione. Il colore dipende dal materiale semiconduttore usato.

Collegamento LED ad Arduino — resistenza di limitazione

Il LED ha una tensione di caduta (Vf) fissa: circa 2V per i LED rossi e gialli, 3V per blu e bianchi. La resistenza di limitazione è indispensabile per non bruciarlo.

R = (Vcc – Vf) / I_LED
R = (5V – 2V) / 20mA = 150 Ω
→ usa 220 Ω (valore commerciale)
Schema di collegamento:
Pin 13 → [220Ω] → Anodo LED
Catodo LED → GND
(anodo = gamba lunga)

LED RGB — tre colori in uno

Un LED RGB integra tre LED (rosso, verde, blu) nello stesso package. Combinando le intensità dei tre colori con il PWM si ottiene qualsiasi colore dello spettro visibile — lo stesso principio degli schermi LCD e OLED.

Sintesi additiva — mischiare luce
R=255 G=0 B=0 → Rosso
R=0 G=255 B=0 → Verde
R=0 G=0 B=255 → Blu
R=255 G=165 B=0 → Arancio
R=128 G=0 B=128 → Viola
R=255 G=255 B=255 → Bianco

Display LCD e OLED

LCD 16×2 con interfaccia I²C

Display a cristalli liquidi da 16 caratteri × 2 righe. Il modulo I²C riduce i collegamenti da 16 a soli 4 fili (VCC, GND, SDA, SCL). Libreria LiquidCrystal_I2C per Arduino. Ideale per visualizzare valori di sensori in tempo reale.

OLED 128×64 SSD1306

Display OLED (pixel auto-luminosi, nessun backlight) con risoluzione 128×64 pixel. Ogni pixel è un LED indipendente — contrasto altissimo. Interfaccia I²C, libreria Adafruit_SSD1306. Può mostrare grafica, icone e grafici.

Attuatori acustici — Buzzer e altoparlanti

Buzzer Attivo

Contiene internamente un oscillatore — emette una frequenza fissa quando alimentato. Si controlla solo ON/OFF. Semplice da usare: basta portare il pin HIGH. Usato per allarmi e notifiche semplici.

Buzzer Passivo

Richiede un segnale PWM esterno per emettere suono. La frequenza del PWM determina il tono. Con la funzione tone(pin, frequenza) di Arduino si possono suonare melodie e note musicali.

PWM — Pulse Width Modulation

Il PWM (Modulazione a Larghezza di Impulso) è una tecnica fondamentale che permette ai microcontrollori — che hanno solo uscite digitali binarie (0V o 5V) — di simulare valori analogici intermedi. È usata praticamente ovunque: controllo velocità motori, luminosità LED, posizione servomotori, volume audio.

Come funziona il PWM

Il principio del duty cycle — quanto tempo il segnale è HIGH
Duty cycle 0% → sempre LOW → tensione media = 0V → LED spento
▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
Duty cycle 25% → HIGH 25% del tempo → tensione media = 1,25V → LED fioco
█▁▁▁█▁▁▁█▁▁▁█▁▁▁█▁▁▁
Duty cycle 50% → HIGH 50% del tempo → tensione media = 2,5V → LED medio
██▁▁██▁▁██▁▁██▁▁██▁▁
Duty cycle 100% → sempre HIGH → tensione media = 5V → LED piena luminosità
████████████████████
Su Arduino il duty cycle si imposta con analogWrite(pin, valore) dove il valore è da 0 (0%) a 255 (100%). I pin PWM di Arduino UNO sono: 3, 5, 6, 9, 10, 11 (marcati con ~).
📌 Perché il PWM funziona — inerzia e persistenza

Il PWM funziona perché i dispositivi che controlla hanno una inerzia — non reagiscono alle commutazioni istantanee. L’occhio umano non percepisce sfarfallii oltre i 50–60 Hz e vede la luminosità media. Un motore ha inerzia meccanica e risponde alla corrente media. Un altoparlante ha inerzia meccanica della membrana. La frequenza PWM di Arduino (490 Hz sui pin 5 e 6, 980 Hz sugli altri) è abbondantemente superiore alle soglie di percezione.

Confronto tra attuatori — scegliere quello giusto

AttuatoreTipo uscitaControlloPrecisioneCaso d’uso tipico
RelèON/OFFDigitale (0/1)Bassa (solo 2 stati)Controllare carichi AC/alta potenza
ServomotorePosizione angolarePWM (0–180°)Alta (±1°)Robotica, serrature, gimbal
Motore DCRotazione continuaPWM + H-BridgeMedia (velocità)Robot mobili, ventole, pompe
Stepper MotorRotazione a passiSequenza digitaleMolto alta (1,8°/passo)Stampanti 3D, CNC, telescopi
LEDLuceDigitale o PWMAlta (256 livelli PWM)Segnalazione, illuminazione, RGB
Buzzer passivoSuonoPWM (frequenza)Media (toni discreti)Allarmi, feedback sonoro, melodie
📌 Riepilogo — Punti chiave
  • Gli attuatori completano il ciclo del Physical Computing: convertono il segnale digitale in un’azione fisica. Si classificano per tipo di uscita: meccanici (motori, relè), ottici (LED, display), acustici (buzzer), termici
  • Il relè isola galvanicamente Arduino dal carico ad alta potenza. Il servomotore controlla la posizione angolare (0–180°) tramite PWM. Il motore DC richiede un driver H-Bridge (L298N) per la gestione della corrente e del verso. Lo stepper offre la massima precisione posizionale senza feedback
  • Il PWM (Pulse Width Modulation) simula valori analogici variando la percentuale di tempo in cui il segnale è HIGH (duty cycle). Su Arduino: analogWrite(pin, 0–255) sui pin ~3, ~5, ~6, ~9, ~10, ~11
  • La scelta dell’attuatore dipende dal tipo di effetto desiderato, dalla precisione richiesta, dalla corrente disponibile e dalla complessità del controllo accettabile nel progetto

Lascia un commento