Automatisation d'un ascenseur a trains avec un Arduino

Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 01 08:42

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

Message par likikiFrance

Très peu de fonctionnement, mais le poids, lui, est permanent et peut contribuer a une déformation des roulements a court terme.

:kingmoi:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
Georges de VilletteChine
2000 posts et +
2000 posts et +
Messages : 5399
Enregistré le : 09 mars 2021, 19:23
Prénom : Georges
LOCALISATION : Villette d'Anthon
Centres d'intérêts : J'ai participé au début de Mini World Lyon .
J'aime l'électronique , la mini mécanique .
Passionné par les nouvelles technologies , imprimantes 3D , Laser , CNC .
Echelle pratiquée : Aucune
Âge : 74
Pays :
Chine (cn)
Chine
mai 2021 01 08:44

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

Message par Georges de VilletteChine

.
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:
Le travail est bien une maladie !!!
Puisqu'il y a une médecine du travail !!! Coluche .
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 01 08:48

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

Message par likikiFrance

Non, c'est pas idiot, mais si un moteur bloque, c'est la cata.

:mdr3:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 4870
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 76
Pays :
France (fr)
France
mai 2021 01 10:51

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

Message par herwatFrance

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
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 01 18:36

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

Message par likikiFrance

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:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 4870
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 76
Pays :
France (fr)
France
mai 2021 01 19:26

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

Message par herwatFrance

Hmmmm . . . . Intéressant , ton programme ! je sens que je vais apprendre des choses . :cooooool:
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 02 17:24

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

Message par likikiFrance

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:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 04 08:51

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

Message par likikiFrance

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:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 4870
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 76
Pays :
France (fr)
France
mai 2021 04 09:07

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

Message par herwatFrance

: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 . . .
Papy2568
mai 2021 04 09:10

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

Message par Papy2568

Au cas où tu peux toujours te faire aider sur Locoduino, ils sont supers!
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 4870
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 76
Pays :
France (fr)
France
mai 2021 04 09:16

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

Message par herwatFrance

Il y a d'ailleurs un tuto sur le sujet .
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 04 09:41

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

Message par likikiFrance

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:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 4870
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 76
Pays :
France (fr)
France
mai 2021 04 09:56

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

Message par herwatFrance

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 .
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 04 10:12

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

Message par likikiFrance

Tout a fait, je m'y réfère quand j'en ai besoin.

:kingmoi:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 4870
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 76
Pays :
France (fr)
France
mai 2021 06 21:59

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

Message par herwatFrance

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:
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 07 07:04

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

Message par likikiFrance

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:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Papy2568
mai 2021 07 10:00

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

Message 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...
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 07 10:06

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

Message par likikiFrance

20 €, haaaaaa mais vous voulez ma ruine ??? :mdr1:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
Georges de VilletteChine
2000 posts et +
2000 posts et +
Messages : 5399
Enregistré le : 09 mars 2021, 19:23
Prénom : Georges
LOCALISATION : Villette d'Anthon
Centres d'intérêts : J'ai participé au début de Mini World Lyon .
J'aime l'électronique , la mini mécanique .
Passionné par les nouvelles technologies , imprimantes 3D , Laser , CNC .
Echelle pratiquée : Aucune
Âge : 74
Pays :
Chine (cn)
Chine
mai 2021 07 10:08

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

Message par Georges de VilletteChine

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:
Le travail est bien une maladie !!!
Puisqu'il y a une médecine du travail !!! Coluche .
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 07 10:34

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

Message par likikiFrance

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:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 4870
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 76
Pays :
France (fr)
France
mai 2021 07 10:55

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

Message par herwatFrance

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 !
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 07 10:57

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

Message par likikiFrance

Alors je ne sais pas, le couple n'est pas noté.

:siffle:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 07 11:00

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

Message par likikiFrance

Mais j'ai ma petite idée pour palier au manque de couple de maintien.

:banane:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 4870
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 76
Pays :
France (fr)
France
mai 2021 07 11:05

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

Message par herwatFrance

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 .
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 6651
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 56
Pays :
France (fr)
France
mai 2021 07 11:11

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

Message par likikiFrance

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:
:kingmoi:

ImageImageImage


Les dates des bourses d'échange mis a jour ==> ICI <==
Répondre