Page 2 sur 4
Re: Comment faire l'automatisme d'un ascenseur
Posté : 27 avr. 2025, 14:33
par likiki
patrice_b a écrit : ↑27 avr. 2025, 14:09
likiki a écrit : ↑27 avr. 2025, 12:45
Ont continue avec l'ajout d'un encodeur rotatif et la création de menus ...
Etape suivante :
Régler finement les arrêt et enregistrement (volatil dans un 1er temps) des novelles positions.
Modification du programme de sélections qui passera de 170 lignes de codes a .... 40 lignes.
Whaou tu progresse bien !
Sacré cure d'amaigrissement. J'attends alors pour plonger mon nez dans ton code
Il y aura certainement moyen de réduire encore le code en appliquant des procédures mathématique, mais là, je trouve que le code (pour moi) deviens illisible et incompréhensible.
Par contre, si tu n'est pas habitué au codage informatique, met le nez dedans tout de suite sinon tu vas être largué plus vite qu'une amarre.

Re: Comment faire l'automatisme d'un ascenseur
Posté : 27 avr. 2025, 16:12
par patrice_b
likiki a écrit : ↑27 avr. 2025, 14:33
Il y aura certainement moyen de réduire encore le code en appliquant des procédures mathématique, mais là, je trouve que le code (pour moi) deviens illisible et incompréhensible.
Par contre, si tu n'est pas habitué au codage informatique, met le nez dedans tout de suite sinon tu vas être largué plus vite qu'une amarre.
J'ai eu programmé, il y a des années mais pas en C....
Encore un truc ou je vais me péter les neuronnes, mais bon, je poserai des questions ...
Non ca va, déclarations de variables, utilisation de bibliothèque, procédures ca va je suis pas complètement largué.
En plus moi j'ai juste un niveau donc ca sera plus simple.
A suivre...
Re: Comment faire l'automatisme d'un ascenseur
Posté : 27 avr. 2025, 16:18
par C2Vues-BricoTrain
Re: Comment faire l'automatisme d'un ascenseur
Posté : 27 avr. 2025, 16:35
par likiki
Re: Comment faire l'automatisme d'un ascenseur
Posté : 27 avr. 2025, 16:44
par ramasoft
Je n'ai pas l'habitude du code Arduino et surtout de sa syntaxe mais pour optimiser un peu le code tu peux déjà mettre les procédures répétitives, Efface l’écran - place le curseur ligne suivante en sous-programme.
Sinon je crois qu"il existe une instruction du genre
switch case (Ebpe)
case -1:
stepper.runToNewPosition(Pos1SS);
delay(1000) ;
Ebpe = 10;
case -2:
stepper.runToNewPosition(Pos2SS);
delay(1000) ;
Ebpe = 10;
Et tu mets l'appel à la procédure qui efface l'écran et met le curseur en début de ligne juste avant le switch case comme il est répété à chaque fois et l'appel à Efface l'écran et place le curseur à la ligne suivante après le bloc de décision switch case.
C'est du code procédural tout simple.
Je jetterai un œil quand j'aurai un peu de temps.
Re: Comment faire l'automatisme d'un ascenseur
Posté : 27 avr. 2025, 16:45
par likiki
C'est ce qui est prévu pour ce qui est répétitif.

Re: Comment faire l'automatisme d'un ascenseur
Posté : 27 avr. 2025, 17:45
par patrice_b
Et oui les procédures, elles facilitent le code et la vie !

Re: Comment faire l'automatisme d'un ascenseur
Posté : 27 avr. 2025, 22:38
par ramasoft
J'ai installé l'environnement Arduino et j'ai téléchargé les library mais je n'ai peut être pas les bonnes car j'ai été obligé de déclarer les variables D3, D4, D5, D6 et D7 pour que ça compile sans erreurs...
int D3;
int D4;
int D5;
int D6;
int D7;
J'ai arrangé ça vite fait, on peut aussi passer la variable Txt (qui contient le texte à afficher) en argument à la fonction Afficher
Code : Tout sélectionner
/*
***************************************************
****** Ascenseur avec un moteur pas à pas *******
****** *******
****** Programme V 3.0 *******
****** Du 22/02/2025 *******
****** Par C.ARFEL *******
****** *******
****** Carte Wemos D1 Mini *******
****** *******
****** Version 1.0 *******
****** Mise a quai manuelle *******
****** Afficheur lcd 16 x 2 I2C *******
****** RC + 5 sous sol *******
****** Menu par encodeur *******
****** *******
****** *******
****** Liste des bornes utilisées *******
****** *******
****** D0 Capteur infrarouge *******
****** D1 I2C écran *******
****** D2 I2C écran *******
****** D3 DIR commande de direction moteur *******
****** D4 STEP commande nb pas moteur *******
****** D5 SW encodeur *******
****** D6 DT encodeur *******
****** D7 Clic encodeur *******
****** D8 Arrêt d'urgence + FC total *******
****** RST (reset carte) *******
****** *******
****** Le croquis utilise ***** octets (**%)*******
****** de l'espace de stockage de *******
****** programmes. Le maximum est de *******
****** ****** octets. *******
****** *******
****** Les variables globales utilisent *******
****** **** octets (**%) de mémoire *******
****** dynamique, ce qui laisse **** *******
****** octets pour les variables locales. *******
****** Le maximum est de **** octets. *******
****** *******
****** *******
***************************************************
. Variables and constants in RAM (global, static), used 29192 / 80192 bytes (36%)
║ SEGMENT BYTES DESCRIPTION
╠══ DATA 1536 initialized variables
╠══ RODATA 1240 constants
╚══ BSS 26416 zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60995 / 65536 bytes (93%)
║ SEGMENT BYTES DESCRIPTION
╠══ ICACHE 32768 reserved space for flash instruction cache
╚══ IRAM 28227 code in IRAM
. Code in flash (default, ICACHE_FLASH_ATTR), used 245364 / 1048576 bytes (23%)
║ SEGMENT BYTES DESCRIPTION
╚══ IROM 245364 code in flash
*/
int D3;
int D4;
int D5;
int D6;
int D7;
String Txt;
#include <AccelStepper.h> // Bibliothéque moteur pas a pas
const byte pin_DIR = D3; // Borne contrôle pour TMC2209
const byte pin_STEP = D4; // Borne contrôle pour TMC2209
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Bibliothéque ecran protocole I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // 0x27 ou 0x3F déclaration adresse du lcd
#include "RotaryEncoder.h" // Appel de la bibliothéque pour encodeur
#define STEPSS 1 // Nombre par pas d'encodeur
#define POSMIN -5 // Position MINI de l'encodeur
#define POSMAX 4 // Position MAX de l'encodeur
#define BPE D5 // Borne SW encodeur (bouton)
RotaryEncoder encoder(D6, D7); // Borne de l'encodeur (DT, CLK)
AccelStepper stepper(AccelStepper::DRIVER, pin_STEP, pin_DIR); // création objet Stepper
int Pos0SS = 0; // Crans moteur pour la position plateau niveau reseau.
int Pos1SS = 10000; // Crans moteur pour la position plateau 1er sous sol
int Pos2SS = 20000; // Crans moteur pour la position plateau 2ème sous sol
int Pos3SS = 30000; // Crans moteur pour la position plateau 3ème sous sol
int Pos4SS = 40000; // Crans moteur pour la position plateau 4ème sous sol
int Pos5SS = 50000; // Crans moteur pour la position plateau 5ème sous sol
int Init = 0; // Variable pour l'initialisation
int Ebpe = 10; // Variable bouton encodeur
int lastPos, newPos; // Variable encodeur
void setup() {
lcd.init(); // Initialisation de l'afficheur
lcd.backlight(); // Allume l'ecran
lcd.clear(); // Efface l'ecran
lcd.setCursor(0, 0); // place le curseur sur la ligne 0 a gauche
lcd.print("*Initialisation*"); // Affichage sur le lcd
lcd.setCursor(0, 1); // passe a la ligne suivante
lcd.print("* Programme *"); // affichage sur le lcd
stepper.setMaxSpeed(8000.0); // Vitesse max moteur
stepper.setAcceleration(500.0); // distance accélération / décélération
encoder.setPosition(10 / STEPSS); // Position initiale encodeur
pinMode(BPE, INPUT); // Initialisation du clic encodeur rotatif
}
/*
************************
* Fin de la zone SETUP *
************************
*/
/*
****************************
* Séquence initialisation *
****************************
*/
void Initialisation() { // Module initialisation du plateau Recherche du FC
// Il ne se passe rien d'important ici pour le moment a ce stade du programme.
lcd.clear(); // Efface l'ecran
delay(100);
lcd.setCursor(0, 0);
lcd.print(" Niveau reseau. ");
delay(10);
lcd.setCursor(0, 1); // place le curseur ligne suivante
lcd.print("** En attente **");
delay(200);
Init = 1; // Informe que l'initialisation a été faite pour ne pas y revenir
}
void loop() {
if (Init < 1) { // Si 1er passage executerligne suivante sinon passer
Initialisation(); // Vas executer le bloc "initialisation"
}
/*
********************************
* Début de la zone des appels *
********************************
*/
/*
****************************************
* Menu selection par encodeur rotatif *
****************************************
*/
// ________________ Zone lecture encodeur rotatif _______________
encoder.tick();
newPos = encoder.getPosition() * STEPSS;
if (newPos < POSMIN) {
encoder.setPosition(POSMIN / STEPSS);
newPos = POSMIN;
} else if (newPos > POSMAX) {
encoder.setPosition(POSMAX / STEPSS);
newPos = POSMAX;
}
if (lastPos != newPos) {
if (newPos <= 0) { // valable de -5 a 0
lcd.setCursor(0, 1); // place le curseur ligne suivante
lcd.print("Choix => ");
lcd.print(newPos);
lcd.print(" ");
delay(10);
lastPos = newPos;
}
if (newPos >= 1) { // Valable si 1
lcd.setCursor(0, 1); // place le curseur ligne suivante
lcd.print("Choix => ");
lcd.print("Reglage");
delay(10);
lastPos = newPos;
}
}
if (digitalRead(BPE) == LOW) { // Control si Bouton encodeur actionné
Ebpe = newPos;
delay(500); // Tempo de pause pour éviter la redondance du clic
}
/*
*****************************
* Appel au rez de chaussée *
*****************************
*/
if (Ebpe == 0) { // Action si choix 0 RC
En_mouvement;
stepper.runToNewPosition(Pos0SS);
delay(1000);
Ebpe = 10;
Txt=" Niveau reseau. ";
Attente;
}
/*
**************************
* Appel au 1er sous sol *
**************************
*/
if (Ebpe == -1) { // Action si choix -1
En_mouvement;
stepper.runToNewPosition(Pos1SS);
delay(1000);
Ebpe = 10;
Txt=" Niveau -1 ";
Attente;
}
/*
***************************
* Appel au 2ème sous sol *
***************************
*/
if (Ebpe == -2) {
En_mouvement;
stepper.runToNewPosition(Pos2SS);
delay(1000);
Ebpe = 10;
Txt=" Niveau -2 ";
Attente;
}
/*
***************************
* Appel au 3ème sous sol *
***************************
*/
if (Ebpe == -3) {
En_mouvement;
stepper.runToNewPosition(Pos3SS);
delay(1000);
Ebpe = 10;
Txt=" Niveau -3 ";
Attente;
}
/*
***************************
* Appel au 4ème sous sol *
***************************
*/
if (Ebpe == -4) {
En_mouvement;
stepper.runToNewPosition(Pos4SS);
delay(1000);
Ebpe = 10;
Txt=" Niveau -4 ";
Attente;
}
/*
***************************
* Appel au 5ème sous sol *
***************************
*/
if (Ebpe == -5) {
En_mouvement;
stepper.runToNewPosition(Pos5SS);
delay(1000);
Ebpe = 10;
Txt= " Niveau -5 ";
Attente;
}
}
void En_mouvement() {
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);
}
void Attente() {
lcd.clear(); // Efface l'ecran
delay(100);
lcd.setCursor(0, 0);
lcd.print(Txt);
delay(10);
lcd.setCursor(0, 1); // place le curseur ligne suivante
lcd.print("** En attente **");
delay(1000);
}
Re: Comment faire l'automatisme d'un ascenseur
Posté : 27 avr. 2025, 23:00
par ramasoft
Et avec switch case, et on n'a plus besoin des fonctions Afficher et En_mouvement qui ne sont plus appelées qu'une seule fois
Code : Tout sélectionner
/*
***************************************************
****** Ascenseur avec un moteur pas à pas *******
****** *******
****** Programme V 3.0 *******
****** Du 22/02/2025 *******
****** Par C.ARFEL *******
****** *******
****** Carte Wemos D1 Mini *******
****** *******
****** Version 1.0 *******
****** Mise a quai manuelle *******
****** Afficheur lcd 16 x 2 I2C *******
****** RC + 5 sous sol *******
****** Menu par encodeur *******
****** *******
****** *******
****** Liste des bornes utilisées *******
****** *******
****** D0 Capteur infrarouge *******
****** D1 I2C écran *******
****** D2 I2C écran *******
****** D3 DIR commande de direction moteur *******
****** D4 STEP commande nb pas moteur *******
****** D5 SW encodeur *******
****** D6 DT encodeur *******
****** D7 Clic encodeur *******
****** D8 Arrêt d'urgence + FC total *******
****** RST (reset carte) *******
****** *******
****** Le croquis utilise ***** octets (**%)*******
****** de l'espace de stockage de *******
****** programmes. Le maximum est de *******
****** ****** octets. *******
****** *******
****** Les variables globales utilisent *******
****** **** octets (**%) de mémoire *******
****** dynamique, ce qui laisse **** *******
****** octets pour les variables locales. *******
****** Le maximum est de **** octets. *******
****** *******
****** *******
***************************************************
. Variables and constants in RAM (global, static), used 29192 / 80192 bytes (36%)
║ SEGMENT BYTES DESCRIPTION
╠══ DATA 1536 initialized variables
╠══ RODATA 1240 constants
╚══ BSS 26416 zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60995 / 65536 bytes (93%)
║ SEGMENT BYTES DESCRIPTION
╠══ ICACHE 32768 reserved space for flash instruction cache
╚══ IRAM 28227 code in IRAM
. Code in flash (default, ICACHE_FLASH_ATTR), used 245364 / 1048576 bytes (23%)
║ SEGMENT BYTES DESCRIPTION
╚══ IROM 245364 code in flash
*/
int D3; // A supprimer éventuellement si déjà déclarées par ailleurs
int D4;
int D5;
int D6;
int D7;
String Txt;
#include <AccelStepper.h> // Bibliothéque moteur pas a pas
const byte pin_DIR = D3; // Borne contrôle pour TMC2209
const byte pin_STEP = D4; // Borne contrôle pour TMC2209
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Bibliothéque ecran protocole I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // 0x27 ou 0x3F déclaration adresse du lcd
#include "RotaryEncoder.h" // Appel de la bibliothéque pour encodeur
#define STEPSS 1 // Nombre par pas d'encodeur
#define POSMIN -5 // Position MINI de l'encodeur
#define POSMAX 4 // Position MAX de l'encodeur
#define BPE D5 // Borne SW encodeur (bouton)
RotaryEncoder encoder(D6, D7); // Borne de l'encodeur (DT, CLK)
AccelStepper stepper(AccelStepper::DRIVER, pin_STEP, pin_DIR); // création objet Stepper
int Pos0SS = 0; // Crans moteur pour la position plateau niveau reseau.
int Pos1SS = 10000; // Crans moteur pour la position plateau 1er sous sol
int Pos2SS = 20000; // Crans moteur pour la position plateau 2ème sous sol
int Pos3SS = 30000; // Crans moteur pour la position plateau 3ème sous sol
int Pos4SS = 40000; // Crans moteur pour la position plateau 4ème sous sol
int Pos5SS = 50000; // Crans moteur pour la position plateau 5ème sous sol
int Init = 0; // Variable pour l'initialisation
int Ebpe = 10; // Variable bouton encodeur
int lastPos, newPos; // Variable encodeur
void setup() {
lcd.init(); // Initialisation de l'afficheur
lcd.backlight(); // Allume l'ecran
lcd.clear(); // Efface l'ecran
lcd.setCursor(0, 0); // place le curseur sur la ligne 0 a gauche
lcd.print("*Initialisation*"); // Affichage sur le lcd
lcd.setCursor(0, 1); // passe a la ligne suivante
lcd.print("* Programme *"); // affichage sur le lcd
stepper.setMaxSpeed(8000.0); // Vitesse max moteur
stepper.setAcceleration(500.0); // distance accélération / décélération
encoder.setPosition(10 / STEPSS); // Position initiale encodeur
pinMode(BPE, INPUT); // Initialisation du clic encodeur rotatif
}
/*
************************
* Fin de la zone SETUP *
************************
*/
/*
****************************
* Séquence initialisation *
****************************
*/
void Initialisation() { // Module initialisation du plateau Recherche du FC
// Il ne se passe rien d'important ici pour le moment a ce stade du programme.
lcd.clear(); // Efface l'ecran
delay(100);
lcd.setCursor(0, 0);
lcd.print(" Niveau reseau. ");
delay(10);
lcd.setCursor(0, 1); // place le curseur ligne suivante
lcd.print("** En attente **");
delay(200);
Init = 1; // Informe que l'initialisation a été faite pour ne pas y revenir
}
void loop() {
if (Init < 1) { // Si 1er passage executerligne suivante sinon passer
Initialisation(); // Vas executer le bloc "initialisation"
}
/*
********************************
* Début de la zone des appels *
********************************
*/
/*
****************************************
* Menu selection par encodeur rotatif *
****************************************
*/
// ________________ Zone lecture encodeur rotatif _______________
encoder.tick();
newPos = encoder.getPosition() * STEPSS;
if (newPos < POSMIN) {
encoder.setPosition(POSMIN / STEPSS);
newPos = POSMIN;
} else if (newPos > POSMAX) {
encoder.setPosition(POSMAX / STEPSS);
newPos = POSMAX;
}
if (lastPos != newPos) {
if (newPos <= 0) { // valable de -5 a 0
lcd.setCursor(0, 1); // place le curseur ligne suivante
lcd.print("Choix => ");
lcd.print(newPos);
lcd.print(" ");
delay(10);
lastPos = newPos;
}
if (newPos >= 1) { // Valable si 1
lcd.setCursor(0, 1); // place le curseur ligne suivante
lcd.print("Choix => ");
lcd.print("Reglage");
delay(10);
lastPos = newPos;
}
}
if (digitalRead(BPE) == LOW) { // Control si Bouton encodeur actionné
Ebpe = newPos;
delay(500); // Tempo de pause pour éviter la redondance du clic
}
/*
*****************************
* Choix Étage *
*****************************
*/
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);
switch (Ebpe) {
case 0: // rez de chaussée
stepper.runToNewPosition(Pos0SS);
delay(1000);
Txt=" Niveau reseau. ";
Ebpe = 10;
break;
case -1: // 1er sous sol
stepper.runToNewPosition(Pos1SS);
delay(1000);
Txt=" Niveau -1 ";
Ebpe = 10;
break;
case -2: // 2e sous sol
stepper.runToNewPosition(Pos2SS);
delay(1000);
Txt=" Niveau -2 ";
Ebpe = 10;
break;
case -3: // 3e sous sol
stepper.runToNewPosition(Pos3SS);
delay(1000);
Txt=" Niveau -3 ";
Ebpe = 10;
break;
case -4: // 4e sous sol
stepper.runToNewPosition(Pos4SS);
delay(1000);
Txt=" Niveau -4 ";
Ebpe = 10;
break;
case -5: // 5e sous sol
stepper.runToNewPosition(Pos5SS);
delay(1000);
Txt= " Niveau -5 ";
Ebpe = 10;
break;
}
lcd.clear(); // Efface l'écran
delay(100);
lcd.setCursor(0, 0);
lcd.print(Txt);
delay(10);
lcd.setCursor(0, 1); // place le curseur ligne suivante
lcd.print("** En attente **");
delay(1000);
}
Donc si les variables D3,D4,D5,D6 et D7 sont déclarées dans une bibliothèque il faudra supprimer la déclaration tout au début.
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 04:59
par likiki
A tu choisi le bon micro contrôleur ?
ESP8266 => lolinWemos D1 R2 & Mini
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 08:08
par ramasoft
Cette carte ne m'est pas proposée, je n'ai que des ESP32xxx et encore elles sont grisées.

- Capture d'écran 2025-04-28 080541.png (42.59 Kio) Vu 1750 fois
Il doit falloir installer autre chose que la simple IDE Arduino.
Donc j'avais choisi une carte Arduino Uno juste pour qu'il compile le code et cherche les erreurs de syntaxe car je ne connais pas bien le code Arduino, qui ressemble bien à du C de base.
Et je me suis effectivement posé la question de la bonne carte à déclarer.
Le monde des microcontrôleurs et de l'Arduino m'est un peu inconnu

Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 08:23
par ramasoft
Ça y est, j'ai trouvé pour installer Generic ESP8266 Module et j'ai LolinWemos D1 R2 & Mini
Mais j'ai quand même ce message d'erreur à la compilation:
ATTENTION: la bibliothèque LiquidCrystal I2C prétend être exécutable sur la (ou les) architecture(s) avr et peut être incompatible avec votre carte actuelle qui s'exécute sur esp8266.
J'ai installé LiquidCrystal I2C par Frank de Brabander ... (Fernando me demanderait si ce n'est pas plutôt "boisbander"

)
Et ce n'est peut-être pas la bonne.
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 15:22
par likiki
J'ai moi aussi ce message, mais cela fonction parfaitement. Donc pas d'inquiétudes.

Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 17:24
par ramasoft
Ok merci Christian.

Donc je vais commander le ou les moteurs, car je crois qu'il en faudrait deux pour lever 1,50m de voie tranquillement, et le matériel pour monter ça sur un panneau de contre plaqué de 10mm ou 15mm pour voir ce que ça donne.
Question: si je mets un moteur de chaque côté, ils sont branchés tout bêtement en parallèle ?
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 17:51
par TrainDoly
ramasoft a écrit : ↑28 avr. 2025, 17:24
Ok merci Christian.
Question: si je mets un moteur de chaque côté, ils sont branchés tout bêtement en parallèle ?
Les drivers oui, pas les moteurs!
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 17:53
par herwat
J'ai monté mes vitrines sur panneaux de CP de 10 mm : aucun problème .
Oui, il vaut mieux mettre un moteur à chaque extrémité ne serait-ce que pour avoir une bonne stabilité .
et oui, je les ai branché en parallèle sur le driver .
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 17:53
par likiki
Il te faut :
1 Arduino (attention, avec le Wemos mini le nombre d'E/S est limité) Hervé te dira ce qu'il utilise.
X moteur (Nema 17)
x Driver moteur (perso j'utilise des TMC2209 qui équipent les imprimante 3D)
Chaque moteur a son Driver et les commandes des Driver sont banchés en //.
Tu ne peut pas avoir plusieurs moteur sur un Driver.
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 17:55
par herwat
TrainDoly a écrit : ↑28 avr. 2025, 17:51
ramasoft a écrit : ↑28 avr. 2025, 17:24
Ok merci Christian.
Question: si je mets un moteur de chaque côté, ils sont branchés tout bêtement en parallèle ?
Les drivers oui, pas les moteurs!
Si, on peut les brancher en parallèle sur le driver . Il suffit de faire attention au réglage du courant .
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 18:00
par herwat
Une question pour Christian :
J'ai l'intention d'acheter des Wemos, mais il y en a de 36 sortes ! ! !
Je suis perdu !
Peux-tu éclairer ma lanterne vieillissante . . . .
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 18:06
par likiki
Moi j'ai commandé
ces Wemos là.
Sur les conseils d'Antoine et il m'a super bien briefé sur la com wifi avec.
Bien faire attention a prendre ceux en USB C et pas micro USB qui sont vite défaillant (ne pas se fier a la photo, le Chinois est malin et fourbe).
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 18:09
par ramasoft
J'ai une carte Aduino Uno, que j'avais achetée avec un kit de démarrage pour voir comment ça fonctionnait et je n'en ai jamais trouvé l'usage sur le réseau... ça doit faire l'affaire.
Donc su j'ai bien compris, c'est elle qui commande les drivers des moteurs et on met 2 drivers en série sur une sortie de l'Arduino, c'est bien ça ?
Hervé quand tu dis qu'il faut faire attention au réglage du courant, c'est quoi au juste ?
Ah oui, autre question de newbie: ça s'alimente sous 5V je suppose et quelle consommation faut-il prévoir ?
Ce qu'il faudrait c'est nous faire une liste du matos avec les références.
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 18:11
par ramasoft
likiki a écrit : ↑28 avr. 2025, 18:06
le Chinois est malin et fourbe
Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 18:13
par herwat
likiki a écrit : ↑28 avr. 2025, 18:06
Moi j'ai commandé
ces Wemos là.
Sur les conseils d'Antoine et il m'a super bien briefé sur la com wifi avec.
Bien faire attention a prendre ceux en USB C et pas micro USB qui sont vite défaillant (ne pas se fier a la photo, le Chinois est malin et fourbe).
ça y est, c'est dans la boite !

Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 18:36
par likiki
Perso, je travail avec :
Moteur NEMA 17 de ce type
Driver TMC2209
PCB a bandes
Bornes a vis enfichable
Attention, vous trouverez certainement moins cher ailleurs. Ceci est juste pour montrer le visuel de la chose.
Pour le coté mécanique, tout dépend de ce que vous voulez faire. Perso c'est sur vis sans fin et deux guides en étiré;

Re: Comment faire l'automatisme d'un ascenseur
Posté : 28 avr. 2025, 18:41
par ramasoft