Le site des restos du coeur

JoboLike

Les différents montages et réalisations personnelles.

Re: JoboLike

Message par bruno_l » Samedi 07 F√©vrier 2015 19:17

bon d√©ja avec une arduino nano je stock 50 process de d√©veloppement, la T¬į est contr√īl√©e en permanence, et je peux adapter le T¬į du bain du process choisi, le temps s'adapte automatiquement.
une r√©sistance chauffante command√©e par relais chauffera le bain pour l'amener a sa T¬į de consigne
après il me reste de entrées / sorties pour faire le café :D
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par Bizounours » Samedi 07 F√©vrier 2015 19:20

ce forum est presque une start up photoargentique ! :sante: :bravo:
Avatar de l’utilisateur
Bizounours
Super Gourou
Super Gourou
 
Message(s) : 7497
Inscription : Jeudi 30 Ao√Ľt 2012 12:10
Localisation : La madrague

Re: JoboLike

Message par bruno_l » Samedi 07 F√©vrier 2015 19:54

je n'en suis qu' a la partie contr√īle commande et ihm
pour la puissance, j’attends du matériel (relais, resistance, H bridge ....)
et j'ai trouvé une boutique qui fournit des aimants :D http://www.supermagnete.fr/
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par R√©ginald » Samedi 07 F√©vrier 2015 21:29

En tout cas du beau boulot Bruno. Je suis admiratif aussi.
Avatar de l’utilisateur
Réginald
Super Gourou
Super Gourou
 
Message(s) : 8271
Inscription : Jeudi 31 Juillet 2014 9:34
Localisation : Haute-savoie

Re: JoboLike

Message par bruno_l » Vendredi 08 Mai 2015 10:52

le projet avance, une petite video
https://www.flickr.com/photos/bruno_l/16800721073/

l'axe sur lequel le barrilet support aimant et fixé est une tête de scie cloche (un truc bien centré quoi)
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par Abdelkrim13 » Vendredi 08 Mai 2015 11:23

Le fond sonore est top :bienjoue: :lol:
Vraiment super ce que t'arrives à faire.
Avatar de l’utilisateur
Abdelkrim13
Super Gourou
Super Gourou
 
Message(s) : 5588
Inscription : Mardi 10 Ao√Ľt 2010 12:58
Localisation : Nantes :-)

Re: JoboLike

Message par bruno_l » Vendredi 08 Mai 2015 12:11

prise de son direct sur http://www.radioparadise.com :D
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par Jerome » Vendredi 08 Mai 2015 12:45

bon tu le commercialise quand maintenant ?!!! :D
Avatar de l’utilisateur
Jerome
Super Gourou
Super Gourou
 
Message(s) : 1239
Inscription : Mardi 09 Avril 2013 11:56
Localisation : Annecy

Re: JoboLike

Message par bruno_l » Vendredi 08 Mai 2015 12:47

:D
si il y en a qui veulent les instructions de montage, c'est gratos :D
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par Jerome » Vendredi 08 Mai 2015 12:58

J'avoue que pensant √† investir dans une jobo √ßa m'int√©resserai, √ßa reviens √† peu pr√®s √† combien d'‚ā¨ en fabrication ?
Avatar de l’utilisateur
Jerome
Super Gourou
Super Gourou
 
Message(s) : 1239
Inscription : Mardi 09 Avril 2013 11:56
Localisation : Annecy

Re: JoboLike

Message par ithaca » Vendredi 08 Mai 2015 13:10

Suis intéressé par le montage 8)
Avatar de l’utilisateur
ithaca
Super Gourou
Super Gourou
 
Message(s) : 3790
Inscription : Samedi 17 Octobre 2009 9:09
Localisation : Clamart 92

Re: JoboLike

Message par bruno_l » Vendredi 08 Mai 2015 13:21

en materiel, il faut
1 carte Arduino Uno
1 H-bridge keyes l298
1 moteur 24Vcc 170 tr/mn
1 Alim 24Vcc 1A
1 encodeur rotatif à impulsions
1 commutateur 6 positions
1 bouton poussoir
6 résistances 1,8kOhm ( a souder sur le commutateur)
1 dallas ds18b20 (capteur de T¬į)
1 led Verte (T¬į ok) + r√©sistance de charge
1 led Rouge (chauffage) + résistance de charge
1 résistance étanche 230Vac 1kW
1 buzer
1 afficheur LCD 16x2 i2c
de la filerie
2 relais 230Vac 10A bobine 5v pour carte arduino
1 boite plastique IP66
1 bac en plastique
1 bouchon métallique de porte mine en guise de doigt de gant (c'est ça un doigt de gant http://www.google.fr/url?source=imgland ... i7SzRgfvNA)
1 support de scie cloche ( pas trop camelote car il supporte le poids de la cuve !)
1 petit bout de tube inox en guise d'arbre de transmission
du plastique épaisseur 10 pour fabriquer le barillet support d'aimants
6 aimants en ferrite cylindrique long 10 diam 10 polarisation axiale

et le plus important :D
1 enfant de pr√©f√©rence m√Ęle, pour pouvoir lui piquer des roues de L√©go

edit:
1 régulateur LM7805 pour alimenter l'arduino, l'afficheur en 5Vcc
Dernière édition par bruno_l le Vendredi 08 Mai 2015 16:05, édité 1 fois.
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par bruno_l » Vendredi 08 Mai 2015 13:36

détail du berceau support de cuve
Image

Image
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par bruno_l » Vendredi 08 Mai 2015 13:41

ci joint le code Arduino
le code pour C41 et E6 n'est pas vraiment fonctionnel, si il a de bonnes √Ęmes pour le finir...
/* 
 JoboLike serait :
¬†constitu√©¬†√†¬†partir¬†d'un¬†bac¬†et¬†contiendrait¬†un¬†syst√®me¬†√†¬†bain¬†r√©gul√©,¬†pas¬†de¬†thermostat,¬†mais¬†des¬†capteur¬†de¬†T¬į,¬†
¬†r√©sistance¬†chauffante¬†et¬†brassage¬†du¬†bain¬†marie¬†pour¬†homog√©n√©iser¬†la¬†T¬į¬†(une¬†pompe¬†d'aquarium¬†par¬†exemple).
 un moteur à courant continu pour l'agitation avec inversions de la cuve (une Jobo serie 1500 avec son aimant bien sur)
 il faut trouver celui avec les bons rpm.
¬†un¬†afficheur¬†Lcd¬†permettant¬†de¬†r√©gler¬†la¬†T¬į¬†de¬†consigne,¬†les¬†Temps¬†de¬†dev¬†(avec¬†alarme¬†√†¬†la¬†fin)
 
 le brochage suit le schéma du CompTraLED
 
 */
//-----------------------------------------------------------
// insertion des librairies
//-----------------------------------------------------------
#include <LiquidCrystal_I2C.h>
#include <math.h>
#include <Wire.h>
#include <Encoder.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <EEPROM.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 4
//#define TEMPERATURE_PRECISION 9
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
DeviceAddress th1;
//------------------------------------------------------------
// initialize the library with the numbers of the interface pins
Encoder myEnc(3,2 );
int MemoEnc = 4;
// pour certain afficheur c'est 0x3F d'autres 0x27 ...
const int I2C_ADDR = 0x27; // cette variable est aussi utilisée plus bas pour afficher l'addresse du LCD
const int BACKLIGHT_PIN = 3;
const int En_pin = 2;
const int Rw_pin = 1;
const int Rs_pin = 0;
const int D4_pin = 4;
const int D5_pin = 5;
const int D6_pin = 6;
const int D7_pin = 7;

LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin,BACKLIGHT_PIN,POSITIVE);
//-----------------------------------------------------------
// déclaration des variables de broches
//-----------------------------------------------------------
//const int bpNoir = 1; //bouton noir
// 2
// 3
// 4
const int bpRouge = 5; //bouton rouge
const int Buzer = 6;
const int valide = 7; // bouton de l'encodeur
// 8
const int avant = 9; // constantes de broches du moteur
const int arriere = 10; // constantes de broches du moteur
// 11
//¬†12¬†T¬į¬†ok
// 11 chauffage
const int valDivis = 171;

//-----------------------------------------------------------
// déclaration des variables de programme
//-----------------------------------------------------------
float Tbac = 0;
int initData = 255;
char MyChar;
int memoChar;
int vitMot = 90;
int intCol = 0;
int intRang = 0;
int minute = 0;
int seconde = 0;
float temperature = 0;
int MemoAdrr = 0;
unsigned long tempsRot = 0;
boolean tempOK = false;
boolean rotHorraire = true;
unsigned long tempsDev;
int valAna;
int valComo = 0;
int intDecal;
long tempsInit;
//memorisationde la valeur de myEnc en position 4
int intMyEnc4;
int intMyEncDev; //memorisation valeur de myEnc
float fltTempH; // T¬į arret chauffage
float fltTempB; // T¬į depart chauffage
//-----------------------------------------------------------
// initialisations
//-----------------------------------------------------------
void setup(){
  // Start up the library DallasTemperature
  pinMode(Buzer, OUTPUT);
  analogWrite(Buzer, 10);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(avant, OUTPUT);
  pinMode(arriere, OUTPUT);
  analogWrite(avant,0);
  analogWrite(arriere, 0);
  sensors.begin();
  sensors.getAddress(th1, 0);
  sensors.setResolution(th1, 12);
  lcd.begin(16, 2);
  lcd.print("Easy Process");
  lcd.setCursor(0,1);
  lcd.print("V1.0");
  delay(5);
  analogWrite(Buzer,0);
  delay(1500);
  lcd.clear();
  lcd.print(" bl.ack.design ");
  lcd.setCursor(0,1);
  lcd.print(" @orange.fr ");
  delay(3000);
  lcd.clear();
  // lcd.print("Td:38.4 T.i:");

  pinMode(bpRouge, INPUT);
  digitalWrite(bpRouge, HIGH);
  //bp validation de l'encodeur rotatif
  pinMode(valide, INPUT);
  digitalWrite(valide, HIGH);
  // pinMode(bpVert, INPUT);
  // digitalWrite(bpVert, HIGH);
  // pinMode(bpBleu, INPUT);
  // digitalWrite(bpBleu, HIGH);
¬†¬†//myEnc.write(1512);//37.8¬įC
¬†¬†myEnc.write(800);//20¬įC
}
//-----------------------------------------------------------
// Boucle principale
//-----------------------------------------------------------
void loop() {
  // etat du commutateur 6 positions
  valAna = analogRead(0);
  delay(300);
  if (valAna > 0 && valAna < 200) {
    valComo = 5;
  }
  if (valAna > 200 && valAna < 400) {
    valComo = 4;
  }
  if (valAna > 400 && valAna < 600) {
    valComo = 3;
  }
  if (valAna > 600 && valAna < 750) {
    valComo = 2;
  }
  if (valAna > 750 && valAna < 900) {
    valComo = 1;
  }
  if (valAna > 1000 ) {
    valComo = 0;
  }
  switch (valComo) {
    // traitement C41
  case 0:
    if (initData != 0){
      initData = 0;
      lcd.clear();
      lcd.print("reinitialisation");
      digitalWrite(12, LOW);
      //digitalWrite(13, LOW);
      analogWrite(11, 0);
    }

    break;
  case 1: // traitement C41
    if (initData != 1) {
      initData = 1;
      lcd.clear();
      lcd.print("traitement C41");
      digitalWrite(12, LOW);
      //digitalWrite(13, LOW);
      analogWrite(11, 0);
      temperature = 38;
      minute = 3;
      seconde = 15;
      fltTempH = 0.2;
      fltTempB = 0.2; 
    }
    //lcd.clear();
    C41();
    break;
  case 2:// traitement E6
    if (initData != 2) {
      initData = 2;
      lcd.clear();
      digitalWrite(12, LOW);
      //digitalWrite(13, LOW);
      analogWrite(11, 0);
      lcd.print("traitement E6");
      temperature = 38;
      minute = 6;
      seconde = 30;
      fltTempH = 0.2;
      fltTempB = 0.2;     
    }
    delay(2000);
    lcd.clear();
    E6();
    break;

  case 3: // choix traitement N&B
    if (initData != 3) {
      initData = 3;
      myEnc.write(EEPROM.read(1023));
      digitalWrite(12, LOW);
      //digitalWrite(13, LOW);
      analogWrite(11, 0);
      lcd.clear();
      fltTempH = 0.5;
      fltTempB = 0.5;
      affMemo();  
    }

    foncData();
    break;

  case 4:
    if (initData != 4) {
      initData = 4;
      intMyEnc4 = myEnc.read();
      myEnc.write(0);
      tempsInit =  (long (minute * 60) + seconde) * 1000;

      //myEnc.write(0);
    }
    foncPrinc();
    break;
  case 5:
    if (initData != 5) {
      initData = 5;
      tempOK = true;
    }
    foncProg();
    break;
  }
}

// fonction principale traitement N&B (attente lancement dev)
// position 4 du commutateur

void foncPrinc() {
  float memoTemperature;
  //float tempsInitBase;
  regulTemp();
  affTempBase();
  //tempsInit = (long (minute * 60) + seconde) * 1000;
  if (myEnc.read() != 0) {
    memoTemperature = temperature;
    temperature = temperature + (myEnc.read()/4);
    myEnc.write(0);
    tempsInit = exp((temperature - memoTemperature) *-0.081) * tempsInit;
  }

  if (digitalRead(bpRouge) == LOW ) {
    //tempsInit = (long (minute * 60) + seconde) * 1000;
    tempsDev = tempsInit + millis();
    sequenceDev();
    // stoper la rotation
    analogWrite(avant, 0);
    analogWrite(arriere, 0);
    // attendre pour bain d'arret
    lcd.clear();
    lcd.print("bain d'arret");
    analogWrite(Buzer, 150);
    while (digitalRead(bpRouge) == HIGH ) {
      regulTemp();
    }
    delay(200);
    analogWrite(Buzer, 0);
    tempsDev = 30000 + millis();
    sequenceDev();
    analogWrite(avant, 0);
    analogWrite(arriere, 0);
    lcd.clear();

    lcd.print("Fixateur");
    analogWrite(Buzer, 150);
    while (digitalRead(bpRouge) == HIGH ) {
      regulTemp();
    }
    delay(200);
    analogWrite(Buzer, 0);
    tempsDev = 300000 + millis();
    sequenceDev();
    analogWrite(avant, 0);
    analogWrite(arriere, 0);
    // attendre pour fixateur
    // fin de traitement
    analogWrite(Buzer, 0);
  }
}
// lancement de la séquence de developpement
void sequenceDev(){
  rotHorraire = false;
  analogWrite(avant, 0);
  delay(50);
  intMyEncDev = myEnc.read();
  myEnc.write(vitMot);
  //analogWrite(arriere, 255);
  analogWrite(arriere, 200);
  delay(80);
  analogWrite(arriere, vitMot);
  while (millis() < tempsDev) {
    if (millis() > tempsDev - 5000) {
      analogWrite(Buzer, 25);
    }
    // action moteur
    if (tempsRot == 0) {
      tempsRot = millis() + 1500;
    }
    if (myEnc.read() > 255){
      myEnc.write(255);
    }
    if (myEnc.read() < 25){
      myEnc.write(25);
    }
    vitMot = myEnc.read();

    if (millis() > tempsRot) {
      switch (rotHorraire) {
      case false:
        analogWrite(arriere, 0);
        delay(250);
        analogWrite(avant, 200);
        delay(80);
        analogWrite(avant, vitMot);
        rotHorraire = true;
        tempsRot = millis() + 1500;
        // faire tourner dans le sens horraire
        break;
      case true:
        rotHorraire = false;
        analogWrite(avant, 0);
        delay(250);
        analogWrite(arriere, 200);
        delay(80);
        analogWrite(arriere, vitMot);
        tempsRot = millis() + 1500;
        // faire tourner dans le sens anti-horraire
        break;
      }
    }
    if (myEnc.read() > 255){
      myEnc.write(255);
    }
    if (myEnc.read() < 25){
      myEnc.write(25);
    }
    vitMot = myEnc.read();
    regulTemp();
    affLCD();
  }
  myEnc.write(intMyEncDev);
}
//
// controle et regulation de la Temperature
void regulTemp() {
¬†¬†// acquisition T¬į
  sensors.requestTemperatures(); // Send the command to get temperatures
  Tbac = sensors.getTempCByIndex(0);// - 0.5;
  //float Tbac = sensors.getTempC(0);// - 0.5;
  // if (Tbac != MemoTbac) {
  // MemoTbac = Tbac;
  // }

¬†¬†// recherche de la T¬į de consigne
  if ((Tbac + fltTempB) < temperature){
    // enclenchement chauffage
    //digitalWrite(13, HIGH);
    analogWrite(11, 255);
    if ((Tbac + (fltTempB / 2)) > temperature){
      digitalWrite(12, HIGH);
    }
    else {
      digitalWrite(12, LOW);
    }
  }
  else {
    if ((Tbac - fltTempH) > temperature){
      digitalWrite(12, LOW);
      lcd.setCursor(0,1);
    } 
    else {
      // arret chauffage
      //digitalWrite(13, LOW);
      analogWrite(11, 0);
      digitalWrite(12, HIGH);
      tempOK = true;
    }
    // stop Chauffage
  }
¬†¬†// /// fin r√©gulation T¬į
  //affLCD();
  if (float(Tbac - (fltTempH * 1.5)) > float(temperature)){
    //digitalWrite(13, LOW);
    analogWrite(11, 0);
  }
}

// enregistrement des données de fonctionnement
void foncData() {
  if (digitalRead(valide) == LOW) {
    EEPROM.write(1023, MemoEnc);
    lcd.clear();
    lcd.print("choix process");
    lcd.setCursor(0,1);
    lcd.print("par defaut");
    delay(1000);
    lcd.clear();
    affMemo();
  }
  if (MemoEnc != myEnc.read()){
    MemoEnc = myEnc.read();
    intDecal = (MemoEnc / 4) * 19;
    lcd.clear();
    affMemo();

  }

}
// affichage de la mémoire
void affMemo(){
  if (myEnc.read() > 200){
    myEnc.write(0);
  }
  if (myEnc.read() < 0){
    myEnc.write(200);
  }
  for (int i = intDecal; i < intDecal + 16; i++){
    MyChar = EEPROM.read(i);
    lcd.print(MyChar);
  }
  lcd.setCursor(0,1);
  lcd.print(EEPROM.read(intDecal + 16));
  minute = EEPROM.read(intDecal + 16);
  lcd.print(".");
  lcd.print(EEPROM.read(intDecal + 17));
  seconde = EEPROM.read(intDecal + 17);
  lcd.print("mn a ");
  lcd.print(EEPROM.read(intDecal + 18));
  temperature = EEPROM.read(intDecal + 18);
  MyChar = 223;
  lcd.print(MyChar);
  lcd.print("C.");
}
// traitement C41
void C41(){
  boolean boolLavage = true;
  valAna = analogRead(0);
  while (valAna > 750 && valAna < 900){
    regulTemp();
    valAna = analogRead(0);
    if (digitalRead(bpRouge) == LOW ) {
      tempsDev = long (long (long (minute * 60) + seconde) * 1000) + long (millis());
      // revelateur chromogene
      sequenceDev();
      // lavage
      //lcd.clear();
      while (digitalRead(bpRouge) == HIGH ){
        if (boolLavage == true) {
          boolLavage = false;
          lcd.setCursor(0,0);
          lcd.print("attente pour");
          lcd.setCursor(0,1);
          lcd.print("lavage film");
        }          
      }
      tempsDev =  millis() + 180000;
      sequenceDev();
      while (digitalRead(bpRouge) == HIGH ){
        if (boolLavage == true) {
          boolLavage = false;
          lcd.setCursor(0,0);
          lcd.print("attente pour");
          lcd.setCursor(0,1);
          lcd.print("Blanchiment Fix");
        }          
      }
      tempsDev =  millis() + 180000;
      sequenceDev();
      //
    }  
  }
}
// fin C41----------------------------------------------------------------------------------

// traitement E6
void E6(){
  valAna = analogRead(0);
  while (valAna > 600 && valAna < 750){
    regulTemp();
    valAna = analogRead(0);
  }
}


//¬†fonction¬†de¬†programation¬†des¬†Temps¬†et¬†T¬į¬†pour¬†le¬†N&B

void foncProg() {
  int valCursorH = 0;
  int valCursorV = 0;
  char myChar = 0;
  int myDecal = intDecal;
  int myMn = -1;
  int mySec = -1;
  int myTemp = -1;
  valAna = analogRead(0);
  lcd.blink();
  while (valAna > 0 && valAna < 200){
    if (tempOK == true){
      lcd.setCursor(0,0);
      lcd.print("programation");
      lcd.setCursor(0,1);
      lcd.print("Temperature/Temps");
      delay(1000);
      lcd.clear();
      tempOK = false;
      affMemo();
      myEnc.write(EEPROM.read(myDecal) * 4);
    }
    valAna = analogRead(0);
    lcd.setCursor(valCursorH,valCursorV);
    if (myDecal < intDecal + 16) {
      if (myChar != myEnc.read()/4){
        myChar = myEnc.read()/4;
        lcd.print(myChar);
      }
      //}
      //myEnc.write(EEPROM.read(myDecal) * 4);
      if (digitalRead(valide) == LOW) {
        //lcd.clear();
        delay(300);

        myChar = myEnc.read()/4;
        //if (intDecal < 16) {
        if (myChar != EEPROM.read(myDecal)){
          EEPROM.write(myDecal, myChar);

        }
        myDecal++;
        valCursorH++;
        myEnc.write(EEPROM.read(myDecal) * 4);
        delay(300);
        //}
      } 
    }
    if (digitalRead(bpRouge) == LOW) {
      lcd.clear();
      //myDecal = intDecal + 16;
      //valCursorH = 0;
      //valCursorV = 0;
      delay(300);
      lcd.print("reglage mn :");
      myMn = EEPROM.read(intDecal + 16);
      mySec = EEPROM.read(intDecal + 17);
      myTemp  = EEPROM.read(intDecal + 18);
      lcd.setCursor(12,0);
      lcd.print(myMn);
      lcd.setCursor(0,1);
      lcd.print("secondes :");
      lcd.print(mySec);
      myEnc.write(myMn * 4);
      lcd.setCursor(12,0);
      while (digitalRead(bpRouge) == HIGH)
      {
        if (myMn != myEnc.read()/4) {
          lcd.setCursor(12,0);
          myMn = myEnc.read()/4;
          lcd.print(" ");
          lcd.setCursor(12,0);
          lcd.print(myMn);
        }
        delay(300);
      }

      if (myMn != EEPROM.read(intDecal + 16)){
        EEPROM.write(intDecal + 16,myMn);
        delay(300);
      }
      delay(500);
      myEnc.write(mySec * 4);
      lcd.setCursor(12,1);
      while (digitalRead(bpRouge) == HIGH)
      {
        if (mySec != myEnc.read()/4) {
          lcd.setCursor(12,1);
          mySec = myEnc.read()/4;
          lcd.print(" ");
          lcd.setCursor(12,1);
          lcd.print(mySec);
        }
        delay(300);
      } 
      if (mySec != EEPROM.read(intDecal + 17)){
        EEPROM.write(intDecal + 17,mySec);
        delay(300);
      }
      valAna = analogRead(0);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Rgl.temperature");
      lcd.setCursor(3,1);
      lcd.print(char(223));
      lcd.print("C.");
      lcd.setCursor(0,1);
      myEnc.write(myTemp * 4);
      delay(500);
      while (digitalRead(bpRouge) == HIGH)
      {
        if (myTemp != myEnc.read()/4) {
          lcd.setCursor(0,1);
          myTemp = myEnc.read()/4;
          lcd.print(" ");
          lcd.setCursor(0,1);
          lcd.print(myTemp);
        }
      }
      if (myTemp != EEPROM.read(intDecal + 18)){
        EEPROM.write(intDecal + 18,myTemp);
        delay(300);
      }   
      valAna = analogRead(0);
    }
  }
  lcd.noBlink();
}

void affTempBase(){
  //char tampon[25];
  lcd.setCursor(0,0);
  //lcd.print(minute);
  lcd.print(tempsInit / 60000);
  lcd.print(".");
  //lcd.print(seconde);
  lcd.print((tempsInit % 60000)/1000);
  lcd.print("mn ");
  lcd.setCursor(0,1);
  //sprintf(tampon,"%f8.2",Tbac);
  //lcd.print(tampon);
  lcd.print(Tbac);
  lcd.print("->");
  lcd.print(temperature);
  lcd.print(char(223));
  lcd.print("C. ");
}

//
void affLCD() {
  //char tampon[25];
  //lcd.clear();
  int tempsRest;
  tempsRest = (tempsDev -  millis()) / 1000;
  lcd.setCursor(0,0);
  lcd.print(tempsRest / 60);
  lcd.print(".");
  lcd.print(tempsRest % 60);
  lcd.print("mn ");
  lcd.setCursor(0,1);
  //sprintf(tampon,"%f8.2",Tbac);
  //lcd.print(tampon);
  lcd.print(Tbac);
  lcd.print("->");
  lcd.print(temperature);
  lcd.print(char(223));
  lcd.print("C. ");

}

Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par ithaca » Vendredi 08 Mai 2015 14:51

Merci beaucoup :bienjoue: :bienjoue:
Avatar de l’utilisateur
ithaca
Super Gourou
Super Gourou
 
Message(s) : 3790
Inscription : Samedi 17 Octobre 2009 9:09
Localisation : Clamart 92

Re: JoboLike

Message par Jerome » Vendredi 08 Mai 2015 15:17

Merciiiiiiiii :)
Avatar de l’utilisateur
Jerome
Super Gourou
Super Gourou
 
Message(s) : 1239
Inscription : Mardi 09 Avril 2013 11:56
Localisation : Annecy

Re: JoboLike

Message par bruno_l » Vendredi 08 Mai 2015 15:21

de rien, maintenant il ne vous reste plus qu'a vous décider qui prend le code E6 et l'autre le C41 :wink:
il me reste encore 14 aimants, donc de quoi faire 2 autre accouplement de cuve
mp pour les intéressés

l'aimant d'un cuve Jobo est un cylindre possédant 3 poles sud et 3 poles nord sur chacune de ses faces ceci afin d'interdire un glissement de la cuve lors des rotations
il faut donc bien positionner les 6 aimants alternativement un pole Sud et un pole Nord ...
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par Jerome » Vendredi 08 Mai 2015 18:12

je vais regarder ça car j'aimerai m'en servir c41 (le plus courant je crois), mais pas de temps avant juin.
J'ai mis le sujet en signet pour revenir dessus :)
Avatar de l’utilisateur
Jerome
Super Gourou
Super Gourou
 
Message(s) : 1239
Inscription : Mardi 09 Avril 2013 11:56
Localisation : Annecy

Re: JoboLike

Message par bruno_l » Vendredi 15 Mai 2015 16:41

quelques images de l'avancement du projet

vue de l’intérieure
Image

vue de coté, de haut en bas
inter de coupure de l'alarme
commutateur pour le choix du programme (C41, E6, N&B ...)
bouton de choix du couple T¬į/Temps de dev pour le N&B et ajustement de la T¬į (et recalcul auto du temps) une fois un programme choisi
Image

vue de dessus montrant le choix d'un dev de TMax 400
de gauche a droite:
interrupteur général, interrupteur de chauffage, Leds, affichage
Image

j’attends encore les relais pour le chauffage.....

plus d'images et de video ici https://www.flickr.com/photos/bruno_l/s ... 2795098476
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

Re: JoboLike

Message par bruno_l » Samedi 16 Mai 2015 16:22

les relais sont arrivés :D
install√©s c√Ębl√©s, passons a la r√©gulation de T¬į pour de vrais maintenant !
Avatar de l’utilisateur
bruno_l
Super Gourou
Super Gourou
 
Message(s) : 5600
Inscription : Lundi 10 Avril 2006 19:37
Localisation : pas loin de Tours

PrécédentSuivant

Retour vers Projets et réalisations

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : PierreL et 2 invité(s)

  • Publicit√©