Pagina 1 di 3

STM32 PWM in quadratura

MessaggioInviato: 3 giu 2025, 10:36
da Had3s
Buongiorno, qualcuno più esperto di me saprebbe dirmi se c'è un modo di ottenere due segnali PWM in quadratura in uscita da due pin di un chip stm?
Sto usando una scheda nucleo-f401re.

Re: stm32 PWM in quadratura

MessaggioInviato: 3 giu 2025, 12:58
da EcoTan
Premesso che di stm32 non so nulla, noto che parli di segnali PWM in quadratura, non in controfase, pertanto suppongo che il segnale abbia un suo andamento periodico (che non c'entra con la frequenza del PWM essendo necessariamente più lento di quella).
In generale occorre spezzare il periodo in 4 parti, o quadranti, successivi:
Quadrante 1 - massimo del segnale 1
Quadrante 2 - massimo del segnale 2
Quadrante 3 - minimo del segnale 1
Quadrante 4 -minimo del segnale 2
Scambiando min-max di un segnale cambia il verso di rotazione.
Queste operazioni, che io sappia, vanno affidate al firmware.

Re: stm32 PWM in quadratura

MessaggioInviato: 3 giu 2025, 17:24
da gill90
So che la famiglia F334 ha la possibilità di usare sia un HRTIMER (DPWM ad altissima risoluzione, intorno ai 200ps), sia timer advanced/general purpose con una funzione dedicata chiamata "combined PWM" che fa esattamente quello che cerchi tu (un PWM allineato con l'inizio, l'altro che si attiva dopo un delay fisso).

Purtroppo leggendo il datasheet del tuo modello mi pare che questa funzione non ci sia, per cui direi che la soluzione più immediata è quella di usare un timer come master che genera un trigger (ad es. TRGO) quando raggiunge un certo livello (nel tuo caso, un output compare posto a 1/4 del tuo periodo), e un altro timer in modalità slave che si resetta quando sopraggiunge il TRGO, così da sincronizzarsi dove ti serve.

Posso chiederti a cosa ti serve e che risoluzione richiedi?

Re: stm32 PWM in quadratura

MessaggioInviato: 3 giu 2025, 18:08
da Had3s
gill90 ha scritto:
Posso chiederti a cosa ti serve e che risoluzione richiedi?


è un caso studio di fattibilità per verificare quanto si può andare veloci con questo micro, in teoria il passo successivo è usarlo con un encoder ad alta risoluzione che usa segnali in quadratura.
Lo scopo per il momento è proprio verificare la risoluzione massima ottenibile con questo.

Re: stm32 PWM in quadratura

MessaggioInviato: 3 giu 2025, 19:30
da MarcoD
è un caso studio di fattibilità per verificare quanto si può andare veloci con questo micro, ...
Lo scopo per il momento è proprio verificare la risoluzione massima ottenibile con questo.

Sono poco competente, e forse la mia terminologia è obsoleta, ma cosa ti aspetti?
Due segnali in quadratura di frequenza
1 MHz, 100 kHz oppure 10 kHz ?

con quali dissimmetrie (jitter ? ) di sfasamento?

Con una risoluzione nella variazione di frequenza di 1 kHz o 10 kHz?

Re: stm32 PWM in quadratura

MessaggioInviato: 3 giu 2025, 19:47
da luxinterior
In effetti non è molto chiaro cosa chiedi
prima chiedi come generare due PWM in quadratura
poi parli di encoder
Non ho capito se vuoi leggere un encoder o generare due PWM.

LSTM32 ha timer molto sofisticati sicuramente c'è il modo per gestire le PWM Probabilmente esiste qualche appnoe da cui trarre ispirazione
La lettura encoder può avvenire con interfaccia dedicata su alcuni delgi Nmila STM32 bisogna verificare se il 401 può farlo.

Se cerchi encoder ad altar sioluzione (finoa 24bit) non sono encoder con i classici segnali ABZ ma hanno un interfaccia SSI che NON è SPI.

Perdi un paio di minuti per descrivere bene cosa ti serve pi qualcuno che ti aiuta si trova.

Re: stm32 PWM in quadratura

MessaggioInviato: 4 giu 2025, 11:45
da Had3s
Mi scuso poiché sono stato poco chiaro, in effetti la questione è un poco confusa di per sé, questa cosa che sto facendo col PWM è solo un esercizio nell'attesa che arrivi l'encoder...

ringrazio comunque tutti per l'attenzione e gli spunti, mi sono messo a fare dei tentativi vediamo che esce fuori..

Re: stm32 PWM in quadratura

MessaggioInviato: 4 giu 2025, 11:56
da MarcoD
questa cosa che sto facendo col PWM è solo un esercizio nell'attesa che arrivi l'encoder...

Quindi stai realizzando un simulatore di un encoder, presumo per collaudare il circuito/software di lettura/decodifica dei segnali generati dall'encoder fisico.
E' una cosa buona e giusta =D>
Io, che non saprei come farlo bene, lo farei con uno sketch arduino, eseguendo un loop con periodicità 1 ms, con due pulsanti "+" e "-" comando aumenta/diminuisci della frequenza.
Quando la frequenza passa per lo zero (l'encoder simulato si ferma e inverte il moto) lo sfasamento fra i due segnali inverte polarità.

Re: STM32 PWM in quadratura

MessaggioInviato: 4 giu 2025, 12:22
da EcoTan
Per fare un esempio (a me noto), le MCU dsPic33 tipo MC hanno un modulo denominato QEI per encoder in quadratura che fornisce direttamente in un registro la posizione decodificata. Si può fare anche a software usando i normali ingressi digitali ma non è tanto semplice e finisce per consumare più risorse.

P.S. se poi parliamo di velocità, penso che il modulo hardware sia imbattibile

Re: STM32 PWM in quadratura

MessaggioInviato: 4 giu 2025, 16:23
da luxinterior
Simulare un encoder è cosa buona e giusta.
Spesso la macchina con l'encoder fisico è ferma per qualche intervento meccanico opoure in fase di collaudo puoi collaudare automazione senza avere la macchina a disposizione, o dover "accrocchiare" qualcosa per far girare un encoder

I segnali encoder non sono PWM (che è frequenza fissa e duty cycle variabile) Il segnale encoder varia in frequenza mantenendo il segnale sempre 50%periodo alto e 50% del periodo basso. Quindi se tu vuoi simulare l'encoder con i timer STM32 devi variare il clock o il preset che divide il clock dei timer non il set del Timer
So che non è chiaro per esempio
tu imposti li timer set a 100 ogni volta che il timer conta 100 commuta un pin. Se cambi la frequenza del timer arriva a 100 più rapidamente e vedi le commutazioni più veloci ma sempre 50% alto e 50% basso.