Arduino Forum

International => Italiano => Software => Topic started by: saviothecnic on Oct 08, 2013, 12:19 pm

Title: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 08, 2013, 12:19 pm
Bene visto che ho notato dal numero di visite del topic per Automazione cotta BirraDuino che qui abbiamo molti appassionati
della brassatura di Birra casalinga nella linea di voler automatizzare tutto il processo con poca spesa

Sono qui a chiedere se ci sono volontari per realizzare un software/firmware non so come sia più apropiaot chiamarlo e contestualmente HW
per automatizzare una camera di femrentazione che ovviamente oltre che per la birra può essere usata per altro :D

Chi ha capacita di programmazione Arduino o di elettronica e vuole partecipare per dare una mano ben venga
IO data la mia incacapita di programmare mi do volontario per i test  ;)

La mia idea è:

Come hardware :

Sensore Audio che serve per monitorare il gorgogliamento durante la fermentazione
http://www.ebay.it/itm/1X-Sound-detection-sensor-module-sound-sensor-Intelligent-vehicle-for-arduino-/330824691323?pt=LH_DefaultDomain_0&hash=item4d06b02e7b
Volendo se ne puo usare anche uno ottico

Due Sensori Umidita Temenratura DHT11
http://www.ebay.it/itm/330828752668?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Inmancabile Lettore Scrittore SD per I Log e qui Usiamo una Schield LAN SD tipo la classica basata su W5100
http://www.ebay.it/itm/Ethernet-Shield-W5100-Micro-SD-Card-SlotFor-Arduino-2009-UNO-Mega-1280-2560-G6-/200946432597?pt=LH_DefaultDomain_0&hash=item2ec9573a55

Ovviamente come Cuore di tutto un Arduino Mega 2560

Come interfaccia per il mondo esterno un bel Lcd HD44780 20x4
Tipo questo http://www.ebay.it/itm/400448319287?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Ovviamente il Modulo RTC serve per avere un log affidabile con data ora e giorno esatti :D
http://www.ebay.it/itm/200804974594?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

E un ACS712 current sensor module Cosi possiamo anche valutare quando ha consumato e ci è costato in soldini un ciclo di femrentazione :D
http://www.ebay.it/itm/270977916829?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Per lo stadio di Potenza pilotaggio celle Peltier usare IRLB3034PBF HEXFET Power MOSFET TO-220
http://www.ebay.it/itm/261034379362?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649
Oppure delle schede x motori già fatte tipo queste  H-Bridge PWM
http://www.ebay.it/itm/230965079712?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649



La cosa che deve fare è :


Gestione con protocollo PID Temperatura
Con 4 uscite PWM e Due rele e un uscita Buzzer

Cosi strutturato selezione per gestione o con celle peltier quindi in caso gestione inversione polarita o separati in due moduli
in caso uno vuole gestire inversioen con due canali diversi e due sezioni nella camera

O gestione classica mista resistenza gestita in PWM e gruppo frigo gestito da rele e ovviamente gruppo ventole per il ricircolo aria

Gestito o in PWM velocita regolabile o da Rele

Per questo 4 canali PWM e Due canali Rele

La retroilluminazione del LCD appena si preme un Tasto come pulsanti userei il classico schema a 4 tasti come in BirraDuino "< > Ok Esc"

Il Log dovrebbe prendere:
I dati termentatura fermentazione inpostata umidita e temepratura rilevata interna ed eterna camera di femrnetazione e cadenza sonora del gorgogliamento.
Il Buzzer puo tornare utile come allarme se non riesce a seguire la temperatura impostata e Allarme Porta Aperta

Che ne dite è fattibile Ovviamente si farebbe una Schield semplice mappando solo i Pin necessari senza saldare tutti gli streep I/O non usati.

Per il gorgolio si pensa anche ad un analizzatore tipo ottico il massimo sarebbe se esiste un sensore di OG elettronico

Volendo si puo aggiungere per chi se la sente anche un sensore direttamente nel mosto uno tipo il classico DS18B20

Cosi da avere in Analisi Tem Umidita Interna esterna e del mosto quindi tre temeprature in analisi
Anche se in teoria quella interna e del mosto dovrebbero essere uguali ma in femrentazione lettura diretta sicuramente è meglio
ma non tutti se la sentono di mettere una sonda dentro il mosto io personalmente eviterei ma dato che di I/O ne abbiamo si puo provedere.

Allego anche una bozza di schema a blocchi che ho ipotizzato spero che sono risucto a spiegare quello che mi piacerebbe fare :D

Ma se per iniziare già riusciamo a fargli fare quello che fa sto giocattolino per in gestione PWM sarebbe gia un ottimo Inizio :D

http://www.ebay.it/itm/DC-12V-Temperature-Controller-of-Thermoelectric-Cooler-Peltier-/251351887469?pt=LH_DefaultDomain_0&hash=item3a85bd6e6d

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 08, 2013, 06:57 pm
Grazie Savio per apertura del thread

mi presento rapidamente ..mi chiamo Davide sono un maker, un DIY enthuisast , un appassionato di tecnologia e  smanetto con Arduino e similari...oltre che essere un Homebrewer da lunga data.
Sul forum di area birra con il nick Mysobry http://forum.areabirra.it/user/8346-mysobry/  (http://forum.areabirra.it/user/8346-mysobry/) contribuisco attivamente nella sezione auto costruzione su vari progetti e in particolare ho fatto una serie di esperienze con le celle di Peltier , ragione per cui mi sono proposto nel thread i questione per sviluppare questa parte.

Veniamo al tema in oggetto
Savio e' partito in 4 a illustrare dal punto di vista HW e di interfacce tutto quello che vorremmo mettere nel progetto ...provo a descrivere un po' di piu' la logica da implementare via SW , perlomeno per la parte di controllo temperatura facendo un riassunto delle varie puntate sul forum di areabirra  
http://forum.areabirra.it/topic/15426-cercasi-volontari-per-automazione-camera-fermentazione-con-arduino/ (http://forum.areabirra.it/topic/15426-cercasi-volontari-per-automazione-camera-fermentazione-con-arduino/)

di seguito uno schema a blocchi (parziale)

(https://lh4.googleusercontent.com/-Ynjul7sl4Uc/UiL_m0E-QpI/AAAAAAAACAs/8ufIJvSe9Pc/s640/Drawing3.jpg)

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

1) come gestire inversione caldo freddo
i moduli di potenzaH-bridge (nello schema un modulo della Pollu)  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

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). La frequenza delle uscite PWM di arduino nativamente sulla AnalgWrite() dovrebbe essere di 490Hz per cui potrebbe andare bene ma inserire un parametro nel SW per la eventuale modifica in fase di test potrebbe essere importante

Infine ci sono moduli H-bridge 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.

vedi questo modulo della pololu
(http://a.pololu-files.com/picture/0J2880.600.jpg?202f86cacd5720b59b896f124c7e1cc8)

Ho quindi provato a lavorare un minimo sul codice e su un prototipo facendo queste due ipotesi
-Frequenza del PWM gestita dal controller (arduino)
-Inversione caldo freddo con un PIN high/low[/li][/list]

e mi sono scontrato con i primi problemi nel orgnizzare il 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

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.

Il controllo monodirezionale tanto per testare le librerie PID con il seguente set up ha dato risultati stabili usando una ventola come semplice oggetto da controllare  (SENZA cella)
-Arduino Uno
-Motor Shield con due uscite H-bridge
-Ventola DC 12v  (e' piu' facile vedere senso di rotazione del motore che caldo/freddo sulla cella)
-Sensore LM35 di temperatura

(https://lh6.googleusercontent.com/-cHuPHTFQt-U/UjoIettJknI/AAAAAAAACCE/bgHl3t7yXs8/s400/1379534715117.jpg)

(https://lh3.googleusercontent.com/-ATl9jRtJwpk/UjoIuWf3DkI/AAAAAAAACCM/KFMYnXFYkCA/s640/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);

Code: [Select]
/*

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
}


ho provato negli scorsi giorni a collegare all'uscita della motor shield effettivamente una cella (inserita in un sandwitch con due dissipatori) ma non ho avuto tempo di fare le verifiche di stabilita' del controllo MONODIREZIONALE

Fatto cio' per avere un nucleo stabile resta da risolvere il mio dilemma...come gestisco il controllo BIDIREZIONALE ??
qualcuno riesce a darmi una idea come gestire i due PID o i due loop caldo / freddo

grazie
Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: astrobeed on Oct 08, 2013, 07:36 pm

Bene visto che ho notato dal numero di visite del topic per Automazione cotta BirraDuino che qui abbiamo molti appassionati
della brassatura di Birra casalinga nella linea di voler automatizzare tutto il processo con poca spesa


Io mi offro volontario per il beta testing della birra prodotta  :smiley-mr-green:
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 08, 2013, 07:55 pm
Io mi offro volontario per il beta testing della birra prodotta  :smiley-mr-green:

Marco Fa il Bravo un guru come te dacci una Mano seria e ti faccio una cotta di Birra a tuo Gusto ;)
Altro che Vine Cup  :smiley-mr-green:
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 08, 2013, 07:58 pm


Bene visto che ho notato dal numero di visite del topic per Automazione cotta BirraDuino che qui abbiamo molti appassionati
della brassatura di Birra casalinga nella linea di voler automatizzare tutto il processo con poca spesa


Io mi offro volontario per il beta testing della birra prodotta  :smiley-mr-green:


penso che se il progetto ha successo e il SW gira bene la riconoscenza della comunità' degli homebrewer sara' tale che ti verrà' cirrosi  ;)
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 08, 2013, 08:19 pm

Torno a essere serio ..si fa per dire e vi illustro attuale set up su cui sto sviluppando e debugando

(https://lh4.googleusercontent.com/-OyMDqhCW-Pc/UlRH-1McFbI/AAAAAAAACCo/pH56fxOylMI/s640/2013-09-28%252014.25.16.jpg)

-Arduino UNO
-Motor Shield
-Sensore temperatura LM35 inserito nell'aletta di uno dei due dissipatori
-Cella da 40W inserita in mezzo a due disspatori dotati di ventola
-Alimentatore 5A 12V (pilota la motor shield e le ventole)

per ora le ventole sono connesse tutte e due al +12V e girano al massimo ..ci preoccupiamo dopo del controllo di velocità in funzione della temperatura (altro punto open visto che le ventole in questione mal digeriscono il segnale PWM di arduino...in questo caso a frequenza troppo bassa...e sono quindi rumorose a bassi giri..meglio controllarle in tensione 0-12)

siccome la cella assorbe piu' di 2A che e' il max che eroga uscita di uno dei due canali H-bridge per raddoppiare potenza ho semplicemente messo in parallelo elettricamente uscite di potenza e ingressi (PWM 1 con 2 , enable 1 con 2, BRAKE 1 con 2) come da data sheet del L298.
Si puo' fare anche SW replicando i comandi ma piu' "pericoloso" viste comunque le latenze nella esecuzione dei comandi.

Riapplicato il PID di cui sopra  in modo unidirezionale, ovvero in modalita' "frigo",  e ho qualche problema di stabillta'....il sistema partendo da T ambiente sembra raggiungere set point (fissato a 10 gradi) riducendo via via potenza applicata alla cella ma poi diverge e torna a crescere fino ad applicare il max nella direzione del freddo.  Non credo sia un problema particolare ma solo di tuning costanti P,I,D

Se qualcuno mi imbastisce un codice per controllare il PIN DIRECTION e gestire inversione caldo/freddo ho tutto il set up per provarlo e vedere se e' stabile !!

di seguito il controllo unidrezionale in modalità frigo

Code: [Select]
/*

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)connessa a una cella di peltier

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, REVERSE);

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 = 19;                    //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);   // modalita' FRIGO
 
  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/255*100));
  Serial.print("\t");
  Serial.print(analogRead(SNS_A));
  Serial.print("\n");
 
  delay (3000);
}

/* 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 8)
  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
}





Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 08, 2013, 08:28 pm

...ancora un commento su approccio e test pro sviluppo

ovviamente messa a punto la catena di controllo fondamentale PID-PWM-H-Bridge  per la gestione termostata e stabile della parte termica si costruisce intorno al "core" l'insieme delle funzioni descritte da Savio

-uscite a rele (gruppo frigo + resistenza)
-display
-log dei dati
-real time clock
-gorgogliatore
-buzzer

etc etc


Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 08, 2013, 09:10 pm
ovviamente messa a punto la catena di controllo fondamentale PID-PWM-H-Bridge  per la gestione termostata e stabile della parte termica si costruisce intorno al "core" l'insieme delle funzioni descritte da Savio etc etc


Be Davide l'avevo premesso già io nella frase finale ad inizio TOPIC

"Ma se per iniziare già riusciamo a fargli fare quello che fa sto giocattolino però in gestione PWM sarebbe gia un ottimo Inizio"

Quindi concordo con TE un passo per volta "Iniziamo a fare un termoregolatore PID PWM per Celle Peltier con Arduino"

Quindi concordo con il tuo pensiero Iniziamo a realizzare un termoregolatore per celle peltier
che le gestisca PWM  sia La cella che le Ventole Dissipatrici e variazione in PID per inversione polarita
quindi caldo freddo della peltier

Poi magari si passa a qualche suggerito per autocostruirsi la perte HW della potenza PWM PID della Peltier
e poi man mano si aggiungono tutte le altre chicche che ho suggerito ad inizio topic ;)
Magari qualche utente del forum ha gia qualche pezzo si soft fatto per le altre opzioni e basterà solo aggiungerlo :D

Ovviamente Ok usare Arduino UNO R3 per questa parte Iniziale "TermoreGolatore" ma poi date le varie Funzioni aggiuntive
è obligatorio passare al Arduino Mega 2650 come ho suggerito ad inizio Topic

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 08, 2013, 10:43 pm

ovviamente messa a punto la catena di controllo fondamentale PID-PWM-H-Bridge  per la gestione termostata e stabile della parte termica si costruisce intorno al "core" l'insieme delle funzioni descritte da Savio etc etc


Quindi concordo con il tuo pensiero Iniziamo a realizzare un termoregolatore per celle peltier
che le gestisca PWM  sia La cella che le Ventole Dissipatrici e variazione in PID per inversione polarita
quindi caldo freddo della peltier


Savio come si diceva a naja..allineati e coperti !!
e ora non resta che aspettare qualche dritta dagli esperti SW e di Arduino del forum...se no finisce che ce la cantiamo e suoniamo noi come sul forum della birra  XD XD
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 09, 2013, 08:25 am
E si attendiamo i Guru intanto Astrobeed fa il bravo tiraci giu uno schemino per lilotare 4 celle con relativo ingresos inversione
con IRLB3034PBF cosi io giocherello un po con la parte HW per la parte Soft inutile dare info a me io giocherello sulla HW :P
Ma ovviamnete servono più dritte software per Amico Brassatore Davide :D

Per Davide ovviamente hai gia fatto un cerca nel forum in articoli tipo questi

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

http://forum.arduino.cc/index.php?action=dlattach;topic=189155.0;attach=54756;image

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

http://forum.arduino.cc/index.php?topic=180177.0
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: paulus1969 on Oct 09, 2013, 09:17 am
Da appassionato di birra... mi iscrivo.
Burp!
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: cyberhs on Oct 09, 2013, 11:42 am
Come ho già affermato in privato a Savio, non conosco bene il processo di fermentazione, ma quello che vorrei capire è se è indispensabile un PID per il controllo della temperatura e se è veramente necessario usare un sistema di riscaldamento/raffreddamento.

Il dimensionamento della cella di Peltier (40W possono essere sufficienti per una piccola quantità, ma lo saranno per quantità maggiori di birra?) è da valutare con attenzione: in alternativa è anche possibile pensare di usare un piccolo compressore frigorifero (tipo quelli usati cui camper) che ha un grado di efficienza molto più elevato.

Se mi indicate un sito in cui si parli in dettaglio del processo, posso dare una mano.
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 09, 2013, 12:16 pm

Come ho già affermato in privato a Savio, non conosco bene il processo di fermentazione, ma quello che vorrei capire è se è indispensabile un PID per il controllo della temperatura e se è veramente necessario usare un sistema di riscaldamento/raffreddamento.

Il dimensionamento della cella di Peltier (40W possono essere sufficienti per una piccola quantità, ma lo saranno per quantità maggiori di birra?) è da valutare con attenzione: in alternativa è anche possibile pensare di usare un piccolo compressore frigorifero (tipo quelli usati cui camper) che ha un grado di efficienza molto più elevato.

Se mi indicate un sito in cui si parli in dettaglio del processo, posso dare una mano.


Ciao cyberhs grazie per il supporto ! :)

come suggerimento prescinderei dallo specifico processo di fermentazione (almeno in questa fase iniziale) ..se poi vuoi dettagli no problem ma il processo che vogliamo realizzare e' abbastanza semplice e definibile in questo modo

realizzare una camera termostatata che mantenga la temperatura impostata costante indipendentemente dalle variabili esterne (temperatura ambiente) e interne (la fermentazione produce calore)
Come requisito termico aggiuntivo "nice to have" si vuole effettuare la gestione nel tempo del profilo di temperatura (ramp/soak) ovvero variare nel tempo il set point con opportuni profili


se poi ci metto la birra a fermentare, le uova a incubare, lo yogurt o altro direi che poco importa...importante e' mantenere temperatura stabile rispetto al set point

questo dovrebbe rispondere alle tue domande
PID direi di si...il controllo deve essere preciso e stabile. Le grandezze termodinamiche in gioco sono lentamente varianti e in range limitati...la temperatura ambiente magari varia giorno/notte di qualche grado. Oppure varia estate (in cui devo raffreddare) o inverno (in cui devo riscaldare). L'energia prodotta in fermentazione da dissipare e' piccola.
Questo tipo di processo "lento" aiuta in quanto non c'e' necessita' di inseguire grandi variazioni termiche in poco tempo ...se temperatura va a regime in qualche ora e' ok ...e quindi non e' necessaria molta potenza.

I range di temperatura target ipotizzabili sono da 10 a 25 gradi (dubito di poter "lagherizzare" con le celle ovvero andare a 2-3 gradi) con temperature esterne di una cantina o appartamento diciamo...5-25 gradi.

Inversione caldo/freddo ...direi di si, anche se credo per molti l'applicazione e' prevalentemente FRIGO (temperatura ambiente nelle case di solito > temperatura fermentazione) pero' il bello di Arduino e delle celle (ma anche nella opzione firgo + resistenza) e' proprio la possibilita' di avere sia caldo che freddo (se no basta comune firgo e termoregolatore  :D). Inoltre potrebbe esserci un requisito di usare cella come camera calda per la rifermentazione , fase successiva all'imbottigliamento dove le temperature sono intorno ai 25 gradi

sul tema celle , efficienza, potenza ...c'e' discussione infinita...e ci sono pro e contro rispetto all'approccio compressore+ resistenza. La nostra idea e' di avere tutte e due le opzioni sulla shield. Il tema di avere un controllo PID piu' h-bridge e' invariante al tipo di gruppo termico

solo una ultima nota
il set up che vi ho illustrato e' solo "sperimentale" e di prototipazione giusto un mini-sistema per provare PID+PWM+ H-bridge e retroazione con sensore il tutto...per capire se e' stabile e come fare il doppio controllo con inversione.

Il sistema finale ognuno se lo crea a suo piacere...e se vai sul forum della birra vedrai che abbiamo molta fantasia !

Davide

Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 09, 2013, 12:33 pm
Grazie Cyberhs per l' aiuto proposto che sicuramente ci sarà utilissimo :D

:Edit Ho notato che ho scritto in contemporanea a Davide quindi qualcosa si ripete nella mia discussione sotto :P

Intanto ti premetto che ci sono vari modi di realzizare una camera di fermentazione

Il primo è come ho fatto io in questo modo modificando un frigo pilotando alternativamente compressore o resistenza
https://plus.google.com/photos/117096022619927896725/albums/5718015302058914513?banner=pwa

Conta che nella fermentazione ci sono anche birre sorpatutto se si vuole farle in stagioni diverse che vanno
lagerizzate ovvero Temepratura sui 5 8°C oppure l' abbattimento prima di imbottigliare 24h a 3°C
La fermentazione puo essere bassa o alta quindi lieviti che lavorano bene a 24 28°C e lieviti che lavorano bene a 8 16°C
Tutto dipende dal tipo di birra che vuoi fare :D

Quindi SI serve un sistema che pilota sia caldo che freddo

Per chi ha poco spazio un altro modo di gestire la camera di fermentazione è come ha datto Davide

Ovvero inserire nel femrentatore una serpentina e far girare al suo interno un liquido che passando per uno scambiatore
a celle peltier per scambio diretto essendo immersa la serpentina Inox nel mosto termoregola la temepratura
della fermentazione.

Questo ha il vantaggio di fare poco rumore ottimo per molti che non avendo spazio fanno la fermentazione
magari proprio nella loro cameredda da letto o nel angoletto in salone siamo parlando smepre di brassatori casalinghi.
Non produttori industriali di Birra quindi è normale trovare queste situazioni.

E quindi un compresosre che parte di notte puo dar fastidio :P Oltre il fatot che usare le celle rende il tutto molto compatto.
Un unico elemento per caldo e freddo.

Ma il progetto come da topic iniziale vuole nascere come modulo unico che abbia sia la possibilità
di comandare un gruppo frigo classico Quindi resitezna e compressore o un più silenzioso e compatto gruppo a celle peltier.

Ovviamente in entrambi i casi quello che manca rispetto a prendere il termoregolatore tipo quello che ho Linkato
e che adesso uso è oltre ad avere un controllo più fine del tutto di poter dataloggare il tutto
Per avere un grafico del andamento temperatura/tempo cosi da valutare a fine fermentazione
se tutto il processo è stato lineare come da programma.

Spesso una fermentazioen va male e non si sa se è per colta della temepratura instabile o altri fattori
e dataloggare questo fa comodo  ;)

Mentre dal lato termoregolatore per celle peltier ci sta poco in giro
E quel poco che ci sta o sono cose grezze comandi secchi a relè on/off niente gestione ventole di ricircolo ecc ecc
E per cose piu fini in pwm chiedono un bel po di soldini senza manco fare quello che ci serve :(

Ecco due link delle realizzazioni di Davide che appunto ha scelto la soluzione Peltier
soluzione che anche io vorrei adottare dato che realizzare un cassone per il troncoconico da 30lt
che è proprio lo stesso che usa lui non è il massimo :D

http://arzaman.com/wordpress/?p=805

http://forum.areabirra.it/topic/14038-nuovo-fermentatore-controllato-in-temperatura/

Si nota come per realizzare il tutto ha dovuto adattare controller per acquari o rafreddamento pc
e varie schede adattate tra loro che hanno un bel costo solo il controller per acquari sta oltre 100€
Quando un Mega costa la meta e come potenzialita credo che non se lo vede prorpio  ]:D

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: cyberhs on Oct 12, 2013, 11:52 am
Ho buttato giù uno schema relativo alla cella Peltier.

Al posto del ponte H, ho preferito usare un più semplice relè a due scambi.

Cosa ne pensate?
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: PaoloP on Oct 12, 2013, 12:05 pm
Interessante.  :smiley-mr-green:
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: cyberhs on Oct 13, 2013, 12:17 pm
Sempre a proposito della cella Peltier, poiché la sua efficienza si basa su un'ottima trasmissione del calore o del freddo, bisognerebbe adottare sia sul lato caldo che sul lato freddo di un sistema a liquido, cioè qualcosa di simile ai dissipatori usati per i microprocessori (dissipatore cavo, serbatoio liquido refrigerante, pompa) collegato ad una serpentina immersa nel fermentatore.

Ecco che qui subentra un problema: bisognerebbe anche adottare un valvola a tre vie per commutare il flusso freddo/caldo nella serpentina.

Per cui propongo una soluzione intermedia: usare la cella solo per generare il freddo ed usare un semplice riscaldatore ad immersione per riscaldare il composto.
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 13, 2013, 01:25 pm

Ciao l'idea di usare un relè DPDT doppio polo e doppio contatto è sicuramente buona, semplice ed economica ma vanifica uno dei vantaggi principali dell'uso delle celle di peltier ovvero quello di poter essere controllate linearmente in potenza da 0 al 100% e quindi di poter eseguire un controllo molto preciso e raggiunto il set point di ridurre al minimo il consumo

L'ultilizzo di un controllo on off con rele meglio si adatta poi alla soluzione gruppo frigo + resistenza faccendo attenzione a mettere le opportune isteresi. Commutare on off una cella o peggio ancora vicino al set point invertire brutalmente caldo freddo e' distruttivo per le celle.

il ponte di h ha costi contenuti e parecchi vantaggi per cui per le celle secondo me e' componente essenziale, la soluzione DPDT la vedo per frigo+ resistenza

la soluzione di controllo HW non sposta tuttavia il tema di come gestire il SW e l'algoritmo del doppio PID caldo/freddo (commutare un rele' o il PIN direzione del h-bridge e' identico) su cui sono ancora arenato.... :( :(

Davide


Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 13, 2013, 03:13 pm


Ecco che qui subentra un problema: bisognerebbe anche adottare un valvola a tre vie per commutare il flusso freddo/caldo nella serpentina.



Mumble...no ti seguo

provo a ricapitolare il funzionamento della parte "termica" e cosa dovrebbe fare il sistema di controllo.

La souzione con le celle di peltier puo' essere realizzata in qualunque modo...scambio aria - aria, scambio aria - acqua o addirittura acqua - acqua. Ciascuno sceglierà quello che li e' piu' congeniale in funzione della propria capacità realizzativa...
la shiedl di controllo prescinde da come e' fatto il gruppo termico : misura una temperatura diciamo della birra in fermentazione e pilota la cella per mantenere quella temperatura il piu' possibile costante modulando potenza e caldo/freddo di conseguenza.

Obiettivo quindi del controllo e una gestione termostatica del mezzo di raffreddamento e/o riscaldamento sia esso aria o h20.

Sinceramente non vedo necessita di valvole o complicazioni...in un scambio aria-aria il flusso soffiato dentro la camera dovra' compensare le variazioni di temperatura esterne e interne e sara' "caldo" o "freddo"  a seconda temperatura ambiente e set point.

(https://lh6.googleusercontent.com/-e3p0ZAt86d8/T0tNPZ4ZrLI/AAAAAAAAAhE/YZvuis_wBd0/s400/P1080510.JPG) (https://lh5.googleusercontent.com/-yw793UL2SU4/T0tNQy5OtWI/AAAAAAAAAhU/zJ34O6FwJ88/s400/P1080512.JPG)

Lo stesso in un flusso aria h20. Il liquido di ricircolo nel mosto in fermentazione sara' "caldo" o "freddo" con lo stesso principio.

(https://lh4.googleusercontent.com/-cIxgIK8WxTk/UlqaTXm81WI/AAAAAAAACHE/meNqKpcY3uc/s400/P1110085.JPG)  (https://lh5.googleusercontent.com/-LtOYexaLKqM/UZkMOdyacmI/AAAAAAAABlM/o4oleBM-2wg/s640/P1010227.JPG)


giusto per capirsi "non dobbiamo inventare nulla" ma dobbiamo realizzare in HW (Arduino) e SW (il punto mancante) come base il prodotto sottostante per la gestione della parte termica con aggiunta di tutte le altre funzioni specifiche per applicazione birra descritte da Savio

TETECH controller
http://www.tetech.com/Temperature-Controllers/TC-36-25-RS232.html (http://www.tetech.com/Temperature-Controllers/TC-36-25-RS232.html)
(http://www.tetech.com/images/products/TC-36-25-RS232.jpg)
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 14, 2013, 12:13 am
Al posto del ponte H, ho preferito usare un più semplice relè a due scambi.


Grazie Cyberhs proprio oggi ho giocherellato un po con la parte meccanica
Ho iniziato a fare il recipiente per il ricircolo
E il pacco dissipatore per giocare un po con queste celle
Ho postato due foto sul mio sito
http://www.saviot.com/index.php?option=com_content&view=article&id=18&Itemid=172

E fortunatamente Sabato mi sono arrivati i IRLB3034PBF ordinati un mesetto fa :D
http://www.irf.com/product-info/datasheets/data/irlb3034pbf.pdf

Quindi se riesci ad usare questi ansiche un doppio rele per me sarebbe meglio

Usare un Itengrato lo vedo più lineare non un on off secco e duraturo e silenzioso rispetto ad un rele :D

:Edit ho visto che su questo ha già Risposto Davide che ha spiegato più precisamente quello che intendevo IO
Ovvero meglio un controllo lineare per avere un controllo proporzionale da 0 a 100% ansiche un rele secco che è solo 0 e 1

Si dobbiamo sfruttare la capacita della celle di cambiare lato caldo/freddo con inversione di polarita
e quidi inutile e troppo complessa la soluzione a scambio meccanico con valvola a tre vie
meglio uno scambio elettronico della polarità

In questo serve un HW che ci supporti ma soratutto in questo Momento una mano a Davide
per la parte Software della gestione del PWM e PID per gestire la potenza della cella ma soratutto
la loro inversione forse ci vorebbe qualcosa tipo un cross 0 e quindi definire un tempo e una lettura a 0
prima di invertire la polarita alle celle per evitare che si rompano  ;)

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: cyberhs on Oct 14, 2013, 10:06 am
Quote
Ciao l'idea di usare un relè DPDT doppio polo e doppio contatto è sicuramente buona, semplice ed economica ma vanifica uno dei vantaggi principali dell'uso delle celle di peltier ovvero quello di poter essere controllate linearmente in potenza da 0 al 100%

Perché lo vanifica? Se osservi lo schema proposto, è presente il PWM di modulazione composto da un solo MOSFET di potenza (maggiore efficienza rispetto al ponte). Il relè serve solo ad invertire i poli dell cella ed entra in funzione solo quando il sistema decide di raffreddare o riscaldare il composto!

Il vero problema è che se si decide di usare per il lato caldo un semplice dissipatore raffreddato ad aria (essendo il lato freddo collegato al fermentatore per contatto diretto oppure con refrigerante tramite serpentina) è impossibile invertire il ciclo!
Ecco spiegato il senso della mia affermazione "adottare un valvola a tre vie OPPURE USARE UN SEMPLICE RISCALDATORE".

Allego uno schema più completo della mia idea.
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 14, 2013, 10:58 am

Il vero problema è che se si decide di usare per il lato caldo un semplice dissipatore raffreddato ad aria (essendo il lato freddo collegato al fermentatore per contatto diretto oppure con refrigerante tramite serpentina) è impossibile invertire il ciclo!


NON capisco questa cosa dell' impossibilità di ivnertire il ciclo ovviamente il tutto deve essere dimensionato
In modo che cio possa essere fatto
Quindi un Dissipatore Attivo adeguato a sopperire inversione Ciclo

Allora quello che si va a comandare per una gestione tipo Peltier con serpetina immersa nel fermentatore è una cosa tipo questa allego immagine
http://www.aliexpress.com/item/Free-Shipping-DIY-TEC-Peltier-semiconductor-refrigerator-water-cooling-air-condition-Movement-for-refrigeration-and-fan/807156784.html
Che io mi sto autocostruendo ho quasi tutto aspetto che arrivano questi :D
http://www.ebay.it/itm/290896805418?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Lo schema che hai postato inizia a piacermi vedo che hai già piu o meno definito tutto :D
Ma Manca la Gestione PWM della ventola che dissipa la Peltier dato che parliamo di dissipatori Attivi

Allora noi vorremmo fare tutto con un gruppo e non due gruppi uno per il caldo e uno per il freddo
Il vantaggio della cella è proprio quello che invertendo la polarita inverte la faccia calda con quella fredda
Diciamo che se decidiamo di tenere la fermentazione a 25° la cella lavorera quasi sempre per dare dal lato caldo 25°C a contatto con lo scambiatore H20
Mentre se lavoriamo in lagerizzazione 5°C La cella lavorera quasi sempre polarizzata per dare freddo lato scambiarore h20 che va nel fermentatore
Se coibendato il tutto bene non ci sono grandi sbalzi in inversione polarità e lavorera quasi semrpe solo con la gestione PWM della cella seguendo il protocollo PID
Ma se serve per un brusco cambiamento di temperatura vedi anche durante la notte o nelle ore di punta di giorno ecco che al volo la cella inverte il senso di diffusione calore
Per Questo Davide voleva una cosa proporzionale piu a livello soft per inversione polarita quindi decidere fino a che livello lavorare dal lato caldo o freddo
Ma avere qualcosa che nel inversione polarità salvaguardi la cella tipo un cross 0 forse converebbe mandare in arduino la tensione cella e le due temp cosi da affinare questa cosa.

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: cyberhs on Oct 14, 2013, 11:43 am
Savio, il gruppo che hai postato serve alla sola refrigerazione: infatti il lato caldo delle 4 celle Peltier viene raffreddato ad aria, mentre il lato freddo è collegato a 2 scambiatori a liquido collegati idraulicamente in serie.

Se operi l'inversione di polarità, in teoria dovrebbe continuare a funzionare, ma nella realtà i dissipatori ghiacciano riducendo l'efficienza di scambio con l'ambiente: il delta (circa 50°C) tra lato freddo e caldo impone che i dissipatori ad aria si portino a circa -25°C  e dubito che il flusso d'aria delle ventole sia sufficiente per evitare il "tappo di ghiaccio"!
E' il problema di tutti condizionatori a pompa di calore che, usati d'inverno a ciclo invertito, devono verificare costantemente la formazione di ghiaccio sul condensatore/evaporatore.
Bisognerebbe adottare un sistema a doppio scambiatore a liquido, ma in questo caso bisognerebbe usare una valvola a tre vie oppure una doppia serpentina: molto più semplice usare per riscaldare un semplice riscaldatore ad immersione.

Ho omesso volutamente il PWM per le ventole in quanto trovo sia inutile: mandiamole sempre alla massima velocità a meno che il rumore generato sia insopportabile.

Spero con questo di essermi spiegato meglio.
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 14, 2013, 01:03 pm
Savio, il gruppo che hai postato serve alla sola refrigerazione: infatti il lato caldo delle 4 celle Peltier viene raffreddato ad aria, mentre il lato freddo è collegato a 2 scambiatori a liquido collegati idraulicamente in serie

Si ne ho citato uno tanto per fare un esempio ma Davide con Uno simile riesce a gestire il tutto :D
Ma lui non vuole fare lagerizzazione IO SI :D

Se operi l'inversione di polarità, in teoria dovrebbe continuare a funzionare, ma nella realtà i dissipatori ghiacciano riducendo l'efficienza di scambio con l'ambiente: il delta (circa 50°C) tra lato freddo e caldo impone che i dissipatori ad aria si portino a circa -25°C  e dubito che il flusso d'aria delle ventole sia sufficiente per evitare il "tappo di ghiaccio"!


Si infatti io che voglio anche fare lagnerizzazione "mosto a 3 - 5°C" ho ordinato anche un gruppo a radiatore per l' altra parte proprio per avere uno scambio efficente quindi doppio circuito H20 uno nel fermentatore uno per altra parte
Spero che basti posto il Link se qualcuno vuole fare una cosa simile spero che sia sufficiente :D
http://www.ebay.it/itm/111170388091?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Ho omesso volutamente il PWM per le ventole in quanto trovo sia inutile: mandiamole sempre alla massima velocità a meno che il rumore generato sia insopportabile.
Be visto che ci sono PWM io avrei messo poi male che va si va si manda sempre alla max :D

Per LCD vorrei andare in I2C usando moduli tipo questo
http://www.ebay.it/itm/251265560755?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649
Cosi se uno vuole recupera LCD che ha gia dentro e fa tutto con poca spesa :D

Domanda mi piace il fatto che vuoi mettere una tastiera per inserire i dati mi confemri che è questa cosi la ordino
http://www.ebay.it/itm/4-x-3-Matrix-Array-12-Key-Membrane-Switch-Keypad-Keyboard-for-Arduino-AVR-PI-C-/400344170967?pt=LH_DefaultDomain_0&hash=item5d365f41d7

Mentre per i suggerimenti Soft per Davide nessuna News ?

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 14, 2013, 08:09 pm

Perché lo vanifica? Se osservi lo schema proposto, è presente il PWM di modulazione composto da un solo MOSFET di potenza (maggiore efficienza rispetto al ponte). Il relè serve solo ad invertire i poli dell cella ed entra in funzione solo quando il sistema decide di raffreddare o riscaldare il composto!

Il vero problema è che se si decide di usare per il lato caldo un semplice dissipatore raffreddato ad aria (essendo il lato freddo collegato al fermentatore per contatto diretto oppure con refrigerante tramite serpentina) è impossibile invertire il ciclo!
Ecco spiegato il senso della mia affermazione "adottare un valvola a tre vie OPPURE USARE UN SEMPLICE RISCALDATORE".

Allego uno schema più completo della mia idea.


hai ragione sorry visto il relè ma non il Mosfet per la gestione del PWM !! :smiley-red:

direi che puo' sicuramente andare...il mosfet pilotato sul gate con digitalwrite() controlla la potenza, l'inversione con rele DPDT.

Mi sfugge (a parte la tua affermazione sulla maggiore efficienza rispetto a ponte di H) il vantaggio di commutare "hard" caldo freddo con un rele' con tutti i problemi di oscillazione e isteresi rispetto a usare 4 mosfet configurati in ponte di H e realizzare una transizione eletteronica e piu' soft...in generale in un sistema di controllo rele' "non mi piacciono :~"

(http://www.talkingelectronics.com/projects/H-Bridge/images/H-Bridge-MOSFETs.gif)

ho compreso anche tua osservazione piu' che pertinente sull' inversione con un sistema aria / h20 e il rischio che quando la parte ad aria debba "raffreddare" si formino condense e addirittura ghiaccio.

Teoricamente è sicuramente un rischio ma nella nostra applicazione,e per esperienza pratica, credo che possiamo trascurare questo rischio. ..e comunque un dimensionamento termodinamico di una pompa di calore con tutti i sacri crismi credo sia fuori della portata di un hobbista fai da te

Mi spiego...come ho descritto precedentemente il processo di controllo e' "lentamente variante" , le grandezze da controllare sono in range limitati, i salti termici limitati e le potenze in gioco basse. In un caso pratico dobbiamo compensare temperatura media di una casa/cantina in piu' o in meno di qualche grado...25 gradi in estate in casa da portare a 20 tanto per fare un esempio o 20 gradi in inverno da portare a 12 (fare le basse fermentazioni in inverno e' sempre una buona regola anche se si ha il sistema piu' figo del mondo  :) )
Se Savio vuole lagherizzare...magari in inverno...va benissimo XD in quanto useremo il gruppo aria/aria o aria/h20 come FRIGO spinto e quindi la parte ad aria dissipa calore senza rischio di condensa !

Diciamo che in condizioni normali il sistema e' per 80% un frigo ma in quelle situazioni, come la mia, dove la cantina di inverno va a 10-12 gradi e voglio fare una ale a 18 gradi va bene avere un po' di tepore...con un salto di 8-10 gradi in riscaldamento secondo me non rischiamo condensa e/o ghiaccio.

Sul PWM delle ventole MUST HAVE... ti assicuro che una volta raggiunta la temperatura il processo e' semistatico...PWM delle celle va al minimo e avere le ventole al MAX e' una discreta seccatura.
Nella mia implementazione faccio variare il PWM delle celle da 0 a 100% mentre la ventola varia tra 40% a 100% cosi' rimane un minimo di flusso di aria e non vado a bassissimi giri dove le ventole DC pilotate in PWM a bassa frequenza fischiano

sulle ventole  preferirei un controllo basic in tensione 0-12 V anziche' PWM (a patto di non alzare frequanza PWM di ardiuno)

MA SUL SOFTWARE NULLA...????
ok mettere a punto il controller e le uscite ma un aiutino su come realizzare l'algoritmo PID termostatico ??
come accrocchiare librerie PID per pilotare mosfet + rele' o h-bridge ??

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 15, 2013, 12:44 pm

MA SUL SOFTWARE NULLA...????
ok mettere a punto il controller e le uscite ma un aiutino su come realizzare l'algoritmo PID termostatico ??
come accrocchiare librerie PID per pilotare mosfet + rele' o h-bridge ??Davide


Esatto va bene anche il relè per la semplice inversione polarità
Anche se per evitare di incollare i contatti relè e cose simili preferisco che anche inversione di polarità fosse allo stato solido

Allora Tornado alla parte Software Arduino Nessuno riesce a darci una Mano ?


In poche parole ci manca la parte software Arduino per:

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

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

E un controllo PID Con isteresi On Off che 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

Spero che con queste parole sono risucito a spiegare meglio cosa ci manca nella gestione software
per un gruppo scambiatore a celle peltier :D

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 17, 2013, 06:24 pm

ritornando sul software e verificando progetti gia' realizzati di controllo termostatico caldo/freddo quello che si avvicina di piu' a nostra idea e' riportato in questo thread

http://forum.arduino.cc//index.php?PHPSESSID=eg91i9nmn2i7eg3ljbg6646v90&topic=117086.0 (http://forum.arduino.cc//index.php?PHPSESSID=eg91i9nmn2i7eg3ljbg6646v90&topic=117086.0)

il codice non e' proprio lineare da seguire (era un po' che non vedevo i "goto" ...) ma in assenza di meglio posso provare ad adattarlo...

il principio e' il seguente : vengono realizzati due controlli indipendenti (non PID ma non e' importante) e la selezione del controllo caldo o freddo e' fatta da un terzo loop di tipo ON / OFF con isteresi

In pratica si controlla temperatura misurata con set point se T_MEAS > T_SET+isteresi si da max potenza alla cella in modo "frigo" viceversa se T_MEAS < T_SET+isteresi si da massima potenza a cella in modo "stufa".
In prossimità' di T_SET  ovvero all'interno del reange di isteresi si applica un controllo proporzionale piu' di fino

prefereirei un "controllo " unico e lineare ma potrebbe essere un punto di partenza

altre idee ?

Davide

Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: PaoloP on Oct 17, 2013, 06:36 pm
Ho dato uno sguardo a quel codice... mi sono messo ad urlare e a stapparmi i capelli, soprattutto quando richiama setup();  :smiley-eek-blue: :smiley-eek:
Per non parlare dei goto...

EDIT:
Tolto l'obbrobrio
Code: [Select]
/*

   Thermo Electric Cooler (TEC)
  ````````````````````````````````


Circuit Description:
 Serial Communication  - Pin 0,1
 Input Buttons         - Pins 2,3,4
 TEC Module (H Bridge) - Pins 5,6,7
 LCD                   - Pins 8,9,10,11,12,13
 LED                   - Pin A0
 Current Sensor        - Pin A1
 LM35                  - Pin A3


H Bridge Description (L298)

 Enable Pin - Controls the votlage (indirectly current) applied across load.

 Digital Inputs:
     For positive voltage (cooling)
           Pin 6 - HIGH
           Pin 7 - LOW
     For negative voltage (heating)
           Pin 6 - LOW
           Pin 7 - HIGH

_____________________________________________________________*/


#include <math.h>
#include <Button.h>
Button start_stop_button = Button(4, PULLUP);
Button dec_button = Button(3, PULLUP);
Button inc_button = Button(2, PULLUP);

#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
char blank[] = "    ";                 // to earase 4 characters

double Tref = 20, Tmeas = 30;
int button_time = 0;
unsigned long lcd_time = 0, I_tym = 0;
float Imeas = 0;


//----------------------------Variables-----------------

float step_size = 1;         // Inc/Dec Button step size
float I_calib = 1;             // Current sensor calibration
float T_delta = 2;             // +- 3 degree Celsius
int Imax_dutyCycle = 120;      // 100 -> ~1.8 Amps of current

//------------------------------------------------------


void setup()
{
 Serial.begin(9600);

 pinMode(5, OUTPUT);    digitalWrite(5, LOW);
 pinMode(6, OUTPUT);    digitalWrite(6, LOW);
 pinMode(7, OUTPUT);    digitalWrite(7, LOW);

 lcd.begin(16, 2);
 lcd.print("Enter Tref: 20");

 initT();
 delay(1000);
}


void loop()
{
 //_____________________Temp_______________________

 float Tmeas = analogRead(3);
 for (int i = 1; i < 10; i++)
   Tmeas = (Tmeas + analogRead(3) ) / 2;   // take 10 samples avg value

 Tmeas = Tmeas * 500 / 1024;                     // convert to temp

 //_______________________Current____________________
 /*
   if(millis() - I_tym > 100)       // every 100 ms
   {
     calc_current();
     I_tym = millis();
   }
  */

 //______________________LCD______________________

 if (millis() - lcd_time > 1000) //update lcd every 1 sec
 {
   lcd.clear();
   lcd.print("Tr:");
   lcd.print(Tref);
   //      lcd.setCursor(9,0);
   //  lcd.print("I:");
   // lcd.print(Imeas);
   lcd.setCursor(0, 1);
   lcd.print("Tm:");
   lcd.print(Tmeas);
   lcd_time = millis();
 }

 // ________________________Buttons________________________

 if (inc_button.isPressed())
 {
   Tref += step_size;
   lcd.setCursor(3, 0);
   lcd.print(Tref);
   lcd.print(blank);
   delay(200);
 }

 if (dec_button.isPressed())
 {
   Tref -= step_size;
   lcd.setCursor(3, 0);
   lcd.print(Tref);
   lcd.print(blank);
   delay(200);
 }

 if (start_stop_button.isPressed())   // Used only to stop the controller
 {
   digitalWrite(5, LOW);
   digitalWrite(6, LOW);
   digitalWrite(7, LOW);
   lcd.clear();
   delay(1000);
   initT();
 }


 // ________________________Controller________________________


 float E = Tmeas - float(Tref);

 if ( E > T_delta)   // cooling at max  - positive voltage
 {
   //positive voltage
   digitalWrite(6, HIGH);
   digitalWrite(7, LOW);

   analogWrite(5, Imax_dutyCycle);
   lcd.setCursor(9, 1);
   lcd.print("Max-C");
   lcd.setCursor(9, 0);
   lcd.print("D:");
   lcd.print(Imax_dutyCycle * 100 / 255);
   lcd.print("%   ");
 }

 if ( E < -T_delta)
 {
   //negative voltage
   digitalWrite(6, LOW);
   digitalWrite(7, HIGH);
   analogWrite(5, Imax_dutyCycle);
   lcd.setCursor(9, 1);
   lcd.print("Max-H");
   lcd.setCursor(9, 0);
   lcd.print("D:");
   lcd.print(Imax_dutyCycle * 100 / 255);
   lcd.print("%   ");
 }

 if ( (E > - T_delta)  &&  (E < T_delta))
 {
   // PID or other control

   if ( E >= 0   ) // cooling
   {
     digitalWrite(6, HIGH);
     digitalWrite(7, LOW);

     int d =  fscale( 0, T_delta, 0, Imax_dutyCycle, E, 0);
     constrain(d, 0, Imax_dutyCycle);
     analogWrite(5, d);

     lcd.setCursor(9, 1);
     lcd.print("PID-C");
     lcd.setCursor(0, 1);
     lcd.print("Tm:");
     lcd.print(Tmeas);
     lcd.setCursor(9, 0);
     lcd.print("D:");
     lcd.print(d * 100 / 255);
     lcd.print("%   ");
   }

   else if (E < 0)
   { // heating
     digitalWrite(6, LOW);
     digitalWrite(7, HIGH);

     int d =  fscale( (-1 * T_delta), 0, Imax_dutyCycle, 0, E, 0);
     constrain(d, 0, Imax_dutyCycle);
     analogWrite(5, d);

     lcd.setCursor(9, 1);
     lcd.print("PID-H");
     lcd.setCursor(0, 1);
     lcd.print("Tm:");
     lcd.print(Tmeas);
     lcd.setCursor(9, 0);
     lcd.print("D:");
     lcd.print(d * 100 / 255);
     lcd.print("%   ");
   }

 }

 delay(50);

 Serial.print("Error ");
 Serial.print(E);
 Serial.print("   T : ");
 Serial.println(Tmeas);

 delay(500);
}


float fscale( float originalMin, float originalMax, float newBegin, float
             newEnd, float inputValue, float curve) {

 float OriginalRange = 0;
 float NewRange = 0;
 float zeroRefCurVal = 0;
 float normalizedCurVal = 0;
 float rangedValue = 0;
 boolean invFlag = 0;


 // condition curve parameter
 // limit range

 if (curve > 10) curve = 10;
 if (curve < -10) curve = -10;

 curve = (curve * -.1) ; // - invert and scale - this seems more intuitive - postive numbers give more weight to high end on output
 curve = pow(10, curve); // convert linear scale into lograthimic exponent for other pow function

 /*
  Serial.println(curve * 100, DEC);   // multply by 100 to preserve resolution
  Serial.println();
  */

 // Check for out of range inputValues
 if (inputValue < originalMin) {
   inputValue = originalMin;
 }
 if (inputValue > originalMax) {
   inputValue = originalMax;
 }

 // Zero Refference the values
 OriginalRange = originalMax - originalMin;

 if (newEnd > newBegin) {
   NewRange = newEnd - newBegin;
 }
 else
 {
   NewRange = newBegin - newEnd;
   invFlag = 1;
 }

 zeroRefCurVal = inputValue - originalMin;
 normalizedCurVal  =  zeroRefCurVal / OriginalRange;   // normalize to 0 - 1 float

 /*
 Serial.print(OriginalRange, DEC);
  Serial.print("   ");
  Serial.print(NewRange, DEC);
  Serial.print("   ");
  Serial.println(zeroRefCurVal, DEC);
  Serial.println();
  */

 // Check for originalMin > originalMax  - the math for all other cases i.e. negative numbers seems to work out fine
 if (originalMin > originalMax ) {
   return 0;
 }

 if (invFlag == 0) {
   rangedValue =  (pow(normalizedCurVal, curve) * NewRange) + newBegin;

 }
 else     // invert the ranges
 {
   rangedValue =  newBegin - (pow(normalizedCurVal, curve) * NewRange);
 }

 return rangedValue;
}

void initT(void) {
 while (1) {
   if (millis() - lcd_time > 2000) //update lcd every 2 sec
   {
     float Tmeas = analogRead(3);
     for (int i = 1; i < 10; i++)
       Tmeas = (Tmeas + analogRead(3) ) / 2;   // take 10 samples avg value
     Tmeas = Tmeas * 500 / 1024;

     lcd.setCursor(0, 1);
     lcd.print("Tmeas : ");
     lcd.print(Tmeas);
     lcd_time = millis();
   }

   if (inc_button.isPressed())
   {
     Tref += step_size;
     lcd.setCursor(12, 0);
     lcd.print(Tref);
     delay(200);
   }

   if (dec_button.isPressed())
   {
     Tref -= step_size;
     lcd.setCursor(12, 0);
     lcd.print(Tref);
     delay(200);
   }

   if (start_stop_button.isPressed())
   {
     lcd.clear();
     lcd.print("Starting...");
     break;
   }
 }
}


Alla fine calcola il delta all'uscita del pid: se maggiore della temperatura riscalda se minore raffredda.
Un banale IF.
Se la differenza supera i 2° in positivo o in negativo, riscalda o raffredda alla massima potenza, se all'interno dell'intervallo lavora di fino (PID).
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 18, 2013, 08:22 am

Allego uno schema più completo della mia idea.

Bene vedo che iniziano ad arrivare anche aiuto dal lato software ottimo :D

Ho ordinato questa tastiera che la vedo più completa e comoda per interfaciarci con il tutto
4 x 4 Matrix Array 16 Key Membrane Switch Keypad Keyboard for Arduino
http://www.ebay.it/itm/310511616357?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Puoi darci gia un idea di come verebbe il PCB base e lo stadio di potenza che comanda le Peltier basato su
Power MOSFET IRLB3034PbF gli usiamo anche come rele scambio polarità cosi abibamo tutto solido
ed un unico ricambio cosi inizio a vedere come configurare la parte HW che è unica dove posso subito montare e provare.

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 18, 2013, 08:28 am

Ho dato uno sguardo a quel codice... mi sono messo ad urlare e a stapparmi i capelli,
EDIT: Tolto l'obbrobrio
Alla fine calcola il delta all'uscita del pid: se maggiore della temperatura riscalda se minore raffredda.
Un banale IF.
Se la differenza supera i 2° in positivo o in negativo, riscalda o raffredda alla massima potenza,
se all'interno dell'intervallo lavora di fino (PID)


Bello mi piace quando voi programmatori parlate cosi :D

Be credo che Davide ha gia HW per provare il tuo codice io resto in attesa di uno bozza di pcb
cosi da montasre e provare anche io Grazie per Ariuto

Domanda Non ho capito una cosa quante sonde gestisci in questa cosa ?

Se non erro servirebbe una sonda temp ambiente

Una Sonda Temp liquido o ambiente da termostatare
e una sonda sul lato opposto della peltier per capire se sta lavorando bene
ed eventualmente aumentare la velocita della ventola di dissipazione o fermare il tutto
se la differenza tra i due lati supera i 60°C e quindi rischio di rottura cella.

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: PaoloP on Oct 18, 2013, 09:13 am
Il codice originale è di Bachna (http://forum.arduino.cc//index.php?action=profile;u=26423); io l'ho modificato per eliminare i goto e il richiamo al setup();

Quel codice gestisce, a parte il sensore di corrente, l'LCD e 3 pulsanti, un solo sensore di temperatura di tipo analogico.
Portarlo in digitale, esempio DS18B20, è semplice.

In uscita da 3 segnali, uno PWM proporzionale allo scarto delle temperature (tramite la funzione fscale), 2 uscite digitali di tipo ON/OFF. Una per attivare l'elemento riscaldante e una per l'elemento che raffredda.
Se vuoi aggiungere altri controlli (ventola, differenza massima cella Peltier) si può fare.
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 18, 2013, 09:36 am

Quel codice gestisce, a parte il sensore di corrente, l'LCD e 3 pulsanti, un solo sensore di temperatura di tipo analogico.
Portarlo in digitale, esempio DS18B20, è semplice.


Bene ottima notizia :D


In uscita da 3 segnali, uno PWM proporzionale allo scarto delle temperature (tramite la funzione fscale), 2 uscite digitali di tipo ON/OFF. Una per attivare l'elemento riscaldante e una per l'elemento che raffredda.
Se vuoi aggiungere altri controlli (ventola, differenza massima cella Peltier) si può fare.


Bene Grazie del Aiuto Paolo si come detto vogliamo andare a STEP

Quindi la prima sarebbe integrare e testare questo codice per fare un termoregolatore caldo freddo con celle peltier
gestito in PWM PID compresa la ventola di dissipazione in PWM e la differenza max delle facce della cella per salvaguardarla

Se risuciamo gia ad integrare la tastiera che ho postato e LCD in I2C sarebbe Ottimo

Per Ambiente vorrei usare questo Sensore Umidita Temenratura DHT11

Se serve un altro spunto lo possiamo prendere qui alla fine dobbiamo fare una cosa simile
Ma un po piu potente e completa :D

http://thebobrowe.com/?p=840
Codice http://thebobrowe.com/wp-content/uploads/2012/08/KeypadTempControl_rev7.txt

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: PaoloP on Oct 18, 2013, 09:53 am
Il DHT11, costa 2€ ma ne vale mezzo: non ha il punto decimale e il datasheet (http://itead-europe.com/pm/elecronic%20Components/sensor/humidity%20temperature%20sensor%20dht11/DS_IM120628005_DHT11.PDF (http://itead-europe.com/pm/elecronic%20Components/sensor/humidity%20temperature%20sensor%20dht11/DS_IM120628005_DHT11.PDF)) riporta un accuratezza di +o- 2°C e +o- il 4% di umidità relativa.
Se dovessi inserire il valore a mano, probabilmente saresti più preciso del sensore.  :smiley-mr-green:
Il DHT22 (https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf (https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf)), costo intorno ai 10€ va un po' meglio: <+o- 0.5°C e +o- 2%RH
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 18, 2013, 10:46 am
Hai ragione butto i due DH11 che ho credevo che per una semplice misura ambiente si potevano usare
ma se accuratezza è questa sono buoni per il secchio della spazzatura :P

Allora vado con questi ? DHT22/AM2302 Digital Temperature and Humidity Sensor Replace SHT11 SHT15
http://www.ebay.it/itm/1PCS-DHT22-AM2302-Digital-Temperature-and-Humidity-Sensor-Replace-SHT11-SHT15-/261070585099?pt=LH_DefaultDomain_0&hash=item3cc904fd0b
Comunque io gli userei solo per ambiente e per lo più umidità per il Log
Perche per la lettura della temepratura che è infunsione della gestione del termoregolatore mi vorrei affidare solo hai Dallas DS18B20
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 18, 2013, 10:56 am
Quote

Code: [Select]
[quote author=PaoloP link=topic=192189.msg1432385#msg1432385 date=1382027781]
Ho dato uno sguardo a quel codice... mi sono messo ad urlare e a stapparmi i capelli, soprattutto quando richiama setup();  :smiley-eek-blue: :smiley-eek:
Per non parlare dei goto...

EDIT:
Tolto l'obbrobrio

 // ________________________Controller________________________


 float E = Tmeas - float(Tref);

 if ( E > T_delta)   // cooling at max  - positive voltage
 {
   //positive voltage
   digitalWrite(6, HIGH);
   digitalWrite(7, LOW);

   analogWrite(5, Imax_dutyCycle);
   lcd.setCursor(9, 1);
   lcd.print("Max-C");
   lcd.setCursor(9, 0);
   lcd.print("D:");
   lcd.print(Imax_dutyCycle * 100 / 255);
   lcd.print("%   ");
 }

 if ( E < -T_delta)
 {
   //negative voltage
   digitalWrite(6, LOW);
   digitalWrite(7, HIGH);
   analogWrite(5, Imax_dutyCycle);
   lcd.setCursor(9, 1);
   lcd.print("Max-H");
   lcd.setCursor(9, 0);
   lcd.print("D:");
   lcd.print(Imax_dutyCycle * 100 / 255);
   lcd.print("%   ");
 }

 if ( (E > - T_delta)  &&  (E < T_delta))
 {
   // PID or other control

   if ( E >= 0   ) // cooling
   {
     digitalWrite(6, HIGH);
     digitalWrite(7, LOW);

     int d =  fscale( 0, T_delta, 0, Imax_dutyCycle, E, 0);
     constrain(d, 0, Imax_dutyCycle);
     analogWrite(5, d);

     lcd.setCursor(9, 1);
     lcd.print("PID-C");
     lcd.setCursor(0, 1);
     lcd.print("Tm:");
     lcd.print(Tmeas);
     lcd.setCursor(9, 0);
     lcd.print("D:");
     lcd.print(d * 100 / 255);
     lcd.print("%   ");
   }

   else if (E < 0)
   { // heating
     digitalWrite(6, LOW);
     digitalWrite(7, HIGH);

     int d =  fscale( (-1 * T_delta), 0, Imax_dutyCycle, 0, E, 0);
     constrain(d, 0, Imax_dutyCycle);
     analogWrite(5, d);

     lcd.setCursor(9, 1);
     lcd.print("PID-H");
     lcd.setCursor(0, 1);
     lcd.print("Tm:");
     lcd.print(Tmeas);
     lcd.setCursor(9, 0);
     lcd.print("D:");
     lcd.print(d * 100 / 255);
     lcd.print("%   ");
   }

 }

 delay(50);

 Serial.print("Error ");
 Serial.print(E);
 Serial.print("   T : ");
 Serial.println(Tmeas);

 delay(500);
}



}


Alla fine calcola il delta all'uscita del pid: se maggiore della temperatura riscalda se minore raffredda.
Un banale IF.
Se la differenza supera i 2° in positivo o in negativo, riscalda o raffredda alla massima potenza, se all'interno dell'intervallo lavora di fino (PID).


Grazie Paolo per aver aggiustato il codice...in effetti ora e' molto piu' leggibile... :) :)
Posso provare a testarlo con il mio set up (anche se ho un problema con la motor shield che eroga solo 4A e quando la cella assorbe il max mi fa impallare la lettura della temperatura sull'ingresso analogico)

In effetti il "banale IF" del controllo come si vede sopra e' una soluzione semplice e immagino efficace (avendo cura di tarare bene isteresi).
Una cosa che vorrei pero' modificare  e' algoritmo di controllo di fino. Ora viene invocata una funzione interna  fscale() che non mi e' chiarissimo come funziona...vorrei sostituirla con la libreria PID standard e usarla ne due loop  if ( E >= 0   ) // cooling e   else if (E < 0)  // heating

partiamo da questo nocciolo e se risulta stabile e funzionante iniziamo a aggiungere il resto !

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 22, 2013, 01:46 pm
Bene Davide io finche non ho qualche PCB per fare prove sono fermo :(
Ma sto facendo qualcosa dal lato meccanico ho realizzato il sistema pompa e serbatoio e sono in attesa che arirvi qualche altro pezzo ordinato tipo il radiatore con ventola.

Come vanno i tuoi test con questo codice che ci hanno passato ?

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 22, 2013, 04:07 pm



Come vanno i tuoi test con questo codice che ci hanno passato ?

Grazie



sorry ma sono fermo anche io.... =( 
un po' perche' preso dal nuovo progetto della malteria  :smiley-red:...ma non puo' essere una scusa...e un po' perche' non ho risolto problema instabilità' del mio set up per cui la scheda arduino motor shield non riesce a reggere mettendo i due canali in parallelo la richiesta di corrente della cella da 60w (5A contro 4A erogati) e questo ...non so perche'...impalla anche il sensore di temperatura LM35 che comincia a sparare numeri a caso. Quindi quando provo a controllare il tutto PID inizia a convergere ma dopo un po' "esplode" tutto ..
O trovo un H-Bridge che eroga qualche ampere in piu' o cerco una cella un po' meno assetata...

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 22, 2013, 04:40 pm
O trovo un H-Bridge che eroga qualche ampere in piu' o cerco una cella un po' meno assetata...Davide

Allora anche a te farebbe comodo un PCB almeno per la parte di potenza :D

Di già fatto ci stanno questi

http://www.ebay.it/itm/171065203806?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649

http://www.ebay.it/itm/230965079712?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 22, 2013, 07:00 pm


Allora anche a te farebbe comodo un PCB almeno per la parte di potenza :D

Di già fatto ci stanno questi
http://www.ebay.it/itm/171065203806?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649
http://www.ebay.it/itm/230965079712?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649


e che ci devi fare con 60A  ?????????  una saldatrice PWM  :D :D :D :D :D   
non esageriamo...
si sto cercando qualcosa di "fatto" adatto allo scopo che pompi una decina di ampere...e lo cerco nella cara buona vecchia europa...non per questioni di razzismo ma perche' aspettare una spedizione dal sol levante e avere a che fare con la dogana e' estenuante
ovviamente in attesa del layout e PCB finale con il nostro super controller  XD

Davide

PS provo a mettere aletta raffreddamento a L298 e vedere se regge tirandogli il collo

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 22, 2013, 07:40 pm
e che ci devi fare con 60A  ?????????  una saldatrice PWM  :D :D :D :D :D  
non esageriamo...

Be io che voglio lagerizzare non so se usero "se ce la fa" una cella o piu di una ma credo almeno due celle servono quindi diciamo 12 15A
Attualmente ne ho comprato uno stock da 6 pezzi
E mi sono fatto il conto 6A per cella per 6 sono 36A ma spero di poter fare tutto con una max due celle  ;)
Poi non so perche si passa da controller da 2A subbito a drivers 30 40 e passa A e il costo è quasi simile :D


si sto cercando qualcosa di "fatto" adatto allo scopo che pompi una decina di ampere...e lo cerco nella cara buona vecchia europa...
non per questioni di razzismo ma perche' aspettare una spedizione dal sol levante e avere a che fare con la dogana e' estenuante

Si ti capisco a me oggi stanno arrivando componenti ordinati uno due mesi fa :D

Vedi se uno di questi che vendono in europa consegna stimata entro finemese ti va bene

http://www.ebay.it/itm/Pont-en-H-5A-30V-Commande-moteur-H-Bridge-Arduino-Raspberry-Pi-Motor-/271221450299?pt=LH_DefaultDomain_23&hash=item3f260ee63b

http://www.ebay.it/itm/MODULO-PID-50A-SINGLE-BRIDGE-PONTE-SINGOLO-PER-ARDUINO-AUTO-INTELLIGENTI-NUOVO-/141043351527?pt=Componenti_elettronici_attivi&hash=item20d6d6bfe7

http://www.ebay.it/itm/Double-pont-en-H-30A-15V-Arduino-H-bridge-motor-power-driver-/271299991537?pt=LH_DefaultDomain_23&hash=item3f2abd57f1


ovviamente in attesa del layout e PCB finale con il nostro super controller  XD
Certo anche io sono fremo ho gia i compo dentro appena ho una straccio di PCB almeno quello di potenza incido e provo
Intanto vado avanti con assemblaggio meccanico mi mancano solo gli scambiatori e il radiatore che sono in arrivo da oltreoceano
ed ho finito la parte peltier che ho modificato da aria h20 a h20 radiatore a  h20 serpentina per maggiore efficienza

PS provo a mettere aletta raffreddamento a L298 e vedere se regge tirandogli il collo


Umm puoi tirarci 500ma max 1A inpiu ma non credo farai miracoli dissipandolo meglio ma sicuramente male non fa :D
Prova con un overvolt della cella se ne hai una da sacrificare x i test forse ti rende dipiu

Ieri sera ho fatto qualche altro test allego foto e credo che con una cella non ce la si fa
Credo ne seriveranno tra due e 4 celle e due scambiatori in parallelo come quello che ho postato qualche topic dietro
Ma non è detto adesso sto dissipando ad aria magari quando dissipo h20 con radiatore riesco a tirarci dipiu

Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Oct 30, 2013, 06:10 pm

Qui il thread langue e i birraioli sono tutti impegnati a fare altro ...io per primo ..

Chiuse un po' di cose che avevo in pista torno sul tema della parte "core" del controller..ho appena ordinato un H-bridge basato su BTS7960B. Dovrebbe tirare 43 A e posso gestire ampiamente il mio ambiente di test e debug senza i problemi che ho con L298 che va in protezione !

http://www.ebay.it/itm/NEW-Double-BTS7960B-43A-Motor-Driver-High-power-Module-For-Smart-Car-Arduino-/200981688440?pt=UK_BOI_Industrial_Automation_Control_ET&hash=item2ecb713078&_uhb=1 (http://www.ebay.it/itm/NEW-Double-BTS7960B-43A-Motor-Driver-High-power-Module-For-Smart-Car-Arduino-/200981688440?pt=UK_BOI_Industrial_Automation_Control_ET&hash=item2ecb713078&_uhb=1)

spediscono da UK per cui in breve tempo dovrei averla in mano e proviamo a fare girare i codice di cui sopra e vedere se stabile

stay tuned

Davide

Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Oct 30, 2013, 07:25 pm
E si anche io sono preso dato che ho quasi terminato il clone del MastroBirraio automatico
anche lui comandato da Arduino nel trend BirraDuino ma dato che ho quasi finito nel fratempo che qualche amico di forum
ci butta su qualche pcb monofaccia per giocherellare ti seguo a ruota ed ho appena ordinato anche io lo stesso tuo modulo 12,50€ spedito ma ovviamente a me arrivera qualche mese dopo ma dato che ho prima il mastro birraio da finire
la fretta non è un mio problema :P Se qualcunaltro non ha fretta e vuole provare posto il link sotto

http://www.ebay.it/itm/170949755496?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Ma ovviamente un PCB sopratutto per la parte Madre Arduino Mega farebbe comodo  :% ;)

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Nov 07, 2013, 10:15 am
Allora Davide gli inglesi sono stati veloci nella spedizione ?
Ti è arrivato il modulo per testare il codice che gentilmente qui in formum ci hanno adattato ?

Nelfrattempo che spuntano fuori volontari per la Parte PCB ma sopratutto aggiustamenti al codice
Oggi mi è arrivato uno degli scambiatori mini radiatori in alluminio che avevo rodinato da oltreoceano
quindi vado avanti con il cablaggio della parte meccanica del sistema doppio scambiatore Cella H20
Posto una foto dello scambiatore arrivato sono due pezzi che collegerò in serie idrauilica oguno con su uan cella da 4x4cm

Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 10, 2013, 10:38 pm

Arrivato il modulo h-bridge da 43 A !!

(https://lh6.googleusercontent.com/-rDBK3UerFHo/Un_6niPsNqI/AAAAAAAACV4/1tdLK4L7M4k/s640/IMG_20131110_222103.jpg)

spero prossima settimana di assemblare il tutto e dedicare un po' di tempo a testare il codice

stay tuned

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Nov 11, 2013, 12:19 pm
Ottimo credevo facessero prima dal' UK
Ovviamente il mio da oltreoceano è ancora in viaggio oggi ho anche ordinato due celle TEC1-12715
Cosi ve vedo che non ce la faccio con quelle da 6A usero queste da 15A dato che sto modulo regge fino a 43A
e comunque Alimentatore che ho al max arriva a 12V 30A sono limite limite con queste due celle ordinate
anche se spero di fare tutto con quelle da 6A che ho gia dentro ora :D
Bene attendiamo sett prossima x i tuoi test :D
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 18, 2013, 11:10 pm
Ho finalmente trovato il tempo per collegare il ponte di H da 43A al mio set up

(https://lh6.googleusercontent.com/-9nsktlJhR6o/UoqOtyvAjJI/AAAAAAAACWY/t2mVccwqp_E/s576/%255BUNSET%255D.jpg)

Sto facendo qualche prova preliminare con il codice che avevo sviluppato per il controllo monodirezionale avvero singolo PID + pwm + h bridge usato in una sola direzione...giusto per adattare nuova unità di potenza che in realtà e costituita da due half bridge indipendenti che vanno gestiti in maniera diversa ris motor shield

Terminata questa fase mi dedico finalmente al codice del controllo bidirezionale  ;)

Stau tuned
Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Nov 19, 2013, 07:59 am
Terminata questa fase mi dedico finalmente al codice del controllo bidirezionale  ;)

Ottimo a me man mano stanno arrivando le varie parti ordinate :D
In settimana arrivano anche le serpentine inox il tedesco ha spedito ieri ordine fatto domenica superveloci :D
Dai anche un occhio a questo codice è sempre per una gestione camera di fermentazione ma tramite shield lan
la stessa che avevo proposto di inserire in questo progetto

http://www.birrandosiimpara.it/birrabirra/viewtopic.php?f=80&t=4513&p=46675#p46675

Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 24, 2013, 06:35 pm

Sto continuando a sperimentare il codice base e le librerie PID e al fine di rendere la situazione più reale ho inserito una delle due alette di raffreddamento + ventola all'interno di una scatola di polistirolo da gelato cercando di realizzare una mini cella termostatata.

(https://lh5.googleusercontent.com/-CiwocrhIQSY/UpIrW-dTexI/AAAAAAAACXI/jKitfzh-Bj0/s640/%255BUNSET%255D.jpg)

all'interno la sonda LM35 legge la temperatura e per riscontro ho inserito anche una sonda indipendente connessa a termometro digitale

(https://lh6.googleusercontent.com/-pT8SYCY-Y0I/UpIrbUvqYvI/AAAAAAAACXQ/XHe-Gn0PJVU/s640/%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 la media) e il valore letto "istantaneo" non corrisponde a quello reale misurato con un termometro digitale indipendente.

(https://lh4.googleusercontent.com/-d3nK-E7IitY/UpI4DIIR4xI/AAAAAAAACXg/rPbKrgFMpn8/s640/grafico%2520temperature%2520LM35.jpg)

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

allego il codice se qualcuno ci vuole dare un occhio ?

Code: [Select]
/*

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)
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



/* Impostazione dell'hardware */

//Inizializzazione del PID, impostazione a DIRECT (frigo)
PID myPID(&Input, &Output, &Setpoint,2,5,1, REVERSE);

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 = 15;                    //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(LPWM, OUTPUT);
  pinMode(RPWM, OUTPUT);
  pinMode(enL, OUTPUT);
  pinMode(enR, OUTPUT);
  digitalWrite(enL, HIGH);
  digitalWrite(enR, HIGH);

 
}

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(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 (3000);
}

/* 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 8)
  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
}


Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Nov 24, 2013, 09:25 pm
La temperatura rilevata dal LM35 oscilla anche di molto (pur facendo 5 rilevazioni e calcolando la media) e il valore letto "istantaneo" non corrisponde a quello reale misurato con un termometro digitale indipendente.
c'e' qualche cosa che non quadra..devo capire cosa o cambio sonda di temperatura. Davide

Forse la lettura analogica viene disturbata dal PWM del modulo di potenza ?????
Prova ad usare un cavo antifurto schermato e los chermo collegato solo da un leto al negativo Alim

Se vuoi levaqrti il dubio a volo se non lo trovi veloce un DS18B20 digitale te lo posso mandare io
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 24, 2013, 11:31 pm

Ho cambiato sensore e sono passato al DS18B20 con le libreire OneWire e DallasTemperature

come sempre faccio in questi casi vado per gradi...prima verificato che il sensore leggesse la temperatura correttamente e poi ho fatto il merge dei due Sketch dando in ingresso al PID la temperatura misurata e prendendo uscita del PID per pilotare ponte di H.

Misteri della programmazione ma quando faccio il merge la lettura della temperatura impazzisce...ho un valore fisso tipo 85...e se vario il delay nel loop varia anche questo valore.

Questo e' il codice stand alone che mi legge temperatura perfettamente

Code: [Select]
/*
Lettura_ds18b20.pde
Il programma permette la misurazione della temperatura
che viene mostrata su un display LCD

Vengono utilizzati i seguenti pin
Pin +5V         -> Alimentazione
Pin GND         -> Alimentazione
Pin Digital 2   -> Linea dati sensore DS18B20



*/

#include <OneWire.h>
#include <DallasTemperature.h>


// Il terminale data del sensore è connesso
// alla porta 2 di Arduino
#define ONE_WIRE_BUS 2

// Imposta la comunicazione oneWire per comunicare
// con un dispositivo compatibile
OneWire oneWire(ONE_WIRE_BUS);

// Passaggio oneWire reference alla Dallas Temperature.
DallasTemperature sensors(&oneWire);


void setup(void)
{
  Serial.begin(9600);
  // Start up the library
  sensors.begin();
}

void loop(void)
{

  sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura
Serial.println("Temperatura di: ");
  Serial.print (sensors.getTempCByIndex(0));
  Serial.println (" C");
}



questo invece e' il codice completo dove non ho fatto altro che riportare la parte di lettura temperatura in ingresso al PID

Code: [Select]
/*
Il programma misura la temperatura tramite il sensore DS18B20 e lo usa come ingresso al PID
L'uscita del PID pilota un circuito H-bridge

Vengono utilizzati i seguenti pin per DS18B20
Pin +5V         -> Alimentazione
Pin GND         -> Alimentazione
Pin Digital 2   -> Linea dati sensore DS18B20

*/

#include <OneWire.h>
#include <DallasTemperature.h>
#include <PID_v1.h>

/* Definizioni globali */

// Il terminale data del sensore è connesso alla porta 2 di Arduino
#define ONE_WIRE_BUS 2

// Imposta la comunicazione oneWire per comunicare
// con un dispositivo compatibile
OneWire oneWire(ONE_WIRE_BUS);

// Passaggio oneWire reference alla Dallas Temperature.
DallasTemperature sensors(&oneWire);

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

/* Impostazione dell'hardware */

//Inizializzazione del PID, impostazione a DIRECT (frigo)
PID myPID(&Input, &Output, &Setpoint,2,5,1, REVERSE);

void setup()
{

  Setpoint = 15;          //definizione del set point
  Serial.begin(9600);
  Serial.println("Temperatura    PIDout    Corrente\n");

  //turn the PID on
  myPID.SetMode(AUTOMATIC);
  // Start up the OneWire library
  sensors.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()
{
  double temp = sensors.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);
 
}



sicuramente sbaglio qualche cosa...ma vorrei sapere cosa !  :0 :0

ora vado a dormire se no do di matto...

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Nov 26, 2013, 09:32 am

Ho cambiato sensore e sono passato al DS18B20 con le libreire OneWire e DallasTemperature

Non ne so niente di programmazione aspettiamo gli esperti
Ma ricordo che in Birraduino si doveva anche specificare il tipo di sensore Dallas
#define OwType  1 /* 0 = 18s20 - 1= 18b20 */
Prova anche a cambiare PIN con brauduino e su birraduino sul 4 e 8 andava bene
ricordo che provai su altri pin perche mi serviva libero il 4 per via del shiel lan e non leggeva bene
Magari il PIN 2 che hai usato ora lo usa qualche libreria per qualche cosa e per questo sballa quando ci metti altro codice sotto

Io intanto vado avanti con assemblaggio meccanico :D

https://plus.google.com/photos/117096022619927896725/albums/5718015302058914513/5949578734407769298?banner=pwa&pid=5949578734407769298&oid=117096022619927896725

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 26, 2013, 01:52 pm
trovato errore... :smiley-red:
una banale dimenticanza nel loop del codice completo di un richiamo alla "sensors.requestTemperatures()"

ora legge temperatura corretta, questa sera collego H-Bridge e cella e provo a vedere se instabilita' che avevo con LM35 sparisce

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Nov 26, 2013, 02:33 pm
Ottimo mi fa piacere che hai trovato inghippo be in teoria questa essendo digitale
non dovrebbe soffrire di spurie PWM e interferenze sul alim
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 26, 2013, 03:29 pm
Fermo restando che devo ancora completare i test nella configurazione "mono direzionale"  ovvero o frigo o stufa sto sempre ragionando su come impostare il codice del controllo bidirezionale/termostatico con inversione caldo/freddo

A parte l'approccio suggerito e discusso in qualche post precedente (che comunque proverò) di avere un controllo "esterno" che decide se si e' sopra o sotto set point e quindi decide la direzione del H-Bridge ho trovato un interessante articolo sui controlli PWM (di motori) con Locked Anti-phase

http://www.tmasi.com/robotica/pwmtut/pwmtut_2.htm (http://www.tmasi.com/robotica/pwmtut/pwmtut_2.htm)

E' un approccio alternativo a quello Sign and Magnitude dove un pin di controllo pilota la direzione ovvero se il controllo lavora  frigo o stufa e il duty cycle del segnale PWM pilota la potenza da 0 a 100%

Per il controllo LAP può bastare anche solo un segnale di comando infatti l'onda quadra stabilisce sia la velocità che il verso di rotazione nel seguente modo:
1.Duty cycle a 0% : massima potenza in un verso (frigo)
2. Duty cycle al 50%: potenza applicata pari a 0
3.Duty cycle al 100%: massima potenza nel verso opposto (stufa)

avevo prospettato questo approccio all'inizio ma poi scartato perche' la maggior parte dei ponti di H (tipo L298)  funziona in modalita' SM

Ho trovato tuttavia un integrato LMD18200 che supporta anche la modalita' LAP  e questo ponte di H sembra interessante.

http://www.droids.it/cmsvb4/content.php?237-990-009-H-Bridge-TANK-3A-HP-Motor-Controller-IT (http://www.droids.it/cmsvb4/content.php?237-990-009-H-Bridge-TANK-3A-HP-Motor-Controller-IT)

(http://www.droids.it/cmsvb4/attachment.php?attachmentid=323&d=1277738361)

peccato solo per i soliti 3 A max di potenza
da capire se semplifica algoritmo di controllo rispetto all'approccio SM
Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Nov 26, 2013, 04:47 pm
Scusa questo non fa la stessa cosa ? o non è un vero LAP ? Locked Anti-Phase

http://www.ebay.it/itm/MODULO-PID-50A-SINGLE-BRIDGE-PONTE-SINGOLO-PER-ARDUINO-AUTO-INTELLIGENTI-NUOVO-/141043351527?pt=Componenti_elettronici_attivi&hash=item20d6d6bfe7

RPWM Forward PWM input, high active.
LPWM Reverse PWM input, active high.
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 26, 2013, 04:54 pm
Direi di no....in un LAP il segnale PWM e' unico e non c'e' un pin high/low per fare il reverse...

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 26, 2013, 08:05 pm
Ora ci siamo ..funziona !
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%

(https://lh5.googleusercontent.com/-6o3fXe7MoVM/UpTw2SgPxCI/AAAAAAAACX8/UzDVrwV0FAY/s640/grafico%2520temperature%2520DS18B20.jpg)

abbiamo messo un punto fermo !



stay tuned
Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 27, 2013, 09:44 am
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

(https://lh3.googleusercontent.com/-rjyzsrdHljM/UpUsKBg5KfI/AAAAAAAACYM/YsE753DlsEk/s640/grafico%2520temperature%2520DS18B20%2520heating.jpg)

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
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: PaoloP on Nov 27, 2013, 09:51 am
Interessante.  :smiley-mr-green:
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: Etemenanki on Nov 27, 2013, 10:05 am
Solo un'appunto (non sulla birra, che sono "quasi astemio" :P XD) sulla cella di Peltier, che ne ho usate a decine ...

Noto dall'ultimo grafico che l'alimentazione della cella la togli completamente, se interpreto correttamente (pid output) ... le celle di Peltier, non sono isolanti termici, anzi, senza alimentazione hanno una discreta conducibilita' termica in entrambe le direzioni, quindi il tuo insieme, quando la cella si spegne, diventa in pratica un dissipatore all'interno collegato termicamente ad un dissipatore all'esterno, e questo ti sottrae calore piu velocemente ... potrebbe essere per quel motivo che hai quell'oscillazione piu ampia ...

In genere nei sistemi di refrigerazione si prevede sempre un minimo di alimentazione per la cella, per fare in modo che non riconduca all'interno il calore appena sottratto ... con i dovuti limiti (perche' il riscaldamento e' piu efficente della refrigerazione) potresti fare lo stesso ... ovvero prevedere una soglia minima al di sotto della quale l'alimentazione della cella non scende mai, in modo che rimanga sempre "in funzione" (magari anche solo all'1 o 2 %), in modo che non si trasformi da pompa di calore a conduttore indifferenziato di calore, sottraendolo dal lato caldo quando si spegne ...
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 27, 2013, 12:10 pm

Solo un'appunto (non sulla birra, che sono "quasi astemio" :P XD) sulla cella di Peltier, che ne ho usate a decine ...

Noto dall'ultimo grafico che l'alimentazione della cella la togli completamente, se interpreto correttamente (pid output) ...


Grazie per il suggerimento in effetti si vede proprio che raggiunto il set point ho un primo picco a quasi 10 gradi sopra dopdiche' il PID reagisce portando a 0 l'uscita.. in seguito il sistema si stabilizza e entra in quel livello di oscillazione  dove si vede che periodicamente taglia la potenza a 0. Nel caso frigo invece continua rimanere su livelli intorno al'80% dove le celle di peltier lavorano correttamente.

Nel mio codice ho preso brutalmente uscita del PID e l'ho passata in ingresso alla AnalogWrite() che controlla il ponte di H

Sicuramente impedire un trasferimento di calore (in questo caso di freddo) dall'esterno all'interno manentendo alimentato un minimo la cella e' una idea da implementare ma tieni anche conto che il mio ambiente di prototipazione e' tutto "empirico" nel senso che non e' assolutamente detto che la risposta termica al caldo e al freddo sia la stessa (banalmente le due alette e le ventole sono dimensionate diversamente) per cui credo che si debba agire anche sulle 3 costanti ottimizzandole per i due versi di funzionamento del PID

Se ricordo bene dal mio esame di "controlli automatici" la parte che innesca le oscillazioni e quella integrativa che somma nel tempo gli errori volta per volta...mentre la parte derivativa tende a limitare le oscillazioni
Il setting del grafico e' 2,5,1...Potrei provare a ridurre Ki e aumentare un pelo Kd 

Etemenanki vista la tua esperienza hai qualche setting da suggerire ?
Apprestandomi a mettere insieme i due pezzi sono ancora piu' preoccupato della stabilita' del tutto in prossimita' di temperature esterne vicino al set point dove si deve decidere se far lavorare il PID caldo o quello freddo....il semplice approccio di un paio di IF innestati con inversione della logica del PID non mi convince (e' come un controllo on/off con isteresi con qualche complicazione in piu')
Qualche idea per avere un PID intrinsecamente "bidirezionale"  o "termostatico"?  anche idea del Locked Anti-phase (usata con successo sui motori) non mi dispiace.. qualche esperienza in merito sulle celle ?

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: Etemenanki on Nov 27, 2013, 04:00 pm
Be', io posso darti suggerimenti "hardware", non sono un programmatore ... a livello di usare la cella sia come refrigeratore che come riscaldatore, avrai sempre il problema dei dissipatori dimensionati male, perche' per sua stessa natura la cella scalda molto piu di quanto raffreddi (in realta', e' quello il principale errore che la gente fa comunemente pensando alle celle di Peltier, e cioe' che "raffreddino" ... mentre invece sono semplicemente "pompe di calore", che spostano il calore dal lato "freddo" a quello "caldo", e ovviamente devono dissipare sul lato "caldo" anche l'energia che utilizzano per il procedimento) ... anche usando due dissipatori identici per le due facce, ci sara' sempre molto piu riscaldamento che refrigerazione ... la cosa piu pratica sarebbe di usare un'elemento riscaldante a parte, dimensionando la cella per la sola refrigerazione ...
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 27, 2013, 05:24 pm

Be', io posso darti suggerimenti "hardware", non sono un programmatore ...


chiaro il principio sulla asimmetria tra caldo e freddo...va tentuto in conto nel dimensionamento considerando che nella maggior parte dei casi (ma gli amici birrofili mi smentiranno...) il sistema viene usato come frigo per abbattere di qualche grado le temperature tipiche delle nostre case/cantine alle temperature tipiche di fermentazione 14-20 gradi. Piu' raramente ci si trova con una cantina troppo fredda e la necessita' di alzare la temperatura di qualche grado.

Ne approfitto sul tema HW per porti una domanda contando sulla tua esperienza....fino ad ora abbiamo ragionato su un controllo PWM a duty cycle variabile e frequenza fissata e arduino nativamente ha frequenze del PWM di qualche centinaio di HZ.
Il tema della frequenza del PWM ho capito che per la cella di peltier,che non e' puramente resistiva, puo' essere un problema.
Qualche suggerimento ?
Altri metodi di controllo efficaci ?

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: Etemenanki on Nov 28, 2013, 04:21 pm
A livello di funzionamento "intrinseco", la cella di Peltier si comporta come (ed in effetti, cosi e') una serie di giunzioni a semiconduttore "parzialmente e nonlinearmente resistive" (lo so che non e' una descrizione accurata, ma il modello e le formule occupano troppo spazio :P) ... comunque a livello di funzionamento pratico, il sistema a PWM e' uno dei migliori, a condizione che le frequenze non siano troppo basse (il che permetterebbe alla cella di "rovesciare" parte del trasferimento in modo passivo) ne troppo alte ... io le ho usate a frequenze che andavano da 500 a 1500 Hz senza alcun problema (ovviamente solo in un senso), al massimo per alcuni sistemi che richiedevano funzionamenti specifici e dove non era possibile regolare il duty-cycle su un minimo fisso, sovrapponevo una componente continua al PWM, in modo che anche con il PWM a zero la cella funzionasse almeno al 10% della corrente nominale, ma questo non e' indispensabile nel tuo caso, perche' se usi il PWM di Arduino, che dovrebbe essere sugli 800Hz, se non sbaglio, l'inerzia termica della cella non gli da comunque il tempo per dissipare in modo passivo in reverse (sempre se il PWM non va a zero, oviamente ... imposta un minimo, anche solo il 3 o 4 % del duty cycle del PWM attivo, e quel problema praticamente si azzera, senza bisogno di sovrapporci della continua)  ...

I sistemi piu "efficaci" (a livello di controllo, non di energia risparmiata) sono quelli analogici proporzionali, ma in un caso come il tuo non credo siano necessari (si usano in laboratorio, per precisioni estreme, con reti di feedback multiple e controlli incrociati fra lato caldo e freddo della cella, ma, costi a parte, per fermentarci della birra non avrebbero comunque senso)

Quello che invece puo "aiutare", e' uno spessore sulla cella ... un blocchetto di allumunio da 3 o 4 cm di spessore e largo come la cella (o rame, ma costa di piu) fra la cella ed uno dei dissipatori, in genere quello freddo (il sistema migliore sarebbe due blocchetti, uno per lato, ma complica l'assemblaggio) consente di migliorare l'isolamento, mettendoo piu materiale termoisolante fra i due dissipatori ... in quel modo si possono anche usare due dissipatori grandi uguale, e le superfici interne non in contatto con le celle interferiscono di meno ... basta che le superfici di contatto siano parallele e piu piane possibile ...
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: leo72 on Nov 29, 2013, 08:28 am
PS:
non so se conosci questo articolo:
http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/

Ti spiega come migliorare il PID.
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 29, 2013, 02:34 pm

... comunque a livello di funzionamento pratico, il sistema a PWM e' uno dei migliori, a condizione che le frequenze non siano troppo basse (il che permetterebbe alla cella di "rovesciare" parte del trasferimento in modo passivo) ne troppo alte ... io le ho usate a frequenze che andavano da 500 a 1500 Hz senza alcun problema (ovviamente solo in un senso), al massimo per alcuni sistemi che richiedevano funzionamenti specifici e dove non era possibile regolare il duty-cycle su un minimo fisso, sovrapponevo una componente continua al PWM, in modo che anche con il PWM a zero la cella funzionasse almeno al 10% della corrente nominale, ma questo non e' indispensabile nel tuo caso, perche' se usi il PWM di Arduino, che dovrebbe essere sugli 800Hz, se non sbaglio, l'inerzia termica della cella non gli da comunque il tempo per dissipare in modo passivo in reverse (sempre se il PWM non va a zero, oviamente ... imposta un minimo, anche solo il 3 o 4 % del duty cycle del PWM attivo, e quel problema praticamente si azzera, senza bisogno di sovrapporci della continua)  ...



grazie per l'ulteriore conferma, mi torna con la cultura che mi sono fatto e con una serie di prodotti commerciali analizzati che gestiscono le celle in PWM con frequenze cha vanno da qualche centinaio di HZ a un paio di KhZ
Per cui direi per il nostro progetto fissiamo il controllo a PWM e la frequenza di uscita su arduino della Analog Write e' di 490Hz e in prima battuta potrebbe andare. Lavorando sui timer si puo' eventualmente cambiare la frequenza

Quote

Quello che invece puo "aiutare", e' uno spessore sulla cella ... un blocchetto di allumunio da 3 o 4 cm di spessore e largo come la cella (o rame, ma costa di piu) fra la cella ed uno dei dissipatori, in genere quello freddo (il sistema migliore sarebbe due blocchetti, uno per lato, ma complica l'assemblaggio) consente di migliorare l'isolamento, mettendoo piu materiale termoisolante fra i due dissipatori ... in quel modo si possono anche usare due dissipatori grandi uguale, e le superfici interne non in contatto con le celle interferiscono di meno ... basta che le superfici di contatto siano parallele e piu piane possibile ...


Chiaro il suggerimento per uno scambiatore aria -aria tipo quello che sto usando per prototipare.
In generale la parte "meccanica" e' tutta da definire e  ciascun homebrewer e' libero di realizzare la sua "cella" con sistema di scambio che piu' preferisce...aria-aria, aria-h20, h20-h20 e con la costruzione meccanica che riesce a reallizzare.
Lo scopo del progetto e' infatti realizzare una shield di controllo general pourpouse che vada bene per ogni soluzione comprese quello con motore frigo per raffreddare e resistenza per riscaldare.

Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Nov 29, 2013, 02:48 pm

PS:
non so se conosci questo articolo:
http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/

Ti spiega come migliorare il PID.


Si grazie lo avevo letto qundo cercavo di capire il funzionamento della PID library di arduino
Probabilmente partendo dal codice delle librerie si puo' realizzare quello che continua a frullarmi per la testa...ovvero un meccanismo/algoritmo/funzione che consenta di passare dal caldo al freddo in maniera continua e soft non in maniera binaria decidendo a priori la DIRECTION (direct o reverse) del PID come richiedono ora le librerie.

In altre parole le librerie PID sono usate O per una elemento riscaldante O per un elemento raffreddante e il verso e' un parametro di input della funzione (e di pilotaggio del PIN opportuno del H-bridge) vorrei qualcosa che cercasse di raggiungere il set point minimizzando errore rispetto al valore misurato e fornisse in uscita un segnale PWM unico e un bit per indicare se attivare frigo o stufa o ancora meglio variando il duty cycle in continuo secondo la tecnica Locked Anti-phase

any suggestion ?
grazie
Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Dec 01, 2013, 08:13 pm

Ho trovato un altro di articoli interessanti sul tema PID - H-bridge e controllo termostatico bidrezionale

Le librerie PID consentono di definire un "OutputLimit e definendo un range -255,255 e una verifica del segno +- del Output dovrebbe essere semplice fare un controllo bidirezionale

Code: [Select]

myPID.SetOutputLimits(-255,255);
void loop()
if(Output>0)
{
   analogWrite(hotPin, Output);
}
else
{
   analogWrite(coldPin, -1*Output);


da aggiungere un po' di isteresi e il controllo del PIN di direzione del h-bridge ma mi piace come idea


un' altra possibilità' interessante e' usare un integrato dedicato al controllo tipo il MAX1968

allego descrizione sintetica

highly integrated and cost-effective, high-efficiency, switch-mode drivers for Peltier thermoelectric cooler (TEC) modules. Both devices utilize direct current control to eliminate current surges in the TEC. On-chip FETs minimize external components while providing high efficiency. A 500kHz/1MHz switching frequency and a unique ripple cancellation scheme reduce component size and noise.
The MAX1968 operates from a single supply and provides bipolar ±3A output by biasing the TEC between the outputs of two synchronous buck regulators. Bipolar operation allows for temperature control without "dead zones" or other nonlinearities at low load currents. This arrangement ensures that the control system does not hunt when the set point is very close to the natural operating point, requiring a small amount of heating or cooling. An analog control signal precisely sets the TEC current


diciamo che nell'ottica di una shield dedicata un integratino di questo tipo non e' male (a parte i 3A un po' scarsi) pilotato direttamente dal DAC di arduino

Continuo a ragionarci e provare..

Davide

Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Dec 08, 2013, 10:57 pm
Bene nelfrattempo che troviamo un aiuto per il PCB e Firmware
oggi sono andato avanti con la parte meccanica

(https://lh6.googleusercontent.com/-oC2FltIIExg/UqTmq51SfnI/AAAAAAAAQ-Y/OSzCYMkIIOY/w791-h806-no/20131208_200941.jpg)

Finito la parte scambiatore doppio h20 h20 se domani ho tempo faccio delle misure per adesso ho solo assemblato.

A qui la Pompa è un tre fili pwm oltre che alcune ventole quindi la neccessita di vere questo PCB base di comando
diventa sempre più necessaria se qualche volontario visto che tra poco si va in ferie e si ha piu tempo
bene venga io saro lieto di montare e testare :D

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Dec 12, 2013, 10:20 am
So rimasto fregato la Pompa con tanica che ho preso in foto su
e PWM ovviamente alimentado con + - 12V non gira
"spero di non averla bruciata in questa prova maldestra che gia sapevo non andare"
E mo ho prendo un regolatore di motori da modellismo e un provaservi e la faccio girare
o avete gia qualche pezzo di codice tipo quello che stava provando Davide dove posso anche far attivare la pompa in PWM
prelevata da arduino per comandare anche la pompa in PWM provare se il tutto va ?

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Jan 08, 2014, 08:45 pm
Se puo essere utile dopo mesi autore di questo video

https://www.youtube.com/watch?v=hWR24hynjXc

Ha postato il link del codice

http://richmondreefers.com/phpbb/viewtopic.php?f=21&t=13510&sid=971a076c42d074ac212e9dbeec09cc4c#p121647

Magari parti di esso possono torarci utili per questo progetto :D
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Jan 14, 2014, 03:52 pm
Aggiornamento :D

Il Nuovo PCB per la gestione camera fermentazione grazie all' aiuto dell' utente di forum Etemenanki
E pressoche questo manca qualche affinatura

(https://lh6.googleusercontent.com/-teeaKH-L7vs/UtP13CQUcoI/AAAAAAAAS5Q/qiZJkBiZWgA/w1109-h754-no/BirraDuinoMega2560.jpg)

Breve sunto di cosa ha :

Ingressi sensoristica totali 8 per ora da A2 >A7 solo 6 ne mancano 2

N° 1 Audio LM393
N°2 Umidità/Temp DHT22 RHT03
N°1 Sensore Consumo Corrente Analogico 20A range ACS712
N°2 Sensori temperature facce Cella Peltier
N°1 Misura diretta Liquido DALLAS DS18B20
N°1 Porta Aperta

Ingressi utente Tastiera membrana schema a griglia 4x4 N°8 16 tasti
Pin Usati 23 25 27 29 31 33 35 37

Ingressi Pulsanti Analogici con resistenze su ingresso Analogico compatibile BirraDuino A?? 5 Pulsanti Analogici

Modulo per Data Ora corrente in IC2 RTC DS1307 AT24C32

Uscite5 PWM attuali 6 possiamo levarne una
Pin Usati da 4 >9
Per Cella Peltier al massimo Due PWM + Uno Inversione Polarità
Possibile Ventone in PWM Due
Possibile Pompa PWM 1
Possibile Resistenza PWM

5 Digitali 1 Buzzer 4 Relè "Transistor BC337 anche pilotaggio SSR" A14 >A19 attuale 6 possiamo levarne Una

LCD Basati su Hitachi HD44780 o I2C
Pin 22 = DB4
Pin 24 = DB6
Pin 26 = DB7
Pin 28 = DB5
Pin 30 = EN
Pin 32 = RS
Pin 34 = comando del backlight

La scheda per la SD prende i pin di controllo dalla Mega, che corrispondono a: 53 (SS, o CS), 51 (MOSI), 52 (SCK) , 50 (MISO) ,
quindi questi pin non vanno usati per niente altro.

La W5100, oltre ai pin MOSI, MISO e SCK che prende dal connettore ICSP, prende anche i seguenti pin: 10 (al 10 della W5100),
13 (al 13 della W5100), 17 (al 4 della W5100) 18 (al 2 della W5100), A0 (ad A0 della W5100), A1 (ad A1 della W5100),
quindi anche questi non vanno usati per niente altro.

Ieri è arrivato anche a me il modulo di Potenza

(https://lh5.googleusercontent.com/-hGPrxdsQz0M/UtR4ZDFZh2I/AAAAAAAAS7w/cwDpZ6YlNdo/w776-h754-no/IMG_20140114_003335.jpg)

Se i test di Davide sullo stesso sono positivi metitamo questo come ufficiale e mettiamo il connettore flat diretot sul PCB

E possiamo iniziare a testare due righe di codice sul nuovo HW :D

Grazie

EDIT BY MOD: usare dimensioni per le immagini più ridotte
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: arzaman on Jan 14, 2014, 06:01 pm
Savio

sinceramente mi sono un po' perso ...e non sto solo parlando dei test dell'algoritmo per il controllo delle celle dove sono rimasto indietro causa "troppa carne al fuoco" ma non mi e' chiaro il senso della scheda che proponi.
Gran bel lavoro ma sulla base di quali specifiche? requisiti ? disegno ?
Probabilemnte colpa mia che ho perso qualche puntata...stavamo discutendo di uno schema a blocchi di massima e di quali funzioni inserire e congelare per poi passare al disegno del circuito, allo sviluppo del SW etc...come siamo arrivati gia' alla fine ?

capisco tua "fretta" di procedere ma condivido parzialmente l'approccio...forse ne abbiamo discusso in precedenza e sul forum ho visto qualche commento in merito ma per ottenere un qualche risultato bisognerebbe procedere in maniera piu' strutturata, lineare, definendo bene le specifiche iniziali di cosa si vuole fare, facendo una analisi, un disegno di massima e poi raffinandolo dal punto di vista HW e SW. Magari documentando e tracciano i vari step e fasi su qualche sito tipo surceforge e non su un forum che a un certo punto diventa illeggibile.

massima disponibilita' a contribuire ma o strutturiamo bene la cosa o miei contributi saranno sempre spot e poco utili in un progetto che e' gia' alla fine prima ancora di iniziare  ;)

Davide
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Jan 14, 2014, 07:50 pm

" ma non mi e' chiaro il senso della scheda che proponi.
Gran bel lavoro ma sulla base di quali specifiche? requisiti ? disegno ?


In Base allo schema a Blocchi che ho postato ad Inizio Topic nella richiesta di scrittura Software

Avevo premesso che avei seguito la parte HW e Strutturale e di test e cosi sto facendo :D

Il senso e di avere una Base HW univoca ovvio la si puo montare tutta o in parte e testare solo la parte che interessa

Tipo piazzarci su Arduino e saldare solo i compo per un Ingresso Sonda e un Uscita PWM e testare quella parte di codice

Ma almeno cosi si ha una base di librerie da caricare PIN Out di configurazione e moduli da usare
su HW simili o uguali almeno i risutlati dei test dal lato HW sono basati di HW simile/identico

Probabilemnte colpa mia che ho perso qualche puntata...stavamo discutendo di uno schema a blocchi di massima e di quali funzioni inserire e congelare per poi passare al disegno del circuito, allo sviluppo del SW etc...come siamo arrivati gia' alla fine ?


Non siamo alla fine ma all' inizio :D
Tu stavi facendo dei test e prove e io non potevo replicarli perche a lavorare con fili volanti non mi trovo :(
Adesso con un HW a supportarmi se qualcuno propone una stringa di codice la carico nel hw e possiamo subito provare
e se altri lo vogliono fare hanno un riferimonto hw di test

In questo HW ci sta il massimo che puo servire come IO nel progetto
ma non è detto che si debba usare montare tutto  e perforza tutto assieme

Come premesso me la cavo un po nella parte pratica montagigo HW sia elettornico che strututrare
quindi per mie capacita parto per forza da quello che capisco che probabilmente tutti gli altri partono dal disegno
o SF quindi questo mio approccio puo sembrare inverso ma almeno cosi chi vuole giocherellare ha una base almeno
sul lato HW definita :D


capisco tua "fretta" di procedere ma condivido parzialmente l'approccio...forse ne abbiamo discusso in precedenza e sul forum ho visto qualche commento in merito ma per ottenere un qualche risultato bisognerebbe procedere in maniera piu' strutturata, lineare, definendo bene le specifiche iniziali di cosa si vuole fare, facendo una analisi, un disegno di massima e poi raffinandolo dal punto di vista HW e SW. Magari documentando e tracciano i vari step e fasi su qualche sito tipo surceforge e non su un forum che a un certo punto diventa illeggibile.Davide


Si certo la mia diciamo fretta è data dal fatto che indipendentemente da questo progetto questo PCB che appunto l'ho definisco universale per i progetti brassicoli già da subbito appena lo terminerò con le dovute modifiche FW
lo usero in BirraDuino/BrauDuino E quasi subito nella gestione dello spillatore protatile dove mi servirà
una mano ma apriprò un topic separato per adattare il soft a questo HW ed eventuale traduzione menu.

E visto che la prima parte da testare quella dove stavi lavorando era appunto la cella di peltier con il modulo per motori da 43A
volevo sapere come eri messo con i test perche se quesdta parte era definita erano gia due punto Software e HW definiti e finiti e si poteva passare avanti.

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on Mar 04, 2014, 07:39 pm
Buona Sera avendo finito finalmente la parte brassatura con Open ArdBir

Adesso ci manca solo questa per la gestione camera fermentazione allora qualche news in merito ?

Grazie
Title: Re: Cercasi Volontari Per Automazione Camera Fermentazione "Birra" Con Arduino
Post by: saviothecnic on May 16, 2014, 03:08 pm
Per i Programmatore che seguono il topic e anche per ridargli un po di vita e non andare nel dimenticatoio
che ne dite questa parte di codice puo tornarci utile per la sessione datalogger per la nostra camera di fermentazione ?

Grazie

https://learn.adafruit.com/adafruit-data-logger-shield/using-the-real-time-clock-3