Pages: 1 ... 3 4 [5] 6 7   Go Down
Author Topic: Scrittura codice per impianto birra cerco collaboratori Monza/Milano  (Read 7646 times)
0 Members and 1 Guest are viewing this topic.
Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22762
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Visto il proliferare di produttori diy di birra non è che serve un beta tester del prodotto finale ?  smiley-mr-green
Per avere un sample come si fa?  smiley-yell
Logged


MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Ti posso segnare nella mia RED list, ma sappi che io produco quasi esclusivamente birre rosse stile belga.  smiley-evil


Bando alle ciance, riepilogo il mio sistema birrificante:

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

Sto allestendo una piccola scheda che farà da interprete tra la sonda di temperatura e l'azionamento del relè verso il PC, per fare prove userò questo abbinato ad un software c# che si occuperà solo del pilotaggio semi-manuale del relè e della raccolta dei dati di temperatura rilevati nel tempo dalla sonda.
Con questo conto di fare esperimenti sufficienti a poter trasferire poi tutta la logica del controllo su arduino.
« Last Edit: October 17, 2012, 07:24:56 am by niki77 » Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Monza
Offline Offline
Newbie
*
Karma: 2
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Yess, tipo questa per esempio , ma non è esattamente quella.
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Trovato un pò di tempo ho messo insieme un pò di righe di codice per il controllo




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

ora mi manca di prendere l'arduino attaccare sonda e relè e vedere come si comporta in una situazione reale.
« Last Edit: October 19, 2012, 09:49:23 am by niki77 » Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

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

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

Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Monza
Offline Offline
Newbie
*
Karma: 2
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rieccomi, scusate per l'assenza prolungata ma ,ho passato 4 giorni di passione!
Niky, l'hai presa proprio sul serio 'sta cosa! smiley-mr-green
Logged

MC
Offline Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No è una vita che devo finire quel coso e non ho mai trovato tempo, ora che ci ho rimesso le mani non farmi cambiare idea!!!!
Parte del progetto la riutilizzero anche per un sistema di cottura a bassa temperatura che volevo fare da tempo.
Non tutti sanno che 'il brodo' cotto a bassa temperatura è mooolto più buono! smiley-lol
Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Monza
Offline Offline
Newbie
*
Karma: 2
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora, partiamo dal principio.....
Non riesco a leggere nemmeno una temperatura a seriale.
Sonda ds18b20 e arduino uno rev3.
Come si scrive il codice?
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 169
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sonda ds18b20 e arduino uno rev3.
Come si scrive il codice?
ciao,
scaricati OneWire.zip da:
http://www.pjrc.com/teensy/td_libs_OneWire.html
una volta decompresso deve essere messo nella cartella libraries.
Dopo aver rilanciato Arduino nel menu file => esempi => OneWire troverai:
L' esempio DS18x20_Temperature  bello e pronto

Luca
« Last Edit: October 20, 2012, 09:58:16 am by llluca » Logged

Monza
Offline Offline
Newbie
*
Karma: 2
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho caricato quella libreria, ma il risultato è che legge una temperatura maggiore di circa 3°C rispetto ad un termometro a mercurio che ritengo affidabile.
Provando poi a collegare la sonda in parasite mode, la situazione peggiora ancora di più.
Poi, siccome dovrò visualizzare la temperatura su un display, cosa si può togliere dal codice, in maniera di visualizzare soltanto "temperatura = 26,5" (es.)?
Logged

Monza
Offline Offline
Newbie
*
Karma: 2
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il codice è questo


#include <OneWire.h>

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

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

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

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

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

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

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

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

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

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

  Serial.print("P=");
  Serial.print(present,HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data = ds.read();
    Serial.print(data, HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print( OneWire::crc8( data, smiley-cool, HEX);
  Serial.println();
}
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12561
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

è meglio se lo racchiudi tra i tag "code"
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 643
La mia prima bromografata!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bè, non conosco la libreria, ma nel tuo codice non vedo la conversione, quindi immagino sia nella libreria. dovresti aprire il file della libreria e trovare la riga di conversione, li sicuramente ci trovi il valore da cambiare per 'tarare' la sonda.
Per la stampa dei valori è abbastanza intuitivo, ogni riga Serial.print() stampa qualcosa, se Serial.println() stampa e poi va a capo. Individua le righe che non vuoi e le 'commenti' mettendo // all'inizio della riga. modifica poi la riga che ti stampa la temperatura e scrivici quello che vuoi.
Logged

Rome
Offline Offline
God Member
*****
Karma: 1
Posts: 643
La mia prima bromografata!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Perdonami, la conversione sta nello sketch di esempio, che tu hai tagliato, o non hai postato completamente.
alla fine dello sketch dovresti avere questo:
Code:
  // convert the data to actual temperature

  unsigned int raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // count remain gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw << 3;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw << 2; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw << 1; // 11 bit res, 375 ms
    // default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");
  Serial.print(fahrenheit);
  Serial.println(" Fahrenheit");
dove la riga 'celsius = (float)raw / 16.0;' ti da il risultato che viene stampato. basta che alla fine dellì'operazione aggiungi '- 3.0' e sei a posto.

il codice l'ho preso da qui.

Ciao!
Logged

Pages: 1 ... 3 4 [5] 6 7   Go Up
Jump to: