Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
saviothecnic

Cercasi Volontari Per Automazione Camera Fermentazione Con Arduino

81 posts in this topic

Ciao ragazzi mi sebra che il thread si sia fermato a luglio ..qualche progresso ?

 

Si hai ragione è un po fermo anche io sono preso con il MastroBirraio Clone e relativa Elettronica Birraduino

Ma come HW per la camera di fermentazione ho fatto la struttura e sono a buon punto con la meccanica del mastrobirraio clone

 

per me ancora open al di la delle funzionalita' piu' o meno accessorie come realizzare il circuito di potenza e interfaccia alle celle

 

ovvero dall'usicta PWM del nostro arduino ...alle celle 

 

A macro blocchi vedevo bene usare una shield gia' fatta tipo H-bridge di controllo di un motore (ce ne sono che reggono decine di ampere) ma mi piacerebbe capire come interfacciarlo ad arduino non tanto dal punto di vista HW ma dal punto di vista della logica di controllo: frequenza PWM, inversione caldo freddo etc etc..

 

I Più quotati sono AriaG25e o Arduino Mega 2560 se mi da una Mano Niki per la parta firmware adesso sta facendo il BirraDuino sicuramente sarà  su AriaG25E

e li credo che non abbiamo limiti su quello che si puo fare si potrebbe anche mandare in WiFi con un modulo da 7€ e comandarlo o controllarlo da Cell Android o via Web

Io intanto sto ordinando il modulo Aria cosi da tenermelo pronto appena siamo pronti per i Test

 

Per le Peltier tu sei quello che hai più esperienza se ci fai uno schema a blocchi del miglior sistema per usarle vedo d'interfacciarmi e farti sapere la fattibilità  HW e Software ;)

 

Grazie

Share this post


Link to post
Share on other sites

Si hai ragione è un po fermo anche io sono preso con il MastroBirraio Clone e relativa Elettronica Birraduino

Ma come HW per la camera di fermentazione ho fatto la struttura e sono a buon punto con la meccanica del mastrobirraio clone

 

 

I Più quotati sono AriaG25e o Arduino Mega 2560 se mi da una Mano Niki per la parta firmware adesso sta facendo il BirraDuino sicuramente sarà  su AriaG25E

e li credo che non abbiamo limiti su quello che si puo fare si potrebbe anche mandare in WiFi con un modulo da 7€ e comandarlo o controllarlo da Cell Android o via Web

Io intanto sto ordinando il modulo Aria cosi da tenermelo pronto appena siamo pronti per i Test

 

Per le Peltier tu sei quello che hai più esperienza se ci fai uno schema a blocchi del miglior sistema per usarle vedo d'interfacciarmi e farti sapere la fattibilità  HW e Software ;)

 

Grazie

 

 

Si si vi seguo assiduamente (e appassionatamente) sia sul thread in questo forum che su quello di arduino...

posso dire una cosa ??  

VI HO PERSO... :fool:

troppe versioni, troppe release, troppe varianti...

Mi sono messo di impegno a leggere tutto il thread su Birrarduino UNO ma a un certo punto ho perso il filo...e se dovessi dire dove e come sono la versione stabile e definitiva di HW e FW non so dove cercarla

 

Mio suggerimento e' fare da qualche parte una tabella di riepilogo delle versioni/opzioni stabili con relativi link a scehmatici e firmware

 

Chiusa la parentesi sul Mastro Birraio (nel frattempo continuo a cuocere con la versione PID sestos.. ;)  ;) )e in attesa di capire quale versione di controller implementare torno sulla camera di fermentazione...sul core ovvero controllo del gruppo frigo a celle

 

Hai ragione...provo a buttare giu' uno schema a blocchi e un pseudocodice con la logica per il controllo

Giusto come ipotesi di lavoro parto dalle funzionalita' di una scheda driver di potenza gia' fatta (per motori DC) e poi capiamo se vale la pena implementarla in HW in una shield specifica

 

ad esempio questa della Pololu

 

0J1025.600.jpg?9823b1c6c6554813081841b19

 

H-bridge 5-30V 15A con 4 mosfet N-channel 

 

Link alle specifiche

 

In piu' occorre controllare 

-ventola sempre PID/PWM

-pompa nel caso aria/h20 (non so se ha senso PID/PWM)

 

a breve uno schema

Davide

Edited by mysobry

Share this post


Link to post
Share on other sites

Ho provato a mettere giu' uno schema a blocchi del controllo di temperatura basato su arduino + peltier (in questa fase irrilevante se gruppo firgo ad aria o aria/h2o)

 

La logica di controllo PID dovrebbe generare un segnale proporzionale alla differenza tra set point e temperatura misurata in ingresso al blocco PWM che dovrebbe variare di conseguenza il duty cycle da 0 a 100% di un segnale ttl a una frequenza possibilmente regolabile.

Tale segnale dovrebbe pilotare il modulo di potenza h-bridge 

 

In parallelo un analogo controllo si dovrebbe applicare a uno a piu' ventole in modo da avere una velocità  di rotazione congrua con la potenza applicata. In questo caso il segnale PWM può pilotare direttamente un mosfet

 

Drawing3.jpg

che ve ne pare...mi sembra abbastanza "lineare"

 

 

I punti che vorrei capire sono

 

1) come gestire inversione caldo freddo

i moduli di potenza tipo quello della pololu hanno un ingresso "direction" usato per invertire la rotazione del motore e quindi il flusso della corrente

tale ingresso dovrebbe essere pilotato dalla logica PID in qualche modo ovvero avvicinandosi set point il duty cycle dovrebbe ridursi a zero, cambiare stato del pin direction e poi aumentare di conseguenza duty cycle invertendo quindi da caldo a freddo

Immagino vada messa comunque qualche isteresi per evitare di far oscilare le celle da caldo a freddo in prossimità  del set point

 

Ci sono anche moduli h-bridge che non hanno questo pin...ma sfruttano il segnale PWM: al 50% di duty cycle non scorre nessuna corrente, al 100% massima corrente in un senso , 0% massima corrente nel senso opposto. Piu' semplice la gestione del PID in questo caso ??

 

 

2) Frequenza del PWM

Nell'ipotesi di cui sopra la frequenza del PWM e' dalta direttamente da Arduino che genera il segnale. C'e' modo di controllare la frequenza del PWM. E' importante trovare frequenze giuste perche' efficienza delle celle e' legata a tale parametro (qualche centinaio di Hz massimo qualche Khz)

 

anche per la frequenza ci sono moduli che in realta' non sono pilotati direttamente dal segnale PWM ma hanno ingressi seriali e una logica di controllo dedicata. In tale caso il controller dovrebbe mandare tramite interfaccia seriale dei "comandi" al modulo h-bridge che genera il segnale PWM di controllo. Tipicamente la frequenza e' controllabile tramite comandi seriali. 

 

pololu motor driver

 

0J2880.600.jpg?202f86cacd5720b59b896f124

 

La prima soluzione mi sembra piu' semplice e il modulo h-bridge si limita a fare il lavoro di switch di potenza. Nel secondo caso il controllo e' molto piu' fine e sofisticato (vedi modulo pololu sotto riportato) ma la logica di Arduino dovrebbe essere molto diversa..il PID genera non un segnale PWM ma comandi seriali

 

un po' di opzioni da chiudere e poi si puo' provare a scrivere qualche riga di SW...magari con l'aiuto delle persone del forum di arduino che vi stanno aiutando per il brauduino

 

Davide

Edited by mysobry

Share this post


Link to post
Share on other sites

Che cosa intendi per frequenza del PWM? quello che conta nel PWM non è quanta parte di onda viene tagliata, più che la frequenza del segnale?

Secondo me comunque è meglio mantenere un hardware più semplice a scapito della parte software, che il contrario. quindi eviterei di comandare l'H-bridge con la seriale. Stessa cosa vale per l'inversione caldo-freddo.

Share this post


Link to post
Share on other sites

Ho provato a mettere giu' uno schema a blocchi del controllo di temperatura basato su arduino + peltier (in questa fase irrilevante se gruppo firgo ad aria o aria/h2o)


un po' di opzioni da chiudere e poi si puo' provare a scrivere qualche riga di SW...magari con l'aiuto delle persone del forum di arduino che vi stanno aiutando per il brauduino

 

Davide

 

Per il BrauDuino e Birraduino Se vedi è ancora tuto in test la versione definitiva si avranno solo le tre max 4 schede e nel FW Birraduino ci saranno solo le schield definitive

E ovvio che ora in fase di test per chi non è adetto nello sviluppo è un po ostica la cosa ma finito sara tutto chiarissimo :D

 

Domanda Tu che gli hai sottomano mi posti uno schema meccanico di come si costruisce un unita di scambio con le Peltier ?

Voglio capire quando convenga farla o se convenga prendere un gruppo gia fatto come quello che ti ho postato in un altor topic

Ma contando che ho gia dentro celle alimentatori alette ecc ecc credo che mi convenga farmela da me :D

 

Premetto che come controllore sarà  o un Aria 25GE o un Arduino Mega 2560

Quindi puoi levare quel Uno dallo schema a Blocchi che sicuro non si usera :P "Scherzo tanto è una cosa grafico gia cosi come schema è piu chiaro Grazie"

 

Come Ponte io andrei sul autocostruito che con 40€ di compo vedendo il costo di quello che hai postato te ne fai uno veramente potente

e ovviamente riparabile vi riporto questo schema che ho messo qualche post dietro che a me non sembra male che ne dite forse prima non ci avete fatto caso ?

 

http://circuit-diagram.hqew.net/Full-H-Bridge-10A-IR2104-H-Bridge-Mosfet-IRF540_14751.html

 

P.S come ipotizzato ad inizio topic il controllore avra sia due uscite rele secche per comandare un sistema classico con compressore frigo e resitenza

e relative due ventole di circolazione e una PWM per un ipotetizo utilizzo secocn con rele gruppo grigo e PWM per la resistneza.

 

Piu la relativa uscita per la gestione in Modalita Peltierr o Mista quindi:

Il software chiedera all' inizio se il sistema è classigo frigo resistenza o frigo restistenza in pwm o solo peltrier o misto frigo peltier e di conseguenza

farà  i duoi controlli per le ventole il PID mi pare eccessivo credo che basta un controllo PWM in modo da usare comuni ventole 12 o 230V non credi ?

Edited by saviothecnic

Share this post


Link to post
Share on other sites

Che cosa intendi per frequenza del PWM? quello che conta nel PWM non è quanta parte di onda viene tagliata, più che la frequenza del segnale?
Secondo me comunque è meglio mantenere un hardware più semplice a scapito della parte software, che il contrario. quindi eviterei di comandare l'H-bridge con la seriale. Stessa cosa vale per l'inversione caldo-freddo.


Il segnale PWM ha una sua frequenza ! Con la modulazione a ampiezza di impulsi vario il duty cycle ovvero come dici tu quanta onda viene tagliata in un ciclo...ma non la durata del ciclo ovvero la frequenza. Le celle di peltier sono molto sensibili alla frequenza e sono tutt'altro che un carico puramente resistivo.
Con frequenze di qualche decina di kHz di fatto hanno efficienza zero!!

Da cui la domanda sulla frequenza del segnale pwm in uscita da Arduino e la possibilità  di manipolare tale valore via SW

Davide

Inviato dal mio Nexus 7 usando Tapatalk 4

Share this post


Link to post
Share on other sites

Domanda Tu che gli hai sottomano mi posti uno schema meccanico di come si costruisce un unita di scambio con le Peltier ?
Voglio capire quando convenga farla o se convenga prendere un gruppo gia fatto come quello che ti ho postato in un altor topic
Ma contando che ho gia dentro celle alimentatori alette ecc ecc credo che mi convenga farmela da me :D

 


Io opterei per un gruppo frigo già  assemblato.. La costruzione meccanica e il calcolo dei dissipatori, water block nel caso di scambio aria/h20 e ventole non è banale
 

 

Premetto che come controllore sarà  o un Aria 25GE o un Arduino Mega 2560
Quindi puoi levare quel Uno dallo schema a Blocchi che sicuro non si usera :P "Scherzo tanto è una cosa grafico gia cosi come schema è piu chiaro Grazie"

Come Ponte io andrei sul autocostruito che con 40€ di compo vedendo il costo di quello che hai postato te ne fai uno veramente potente
e ovviamente riparabile vi riporto questo schema che ho messo qualche post dietro che a me non sembra male che ne dite forse prima non ci avete fatto caso ?

http://circuit-diagram.hqew.net/Full-H-Bridge-10A-IR2104-H-Bridge-Mosfet-IRF540_14751.html

P.S come ipotizzato ad inizio topic il controllore avra sia due uscite rele secche per comandare un sistema classico con compressore frigo e resitenza
e relative due ventole di circolazione e una PWM per un ipotetizo utilizzo secocn con rele gruppo grigo e PWM per la resistneza.

Piu la relativa uscita per la gestione in Modalita Peltierr o Mista quindi:
Il software chiedera all' inizio se il sistema è classigo frigo resistenza o frigo restistenza in pwm o solo peltrier o misto frigo peltier e di conseguenza
farà  i duoi controlli per le ventole il PID mi pare eccessivo credo che basta un controllo PWM in modo da usare comuni ventole 12 o 230V non credi ?

 


Non ho preclusioni per il controllore.. In realtà  le uscite tenendo anche conto dei relè non sono molte per cui anche UNO dovrebbe farcela

Sul costruire il ponte di H o usarne uno già  fatto dipende se stiamo pensando a una shield ad hoc per l'applicazione che monta tutti i componenti necessari...sul costo penso che la parte di potenza sia paragonabile...integrato di controllo e MOSFET di potenza non sono gratis

Per la ventola OK controllo pwm ma il segnale a qualche cosa deve essere agganciato e non vedo altra possibilità  del PID...a meno di non volere un controllo manuale della velocità 
Per esperienza con mio attuale controller è molto comodo far variare velocità  ventola in funzione potenza del frigo ovvero in funzione PID

Restano miei dubbi..come si gestisce inversione caldo/freddo ? Con un segnale ad hoc o con duty cycle del pwm?
Come controlliamo frequenza PWM?

PS mi sto concentrando sulla parte peltier perché è la piu tricky ..il controllo a relè del gruppo frigo e/o resistenza lo do per scontato


Davide



Inviato dal mio Nexus 7 usando Tapatalk 4

Edited by mysobry

Share this post


Link to post
Share on other sites

Il segnale PWM ha una sua frequenza ! Con la modulazione a ampiezza di impulsi vario il duty cycle ovvero come dici tu quanta onda viene tagliata in un ciclo...ma non la durata del ciclo ovvero la frequenza. Le celle di peltier sono molto sensibili alla frequenza e sono tutt'altro che un carico puramente resistivo.
Con frequenze di qualche decina di kHz di fatto hanno efficienza zero!!
 

 

Si so che il PWM ha una sua frequenza, ma non sapevo che le celle di peltier ne fossero così sensibili.

 

Secondo me dobbiamo decidere in che modo l'utente imposterà :

-frequenza PWM celle di peltier;

-se si sta usando l'uscita relé o quella per le celle;

-gli step di temperatura desiderati.

le opzioni potrebbero essere due: impostare i valori da pannello oppure modificare il software.

 

Fatto questo potrei cominciare a buttare giù un pò di software (almeno a grandi linee), assumendo che usiamo l'arduino mega 2560 come si era detto all'inizio.

Share this post


Link to post
Share on other sites

Si so che il PWM ha una sua frequenza, ma non sapevo che le celle di peltier ne fossero così sensibili.


Fatto questo potrei cominciare a buttare giù un pò di software (almeno a grandi linee), assumendo che usiamo l'arduino mega 2560 come si era detto all'inizio.

 

Allora io ho già  dentro un Mega 2560 e un Aria G25E in arrivo ;) sonde e modulini RTC I2C LCD vari

 

Poi acquistato già  da qualche mese 5 celle Peltier alimentatore 12V 30A dissipatori ventole un po di IRF540 e altri compo discreti

Quindi se si fa una schiedl di logica e potenza io diciamo sono pronto per testare qualsiasi soluzione soft cosi da testare in pratica quando le celle rendano al max

 

A giorni dovrei anche ordinare scambiatoire e serpentina Inox cosi da aver eutta la parte HW dentro x i test e realizazione finale :D

 

Grazie

Share this post


Link to post
Share on other sites

Si so che il PWM ha una sua frequenza, ma non sapevo che le celle di peltier ne fossero così sensibili.

 

Secondo me dobbiamo decidere in che modo l'utente imposterà :

-frequenza PWM celle di peltier;

-se si sta usando l'uscita relé o quella per le celle;

-gli step di temperatura desiderati.

le opzioni potrebbero essere due: impostare i valori da pannello oppure modificare il software.

 

Fatto questo potrei cominciare a buttare giù un pò di software (almeno a grandi linee), assumendo che usiamo l'arduino mega 2560 come si era detto all'inizio.

 

Si c'e' ampia letteratura sul tema di controllo delle celle con segnale PWM   ;)

 

a titolo didattico cito due articoli interessanti

 

le FAQ della Tellurex  domande 40 e 41

Dal formum Pololu un esempio di controllo H-bridge/PWM con problemi sulla frequenza

 

 

A mio avviso non lascerei il parametro frequenza PWM modificabile da menu ma lo imposterei fisso nel FW

 

Sugli step di temperatura e quindi un real time clock la vedo come una funzione "nice to have" di fatto la temperatura di fermentazione la si imposta quasi sembre stabile per tutta la durata senza necessita' di una programmazione temporale. Quelle rare volte che si vuole fare una modifica per un diaceyil rest o similare la si modifica manualmente (anche perche' e' dificile prevederlo in anticipo)

 

se butti giu' un po' di SW mi fai capire con un diagramma a flusso come usi le librerie PID per gestire il cambio caldo/freddo in prossimita' del set point???  :sad:

 

Davide

Share this post


Link to post
Share on other sites

Allora io ho già  dentro un Mega 2560 e un Aria G25E in arrivo ;) sonde e modulini RTC I2C LCD vari

 

Poi acquistato già  da qualche mese 5 celle Peltier alimentatore 12V 30A dissipatori ventole un po di IRF540 e altri compo discreti

Quindi se si fa una schiedl di logica e potenza io diciamo sono pronto per testare qualsiasi soluzione soft cosi da testare in pratica quando le celle rendano al max

 

A giorni dovrei anche ordinare scambiatoire e serpentina Inox cosi da aver eutta la parte HW dentro x i test e realizazione finale :D

 

Grazie

 

Savio sei troppo avanti !

 

prima di assembralre la scheda di potenza con gli IRF540 penso dovremmo definire quale logica di controllo utilizzare ...con o senza pin di controllo del caldo/freddo, con oscillatore PWM locale o pilotato dal Arduino Mega...etc...

 

In prima battuta suggerisco di sperimentare con una scheda h-bridge per motori gia' assemblata del tipo quelle con l'economicissimo L298

 

$T2eC16V,!)kE9s4Z+z+-BRnO)HQG4Q~~60_12.J

 

 

o con una motor shield

 

$T2eC16JHJH8E9qSEUflQBQB88SRMP!~~60_12.J

 

 

o ancora una delle scehde di potenza della Pololu

 

tanto per capire bene funzionamento di tutta la catena PID-PWM-Hbridge

poi quando il SW e' stabile e le celle sono gestite correttamente fisserei la configurazione e penserei a una scheda dedicata con tutti i componenti ovvero la parte H-bridge, i relè, il controllo ventole...

Partire gia' dalla scheda HW finita implica infiniti ricircoli rispetto a assemblare componenti gia' esistenti

 

Davide

Edited by mysobry

Share this post


Link to post
Share on other sites

Davide tu hai modo di misurare la frequezna che manda il tuo controller allo stadio di potenza cosi vediamo di replicarlo :D

 

Sto chiacchierando con un po di amici di forum mi hanno segnalato questo mosfet che credo fa proprio per noi ne ho ordinati una paio per fare delle prove :D

 

http://www.irf.com/product-info/datasheets/data/irlb3034pbf.pdf

 

Costano circa 2€ e gestiscono fino a 40V 195A e 343A di Picco :O

Share this post


Link to post
Share on other sites

Davide tu hai modo di misurare la frequezna che manda il tuo controller allo stadio di potenza cosi vediamo di replicarlo :D

 

 

 

Nota sul mio controller: io uso un controllore PID che genera un segnale in continua 0-12V  e NON un segnale PWM direttamente !! 

Tale uscita e' poi data in ingresso al circuito di potenza della KEMO che genera lui il segnale PWM con frequenza 300-400HZ (perfetta per le celle)

 

m171_06022di_ans_bild2_hinweis.png

chiusa parentesi sul mio controller.

 

Quindi dobbiamo decidere approccio:

  1. pilotare il circuito h-bridge (o equivalenti mosfet) direttamente dal segnale PWM di arduino o analogo controller
  2. adottare una soluzione tipo la mia e pilotare il circuito di potenza con una tesnsione/corrente di riferimento o comandi seriali (tipo il modulo di potenza dela plolu) 

Nel caso uno la frequenza di accensione e spegnimento delle celle = frequenza del segnale PWM in uscita dal controller

Nel caso di ARDUINO ho trovato un interessante articolo che spiega il punzionamento delle uscite PWM ovvero AnalogWrite()

 

PWM e Arduino

 

direi che per iniziare siamo fortunati...se non si modifica nulla uscite PWM sulla AnalogWrite sono a 490HZ che e' un valore ok per le celle

se poi si vuole modificare frequenza da articolo sembra possibile giocando con i timer/registri o usando la digitalWrite

 

nel secondo caso invece bisogna scegliere un modulo che abbia un frequenza corretta o meglio ancora regolabile (quelli della pololu spaziano ad qualche centinaio di HZ a decine di KhZ)

 

decidiamo la strada? per sperimentare direi opzione 1

 

Davide

Share this post


Link to post
Share on other sites

Nota sul mio controller: io uso un controllore PID che genera un segnale in continua 0-12V  e NON un segnale PWM direttamente !!

 

Tale uscita e' poi data in ingresso al circuito di potenza della KEMO che genera lui il segnale PWM con frequenza 300-400HZ (perfetta per le celle)

pilotare il circuito h-bridge (o equivalenti mosfet) direttamente dal segnale PWM di arduino o analogo controller
  1. are una soluzione tipo la mia e pilotare il circuito di potenza con una tesnsione/corrente di riferimento o comandi seriali (tipo il modulo di potenza dela plolu) 

 

post-9425-0-43334100-1378755108.jpg

 

 

Sono negatissimo in disegno tu cosa hai usato per fare lo schema a Blocchi io mi sono arrangiato con paint

 

Comunque questo è come vedo io che debba essere il sistema come schema a Blocchi base per partire

Poi si aggiungono le chicche per sensore audio gorgolio ecc ecc

 

Fammi capire 300Hz cella minima temepratura 400Hz cella massima temperatura ?

 

Comunque si voglio vedere con gli amici esperti in elettronica di fare un circuito che con doppio PWM arduino gestisce sia la frequenza

che inversione di polarita per inverire tra caldo e freddo ma devi farmi capire bene gli step di prequezna per le celle e per inversione polarità 

Edited by saviothecnic

Share this post


Link to post
Share on other sites


Fammi capire 300Hz cella minima temepratura 400Hz cella massima temperatura ?

Comunque si voglio vedere con gli amici esperti in elettronica di fare un circuito che con doppio PWM arduino gestisce sia la frequenza
che inversione di polarita per inverire tra caldo e freddo ma devi farmi capire bene gli step di prequezna per le celle e per inversione polarità 


No savio il pwm non funziona così...
Nel pwm si varia il duty cycle ovvero il tempo in cui il carico e' accesa vs il tempo in cui è spento...infatti si parla di variazione pwm in % dallo 0 al 100%.
La frequenza è tutt'altra cosa ed è fissa

Dai un occhio a wikipedia o altro articolo di base sul pwm
http://it.m.wikipedia.org/wiki/Pulse-width_modulation

Perché doppio pwm?
Il segale pwm è unico...poi usi h-bridge per invertire polarità  e come riportato piu volte hai di possibilità 

1) piloti con una uscita digitale circuito inversione polarità  e pwm da 0 a 100 regola da min a max sia potenza frigio che casldo
2) usi segale pwm stabilendo ad esempio 0% max frigo , 50% off , 100% max caldo

Ancora una volta bisogna prendere bivio di progetto e costruire software di pilotaggio pid/pwm di conseguenza...

D.



Inviato dal mio Nexus 7 usando Tapatalk 4

Share this post


Link to post
Share on other sites

No savio il pwm non funziona così...
Nel pwm si varia il duty cycle ovvero il tempo in cui il carico e' accesa vs il tempo in cui è spento...infatti si parla di variazione pwm in % dallo 0 al 100%.
La frequenza è tutt'altra cosa ed è fissa

 

Hai ragione mi sono confuso quando hai parlato di frequezna minima e max di resa sulle celle

 

 

Perché doppio pwm?
Il segale pwm è unico...poi usi h-bridge per invertire polarità  e come riportato piu volte hai di possibilità 

 

Ha capito quindi comunque facciamo un circuito a Ponte H cosi inversione polarita la gestiamo come se pilotassimo un motore con inversione di rotazione

E durante inversione gradualmente con il PWM passiamo per 0 cella spenta

 

 

1) piloti con una uscita digitale circuito inversione polarità  e pwm da 0 a 100 regola da min a max sia potenza frigio che casldo
2) usi segale pwm stabilendo ad esempio 0% max frigo , 50% off , 100% max caldo

 

Umm qua mi perdo il pwm non è sempre da 0 a 100 e caldo e freddo lo decide la polarita e quindi il pin digitale per inversione ?

 

 

Ancora una volta bisogna prendere bivio di progetto e costruire software di pilotaggio pid/pwm di conseguenza...

 

Si questo mi è chiaro ma come vedi dalle mie domande non mi è molto chiara la parte di pilotaggio :sorry:

Share this post


Link to post
Share on other sites

1) piloti con una uscita digitale circuito inversione polarità  e pwm da 0 a 100 regola da min a max sia potenza frigio che casldo
2) usi segale pwm stabilendo ad esempio 0% max frigo , 50% off , 100% max caldo

Ancora una volta bisogna prendere bivio di progetto e costruire software di pilotaggio pid/pwm di conseguenza...

 

la mia idea era di usare la libreria PID non per ottenere direttamente il valore del PWM ma quello di una variabile fittizia, da convertire poi in PWM e direzione. In questo modo cambiando l'hardware basta modificare questa conversione.

pensavo poi di usare la libreria PID Autotune per ottenere i coefficienti del PID, in modo che si adattino automaticamente ai diversi impianti.

Anche io avevo pensato ad usare il comando Analogwrite() per comandare il PWM, visto che la frequenza che utilizza fa al caso nostro.

 

Scusate ma non ho avuto molto tempo ultimamente per buttare giù il software, tra tesi da scrivere, lavoro, e un altro progetto che sto facendo sempre con Arduino non ho molto tempo libero... :sorry:

Share this post


Link to post
Share on other sites

la mia idea era di usare la libreria PID non per ottenere direttamente il valore del PWM ma quello di una variabile fittizia, da convertire poi in PWM e direzione. In questo modo cambiando l'hardware basta modificare questa conversione.
pensavo poi di usare la libreria PID Autotune per ottenere i coefficienti del PID, in modo che si adattino automaticamente ai diversi impianti.
Anche io avevo pensato ad usare il comando Analogwrite() per comandare il PWM, visto che la frequenza che utilizza fa al caso nostro.
 
Scusate ma non ho avuto molto tempo ultimamente per buttare giù il software, tra tesi da scrivere, lavoro, e un altro progetto che sto facendo sempre con Arduino non ho molto tempo libero... :sorry:

 
bene bene cominciamo a convergere...

  • Frequenza del PWM gestita dal controller (arduino)
  • Inversione caldo freddo con un PIN high/low

la accendiamo ?
 
complichiamo un pelo le cose e entriamo nel dettaglio dell'algoritmo e nel SW
Sicuramente le librerie PID vanno adattate in quanto uscita delle librerie e' gia' un PWM ovvero un valore da dare in ingresso alla AnalogWrite ma per gestire termostato in una sola direzione (o caldo o freddo)
 
Occorre infatti definire a priori la "direction" 
PID(&Input, &Output, &Setpoint, Kp, Ki, Kd, Direction) 

 

raggiunto poi il set point mi aspetto che Output=0 (oppure 255) e quindi bisognerebbe reinizializzare il PID nella direzione opposta

 

in mezza a tutto cio' va inserito una isteresi nei pressi del set point onde evitare di oscillare direct/reverse

 

di fatto e' come se avessimo due PID che lavorano in direzione opposta , oppure due loop innestati: il primo che decide caldo/freddo (e applica uscita a digitalWrite()) il secondo che calcola output in funzione del algoritmo PID (e applica uscita alla AnalogWrite())

 

Nel caso di controllo con frigo e resistenza basta l'uscita digitale

 

scode riesci ad abbozzare una struttura di controllo per questo doppio loop in cui  inserire le funzioni PID?

 

in merito a autotunig potrebbe essere utile, visto che le tre costanti Ki,Kp,Kd in realta' sono diverse per un frigo e per una stufa  ;)  e quindi se vogliamo fare cose di fino passando da una parte all'altra andrebbero re-inizializzate con la SetTunings(Kp, Ki, Kd)

 

Davide

Edited by mysobry

Share this post


Link to post
Share on other sites

Sto iniziando a mettere insieme i pezzi per dare forma al'algoritmo di controllo

 

  • Arduino Uno
  • Motor Shield con due uscite H-bridge
  • Piccolo motore DC al posto della cella che semplifica il debug (e' piu' facile vedere senso di rotazione del motore che caldo/freddo sulla cella)
  • Sensore LM35 di temperatura

 

2013-09-12%252014.12.40.jpg

 

 

per ora ho sperimentato singolarmente le varie componenti

 

-la gestione del H-Bridge

oltre al segnale PWM e alla DIR occorre capire anche come gestire il BRAKE

la combinazione DIR e BRAKE  in high/low ha vari effetti

In particolare tale PIN e' usato per arresatre il motore riducendo effetto inerzia..non ho idea effetto su una cella di Peltier come carico.

Bisogna quindi decidere se all'inversione di polarita' semplicemente modificare DIR da HIGH a LOW oppure fare un passaggio intermedio con BRAKE a HIGH.

 

-La lettura della temperatura via AnalogRead() usando LM35 

ovviamente si potranno usare altri sensori ma per lo svuluppo importante avere un valore "analogico" da passare al PID

 

-Le Librerie PID

per ora solo monodirezionali ovvero  realizzazione di un controllo che vari la velocita' del motore in funzione della temperatura

 

stay tuned

Davide

Edited by mysobry

Share this post


Link to post
Share on other sites

 

raggiunto poi il set point mi aspetto che Output=0 (oppure 255) e quindi bisognerebbe reinizializzare il PID nella direzione opposta

 

in realtà  no, perchè è la temperatura ambiente che si oppone al cambiamento della temperatura. Se devo abbassare la temperatura a 12°, arrivo a 12-il valore dell'isteresi e poi sarà  l'ambiente a riportare su la temperatura, non ha senso secondo me riscaldare. in ambito meccanico questo viene fatto per contrastare l'inerzia, ma considerando che il contributo dell'inerzia termica è trascurabile in confronto a quello della temperatura ambiente secondo me non ha senso farlo.

 

 

 
in merito a autotunig potrebbe essere utile, visto che le tre costanti Ki,Kp,Kd in realta' sono diverse per un frigo e per una stufa  ;)  e quindi se vogliamo fare cose di fino passando da una parte all'altra andrebbero re-inizializzate con la SetTunings(Kp, Ki, Kd)

 

frigo e stufa/brewbelt vengono gestiti in modo on/off, quindi il PID non è possibile, per cui si usa una semplice isteresi.

Edited by Scode

Share this post


Link to post
Share on other sites

in realtà  no, perchè è la temperatura ambiente che si oppone al cambiamento della temperatura. Se devo abbassare la temperatura a 12°, arrivo a 12-il valore dell'isteresi e poi sarà  l'ambiente a riportare su la temperatura, non ha senso secondo me riscaldare. in ambito meccanico questo viene fatto per contrastare l'inerzia, ma considerando che il contributo dell'inerzia termica è trascurabile in confronto a quello della temperatura ambiente secondo me non ha senso farlo.
 
 
 
frigo e stufa/brewbelt vengono gestiti in modo on/off, quindi il PID non è possibile, per cui si usa una semplice isteresi.

 
Ciao Scode
 
probabilmente mi sono spiegato male , l'idea del progetto inziale , perlomeno per la quotaparte che usa come gruppo frigo le celle di peltier, prevede di poter raffreddare e scaldare e quindi come riporti nel tuo esempio contrastare ogni e qualisvogalia situazione dell'ambiente esterno e, aggiungo io, di quello interno visto che la fermentazione produce calore....per cui per me e' un MUST avere un doppio PID..e sfruttare il bello delle celle di peltier rispetto a frigo+brew belt
 
Nel tuo esempio mi aspetto che arrivati dal lato frigo a  12c-isteresi si inizi progressivamete a scaldare per compensare magari una temperatura esterna di 8c che mi porterebbe mosto oltre il set point. 
Nella tua ipotesi supponi che temperatura ambiente sia costante e quindi una volta impostata modalità ' frigo o stufa serva un PID in una sola direzione. Ma ingenerale non e' cosi'...un sistema termostato e' tale se e' indipendente da temperatura esterna mantiene costante la temperatura target. ;) 
 
Ne approfitto per postare un il codice che ho messo giu' mettendo insieme librerie PID , lettura T del LM35 e controllo h-bridge motor shield
Nella pratica controllo la velocita' del motore in funzione temperatura (per ora solo monodirezionale)
 
 /*

 
 Il programma misura la temperatura tramite il sensore LM35 e lo usa come ingresso 
 al PID
 L'uscita del PID pilota la motor Shield (H-Bridge)
 
 Vengono utilizzati i seguenti pin per LM35
 Pin +5V         -> Alimentazione
 Pin GND         -> Alimentazione
 Pin Analogico 3 -> lettura LM35
 
 
 La scala dell'LM 35 è T = K * V
 dove:
 K = 100 [°C/V] coeff.angolare della scala
 V = tensione generata dall'LM35 (10mV/°C)
 T = temperatura in °C
 
 
/* Numero del pin analogico sul quale è collegato l'LM35  */
#define LM35_pin 3
 
#include <PID_v1.h>
 
/* Definizioni globali */
float vref = 1.1;
double Setpoint, Input, Output;
                    // Vref dell'ADC (quell'interno è di 1,1V)
const int 
PWM_A   = 3,
DIR_A   = 12,
BRAKE_A = 9,
SNS_A   = A0;
 
 
/* Impostazione dell'hardware */
 
//Inizializzazione del PID, impostazione a DIRECT (stufa)
PID myPID(&Input, &Output, &Setpoint,2,5,1, DIRECT);
 
void setup() 
{
  analogReference( INTERNAL );  // per l'ADC usiamo il Vref interno da 1,1V (migliore precisione)
  Input = analogRead( LM35_pin );       // Prima lettura "a vuoto" (serve per l'assestamento dell'ADC)
  Setpoint = 29;                    //definizione del set point
  Serial.begin(9600);
  Serial.println("Temperatura    PIDout    Corrente\n");
  
  //turn the PID on
  myPID.SetMode(AUTOMATIC);
  
  // Configurazione PIN direzione e freno
  pinMode(BRAKE_A, OUTPUT);  // Brake pin on channel A
  pinMode(DIR_A, OUTPUT);    // Direction pin on channel A
 }
 
void loop()
{
  float temp = readTemp();  // legge il valore della temperatura e la memorizza nella var. temp.
  Input = temp;              //temperatura passata in ingresso a PID
  myPID.Compute(); 
  
  digitalWrite(BRAKE_A, LOW);  // freno disabilitato
  digitalWrite(DIR_A, HIGH);   // rotazione in avanti
  
  analogWrite(PWM_A, Output); //PWM con segnale in uscita pari a uscita PID
  
  Serial.print( temp);    // invia i valori alla seriale
  Serial.print("\t");
  Serial.print(Output);
  Serial.print("\t");
  Serial.print(analogRead(SNS_A));
  Serial.print("\n");
  
  delay (500);
}
 
/* Legge la temperatura */
float readTemp()
{
  float temp = 0.0;       // valore convertito in temperatura (°C)
  int val = 0;            // valore quantizzato dall'ADC [0..1023]
  int nread = 5;          // numero di letture (da 5 a )
  float somma = 0.0;      // somma delle letture
  for (int i=0; i<nread; i++)
  {
    val = analogRead( LM35_pin );              // legge il dato della tensione sul pin 'LM35_pin' 
    temp = ( 100.0 *  vref * val ) / 1024.0;   // lo converte in °C
    somma += temp;                             // aggiunge alla somma delle temperature lette   
  }   
  return ( somma / nread );                     // ne calcola il valore medio 
}
 

 
 
prossimo passo sostituire motore con una cella e vedere un po' di effetti termoelettrici e poi...se qualcuno mi aiuta...omplementare il doppio controllo

 

stay tuned

Davide

Edited by mysobry

Share this post


Link to post
Share on other sites

Be di programmazione non ne so nulla quindi LI vi aiuto ben poco anche se cerchero di capire lo schema funzionale

intanto vedo di capire a livello HW cosa serve e fare ho gia delle idee in mente.

Ho già  ordinato qualche como e altre cose le ho già  dentro cosi appena si riesce a tirare giù qualche bozza pcb lo monto e provo

come si è fatto con BirraDuino dove avendo già  un HW di base pronto poi è stato piu sempice andare avanti con lo sviluppo software

 

Sicuramente non sara Arduino Uno ma un Mega 2560 per via delle funzioni future dove un Po di IO e Memoria se ne vanno ;)

 

Be credo che almeno due sensori servono uno temperatura mosto o camera di fermentazione e uno esterno perche in alcuni casi potrebbe bastare

staccare la cella e far partire la ventilazione anche nel caso del blocco water senza far partire un inversione proprio per evitare un ping pong in inversione stato cella

ma questo anche nel caso di gestione classica resistenza frigo/compressore

 

Comunque ottima idea di testare con un motore DC mi piace

Share this post


Link to post
Share on other sites

Be di programmazione non ne so nulla quindi LI vi aiuto ben poco anche se cerchero di capire lo schema funzionale

intanto vedo di capire a livello HW cosa serve e fare ho gia delle idee in mente.

 

 

Come preferisci Savio..

ognuno ha il suo approccio...io sarei piu' dell'idea di proseguire l'analisi dei requisiti e chiudere i punti aperti, prototipare con componenti sciolti , sviluppare il SW necessario mettendo a punto la logica e poi mi preoccuperei  di definire i dettagli HW della shield..

Viceversa si rischia di produrre una marea di versioni di HW prima della definitiva

 

anyway...continuo con lo sviluppo sostituendo motore con una cella vera e cercando di mettere a punto doppio PID

 

Davide

Share this post


Link to post
Share on other sites

Prima di cena (ho stappato la mia red indian ale fresh hop) ho giocato un po con le librerie PID e la motor shield

Collegato uscita PWM della shield a una ventolina su dissipatore e inserito la sonda LM35 tra le alette

 

1379534715117.jpg

 

giusto per vedere come si comporta il sistema PID + PWM ad anello chiuso...retro-azionando la velocità  della ventola che soffia sulla sonda che legge la temperatura

 

non essendoci elemento riscaldante/raffreddante ho messo set point a 22 molto vicino alla temperatura ambiente di circa 23 gradi

 

Ho poi riportato l'output della seriale (un campione al secondo) su excel

 

Il risultato e' direi interessante e come si vede dal grafico che riporta temperatura misurata e potenza (velocita') della ventoala, dopo un certo periodo il sistema si stabilizza e converge mantenendo i 22 gradi con una precisione del decimo e applicando circa il 20% della potenza alla ventola

 

PID%2520Library%2520result.jpg

 

la lentezza di convergenza e' da ricercarsi nell setting delle tre magiche costanti Kp,Ki, Kd inizializzate come segue

 

myPID(&Input, &Output, &Setpoint,2,5,1, REVERSE);

 

in particolare azione integrativa molto pesante e quindi con elevata memoria del passato

 

ora gioco un po' con le variabili prima di applicare una cella e quindi controllare realmente l'attuatore caldo/freddo

 

Davide

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now