Lancia palline da tennis – Cetralina

Il lanciapalline richiede una parte elettronica necessaria per il controllo della velocità delle ruote, l’attivazione del solenoide assiale e per l’orientamento del dispositivo di lancio.

Nel prototipo iniziale erano presenti un interruttore per l’accensione della centralina, un display LCD 20×4 che consentiva la navigazione nei menu tramite un joystick, un pulsante per l’avvio e l’arresto del lancio delle palline, un LED verde e uno rosso per indicare lo stato di funzionamento del sistema e un buzzer acustico utilizzato per segnalare l’imminente inizio della sequenza di lancio.

Centralina

Microcontrollore – ESP32

Lo schema elettronico prevede l’utilizzo di un microcontrollore ESP32 a 38 pin, scelto per l’elevato numero di interfacce disponibili, la capacità di elaborazione e la connettività integrata, caratteristiche che lo rendono particolarmente adatto alla gestione delle funzionalità del lanciapalline.

Expander GPIO

Si è inoltre reso necessario l’utilizzo di un expander di GPIO (MCP23017), poiché il numero di porte disponibili sul microcontrollore non era sufficiente per interfacciare tutti i componenti richiesti dal progetto.

L’expander MCP23017 viene interfacciato al microcontrollore tramite il bus I²C e configurato tramite l’indirizzo 0x00. Questa soluzione consente di espandere il numero di ingressi e uscite disponibili utilizzando solamente due linee di comunicazione, senza occupare ulteriori porte GPIO del microcontrollore.

Tuttavia l’expander presenta alcuni limiti. Ad esempio, non sono indicati per la gestione di segnali ad alta velocità; per questo motivo vengono generalmente utilizzati per interfacciare componenti a commutazione lenta come pulsanti, LED, solenoidi assiali e relè.

Inoltre, dispone di due gruppi di porte (A e B) in grado di gestire una corrente massima di circa 125 mA per gruppo e 20 mA per singola porta. Tale capacità risulta spesso insufficiente per pilotare direttamente carichi quali LED multipli o relè.

Driver di potenza – ULN2003

Per questo motivo si ricorre frequentemente all’utilizzo di componenti di interfaccia, come transistor o driver dedicati, in grado di gestire correnti più elevate. Nel caso specifico dei tre LED (rosso, giallo e verde), viene utilizzato un ULN2003, un driver di potenza a transistor Darlington utilizzato per pilotare carichi che un microcontrollore o un chip GPIO (come il MCP23017) non possono alimentare direttamente. Il dispositivo è in grado di gestire correnti fino a 500 mA, rendendolo adatto al pilotaggio di carichi che richiedono una corrente superiore rispetto a quella disponibile direttamente dalle uscite del microcontrollore o dell’expander.

Driver motori – PWM da 120W

Per il pilotaggio dei due motori, nella fase iniziale del progetto è stato erroneamente utilizzato un driver L298N. Tale soluzione si è però rivelata inadeguata, in quanto il driver era fortemente sottodimensionato rispetto alla corrente richiesta dai due motori 775, soprattutto nelle fasi di avviamento e sotto carico.

Questo ha reso necessario individuare una soluzione di pilotaggio più idonea, in grado di gestire correnti significativamente più elevate e garantire un funzionamento affidabile del sistema.

La scelta è quindi ricaduta su un regolatore di potenza PWM da 120W, ritenuto adeguato per il pilotaggio dei motori 775 utilizzati nel progetto. Questa soluzione consente di regolare la velocità di rotazione delle ruote in modo efficiente, garantendo al contempo una capacità di gestione della corrente compatibile con le esigenze del sistema.

Potenziometro encoder – KY-040

La regolazione della velocità dei motori, nel modulo PWM scelto, avviene originariamente tramite un potenziometro da 10 kΩ. Questa soluzione non è però compatibile con il tipo di controllo previsto dal progetto, nel quale la velocità deve essere gestita digitalmente dall’ESP32.

Per questo motivo si è deciso di sostituire il tradizionale potenziometro con un encoder rotativo KY-040. A differenza di un potenziometro, l’encoder non imposta direttamente un valore analogico, ma genera impulsi che vengono letti dal microcontrollore. In questo modo il valore di velocità desiderato viene acquisito dall’ESP32, che può elaborarlo e applicarlo secondo la logica di funzionamento del sistema, consentendo una gestione più flessibile e integrata dei parametri di lancio.

Quando l’albero dell’encoder viene ruotato, il dispositivo genera due segnali digitali, denominati CLK (clock) e DT (data), che vengono acquisiti dal microcontrollore. Analizzando la sequenza temporale di tali segnali, l’ESP32 è in grado di determinare sia l’avvenuta rotazione sia il verso della stessa (orario o antiorario).

L’encoder KY-040 integra inoltre un pulsante che viene azionato premendo il perno rotante. Questa funzionalità consente di utilizzare un unico componente sia per la variazione dei parametri sia per la loro conferma.

Il funzionamento adottato nel progetto prevede quindi la modifica del valore desiderato mediante la rotazione della manopola dell’encoder e la successiva conferma tramite la pressione del pulsante integrato (SW).

Lo schema elettrico prevede che i tre segnali dell’encoder (CLK, DT e SW) siano mantenuti a livello logico alto mediante resistenze di pull-up da 8,2 kΩ, come mostrato nello schema seguente.

Potenziometro digitale – MCP42010

Poiché il regolatore PWM richiede un tradizionale potenziometro analogico da 10 kΩ per l’impostazione della velocità, si è reso necessario individuare una soluzione che consentisse di interfacciarlo con il sistema di controllo digitale basato su ESP32.

A tale scopo è stato utilizzato un potenziometro digitale MCP42010, un circuito integrato dotato di due canali indipendenti da 10 kΩ, controllabili tramite interfaccia SPI. Il dispositivo

consente di convertire i valori digitali inviati dal microcontrollore in una resistenza variabile, emulando di fatto il comportamento di un tradizionale potenziometro.

In questo modo l’ESP32 può ricevere i comandi dell’encoder rotativo KY-040, elaborare il valore di velocità selezionato dall’utente e impostare di conseguenza la resistenza del MCP42010. Dal punto di vista del regolatore PWM, il potenziometro digitale si comporta esattamente come il potenziometro originale da 10 kΩ, consentendo una regolazione completamente elettronica della velocità dei motori.

Nello schema seguente è possibile osservare i collegamenti dell’interfaccia SPI provenienti dall’ESP32 verso il chip MCP42010, utilizzati per la configurazione del potenziometro digitale. Sono inoltre visibili le tre connessioni che replicano i terminali di un tradizionale potenziometro (A, W e B), attraverso i quali il dispositivo fornisce la resistenza variabile richiesta dal regolatore PWM.

La centralina è dotata di un display LCD da 20 colonne e 4 righe che consente la visualizzazione di un menu navigabile tramite un mini joystick. Attraverso tale interfaccia è possibile configurare tutti i principali parametri di funzionamento del lanciapalline, tra cui la velocità dei motori, gli angoli di lancio orizzontale e verticale, la cadenza di rilascio delle palline e altre impostazioni operative.

Come già descritto, l’utilizzo dell’expander MCP23017 si è reso necessario per compensare il numero limitato di GPIO disponibili sull’ESP32. Anche il display LCD tradizionale richiede infatti un elevato numero di collegamenti elettrici, rendendo poco efficiente il suo collegamento diretto al microcontrollore.

Display – LCD 2004

Per questo motivo è stata adottata un’interfaccia I²C per il display LCD, che consente di ridurre drasticamente il numero di connessioni necessarie. Grazie a questa soluzione, il display può essere collegato utilizzando le stesse linee I²C già impiegate da altri dispositivi del sistema, semplificando il cablaggio e preservando le porte GPIO disponibili per ulteriori funzionalità.

Joystick

Come già accennato, la navigazione all’interno del menu viene effettuata tramite un joystick. Poiché ogni direzione di movimento e la pressione del pulsante integrato corrispondono a ingressi distinti, il collegamento diretto avrebbe richiesto l’utilizzo di numerose porte GPIO del microcontrollore.

Per ridurre il numero di ingressi necessari, si è scelto di utilizzare una rete a partitore resistivo. Questa soluzione consente di collegare tutti i comandi del joystick a un unico ingresso analogico dell’ESP32.

Il principio di funzionamento è semplice: ogni volta che la leva viene spostata in una determinata direzione oppure premuta, viene selezionata una diversa combinazione di resistenze. Di conseguenza, il partitore genera in uscita un differente livello di tensione, che viene letto dal convertitore analogico-digitale del microcontrollore.

A ciascun comando del joystick corrisponde quindi un intervallo di tensione ben definito. L’ESP32, misurando il valore analogico presente in ingresso, è in grado di riconoscere quale direzione è stata selezionata o se il pulsante è stato premuto. Nel progetto i livelli di tensione sono stati dimensionati in modo da risultare approssimativamente multipli di una frazione della tensione di alimentazione pari a 3,3 V, garantendo una distinzione affidabile tra i vari comandi.

Solenoide assiale

Come anticipato in precedenza, per il lancio delle palline viene utilizzato un solenoide assiale da 12 V con una forza nominale di 25 N. Questo componente richiede, durante l’attivazione, una corrente relativamente elevata che non può essere erogata direttamente dalle uscite dell’ESP32.

Per questo motivo il pilotaggio del solenoide viene affidato a un MOSFET di tipo IRLZ44N. Il microcontrollore controlla il terminale di gate del MOSFET mediante un segnale a bassa corrente, mentre il transistor si occupa di commutare la corrente necessaria all’alimentazione del solenoide.

In questo modo è possibile utilizzare un segnale digitale proveniente dall’ESP32 per controllare un carico a 12 V e ad assorbimento elevato, senza sovraccaricare le uscite del microcontrollore e garantendo un funzionamento affidabile dell’intero sistema.