Pages: [1]   Go Down
Author Topic: Brew System -impianto Birra  (Read 2665 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti,sono un novello riguardo arduino e stò cercando di automatizzare il mio impianto della birra.Ho difficoltà nella programmazione dell'arduino mega che ho in quanto sono più elettronico  che informatico.
ho una sonda DS18B20 per la pentola di MASH
Gestirò il tutto con tre relè SSR che già ho.
quindi con un relè Gestirò l'accensione del motore per mescolare l'orzo nella pentola di mash,con un altro accenderò e spengerò l'elettrovalvola del fornello della pentola di mash,e con il terzo accenderò e spengerò il fornello della pentola di bollitura.
C'è qualcuno che può aiutarmi a fare una bozza di Sketch....Considerate che ho visto sul forum e c'è poco e niente al riguardo.....
In pratica avrò la possibilità di programmare 4/5 step di temperatura e per un determinato tempo, raggiunta la temperatura devo mantenerla per un tot di tempo.....Tutto ciò gestibile con dei pulsanti set point.
Come display ho sia il seriale che il parallelo ed ho arduino mega e 2009,pulsanti ne ho una decina.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho fatto questo ma mi dà errore quando provo a verificarlo sul punto
pinmode(motor_mashtun, OUTPUT);

Code:
#include <LiquidCrystal.h>
#include <OneWire.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

int motor_mashtun = 31; //relè motore mashtun
int mashtun_birra = 29; // relè mashtun birra
int boil_birra = 30;  //relè mashtun bollitore birra
int sonda_birra = 8;          // pin a cui e' collegata la sonda serbatoio birra
int alza_birra = 32;     // pin per il bottone aumento setpoint birra
int abbassa_birra = 33;  // pin per il bottone diminuzione setpoint birra
int setpoint_birra;// inizializza il setpoint della birra
long temp_birra;     // inizializza una variabile contenente la temperatura della birra

int i;


void setup() {                                  // ingressi come imput o output
  pinmode(motor_mashtun, OUTPUT);
  pinmode(mashtun_birra, OUTPUT);
  pinmode(boil_birra, OUTPUT);
  pinMode(sonda_birra, INPUT);
  lcd.begin(4,20);
  lcd.clear();
}

void loop() {
    
OneWire  ds(temp_birra);        // ds18b20 pin #2 (middle pin) to Arduino pin 8

byte i;
byte present = 0;
byte data[12];
byte addr[8];
  
int HighByte, LowByte, SignBit, Whole, Fract, TReading, Tc_100, FWhole;

void setup(void) {
  
  lcd.begin(4,20);              // rows, columns.  use 2,16 for a 2x16 LCD, etc.
  lcd.clear();                  // start with a blank screen
  lcd.setCursor(0,0);           // set cursor to column 0, row 0
  
    if ( !ds.search(addr)) {
      lcd.clear(); lcd.print("No more addrs");
      delay(1000);
      ds.reset_search();
      return;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      lcd.clear(); lcd.print("CRC not valid!");
      delay(1000);
      return;
  }
}

void getTemp() {
  int foo, bar;
  
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);
  
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);

  for ( i = 0; i < 9; i++) {
    data[i] = ds.read();
  }
  
  LowByte = data[0];
  HighByte = data[1];
  TReading = (HighByte << 8) + LowByte;
  SignBit = TReading & 0x8000;  // test most sig bit
  
  if (SignBit) {
    TReading = -TReading;
  }
  Tc_100 = (6 * TReading) + TReading / 4;    // multiply by (100 * 0.0625) or 6.25
  Whole = Tc_100 / 100;          // separate off the whole and fractional portions
  Fract = Tc_100 % 100;
  if (Fract > 49) {
    if (SignBit) {
      --Whole;
    } else {
      ++Whole;
    }
  }

  if (SignBit) {
    bar = -1;
  } else {
    bar = 1;
  }
  
}

void printTemp(void) {
  lcd.clear();
  lcd.setCursor(0,2);
  lcd.print("MASH-TEMP : ");
  lcd.setCursor(0,3);  
  
  if (SignBit) {  
     lcd.print("-");
  }
  lcd.print(Whole);
  lcd.print(" C  ");
  
}

void loop(void) {
  getTemp();
  printTemp();
  delay(1000);
}    


    
  if (temp_birra < setpoint_birra){   // controlla se la birra è in temperatura
    digitalWrite(motor_mashtun, HIGH);             // accendi il motore mash tun
    delay(50);                          // attende
    digitalWrite(mashtun_birra, HIGH);       // accendi caldaia mash tun
    delay(50);                          // attende
    }
     }
  
  if (temp_birra == setpoint_birra){ // se birra è in temperatura
    digitalWrite(mashtun_birra, LOW);  // spengi gas mash tun
    }
      }
   if (digitalRead (alza_birra) == LOW){           // se ha rilevato pressione del bottone + birra incrementa
    setpoint_birra=setpoint_birra+1;
  }
 if (digitalRead (abbassa_birra) == LOW){           // se ha rilevato pressione del bottone - birra decrementa
    setpoint_birra=setpoint_birra-1;
  }
   }
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Birra");
  lcd.setCursor(9, 0);
  lcd.print("Set");
  lcd.setCursor(9, 1);
  lcd.print("Set");
  lcd.setCursor(6, 0);
  lcd.print(temp_birra);
  lcd.setCursor(13, 1);
  lcd.print(setpoint_birra);
  delay(100);  
}
« Last Edit: September 01, 2010, 01:49:12 am by SAMPEI80 » Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10454
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

anche un copia incolla dell'errore sarebbe veramente utile  :smiley
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

eccolo:

 In function 'void setup()':
error: 'pinmode' was not declared in this scope In function 'void loop()':
Logged

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 19
Posts: 1175
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
 pinmode(motor_mashtun, OUTPUT);
  pinmode(mashtun_birra, OUTPUT);
  pinmode(boil_birra, OUTPUT);

Le "M" vanno maiuscole
Logged

F

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Corretto,ma ora ho altri errori...porca miseria
Logged

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 19
Posts: 1175
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

leggi nella riga error, di solito (come nel caso sopra) è di aiuto
Logged

F

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 In function 'void loop()':
error: expected initializer before 'lcd' In function 'void getTemp()':
 In function 'void printTemp()':
 In function 'void loop()':
 At global scope:
 :'(
Logged

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 19
Posts: 1175
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

In questo caso il messaggio non è proprio attinente all'errore, però se ricontrolli ti accorgerai che nel tuo codice ci sono due funzioni "setup" e due "loop".

Ricontrolla un po' tutto
« Last Edit: September 01, 2010, 07:48:58 am by Federico_Vanzati » Logged

F

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 19
Posts: 1175
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

hai già visto questo:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1241337653
Logged

F

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si grazie, già l'ho scaricato solo che non mi funzionano le parti di visualizzazione sul mio display,deve aver usato un tipo di display seriale diverso dal mio,poi dovrei modificarlo perchè io non uso pompe per spostare il liquido da un pentolone all'altro.Comunque è un ottimo progetto dal quale volevo prendere spunto
« Last Edit: September 03, 2010, 01:54:57 am by SAMPEI80 » Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10454
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora a quanto pare hai tolto il codice relativo all'lcd...
secondo me se devi solo adattare il codice ti conviene usare il suo che è già fatto e modificare/cancellare solo le parti non necessarie. Ma occhio a quello che fai, potresti cancellare anche istruzioni che ti servono
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 50
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok,ma a me non funziona proprio la parte grafica come faccio a modificarlo?
Logged

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 19
Posts: 1175
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

devi leggerti tutto il suo codice e capire come lo ha organizzato. Poi puoi sostituire le istruzioni che lui ha usato per il suo display con quelle per il tuo display.
il codice è un po' lungo ma se sai cosa fare non dovrebbe essere difficile.

« Last Edit: September 04, 2010, 09:02:39 am by Federico_Vanzati » Logged

F

Pages: [1]   Go Up
Jump to: