Arduino Forum

International => Italiano => Software => Topic started by: MrLofraz on Oct 12, 2012, 04:12 pm

Title: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 12, 2012, 04:12 pm
Ciao,non so se sia la sezione del forum  più adatta per farlo ma, sto cercando collaboratori programmatori per realizzare un impianto di produzione birra "casalinga".
Siccome in fatto di programmazione sono una capra, cercavo giusto qualcuno che mi dia qualche consiglio per farlo.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cece99 on Oct 13, 2012, 09:32 am

Ciao,non so se sia la sezione del forum  più adatta per farlo ma, sto cercando collaboratori programmatori per realizzare un impianto di produzione birra "casalinga".
Siccome in fatto di programmazione sono una capra, cercavo giusto qualcuno che mi dia qualche consiglio per farlo.

Cosa deve fare questo codice?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 13, 2012, 08:15 pm
Ciao,in sostanza, tramite sonda di temperatura, bisogna raggiungere dei set point e mantenere quella temperatura per tot tempo.
Ci vorrà ancche una sorta di PID in quanto, la T non dovrebbe mutare di più di un grado sia sopra, sia sotto il set point nel periodo in cui deve essere mantenuta.Per esempio: 65°C x 45 Min.
Una volta terminato il tempo(es. 45 Min), automaticamente, si dovrebbe raggiungere il set point successivo, e di nuovo mantenerlo costante nel tempo (es 78°C x 15 Min).
A grandi linee quello che dovrebbe fare è questo.
Grazie per la disponibilità
Andrea
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cece99 on Oct 13, 2012, 08:19 pm

Ciao,in sostanza, tramite sonda di temperatura, bisogna raggiungere dei set point e mantenere quella temperatura per tot tempo.
Ci vorrà ancche una sorta di PID in quanto, la T non dovrebbe mutare di più di un grado sia sopra, sia sotto il set point nel periodo in cui deve essere mantenuta.Per esempio: 65°C x 45 Min.
Una volta terminato il tempo(es. 45 Min), automaticamente, si dovrebbe raggiungere il set point successivo, e di nuovo mantenerlo costante nel tempo (es 78°C x 15 Min).
A grandi linee quello che dovrebbe fare è questo.
Grazie per la disponibilità
Andrea

Non è difficilissimo, ho scritto uno sketch che praticamente fa quello che vuoi tu, lunedì vedo di modificartelo!
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 13, 2012, 08:50 pm
Grandioso! Ma non ti ho ancora detto la parte difficile......scherzo!
in seguito, volevo anche aggiungere un agitatore motorizzato all'interno della caldaia di ammostamento (caldaia all'interno della quale bisogna mantenere le famose T), sempre gestito da Arduino.
Il dubbio è: sarà Arduino Uno in grado di contenere tutto il codice?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: astrobeed on Oct 13, 2012, 10:34 pm

Non è difficilissimo, ho scritto uno sketch che praticamente fa quello che vuoi tu, lunedì vedo di modificartelo!


E da quando sei capace di realizzare un controllo PID ?
Mi dici che formulazione matematica intendi utilizzare, sopratutto come puoi pensare di realizzare un simile controllo senza sapere la massa da termostabilizzare, il tipo di riscaldatore utilizzato e quale sonda di temperatura viene impiegata ?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 14, 2012, 01:06 pm
Concordo con astro, non si può pensare di pescare una libreria da internet che si chiama PID e pensare di aver fatto un controllo di temperatura PID.
Le variabili in gioco su questo specifico caso sono tante, oltre quelle dette da astro mi permetto di aggiungere la densitá della massa da scaldare(non è solo acqua o altro liquido ma ci sono vari tipi di grani macinati all'interno) e la dissipazione termica della caldaia.
Sicuramente l'utilizzo di un controllo PID è la soluzione più adeguata, ma calcolare le tre costanti che lo controllano non sará uno scherzo, e temo che non saranno nemmeno parametri legati solo all'impianto ma che andranno adeguati in base alla quantitá di mosto da preparare e dalla composizione e densitá dello stesso.
Massima disponibilitá anche da parte mia comunque visto che sono molto interessato.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 14, 2012, 02:56 pm

Concordo con astro, non si può pensare di pescare una libreria da internet che si chiama PID e pensare di aver fatto un controllo di temperatura PID.
Le variabili in gioco su questo specifico caso sono tante, oltre quelle dette da astro mi permetto di aggiungere la densitá della massa da scaldare(non è solo acqua o altro liquido ma ci sono vari tipi di grani macinati all'interno) e la dissipazione termica della caldaia.
Sicuramente l'utilizzo di un controllo PID è la soluzione più adeguata, ma calcolare le tre costanti che lo controllano non sará uno scherzo, e temo che non saranno nemmeno parametri legati solo all'impianto ma che andranno adeguati in base alla quantitá di mosto da preparare e dalla composizione e densitá dello stesso.
Massima disponibilitá anche da parte mia comunque visto che sono molto interessato.


Ottima osservazione, ma non vorrei creare polemica.
Se c'è bisogno di informazioni più dettagliate sono pronto a darvele
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 14, 2012, 03:06 pm

Concordo con astro, non si può pensare di pescare una libreria da internet che si chiama PID e pensare di aver fatto un controllo di temperatura PID.
Le variabili in gioco su questo specifico caso sono tante, oltre quelle dette da astro mi permetto di aggiungere la densitá della massa da scaldare(non è solo acqua o altro liquido ma ci sono vari tipi di grani macinati all'interno) e la dissipazione termica della caldaia.
Sicuramente l'utilizzo di un controllo PID è la soluzione più adeguata, ma calcolare le tre costanti che lo controllano non sará uno scherzo, e temo che non saranno nemmeno parametri legati solo all'impianto ma che andranno adeguati in base alla quantitá di mosto da preparare e dalla composizione e densitá dello stesso.
Massima disponibilitá anche da parte mia comunque visto che sono molto interessato.


Anche se penso che tu sappia già di cosa stiamo parlando........
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 14, 2012, 03:13 pm
Ciao, no nessuna polemica, ma non bisogna nemmeno abbandonarsi al semplicismo.
Quando si parla di PID bisogna usare i piedi di piombo, perché è una cosa estremamente complicata.
Non a caso tra gli addetti ai lavori questa tipologia di controllo viene anche denominata 'Black magic'(Magia nera) , che dovrebbe darti l'idea della complessitá della materia.
La prima cosa da fare è avere tra le mani un idea chiara di cosa verra utilizzato per scaldare il mosto e come.
Proporrei resistenza inox alimentata in modalitá PWM.
Per come far funzionare il PID direi che è necesario fare mooolti test  :smiley-mr-green:

P.S. non quotare il messaggio subito precedente a quello che scrivi, non serve e rende il topic meno leggibile.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 14, 2012, 03:23 pm
Ok scusate, errori di inesperienza!
A prescindere dalla complessità, la vedi una cosa fattibile fatta così, o secondo te è meglio collaborare con qualcuno "fisicamente", nel senso di mettersi in cantina e provare e riprovare?
Tu pensavi a resistenze ad immersione?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 14, 2012, 03:38 pm
Nel mio caso no perché non le ho previste, io piloterò una piastra elettrica ad induzione sotto il mashthun, ma la tecnica di pilotaggio sarà sempre PWM.
Per aggiustare i parametri del PID serviranno prove sicuramente, e per ottenere qualcosa di buono ne serviranno pure molte di prove.
L'idea mia è di avere un hardware pronto e fare un test pilota magari inizialmente con sola acqua, ed avere via seriale tutti i dati relativi alla temperatura ,ai valori pwm e del tempo.
Una volta che abbiamo una serie di dati da analizzare possiamo calibrare affinamenti, poi riprovare, poi riaffinare...  poi riprovare... :smiley-mr-green:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 14, 2012, 05:20 pm
Si anch'io pensavo ad una cosa del genere. Andare a step:
1 leggere delle temperature che siano "reali" su seriale
2 Aggiungere un display lcd
3 Raggiungere un set point
4 Mantenimento set point nel tempo
5 etc etc
Poi per la parte elettro meccanica non c'è problema
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cece99 on Oct 14, 2012, 07:10 pm

Si anch'io pensavo ad una cosa del genere. Andare a step:
1 leggere delle temperature che siano "reali" su seriale
2 Aggiungere un display lcd
3 Raggiungere un set point
4 Mantenimento set point nel tempo
5 etc etc
Poi per la parte elettro meccanica non c'è problema

Scusate, eh, cosa centra sto PID?
non basta rilevare la temperatura con un sensorino e accendere e spegnere il riscaldatore per mantenere la temperatura prefissata? :smiley-mr-green:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 14, 2012, 07:16 pm
Ah, nnnamo bbene...  :smiley-mr-green:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: astrobeed on Oct 14, 2012, 07:16 pm

non basta rilevare la temperatura con un sensorino e accendere e spegnere il riscaldatore per mantenere la temperatura prefissata? :smiley-mr-green:


Si come no, infatti gli ingegneri non servono a nulla, rottamiamoli tutti  :smiley-mr-green:
Cece lascia perdere, questa cosa non fa per te, prima studia un pochino di teoria del controllo che poi ne riparliamo, per giunta sei minorenne e questo topic è ad alto contenuto alcolico  (v.m. 18) :D :smiley-mr-green: :D
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: menniti on Oct 14, 2012, 07:33 pm
Ehi grandi, non mi maltrattate il mio Ardufiglioccio Cecé ]:D, è volenteroso ed educato, merita di essere stimolato e non abbattuto come un tordo. Però Astro ha ragione, Cecé, ancora sei piccolo per frequentare certi ambienti, alla tua età ci si ubriaca anche solo con il vapore dell'alcool :smiley-mr-green: sul resto ti consiglio di non insistere, per esperienza, quando Astro comincia a tirare fuori la storia della rottamazione degli Ingegneri vuol dire che la sua pazienza è al limite, se insisti ti spara un post che al solo leggerlo ti fa venire il mal di testa e già te ne ha dato un assaggio prima. Vieni con me va, che ti porto al Blink Store :D
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cece99 on Oct 14, 2012, 08:08 pm

Ehi grandi, non mi maltrattate il mio Ardufiglioccio Cecé ]:D, è volenteroso ed educato, merita di essere stimolato e non abbattuto come un tordo. Però Astro ha ragione, Cecé, ancora sei piccolo per frequentare certi ambienti, alla tua età ci si ubriaca anche solo con il vapore dell'alcool :smiley-mr-green: sul resto ti consiglio di non insistere, per esperienza, quando Astro comincia a tirare fuori la storia della rottamazione degli Ingegneri vuol dire che la sua pazienza è al limite, se insisti ti spara un post che al solo leggerlo ti fa venire il mal di testa e già te ne ha dato un assaggio prima. Vieni con me va, che ti porto al Blink Store :D

Ma che è sto PID? Su wikipedia non si capisce un tubo :d.
@Astro: spara pure il megapost, tanto ho già mal di testa, forse sortisce l'effetto contrario :D
@MickeyMouse :smiley-yell: ho scritto in questo topic solo perchè anche io dovrei fare un sistema che mi tenga costante una temperatura.
E poi, non temete, l'odore della birra manco mi piace quindi sicuramente non mi metto a produrla  :smiley-yell:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: Madwriter on Oct 15, 2012, 10:52 am
cece rimuovi il tuo post o subirai l'ira di Mike e di Astro  :smiley-sweat:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: astrobeed on Oct 15, 2012, 11:01 am

Ma che è sto PID? Su wikipedia non si capisce un tubo :d.


Ecco la dimostrazione che non sei in grado di gestire una problematica di questo tipo, non per colpa tua, ma perché ti mancano le nozioni di base, sia matematiche che fisiche e di teoria del controllo, per affrontare l'argomento, cose che apprenderai nel corso dei tuoi futuri anni scolastici, superiori e università, se prendi il giusto percorso di studio.
In tutti i casi la sola teoria non basta per risolvere questo genere di problemi, è necessaria anche una discreta esperienza pratica.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: menniti on Oct 15, 2012, 11:22 am

cece rimuovi il tuo post o subirai l'ira di Mike e di Astro  :smiley-sweat:

no, no, è che è una toppa (da noi significa "ubriaco fradicio" :smiley-yell:) e va compreso, non penso che in condizioni normali si azzarderebbe a provocare così, se poi gli ha dato di volta il cervello ne riparliamo ]:D
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: Madwriter on Oct 15, 2012, 11:33 am


cece rimuovi il tuo post o subirai l'ira di Mike e di Astro  :smiley-sweat:

no, no, è che è una toppa (da noi significa "ubriaco fradicio" :smiley-yell:) e va compreso, non penso che in condizioni normali si azzarderebbe a provocare così, se poi gli ha dato di volta il cervello ne riparliamo ]:D

è piccolo per bere io ho iniziato qualche anno dopo  :smiley-mr-green:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cyberhs on Oct 15, 2012, 12:11 pm
Cece, il PID è l'acronimo di Proporzionale Integrativo Derivativo, un parolone che ha il suo fondamento sul calcolo degli integrali e le derivate.

In soldoni, l'esempio migliore è quello del controllo di una temperatura in una stanza effettuato tramite un normale termostato.

Supponiamo di aver impostato il termostato su 21°C. Quando la temperatura scende al di sotto di questo valore, il termosifone inizia a scaldare e coninua così finchè la temperatura non ritona a 21°.
Ma se osserviamo l'andamento della temperatura, notiamo che, dal momento in cui parte il termosifone, la temperatura scende ancora fino a raggiungere un minimo di (supponiamo) 19° per poi risalire fino a 21° (e quindi il termosifone si spegne), ma la temperatura nel frattempo continuerà a salire sino ad un massimo (supponiamo) di 22,5°, per poi ridiscendere.
Il perché di questo comportamento non è difficile da capire: esiste una sorta di ritardo tra l'azionamento del nostro controllo e la risposta del sistema controllato (teoria dei sistemi).
Il ritardo di intervento crea il problema che la temperatura della stanza oscilla tra 19° e 22,5°.
Soluzione: bisogna creare un controllo che accenda il termosifone prima che raggiunga i 21° (in discesa) e che lo spenga prima che ritorni a 21° (in salita).
Come si può fare a calcolare gli istanti esatti? Rifletti bene e capirai che senza ulteriori basi matematiche la cosa è piuttosto difficile.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cece99 on Oct 15, 2012, 02:35 pm

Cece, il PID è l'acronimo di Proporzionale Integrativo Derivativo, un parolone che ha il suo fondamento sul calcolo degli integrali e le derivate.

In soldoni, l'esempio migliore è quello del controllo di una temperatura in una stanza effettuato tramite un normale termostato.

Supponiamo di aver impostato il termostato su 21°C. Quando la temperatura scende al di sotto di questo valore, il termosifone inizia a scaldare e coninua così finchè la temperatura non ritona a 21°.
Ma se osserviamo l'andamento della temperatura, notiamo che, dal momento in cui parte il termosifone, la temperatura scende ancora fino a raggiungere un minimo di (supponiamo) 19° per poi risalire fino a 21° (e quindi il termosifone si spegne), ma la temperatura nel frattempo continuerà a salire sino ad un massimo (supponiamo) di 22,5°, per poi ridiscendere.
Il perché di questo comportamento non è difficile da capire: esiste una sorta di ritardo tra l'azionamento del nostro controllo e la risposta del sistema controllato (teoria dei sistemi).
Il ritardo di intervento crea il problema che la temperatura della stanza oscilla tra 19° e 22,5°.
Soluzione: bisogna creare un controllo che accenda il termosifone prima che raggiunga i 21° (in discesa) e che lo spenga prima che ritorni a 21° (in salita).
Come si può fare a calcolare gli istanti esatti? Rifletti bene e capirai che senza ulteriori basi matematiche la cosa è piuttosto difficile.

Ecco che ho capito :D, io personalmente calcolerei i ritardi di accensione e spegnimento andando per tentativi XD
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 15, 2012, 02:56 pm
Meno male che hai capito.

Invece di non quotare il messaggio subito precedente a quello che scrivi ancora non l'hai capito.
Cosi oltre ad utilizzare inutilmente byte nello storage del server (o NAS) del forum si rendono i thread anche meno leggibili.
Mi spieghi a cosa serve?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cece99 on Oct 15, 2012, 04:13 pm

Meno male che hai capito.

Invece di non quotare il messaggio subito precedente a quello che scrivi ancora non l'hai capito.
Cosi oltre ad utilizzare inutilmente byte nello storage del server (o NAS) del forum si rendono i thread anche meno leggibili.
Mi spieghi a cosa serve?


Tipo così :smiley-yell:?
Lo faccio solo per far capire meglio a chi sto rispondendo  :smiley-roll-sweat:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: menniti on Oct 15, 2012, 04:26 pm
Niki intende dire, e secondo me ha ragione, che se rispondi al post immediatamente prima del tuo non c'è bisogno di quotarlo, ma è anche vero il fatto che a volte quando si sta per pubblicare, specialmente se si scrive parecchio, si trovi uno o più post pubblicati un istante prima ed allora si crea casino perché si è costretti a quotare; insomma occorrerebbe evitare, ma penso sia una cosa fattibile solo nei discorsi in cui entrano due, max tre persone; in un Topic molto attivo penso sia problematico, oppure si ricorre semplicemente alla citazione del nome senza quotare l'intervento, forse è la cosa migliore.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cyberhs on Oct 15, 2012, 04:27 pm
Cece, supponiamo che, dopo aver fatto tutte le prove necessarie, tu abbia raggiunto un risultato accettabile.

Ma cosa succede se la temperatura esterna si alza o si abbassa repentinamente?

Il sistema con i tuoi ritardi continuerà a funzionare?

La risposta è no, poiché la velocità di azione è cambiata, ma quella di reazione no.

Ho reso l'idea?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cece99 on Oct 15, 2012, 04:28 pm
va bene :smiley-roll-sweat:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: astrobeed on Oct 15, 2012, 04:45 pm

Ma cosa succede se la temperatura esterna si alza o si abbassa repentinamente?


Non solo, ma cosa succede se cambia la massa da tenere a temperatura costante o la sua resistenza termica, ovvero la composizione del liquido ?
Non si può realizzare un sistema di controllo con lo spannometro empirometrico e sperare che poi funzioni bene in tutte le condizioni, equivale al classico prendere le misure col calibro, segnare col gessetto, tagliare con l'accetta  :smiley-mr-green:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cece99 on Oct 15, 2012, 05:18 pm


Ma cosa succede se la temperatura esterna si alza o si abbassa repentinamente?

non lo so, forse scoppia tutto XD
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 15, 2012, 06:03 pm
Adesso che sappiamo cosa serve e come funziona, qualcuno mi spiega da che parte si inizia?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cece99 on Oct 15, 2012, 06:05 pm

Adesso che sappiamo cosa serve e come funziona, qualcuno mi spiega da che parte si inizia?

Direi che si comincia a fare i calcoli :D
Io inserirei tutto su arduino con delle variabili (quanti litri, temperatura max, min, step ecc.) impostabili via pulsantini su un display lcd
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 15, 2012, 07:09 pm

Adesso che sappiamo cosa serve e come funziona, qualcuno mi spiega da che parte si inizia?


Te l'Ho già detto da dove si inizia, dallo scegliere come scaldare il mosto.
Metterai delle resistenze dentro o userai una piastra elettrica esterna?
Non aspettarti in entrambi i casi di poter gestire la cosa con un relè.
Se vogliamo utilizzare un controllo pid ci vuole di poter gestire la potenza termica in pwm.
Purtroppo per noi però pwm e corrente alternata non è uno dei matrimoni più facili da organizzare.
Ci vuole un dimmer di una certa potenza (Ipotizzo 3kw come potenza massima per gestirne la metà in sicurezza)pilotabile in pwm, o troviamo qualcosa di già fatto o ci andiamo a scornare con zero crossing detection, triac e optoisolatori , praticamente investiamo più tempo a fare questo che tutto il resto!
Vedo su internet se si trova qualcosa ReadyToGo...
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: lestofante on Oct 16, 2012, 10:25 am
biraa?? ti aiuto iooooo!!! sono di assago, magari ci si becca appunto per una birra :)

@niki77: considerata la quantità di massa da scaldare un relè va più che bene. i fornetti reflow home made usano appunto un relè. certo il pid deve essere settato apposta per avere una soglia minima di attivazione (per evitare mille accendi-spegni) ma è fattibile. Sulla sezione inglese di esposizione ci sono un sacco di questi sistemi già fatti, magari non le parti critiche ma gran parte del processo ormai è alla portata

Sicuramente approvo cece99, bisogna prima decidere le quantità di materiale che si intende lavorare, queli parti della lavorazione automatizzare, a quale grado automatizzare (ovvero: quanto sarà l'intervento umano di controllo), e anche DOVE si lavorerà, se in un ambiente in temperatura più o meno stabile o in cima ad una collina ventosa.

Il pid è un problema secondario, esistono librerie già cotte a puntino, certo non è il non-plus-ultra usare qualcosa senza sapere come effettivamente funziona, ma se ci pensate bene è quello che facciamo tutti i giorni. Se ci fanno volare i quadricotteri, non vedo che problema ci sia a scaldare il mosto, al massimo ci perde il prodotto, in nome della scienza

http://www.youtube.com/watch?v=Bml0WflhdNM
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 16, 2012, 10:35 am
Il discorso che fai lesto sostanzialmente non fà una piega, ma dubito che si riesca a gestire bene tramite PID l'accenzione e lo spegnimento di un relè per il riscaldamento.
Certo sarebbe una grosso risparmio di tempo , e a fare uno sketch per provare ci vuole si e no 1 oretta.

Io nel mio impianto prevedrò solo la gestione della cotta (quindi controllo temperatura in base alla lettura del sensore ds18b20 interno), l'accenzione/spegnimento dell'agitatore grani e un feedback via seriale di tutti i parametri di lavoro per analizzare e poi eventualmente correggere le lacune

Se trovo un relè discreto in qualche cassetto forse domani sera faccio le prime prove.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: lestofante on Oct 16, 2012, 10:51 am
http://www.rocketnumbernine.com/2009/08/27/smt-table-top-reflow-oven-part-2
da cui cito:
Quote
the heater elements in the oven are very slow to react - don't expect to be doing PWM control with them.


ci sono molti altri esempi, ma fai attenzione al PID che non deve continuare a saltare. Prova a chiamnarlo ad una frequuenza bassa, tipo 1 secondo :)
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 16, 2012, 12:58 pm
In effetti trattano di gestire il valore di ritorno del controllo PID per accendere e spegnere il relè in un determinato intervallo di tempo.
E' praticamente il duty cycle però associato un un intervallo di tempo più ampio per eveitare eccessive ed inutili sollecitazioni del relè

Quindi un ipotesi potrebbe essere la seguente:

Prendendo come minima unità di misura 4 secondi (1 mi sembra comunque troppo basso in proporzione inerzia termica dei nostri sistemi)

100% relè 4 secondi on
75% relè 3 secondi on 1 secondi off
50% relè 2 secondi on 2 secondi off
25% relè 1 secondo on 3 secondi off
0% relè 4 secondi off

Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: lestofante on Oct 16, 2012, 01:53 pm
esatto, basta giocare con la frequenza... iniziamo a parlare la stessa lingua  :smiley-mr-green:

se invece si usa un pid a 1000Hz con un sistema che risponde ogni 1Hz, si rischia il wind-up (l'overflow della I) oltre che a sprecare tempo cpu
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 16, 2012, 01:59 pm
Intanto butto giù del codice più paramettrizzato possibile in maniera da poter aggiustare il tiro .

Ipotizzando il mio intervallo di tempo (cadenze 4 secondi, ovvero 0,25hz) diresti di effettuare la computazione PID con la stessa cadenza o più di frequente?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: astrobeed on Oct 16, 2012, 02:14 pm

se invece si usa un pid a 1000Hz con un sistema che risponde ogni 1Hz, si rischia il wind-up (l'overflow della I) oltre che a sprecare tempo cpu


Se il ciclo pid viene eseguito ad una frequenza molto maggiore del necessario, a seconda dei casi deve essere da 10 a 50 volte più rapido della costante di tempo del sistema, semplicemente sprechi inutilmente tempo cpu, non ha nessun effetto negativo sul PID.
Il windup non è la saturazione dell'integrale, anche se può portare a questo ulteriore problema, è la sovraelongazione dovuta alla saturazione dell'attuatore, ovvero quando viene richiesta una correzione maggiore di quella massima realmente attuabile o comunque superiore ai limiti imposti, esistono vari metodi per evitare questo inconveniente.

Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: lestofante on Oct 16, 2012, 02:17 pm
scusami è verò, ho fatto confusione... è che recentemente sto implementando questi vari trucchi del PID e faccio ancora casino con i nomi
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: astrobeed on Oct 16, 2012, 02:24 pm

Ipotizzando il mio intervallo di tempo (cadenze 4 secondi, ovvero 0,25hz) diresti di effettuare la computazione PID con la stessa cadenza o più di frequente?


Non potete ragionare in questo modo, prima di tutto si deve determinare l'energia termica necessaria a mantenere la desiderata temperatura della massa liquida, poi si dimensionano gli elementi riscaldanti, anche in base al tempo desiderato per raggiungere la temperatura di esercizio, e si ricava la curva termica del sistema.
Solo quando hai questi dati puoi cominciare a ragionare sul sistema di controllo, se realmente serve mantenere la temperatura costante con una precisione del singolo grado centigrado scordatevi di riuscirci con sistemi on/off.

Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 16, 2012, 02:47 pm
Quanto dici Astro è sacrosanto.

Riformulo la richiesta iniziale perchè secondo me è stata fatta in maniera sbagliata.

Dato un sistema composto da uno stadio di riscaldamento X ed un sensore di temperatura Y si deve avere la possibilità di poter raggiungere una T in un range da 36° ad 80° centigradi e di mantenerla quanto più costante possibile per un tempo impostabile.
La precisione dello scostamento deve essere quanto più possibile precisa, ma relativamente all'hardware a disposizione.
Anche la velocità con la quale si deve raggiungere la T è relativa all'hardware a disposizione, non c'è un dato assoluto.
Quindi non necessita assolutamente la precisione del grado, considerate che ancora ci sono birrai che questo procedimento lo fanno a mano col fornello!!!

Quindi riassumento la necessità è quella di avere un sistema di controllo quanto più preciso possibile relativamente all'hardware che si ha a disposizione .
Ovviamente per ricavare una curva termica, inerzia etc etc etc. occorre fare delle prove, comunque il concetto è che il controllo si deve adeguare all'attrezzatura, non viceversa.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 16, 2012, 03:31 pm
Vedo con piacerere che la discussione si è animata!
Quindi mi state dicendo che se lo stesso sketch lo si prova con caldaie e riscaldatori diversi da quelli utilizzati nei test, il controllo non funziona o quantomeno da dei risultati diversi?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: lestofante on Oct 16, 2012, 03:49 pm
esattamente, ma credo che questo fosse prevedibile..
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 16, 2012, 04:15 pm

Vedo con piacerere che la discussione si è animata!
Quindi mi state dicendo che se lo stesso sketch lo si prova con caldaie e riscaldatori diversi da quelli utilizzati nei test, il controllo non funziona o quantomeno da dei risultati diversi?


Assolutamente SI, non potrebbe essere diversamente.
Ma non ti preoccupare compà, che qualcosa di buono lo tiriamo fuori.

ho già messo giù un idea di come gestire il relè, sotto con critiche e commenti

Code: [Select]


#include <avr/interrupt.h>

#define cycleLength 4
#define computeDelay

volatile byte cycleCounter ;
volatile byte pid =0;
byte lastCounter =255;

byte pidValue;
boolean coilStatus;

ISR(TIMER1_COMPA_vect)
{
cycleCounter++;
if (cycleCounter == cycleLength )
{
cycleCounter = 0;
pid +=10;
if(pid==100)
{
pid=0;
}
}
}


void setup()
{
Serial.begin(57600);
SetupInterrupt();
}


void loop()
{
if (lastCounter != cycleCounter)
{
lastCounter = cycleCounter;
ManageCoil();
Serial.print("pidValue :");
Serial.print(pidValue);
Serial.print(" cycleCounter :");
Serial.print(cycleCounter);
Serial.print(" coilStatus :");
Serial.println(coilStatus);
}
pidValue = ComputePid();
pidValue = map(pidValue, 0, 100, 0, cycleLength + 1);
}

byte ComputePid()
{
return pid;
}

void ManageCoil()
{
if (pidValue > cycleCounter)
{
if (!coilStatus)
{
coilStatus = true;
}
}
else
{
coilStatus = false;
}

}

void SetupInterrupt()
{
cli(); // disable global interrupts
TCCR1A = 0; // set entire TCCR1A register to 0
TCCR1B = 0; // same for TCCR1B
// set compare match register to desired timer count:
OCR1A = 15624;
// turn on CTC mode:
TCCR1B |= (1 << WGM12);
// Set CS10 and CS12 bits for 1024 prescaler:
TCCR1B |= (1 << CS10);
TCCR1B |= (1 << CS12);
// enable timer compare interrupt:
TIMSK1 |= (1 << OCIE1A);
// enable global interrupts:
sei();
}



Il codice così com'è non sò se sull'ide arduino compila, visto che io uso ECLIPSE e l'ho aggiustato a manina per postarlo.

Ho settato un timer che tramite interrupt mi dà un evento ogni secondo con la quale vado ad alimentare un contatore.
Ad ogni impulso di interrupt vado ad incrementare il contatore (da 0 a 3, 4 passaggi) ed ogni volta che il contatore cambia ( lastCounter != cycleCounter) viene avviata la gestione del relè (ManageCoil).
Per simulare il tutto ho messo il valore pid in maniera fissa, parte da 0 e viene sommato di 10 ad ogni azzeramento del contatore(questo per verificare la logica della durata con la quale il relè deve rimanere eccitato in base al valore)
Il valore restituito da ComputePid varia da 0 a 100 (% percentuale) e viene poi mappato in valori da 0 a 4 (totale 5 combinazioni, 0% sempre spento, 25% acceso 1 secondo su 4,50% acceso 2 secondi su 4, 75% acceso 3 secondi su 4,100% acceso per tutto il periodo)
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 16, 2012, 05:03 pm
Si effettivamente era una domanda stupida la mia, mi scuso nuovamente per l'ignoranza.
Mi pare di capire cmq che in questo codice, non si parli ancora, ne di sonde di temperatura, ne di display, ma solo del famigerato PID, giusto?
Un'altra domanda delle mie: per la compilazione del codice, o meglio, per avere uno sketch funzionante con tutto quello che necessita per funzionare ovvero, sonda e display per visualizzare temperatura, bisogna già preoccuparsi della parte elettromeccanica, o si può ancora aspettare?
Perchè se si, avendo in mano le specifiche degli RSS piuttosto che delle resistenze, potrei già portarmi avanti.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 16, 2012, 05:48 pm
No per dirla tutta nel codice non c'è traccia nemmeno del controllo PID, ma è solo l'idea di come gestire l'accenzione del relè in base alla richiesta di potenza senza fargli fare cicli di attacca/stacca continui.
E' una simulazione.
Ma se tu intanto vuoi portarti avanti e fare altro fai pure  ,se vuoi fare tutto gestito da arduino con pulsantini display etc etc etc ce n'è ancora tanta di strada da fare ! :smiley-mr-green:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 16, 2012, 05:53 pm
Era solo per rendermi utile, visto che per me queste cose sono come un incrocio tra arabo e cinese! :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 16, 2012, 10:01 pm
Ma la mia non era una battuta, se intanto ti studi un sistema di menù, configurazioni e una logica d'uso non è lavoro sprecato.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: ratto93 on Oct 16, 2012, 10:13 pm
Scusatemi ma mi inserisco un attimo...
Questa cosa del controllare la temperatura con il PID interessa anche a me... Io dovrei riscaladare un ambiente diciamo di un 6-7 litri e tenerlo ad una 60ina di gradi solo che il fluido a suo interno è aria.. Posso usare lo stesso PID modificandone i parametri vero ? Funzionarebbe allo stesso modo ?
Grazie
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: lestofante on Oct 16, 2012, 10:16 pm
mr, non se ne parla se non ci dai le specifiche. Di che materiale si parla? Qual'è il volume/litraggio di materiale? che temperatura o che lavorazione vuoi ottenere? di quanto può sbagliare questa lavorazione? quanto spazio hai ha disposizione (o meglio, è una cosa che puoi montare permanentemente o va smontata ogni giorno/settimana/anno)?

A dir la verità quà si sta già pensando al codice senza prima avere idea di cosa si vuole ottenere... quindi a te la prima mossa. Spiegaci dettagliatamente

@ratto: dipende. Come diceva astro, più è piccolo il volume da mantenere in temperatura e più veloci dovranno essere i vari sensori/attuatori. In oltre se la temperatura deve essere costante, il semplice riscaldamente per irraggiamento potrebbe non essere sufficiente e bisogna pensare ad un sistema di ricircolo forzato dell'aria.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: ratto93 on Oct 16, 2012, 11:05 pm
Devo fare un piccolo seccatoio per i funghi... la temperatura non è cruciale può anche oscillare l'importante è che non mi superi i 70° o che scenda sotto i 55°...
Lo scatolotto sarà di legno in modo che possa assorbire l'umidità e il riscaldamento sarà fatto da resistenze corazzate + dissipatore + ventolina per far circolare l'aria calda...
secondo te possono bastare ?
poi non vi sporco più il topic regazzi tranquilli :)
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: pablos71 on Oct 17, 2012, 12:30 am
Allora ... la produzione di sta birra è pronta o no? dai che ho sete!!  :D :D
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: lestofante on Oct 17, 2012, 03:40 am
non ho idea del potenziale calorico delle resistenze, e forse nemmeno tu. Senza le specifiche, l'unica è la prova sul campo...
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: cyberhs on Oct 17, 2012, 08:24 am
Per Ratto:

Il controllo PID serve quando hai a che fare con range di temperatura brevi (uno o due gradi).

Nel tuo caso, una normale isteresi è sufficiente, a mio avviso.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: dab77 on Oct 17, 2012, 12:53 pm
Mi aggiungo a questa interessantissima discussione. mi piacciono entrambi gli argomenti (Birra e PID..)
Produco anch'io birra, anche se in realtà l'ultima volta è stato un annetto fa..
Altra cosa importante che non hai specificato.. quanti litri di cotta intendi fare?
Io per esempio facevo 50l di cotta, a gas, col fornellone da pomodori, e una volta raggiunta la temperatura un tale volume di liquido la tiene per 15-20 minuti senza scendere un granchè, quindi secondo me non c'è da esagerare con la precisione del PID. nel senso che un controllo ogni 4 secondi è inutile. e per lo stesso motivo va benissimo un relè on/off, che tanto non è che fai accensioni di 10 secondi, le fai di almeno 10 minuti per mantenere la temperatura.
Nei vari brico si trovano le resistenze di ricambio per gli scalda acqua. Se hai possibilità di 'lavorare' la pentola, io userei un paio di quelle, più la pala che mescola il fondo di continuo. Ah, per questa lascia perdere il controllo di arduino, tanto una volta che l'accendi rimane accesa per 4 ore minimo...ergo accendi a mano.
Se poi nella pentola fai anche il doppio fondo forato e metti il rubinetto sotto hai fatto bingo!
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: ratto93 on Oct 17, 2012, 01:29 pm

Per Ratto:

Il controllo PID serve quando hai a che fare con range di temperatura brevi (uno o due gradi).

Nel tuo caso, una normale isteresi è sufficiente, a mio avviso.

Tanto meglio allora  ;)
Potrei farmelo proprio ad operazionali alla vecchia maniera ora che ci penso, graziee  :)
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: astrobeed on Oct 17, 2012, 01:34 pm
Visto il proliferare di produttori diy di birra non è che serve un beta tester del prodotto finale ?  :smiley-mr-green:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: leo72 on Oct 17, 2012, 01:37 pm

Visto il proliferare di produttori diy di birra non è che serve un beta tester del prodotto finale ?  :smiley-mr-green:

Per avere un sample come si fa?  :smiley-yell:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 17, 2012, 02:17 pm

Visto il proliferare di produttori diy di birra non è che serve un beta tester del prodotto finale ?  :smiley-mr-green:


Ti posso segnare nella mia RED list, ma sappi che io produco quasi esclusivamente birre rosse stile belga.  ]:)


Bando alle ciance, riepilogo il mio sistema birrificante:

MashThun (tino di ammostamento) capacità 70lt, materiale acciaio inox , fondo filtrante di tipo bazooka completamente in acciaio inox, pale agitatore grani in acciaio inox pilotate da motoriduttore (motore tergicristallo camion :D) , coperchio semistagno con guarnizione di tenuta.
Fonte energetica piastra elettrica vetroceramica 2500w.

Sto allestendo una piccola scheda che farà da interprete tra la sonda di temperatura e l'azionamento del relè verso il PC, per fare prove userò questo abbinato ad un software c# che si occuperà solo del pilotaggio semi-manuale del relè e della raccolta dei dati di temperatura rilevati nel tempo dalla sonda.
Con questo conto di fare esperimenti sufficienti a poter trasferire poi tutta la logica del controllo su arduino.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 17, 2012, 04:10 pm
Ma per piastra riscaldante in vetro ceramica, intendi quello portatili Niky?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 17, 2012, 04:57 pm
Yess, tipo questa (http://salestores.com/summit355.html) per esempio , ma non è esattamente quella.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 19, 2012, 03:43 pm
Trovato un pò di tempo ho messo insieme un pò di righe di codice per il controllo

(http://imageshack.us/a/img62/7118/thermocontrol.jpg)


Nella foto la linea rossa è la temperatura rilevata (simulata al momento da una funzione)
La linea centrale gialla è la temperatura impostata  e l'altra linea celeste è il valore del controllo pid .

ora mi manca di prendere l'arduino attaccare sonda e relè e vedere come si comporta in una situazione reale.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: GINGARDU on Oct 19, 2012, 04:02 pm

Ma per piastra riscaldante in vetro ceramica, intendi quello portatili Niky?


ma sei sicuro che per scaldare  e tenere a temperatura un po di brodo   ci va tanto studio?

va bene  tenerere a bada un altoforno  che produce/costa milioni di euro  bisogna essere previdenti,

ma per queste cose le soluzioni sono gia state trovate e collaudate

Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 19, 2012, 10:08 pm
Rieccomi, scusate per l'assenza prolungata ma ,ho passato 4 giorni di passione!
Niky, l'hai presa proprio sul serio 'sta cosa! :smiley-mr-green:
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 19, 2012, 10:20 pm
No è una vita che devo finire quel coso e non ho mai trovato tempo, ora che ci ho rimesso le mani non farmi cambiare idea!!!!
Parte del progetto la riutilizzero anche per un sistema di cottura a bassa temperatura che volevo fare da tempo.
Non tutti sanno che 'il brodo' cotto a bassa temperatura è mooolto più buono! XD
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 20, 2012, 04:27 pm
Allora, partiamo dal principio.....
Non riesco a leggere nemmeno una temperatura a seriale.
Sonda ds18b20 e arduino uno rev3.
Come si scrive il codice?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: llluca on Oct 20, 2012, 04:51 pm

Sonda ds18b20 e arduino uno rev3.
Come si scrive il codice?

ciao,
scaricati OneWire.zip da:
http://www.pjrc.com/teensy/td_libs_OneWire.html
una volta decompresso deve essere messo nella cartella libraries.
Dopo aver rilanciato Arduino nel menu file => esempi => OneWire troverai:
L' esempio DS18x20_Temperature  bello e pronto

Luca
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 22, 2012, 09:34 am
Ho caricato quella libreria, ma il risultato è che legge una temperatura maggiore di circa 3°C rispetto ad un termometro a mercurio che ritengo affidabile.
Provando poi a collegare la sonda in parasite mode, la situazione peggiora ancora di più.
Poi, siccome dovrò visualizzare la temperatura su un display, cosa si può togliere dal codice, in maniera di visualizzare soltanto "temperatura = 26,5" (es.)?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 22, 2012, 09:38 am
Il codice è questo


#include <OneWire.h>

// DS18S20 Temperature chip i/o
OneWire ds(10);  // on pin 10

void setup(void) {
  // initialize inputs/outputs
  // start serial port
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
      Serial.print("No more addresses.\n");
      ds.reset_search();
      return;
  }

  Serial.print("R=");
  for( i = 0; i < 8; i++) {
    Serial.print(addr, HEX);
    Serial.print(" ");
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n");
      return;
  }

  if ( addr[0] == 0x10) {
      Serial.print("Device is a DS18S20 family device.\n");
  }
  else if ( addr[0] == 0x28) {
      Serial.print("Device is a DS18B20 family device.\n");
  }
  else {
      Serial.print("Device family is not recognized: 0x");
      Serial.println(addr[0],HEX);
      return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end

  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.

  present = ds.reset();
  ds.select(addr);   
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("P=");
  Serial.print(present,HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data = ds.read();
    Serial.print(data, HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print( OneWire::crc8( data, 8), HEX);
  Serial.println();
}
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: menniti on Oct 22, 2012, 11:15 am
è meglio se lo racchiudi tra i tag "code"
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: dab77 on Oct 22, 2012, 11:37 am
Bè, non conosco la libreria, ma nel tuo codice non vedo la conversione, quindi immagino sia nella libreria. dovresti aprire il file della libreria e trovare la riga di conversione, li sicuramente ci trovi il valore da cambiare per 'tarare' la sonda.
Per la stampa dei valori è abbastanza intuitivo, ogni riga Serial.print() stampa qualcosa, se Serial.println() stampa e poi va a capo. Individua le righe che non vuoi e le 'commenti' mettendo // all'inizio della riga. modifica poi la riga che ti stampa la temperatura e scrivici quello che vuoi.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: dab77 on Oct 22, 2012, 11:48 am
Perdonami, la conversione sta nello sketch di esempio, che tu hai tagliato, o non hai postato completamente.
alla fine dello sketch dovresti avere questo:
Code: [Select]
  // convert the data to actual temperature

  unsigned int raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // count remain gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
    // default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");
  Serial.print(fahrenheit);
  Serial.println(" Fahrenheit");

dove la riga 'celsius = (float)raw / 16.0;' ti da il risultato che viene stampato. basta che alla fine dellì'operazione aggiungi '- 3.0' e sei a posto.

il codice l'ho preso da qui (http://www.pjrc.com/teensy/td_libs_OneWire.html).

Ciao!
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 22, 2012, 12:19 pm


basta che alla fine dellì'operazione aggiungi '- 3.0' e sei a posto.

Ciao!


Pensi veramente che sottraendo 3 gradi così a muzzo  si risolva il problema??
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: lestofante on Oct 22, 2012, 12:25 pm
se vuoi fae le cose fatte bene, prendo un cubetto di ghiaccio e fai la misura, (0°), poi prendi una trazza di acqua calda e fai la prova (confronto col mercurio), poi una misura a temperatura ambiente sempre a confronto con il termometro a mercurio.

se in tutti i casi l'errore è 3gradi, allora sì, è così semplice. Altrimenti devi trovare la curva (o la retta) che unisce i punti trovati, e poi il valore che leggerai lo metterai nella funzione curva/retta e otterrai come risultato la temperatura vera.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 22, 2012, 12:45 pm
La dalla DS18b20  è una sonda di precisione che restituisce direttamente il valore in gradi celsius.

Tratto dal datasheets , pagina 3 di 22:

The DS18B20 output temperature data is calibrated in degrees  Celsius.

Per esperienza mia, sono tutte abbastanza precise ed uno scostamento di 3 gradi è inammissibile.
Secondo me il test fornito da MrLofraz è inattendibile.

@Lesto: ritengo che sia impossibile che in tutto il range misurabile ci possa essere uno scostamento costante di 3 gradi.

Prova ad utilizzare la libreria presente  a questo indirizzo con relativo esempio  , è sicuramente più completa : DallasTemperature library (http://milesburton.com/Dallas_Temperature_Control_Library)

Poi se non ricordo male la sonda che hai tu è quella rivestita di plastica, potrebbe essere quello il problema , un cattivo trasferimento termico tra l'involucro e il sensore potrebbe esserne la causa, ma se fosse questo non ha sicuramente un andamento lineare nel tempo.

Prova ad immergere entrambi i termometri in acqua fredda e a lasciarli li per un pò di tempo,il valore della tua sonda dovrebbe decrescere nel tempo fino a stabilizzarsi ad un valore comuque non corretto (più alto della T reale).

@MrLofraz: lascia perdere il parasite mode per ora, t'infogni di più e basta!


Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: GINGARDU on Oct 22, 2012, 01:42 pm
mah,...   un terrmometro ambientale  che sballa di 3 gradi  deve finire in posto solo 
la pattumiera
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: lestofante on Oct 22, 2012, 01:57 pm

@Lesto: ritengo che sia impossibile che in tutto il range misurabile ci possa essere uno scostamento costante di 3 gradi.


anche io, ma magari è un "semplice" errore di calibrazione dalla fabbrica..
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: niki77 on Oct 22, 2012, 03:27 pm
Come si può notare QUI (http://yosemitefoothills.com/Thermometers/ThermometerCalibrations.html) gli scostamenti rilevati su un campione di 35 sonde (10 DS18s20 e 25 DS18b20) sono irrisori, o perlomeno molto al di sotto di quanto ci serve.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: PaoloP on Oct 23, 2012, 03:32 pm
Alla fine le librerie ti servono tutte e due.
Sia quella indicata da Nik77 --> http://download.milesburton.com/Arduino/MaximTemperature/DallasTemperature_372Beta.zip
Che quella di llluca --> http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip
Infatti la libreria di Miles si appoggia alla OneWire (sempre di Miles).

Il codice di esempio (preso sempre dalla wiki di Miles) è:
Code: [Select]
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
}

void loop(void)
{
  // call sensors.requestTemperatures() to issue a global temperature
  // request to all devices on the bus
  Serial.print("Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");
 
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0)); 
}


Per il collegamento ricordati la resistenza di pull-up sul pin centrale.
(http://itp.nyu.edu/physcomp/sensors/uploads/DS18S20Circuit.png)

Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: llluca on Oct 23, 2012, 06:04 pm

terrmometro ambientale  che sballa di 3 gradi 


secondo me l' errore dovrebbe trovarsi:
Code: [Select]
if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // count remain gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: marcello.romani on Oct 23, 2012, 06:16 pm

Scusate, eh, cosa centra sto PID?
non basta rilevare la temperatura con un sensorino e accendere e spegnere il riscaldatore per mantenere la temperatura prefissata? :smiley-mr-green:


Ma infatti...

http://www.arduino.cc/playground/Main/BarebonesPIDForEspresso

altri interessanti risultati cercando "arduino pid temperatura".
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: tazzo on Oct 23, 2012, 07:37 pm
Ho letto solo l'ultima pagina della discussione ma lasciate perdere la vasca col ghiaccio non è facile realizzarla per tarare con precisione il termometro.
Ci sono diverse varianti e tanti fake cinesi del DS18b20 che hanno un'accuratezza minore.
In genere il problema è che ci vogliono molti minuti se c'è un metallo di mezzo per segnare la temperatura giusta, è come il termometro della febbre ma molto più lento, sopratutto se si usano dei fake comprati su ebay

Ciao
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: tazzo on Oct 23, 2012, 07:46 pm
Ragazzi ho visto il codice ma non è molto bello, non fate il check sul CRC dei dati, la libreria ha un bug per le temperature negative, dovete correggerlo se andate sotto zero, ecco il codice che ho utilizzato per il mio termometro, utilizza un display LCD ed ha funzionalità di risparmio energetico, non dovreste avere problemi ad estrapolare il codice di controllo e lettura del termometro. La libreria è http://www.pjrc.com/teensy/td_libs_OneWire.html

Ciao

Code: [Select]
// Termometer DS18B20
#include <LiquidCrystal.h>
#include <OneWire.h>

// WatchDog is used to save energy instead
#include <avr/power.h>
#include <avr/sleep.h>
#include <avr/wdt.h>

const byte lcd_rs = 7;
const byte lcd_e = 5;
const byte lcd_d4 = 4;
const byte lcd_d5 = 3;
const byte lcd_d6 = 2;
const byte lcd_d7 = 1;

LiquidCrystal lcd(lcd_rs, lcd_e, lcd_d4, lcd_d5, lcd_d6, lcd_d7);
OneWire  ds(9);

volatile boolean f_wdt=1;
// Watchdog Interrupt Service / is executed when  watchdog timed out
ISR(WDT_vect) {
f_wdt=1;  // set global flag
}
void setupWatchdog(byte wdp0, byte wdp1, byte wdp2, byte wdp3) {
  // WDTCSR - Watchdog timer Control Register, used for configuring the time-out, mode of operation, etc.
  // MCUSR - MCU Status Register, used to tell the cause of the last reset, such as brown-out reset, watchdog reset, etc.
  // NOTE: for security reasons, there is a timed sequence for clearing the WDE and changing the time-out configuration.
  // If you don't use this sequence properly, you'll get unexpected results.
  cli(); //disable global interrupts
  wdt_reset();
  MCUSR &= ~(1<<WDRF);  // Clear the reset flag 
  // In order to change WDE or the prescaler, we need to set WDCE (This will allow updates for 4 clock cycles)
  WDTCSR |= (1<<WDCE) | (1<<WDE);  // Set WD_ChangeEnable and WD_resetEnable to alter the register 
  WDTCSR = wdp0<<WDP0 | wdp1<<WDP1 | wdp2<<WDP2 | wdp3<<WDP3;    // set new watchdog timeout value   
  WDTCSR |= _BV(WDIE);  // Enable the WD interrupt (note no reset) 
  sei(); //enable global interrupts
}
void Sleep()
{
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    // Set sleep enable (SE) bit:
    sleep_enable();
    // Put the device to sleep:
    sleep_mode(); // ZZZ....
    // Upon waking up, sketch continues from this point.
    sleep_disable();   
}
void sleep250ms()
{
    setupWatchdog(0,0,1,0);
    Sleep();
}
void sleep500ms()
{
    setupWatchdog(1,0,1,0);
    Sleep();
}
void sleepSecond()
{
    setupWatchdog(0,1,1,0);
    Sleep();
}
void setup() {
  // Stabilize voltage
  delay(5);
 
  // Disable ADC, SPI and TWI 
  power_adc_disable();  // Disable the Analog to Digital Converter module.
  power_spi_disable();  // Disable the Serial Peripheral Interface module.
  power_twi_disable();  // Disable the Two Wire Interface module.
  power_usart0_disable();  // Disable the USART 0 module. 
   
  lcd.begin(16, 2);
  lcd.clear();
 
  lcd.print("Thermometer v1"); 
  sleepSecond(); 
  lcd.clear();
}

byte deviceFounds = 0;
void loop() {
  if (f_wdt==1) // wait for timed out watchdog
    f_wdt=0;   

  byte data[12];
  byte addr[8];
  float celsius;
 
  // Search for the next device. The addrArray is an 8 byte array. If a device is found, addrArray is filled with the device's address and true is returned.
  // If no more devices are found, false is returned.
  if (!ds.search(addr)) {
    if(deviceFounds == 0)
    {
      lcd.clear();
      lcd.setCursor(0, 0); 
      lcd.print("No devices found"); // No more addresses     
      lcd.setCursor(0, 1);
      lcd.print("Try check probe"); // No more addresses     
      sleepSecond();
    }
    deviceFounds = 0;
   
    // Begin a new search. The next use of search will begin at the first device.
    ds.reset_search();
    sleep250ms();
    return;
  }else{
   deviceFounds++;
  }
 
  // Compute a CRC check on an array of data.
  if (OneWire::crc8(addr, 7) != addr[7]) {   
      lcd.clear();
      lcd.setCursor(0, 0);                 
      lcd.print("Address Error");     
      lcd.setCursor(0, 1);
      lcd.print("CRC is not valid");
      sleepSecond();
      return;
  }   

  // Reset the 1-wire bus. Usually this is needed before communicating with any device.
  ds.reset();
  // Select a device based on its address. After a reset, this is needed to choose which device you will use,
  // and then all communication will be with that device, until another reset.
  ds.select(addr); 
  // Write a byte, and leave power applied to the 1 wire bus.
  ds.write(0x44);         // start conversion, with parasite power on at the end
   
  // from Datasheet max conversion time is 750ms
  sleep500ms();
  sleep250ms();
 
  ds.reset(); 
  ds.select(addr);   
  ds.write(0xBE);         // Read Scratchpad
    for (byte i = 0; i < 9; i++) {  // we need 9 bytes
    data[i] = ds.read();
  }

  // Check data with CRC
  if (OneWire::crc8(data, 8) != data[8]) {   
      lcd.clear();
      lcd.setCursor(0, 0);                 
      lcd.print("Data Error");     
      lcd.setCursor(0, 1);
      lcd.print("CRC is not valid");
      sleepSecond();
      return;
  }
 
  // convert the data to actual temperature
  int raw = (data[1] << 8) | data[0];
  byte cfg = (data[4] & 0x60); // default is 12 bit resolution, 750 ms conversion time
 
  celsius = (float)raw / 16.0;

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temperatura");
  /*
  for( i = 0; i < 8; i++) {   
    lcd.print(addr[i], HEX);
  }  */
  lcd.setCursor(0, 1);
  lcd.print(celsius);
  lcd.print("C");
}
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 24, 2012, 12:56 pm
Mi sono arenato, non riesco ad andare avanti.
La temperatura è sempre "fuori" di tre gradi, sono andato completamente in palla!
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: tazzo on Oct 24, 2012, 01:12 pm
Se è fuori di 3 gradi fissa allora tanto vale correggerla via sw.. dove hai preso il sensore?
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: MrLofraz on Oct 24, 2012, 07:10 pm
Da robot italy. Oggi però, l'ho riprovata e mi sembrava meglio. Ho caricato un'altra libreria per il sensore. Adesso volevo provare a collegare anche un display e veder cosa succede.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: tazzo on Oct 24, 2012, 08:39 pm
Secondo me non puoi basarti su un termometro al mercurio.. probabilmente la temperatura più accurata è quella del sensore

Ciao
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: pierobix on May 16, 2013, 09:57 pm
Ciao, sono un appassionato dell'homebrew ed è da un pò di tempo che sto studiando un progettino per realizzare un impianto tale da riuscire a produrre intorno a 23 litri di birra con un solo recipiente. Praticamente sarebbe un clone del braumeister. Non sarei l'unico a cui è venuta questa idea e infatti qualcuno in Australia l'ha già realizzato con dei risultati ottimi. Il mio problema sta appunto nella parte della programmazione, anche se il tizio che ha realizzato il clone ha messo ha disposizione il codice utilizzato per il suo mirocontrollore che non è arduino. Vengo al dunque, volevo chiedere se a qualcuno di voi, che è addentrato nel campo della programmazione, potrebbe essergli di ausilio tale codice.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: pablos71 on May 16, 2013, 10:50 pm
Penso che tu abbia condiviso un programma che qualcun'altro esperto birraiolo convertirà senza dirtelo e senza dartelo, ma hai dimenticato un fattore fondamentale, senza conoscere l'hardware e schemi vari i software sono parole al vento, la tua richiesta così a occhio richiede una 30ina di ore di lavoro (ipotizzando di avere completa disposizione degli apparati per farne i test), davvero ti aspetti che qualcuno per la gloria ......
Inoltre non hai capito lo scopo del forum, sinceramente le richieste di questo genere ...  un po' "mi offendono" , senza offese :) io fossi in te eliminerei il post o lo reimposterei diversamente

ciao
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: pierobix on May 17, 2013, 10:27 am
Chiedo scusa se ho offeso qualcuno con il mio post, ma pensavo di trovare qualcuno che appassionato come me poteva essere intenzionato a realizzare un sistema di birrificazione completamente automatizzato. Certo immagino che di lavoro ce ne sia tanto dietro, grazie comunque.
Giusto per info, avrei anche l'hardware utilizzato con quel codice e l'unico mio motivo per cui non voglio utilizzarlo è perché per programmarlo ha bisogno di una porta parallela e poi perché rispetto ad Arduino sarebbe molto limitato.
Title: Re: Scrittura codice per impianto birra cerco collaboratori Monza/Milano
Post by: saviothecnic on Aug 08, 2013, 01:38 pm
Per gli Amici Brassatori del forum segnalo questo post che ho aperto dove siamo ad un bel Punto

http://forum.arduino.cc/index.php?topic=176121.0

Senza magari fare due tre cose diverse se ne fa una piu versatile :D

Questo nasce per impianti tipo Mastro Birraio = Brauimister in tedesco

Qui vedete anche qualcosa sulla parte Meccanica http://www.saviot.com/index.php?option=com_content&view=article&id=15:braduino-italy&catid=8&Itemid=101