Allenarsi a tennis con un lancia palline è un metodo utile ed economico per fare progressi nel gioco.
Quello che trovo affascinante nel tennis è la sfida individuale, fatta di strategia, forza, sensibilità, coordinazione e gesti eleganti.
Praticare questa disciplina richiede allenamento costante e coordinazione; per ottenere risultati soddisfacenti sono necessarie molte ore di pratica sul campo e diverse lezioni con un maestro.
Il maestro di tennis è fondamentale per impostare correttamente il colpo, ma sono soprattutto le sessioni di allenamento a permettere di assimilare il posizionamento sulla palla, la coordinazione del corpo e i movimenti che portano all’esecuzione del tiro.
Senza questa pratica, si rischia di tornare dal maestro senza aver realmente compreso come eseguire il colpo, rendendo necessario correggere nuovamente l’impostazione durante la lezione.
Il lancia palline consente invece di ripetere il movimento molte volte, fino a padroneggiare il diritto, il rovescio e tutti i colpi fondamentali.
L’idea è quella di svilupparlo internamente, sia come sfida personale sia per avere la possibilità di evolverlo e personalizzarlo liberamente nel tempo.
La sua realizzazione richiede la progettazione sia della parte hardware, costituita dal telaio e dall’elettronica, sia della componente software.
La componente hardware ha l’obiettivo di lanciare le palline oltre la rete del campo da tennis con angolazioni, velocità e rotazioni (spin) configurabili. La parte software, invece, si basa su un microcontrollore incaricato di gestire la velocità dei motori e gli altri parametri di funzionamento del sistema.
In questo primo progetto è stato realizzato un prototipo che, come vedremo, si è rivelato fondamentale per individuare alcune criticità successivamente risolte nel secondo progetto.
Al momento della stesura di questo articolo, la fase costruttiva è ancora in corso. Per questo motivo verranno descritti i passaggi previsti nelle fasi successive e l’articolo sarà progressivamente aggiornato con ulteriori approfondimenti e sviluppi del progetto.
Costruzione del telaio
La struttura è composta da due cornici che, nella prima versione del progetto, erano state realizzate in alluminio e assemblate mediante staffe avvitate. Questa scelta era stata dettata principalmente dalla scarsa esperienza nell’utilizzo della saldatrice.
Tale soluzione ha però evidenziato alcuni limiti: durante il funzionamento, le vibrazioni tendevano ad allentare progressivamente le viti, compromettendo la stabilità e la rigidità dell’intera struttura.
Nel progetto successivo si è quindi optato per l’impiego di profili rettangolari in ferro 30 x 20 mm saldati tra loro. Questa soluzione garantisce una maggiore robustezza strutturale, riduce sensibilmente gli effetti delle vibrazioni e risulta più semplice da realizzare, poiché il ferro è un materiale particolarmente adatto alle operazioni di saldatura.
Sulla cornice interna sono montate le due ruote che hanno il compito di comprimere e lanciare la pallina da tennis.
La cornice interna è imperniata sulla cornice esterna, consentendo così la rotazione sul piano verticale (tra 0 e 60 gradi) e permettendo di variare l’angolo di lancio della pallina.
A sua volta, la cornice esterna è incernierata al telaio principale nella parte superiore e inferiore, consentendo la rotazione dell’intero gruppo di lancio sull’asse orizzontale, con un’escursione compresa tra -30° e +30°, e permettendo così il corretto orientamento del sistema.
Nella prima versione del progetto, la cornice interna era incernierata a quella esterna in posizione centrale. Questa configurazione ha però reso necessaria la realizzazione di un’incavatura nella struttura esterna, al fine di consentire alla ruota superiore di muoversi liberamente durante la rotazione.
Nella nuova versione, invece, il punto di rotazione è stato spostato nella parte superiore della cornice. Questa scelta ha permesso di mantenere lineare la struttura esterna, semplificandone la realizzazione e aumentandone la robustezza.
Come contropartita, durante il movimento di inclinazione verticale del gruppo di lancio, la parte inferiore della cornice interna sporge maggiormente all’esterno del box, richiedendo quindi una maggiore attenzione nella progettazione degli ingombri.
Le due ruote utilizzate nella versione iniziale avevano un diametro di 120 mm e consistevano in tipiche ruote in plastica con superficie esterna convessa. Questa conformazione non garantiva un’adeguata precisione nella direzione della pallina.
Per questo motivo si è deciso di sostituirle con ruote di diametro inferiore, pari a 100 mm.


Inoltre, sulla parte esterna verrà applicato un elemento toroidale realizzato in PLA tramite stampa 3D, caratterizzato da un incavo studiato appositamente per guidare la pallina e migliorarne la precisione di lancio.
Un’ulteriore modifica ha riguardato il sistema di cadenza del lancio delle palline.
Nella versione iniziale era stato scelto l’utilizzo di due servomotori in alternativa al classico sistema basato su un disco rotante forato, utilizzato per il rilascio sequenziale delle palline tra le due ruote. I servomotori erano collegati a un tubo tramite supporti realizzati in stampa 3D; ciascun servo azionava una piccola paletta che, in modo sincronizzato, regolava la discesa delle palline verso il sistema di lancio.

Tuttavia, entrambe le soluzioni presentavano dei limiti: la pallina entrava tra le ruote principalmente per effetto della gravità, rendendo difficile il controllo in condizioni di inclinazione elevata e impedendo il raggiungimento di angoli di lancio estremi.
La nuova soluzione prevede invece l’utilizzo di un solenoide assiale, un componente in grado di generare lo spostamento di un pistoncino mediante una breve attivazione elettrica. Il pistoncino verrà quindi utilizzato per spingere attivamente la pallina tra le due ruote, consentendo il funzionamento anche a inclinazioni più elevate.

La corrente massima assorbita durante l’azionamento del solenoide è di circa 400 mA per ogni impulso, un valore del tutto accettabile per l’applicazione. È infatti importante che, nel momento in cui la pallina viene spinta tra le ruote, non si verifichino cali significativi di tensione o corrente che possano ridurre la velocità di rotazione dei motori e, di conseguenza, la potenza di lancio della pallina.
Considerando che il sistema è alimentato da una batteria per motociclo da 9 Ah, la riserva energetica disponibile dovrebbe essere più che sufficiente a garantire il corretto funzionamento dell’intero dispositivo.
Nell’eventualità in cui l’assorbimento del solenoide o la compressione della pallina tra le ruote dovessero causare una riduzione della velocità di rotazione dei motori e, conseguentemente, della velocità di lancio, si potrebbe valutare l’impiego di un volano.
L’aggiunta di una massa volanica consentirebbe infatti di accumulare energia cinetica durante il funzionamento e di rilasciarla nei brevi istanti in cui il sistema è soggetto a maggiori richieste di potenza, contribuendo a mantenere più costante la velocità delle ruote e quindi la regolarità dei lanci.
Le staffe utilizzate per fissare il motore su un lato della cornice interna e il cuscinetto sul lato opposto sono state realizzate mediante stampa 3D, così da ottenere componenti perfettamente adattati alle dimensioni e alle esigenze specifiche del progetto.

Si è riscontrato tuttavia un problema: le staffe realizzate in PLA non garantivano una rigidità sufficiente. Le elevate velocità di rotazione delle ruote generavano infatti vibrazioni che venivano amplificate dalla flessibilità del materiale, compromettendo la stabilità dell’intera struttura e influenzando negativamente la precisione del sistema di lancio.


Per questa ragione, nel nuovo telaio si è deciso di utilizzare profili in ferro. Una coppia di tali profili verrà saldata direttamente alla cornice interna, mentre una seconda coppia sarà invece fissata tramite viti.
Questa soluzione consente di regolare con maggiore precisione la distanza tra le ruote, ottimizzando il grado di compressione della pallina durante il passaggio tra le stesse e migliorando così l’efficacia e la consistenza del lancio.
Centralina
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.

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.

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è.
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 usato per pilotare carichi che un microcontrollore o un chip GPIO (come il MCP23017) non possono alimentare direttamente.

Inoltre, questi dispositivi 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è.
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 120 W, 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.

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.

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.
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à.

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.

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.

Lascia un commento