Alors... Ça fait un bon moment qu'il traine sur mon bureau, mais bon... Il ne pouvait pas se cacher éternellement ![]()
Matériel :
- Moteur pas à pas 28BYJ-48
- driver ULN2003
- Arduino NANO clonée
- régulateur de tension LM2596
- Petit connecteur prise jack 12V
- potentiomètre 10 kΩ
- une imprimante 3D
- des câbles ( pitié pas des dupont ! )
Code :
// on inclut la librairie du moteur Pas à Pas, Stepper.h...
#include <Stepper.h>
double nombredepas = 2048 ; // nombre de pas que fait le moteur pour faire un tour.
Stepper monmoteur(nombredepas, 8, 10, 9, 11) ; // dans cet ordre pour que la librairie marche
void setup()
{
Serial.begin(115200) ; // initialisation de la vitesse du moniteur série
Serial.println("Demarrage...") ; // Demarrage...
// monmoteur.setSpeed(15) ; // vitesse de 15 (max) au demarrage - optionel (ne sert a rien...)
}
void loop()
{
int val = analogRead(0) ; // lecture tension sur A0 (potentiomètre 10k)
// affichage sur le moniteur série de la vitesse et des pas.
Serial.print("Nombre de pas : ") ;
Serial.println(val-512) ;
Serial.print("Vitesse : ") ;
Serial.println(abs((val-512)/34)+1) ;
// formule :
monmoteur.setSpeed(abs((val-512)/34)+1) ; // vitesse "setSpeed"
monmoteur.step(-(val-512)) ; // nombre de pas "step"
delay(2) ; // On laisse le temps au programme de soufler
}
/*
explication de la formule :
On lit la valeur sur le potentiomètre. La valeur varie entre 0 et 1024.
512, c'est la moitiée de 1024.
La vitesse du moteur est définie par l'instruction "setSpeed", donc on lit la valeur, puis on
fait -512, pour avoir une valeur comprise entre +512 et -512 ( important pour le sens de rotation ).
Si vous stockez cette valeur ( 512 ) dans une variable de type non signé, cela ne marchera pas.
Ensuite on divise la valeur ainsi obtenue par 43, ce qui nous donne une valeur comprise entre 0 et -14.
on redresse cette valeur avec "abs", ce qui donne une valeur comprise entre 0 et 14. Mais là on commence a 0
et ça fait planter le programme... Donc on fait +1, pour toujour être entre 1 et 15.
/!\ attention /!\ : on peut amélorer le programme en mettant 512 en variables globâles ( #define ... 512 ou const int ... = 512 )
Mais pour cette exemple je ne l'utiliserai pas.
*/
j'ai pris des codes sur divers sites a droite à gauche... dont :
Câblage avec carte UNO ( mais j'utilise une NANO ) :
Câblage avec Arduino Uno avec le driver ULN2003 :
Câblage potentiomètre :

Le circuit complet est :
Il faut juste ajouter un potar sur A0...
Vues du projet en 3D :
Remerciements :
Par ailleurs je remercie énormément @pandar09 pour sa patience dans le projet, c'est grâce a lui qu'il a pu prendre forme. C'est un super designer
Je lui demanderai les fichiers STL. Il a modélisé tout le projet sur Autodesk fusion 360 ( version gratuite )
Sur la photo, on voit très clairement que c'est pas encore tip top... Mais ça va venir. Il y aura des modifications, comme un bouton ON/OFF ( je sais c'est débile de ne pas en avoir mis... ), des LEDs, etc... je prévois aussi une deuxième version avec des WS2812Bs ( réglées sur blanc ) qui feront le tour du plateau a la même vitesse que lui, et dans le même sens. Et même une version 3 connectée...
Autre chose importante : tout le plateau est fixé grâce a des aimants néodyme :
Cordialement
Pandaroux007 / Rémi









