[Projet fini] Plateau tournant imprimé en 3D avec Arduino

Alors... Ça fait un bon moment qu'il traine sur mon bureau, mais bon... Il ne pouvait pas se cacher éternellement :wink:

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 :
image
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 :slight_smile: 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

Bravo pour cette réalisation et ce post de partage !

Un très grand bravo !
C'est très beau !

Version 4 ( un projet qui traîne de mon côté en lien avec ce que tu a fait) :

Plateau rotatif 360° sans fin + rail avec support de caméra + LED RGB adressable (WS2812B)

Version 5 :
Version 4 + bluetooth et/ou Wi-Fi pour connecter avec son smartphone + écran tactile pour paramétrer l'appareil + possibilité de paramétrer à l'avance les déplacements.

Bon, puisque je calle sur mon projet TOP SECRET et qu'il commence à un peu m'énerver, je vais un peu travailler sur ce projet pour enfin le finir !

Merci @pandaroux007 pour cette motivation ! :smirk_cat:

PS : J'utilise aussi Autodesk Fusion 360 (gratuit/ pas d'utilisation commerciale), donc si tu veux que je te modélise quelque chose, n'hésite pas !

Bravo Rémi :wink:.

Top !
Merci à toi ! Et pour ta deuxième version tu ne devrais pas prendre de ws2812b mais plutôt des sk6812 qui elles ont un Chanel blanc si en plus :slight_smile:
Sinon ça a été un plaisir à faire !

Ok, je regard pour les LEDs. Encore merci pour ton travail, si ça ce trouve et que je fais les modifications que j'ai dit en post #1, tu auras bientôt du taf :grin:

Merci beaucoup pour ce projet, je viens de faire mon premier test avec un moteur pas à pas....Super ton projet de plateau tournant....

Bonjour
Petite mise à jour du projet :
J'ai apporté les modifications dont j'avais parlé au post 1, dont :

  • une LED orange sur le côté - résistance 220 ohms - alimentée en 5V
  • un bouton ON/OFF sur l'alimentation
  • un connecteur USB type-A femelle pour une alimentation plus accessible.

Voici le nouveau schéma :

Schéma Fritzing - désolé...
NB - Aucuns changement n'ont été effectués dans le code (posté en #1), qui fonctionne parfaitement. Voici quelques photos :


et...

Bonne journée

Cordialement
Pandaroux007

Bonjour
Je suis actuellement en train de recoder le programme de base, pour plusieurs raisons :

  • la première est que le code actuel fait faire des mouvements saccadés au moteur, la modification de la vitesse de rotation se fait donc par palliés... Pas très beau à voir... Je souhaite avoir un système + fluide. Or ce n'est pas le cas maintenant.
  • la deuxième raison est que le code passe une µseconde sur le point 0, il n'y a donc pas d'arrêt. Or je voudrais que l'on puisse arrêter le plateau grâce au potentiomètre. Je vais donc recoder cette partie là également.

Voici un petit schéma pour montrer ce que j'ai en tête (vive libre-Office Draw !) :

La courbe rouge représente la vitesse du moteur avec le code actuel. On passe une µseconde sur 0 ce qui fait qu'il n'y a pas d'arrêt comme dit plus haut. Avec la nouvelle courbe (en vert), le résultat est bien plus fluide, et non plus saccadé, avec un ralentissement au niveau du point 0. l'arrêt via le potentiomètre sera donc possible.

Le code est en cour de développement, je le posterai dès qu'il est fini.

Bonnes bidouilles
Cordialement
Pandaroux007

avec votre courbe verte il n'y a pas d'arrêt non plus. vous pourriez prévoir un truc comme cela peut être