JoboLike

Les différents montages et réalisations personnelles.
Avatar du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

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 du membre
Bizounours
Super Gourou
Super Gourou
Messages : 7606
Enregistré le : jeudi 30 août 2012 13:10
Localisation : La madrague

Re: JoboLike

Message par Bizounours »

ce forum est presque une start up photoargentique ! :sante: :bravo:
Avatar du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

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 du membre
Réginald
Modérateur
Modérateur
Messages : 11570
Enregistré le : jeudi 31 juillet 2014 10:34
Localisation : Haute-savoie
Contact :

Re: JoboLike

Message par Réginald »

En tout cas du beau boulot Bruno. Je suis admiratif aussi.
Avatar du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

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 du membre
Abdelkrim13
Super Gourou
Super Gourou
Messages : 6141
Enregistré le : mardi 10 août 2010 13:58
Localisation : Nantes :-)
Contact :

Re: JoboLike

Message par Abdelkrim13 »

Le fond sonore est top :bienjoue: :lol:
Vraiment super ce que t'arrives à faire.
Avatar du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

prise de son direct sur http://www.radioparadise.com :D
Avatar du membre
Jerome
Super Gourou
Super Gourou
Messages : 1322
Enregistré le : mardi 09 avril 2013 12:56
Localisation : Grenoble

Re: JoboLike

Message par Jerome »

bon tu le commercialise quand maintenant ?!!! :D
Avatar du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

:D
si il y en a qui veulent les instructions de montage, c'est gratos :D
Avatar du membre
Jerome
Super Gourou
Super Gourou
Messages : 1322
Enregistré le : mardi 09 avril 2013 12:56
Localisation : Grenoble

Re: JoboLike

Message par Jerome »

J'avoue que pensant à investir dans une jobo ça m'intéresserai, ça reviens à peu près à combien d'€ en fabrication ?
Avatar du membre
ithaca
Super Gourou
Super Gourou
Messages : 3818
Enregistré le : samedi 17 octobre 2009 10:09
Localisation : Clamart 92
Contact :

Re: JoboLike

Message par ithaca »

Suis intéressé par le montage 8)
Avatar du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

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
Modifié en dernier par numérix le vendredi 08 mai 2015 17:05, modifié 1 fois.
Avatar du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

détail du berceau support de cuve
Image

Image
Avatar du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

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 du membre
ithaca
Super Gourou
Super Gourou
Messages : 3818
Enregistré le : samedi 17 octobre 2009 10:09
Localisation : Clamart 92
Contact :

Re: JoboLike

Message par ithaca »

Merci beaucoup :bienjoue: :bienjoue:
Avatar du membre
Jerome
Super Gourou
Super Gourou
Messages : 1322
Enregistré le : mardi 09 avril 2013 12:56
Localisation : Grenoble

Re: JoboLike

Message par Jerome »

Merciiiiiiiii :)
Avatar du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

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 du membre
Jerome
Super Gourou
Super Gourou
Messages : 1322
Enregistré le : mardi 09 avril 2013 12:56
Localisation : Grenoble

Re: JoboLike

Message par Jerome »

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 du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

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 du membre
numérix
Membre de l'association
Membre de l'association
Messages : 8448
Enregistré le : lundi 10 avril 2006 20:37
Localisation : pas loin de Tours
Contact :

Re: JoboLike

Message par numérix »

les relais sont arrivés :D
installés câblés, passons a la régulation de T° pour de vrais maintenant !
Répondre

Retourner vers « Projets et réalisations »