Partage
  • Partager sur Facebook
  • Partager sur Twitter

Démarrage progressive Arduino

    18 février 2018 à 12:31:10

    Salut tout le monde j'ai besoin de votre aide.

    j'ai bidouiller un petite programme pour faire marcher un portail avec Arduino mais une vrais usine a gaz avec des relais etc 

      le problème c'est que le démarrage des moteurs se fais immédiate "donc des gros coût au démarrage "

    je voulais remplacer les relais par des transistor et changer la programmation pour un démarrage progressive.

    j'ai déjà essayer des tuto et je n'arrive pas a faire marcher.

    Quelqu’un ici puerai m'aider ??

    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2018 à 14:04:07

      kokas125 a écrit:

      j'ai déjà essayer des tuto et je n'arrive pas a faire marcher.

      Il faut d'abord avoir les interfaces de puissance adaptés avant de parler de programmation.

      • Quels interfaces ont utilisé ?
      • Caractéristiques des moteurs : puissance, tension de service, etc. ?


      • Partager sur Facebook
      • Partager sur Twitter
        18 février 2018 à 15:56:30

        le moteur c'est une petite recuperation que j'ai fais un moteur 12v DC 150W.

        commander par une carte  Arduino uno et des relais que je voulais échanger par des transistor si possible

        avec 1 BP ouverture, 1 BP fermeture 1 AU qui me permet d’arrêter le portail au moment que je veux.

        voici la parti do code que je voulais échanger pour faire mon démarrage progressive

        if (digitalRead(OP)==APPUI) { // si le BP est appuyé
           
           digitalWrite(FL,HIGH); // en allume un spot
           delay (2000); // 2 secoundes plus tarde on ouvre le portaille
           digitalWrite(OPE,HIGH); //ouverture portaille
           delay (8000); // attend 8 secondes 
           digitalWrite (OPE,LOW); // en arrete le portaile
           delay (1000); // 1 sec apres en eteins le spot
           digitalWrite (FL,LOW);



        • Partager sur Facebook
        • Partager sur Twitter
          18 février 2018 à 16:44:30

          La puissance est très importante, et il va falloir commencer par réaliser une carte d'interface de puissance, comme par exemple :

          la sortie de l'Arduino devra être une sortie capable de faire de la PWM, et on utilisera dans le programme analogWrite(Pin,valeur) avec une valeur qu'il faudra faire évoluer dans le temps pour faire une rampe.

          • Partager sur Facebook
          • Partager sur Twitter
            18 février 2018 à 16:52:15

            Le moteur doit pouvoir tourner dans les 2 sens pour ouvrir et fermer le portail, vu qu'il y a "des" relais, non ?
            • Partager sur Facebook
            • Partager sur Twitter
              18 février 2018 à 17:36:21

              alexisdm a écrit:

              Le moteur doit pouvoir tourner dans les 2 sens pour ouvrir et fermer le portail, vu qu'il y a "des" relais, non ?

              oui pour la simulation j'ai fais avec 2 relais

              vois la se que j’ai fais

              mas bien sur c'est une simple usine a gaz



              • Partager sur Facebook
              • Partager sur Twitter
                19 février 2018 à 12:59:29

                Tu as besoin d'un pont en H à base de mosfets, ça existe en tout fait pour une dizaine d'euros.

                Tu peux aussi tricher un peu et gérer la direction avec les relais et utiliser le schéma de clgbzh pour gérer la vitesse.

                Par contre tes relais sont mal placés, puisqu'ils permettraient de faire un court-circuit avec une simple erreur dans ton code. Généralement, on les place comme cela:

                • Partager sur Facebook
                • Partager sur Twitter
                  3 mars 2018 à 23:54:04

                  Au niveau do câblage je ne devrais pas avoir de problème parce que mais relais ne peur an être activer une fois que mon contacte fin de course et fermer mais je vais quand même changer par le t’en schéma c'est quand même mieux.

                  En relation au pont en H c'est super suis la, merci beaucoup

                  maintenant il faut que je arriver a faire mon démarrage progressive  ;)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 octobre 2018 à 18:52:08

                    Salut tout le monde

                    je suis a novo ici parce-que je n arrive pas a créer une entrée dans l Arduino pour arrêté ma séquence d ouverture de portail

                     quand j appuis sur ouverture ca m ouvre bien le portail, après  j'ai créer une autre  entrée qui devrais m arrête le portail  mais ca ne marche pas

                    quelqu’un peux m'aide ?

                    mon code d ouverture de portail

                    void loop(){
                     if (digitalRead(OP)==APPUI) { // si le BP est appuyé
                       
                       
                       digitalWrite(OPE,LOW); 
                       analogWrite(ENA, 25);
                       delay (3000); 
                       analogWrite(ENA, 250);
                       delay (4000);
                       analogWrite(ENA, 20);
                       delay (4000); 
                       analogWrite(ENA, 0);
                     
                     }// FIN OP
                    
                    // BP ARRETE D URGENCE
                    
                    if (digitalRead(AU)==APPUI) { // si le BP est appuyé
                       
                       
                       digitalWrite(OPE,HIGH); //ARRET PORTAIL
                    
                    } // FIN BP AU
                    
                    
                    } FIN loop
                    
                    



                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 octobre 2018 à 10:43:35

                      Les appels à delay() sont bloquants, donc tu ne peux pas lire le bouton tant qu'ils sont actifs.

                      Il faut plutôt utiliser millis(): https://eskimon.fr/tuto-arduino-202-introduire-le-temps#fonction-millis 

                      -
                      Edité par alexisdm 16 octobre 2018 à 10:43:58

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 novembre 2018 à 17:33:42

                        Salut tout le monde après la repense de alexisdm j'ai beau essayer de faire marcher ma prog avec millis mais je n arrive pas a le faire marcher.

                        Quelqu’un peu m aider a faire l échange entre le delay et les millis.

                        merci d avence

                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 novembre 2018 à 15:06:04

                          Tu dois "simplement" ajouter une variable globale qui va indiquer à quelle étape tu te trouves.

                          int etape;
                          unsigned int debut_etape;
                          
                          void setup()
                          {
                              // ...
                              etape = 0;
                          }
                          
                          void loop()
                          {
                              switch (etape)
                              {
                              case 0:
                                  if (digitalRead(OP) == APPUI)
                                  { // si le BP est appuyé
                                      digitalWrite(OPE, LOW);
                                      analogWrite(ENA, 25);
                                      etape = 1;
                                      // on enregistre le temps de démarrage
                                      debut_etape = millis();
                                  }
                                  break;
                              case 1:
                                  if (millis() - debut_etape > 3000)
                                  {
                                      analogWrite(ENA, 250);
                                      debut_etape = millis();
                                      etape = 2;
                                  }
                                  break;
                              case 2:
                                  if (millis() - debut_etape > 4000)
                                  {
                                      analogWrite(ENA, 20);
                                      debut_etape = millis();
                                      etape = 3;
                                  }
                                  break;
                              case 3:
                                  if (millis() - debut_etape > 4000)
                                  {
                                      analogWrite(ENA, 0);
                                      etape = 0;
                                  }
                                  break;
                              }
                          
                              // BP ARRET D URGENCE
                          
                              if (digitalRead(AU) == APPUI)
                              { // si le BP est appuyé
                          
                                  digitalWrite(OPE, HIGH); //ARRET PORTAIL
                                  etape = 0; // réinitialise l'étape
                              } // FIN BP AU
                          } // FIN loop

                          Comme le code dans les switch/case est très répétitif, on peut aussi utiliser un tableau pour stocker les temps et les valeurs du PWM pour chaque étape.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 novembre 2018 à 16:23:01

                            merci beaucoup pour t’en aide @alexisdm 

                            jete très loin d'arriver çà tout changer quand  même.

                            je reste quand même un débutant sur Arduino c'est quelque chose que j aimerais connaitre mieux mais je crois pas avoir les bagages pour aller aussi loin ;)

                            Encore une fois merci bien ;)

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Démarrage progressive Arduino

                            × 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