Go Down

Topic: Gestion d'un Spa/Jacuzzi via un Arduino = SpaDuino ou JakUino (Read 3947 times) previous topic - next topic

nikus972

Bonjour NIKUS972 ; bravo pour ton projet déjà bien abouti , quelques petites choses me paraissent à ajuster :

Chauffage 3kw + pompe 2,2kw soit 5200 W sous 240v = 21 ampères  , et je note que ton disjoncteur fait seulement 16 A ......

Attention aussi à ton relais qui pilote ta résistance il doit supporter 12.5 Ampères donc il doit avoir un pouvoir de coupure d'au moins 16A.

En électromécanique lorsque l'on utilise une résistance chauffante on prend l'habitude d'utiliser deux contacts de relais à fermeture( avec deux relais différents) , de cette façons la résistance ne risque pas de rester en fonction si les contacts du relais reste collés .

Bonne continuation.
Oui je m'en doutais mais pour le moment la resistance n'est pas encore acheté vu que celle d'origine est morte et il se peut que j'en achete une moins puissante, car l'eau de mon spa est naturellement à 32°c.
Cependant ta remarque avec 2 contacts plutot qu'un n'est pas tombé dans l'oreille d'un sourd, et comme j'avais un relay de libre j'ai ajouté la modif dans le programme, Merci.

Étant très curieux, j'ai regardé ton programme et j'ai vu que pour prendre la température c'est une sacré galère. J'utilise la même sonde que toi mais avec la bibliothèque <DallasTemperature.h> et <OneWire.h> qui simplifie pas mal la vie pour ce que je voulais faire, sans forcement une très grande précision.
La prise de température tien en 2 lignes :

  sensors.requestTemperatures(); // Prise température
  float tempeau = (sensors.getTempCByIndex(0)); // tempeau prend la valeur du sensors

le résultat est directement en degré Celsius.
A+
En un mot PARFAIT et j'en rajoute un deuxième MERCI, cependant le code généré est plus gros de 1000octets mais c'est pas grave car c'est plus lisible.

Donc vos deux remarques sont dans la version 1.4 du programme téléchargeable en pièce jointe.

version 1.4 :
  • correction de petit bug
  • simplification de la prise de température
  • commande de la résistance de chauffage par deux contacts
  • affichage de la version du programme dans le menu 6
  • plus quelques petits nettoyage du code



Par contre j'ai DEUX questions
Comment fixer proprement l'arduino Nano sur ma plaque?
Pour la gestion des massages, j'ai une grosse question :

Dans mon code lorsque j'appuie sur la touche 1 de la telecommande alors que je suis dans la loop(), je vais dans un sous programme qui gere le cycle du massage (PompeGV pendant 15mn et bulleur 45s tout les 3mn)
Une fois fini il sort et retourne dans la loop()

Si je cree d'autre programme de massage, commandé par la touche 2 ou 3 de la telecommande,  je vais juste changer la duree du cycle ainsi que celle du bulleur, mais le probleme c'est que je n'arrive pas a inclure les variables dans le sous programme du massage, il me dit qu'il ne sont pas défini dans le scope.

En fait je vais vous mettre un bout du code que je pense etre bon mais celui ci ne marche pas...
Code: [Select]
int //creation des variables
dureeMassage,
dureeBulleurMarche,
dureeBulleurArret,
consigneTemperatureProgMass

void setup () {}

void loop () {

if (irrecv.decode(&results)) { //attente de l'arrivé d'un signal de la telecommande
if (results.value==0xFD00FF){ //Touche 1 programmeMassage1
//programmation des durées des variables
dureeMassage=15;  //temps en minute
dureeBulleurMarche=45; //temps en second
dureeBulleurArret=3; //temps en minute
consigneTemperatureProgMass=35; //temperature du chauffage pour le programmeMassage1
programmeMassage();} //lancement du programme de massage

if (results.value==0xFD807F){ //Touche 2 programmeMassage2
//programmation des durées des variables
dureeMassage=10, //temps en minute
dureeBulleurMarche=15, //temps en second
dureeBulleurArret=1, //temps en minute
consigneTemperatureProgMass=38; //temperature du chauffage pour le programmeMassage2
programmeMassage();} //lancement du programme de massage
}
}

void programmeMassage(){ //programme de massage
//mise à l'arret des actionneurs phase de sécurité
    digitalWrite(pompePV, HIGH); //arret de la pompePV
    digitalWrite(pompeGV, HIGH); //arret de la pompeGV
    digitalWrite(bulleur, HIGH); //arret du bulleur
    digitalWrite(resistance1, HIGH); //arret de la resistance
    digitalWrite(resistance2, HIGH); //arret de la resistance

  DateTime now = horloge.now(); //mise à l'heure
  DateTime debutMassage, finMassage, bulleurOn, bulleurOff; //creation des variables heures
//parametrage des variables heures
  debutMassage=now;
  finMassage = (now + TimeSpan(0,0,dureeMassage,0));
  bulleurOn =(now + TimeSpan(0,0,dureeBulleurArret,0));
  bulleurOff =now;

  delay(200);

while(true)  //Boucle pour realiser le programme du massage
  {
    temperature(); //prise de temperature
   
    //gestion des actionneurs
    digitalWrite(pompeGV,LOW); //mise en marche pompeGV

    //CHAUFFAGE
    if(celsiusNet  <= consigneTemperatureProgMass1-1){ //Mise en marche du chauffage -1° pour eviter les etats indecis
    digitalWrite(resistance1, LOW);
    digitalWrite(resistance2, LOW);}

    if(celsiusNet  >= consigneTemperatureProgMass1+1){ //Mise en arret du chauffage +1° pour eviter les etats indecis
    digitalWrite(resistance1 , HIGH);
    digitalWrite(resistance2 , HIGH);}

    //Mise en marche du bulleur
    if (now.minute()==bulleurOn.minute() && now.second()==bulleurOn.second()) {
      digitalWrite(bulleur,LOW);
      bulleurOff = (now + TimeSpan(0,0,0,dureeBulleurMarche)); //programmation de l'heure d'arret du bulleur
      }
    //Mise à l'arret du bulleur
    if (now.minute()==bulleurOff.minute() && now.second()==bulleurOff.second()) {
      digitalWrite(bulleur,HIGH);
      bulleurOn = (now + TimeSpan(0,0,dureeBulleurArret,0)); //programmation de l'heure de depart du bulleur
      }
    //Les modes d'Arret du programmeMassage1
    // Par le temps finMassage
    if (finMassage.minute()==now.minute() && finMassage.second()==now.second() ) {
        digitalWrite(pompeGV,HIGH); securiteGV=0;
        digitalWrite(resistance1, HIGH);
        digitalWrite(resistance2, HIGH);
        digitalWrite(bulleur,HIGH);
        lcd_4x20.clear();
        break;
      }
      //Par la telecommande touche 0
      if (irrecv.decode(&results)){
        if (results.value==0xFDB04F) { //annuler appuie 0
        delay(100);
        irrecv.resume();
        lcd_4x20.clear();
        digitalWrite(pompeGV,HIGH); securiteGV=0;
        digitalWrite(resistance1 ,HIGH);
        digitalWrite(resistance2 ,HIGH);
        digitalWrite(bulleur,HIGH);
        break;
        }
        if (results.value==0xFFFFFFFF) { //nettoyage bug
        debugInit();}
      }

      delay(10);
    }
return;
}



McGiver_13

Bonjour,
Un petit peu d'absence suite à un déplacement professionnel !!!

Au sujet de la fixation de l'arduino, j'ai acheté un petit coffret électrique prévu pour deux ou trois disjoncteurs. L'écran LCD 16 x 2 se positionne très bien par l'intérieur et fait pile poil la largeur de l'emplacement des disjoncteurs, je l'ai protégé par une petite plaque en plexi.
J'ai fixé tous mes modules ( RTC, Bluetooth, IR) à l'intérieur du coffret et j'ai refait la plaque arrière, celle d'origine ne me convenait pas, pour y fixer l'aduino, le tout avec du bon scotch double face, c'est nickel.

A+

nikus972

Bonjour,
Un petit peu d'absence suite à un déplacement professionnel !!!

Au sujet de la fixation de l'arduino, j'ai acheté un petit coffret électrique prévu pour deux ou trois disjoncteurs. L'écran LCD 16 x 2 se positionne très bien par l'intérieur et fait pile poil la largeur de l'emplacement des disjoncteurs, je l'ai protégé par une petite plaque en plexi.
J'ai fixé tous mes modules ( RTC, Bluetooth, IR) à l'intérieur du coffret et j'ai refait la plaque arrière, celle d'origine ne me convenait pas, pour y fixer l'aduino, le tout avec du bon scotch double face, c'est nickel.

A+
J'ai deja une boite de prevue etanche


et une plaque noir celle de la photo, mon probleme c'est que j'ai changé l'arduino UNO par un arduino NANO, et c'est pas tres pratique a fixer, donc je voudrais des retours d'experience sur le sujet.

nikus972

Bon j'ai trouvé pour fixer mon arduino nano, la solution est tres simple :



En plus l'avantage c'est que si je doit mettre à jour le programme pour modification il me suffit de debrancher uniquement l'arduino, et pas me pointer avec le pc pres du spa et de transferer le programme avec le cable de 15cm de long

nikus972

Bonjour NIKUS972 ; bravo pour ton projet déjà bien abouti , quelques petites choses me paraissent à ajuster :

Chauffage 3kw + pompe 2,2kw soit 5200 W sous 240v = 21 ampères  , et je note que ton disjoncteur fait seulement 16 A ......

Attention aussi à ton relais qui pilote ta résistance il doit supporter 12.5 Ampères donc il doit avoir un pouvoir de coupure d'au moins 16A.

En électromécanique lorsque l'on utilise une résistance chauffante on prend l'habitude d'utiliser deux contacts de relais à fermeture( avec deux relais différents) , de cette façons la résistance ne risque pas de rester en fonction si les contacts du relais reste collés .

Bonne continuation.
Et bien MERCI mon ami
pourquoi merci et bien je pensais que ma resistance etait HS et apres analyse de ta réflexion, j'ai regardé comment etait alimenté ma resistance. Le systeme d'origine utilise aussi 2 relais, et bien y'en avait un qui etait HS je l'ai donc shunté (provisoirement) et bien ca MARCHE ma resistance CHAUFFE.

Donc pas besoin d'acheter une résistance neuve

ARTNOW

Et bien MERCI mon ami
pourquoi merci et bien je pensais que ma resistance etait HS et apres analyse de ta réflexion, j'ai regardé comment etait alimenté ma resistance. Le systeme d'origine utilise aussi 2 relais, et bien y'en avait un qui etait HS je l'ai donc shunté (provisoirement) et bien ca MARCHE ma resistance CHAUFFE.

Donc pas besoin d'acheter une résistance neuve

Bonjour Nikus972 , de rien content de t'avoir aidé .
bonne baignade !

nikus972

Salut les amis, mon projet n'est pas mort au contraire il avance.
Suite au dernière remarque sur les puissances de fonctionnement et surtout au cable d'alimentation qui a légèrement fondu provoquant le déclenchement du disjoncteur, j'ai décidé de modifier le principe d'alimentaion de la pompe bi-vitesse et de la résistance de chauffage.

Donc adieu la carte 4 relais 10A avec les contacteurs de puissance et bonjour les relais statique de 50A




Donc j'ai du modifier le code, et maintenant il est en version 1.7 avec la gestion du bluethoot, je paufine encore deux trois truc et je vous le publie rapidement, avec des photos de l'ensemble.

a plus

elkain

Bonjour,

Je déterre le sujet car il correspond parfaitement à mon besoin.

La version 1.7 ou les suivantes sont-elles toujours disponible ?

Peux-tu éventuellement poster un lien vers ton github ou tout autre gestion de conf?

Les schémas de câblage ont été changé?

nikus972

Bon j'ai abandonné le projet tout simplement parce-que la carte d'origine du spa marche toujours, et aussi parce-que je pense que le programme était trop lourd (ou mal conçu) pour un arduino y'avait trop de ralentissement.
Je pense qu'il faudrait soit tout passer sur 2 arduinos pour partager les actions/taches ou alors passer sur un raspberry.
sinon je te balance les derniers documents que j'ai la version 1.7 et les schémas puissances et commande

Go Up