Pubblicato 2026-02-14
Ehi amici! Stai per utilizzare il segnale PWM (Pulse Wide Modulation) per controllare ilservo, ma hai problemi a selezionare il timer? Soprattutto quando vedi qualcuno su Internet che dice "devi usare un timer avanzato", ti fa sentire come se avessi fretta? Non preoccuparti, oggi ti spiegheremo chiaramente questo argomento e ti garantisco che capirai cosa scegliere dopo averlo ascoltato.
In realtà, questo è un enorme malinteso. Il segnale PWM richiesto dalservoè, per dirla senza mezzi termini, un'onda quadra con un periodo di 20 ms e un tempo di alto livello variabile tra 0,5 ms e 2,5 ms. Questo requisito sembra scoraggiante, ma per la maggior parte dei timer ordinari è semplicemente un gioco da ragazzi.
Se ci pensi, ciò che i timer ordinari sanno fare meglio è la funzione di confronto dell'output e la modalità PWM. Finché può generare un'onda PWM con una frequenza di 50 Hz (ovvero un periodo di 20 ms) e il ciclo di lavoro può essere regolato con precisione tra il 2,5% e il 12,5%, è completamente sufficiente. I timer più comuni dei computer a chip singolo sul mercato hanno questa capacità.
A questo punto potresti chiederti: qual è il significato dell'esistenza di timer avanzati? Le sue straordinarie funzioni, come l'uscita complementare, il controllo della zona morta e le funzioni di frenatura, sono predisposte principalmente per il controllo di apparecchiature complesse come motori e inverter.
Ad esempio, se stai realizzando un driver per motore brushless e devi controllare contemporaneamente gli interruttori del tubo MOS dei ponti superiore e inferiore, allora dovrai utilizzare le funzioni di controllo dell'uscita complementare e della zona morta del timer avanzato. E quando controlliamo il servo, abbiamo solo bisogno di un semplice segnale PWM, che è come uccidere un pollo con un coltello, il che è completamente inutile.
Dato che è sufficiente un normale timer, a cosa dovremmo guardare nella scelta? ️ Per prima cosa guarda la risoluzione del timer, che è la precisione minima di regolazione del ciclo di lavoro che può raggiungere. Per il servo, una precisione di controllo di 0,5° richiede una risoluzione temporale di circa 20 microsecondi, che può essere facilmente soddisfatta dalla maggior parte dei timer a 16 bit.
️ In secondo luogo, guarda il numero di timer. A volte potrebbe essere necessario controllare più servi in un progetto. Non puoi lasciare che tutti usino canali diversi dello stesso timer, giusto? Devi contare in anticipo quanti timer comuni sono disponibili sul tabellone per evitare di rimanerli in seguito.
Quelli tradizionali sul mercato ora includono STM32, GD32 ed ESP32, ma le loro situazioni non sono le stesse. Prendendo come esempio la serie più utilizzata, i suoi timer avanzati sono TIM1 e TIM8, mentre i suoi timer ordinari sono TIM2, TIM3, TIM4 e TIM5. Non è un problema usare questi ultimi per controllare i servi.
Se utilizzi ESP32, ciascuno dei suoi timer può essere configurato in modo flessibile ed è presente anche un modulo LEDC (controllo LED) dedicato, che è essenzialmente un potente generatore PWM. Quindi, sia che tu stia sviluppando utilizzando IDE o ESP-IDF (Internet of Things Development Framework), puoi pilotare il servo semplicemente trovando un canale timer.
La connessione hardware è molto semplice. Basta collegare la linea del segnale del servo direttamente al pin di uscita PWM del microcontrollore. Prestare attenzione alla massa comune, ovvero collegare insieme il GND (filo di terra) dei due. In termini di alimentazione, i servi piccoli possono utilizzare direttamente i 5 V della scheda di sviluppo, mentre i servi più grandi è meglio alimentarli separatamente.
La chiave per la configurazione del codice è impostare il periodo del timer su 20 ms, quindi calcolare il valore di confronto corrispondente in base all'angolo del servo desiderato. Ad esempio, 0° corrisponde a un livello alto di 0,5 ms e il valore di confronto è il 2,5% del valore di conteggio del timer. Questi hanno funzioni già pronte nella libreria standard o nella libreria HAL (Hardware Abstraction Layer Library), basta seguire le routine e modificarle.
Ho visto molti amici inciampare su questo problema. L'errore più comune è dimenticare di controllare la frequenza dell'orologio del timer, con il risultato che i valori di confronto calcolati sono imprecisi. Ad esempio, l'orologio del timer è 72 MHz e la frequenza del contatore dopo la prescaling è 1 MHz. Questo conteggio è di 1 microsecondo. Se desideri un livello elevato di 1,5 ms, imposta il valore di confronto su 1500. È facile da calcolare.
Un'altra trappola è il conflitto dei pin PWM. I pin dei canali di alcuni timer potrebbero essere occupati da altre periferiche o potrebbero non essere individuati sulla scheda. Quindi, prima di scegliere un timer, è meglio guardare lo schema e assicurarsi che i pin che intendi utilizzare siano liberi.
Dopo aver letto questo, hai già un’idea? Per la necessità di azionare il servo, il normale timer è sicuramente sufficiente. Non è necessario tenere d'occhio il timer avanzato. Naturalmente, per decidere quale chip scegliere e quale timer utilizzare, è meglio scaricare la scheda tecnica e le note applicative dal sito ufficiale dell'azienda corrispondente e dare un'occhiata più da vicino. A proposito, che tipo di microcontrollore stai utilizzando adesso e quanti servi intendi controllare? Ti invitiamo a lasciare un messaggio nell'area commenti per condividere il tuo progetto e comunichiamo e facciamo progressi insieme! Se trovi utile questo articolo, non dimenticare di mettere mi piace e condividerlo con più amici che ne hanno bisogno.
Tempo di aggiornamento: 2026-02-14
Contatta lo specialista di prodotto Kpower per consigliare il motore o il riduttore adatto al tuo prodotto.