IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Régulation four électrique , version 2 . Vos suggestions


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut Régulation four électrique , version 2 . Vos suggestions
    Bonjour
    Je récapitule le cahier des charges qui est simple.

    Deux résistances, haut et bas chauffent un four .

    J’allume la résistance du haut pendant un cycle de 3 secondes, je l'éteint, et j'allume la résistance du bas pendant un cycle 4 secondes je l'éteint, et allume le bas, et ainsi de suite..
    Il ne faut JAMAIS que les deux résistances, haut et bas soient allumés en même temps,
    Pendant le cycle de chauffe, si la température est atteinte, je sors du cycle, et passe à l'autre cycle de chauffe.

    Je reçoit les informations, et commande les sorties via des modules USB.
    Modules de saisie thermocouple USB
    http://www.yoctopuce.com/FR/products...o-thermocouple
    Module de commande relais USB ( Je dois utiliser une fonction pulse, et non mettre le relais sur ON, ou OFF ).
    http://www.yoctopuce.com/FR/products...cto-powerrelay

    J'ai conçu un programme qui enclenche un cycle de durée prédéterminée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    #include <unistd.h>   /* sleep() */
     
    #include <iostream>
    #include <time.h>
     
     
    using namespace std;
     
     
    int temperatureHaut ();  //-- Saisie de la Température sur Sonde du Haut
    int temperatureBas ();    //-- Saisie de la Température sur Sonde du bas
     
    int PulseBas (); //-- Fonction Pulse sur relais résistance haut
    int PulseHaut (); //-- Fonction Pulse sur relais résistance bas
     
     
    class Four
     
     {
         private:
              int consigneHaut;
              int consigneBas;
              int temps;
              time_t  depart;
     
         public:
              Four(int,int,int,time_t );
     
              int allumageminute ();
     
     
     
     
                                                                     };
    // ----------  constructeur
     
     Four::Four(int regulHaut, int regulBas, int min, time_t  heure)
     
     {
               consigneHaut = regulHaut;
               consigneBas = regulBas;
               temps = min;
               depart = heure;
     
     
                                                              }
     
     
     
    // -------- Fonction minutée
     
    int Four::allumageminute()
     
    {
          int a;
     
            sleep(1);
     
              time_t start;
              time (&start);
     
              a = difftime (start,depart);
     
     
        while ( a < temps)
     
     
    {
          int ctr;
          int ctre;
                time (&start);
                a = difftime (start,depart);
     
     
              if (temperatureHaut ()< ( consigneHaut)- 0.5 )
     
                  PulseHaut() ;
                   cout<<"HAUT EN CHAUFFE";
                   cout <<  endl ;
     
     
                         for (ctr = 0; ctr < 3; ctr++)
     
                             {
                                   sleep(3);
     
                                      if (temperatureHaut ()< consigneHaut)
     
                                         break;
                                                                                    }
     
     
                   PulseHaut() ;
                   cout <<  endl ;
     
     
     
                if (temperatureBas()< (consigneBas)- 0.5)
     
                    PulseBas() ;
                    cout<<"BAS EN CHAUFFE";
                    cout <<  endl ;
     
                         for (ctre = 0; ctr < 4; ctr++)
     
                            {
                                   sleep(4);
     
                                    if (temperatureBas()< consigneBas)
     
                                      break;
                                                                                     }
     
     
                             PulseBas() ;
                             cout <<  endl ;
     
     
                                                                                                             }
     
     
     
     
                                                                                                                                   }
    // --------------------------------------------------------------------------------------------------------------------------------------
     
    int main(int argc, char *argv[])
     
             {
     
     
                 time_t a;
                 time (&a);
     
                 Four Baguettes(260,260,12,a); // (Températue demandée Haut,Température demandée Bas, temps de chauffe,"heure départ")
     
                         Baguettes.allumageminute();
                              cout<<"Vous avez cuit du pain pendant 4 Heures, ça sufit comme ça ";
     
                                               cout <<  endl ;
     
     
     
     
     
                                                                                                              }
     
    // --------Fin Main
     
     
     int temperatureHaut ()
              {
                     int a = 10;
                      return a;
                                     }
     
     
     
     int temperatureBas ()
          {
                      int a = 12;
                      return a;
                                        }
     
     
     
    int PulseHaut ()
    {
      cout<<"Haut en Pulse" ;
         cout <<  endl ;
                                   }
     
     
     
     
    int PulseBas ()
    {
      cout<<"Bas en Pulse" ;
       cout <<  endl ;
    Merci.
    Mon soucis se situe sur la conception et l’algorithme, les réglages de temps, se feront par la suite.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Faut que l'on connaisse vraiment la criticité temps réel de votre "machin".

    "sleep(1);", c'est bien tout pourri.
    Ca redonne la main à l'ordonnanceur qui donnera la main à un autre thread durant un quantum de scheduling, qui est fonction de l'OS et de sa configuration, mais c'est 40ms minimum sous Windows non Real Time.

    Moi, je ne comprend pas trop pourquoi votre code est si compliqué.

    tantque temperatureHaut < consigneHaut || temperatureBas < consigneBas
    ---->Chauffe( Resistance := Haut, HeatMax := consigneHaut , TempsMax := 3000)
    ---->Chauffe( Resistance := Bas, HeatMax := consigneBas, TempsMax := 4000)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Je fais tourner cette application sous Linux, la fonction sleep (1), est la seule que j'ai trouvé, pour faire une pause.

    Je ne comprends pas bien ce que vous appelez "criticité temps réel ".

    L"application sert de régulateur thermostatique, la règle, c'est de ne jamais avoir les deux résistances allumées en même temps et d'allumer les resistance, en alternant, haut et bas.

    Pour allumer la resistance du haut, je fais un apel de fonction : "int PulseHaut ()"
    Pour l'éteindre je refais un : "int PulseHaut ()"

    Je saisi la température du haut, par une fonction : int temperatureHaut ()
    Et ainsi de suite pour le bas.


    Pour l'algo, je vais voir, ce que vous m'avez donné.
    Je précise que je ne suis pas un pro de l'informatique, vous l'avez sans doute remarqué, je suis boulanger, j'ai fait du C++ il y a une paire d'années, ce programme est destiné à faire fonctionner un four, pour m'éviter d'acheter des régulateur classiques, avec tout le système de minuterie à faire poser.
    Merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    >Je fais tourner cette application sous Linux, la fonction sleep (1), est la seule que j'ai trouvé, pour faire une pause.

    OK, j'ai confondu le "Sleep(en_milli_seconde)" de Windows avec le "sleep(en_seconde)" de Linux(POSIX).

    Mais les limitations sont du même ordre.

    Linux, comme Windows, ne sont pas, par défaut, des systèmes temps réel.

    Quand on fait un sleep de 1 seconde, la seul garantie, c'est de ne pas avoir la main pendant AU MOINS une seconde, mais cela peu être 2,3 voir l'éternité si votre système est particulièrement chargé.

    Je ne connais pas la criticité de votre application, mais je ne pense pas qu'une attente potentiellement infinie de votre application après un sleep soit acceptable.

    Je ne comprends pas bien ce que vous appelez "criticité temps réel ".
    Il y a beaucoup de type de temps réel : temps borné, temps en moyen, etc...
    Chaque type de temps réel se gère de manière différente.

    Mais je ne pense pas qu'échantillonner toutes les secondes pour une période de 3 secondes maximum soit suffisamment précis.
    Et encore, le "toutes les secondes, c'est dans le meilleur des cas".

    Linux non Temps Réel ne peut pas vous garantir que le programme soit réveillé toutes les secondes, même à un delta près, mais si vous avez un OS peu chargé, que vous mettez une fréquence d'échantillonnage bien plus fort, et une priorité d'exécution forte, vous ne devriez pas une garantie molle (empirique) de quelques dixièmes de secondes.

    Je ne suis pas un spécialiste Linux mais usleep (http://linux.die.net/man/3/usleep) avec une fréquence assez élevé permettra cette garantie molle.

    Après, pour vos contraintes, c'est juste une architecture logicielle simple :
    c'est de ne jamais avoir les deux résistances allumées en même temps et d'allumer les resistance
    Il suffit d'avoir une méthode Chauffe qui ne retourne que si la résistance n'est plus allumé.
    Si Chauffe est la seule méthode qui allume une résistance et que vous éteignez toujours la résistance avant de sortir de la méthode, et que Chauffe ne s'appelle pas elle-même, vous avez la garantie de n'avoir qu'une résistance d'allumé à la fois.
    Attention, la garantie de toujours éteindre la résistance en C++ demande à correctement gérer les exceptions.

    PulseHaut/Bas, temperatureHaut/Bas etc..., semble être du code extrêmement proche, il faut donc essayer de factoriser le code pour qu'il soit commun aux deux résistances et se servir des paramètres pour faire la distinction entre les 2 résistences (comme axe de variabilité en théorie des langages).

    Donc l'algo, pour moi, est toujours le même :
    tantque temperatureHaut < consigneHaut || temperatureBas < consigneBas
    ---->Chauffe( Resistance := Haut, HeatMax := consigneHaut , TempsMax := 3000)
    ---->Chauffe( Resistance := Bas, HeatMax := consigneBas, TempsMax := 4000) .

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    J'ai modifié l'algo, j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
             if ((temperatureHaut ()< ( consigneHaut)- 0.5 ) || (temperatureBas()< (consigneBas)- 0.5) ) ;
     
                  PulseHaut() ;
                   cout<<"HAUT EN CHAUFFE";
                   cout <<  endl ;
     
     
                         for (ctr = 0; ctr < 3; ctr++)
     
                             {
                                   sleep(3);
     
                                      if (temperatureHaut ()< consigneHaut)
     
                                         break;
                                                                                    }
     
     
                   PulseHaut() ;
                   cout <<  endl ;
     
     
                     PulseBas() ;
                    cout<<"BAS EN CHAUFFE";
                    cout <<  endl ;
     
                         for (ctre = 0; ctr < 3; ctr++)
     
                            {
                                   sleep(3);
     
                                    if (temperatureBas()< consigneBas)
     
                                      break;
                                                                                     }
     
     
                             PulseBas() ;
                             cout <<  endl ;
     
     
                                                                                                             }
     
                                                                                                                                             }
    C"est bizarre si je met un ; " while", à la place du : " if " je rentre pas dans la boucle..

    Pour la fonction Sleep je vais étudier le problème...
    Merci

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Mais je pense qu'il y a un souci, j'ai mis 4 secondes en bas et 3 en haut, à titre d'exemple.

    En fait, je chauffe 1 Min 30 S, en bas, et 1 Min en Haut.
    Cela change peut être certainement la criticité, et le temps réel nécessaire.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Politiques de scheduling
    http://deptinfo.unice.fr/twiki/pub/M...ulingLinux.pdf

    Par contre Linux ne maintient plus le temps réel, je me demande si mon application en a réellement besoin
    Noyau temps réel (linux-rt)
    http://doc.ubuntu-fr.org/linux-rt

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Sur le sujet des manipulation des saisies de valeurs et des commandes de fonctions de : "Pulse", je conçoit aisément travailler avec un adressage, les modules USB, ont un numéro d'adressage unique, et je pourrai aisément, je pense simplement moduler l'adressage , en ayant une fonction unique.

    Je vais poster une discussion sur les systèmes, dans Linux, en précisant bien les Timing, et demander si j'ai réellement besoin du OS temps réel.


    "D'autant que j'ai évidement, le projet de tout avoir sur un Raspberry Pi, en secours...."

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    "Quand on fait un sleep de 1 seconde, la seul garantie, c'est de ne pas avoir la main pendant AU MOINS une seconde, mais cela peu être 2,3 voir l'éternité si votre système est particulièrement charg"


    Sur le point de perdre la main dans la boucle, je comprends bien le danger.,

    Les modules renvoient des valeurs sur leur position, et se programment, donc, je pense que ce soucis ne se pose pas.

    Finalement je vais voir exactement comment fonctionnent les modules relais.
    http://www.yoctopuce.com/FR/products...cto-powerrelay

    Je les voyais comme des Booléens, les avais intégré comme des fonctions à appeler, mais ce sont les "piliers", avec leur fonctions Pulse de ce programme.

  10. #10
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par GillesM57330 Voir le message
    Sur le point de perdre la main dans la boucle, je comprends bien le danger.,

    Les modules renvoient des valeurs sur leur position, et se programment, donc, je pense que ce soucis ne se pose pas.
    Perso, pour une application de ce genre, je n'aurai pas choisi le "powerrelay" mais le module "Yocto-Relay" pour bien des aspects :

    - disposant de deux relais indépendants, il permet de monter les deux relais en série et d'utiliser le premier comme dispositif de secours (coupure des 2 résistances en cas de doute) en positionnant son état initial (mise sous tension sur "off") et en programmant un basculement auto (retour à Off") sur quelques secondes (combien de temps les résistances peuvent rester allumées après atteinte de la température maxi sans risque); charge au logiciel de réactiver le délai périodiquement.
    - le second relai bascule sur R1 ou R2, le délai de basculement pouvant être directement programmé sur le module, l'information est récupérée - à l'initiative du module - et non à l'initiative du logiciel qui du coup passe en mode événementiel.

    ceci n'interdit pas d'avoir une méthode déclenchée par un timer qui interroge le module (et celui qui capte la température) pour avoir une idée de l'état actuel du dispositif et éventuellement stopper le tout si un doute apparait.

    autre aspect à ne pas négliger : quand la T° est atteinte, le dispositif doit s'arrêter et redémarrer un peu plus tard - pas trop vite - quand la T° a baissée, ici aussi , le module (et le relai N°2) peut être utilisé car on peut gérer son basculement indépendamment du relai N°1.

    Tu parles ici d'un four, j'imagine à résistance bobinées; un risque de FCEM élevé est à craindre, quel est le courant d'appel lors de la mise sous tension à froid ? autrement dit, est ce que les relais du module tiendront le coup ?
    La nature fait des choses extraordinaires, observons la et restons humble, on ne nous demande pas de refaire le monde mais juste de reproduire virtuellement des choses existantes ....

    et n'oubliez pas si vous aimez et quand vous avez la réponse

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Perso, pour une application de ce genre, je n'aurai pas choisi le "powerrelay" mais le module "Yocto-Relay" pour bien des aspects :
    J'en suis au projet, je dois définir le type exact de relais, avec l’électricien industriel, avec qui je suis en contact, mais il s'agit simplement de l'un ou de l'autre.
    Je possède les plan électrique du four et nous devons établir le matériel nécessaire sur ce point.


    disposant de deux relais indépendants, il permet de monter les deux relais en série et d'utiliser le premier comme dispositif de secours (coupure des 2 résistances en cas de doute)
    Le fait d'utiliser le double relais http://www.yoctopuce.com/FR/products...sb/yocto-relay pour y établir le schéma que vous proposez me semble une bonne idée, cependant vous parlez de doute donc interrogation par le programme, si je ne me trompe pas.
    Je conçoit élaborer ce type d'algorithme.

    ](combien de temps les résistances peuvent rester allumées après atteinte de la température maxi sans risque);
    Nous sommes en boulangerie, la température, est à 5, ou 10 degrés prés, au niveau des résistances, nous n'allons jamais au maximum, de la température, il n'y a pas de danger de ce coté la, c'est du : " tout ou rien ", en schéma de régulation, avec un hystérésis, à plus ou moins 10 degrés.

    autre aspect à ne pas négliger : quand la T° est atteinte, le dispositif doit s'arrêter et redémarrer un peu plus tard - pas trop vite - quand la T° a baissée, ici aussi , le module (et le relai N°2) peut être utilisé car on peut gérer son basculement indépendamment du relai N°1.
    Certes, la création d'un algorithme, incluant des relais en série, offre la possibilité de tout contrôler avant chaque action

    Tu parles ici d'un four, j'imagine à résistance bobinées; un risque de FCEM élevé est à craindre, quel est le courant d'appel lors de la mise sous tension à froid ? autrement dit, est ce que les relais du module tiendront le coup ?
    La encore merci pour cette interrogation, je ne peux pas vous dire, je dois voir avec l’électricien, à qui je soumettrai tout ces remarques.

    Sur ce point voici ce que je cherche à "recréer" le RTU620
    http://www.panicoupe.fr/regulpanicoupe.htm


    A ce point il s'agit d'établir précisément, les relais à utiliser, et de créer un schéma électrique, et algorithmique, à double relais.

    Mais je m’interroge sur la nécessite impérieuse de l'utilisation d'un double relais, les régulateurs classiques, n'en possèdent pas apparemment.

    Ce schéma à double relais ne serait alors qu'un schéma de double contrôle délibérément imposé par le cahiers des charges.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Le modèle de régulateur classique présenté fonctionne en binôme avec un autre régulateur relié par avec un système de minuterie, alternant, les phases de chauffe, .

  13. #13
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par GillesM57330 Voir le message
    Le modèle de régulateur classique présenté fonctionne en binôme avec un autre régulateur relié par avec un système de minuterie, alternant, les phases de chauffe, .
    vous auriez le schema electrique du four ?
    il doit y avoir les sécurités qui vont bien (thermocouple - différentiel - fusible - etc.) qui n'ont pas besoin d'être doublées sur le régulateur.

    ça coute combien le regulateur tout fait ? parce que un rasberry pi 2 + les capteurs + les relais + l'alimentation + le boitier (isolation thermique et parasite) + les cables + l'afficheur + les 3 ou 4 boutons poussoirs... ça va faire un prix .... mais l'exercice est plus qu'intéressant !!
    La nature fait des choses extraordinaires, observons la et restons humble, on ne nous demande pas de refaire le monde mais juste de reproduire virtuellement des choses existantes ....

    et n'oubliez pas si vous aimez et quand vous avez la réponse

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Je viens d'avoir l’électricien au téléphone, lui c'est pas son problème, il fonctionne en mode : On Off ,

    Créer un système à double relais en série, est certes intéressant, mais uniquement motivé par une volonté délibérée de surenchérir sur les contrôles,

    Il s'agit sur ce point de définir et connaitre exactement ce que les modules relais seul sont capable de donner comme informations pouvant être considérée comme non discutable et vérité vraie absolue pour le programme , et à même de mettre en tension du 400 V ...

    Tu parles ici d'un four, j'imagine à résistance bobinées; un risque de FCEM élevé est à craindre, quel est le courant d'appel lors de la mise sous tension à froid ? autrement dit, est ce que les relais du module tiendront le coup ?
    C'est valable uniquement pour les moteurs selon l’électricien, les relais classiques sur régulateur classiques sont compatible, et je doute que les modules Yocto ne le soient pas

  15. #15
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par GillesM57330 Voir le message
    C'est valable uniquement pour les moteurs selon l’électricien, les relais classiques sur régulateur classiques sont compatible, et je doute que les modules Yocto ne le soient pas
    Expérience vécue sur un four de cuisine pro chauffage 4 faces ( 4 x 2kw soit 8 kw en tout en 240V soit 32 A) soit 7.5 ohm au nominal.
    à l'allumage (T° ambiante 20°) impédance instantanée à l'allumage moins de 2 ohm et pique de courant à 84 ampères durant 15 millisecondes; les relais donnés pour 2400 W (chacun) n'ont pas tenu 10 allumages.
    une fois ce petit souci réglé, l'équivalent d'un rasberry et quelques accessoires régulent le four à 0.2° près ....
    La nature fait des choses extraordinaires, observons la et restons humble, on ne nous demande pas de refaire le monde mais juste de reproduire virtuellement des choses existantes ....

    et n'oubliez pas si vous aimez et quand vous avez la réponse

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Le schéma du four pour qui ça intéresse

    Pour les tarif, je m'en tire pour moins de 400 €, et j'ai un système extensible via le web, vu que je risque de devoir récréer un module de commande de chambre de fermentation controlée selon le même principe USB

    Expérience vécue sur un four de cuisine pro chauffage 4 faces ( 4 x 2kw soit 8 kw en tout en 240V soit 32 A) soit 7.5 ohm au nominal.
    à l'allumage (T° ambiante 20°) impédance instantanée à l'allumage moins de 2 ohm et pique de courant à 84 ampères durant 15 millisecondes; les relais donnés pour 2400 W (chacun) n'ont pas tenu 10 allumages.
    Inquiétant, je vais voir ce problème
    Images attachées Images attachées

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Un régulateur de base seul sans la pose, ça vaut 160 €, il m'en faudrait 6, plus le système à recréer, c'est plus simple et moins cher de faire tout en USB, sur PC, ou rasberry en cas de secours

    une fois ce petit souci réglé, l'équivalent d'un rasberry et quelques accessoires régulent le four à 0.2° près ....
    Vous auriez l'algorithme ou programme ?

  18. #18
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Juste quelques petites remarques à propos de sleep / temps.

    Sur un noyau standard et pc standard, usleep est précis à une quinzaine de ms environ. Largement assez pour les délais qui sont évoqués ici. Par contre, quitte à être en c++, autant utiliser std::chrono (dont high_resolution_clock, qui offre une bien meilleure interface je trouve. Ça ne changera pas la précision, mais le code sera plus lisible. Et en particulier, sleep_until évitera d’additionner les dérives, même si ici ça ne sera vraisemblablement pas un soucis.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Bien white_tentacle
    J'avais également pensé utiliser cette fonction : " std::chrono ".
    Merci.

  20. #20
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par GillesM57330 Voir le message
    Un régulateur de base seul sans la pose, ça vaut 160 €, il m'en faudrait 6, plus le système à recréer, c'est plus simple et moins cher de faire tout en USB, sur PC, ou rasberry en cas de secours
    Pas mal, donc l'idée est de faire une domotique pour la boulangerie ? effectivement, côté équilibre économique, la version centralisée doit permettre de faire des économies.

    Sinon, après analyse du schéma, côté électrique pas d'inquiétude à avoir, page 4, il y a tout ce qu'il faut pour gérer la puissance, le module USB devra se contenter de se substituer aux commandes existantes et devra commuter le 12 volts alimentant les bobines des relais de puissances, donc les problèmes de pic d'intensité continueront à être supportés par les relais existants.

    au passage, je n'ai pas vu de bouton d'arrêt d'urgence sur le schéma (un gros bouton coup de poing rouge en façade).

    Fort de ça, on peut finaliser (ou presque) le côté matériel :

    Si il s'agit de faire un poste de contrôle centralisé pour les équipements du labo, au lieu d'un rasberry, un petit pc tactile serait sans doute plus confortable l'usage (et pourquoi pas sous windows si vous n'y êtes pas farouchement opposé )

    Je vous prépare quelques idées pour l'architecture du logiciel qui , j'espère , feront l'objet de débats ici !!
    La nature fait des choses extraordinaires, observons la et restons humble, on ne nous demande pas de refaire le monde mais juste de reproduire virtuellement des choses existantes ....

    et n'oubliez pas si vous aimez et quand vous avez la réponse

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/09/2007, 00h48
  2. Réponses: 8
    Dernier message: 20/07/2007, 11h17
  3. Un environnement de dév. gratuit, vos suggestion
    Par zazaraignée dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 05/04/2006, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo