Jump to content
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

Recommended Posts

Be per avere più visibilità  anche dal mondo di programmatori arduino ho appena aperto la richiesta anche sul forum Italiano di Arduino

Questo è il link magari li per dubbi sulla programmazione è piu facile trovare aiuto :D

 

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

 

Grazie

Grazie Savio 

e' un po che volevo chiedere aiuto li...per algoritmo del PID+PWM

vediamo se arriva qualche suggerimento

 

Davide

Share this post


Link to post
Share on other sites

e' un po che volevo chiedere aiuto li...per algoritmo del PID+PWM vediamo se arriva qualche suggerimento Davide

 

Si Davide aspettiamo un paio di giorni e vediamo se si fa vivo qualcuno io spero di si visto il sucesso che sta avendo argomento BirraDuino

Questo significa che ci sono molti appassionati come noi che hanno piacere ad automatizzare la cosa

Poi eventualmente posti tu la tua prova che hai postato qui con i tuoi dubbi in quel topic cosi vediamo se si risveglia la cosa :D

Share this post


Link to post
Share on other sites

Bene la discussione per la parte Arduino sta continuando sul forum di arduino dove si spera di trovare persone che possano darci una mano

Ovviamente se qualcuno qui legge e sa e vuole darci un a mano partecipi pure :D

 

Io intanto ieri ho iniziato a giocherellare un po con le celle di Peltier aggiornero qui per le varie foto e video sul argomento

http://www.saviot.com/index.php?option=com_content&view=article&id=18&Itemid=172

 

Poi ovviamente in questo topic verranno riversate tutte le info attienti parte Sw e HW.

Share this post


Link to post
Share on other sites

Bene la discussione per la parte Arduino sta continuando sul forum di arduino dove si spera di trovare persone che possano darci una mano

Ovviamente se qualcuno qui legge e sa e vuole darci un a mano partecipi pure :D

 

Io intanto ieri ho iniziato a giocherellare un po con le celle di Peltier aggiornero qui per le varie foto e video sul argomento

http://www.saviot.com/index.php?option=com_content&view=article&id=18&Itemid=172

 

Poi ovviamente in questo topic verranno riversate tutte le info attienti parte Sw e HW.

 

Bravo Savio...la discussione continua assolutamente anche qua dove e' nata e la sperimentazione va avanti

Sul forum di arduino stiamo discutendo di varie opzioni hw di pilotaggio celle, frigo, resistenze e ventole...ma manca ancora un elemento fondamentale ovvero algoritmo software per gestire con PID il concetto "termostatico" ovvero la gestione caldo/freddo..chiunque voglia contribuire e' ben accetto

 

E ora ho anche un set up minimale per sperimentare e mettere a punto SW

 

-cella peltier 60w

-due dissipatori con ventole

-sonda LM35

-arduino uno

-motor shield per h-bridge

-alimentatore 12V 5A

 

2013-09-28%252014.25.16.jpg

 

 

stay tuned

Davide

Share this post


Link to post
Share on other sites

Bravo Savio...la discussione continua assolutamente anche qua dove e' nata e la sperimentazione va avanti

 

Grazie da uno sguardo qui http://forum.arduino.cc//index.php?PHPSESSID=eg91i9nmn2i7eg3ljbg6646v90&topic=117086.0

I sto facendo un po di ricerca in rete e contattando un po di amici per vedere se ci danno una mano in questa parte.

 

Da quello che ho capito correggimi se ho capito male

 

La parte soft che ci manca è:

Un controllo PWM per la cella comandato da protocollo PID

E la cosa piu importante che il controllo deve capire dalla temperatura di set pont e quella letta se pilotare la cella in caldo o freddo Esatto ?

Share this post


Link to post
Share on other sites

 

 

La parte soft che ci manca è:

Un controllo PWM per la cella comandato da protocollo PID

E la cosa piu importante che il controllo deve capire dalla temperatura di set pont e quella letta se pilotare la cella in caldo o freddo Esatto ?

 

Si Savio ...quello che ci serve e' capire come gestire le librerie PID di arduino che sono fatte e pensate per andare in una sola direzione...o frigo o stufa... ;)

A noi serve un algoritmo in cui il PID lavora si in un senso che nell'altro e all'atto dell passaggio da frigo a stufa, con opportuna isteresi, alza un bit che serve o per pilotare il rele' di cui parlavamo sul forum di arduino o il pin direzione del circuito h-bridge

 

Il software che ho inserito nel forum si ferma al controllo monodirezionale (frigo)...avrei bisogno di un aiuto per renderlo bidirezionale

:good:

 

Davide

Share this post


Link to post
Share on other sites

OK ho mandato un po di mail ad amici di vecchia data e sto scrivendo in vari forum che frequentavo

Mi sono permesso ovviamente citandoti di postare le tue bozze di codice cosi vediamo se possono aiutarci

 

http://forum.fisertek.it/viewtopic.php?f=32&t=3233&p=39034#p39034

 

"

Fiser suggerisce

occorre fare due parti di programma, uno per il caldo e l'altro per il freddo.
all'inizio poi bisogna realizzare un confronto per decidere quale delle due parti attivare.
vi basta come traccia?"

 

Quindi Davide credo che dobbiamo vederla cosi:

 

Un controllo PID PWM uno lo si chiama CALDO e uno FREDDO

 

Quindi vediamo dalla parte soft la cella come due elementi distinti tipo Frigo e Resistenza

 

E un controllo PID Con isteresi On Off decide se far partire la cella in CALDO o in FREDDO o Off se la temperatura è stabile in un rang di X°C per non tenere sempre il gruppo accesso 24h su 24

 

Dai un occhio anche qui https://sites.google.com/site/arduinotempcontrol/ e qui http://www.homebrewtalk.com/f51/diy-pid-controller-beginner-arduino-project-331347/index2.html

https://github.com/mhelbig/ThermoelectricCoolerController http://springcitylaunchpad.org/whats-new/2012/11/28/hacked-thermoelectric-cooler-part-2

 

Simpatico anche questo spunto http://thebobrowe.com/?p=840 http://thebobrowe.com/wp-content/uploads/2012/08/KeypadTempControl_rev7.txt

Edited by saviothecnic

Share this post


Link to post
Share on other sites

Bene inizio ad assemblare la prima parte del ricircolatore che poi andà  nella serpentina Inox del fermentatore.

Posto due foto al volo conto ci realizzare probabilmente un sistema liquido liquido per la massima efficienza :D

Share this post


Link to post
Share on other sites

arrivato finalmente il ponte di H da 43 A

 

IMG_20131110_222103.jpg

 

spero la prossima settimana di avere tempo di collegarlo al mio set up di test e provare il codice che ci hanno fornito gli amici sul forum di arduino...

Inverno e' lungo ..un po di tempo per sistemare il tutto c'e' !  ;)

 

 

Davide

Share this post


Link to post
Share on other sites

Ho rimesso in piedi il set up di test simulando anche una "mini-cella" termostatata con un contenitori di polistirolo per gelati in cui e' inserito uno dei due dissipatori+ventola.

 

%255BUNSET%255D.jpg

 

La sonda LM35 legge la temperatura interna al piccolo volume della cella

 

%255BUNSET%255D.jpg

 

usando le librerie arduino PID con settaggio delle tre costanti Kp,Ki,Kd pari a 2,5,1 e usando la modalità  DIRECT (frigo) faccio fatica a stabilizzare il sistema...

 

La temperatura rilevata dal LM35 oscilla anche di molto (pur facendo 5 rilevazioni e calcolando l media) e il valore letto non corrisponde a quello reale misurato con un termometro digitale indipendnete.

 

c'e' qualche cosa che non quadra..devo capire cosa o cambio sonda di temperatura..

 

Davide

Share this post


Link to post
Share on other sites

daro' una occhiata ma al solito non vorrei essere troppo dispersivo e capire perche' il mio codice da problemi nella lettura della temperatura dal sensore

 

tanto che gironzolavo ho trovato un altro dispositivo commericale (oltre a quello della TETECH) che fa proprio quello che ci serve...

 

Dalla LAIRD

 

http://it.mouser.com/images/lairdtechnologies/lrg/TC-14-PR-59.jpg

 

pilota in PWM le celle (fino a 16A)

pilota 2 ventole

Uscita rele'

vari sensori

programmabile da PC

 

interessante..

 

Davide

Share this post


Link to post
Share on other sites

Davide non mollare non andiamo su pappe pronte più divertente qualcosa fai da te e sicuramente con arduino riusciamo :D

Io se riesco vedo di adattare questo per fare uno spillatore refrigerato con il mio cornelius da 9Lt :D

http://thebobrowe.com/?p=840

 

 Mollare ?? Mai ! divertimento nel farlo e' superiore a ogni momento di sconforto quando il sensore di temperatura non ne vuole sapere di funzionare e miusra sempre 85...chissa' perche' non 84 o 86  :fool:

 

Lo spunto era per dire "non inventiamoci nulla" e cerchiamo di riportare sul nostro progetto una lista di requisiti definita, chiara, sensata e magari con priorita' di sviluppo...senza andare a caso e prendendo spunto dalle  soluzioni "commerciali" e studiando  la loro implementazione

 

Ad esempio tutto il tema della difficolta' nel pilotare PWM la cella che non e' un puro carico resistivo l'ho appreso giocando con il controller della TETECH che per me e' e resta il riferimento di soluzione

 

Davide

Share this post


Link to post
Share on other sites

Trovato l'errore ..mancava banalmente il richiamo a una funzione di inizializzazione della lettura della temperatura !

 

Ora ci siamo ..funziona !  :good:
sostitutito LM35 con DS18B20 e la rilevazione della temperatura e' stabile 

Come si vede dal grafico la catena Sensore temperatura -> PID -->PWM -> Hbridge  e' stabile e impostato un set point di 16C, partendo dalla temperatura ambiente ,in poco tempo algoritmo converge e temperatura dentro la scatola di polistirolo rimane stabile al set point. 

Per contro la potenza applicata alla cella (uscita del PID = duty cycle del PWM ) si riduce via via fino a stabilizzarsi anch'essa intorno all' 80%
 
grafico%2520temperature%2520DS18B20.jpg
 
abbiamo messo un punto fermo !
 
prossimi passi
-provare algoritmo PID  inverso per generare calore e verificare la stabilità  come "stufa"
-mettere insieme i due algoritmi e verificare la stabilità  della cella termostatica
 
stay tuned
Davide

Share this post


Link to post
Share on other sites

Ottimo io tra poco parto solo per la parte freddo per lo spillatore refrigerato

I componenti iniziali sono questi :D Apriro poi un topic dedicato ma usero parte del elettorncia di questo progetto :D

https://plus.google.com/photos/117096022619927896725/albums/5950688350142369569?banner=pwa
20131126_203137.jpg

Mentre per la camera di fermentazione ho quasi tutto qui i compo del lato scambiatore corto dall' altra quello che va nella serpentina

vi ricordo che ho deciso di far eun sistema a doppio scambio h20

20131126_202041.jpg

Share this post


Link to post
Share on other sites
Anche la prova nella direzione opposta ovvero usando il lato caldo della cella all'interno del contenitore che funge da camera termosatata ho raggiunto un discreto risultato. Sono partito da temperatura ambiente e ho impostato set point 30C Ho cambiato la direction nel PID da reverse a DIRECT e invertito h-bridge Sotto trovate risultati..come si vede lentamente PID converge anche se le sovra elongazioni rispetto al set point sono maggiori rispetto al caso frigo. Probabilmente il set di parametri Ki Kp Kd usato non è ottimizzato x le caratteristiche termodinamiche del mio set up di prova grafico%20temperature%20DS18B20%20heatin Direi che con i limiti di un ambiente di prova la catena nelle due direzioni fa il suo lavoro ora si tratta di mettere tutto insieme e vedere se il sistema rimane stabile Stay tuned Davide Inviato dal mio Nexus 7 con Tapatalk 4 Edited by mysobry

Share this post


Link to post
Share on other sites

àˆ un thread del 2013... penso sia passato un po' troppo tempo e Davide era impegnato in un altro progetto.

Share this post


Link to post
Share on other sites

Si ma la richiesta di volontari capaci di programmare Arduino

Se si vuole giocare con una cosa Open per Gestire Camera di Femrentazione con Arduino resta sempre valida :D

Share this post


Link to post
Share on other sites

Io sono sempre fermo col firmware ad una versione funzionante x il frigo con un algoritmo di approssimazione asimmetrico (perfezionabile) e un algoritmo iniziale da valutare su banco di prova x la termoregolazione a celle di peltier.

Così come sono fermo a metà  della riscrittura di ArdBir da più di 1 anno

 

Inviato dal mio SM-G925F utilizzando Tapatalk

Share this post


Link to post
Share on other sites

Dovremmo istituire un gruppo apposito ed iniziare a lavorare ad un progetto serio e open source.

Io stavo anche pensando di realizzare qualcosa tipo Beersmith, sempre open source.

Share this post


Link to post
Share on other sites

Dovremmo istituire un gruppo apposito ed iniziare a lavorare ad un progetto serio e open source.

Io stavo anche pensando di realizzare qualcosa tipo Beersmith, sempre open source.

 

Io come ho fatto per ArdBir sono sempre disponibile per giocare e testare

Purtroppo le mie competenze si fermano ad un po d' elettronica programamzione 0 :(

Share this post


Link to post
Share on other sites

Allora ragazzi,

penso di fare cosa gradita postando lo sketch dove ho unito la funzione di controllo ventole in base alla temperatura e il PID (di Mysobry) per controllare la temperatura del mosto e controllare le celle di Peltier. 

Allego anche lo schema, elementare, del circuito.

 

Non ho avuto ancora la possibilità di testarlo, poiché mi manca la parte hardware, quindi non so se effettivamente funzioni o meno.

/*
Il programma misura la temperatura tramite sensori DS18B20 per regolare la rotazione dei due ventole da PC a 12V 0,25A, 
per controllare la temperatura della birra in fermentazione usando un terzo DS18B20 con funzione PID
L'uscita del PID pilota un circuito H-bridge per le celle di Peltier
*/

#include <OneWire.h>
#include <rgb_lcd.h> // libreria di gestione del display lcd Grove I2C
#include <DallasTemperature.h>  // dichiarazione di utilizzo della libreria DallasTemperature
#include <PID_v1.h>

/* Definizioni globali */

// Il terminale data del sensore è connesso alla porta 2 e 4 di Arduino

#define ONE_WIRE_BUS_1 2
#define ONE_WIRE_BUS_2 4
#define ONE_WIRE_BUS_3 A0 

// Imposta la comunicazione oneWire per comunicare
// con un dispositivo compatibile
OneWire oneWire_1(ONE_WIRE_BUS_1);
OneWire oneWire_2(ONE_WIRE_BUS_2);
OneWire oneWire_3(ONE_WIRE_BUS_3);

// Passaggio oneWire reference alla Dallas Temperature. 
DallasTemperature sensor_1(&oneWire_1);
DallasTemperature sensor_2(&oneWire_2);
DallasTemperature sensor_3(&oneWire_3);

double Setpoint, Input, Output;
                     
int SNS_A   = A0; // current read
int LPWM = 9; // H-bridge leg 1 ->LPWM
int enL = 8; // H-bridge enable pin 1 -> L_EN
int RPWM = 6; // H-bridge leg 2 ->RPWM
int enR = 7; // H-bridge enable pin 2 -> R_EN

int FANsensor0 = 10;   // fan tachometer connected to digital pin 10
int letturaFANsensor0;
unsigned long FANsignal0; // time duration between tachometer pulses
float RPM0; // fan speed in RPM

int FANsensor1 = 11;   // fan tachometer connected to digital pin 11
int letturaFANsensor1;
unsigned long FANsignal1; // time duration between tachometer pulses
float RPM1; // fan speed in RPM

unsigned long int time;
int sampletime=1; // Number of sample to average-out sampling values
/* Impostazione dell'hardware */

//Inizializzazione del PID, impostazione a DIRECT (frigo), e dell'LCD
PID myPID(&Input, &Output, &Setpoint,2,5,1, REVERSE);
rgb_lcd lcd ;

void setup() 
{
  Setpoint = 30;          //definizione del set point
  Serial.begin(9600);
  Serial.println("Temperatura    PIDout    Corrente\n");
  time=millis();
  lcd.begin(16, 2);
  digitalWrite(FANsensor0, HIGH);  // turn on pull-up resistor
  digitalWrite(FANsensor1, HIGH);  // turn on pull-up resistor

  //turn the PID on
  myPID.SetMode(AUTOMATIC);
  // Start up the OneWire library
  sensor_1.begin();
  sensor_2.begin();
  
  // Configurazione PIN direzione e freno H-bridge
  pinMode(LPWM, OUTPUT); 
  pinMode(RPWM, OUTPUT); 
  pinMode(enL, OUTPUT);
  pinMode(enR, OUTPUT);
  digitalWrite(enL, HIGH);
  digitalWrite(enR, HIGH);

}

void loop()
{
    time=millis();
  
  // inizio loop per visualizzare temperature e RPM
  lcd.setCursor(0,0);
  if(time>letturaFANsensor0+1){
  lcd.print("RPM:");
  FANsignal0=0;
  for (int i = 0; i < sampletime; i++) { // Average out pulseIn time reading in microseconds
  FANsignal0 = FANsignal0+pulseIn(FANsensor0, HIGH);
  }
  RPM0=(600000000/float(FANsignal0))/40; // in RPM
  lcd.print(int(RPM0)); // displays RPM value
  }
  
  lcd.setCursor(8,0);
  if(time>letturaFANsensor1+1){
  lcd.print("RPM:");
  FANsignal1=0;
  for (int i = 0; i < sampletime; i++) { // Average out pulseIn time reading in microseconds
  FANsignal1 = FANsignal1+pulseIn(FANsensor1, HIGH);
  }
  RPM1=(600000000/float(FANsignal1))/40; // in RPM
  lcd.print(int(RPM1)); // displays RPM value
  } 
  
  lcd.setCursor(0,1);
  lcd.print("T1:");
  sensor_1.requestTemperatures();
  lcd.println(sensor_1.getTempCByIndex(0));

  lcd.setCursor(8,1);
  lcd.print("T2:");
  sensor_2.requestTemperatures();
  lcd.println(sensor_2.getTempCByIndex(0));
  
  delay(1000);
  // fine loop per visualizzare temperature e RPM

  // inizio loop PID 
  double temp = sensor_3.getTempCByIndex(0);  // legge il valore della temperatura e la memorizza nella var. temp.

  Input = temp;              //temperatura passata in ingresso a PID
  myPID.Compute(); 
  
  digitalWrite(LPWM, LOW);
  analogWrite(RPWM,Output); //PWM con segnale in uscita pari a uscita PID
    
  Serial.print( temp);    // invia i valori alla seriale
  Serial.print("\t");
  Serial.print((Output/255*100));
  Serial.print("\t");
  Serial.print(analogRead(SNS_A));
  Serial.print("\n");

delay (1000);
// fine loop PID


}

 

Schema.jpg

Edited by Filippo77

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

×