controllo PWM

ciao,
spero di non aver sbagliato sezione (non sapevo dove collocare la discussione).
Il mio problema è per adesso a livello concettuale. Ho qualche dubbio sul controllo PWM.
Ho un piccolo "fornetto" che ha un regolatore di potenza controllabile in PWM. Viene dichiarato che il segnale di controllo PWM va da 0 a 100 Hz. Immagino quindi che 0 Hz rappresenti 0% di potenza e 100Hz sia il 100% di potenza.
Ho fatto un po' di confusione su come avviene il controllo.
Intanto il ciclo di lavoro quanto dura?
Per rappresentare un segnale a 100Hz dovrei avere un ciclo di lavoro che dura 10 ms, giusto? Se il mio sistema di controllo genera, per esempio, campioni a 2000Hz (0,5 ms), vuol dire che ogni ciclo di lavoro (duty cycle) è rappresentato da 20 step temporali da 0,5 ms.
Mi chiedo allora, in questa situazione, posso eseguire un controllo di potenza a multipli del 5% o (dato che concettualmente sbaglio) posso avere una regolazione più fine? (es. con incrementi del 1%).

scusate per la banalità della domanda, ma sono andato un po' in tilt...

:o ... il PWM non cambia la frequenza, ma la percentuale di tempo in cui il segnale dell'onda quadra e' ad 1 rispetto a quella in cui e' a 0, la frequenza rimane la stessa ... sei sicuro di aver letto bene le specifiche ?

Infatti forse è questo che mi incasina.
Se ho un sistema di controllo con sample rate a 2000 Hz cosa vuol dire controllare un dispositivo che parla di "PWM input control: max 100Hz" ?
Se il comando è un'onda rettangolare con step temporali di 0.5 ms come rappresento i (max) 100Hz richiesti? (che richiederebbero step di 10 ms)

Questa mattina è uscita dalla mia bocca la parola "dicotomia" senza apparente motivo, strano, in più il significato non mi era chiaro e quindi mi sono documentato. Quindi dicotomizzo la tua domanda, cioè la divido in 2 parti.

  1. Qual'è il requisito del fornetto - Alimentazione a tensione non specificata di frequenza nel range 0÷100Hz. Questo significa la sorgente di alimentazione può essere in CC (corrente continua) corrispondente a frequenza 0Hz oppure in corrente alternata di frequenza massima 100HZ. Non viene specificato la forma d'onda richiesta per cui potrebbe essere quadra o sinusoidale, triangolare ecc. Ancora al momento nel requisito non ha senso di parlare di PWM.

  2. Segnale PWM - cos'è è come è fatto? - Circa questo argomento in rete trovi tante informazioni. La frequenza del segnale PWM è solitamente fissa, es 50Hz dalla frequenza ricavi il periodo T=1/F e vale anche F=1/T, infatti 1/50 = 0.02s (20ms), e ancora 1/0.02s = 50Hz. Nel segnale PWM T non cambia, ciò che varia è il rapporto pausa/impulso (duty cicle), quando vale 50% la pausa e l'impulso hanno identica durata di valore T/2, cioè 0.02 / 2 = 0.01 (10ms).

PS: attenzione al fatto che quasi certamente la fonte di energia con cui alimentare il fornetto sarà quella prelevabile dalle prese di casa la quale è tensione alternata sinusoidale di frequenza 50Hz e qui non è più possibile parlare di PWM almeno nel modo classico, poiché per PWM sorgente di energia è in CC.

Ciao.

Presumo (ebbene si, sono presuntuoso :stuck_out_tongue: :D) che il controller del suo fornetto abbia un'ingresso in bassa tensione per poter essere pilotato dall'esterno (altrimenti che senso avrebbe scriverci la frequenza massima del PWM ? ) ... e dato che in genere anche quei controller hanno una parte elettronica alimentata in continua, e' sempre probabile che anche il segnale PWM (che li e' specificato che puo avere al massimo la frequenza di 100Hz) sia da 0 alla tensione di alimentazione del circuito (o al massimo che ci sia un'opto, se e' fatto come si deve)

Pero' se l'OP ci desse almeno marca e modello, sarebbe piu facile controllare (senza dover presumere :wink: )

il "fornetto" (non commerciale) usa un gruppo statico di non so quale marca (e per adesso non ho avuto modo di verificarlo). Il segnale di controllo ha livello di tensione 24V, ma siccome può essere anche a 5V vorremmo fare delle prove usando hardware molto più semplice ed economico quale l'arduino (ma per adesso vorrei capire come avviene il controllo PWM).
Non sembra complicato il meccanismo di controllo PWM, o almeno l'idea sembra semplice. Ma ci sono alcuni aspetti che mi sfuggono. Per esempio, il duty cycle corrisponde alla % di tempo in cui il segnale resta alto rispetto alla durata del periodo dell'onda quadrata (e, sempre se non sbaglio, fin qui ok), ma se devo comandare a "max 100 Hz", questo cosa implica? Come dicevo nel precedente messaggio, avendo un sistema di controllo che genera campioni con sample rate molto maggiore (2000Hz) quanto deve durare il ciclo di lavoro per eseguire il controllo a "max 100Hz"?
Il dubbio è, come dipende questo dato (la massima frequenza del segnale di controllo) dal duty cycle del controllo PWM?
Pensandoci un po' sopra, la "spiegazione" che riesco a darmi è: max 100 hz vuol dire che viene quantizzato il tempo in intervalli di 10 ms, quindi ammettendo di avere un ciclo di lavoro di 1 secondo, mantenendo alto il segnale per l'80% del tempo del ciclo (cioè per 800 ms) avrò una potenza dell'80%; se invece il segnale resta alto per l'1% del tempo (cioè per 10 ms) avrò potenza 1%.
Quindi, il concetto "frequenza" è solo riferito al fatto che il sistema che legge il comando (a bordo del fornetto) può "accorgersi" di onde quadre di max 100hz (cioè della durata di 10ms). E' forse così?

Molto piu semplicemente, se quello e' realmente un'ingresso PWM, vuol dire che la circuiteria interna e' fatta in modo che al massimo puoi usare per il tuo PWM una frequenza di 100Hz, nient'altro (EDIT: e del resto, essendo un "forno" quindi avendo un'inerzia termica non indifferente, ad un regolatore elettronico pilotato in PWM basterebbero anche 10Hz, o addirittura solo uno, per funzionare comunque correttamente :wink: ) ... poi come principio non cambia nulla, che siano i tuoi 100Hz o i 100KHz di un'alimentatore switching, sempre il duty-cycle devi cambiare, non la frequenza ... poi per assurdo, per fare delle semplici prove, ti basterebbe un 555 in configurazione astabile a frequenza fissa di 100Hz o poco meno e con la regolazione del duty-cycle per generare un segnale PWM ...

avendo un sistema di controllo che genera campioni con sample rate molto maggiore (2000Hz) quanto deve durare il ciclo di lavoro per eseguire il controllo a "max 100Hz"?

Non è che sia molto chiaro, posto un link al sistema di controllo o allega le specifiche.

Parlando di sample rate potrebbe anche trattarsi della risoluzione T=1/2000Hz = 0,0005s ma solitamente questo dato viene specificato per un sistema di acquisizione dati A/D (Analogico/Digitale).

Quindi, il concetto "frequenza" è solo riferito al fatto che il sistema che legge il comando (a bordo del fornetto) può "accorgersi" di onde quadre di max 100hz (cioè della durata di 10ms). E' forse così?

Non potendo leggere la documentazione del fornetto non mi spingo fino alla affermazione, ma la cosa ha un senso e come dice Ete

e del resto, essendo un "forno" quindi avendo un'inerzia termica non indifferente,

Il Periodo T vale Toff + Ton, es a 100Hz se Ton = 1ms (0.001s) il duty cicle vale (Ton / T) x 100 = (0.001/0.01) x 100 = 10%, ancora (0.005/0.01) x 100 = 50%

Link:
duty cicle
Pulse-width modulation

Comunque tornando ad arduino; le api standard generano un PWM di frequenza non compatibile, per cui tocca usare il timer hardware ad es TIMER1 a 16 bit oppure TIMER2 ad 8 bit e manipolare direttamente i registri oppure ancora cercare una libreria che permetta di generare un PWM a frequenza desiderata. In ogni caso possiamo guidarti.

Ciao.

grazie ragazzi,
credo (spero) di aver capito meglio la cosa.
Il regolatore a bordo del fornetto accetta segnali con frequenza massima 100 hz, ma dovrò usare un segnale con una frequenza ben precisa. E' così? Oppure in linea di principio potrei cambiare quel segnale, partendo per esempio da un segnale a 1 hz (per regolazione lenta e grossolana) fino ad arrivare a 100 hz (per regolazione rapida e fine)?
Circa il duty cycle, se usassi un segnale a 1 hz, dovrei avere time step di 1 secondo, quindi il sistema si accorgerà di variazioni con quella velocità. Perciò se volessi fare una regolazione da 0 a 100% della potenza dovrei usare un ciclo di lavoro di 100 secondi, entro cui far variare (una volta al secondo) il periodi di accensione (es. potenza 73% = accensione per 73 s). Andando a 100 hz invece avrei step temporali da 10 ms perciò dovrei avere un ciclo di almeno 1 secondo; in tal caso, per rappresentare un comando "potenza = 73%" dovrei dare segnale alto per 730 ms.
E' corretto?
Anche avendo un generatore di segnale (il mio apparato di comando remoto) con sample rate a xxxxHz, non posso stare sotto i 10 ms di comando. Tuttavia, in ogni caso, posso avere una regolazione "continua" da 0 a 100% di potenza; quello che cambierà sarà il tempo entro cui può avvenire la variazione del comando.
O faccio ancora casino?

Perciò se volessi fare una regolazione da 0 a 100% della potenza dovrei usare un ciclo di lavoro di 100 secondi, entro cui far variare (una volta al secondo) il periodi di accensione (es. potenza 73% = accensione per 73 s). Andando a 100 hz invece avrei step temporali da 10 ms perciò dovrei avere un ciclo di almeno 1 secondo; in tal caso, per rappresentare un comando "potenza = 73%" dovrei dare segnale alto per 730 ms.
E' corretto?

Boooh, ma se Hz è la misura del numero di cicli presenti all'interno del tempo di 1 secondo e 50Hz vuole dire che ci sono 50 cicli al secondo, cosa ci entra 730ms.

Hai questo segnale a 100Hz e dcicle = 73%, Ton = 0.01*0.73 = 0.0073s, Toff=0.01-0.0073 = 0.0027s. Il periodo T = 0.0073 + 0.0027 = 0.01s.

Ciao.

Premesso che non ho le competenze di etem e mauro, provo a spiegarla come l'ho capita io...
Secondo me i 100Hz che hai da specifica sono la frequenza massima che il forno è in grado di leggere. Se stai entro quella frequenza sei tranquillo, se la superi il forno non è più in grado di leggere correttamente l'onda che mandi. Tutto qua.
Quindi, entro i 100Hz scegli tu la frequenza che ti pare per controllare il pwm.
Trattandosi di temperatura non credo che i tempi di reazione siano nell'ordine di pochi secondi... credo più probabile si possa parlare di molti secondi, se non addirittura minuti...
Credo che oltre al pwm in input per pilotare il forno, avrai anche un feedback in output che ti dice la temperatura attuale del forno...
Se è così, ipotizzando che devi arrivare a 100°C, parti col pwm al 100% (quindi segnale sempre alto) per far salire rapidamente la temperatura finché non arrivi ad esempio a 90°C, poi abbassi il duty cycle ad esempio al 50% così la temperatura sale più lentamente fino ad esempio a 98°C, poi abbassi ancora il duty cycle per regolare in maniera fine la tua temperatura. Poi raggiunta la temperatura impostata, dovrai solo mantenerla per il tempo che ti serve.
Tutti gli altr discorsi, secondo me, sono teoria pura che a livello pratico forse ti fa solo confusione.

PS: non uccidetemi se ho scritto solo cazzate...

Maurotec:
Boooh, ma se Hz è la misura del numero di cicli presenti all'interno del tempo di 1 secondo e 50Hz vuole dire che ci sono 50 cicli al secondo, cosa ci entra 730ms.

Hai questo segnale a 100Hz e dcicle = 73%, Ton = 0.01*0.73 = 0.0073s, Toff=0.01-0.0073 = 0.0027s. Il periodo T = 0.0073 + 0.0027 = 0.01s.

Ciao.

Intendevo, avendo una frequenza di 100hz, quindi step temporali di 10 ms, se mantengo alto il segnale per 73 step (quindi per 730 ms) avrei una potenza erogata del 73%.
Ma forse ho capito male come viene assegnato il periodo di lavoro.
I miei dubbi nascono dalla domanda, se un dispositivo è in grado di leggere un'onda quadra a 100 hz (che cambia stato ogni 5 ms, ovvero è per 5 ms alto e per 5 ms basso) è in grado o no di leggere la variazione di stato in 1 ms?
Ho capito che il duty cycle è definito come T_on/(T_on+T_off) ma se le variazioni sono più rapide di 10 ms, un sistema che dichiara "PWM input control: max 100Hz" riesce a leggere segnali più rapidi di 10 ms?
Per esempio, a 100 hz (periodo 10 ms), per avere un duty cycle del 10% dovrei mantenere alto il segnale di comando per 1 ms; ma 1 ms (1000Hz) come fa ad esser "visto" se viene detto "max 100Hz"?

fratt:
Se è così, ipotizzando che devi arrivare a 100°C, parti col pwm al 100% (quindi segnale sempre alto) per far salire rapidamente la temperatura finché non arrivi ad esempio a 90°C, poi abbassi il duty cycle ad esempio al 50% così la temperatura sale più lentamente fino ad esempio a 98°C, poi abbassi ancora il duty cycle per regolare in maniera fine la tua temperatura. Poi raggiunta la temperatura impostata, dovrai solo mantenerla per il tempo che ti serve.
Tutti gli altr discorsi, secondo me, sono teoria pura che a livello pratico forse ti fa solo confusione.

Volevo però capire come viene rappresentata l'informazione che viene inviata al dispositivo da controllare.

mikiti:
Volevo però capire come viene rappresentata l'informazione che viene inviata al dispositivo da controllare.

Sempre spiegato terra terra, il pwm è un'onda quadra. Con duty cycle al 100% è sempre alta, con duty cycle al 50% è metà del tempo alta e metà del tempo bassa.
In pratica è come se per accendere una lampadina a metà della sua potenza tu continuassi ad accendere e spegnere per intervalli uguali...

mikiti:
Volevo però capire come viene rappresentata l'informazione che viene inviata al dispositivo da controllare.

C'è anche un tutorial ufficiale Arduino ... QUI ...

Guglielmo

Devi considerare una singola onda quadra tra il primo fronte di salita e il successivo.
Il tempo che rimane alta di da la potenza del forno.
Per mantenerlo ad una certa potenza devi continuamente mandare un adeguato segnale PWM. Non contano quati singoli impulsi mandi per determinare la potenza di riscaldamento.

mikiti:
il "fornetto" (non commerciale) usa un gruppo statico di non so quale marca (e per adesso non ho avuto modo di verificarlo). Il segnale di controllo ha livello di tensione 24V, ma siccome può essere anche a 5V vorremmo fare delle prove usando hardware molto più semplice ed economico quale l'arduino (ma per adesso vorrei capire come avviene il controllo PWM)........

Se non sai marca e modello di questo "gruppo statico" come fai a sapere che funziona in PWM, c'è una etichetta ? Secondo me prima dovresti trovare almeno un minimo di documentazione e farcela vedere, fornisci almeno foto e altre informazioni perchè in questo modo NON si lavora

intanto, grazie a tutti per le delucidazioni.

Arco_500:
Devi considerare una singola onda quadra tra il primo fronte di salita e il successivo.
Il tempo che rimane alta di da la potenza del forno.
Per mantenerlo ad una certa potenza devi continuamente mandare un adeguato segnale PWM. Non contano quati singoli impulsi mandi per determinare la potenza di riscaldamento.

Sì, il mio "incasinamento" nasceva dal fatto che il segnale ha una frequenza (che però resta fissa). Mi chiedevo, "ma se la frequenza è 100 hz (durata 10 ms), con un duty cycle del 10%, non è come vedere un segnale a 1000Hz?". Ma, come giustamente dici, il periodo è fra un fronte di salita e il successivo. La perplessità era più legata a come fa il dispositivo comandato a leggere la durata del livello alto (ragionavo in termini di campionamento): quel "max 100Hz" mi faceva pensare che il dispositivo comandato non riuscisse a vedere segnali più rapidi (es. segnale alto per 1 ms, poi segnale basso per 9ms)...
Però mi pare di capire che il segnale ha un certo periodo (es 10 ms se a 100Hz) e in quel periodo posso mantenerlo alto (da cui segue il concetto di duty cycle).
Il problema che avevo con il dispositivo che deve generare l'onda quadra (massimo 0,5 ms) l'abbiamo risolto semplicemente abbassando la frequenza del segnale PWM (andando a 10 Hz), aumentando così la precisione della modulazione.

grazie a tutti e scusate per la banalità del post.
Se avrò qualche altra perplessità saprò a chi rivolgermi... :slight_smile:

Per quello che ne so il fornetto all'ingresso del PWM ha una resistenza e un condensatore, dove la tensione presente varia in base al duty cycle più tempo sta alta maggiore sarà la tensione sul condensatore, e in base alla tensione sul condensatore regola la potenza.