[Programmation] Code Arduino pour téléphérique avec fins de course - Page 2
Répondre à la discussion
Page 2 sur 3 PremièrePremière 2 DernièreDernière
Affichage des résultats 31 à 60 sur 70

Code Arduino pour téléphérique avec fins de course



  1. #31
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course


    ------

    Q2 est à choisir pour supporter le courant moteur, et accepter 5v pour commuter.
    Erreur sur les fin de course, schéma à jour:
    Nom : Telepherique_relais2.jpg
Affichages : 198
Taille : 93,2 Ko

    -----
    Pascal

  2. #32
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    et code avec réglage vitesse,
    compatible montage avec L298 et montage à relais:
    Code:
    /* essai telepherique 24-09-2025
    avec reglage vitesse par potentiometre
    a chaque montee ou descente
    
    broches Arduino:
    pin 6: fin de course Haut
    pin 7: fin de course Bas
    pin 8: marche avant-montée (IN1A d'un L298 ou collage relais version relais)
    pin 9: marche arriere-descente (IN2A d'un L298 ou non utilisé version relais)
    pin 10: enable moteur (ENA d'un L298 ou commande Q2 version relais)
    */
    //-----------------------------------
    #define fdcH 6 // entrée fin de cource Haut 0v actif
    #define fdcB 7 // entrée Fin de course Bas 0v actif
    #define out1 8 // sortie sens 1 moteur (avant)
    #define out2 9 // sortie sens 2 moteur (arrière)
    #define ena 10 // sortie Enable moteur (PWM) 5v actif
    int speed = 3; // vitesse acceleration, ralentissement 1=255mS 4=1sec
    // si speed est à 0, arret net moteur sur fins de course
    int pause = 3000; // temps de pause arret en mS
    int vitesse = 255; // vitesse 0 a 255
    int vitmin = 20; // vitesse min 0 a 255
    int pot = A0; // pt milieu potentiometre sur entrée A0
    //-----------------------------------
    void setup() {
      pinMode(fdcH, INPUT_PULLUP); // rappel au +5v
      pinMode(fdcB, INPUT_PULLUP);
      pinMode(out1, OUTPUT);  
      pinMode(out2, OUTPUT);
      pinMode(ena, OUTPUT);
    }
    //-----------------------------------
    void loop() { // boucle sans fin
      if (digitalRead(fdcH)) {  // si en bas ou en cours de trajet
        Readvitesse();
        Montee();
        delay(pause);  // delai arret en Haut (en mS)
      }
      Readvitesse();
      Descente();
      delay(pause);  // delai arret en Bas (en mS)
    }
    //-----------------------------------
    void Montee() {
      // montee, marche avant, sens1
      digitalWrite(out1, HIGH);  // sens1 niveau haut
      digitalWrite(out2, LOW);   // sens2 niveau bas
      Accelere();
      while(digitalRead(fdcH)); // On attend fdcH a 0
      Ralentit(); // arret progressif du moteur en Haut
    }
    //-----------------------------------
    void Descente() {
     // descente, marche arrière, sens2
      digitalWrite(out1, LOW); // sens1 niveau bas
      digitalWrite(out2, HIGH); // sens2 niveau haut
      Accelere();
      while(digitalRead(fdcB)); // On attend fdcB a 0
      Ralentit(); // arret progressif du moteur en Bas
    }
    //-----------------------------------
    void Accelere() {
      // demarrage progressif du moteur
      for (int pwm = 0; pwm <= vitesse; pwm++) {
        analogWrite(ena, pwm);
        delay(speed); 
      }
    }
    //-----------------------------------
    void Ralentit() {
    // arret progressif du moteur 
      for (int pwm = vitesse; pwm >= 0; pwm--) {
        analogWrite(ena, pwm);
        delay(speed); 
      }
    }
    //-----------------------------------
    void Readvitesse() {
      // lecture potentiometre 0 a 1023 /4
      vitesse= analogRead(pot) /4; //vitesse = 0 a 255
      if (vitesse < vitmin) { // eviter vitesse=0
        vitesse= vitmin;
      }
    }
    Pascal

  3. #33
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    toujours vérifier n fois avant de publier..
    erreur sur le brochage de Q1,
    brochage correct:
    Nom : 2N7000.png
Affichages : 207
Taille : 33,8 Ko
    Pascal

  4. #34
    Nico43240

    Re : Code Arduino pour téléphérique avec fins de course

    Merci inifiniment pour tout ce que vous faites.
    j'espère que mes petites mains seront à la hauteur de votre talent...
    Bravo1:

  5. #35
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Bonjour

    c'est un plaisir, pour un loisir.
    la partie mécanique me parait plus complexe.
    Pascal

  6. #36
    Nico43240

    Re : Code Arduino pour téléphérique avec fins de course

    Pour le courant des moteurs à ma disposition je vais les tester demain avec une alim stabilisée pour etre certains des valeurs.
    J'ai encore 2 petites questions:
    -pour le relais G2RL2-12, je ne trouve pas les mêmes référence de brochage que sur votre schéma
    -pour les diodes D1 et D2 il faut quel modèle


    Merci encore pour votre disponibilité

  7. #37
    Seb.26

    Re : Code Arduino pour téléphérique avec fins de course

    -> pour la diode, peut importe (voir diode de roue libre pour plus d'explications), par exemple une 1N4148 ou une 1N4004

    -> pour le relais, c'est un DPDT, tu peux le remplacer par 2 SPDT si tu trouves pas, l'idée c'est d'avoir ton moteur sur les COM et d'y envoyer (+ et -) ou (- et +) selon la position du relai pour inverser la polarité.

    A1 et A2 = bobine

    COM1(11) et COM2(21) = vers le moteur

    NO1, NO2, NC1, NC2 = vers les + et -

    NB: d'ailleurs avec 2 SPDT on peut mettre le moteur au GND sur les 2 broches même en cas de défaillance d'un autre élément.
    Dernière modification par Seb.26 ; 25/09/2025 à 14h50.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  8. #38
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Bonjour

    schéma à jour avec relais G2RL2-12 https://www.gotronic.fr/art-relais-o...2-12-24442.htm

    Nom : Telepherique_relais3.jpg
Affichages : 172
Taille : 55,5 Ko
    Pascal

  9. #39
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Comme je compte réaliser ce circuit, utile pour bien d'autres applications (moteur, verin, etc..)
    Voici une implantation sur plaquette à trous:
    Nom : Telepherique_relais3_comp.jpg
Affichages : 173
Taille : 83,5 Ko
    Pascal

  10. #40
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Vue 3D composants:
    Nom : Telepherique_relais3_3d.jpg
Affichages : 172
Taille : 85,5 Ko
    Pascal

  11. #41
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Vue côté pistes:
    Nom : Telepherique_relais3_Cui.jpg
Affichages : 170
Taille : 115,6 Ko

  12. #42
    mag1

    Re : Code Arduino pour téléphérique avec fins de course

    Citation Envoyé par Pascal071 Voir le message
    Comme je compte réaliser ce circuit, utile pour bien d'autres applications (moteur, verin, etc..)
    Voici une implantation sur plaquette à trous:
    Bonjour,
    Si tu veux en faire plusieurs exemplaires, autant faire un PCB JLCPCB (5 pour un prix dérisoire).
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  13. #43
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    sûr, en double face les pistes seraient plus courtes,
    avec petit connecteur pour la liaison arduino ou picaxe,
    et avec sérigraphie pour le même prix
    Pascal

  14. #44
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Bonsoir

    J'attends le relais pour me faire un proto.
    j'ai ajouté 4 pins pour liaison Arduino ou Picaxe
    et 1 strap qui peut être remplacé par une résistance 1k si utilisation d'un BC337 au lieu du 2N7000 (il faudra inverser le sens du composant).
    Nom : Telepherique_relais3_3d.jpg
Affichages : 134
Taille : 97,6 Ko
    Pascal

  15. #45
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Schéma, implantation composants et vue côté pistes:
    Repères pour Arduino Uno ou Nano
    Telepherique_relais3_sch.jpg
    Telepherique_relais3_comp.jpg
    Telepherique_relais3_Cui.jpg
    Dernière modification par Pascal071 ; 26/09/2025 à 23h46.
    Pascal

  16. #46
    Nico43240

    Re : Code Arduino pour téléphérique avec fins de course

    Bonsoir,

    j'ai fait toutes mes connexions cet après midi mais le moteur ne tourne que dans un seul sens.
    les capteurs fins de course arrêtent bien le moteur et la tempo de 3 secondes se fait bien mais le moteur recommence dans le même sens ensuite.
    savez vous d'où pourrait venir mon erreur?
    je vais reprendre le câblage demain
    Merci

  17. #47
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Bonsoir

    Le relais doit faire "clic" à la fin du ralentissement.
    tu as bien utilisé un 2N7000 (NMos), dans le bon sens ? (inverse par rapport au NPN BC547)

    Dernier code, j'ai rajouté une petite pose 50mS le temps que le relais colle ou décolle avant d'envoyer le PWM.
    code:
    Code:
    /* essai telepherique 30-09-2025
    avec reglage vitesse par potentiometre
    a chaque montee ou descente
    petite pause 50mS le temps que le relais colle ou décolle
    
    broches Arduino:
    pin 6: fin de course Haut
    pin 7: fin de course Bas
    pin 8: marche avant-montée (IN1A d'un L298 ou collage relais version relais)
    pin 9: marche arriere-descente (IN2A d'un L298 ou non utilisé version relais)
    pin 10: enable moteur (ENA d'un L298 ou commande Q2 version relais)
    */
    //-----------------------------------
    #define fdcH 6 // entrée fin de cource Haut 0v actif
    #define fdcB 7 // entrée Fin de course Bas 0v actif
    #define out1 8 // sortie sens 1 moteur (avant)
    #define out2 9 // sortie sens 2 moteur (arrière)
    #define ena 10 // sortie Enable moteur (PWM) 5v actif
    int speed = 5; // vitesse acceleration, ralentissement 1=255mS 4=1sec
    // si speed est à 0, arret net moteur des le fin de course
    int pause = 3000; // temps de pause arret en mS
    int vitesse = 255; // vitesse 0 a 255
    int vitmin = 20; // vitesse min 0 a 255
    int pot = A0; // pt milieu potentiometre sur entrée A0
    //-----------------------------------
    void setup() {
      pinMode(fdcH, INPUT_PULLUP); // rappel au +5v
      pinMode(fdcB, INPUT_PULLUP);
      pinMode(out1, OUTPUT);  
      pinMode(out2, OUTPUT);
      pinMode(ena, OUTPUT);
      Serial.begin(9600);
    }
    //-----------------------------------
    void loop() { // boucle sans fin
      if (digitalRead(fdcH)) {  // si en bas ou en cours de trajet
        Readvitesse();
        Montee();
        delay(pause);  // delai arret en Haut (en mS)
      }
      Readvitesse();
      Descente();
      delay(pause);  // delai arret en Bas (en mS)
    }
    //-----------------------------------
    void Montee() {
      // montee, marche avant, sens1
      digitalWrite(out1, HIGH);  // sens1 niveau haut
      digitalWrite(out2, LOW);   // sens2 niveau bas
      delay(50); // delai collage relais
      Accelere();
      while(digitalRead(fdcH)); // On attend fdcH a 0
      Ralentit(); // arret progressif du moteur en Haut
    }
    //-----------------------------------
    void Descente() {
     // descente, marche arrière, sens2
      digitalWrite(out1, LOW); // sens1 niveau bas
      digitalWrite(out2, HIGH); // sens2 niveau haut
      delay(50); // delai decollage relais
      Accelere();
      while(digitalRead(fdcB)); // On attend fdcB a 0
      Ralentit(); // arret progressif du moteur en Bas
    }
    //-----------------------------------
    void Accelere() {
      // demarrage progressif du moteur
      for (int pwm = 0; pwm <= vitesse; pwm++) {
        analogWrite(ena, pwm);
        delay(speed); 
        //Serial.println(pwm);
      }
    }
    //-----------------------------------
    void Ralentit() {
    // arret progressif du moteur 
      for (int pwm = vitesse; pwm >= 0; pwm--) {
        analogWrite(ena, pwm);
        delay(speed); 
        //Serial.println(pwm);
      }
    }
    //-----------------------------------
    void Readvitesse() {
      // lecture potentiometre 0 a 1023 /4
      vitesse= analogRead(pot) /4; //vitesse = 0 a 255
      if (vitesse < vitmin) { // eviter vitesse=0
        vitesse= vitmin;
      }
    }
    J'ai fait le proto, fonctionne impeccable..
    * j'ai utilisé un BC337 et une résistance (pour économiser mes 2N7000)

    Nom : DSC_3672.JPG
Affichages : 111
Taille : 184,4 Ko
    Dernière modification par Pascal071 ; 05/10/2025 à 00h16.
    Pascal

  18. #48
    Nico43240

    Re : Code Arduino pour téléphérique avec fins de course

    Merci beaucoup pour votre aide.
    Cela fonctionne très bien avec le code sans la petite pause.
    Je pense avoir inversé une diode lors du 1er montage.

    Reste plus qu'à coupler cela à la mécanique...

  19. #49
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    bonjour

    ok le potentiomètre fait bien varier la vitesse?

    concernant le fin de course haut, il doit être maintenu uniquement pour le cas du reset, si la cabine est en haut, fin de course déjà dépassé lors du ralentissement.
    dans ce cas unique, ça part vers le haut et CRAC..
    ou alors mettre un 2e fdcH extrême de sécurité.

    Si ce cas n'arrive jamais (arrêt général pas en haut), le fdcH peut être fugitif, tu as dû le voir aux essais.
    le fdcB n'a pas cet effet car le programme cherche à partir vers le haut en premier (sauf si fdcH est actif)

    pour la durée accélération et ralentissement, tu peux jouer sur le paramètre
    Code:
    int speed = 3; // vitesse acceleration, ralentissement 1=255mS 4=1sec
    // si speed est à 0, arret net moteur sur fins de course
    cordialement
    Pascal

  20. #50
    Nico43240

    Re : Code Arduino pour téléphérique avec fins de course

    oui le potentiometre fait bien varier la vitesse. J'ai mis un 10kohms.
    Lorsqu'il est réglé au plus bas, est ce identique à ne pas utiliser de potentiometre ou cela ralentit un peu le moteur déjà.
    La vitesse de mon moteur n'est pas très élevée et je ne sais pas si j'en ai vraiment besoin

    Merci pour les infos sur les fins de course. Je ferai des tests quand la partie méca sera montée.

  21. #51
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    pour garder la vitesse max sans potentiomètre, il suffit de relier l'entrée A0 au +5v arduino
    dans ce cas, le moteur est alimenté en 12v.
    mais autant le garder ou mettre un ajustable au cas ou tu changes de moteur.
    Dernière modification par Pascal071 ; 06/10/2025 à 14h14.
    Pascal

  22. #52
    Nico43240

    Re : Code Arduino pour téléphérique avec fins de course

    Bonsoir
    Hier tou fonctionnait et la je viens de retrancher et j'ai l'impression qu'il ne prend plus le programme en compte.
    Quand l'alimentation 12v est coupée, l'arduino garde-t-il en mémoire le code?
    Faut il maintenir une certaine alim?
    Merci

  23. #53
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Bonsoir

    L'Arduino ne perd pas son programme une fois hors tension.
    il y a bien 1 Led jaune et une verte allumées sur l'arduino uno ?
    le moteur ne démarre pas après la mise sous tension?

    vérifies bien la connectique, et les tensions ..
    Pascal

  24. #54
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    re
    nouveau code, pour visualisation / dépannage:
    allume la Led jaune sur la carte arduino lorsque le moteur est commandé:
    Code:
    /* essai telepherique 06-10-2025
    avec reglage vitesse par potentiometre
    a chaque montee ou descente
    petite pause 50mS le temps que le relais colle ou décolle
    allumage de la Led Arduino quand le moteur tourne
    
    broches Arduino:
    pin 6: fin de course Haut
    pin 7: fin de course Bas
    pin 8: marche avant-montée (IN1A d'un L298 ou collage relais version relais)
    pin 9: marche arriere-descente (IN2A d'un L298 ou non utilisé version relais)
    pin 10: enable moteur (ENA d'un L298 ou commande Q2 PWM version relais)
    pin A0: pt milieu potentiometre reglage vitesse (0 a 5v)
    */
    //-----------------------------------
    #define fdcH 6 // entrée fin de cource Haut 0v actif
    #define fdcB 7 // entrée Fin de course Bas 0v actif
    #define out1 8 // sortie sens 1 moteur (avant)
    #define out2 9 // sortie sens 2 moteur (arrière)
    #define ena 10 // sortie Enable moteur (PWM) 5v actif
    int speed = 4; // vitesse acceleration, ralentissement 1=255mS 4=1sec
    // si speed est à 0, arret net moteur des le fin de course
    int pause = 3000; // temps de pause arret en mS
    int vitesse = 255; // vitesse 0 a 255
    int vitmin = 20; // vitesse min 0 a 255
    int pot = A0; // pt milieu potentiometre sur entrée A0
    //-----------------------------------
    void setup() {
      pinMode(fdcH, INPUT_PULLUP); // rappel au +5v
      pinMode(fdcB, INPUT_PULLUP);
      pinMode(out1, OUTPUT);  
      pinMode(out2, OUTPUT);
      pinMode(ena, OUTPUT);
      pinMode(LED_BUILTIN, OUTPUT); // Led jaune sur la carte Arduino 
    }
    //-----------------------------------
    void loop() { // boucle sans fin
      if (digitalRead(fdcH)) {  // si en bas ou en cours de trajet
        digitalWrite(LED_BUILTIN, HIGH); // allumer Led
        Readvitesse();
        Montee();
        digitalWrite(LED_BUILTIN, LOW); // eteindre Led
        delay(pause);  // delai arret en Haut (en mS)
      }
      digitalWrite(LED_BUILTIN, HIGH); // allumer Led
      Readvitesse();
      Descente();
      digitalWrite(LED_BUILTIN, LOW); // eteindre Led
      delay(pause);  // delai arret en Bas (en mS)
    }
    //-----------------------------------
    void Montee() {
      // montee, marche avant, sens1
      digitalWrite(out1, HIGH);  // sens1 niveau haut
      digitalWrite(out2, LOW);   // sens2 niveau bas
      delay(50); // delai collage relais
      Accelere();
      while(digitalRead(fdcH)); // On attend fdcH a 0
      Ralentit(); // arret progressif du moteur en Haut
    }
    //-----------------------------------
    void Descente() {
     // descente, marche arrière, sens2
      digitalWrite(out1, LOW); // sens1 niveau bas
      digitalWrite(out2, HIGH); // sens2 niveau haut
      delay(50); // delai collage relais
      Accelere();
      while(digitalRead(fdcB)); // On attend fdcB a 0
      Ralentit(); // arret progressif du moteur en Bas
    }
    //-----------------------------------
    void Accelere() {
      // demarrage progressif du moteur
      for (int pwm = 0; pwm <= vitesse; pwm++) {
        analogWrite(ena, pwm);
        delay(speed); 
      }
    }
    //-----------------------------------
    void Ralentit() {
    // arret progressif du moteur 
      for (int pwm = vitesse; pwm >= 0; pwm--) {
        analogWrite(ena, pwm);
        delay(speed); 
        //Serial.println(pwm);
      }
    }
    //-----------------------------------
    void Readvitesse() {
      // lecture potentiometre 0 a 1023 /4
      vitesse= analogRead(pot) /4; //vitesse = 0 a 255
      if (vitesse < vitmin) { // eviter vitesse=0
        vitesse= vitmin;
      }
    }
    Pascal

  25. #55
    Nico43240

    Re : Code Arduino pour téléphérique avec fins de course

    Bonjour, j'ai regardé ce matin, je n'ai pas les memes diodes, il s'agit d'une carte compatible et elle l'a pas les memes diodes que la votre.
    J'ai refait un test en la reliant au PC avec le cordon USB et cela fonctionne très bien.
    Faut il une alim 5V permanente via l'USB?
    Merci

  26. #56
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Bonjour

    Sur la carte à relais, tu as bien amené le +12v jusqu'à l'Arduino (broche Vin) ?

  27. #57
    Nico43240

    Re : Code Arduino pour téléphérique avec fins de course

    Non en fait j'ai branché mon alim 12V via le connecteur sur la carte Arduino et j'ai récupéré le Vin pour aller sur la carte à relais

  28. #58
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    La broche Vin de l'arduino n'est pas très puissante pour alimenter le moteur, la piste entre le connecteur jack et la broche Vin est fragile!
    il faut amener le 12v directement sur la carte à relais, et amener 12v et 0v vers les broches arduino
    tu as bien une led allumée lorsque le 12v est branché ?
    voir image #47
    Dernière modification par Pascal071 ; 07/10/2025 à 12h48.

  29. #59
    Nico43240

    Re : Code Arduino pour téléphérique avec fins de course

    Bonjour,

    j'ai fait la modif d'alimentation hier et cela fonction qu'avec une alim 5V sur le connecteur USB.
    Est ce que cela peut venir de ma carte qui est un bas de gamme de TEMU?

  30. #60
    Pascal071

    Re : Code Arduino pour téléphérique avec fins de course

    Bonjour

    lorsque tu branches le 12v, une Led s'allume sur l'Arduino ?
    tu as bien amené le Gnd ?
    Pascal

Page 2 sur 3 PremièrePremière 2 DernièreDernière

Discussions similaires

  1. [Programmation] Code HTML avec un ESP8266 - rafraichir une page Web - Arduino
    Par invitec54b6ea5 dans le forum Électronique
    Réponses: 0
    Dernier message: 21/05/2018, 15h53
  2. un code simple sur arduino avec un capteur d'inclinaison (MMA8452Q)
    Par invited0fdf23d dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 22/03/2016, 19h54
  3. code ascii en caractere avec arduino
    Par inviteefc7c139 dans le forum Électronique
    Réponses: 2
    Dernier message: 24/08/2015, 19h28
  4. Arduino: code pour un moteur DC !
    Par invitebbc909eb dans le forum Électronique
    Réponses: 12
    Dernier message: 04/08/2014, 22h39
  5. code barrière IR + écran LCD avec arduino
    Par invite5ce17c95 dans le forum Électronique
    Réponses: 9
    Dernier message: 14/03/2014, 08h17
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...