Page 4 sur 13

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 01 mai 2021, 08:42
par likiki
Très peu de fonctionnement, mais le poids, lui, est permanent et peut contribuer a une déformation des roulements a court terme.

:kingmoi:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 01 mai 2021, 08:44
par Georges de Villette
.
Mais ... Une idée me vient à l'esprit ....
Et si on était parti avec deux moteurs et deux tiges filetées ???
Non , c'est bête ce que je dis !!!!

:hhhaaaa: :hhhaaaa: :hhhaaaa: :hhhaaaa:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 01 mai 2021, 08:48
par likiki
Non, c'est pas idiot, mais si un moteur bloque, c'est la cata.

:mdr3:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 01 mai 2021, 10:51
par herwat
Il y a peu de chance que ça arrive et de toute façon tu sera toujours présent au moment du fonctionnement .

Il suffit de prévoir un bouton d'arrêt d'urgence ! :D

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 01 mai 2021, 18:36
par likiki
Petit avancement.


Fonctionnement avec Moteur Pas à pas,
3 vitesses,
3 niveaux (provisoirement pour la mise au point),

3 boutons (niveau 0, -1 et -2),
1 fin de course (position maxi haute du plateau, niveau de référence),
1 interrupteur (pour le passage en mode mise a quai manuelle),
2 boutons (pour la mise a quai manuel).

Principe de fonctionnement :

A la mise sous tension, recherche du fin de course haut si celui-ci n'est pas actionné.

Attente d'un appel (sauf si l'interrupteur est sur la position manuelle).

Direction le niveau demandé.

Si mode manuelle enclenché, ont monte ou ont descend le plateau cran par cran.


Voici le programme :

Code : Tout sélectionner


// ***************************************************
// ****** Ascenseur avec un moteur pas à pas   *******
// ******                                      *******
// ****** Programme V 1.2                      *******
// ****** Du 01/05/2021                        *******
// ****** Par C.ARFEL                          *******
// ******                                      *******
// ****** Version 3 vitesses                   *******
// ****** Mise a quai manuelle                 *******
// ***************************************************
//

#include <Stepper.h>                             // appel de la bibliothèque

#define STEPS 200 // nombre pas moteur par tour

Stepper stepper(STEPS, 8, 9, 10, 11); // création de l'objet moteur

const int nombre_pas=2100;   // nombre de pas du moteur
const int buttonPin2 = 2;     // borne du FCH
const int buttonPin3 = 3;     // borne du 1er sous sol
const int buttonPin4 = 4;     // borne du 2eme sous sol 
const int buttonPin5 = 5;     // Borne du RDC
const int buttonPin6 = 6;     // Borne du I + 1
const int buttonPin12 = 12;   // Borne du I - 1
const int buttonPin7 = 7;   // Borne de l'inter incrémentation


int Pv1 = 20;
int Pv2 = 40;
int Gv = 0;
int Deplace = 0;       // variable de déplacement
int plateau = 0;
int sens = 1;          // sens de rotation moteur par défaut
int FCH = 0;           // variable Fin de Course Haut
int SS0 = 0;
int SS1 = 0;
int SS2 = 0;
int BPMO = 0;
int BPDE = 0;
int Inter = 0;
int Pos1SS = -2000;
int Pos2SS = -3000;





void setup()   
{

Serial.begin(9600);

pinMode(buttonPin2, INPUT); // initialisation de la borne du FCH en entrée
pinMode(buttonPin3, INPUT); // initialisation du bouton 1er sous sol
pinMode(buttonPin4, INPUT); // initialisation du bouton 2éme sous sol
pinMode(buttonPin5, INPUT); // initialisation du bouton RC
pinMode(buttonPin6, INPUT); // Initialisation du bouton d'incrémentation +1
pinMode(buttonPin12, INPUT); // Initialisation du bouton d'incrémentation -1
pinMode(buttonPin7, INPUT); // Initialisation du bouton d'incrémentation Inter


stepper.setSpeed(150); // vitesse du moteur en tours par minute


}

//
//

void Initialisation()    // initialisation du plateau  Recherche du FCH

{

if (sens >=1) {

if (FCH == LOW) {     
    sens = 1;
  } 
  else {
   
    sens = 0;
    
  }

{
  stepper.setSpeed(90);
  stepper.step(sens);
}
}
}




void Bouge(){  // version 3 vitesses

  Pv1 = Deplace/20 ;        // distance de la Pv1
  Pv2 = Pv1 ;               // distance de la Pv2
  Gv = (Deplace/10) * 8 ;   // Distance pour la GV

  
  stepper.setSpeed(40);
  stepper.step(Pv1);

  stepper.setSpeed(80);
  stepper.step(Pv2);


  stepper.setSpeed(150);
  stepper.step(Gv);

  stepper.setSpeed(80);
  stepper.step(Pv2);
  
  stepper.setSpeed(40);
  stepper.step(Pv1);
  
}


void Apprentissage(){

if (BPMO == HIGH && FCH == LOW){

  stepper.setSpeed(40);
  stepper.step(1);
  delay(200);
}

if (BPDE == HIGH){

  stepper.setSpeed(40);
  stepper.step(-1);
  delay(200);
}

}


//
//

void loop()

{

FCH = digitalRead(buttonPin2);  // lecture de la valeur du FCH
SS1 = digitalRead(buttonPin3);  // lecture de la valeur du bouton 1ss
SS2 = digitalRead(buttonPin4);  // lecture de la valeur du bouton 2ss
SS0 = digitalRead(buttonPin5);  // lecture de la valeur du bouton RC
BPMO = digitalRead(buttonPin6); // lecture de la valeur du bouton I +1
BPDE = digitalRead(buttonPin12); // lecture de la valeur du bouton I -1
Inter = digitalRead(buttonPin7); // lectrue de la valeur du bouton Inter


Initialisation();  // Vas chercher le fin de course haut si le plateau est a un étage intermédiaire.

if (Inter == HIGH) { // Si basculement de l'interuteur direction Apprentissage
  Apprentissage();
}


if (SS1 == HIGH && plateau == 0 && Inter == LOW) { 
    Deplace = plateau + Pos1SS;  
    Bouge();
    plateau = Deplace;

  } 
 
if (SS1 == HIGH && plateau == Pos2SS && Inter == LOW) { 

    Deplace = (-(Pos2SS) + (Pos1SS)); 
 
    Bouge();
    plateau = plateau + Deplace;
       
  } 

if (SS2 == HIGH && plateau == 0 && Inter == LOW) { 
    Deplace = plateau + Pos2SS;  
    Bouge();
    plateau = Deplace;

  } 
 
if (SS2 == HIGH && plateau == Pos1SS && Inter == LOW) { 
    Deplace = (Pos2SS - Pos1SS);  
    Bouge();
    plateau = plateau + Deplace;
    
  } 


if (SS0 == HIGH && Inter == LOW) { 

   Deplace = (-plateau);
   Bouge();
   plateau = 0; 
   
  }




}


:a_suivre:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 01 mai 2021, 19:26
par herwat
Hmmmm . . . . Intéressant , ton programme ! je sens que je vais apprendre des choses . :cooooool:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 02 mai 2021, 17:24
par likiki
Petites avancés du jour.


Mise en place d'un afficheur lcd 16 caractères sur 2 lignes.
Mise en place de tout les niveaux (RC + 5 sous sol).

Code : Tout sélectionner


// ***************************************************
// ****** Ascenseur avec un moteur pas à pas   *******
// ******                                      *******
// ****** Programme V 1.3                      *******
// ****** Du 01/05/2021                        *******
// ****** Par C.ARFEL                          *******
// ******                                      *******
// ****** Carte MEGA 2560                      *******
// ******                                      *******
// ****** Version 3 vitesses                   *******
// ****** Mise a quai manuelle                 *******
// ****** Afficheur lcd 16 x 2                 *******
// ****** RC + 5 sous sol                      *******
// ******                                      *******
// ***************************************************
//

#include <Stepper.h>                             // appel de la bibliothèque

#include "LiquidCrystal.h" // Ajout de la librairie pour afficheur lcd

#define STEPS 200 // nombre pas moteur par tour


LiquidCrystal lcd(7,6,5,4,3,2); // déclaration des bornes du lcd

Stepper stepper(STEPS, 8, 9, 10, 11); // création de l'objet moteur

const int nombre_pas=2100;   // nombre de pas du moteur
const int buttonPin30 = 30;     // borne du FCH
const int buttonPin32 = 32;     // Borne du RDC
const int buttonPin34 = 34;     // borne du 1er sous sol
const int buttonPin36 = 36;     // borne du 2eme sous sol 
const int buttonPin38 = 38;     // borne du 3ème sous sol
const int buttonPin40 = 40;     // borne du 4ème sous sol
const int buttonPin42 = 42;     // borne du 5ème sous sol

const int buttonPin31 = 31;   // Borne de l'inter incrémentation
const int buttonPin33 = 33;     // Borne du I + 1
const int buttonPin35 = 35;   // Borne du I - 1



int Pv1 = 20;
int Pv2 = 40;
int Gv = 0;
int Deplace = 0;         // variable de déplacement
int plateau = 0;         // variable pour la position du plateau
int Etage = 0;           // variable contenant l'étage du plateau
int sens = 1;            // sens de rotation moteur par défaut
int FCH = 0;             // variable Fin de Course Haut
int SS0 = 0;             // variable bouton RC
int SS1 = 0;             // variable bouton 1er sous sol
int SS2 = 0;             // variable bouton 2ème sous sol
int SS3 = 0;             // variable bouton 3ème sous sol
int SS4 = 0;             // variable bouton 4ème sous sol
int SS5 = 0;             // variable bouton 5ème sous sol
int BPMO = 0;            // variable bouton monté
int BPDE = 0;            // variable bouton descente
int Inter = 0;           // variable bouton auto / manuel
int Pos1SS = -2000;      // Crans moteur pour la position plateau 1er sous sol
int Pos2SS = -3000;      // Crans moteur pour la position plateau 2ème sous sol
int Pos3SS = -4000;      // Crans moteur pour la position plateau 3ème sous sol
int Pos4SS = -5000;      // Crans moteur pour la position plateau 4ème sous sol
int Pos5SS = -6000;      // Crans moteur pour la position plateau 5ème sous sol




void setup()   
{

Serial.begin(9600);

lcd.begin(16,2); // Déclaraton du type d'afficheur 16 cracteres sur 2 lignes

lcd.print("*** Bonjour ***"); // Affichage sur le lcd 
lcd.setCursor (0,1);  // passe a la ligne suivante
lcd.print ("*Initialisation*"); // affichage sur le lcd

pinMode(buttonPin30, INPUT); // initialisation de la borne du FCH en entrée
pinMode(buttonPin32, INPUT); // initialisation du bouton RC
pinMode(buttonPin34, INPUT); // initialisation du bouton 1er sous sol
pinMode(buttonPin36, INPUT); // initialisation du bouton 2éme sous sol
pinMode(buttonPin38, INPUT); // initialisation du bouton 3ème sous sol
pinMode(buttonPin40, INPUT); // initialisation du bouton 4ème sous sol
pinMode(buttonPin42, INPUT); // initialisation du bouton 5éme sous sol

pinMode(buttonPin31, INPUT); // Initialisation du bouton d'incrémentation Inter
pinMode(buttonPin33, INPUT); // Initialisation du bouton d'incrémentation +1
pinMode(buttonPin35, INPUT); // Initialisation du bouton d'incrémentation -1



stepper.setSpeed(150); // vitesse du moteur en tours par minute


}

//
//--------------------------- Initialisation ---------------------------------
//
void Initialisation()    // Module initialisation du plateau  Recherche du FCH

{

// lcd.setCursor (0,1);
// lcd.print ("Initialisation");

if (sens >=1) {

if (FCH == LOW) {     
    sens = 1;
  } 
  else {
   
    sens = 0;

    lcd.clear (); // Efface l'ecran
    delay (100);
    lcd.setCursor (0,0);
    lcd.print ("   *** RC ***");
    delay(10);
    lcd.setCursor(0,1); // place le curseur ligne suivante
    lcd.print ("** En attente **");
    delay (10);
    
  }

{
  stepper.setSpeed(90);
  stepper.step(sens);
}
}
}


//
//--------------------------- Commande moteur ---------------------------------
//

void Bouge(){               // Module commande moteur version 3 vitesses

  Pv1 = Deplace/20 ;        // distance de la Pv1
  Pv2 = Pv1 ;               // distance de la Pv2
  Gv = (Deplace/10) * 8 ;   // Distance pour la GV

    lcd.clear (); // Efface l'ecran
    delay (100);
    lcd.setCursor (0,0);
    lcd.print ("** Plateforme **");
    delay(10);
    lcd.setCursor(0,1); // place le curseur ligne suivante
    lcd.print ("* En mouvement *");
    delay (10);


  stepper.setSpeed(40);       // Acceleration Vitesse 1
  stepper.step(Pv1);

  stepper.setSpeed(80);       // Acceleration Vitesse 2
  stepper.step(Pv2);


  stepper.setSpeed(150);      // Passage en vitesse Maximum
  stepper.step(Gv);

  stepper.setSpeed(80);       // Ralentissement en Vitesse 2
  stepper.step(Pv2);
  
  stepper.setSpeed(40);       // Ralentissement en Vitesse 1
  stepper.step(Pv1);

    lcd.clear ();             // Efface l'ecran
    delay (100);
    lcd.setCursor (0,0);
    lcd.print ("** etage  ");
    lcd.println (Etage);
    lcd.println (" **");
    delay(10);
    lcd.setCursor(0,1);        // place le curseur ligne suivante
    lcd.print ("** En attente **");
    delay (10);  
  
}



//
//--------------------------- Mise a quai manuel ---------------------------------
//


void Apprentissage(){           // Module apprentissage

if (BPMO == HIGH && FCH == LOW){

  stepper.setSpeed(40);
  stepper.step(1);
  delay(200);
}

if (BPDE == HIGH){

  stepper.setSpeed(40);
  stepper.step(-1);
  delay(200);
}

}


//
//--------------------------- Boucle principal ---------------------------------
//

void loop()

{

FCH = digitalRead(buttonPin30);  // lecture de la valeur du FCH

SS0 = digitalRead(buttonPin32);  // lecture de la valeur du bouton RC
SS1 = digitalRead(buttonPin34);  // lecture de la valeur du bouton 1ss
SS2 = digitalRead(buttonPin36);  // lecture de la valeur du bouton 2ss
SS3 = digitalRead(buttonPin38);  // lecture de la valeur du bouton 3ss
SS4 = digitalRead(buttonPin40);  // lecture de la valeur du bouton 4ss
SS5 = digitalRead(buttonPin42);  // lecture de la valeur du bouton 5ss


Inter = digitalRead(buttonPin31); // lectrue de la valeur du bouton Inter
BPMO = digitalRead(buttonPin33); // lecture de la valeur du bouton I +1
BPDE = digitalRead(buttonPin35); // lecture de la valeur du bouton I -1


Initialisation();                // Vas chercher le fin de course haut si le plateau est a un étage intermédiaire.

if (Inter == HIGH) {             // Si basculement de l'interuteur alors direction Apprentissage
  Apprentissage();               // Vers le module Apprentissage
}



//
//  -------------------- Appel au RDC -------------------------------------------------
//
if (SS0 == HIGH && Inter == LOW) { 

   Deplace = (-plateau);
   Etage = 0;
   Bouge();
   plateau = 0; 
   
  }



//
// ------------------ Appel au 1er sous sol -----------------------
//

if (SS1 == HIGH && plateau == 0 && Inter == LOW) {   // Appel au 1er sous sol
    Deplace = plateau + Pos1SS;
    Etage = (-1); 
    Bouge();
    plateau = Deplace;
    

  } 
 
if (SS1 == HIGH && plateau == Pos2SS && Inter == LOW) { 

    Deplace = (-(Pos2SS) + (Pos1SS)); 
    Etage = (-1);
    Bouge();
    plateau = plateau + Deplace;
    
       
  } 


  if (SS1 == HIGH && plateau == Pos3SS && Inter == LOW) { 
    Deplace = (-(Pos3SS) + (Pos1SS));
    Etage = (-1); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS1 == HIGH && plateau == Pos4SS && Inter == LOW) { 
    Deplace = (-(Pos4SS) + (Pos1SS)); 
    Etage = (-1); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS1 == HIGH && plateau == Pos5SS && Inter == LOW) { 
    Deplace = (-(Pos5SS) + (Pos1SS));
    Etage = (-1); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 





//
// ------------------ Appel au 2ème sous sol -----------------------
//

if (SS2 == HIGH && plateau == 0 && Inter == LOW) { 
    Deplace = plateau + Pos2SS; 
    Etage = (-2); 
    Bouge();
    plateau = Deplace;
     

  } 
 
if (SS2 == HIGH && plateau == Pos1SS && Inter == LOW) { 
    Deplace = (Pos2SS - Pos1SS); 
    Etage = (-2); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS2 == HIGH && plateau == Pos3SS && Inter == LOW) { 
    Deplace = (-(Pos3SS) + (Pos2SS));
    Etage = (-2); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS2 == HIGH && plateau == Pos4SS && Inter == LOW) { 
    Deplace = (-(Pos4SS) + (Pos2SS)); 
    Etage = (-2); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS2 == HIGH && plateau == Pos5SS && Inter == LOW) { 
    Deplace = (-(Pos5SS) + (Pos2SS));
    Etage = (-2); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 

//
// ------------------ Appel au 3ème sous sol -----------------------
//


if (SS3 == HIGH && plateau == 0 && Inter == LOW) { 
    Deplace = plateau + Pos3SS; 
    Etage = (-3); 
    Bouge();
    plateau = Deplace;
     

  } 
 
if (SS3 == HIGH && plateau == Pos1SS && Inter == LOW) { 
    Deplace = (Pos3SS - Pos1SS); 
    Etage = (-3); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS3 == HIGH && plateau == Pos2SS && Inter == LOW) { 
    Deplace = (Pos3SS - Pos2SS);
    Etage = (-3); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS3 == HIGH && plateau == Pos4SS && Inter == LOW) { 
    Deplace = (-(Pos4SS) + (Pos3SS)); 
    Etage = (-3); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS3 == HIGH && plateau == Pos5SS && Inter == LOW) { 
    Deplace = (-(Pos5SS) + (Pos3SS));
    Etage = (-3); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  }  

//
// ------------------ Appel au 4ème sous sol -----------------------
//

if (SS4 == HIGH && plateau == 0 && Inter == LOW) { 
    Deplace = plateau + Pos4SS; 
    Etage = (-4); 
    Bouge();
    plateau = Deplace;
     

  } 
 
if (SS4 == HIGH && plateau == Pos1SS && Inter == LOW) { 
    Deplace = (Pos4SS - Pos1SS); 
    Etage = (-4); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS4 == HIGH && plateau == Pos2SS && Inter == LOW) { 
    Deplace = (Pos4SS - Pos2SS); 
    Etage = (-4); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS4 == HIGH && plateau == Pos3SS && Inter == LOW) { 
    Deplace = (Pos4SS - Pos3SS); 
    Etage = (-4); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS4 == HIGH && plateau == Pos5SS && Inter == LOW) { 
    Deplace = (-(Pos5SS) + (Pos4SS)); 
    Etage = (-4); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 



//
// ------------------ Appel au 5ème sous sol -----------------------
//

if (SS5 == HIGH && plateau == 0 && Inter == LOW) { 
    Deplace = plateau + Pos5SS; 
    Etage = (-5); 
    Bouge();
    plateau = Deplace;
     

  } 
 
if (SS5 == HIGH && plateau == Pos1SS && Inter == LOW) { 
    Deplace = (Pos5SS - Pos1SS); 
    Etage = (-5); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS5 == HIGH && plateau == Pos2SS && Inter == LOW) { 
    Deplace = (Pos5SS - Pos2SS); 
    Etage = (-5); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS5 == HIGH && plateau == Pos3SS && Inter == LOW) { 
    Deplace = (Pos5SS - Pos3SS); 
    Etage = (-5); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 


  if (SS5 == HIGH && plateau == Pos4SS && Inter == LOW) { 
    Deplace = (Pos5SS - Pos4SS); 
    Etage = (-5); 
    Bouge();
    plateau = plateau + Deplace;
   
    
  } 

}

//
//--------------------------- Fin de la boucle principal ---------------------------------
//
La vidéo vas suivre.

:a_suivre:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 04 mai 2021, 08:51
par likiki
La petite vidéo qui vas bien avec.




Il me reste a faire le plus compliqué au niveau programmation (pour moi car je n'ai jamais fait), enregistrer dans l'EEPROM de la carte la position (en pas) des niveaux (sauf pour le RDC qui lui est 0 et est physiquement repéré par le fin de course haut). Et leurs modification si besoin.


Je rencontre un problème d'alimentation par contre. Le +5V via la prise USB est trop faible. Il me faut donc trouver une alimentation entre 9v et 12V avec a minima 3A.

:kingmoi:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 04 mai 2021, 09:07
par herwat
:cooooool:

Oh la belle foret de fils !

Pourquoi ne met-tu pas les position de niveau dans l'initialisation du programme ? ça t'éviterait d'avoir à charger l'EEprom . . . . bien sûr, en cas de modif, il faut recharger le programme . . . . mais, à priori, on ne le fait pas tout les jours ! :D
Maintenant, ça fait un bon exemple de programmation . . .

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 04 mai 2021, 09:10
par Papy2568
Au cas où tu peux toujours te faire aider sur Locoduino, ils sont supers!

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 04 mai 2021, 09:16
par herwat
Il y a d'ailleurs un tuto sur le sujet .

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 04 mai 2021, 09:41
par likiki
Actuellement les positions sont dans le programme, mais comme il peut y avoir de minimes changement dut aux conditions extérieur (température, niveaux d'humidité etc etc) autant prévoir.

Et puis l'a lecture de l'EEPROM ne se fera qu'a la mise sous tension donc une lecture.

Et puis comme j'ai de la place en PROM autant s'amuser un peu. :hhhaaaa:

La suite vas surprendre aussi. :mdr3:

Locoduino, oui, mais quand ont me donne "tout cuit dans la bouche", je ne retiens pas (le malheur d'être autodidacte). Par contre, une fois le programme terminé, je me ferait un plaisir de le leur transmettre en créant un sujet sur leur site. Il ème diront certainement que le programme n'est pas du tout finalisé et qu'il y a mieux a faire, mais ce n'est pas grave pour moi du faite que sur la MEGA, j'ai largement de quoi faire question place mémoire.

:a_suivre:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 04 mai 2021, 09:56
par herwat
likiki a écrit : 04 mai 2021, 09:41
Locoduino, oui, mais quand ont me donne "tout cuit dans la bouche", je ne retiens pas (le malheur d'être autodidacte).
Ah bon ? toi aussi ! :hhhaaaa:

Par contre leur programmes correspondent rarement exactement à ce qu'on veut . Mais ça fait une bonne base de départ et ça permet de comprendre par l'exemple .

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 04 mai 2021, 10:12
par likiki
Tout a fait, je m'y réfère quand j'en ai besoin.

:kingmoi:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 06 mai 2021, 21:59
par herwat
likiki a écrit : 30 avr. 2021, 18:02 Commande passé.

Je pense que je vais repenser le mode "traction" et passer de vis sans fin a courroie.

Raison, le poids de la tige fileté (1 m) fatigue énormément le moteur.

:kingmoi:
Je reviens la dessus .
Aux vues des caractéristiques des NEMA 17 , l'effort axial ne doit pas dépasser 1 Kg . . . . C'est peu pour ton montage . :3:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 07:04
par likiki
Je vais peser le plateau et y adjoindre un contrepoids, ceci devrais permettre de limiter l'effort sur l'axe.

Après, il restera la solution de trouver un moteur plus puissant mieux adapté a ce type d'effort.

:kingmoi:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 10:00
par Papy2568
Je suis allé voir les caractéristiques des nema 17, je confirme ce que Hervé a dit, suivant les modèles de nema 17 le couple varie aux alentours de 1 kg.

Par contre il y a les nema 23 qui ont un couple qui tourne autour de 20 kg mais qui peut aller plus haut suivant la grosseur du moteur.
Les prix sont différents également, à parir d'une vingtaine d'euros...

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 10:06
par likiki
20 €, haaaaaa mais vous voulez ma ruine ??? :mdr1:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 10:08
par Georges de Villette
Papy2568 a écrit : 07 mai 2021, 10:00 ....... suivant les modèles de nema 17 le couple varie aux alentours de 1 kg.
Le couple et la charge axiale admissible , c'est deux choses bien différentes !!!! :2:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 10:34
par likiki
Le moteur que j'ai serait un 0,4 Nm sous 0,8A

CARACTÉRISTIQUES TECHNIQUE :
Norme du moteur pas à pas: NEMA 17
Dimensions: 42.3 x 42.3 x 40 mm
Poids: 285 g
Diamètre de l’axe: Ø5mm
Nombre de phase: 2
Voltage standard: 0.8 – 1 V
Nombre de pas: 200
Pas angulaire: 1,8° (+/-5%)
Couple de maintien: 40 N.cm pour 0.8 ampères
Connexion: 4 fils


:2:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 10:55
par herwat
likiki a écrit : 07 mai 2021, 10:34 Le moteur que j'ai serait un 0,4 Nm sous 0,8A

CARACTÉRISTIQUES TECHNIQUE :
Norme du moteur pas à pas: NEMA 17
Dimensions: 42.3 x 42.3 x 40 mm
Poids: 285 g
Diamètre de l’axe: Ø5mm
Nombre de phase: 2
Voltage standard: 0.8 – 1 V
Nombre de pas: 200
Pas angulaire: 1,8° (+/-5%)
Couple de maintien: 40 N.cm pour 0.8 ampères
Connexion: 4 fils


:2:
Non, ça c'est le couple de maintient : comme l'indique son nom, c'est le couple exercé par le moteur pour se maintenir en position quand il n'a pas d'ordre de rotation . Le couple moteur proprement dit est plus important !

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 10:57
par likiki
Alors je ne sais pas, le couple n'est pas noté.

:siffle:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 11:00
par likiki
Mais j'ai ma petite idée pour palier au manque de couple de maintien.

:banane:

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 11:05
par herwat
Euhhhh . . . moi non plus . . . Après tout, je me trompe peut-être . . .
Mais ça devrait quand même être marqué quelque part .
Dans toutes ces données, on s'y perd un peu .

Re: Automatisation d'un ascenseur a trains avec un Arduino

Posté : 07 mai 2021, 11:11
par likiki
Voilà toutes les caractéristique de ce moteur Pas à pas :

Model Number : Nema 17
Holding Torque : 500mN.m
Type : Hybrid
Phase : 2
Current / Phase : 1.5A
Step Angle(degrees) : 1.8
42SHD0217-24B 1.5A 4-Lead Nema 17 Stepper Motor for 3D Printer XYZ Axis

Specifications:
Lead style 42SHD0217-24B
Phase 2
Current 0.4A
Step Angle 1.8°
Insulation resistane 100MΩmin.(500V DC)
Insulation class class B
Rotor inertia 57g.cm2
Rated voltage 3.75V
Rated current 1.5A
Resistance per phase 2.5Ω±10%
Inductance per phase 5.0mH±20%
Holding torgue 500mN.m
Detent torgue 1.5mN.m


Faut s'y retrouver quand même.

Nous avons donc :

Couple de maintien 500 mN.m
Couple de détente 1,5 mN.m


:hhhaaaa: