Partage
  • Partager sur Facebook
  • Partager sur Twitter

temporisations sérielles programmables.

    9 août 2020 à 18:27:06

    Salut à tous.

    J'ai fait une temporisation sérielle ( T1 programmable commande T2 programmable commande T3 programmable commande T4 prorammable  ) .

    Cela me donne 2 impulsions dont les "1" on,  et les "0" off sont programmables .

    J'ai fait ce montage en hard avec des monostables en série , et j'arrive à une précision de 1% entre chaque tempo , pour une même valeur affichée T1=T2=T3=T4 .

    Mes tempos sont " programmables " par rotacteurs de 1  ms à 90 ms .

    A noter je peux répéter, le cycle  T1+T2+T3+T4 2048 fois  via un compteur 12 bits .

    Mes tempos serviront à faire de la soudure de plaques  aluminium  2 fois 2 mm ( soudure par points classique impossible à cause de la fusion liquide de l'alu ) , par décharge de condensateurs  commandé par 100 MOSFET en // , ...commutateurs à 100 MOSFET en  //... déjà opérationnel .

    Voir sur le forum usinages.com à soudeuse à décharges de condensateurs .

    Un prototype "1"  avec 32 MOSFET 195 A/100V en // , et une batterie de 2 condensateurs  75000µF/100V  , a fonctionné sous 15 Volts ( car oscillations au dessus ) ...mais sans soudure.

    Notre conclusion => l'ESR des condos était trop élevé 4 milli Ohms ainsi que le r DS"on"  des MOSFET=>400 µ Oms , devant la résistance soudure=>800 µ Ohms .

    Toute l'énergie ( plus de 80 %) est consommée ailleurs que dans la soudure.

    Ma demande de tempo sérielle avec 3 voir 4 T "on" et 4 T "off" , est lié au fait qu'il faut un fort courant 2500 à 3500 A  sur un temps court 1 à 50 ms en "on" , avec une progression de type 1 ms ( pré chauffage )  5 ms ( pré soudure ) , 10 ms seconde ( forgeage) ,20 ms ( soudure) ...avec des temps de repos ajustables/réglables entre chaque T "on" .

    Pourquoi ces précaution => l'alu est fluide ( très  ductile et , malléable) et ne se tient pas à la fusion ...trou et éclaboussures .

    J'ai  a donc fait un proto "2" avec 100 MOSFET  en // => r "DS"on =60 µ Ohms ( datas sheet infos ) , et 20 super condensateurs 2.7V/ 500 Farads en // =>ESR=400 µ Ohms .

    Ma tempo hard est opérationnele précise , mais avec une progression de 1.4 entre 1 ms et 90 ms .

    Les effets des forts courants ( cem) a été prévu => boitier alu pour la commande des tempos , chasis/boitier en tôle fer pour l'ensemble ...filtre anti  sortie HF sur l'entrée 230 V , cage en grillage anti parasite autour de la soudeuse .

    J'atteints quand même une précision de 1 %.

    Avec un Arduino , ou un Rasperry pi , peut on espérer plus précis .

    Quelqu'un a t-il déjà programmé  ou planché sur un tel projet...?

    Merci de vos réponses .

    Amicalement .

    Jac .

    -
    Edité par JacquesVergneau 2 septembre 2020 à 0:42:27

    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2020 à 13:13:30

      Wtf j'ai rien compris.

      Tu n'as pas une question plus précise ? Parce que là je doute que quelqu'un puisse t'aider ?

      • Partager sur Facebook
      • Partager sur Twitter
        10 août 2020 à 14:32:54

        tu veux dire, tu veux avoir des temporisations avec certaine précision  ? Ou tu veux qu'on vienne souder des trucs ?

        -
        Edité par michelbillaud 10 août 2020 à 14:34:21

        • Partager sur Facebook
        • Partager sur Twitter
          10 août 2020 à 15:45:16

          Coucou.

          Non j'ai déjà réalisé une tempo avec 4 monostables en série ( je me répète , mais bon ) , ces 4 tempos sont "programmables de 1 à 90 ms , et se déclenchent les unes les autres.

          Résultat en sortie j'ai T1+T2+T3+T4.

          Je voudrais savoir si avec un Arduino nano on peut faire la même chose .

          Dois-je donner mon schéma ,...ou faire un croquis , pour plus de précision .

          J'utilise une batterie de super condensateurs ( 20 en // de 500 Farads )  de 10 000 Farads sous 2.5 V ...opérationnelle.

          J'ai 31.25 k Joules d'énergie disponible ...ce qui devrait être  largement suffisant pour souder des tôles alu de 2 fois 2 mm.

          J'utilise un commutateur électronique à 100 MOSFET en //  pouvant commuter 100 fois 110 Ampères max soit 11 000 Ampères max théoriques  , commandé par une minuterie à 4 tempos sérielles , dont les t"on" et "off" peuvent être programmé de 1 ms à 90 ms ....opérationnels.

          Le but envoyer des impulsions  brèves  ( 1 à 90ms ) sous fort courant  (3500 ampères max soit 2.5 V:0.7 milliOhms==> rDS"on MOSFET +ESR super condensateurs +r soudure=0.7 m Ohms  )...de façon à monter la température de l'alu proche de la fusion et répéter plusieurs fois l'opération.

          L'astuce : par cette manip , la température sera plus haute au coeur de l'aluminium au contact des 2 plaques à souder  , la chaleur se dissipant plus vers l'extérieur ...et donc la soudure se fera au contact des 2 tôles , et l'aluminium ne devrait pas dégouliner vers l'extérieur ( aluminium fondu très liquide impossible à souder par points ) . 

          Par expérience on devra déterminer quelle largeur d'impulsion il faut en "on" et "off" , et combien de fois on devra répéter le cycle  T1+T2+T3+T4 ...

          Avec le forum usinages.com ( sujet soudeuse à décharge de condensateurs ), nous sommes sur ce projet depuis 4 ans .

          Les premiers essais devraient commencer d'ici quelques semaines .

          Une tempo " soft" avec un Arduino nano  programmé en C++ serait facile à dupliquer pour tous , une fois les durées trouvées par expérience dans le dur des tôles alu  avec ma tempo "hard".

          Ma tempo "hard" sera plus rapide avec ces 4 commutateurs 12 positions  à utiliser  , qu'une tempo "soft" ...mais la conception sur circuit imprimé ne sera sans doute pas aisée pour tout le monde .

          D'où programmer un Arduino nano  déjà monté et pas cher.

          Amicalement  .

          Jac . 

          -
          Edité par JacquesVergneau 31 août 2020 à 16:23:03

          • Partager sur Facebook
          • Partager sur Twitter
            10 août 2020 à 16:17:00

            La même chose que quoi ? Générer des temporisations ?
            • Partager sur Facebook
            • Partager sur Twitter
              10 août 2020 à 16:36:07

              Salut,

              Le fait est que tu es sur un forum C++ ici, et non sur un forum d'électronique.

              Cela implique que les gens pourront -- éventuellement -- t'aider à programmer ton rasperry ou ton arudino (à condition peut-être d'avoir un code sur lequel "travailler"), mais qu'il y a très peu de chance que tu trouve quelqu'un qui soit suffisamment doué en électronique pour répondre à cette question très (trop) spécifique.

              Pour ma part, j'ai "à peu près" compris ce que tu explique, mais les explications que mes maigres compétences (n'étant pas electronicien) me permettent sont:

              • un arduino uno "de base" a une fréquence d'horloge de base de 16 MhZ, ce qui devrait permettre (à condition d'être codé correctement) au code d'apporter une précision supérieure
              • les temps "de charge" et de "décharge" des condensateur dépendent essentiellement de la résistance du système (exprimée en Ohms) et de la capacité du  condensateur (exprimée en Farah) selon la formule Temps (en seconde) = R * C
              • En pratique, on se contente souvent d'atteindre +/- 60 % de la capacité du condensateur à  la charge et à +/- 30 % de sa capacité à la décharge
              • Pour ce que j'en sais, l'obtention d'un arc électrique pour provoquer la soudure à partir de condensateur nécessite des condensateur à très grosse capacité à  voltage élevé (mais je peux me tromper).  Tu ne pourras donc en aucun cas descendre descendre en dessous du temps nécessaire à  la charge des condensateurs (entre deux soudures) ni à un temps de soudure inférieur au temps de décharge de ceux-ci.
              • les circuits "basse tension" (arduino) et "haute tension" doivent être totalement isolés l'un de l'autre pour éviter les risque, ce qui implique d'utiliser des relais spécifiques.  Relais qui  mettront -- forcément -- "un certain temps" à s'ouvrir et à se fermer.

              Tout cela pris en compte doit nous rappeler que la capacité maximale d'une chaine dépend de la force de son maillon le plus faible, et qu'il n'y a rien à faire: si arduino (correctement programmé) devrait pouvoir permettre des séquences plus petites que 50ms, le reste de la chaine sera limité par le "plus long temps" pris par les autres composants pour obtenir le résultat voulu, à savoir

              • les 50 ms minimum requis par les roacteurs
              • le temps de charge / décharge des condensateurs
              • le temps d'ouverture / fermeture des relais entre haute et basse tensions.

              Comme on ne dispose d'aucune donnée technique pour les deux derniers éléments (bon, j'avoue, je ne les ai pas cherchées non plus :p ) , il devient pour le moins difficile de répondre de manière plus précise à ta question ;)

              • Partager sur Facebook
              • Partager sur Twitter
              Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                10 août 2020 à 18:11:47

                Lu',

                JacquesVergneau a écrit:

                Je voudrais savoir si avec un Arduino nano on peut faire la même chose .

                Oui c'est possible de faire la même chose.

                JacquesVergneau a écrit:

                Avec un Arduino , ou un Raperry pi , peut on espérer plus précis .

                Là par contre ça dépends de la qualité de tes monostables vs ceux d'arduino/Rasberry. Du coûp tu as deux solutions:

                • soit tu as accès aux datasheet d'Arduino/Rasberry pour comparer (theoriquement) si leurs monostables commutent plus rapidement que les tiens
                • soit tu n'as pas accès à ces documents et tu fais les test en temps réel.
                • Partager sur Facebook
                • Partager sur Twitter

                Eug

                  10 août 2020 à 22:53:59

                  (petit up de la discussion, pour la debloquer a cause d'un bug du forum)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 août 2020 à 0:14:44

                    Salut.

                    Le site a l'air de buguer .

                    jac. 

                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 août 2020 à 1:02:13

                      (oui, c'est un vieux bug qui traîne depuis des années)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 août 2020 à 7:24:49

                        Le site a été fait par un stagiaire de 42 ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 août 2020 à 14:52:06

                          Salut à tous .

                          Notre pote Abimen du forum "usinages.com" me transmet ce bout de programme en C pour un Arduino .

                          Quelqu'un peut-il vérifier .

                          Merci de votre attention . 

                          Void setup( ) {

                           pinMode(13,output);                                     // met la patte 13 en mode sortie .

                          }

                          void loop(  )   {

                          digitalWrite(13, HIGHT);                                // patte 13 à 5 Volts .

                          delay (20) ;                                                   //attente 20 ms

                          digitalWrite(13,LOW);                                   // patte 13 à 0   Volt .

                          delay(300);                                                  //attente 300ms.

                          digitalWrite(13,Hight) ;                                 //etc...

                          delay(50);

                          digitalWrite(13,LOW);

                          delay(200);

                          }                                                                // et ça reboucle ...


                          Merci de me dire si c'est bon .

                          Ici on aurait la génération d'un signal à "1"sur 20ms , suivi d'une mise à"o"sur 300ms , d'une mise à"1"sur 50ms et d'une mise à "0" sur 200 ms ..et le cycle se répète .

                          Amicalement .

                          Jac .

                          -
                          Edité par JacquesVergneau 15 septembre 2020 à 12:08:03

                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 août 2020 à 15:26:57

                            void commence par une minuscule. Et pas de t à HIGH. Et plein d'autres fautes.

                            M'enfin bon, pourquoi ne compilez vous pas vous même ?

                            Faudrait tester.

                            -
                            Edité par michelbillaud 28 août 2020 à 16:02:08

                            • Partager sur Facebook
                            • Partager sur Twitter
                              29 août 2020 à 15:17:44

                              Bonjour Jacques, Bonjour Koala,

                              Juste une remarque, Koala:

                              koala01 a écrit:

                              les circuits "basse tension" (arduino) et "haute tension" doivent être totalement isolés l'un de l'autre pour éviter les risque, ce qui implique d'utiliser des relais spécifiques.  Relais qui  mettront -- forcément -- "un certain temps" à s'ouvrir et à se fermer.

                              Sauf erreur, Jacques nous explique qu'il commute des tensions de 2,5 Vcc, donc pas de problème du coté tension, mais des intensités de 3.5 KA, la c'est plus compliqué. Donc en effet il sera sûrement bon de réaliser une isolation: Les relais, c'est une solution, si non, il peut mettre des opto-coupleurs, ce sera plus précis.

                              Mais dès le départ, je ne comprends pas exactement le besoin. C'est de la "grosse artillerie": faire de la soudure à l'arc par point, avec une commutation de 3,5 KA, c'est pas de la gnognote! A-t-on besoin de 1% de précision ?

                              1) Attention il y a risque! Commuter 3500 ampères, c'est dangereux ! N'oublie pas la sécurité : Diode d'anti retour, éclateur, ... Enfin, c'est ta vie, pas la mienne !

                              2) Attention à la CEM [les parasites]! Commuter 3500 ampères, c'est pas anodin ! Si les voisins regarde la télévision, ou écoute la radio, ils vont pas forcément apprécier !

                              3) Ca va chauffer ! Le refroidissement est prévue ? Quelle sont les résistances internes des capacités et des MOSFET ? Si tu vides les capa avec un courant de 3,5 KA, tu vas les charger avec un courant du même ordre (Plus exactement, en fonction du rapport cyclique entre tes timers). Ton alimentation est capable de fournir ça ? 

                              4) Comme tu vas charger/décharger des capa, es-tu sûr que ce soit si important la précision des timers ? Par exemple quel est la précision des capacités que tu utilises ? tu parles de 1% pour les timers, je pense qu'avec tes capa, tu vas être loin de ce chiffre. Plutôt que la précision, il me semble qu'il serait plus important de prendre en compte la possibilité de configuration: Avec ton rotateur, tu peux choisir une valeurs sur 12 par timer, avec du soft tu pourras choisir beaucoup plus de valeurs, et éventuellement au cours du burst de les faire évoluer. Donc avec un processeur et un soft ce sera plus facile de configurer/adapter/tester/ ...

                              Je viens d'aller voir sur le forum: Je n'ai pas compris si tu as déjà fait des essais ou pas. Ca marche ?

                              Enfin, on est loin du C++!

                              Cordialement.

                              -
                              Edité par Dedeun 30 août 2020 à 16:54:29

                              • Partager sur Facebook
                              • Partager sur Twitter
                                31 août 2020 à 15:03:20

                                (petit up de la discussion, pour la debloquer a cause d'un bug du forum)
                                (again)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  31 août 2020 à 16:16:29

                                  Salut à tous .

                                  Le forum bug beaucoup .

                                  Si on veut modifier son message et l'envoyer , tout est effacé => sous prétexte de "spam" . 

                                  Ennuyeux ==> 2 longs messages réponse black-boulés.

                                  Aussi j'ai répondu en partie ...aux questions des potes du forum , dans mon  premier post  ( modifié ), sur les essais à fort courant , les cem etc  ...en bleu .

                                  On me dit aussi sur forum usinage qu'on n'a pas à programmer en C++ sur un Arduino Uno , le logiciel résident et spécifique est suffisant .

                                  Votre avis .

                                  Merci.

                                  Amicalement .

                                  Jac .

                                  -
                                  Edité par JacquesVergneau 31 août 2020 à 16:32:20

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    31 août 2020 à 16:59:42

                                    En fait, il vaut mieux éviter d'éditer les messages, ceux qui suivent la discussion ne vont pas forcément voir les modifications. (On ne relit pas tous les anciens posts)

                                    JacquesVergneau a écrit:

                                    On me dit aussi sur forum usinage qu'on n'a pas à programmer en C++ sur un Arduino Uno , le logiciel résident et spécifique est suffisant 

                                     Le langage sur Arduino est en fait du C++, pas du C. Le compilateur est un dérivé de G++ (avr-g++).

                                    Il suffit de voir que le langage sur Arduino a des classes pour comprendre que ce n'est pas du C : String, Keyboard, Stream, etc.

                                    Par contre, c'est un C++ simplifié. Techniquement, c'est plus proche d'un "C with class" que du C++, mais cela reste du C++.

                                    Mais en fait, on s'en fout un peu que ce soit du C ou du C++.

                                    -----------------------------------------------------------------------------------------

                                    Par contre, tu te perds beaucoup dans tes explications, ca rend la discussion difficile a suivre. Comme l'a dit koala01, c'est un forum de programmation ici. Entrer dans les détails de la partie électronique ne sert à rien et ne fait que rendre plus compliqué de te lire.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      2 septembre 2020 à 1:07:23

                                      gbdivers a écrit:

                                      Par contre, tu te perds beaucoup dans tes explications, ca rend la discussion difficile a suivre. Comme l'a dit koala01, c'est un forum de programmation ici. Entrer dans les détails de la partie électronique ne sert à rien et ne fait que rendre plus compliqué de te lire.

                                      Salut gbdivers.

                                       En parlant électronique je répondais à Dedeun ...et à une interrogation éventuelle "mais pourquoi donc faire une temporisation sérielle ...?"

                                      J'ai laissé  à votre sagacité à tous ,un bout de programme en langage Arduino que m'a gracieusement pondu mon pote Abimen du forum usinages.com , pour savoir s'il pouvait tourner tel que .

                                      Moyennant la correction sur le V majuscule   a "void" à mettre en minuscule , et le T en fin de "HIGH" ...ce programme tourne t-il ...?

                                      Je suppose aussi que ce programme est succeptible de fonctionner sur un Arduino UNO , ou Arduino nano ...ou tout type d'Arduino.

                                      Perso  j'ai fait du Basic et du Visual basic ,du Pascal ,  du langage machine sur µC  8031 et 8051 , donc ça date  un peu .

                                      Faire un programme par la suite avec afficheur LCD et clavier pour modifier le programme me plairait assez.

                                      Si on me dit que celui là haut en rouge , tourne ...ça m'avancerait déjà .

                                      Je veux bien m'y remettre à 70 ans ...encore faut-il que j'avance sur la bonne voie .

                                      Merci à vous .

                                      Jac



                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        2 septembre 2020 à 1:24:30

                                        Oui, a priori, ton code en rouge est correct. (Mais je n'ai pas fait de Arduino depuis un bout de temps)

                                        Et il passera sur tous les types d'Arduino (Uno, nano, etc). Le langage est le meme entre les differents Arduino (sauf changement récent), c'est juste les caracteristiques techniques qui changent.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          2 septembre 2020 à 9:27:53

                                          /*
                                           * Code donné à titre d'exemple. Utilisation sous votre 
                                           * entière responsabilité. Si vous vous électrocutez, 
                                           * vous viendrez pas vous plaindre. Surtout si vous êtes mort.
                                           */
                                          
                                          const int CHARGER_PIN = 13;
                                          
                                          void setup( ) {
                                           pinMode(CHARGER_PIN, OUTPUT);
                                          }
                                          
                                          void send_pulse(long ms_on, long ms_off) {
                                            digitalWrite(CHARGER_PIN, HIGH);                            
                                            delay(ms_on);
                                            digitalWrite(CHARGER_PIN, LOW);                               
                                            delay(ms_off);
                                          }
                                          
                                          void loop(  )   {
                                            send_pulse(20, 300);
                                            send_pulse(50, 200);
                                          }
                                                                                                         

                                          Attention

                                          • Arduino est un nom générique. Il me semble que certaines cartes (arduino mega ?) sortent du 3.3 v, pas du 5v. Vérifier soigneusement.
                                          • L'environnement arduino est aussi utilisable avec d'autres microcontroleurs (8266)
                                          • faites vérifier votre programme par un programmeur compétent. C'est un vrai métier, où on arrive très vite à l'horrible constatation qu'on fait énormément de conneries en programmant. Tant qu'on programme pour faire clignoter des led ou ouvrir/fermer le poulailler, ça va, mais bon.

                                          -
                                          Edité par michelbillaud 2 septembre 2020 à 9:33:20

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            5 septembre 2020 à 8:41:22

                                            Salut Michelbill.

                                            Pas de crainte  à priori pour l'électrocution , (enfin en principe) , je suis un technicien électro technicien et électronicien de métier à la retraite .

                                            Les bourres de 230Volts efficaces , 325 Volts pic  positif et négatif ressenti par le corps ...j'évite .

                                            Là sur ce projet je travaille sur 2.7 Volts max , et en utilisation sous 2.5 Volts dont l'alim  en alternatif 2x 5.5 Volts efficaces 180 Ampères est protégée par un transformateur 230 V / 2x5.5 V .

                                            J'ai pas de fuites , mon transfo est bien isolé ...donc 2.5 V pas de soucis , malgré de forts courants commutables  ( 2500 à 3500 Ampères ) .

                                             -La programmation est effectivement un vrai métier ...mon fils a débuggué  pendant son stage d'ingé d'un an , avec d'autres ingés, le logiciel Windows 2000 dans la SiliconeVvalley  ,  de mémoire il y avait des centaines  de buggs qui une fois  bien recensés se sont retrouvés à être 10 fois plus .

                                            Mon "micro  programme" en rouge en haut le débugage  sous IDE Arduino me marquait "pin non déclarée ". 

                                            Je vois toi que tu la déclares  ( constant int )bien en début . 

                                            Le "void send pulse" en milieu indique ce qu'il y-a à faire .

                                            Et le "void loop "  en fin de programme est plus court  .

                                            Si j'ai bien compris .

                                            Je débugg ça sous IDE Arduino .

                                            A+.

                                            Jac .

                                            PS : en débuggué ...ça tourne ...merci à toi ...il fait 2 octets de plus que celui de mon pote Abimen , mais devrait être plus léger si on décide de programmer  10 impulsions différentes .

                                            -
                                            Edité par JacquesVergneau 14 septembre 2020 à 8:34:13

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              12 septembre 2020 à 8:11:03

                                              Salut Dedeun .

                                              J'ai répondu à ton message personnel.

                                              Merci à tous pour vos réponses.

                                              Mon problème est en parti résolu .

                                              Je reçois mes Arduino nano lundi ...à "programmer" télécharger sous IDE Arduino .

                                              Cordialement.

                                              Jac .

                                              -
                                              Edité par JacquesVergneau 14 septembre 2020 à 8:34:52

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                15 septembre 2020 à 12:16:21

                                                Salut à tous .

                                                Reçu mes Arduino hier .

                                                Téléchargé le programme de notre ami Michelbillaud via l'IDE Arduino  sur les 2 Arduino nano ..

                                                Ca tourne  impeccable.

                                                Mes temporisations sont à + 0.265% de la valeur affichée , mesurée à l'oscillo numérique ...c'est suffisant pour moi . ( reste à savoir qui est le plus juste à ce niveau , l'oscillo ou la puce Arduino=> penchons pour l'oscillo numérique qui possède lui un quartz )

                                                Merci à vous tous .

                                                A+.

                                                Jac 

                                                -
                                                Edité par JacquesVergneau 19 septembre 2020 à 9:01:14

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  3 octobre 2020 à 10:12:49

                                                   Salut à tous .

                                                  Dans le code donné par Michel B. plus haut , code qui tourne , j'ai un problème .

                                                  Il me faudrait ce code sur une seule fois ...pas en rebouclé .

                                                  Ma question : est-ce qu'en ne mettant pas les deux dernière lignes sous Void loop  , mais sous void send , ça peut le faire .

                                                  Pour ce que j'ai lu le void loop sert à reboucler le programme .

                                                  Bon inutile de me dire ... : "t'as qu'a essayer grosse feignasse".

                                                  Si pas de réponse c'est ce que je ferais .

                                                   Amicalement .

                                                  Jac.

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    3 octobre 2020 à 12:22:48

                                                    Tout de suite les procès d'intention. On va pas dire grosse feignasse, on va te demander de préciser.

                                                    C'est quoi, "Une seule fois". Une seule fois dans ta vie ? Qu'est ce qui déclenche le lancement des impulsions ?

                                                    -
                                                    Edité par michelbillaud 3 octobre 2020 à 12:23:52

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      4 octobre 2020 à 9:44:59

                                                      Salut Michel.

                                                      Bien sûr t'auras deviné ,  c'était pour plaisanter.:D

                                                      Pour souder des tôles alu ( 2 fois 1 mm  ou  2 fois 2 mm ) je n'ai besoin que d'une seule boucle du programme ...avec 2, 3 , 4 impulsions pré réglées  en "on" , et des temps de repos préréglés en "off" .

                                                      ces tempos seront réglées de manière à souder sans faire de trous ni d'éclaboussures.

                                                      J'ai dons prévu une progression des temps "on" et "off" ... soit par exemple , 30 , 40, 50 ms  pour les "on" , et 300,400,500 ms pour les "off".

                                                      Par calculs ,  pour avoir 1 k Joules nécessaire à la soudure , il me faudrait 120 ms de t"on" ...d'où 30+40+50 = 120ms .Tout autre combinaison progressive faisant 120 ms pourra convenir  ( exemple   :  10+20+30+60 ) ...cela sera déterminé par essais .

                                                      Les "off" seront aussi déterminés par essais .

                                                      Je pensais m'en tirer avec une boucle répétitive    void loop du "Arduino nano" sortant sur un circuit intégré  ( compteur CD 4040 par exemple )  comptant le nombre d'impulsions prévues ( 2, 3, 4  t "on" ...etc ) .

                                                      Il y aura bien le nombre d'impulsions prévues , ...mais qui pourraient commencer par n'importe quelle valeur 60 ou autre  , car par de synchronisation possible . 

                                                      Or on veut que le cycle commence par la plus faible valeur ...pour faire du bon boulot  soudure .

                                                      Bref le cycle 10+20+30+60 , pourrait être commandé par le bouton reset , ou toute autre pin programmée en entrée ...si c'est possible , pour un seul cycle , répétable à chaque appui sur un interrupteur , reset ou autre .

                                                      Voilà je suis rentré dans des détails , pour plus de compréhension ...mais l'explication est faite .

                                                      Amicalement .

                                                      Jac .

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        4 octobre 2020 à 11:09:53

                                                        Bref, tu veux que ça lance une série d'impulsions quand on appuie sur un bouton.

                                                        Et cette série serait définie par un "tableau" indiquant leur durée, et le délai avant de lancer la suivante.

                                                        Pour faire ça bien, on s'arrange pour que l'appui sur le bouton déclenche une interruption. Dans la boucle loop(), cette interruption démarre (si ce n'est pas déjà fait), une tâche consistant à envoyer les impulsions.

                                                        Voila un exemple de tâche déclenchée par un bouton (faire cligner la led intégrée un certain nombre de fois). Il y a un délai de sécurité au départ pour que la mise en route du pullup ne déclenche pas une interruption par inadvertance (saleté de machin).

                                                        const int led_pin = LED_BUILTIN;
                                                        const int button_pin  = 2;
                                                        
                                                        const int SAFETY_DELAY = 1000;
                                                        
                                                        volatile bool button_was_pressed = false;
                                                        
                                                        void when_button_is_pressed() {
                                                          button_was_pressed = true;
                                                        }
                                                        
                                                        void setup() {
                                                          pinMode(led_pin, OUTPUT);
                                                          pinMode(button_pin, INPUT_PULLUP); 
                                                          attachInterrupt(digitalPinToInterrupt(button_pin), when_button_is_pressed, FALLING);
                                                        
                                                          // sécurité au démarrage
                                                          delay(SAFETY_DELAY);
                                                          button_was_pressed = false;
                                                          
                                                        }
                                                        
                                                        /* tache : envoyer 5 impulsions */
                                                        
                                                        void run_task() {
                                                          for (int i=0; i < 5; i++) {
                                                             digitalWrite(led_pin, HIGH);
                                                             delay(200);
                                                             digitalWrite(led_pin, LOW);
                                                             delay(200);
                                                          }
                                                        }
                                                        
                                                        void loop() {
                                                          if (button_was_pressed) {
                                                            run_task();
                                                            button_was_pressed = false;
                                                          }
                                                          
                                                        }
                                                        

                                                        Dans loop, on s'arrange pour que l'appui sur le bouton PENDANT que la tache s'effectue soit ignoré.



                                                        -
                                                        Edité par michelbillaud 4 octobre 2020 à 11:52:08

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        temporisations sérielles programmables.

                                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                        • Editeur
                                                        • Markdown