Plateau tournant Arduino avec pièces imprimées
Dans ce tutoriel, nous construisons un plateau tournant contrôlé par Arduino avec des pièces issues de l'Impression 3D.
Ce projet est basé sur ce design, disponible en téléchargement sur Thingiverse. Nous avons sélectionné et imprimé ce projet car nous souhaitions créer des prises de vue attrayantes pour de petits kits et articles. Pour cela, ce plateau tournant était parfaitement adapté, et les fichiers ont été rapidement envoyés à l'imprimante 3D.
Le design utilise un Arduino Nano avec un moteur pas à pas 28BYJ-48 économique, qui convient parfaitement à cette application. Grâce à la carte de pilotage ULN2003, le moteur pas à pas peut être commandé et programmé très simplement, comme décrit dans cet article.
Nous avons adapté la plaque de base et ajouté un perçage pour une prise DC encastrable, afin que vous puissiez utiliser votre alimentation pour d'autres usages. Sans ce perçage pour la prise, il faudrait sacrifier la fiche de l'alimentation.
Composants nécessaires
- Pièces imprimées (téléchargement STL plateau tournant base avec prise DC)
- Carte compatible Arduino Nano + câble USB
- Moteur pas à pas 28BYJ-48
- Pilote ULN2003
- Alimentation 5V
- Interrupteur marche/arrêt
- Prise DC encastrable
- 2 vis M3
- 4x roulement à billes 608zz (8x22x7 mm)
Outillage nécessaire
- Optionnel : ruban adhésif double face ou colle chaude
- Imprimante 3D
- Fer à souder
- Tournevis
- Pince à dénuder
Paramètres d'impression
- Imprimante 3D : Ender-5 Plus
- Filament : yourDroid PLA+ (Blanc)
- Température de la buse : 210°C / 200°C
- Température du plateau chauffant : 60°C
- Hauteur de couche : 0,24 mm
- Remplissage : 15%
Schéma électronique
| Carte ULN2003 | Arduino |
| IN1 | Broche 8 |
| IN2 | Broche 9 |
| IN3 | Broche 10 |
| IN4 | Broche 11 |
| + | VIN |
| - | GND |
Code
Avec ce code, le plateau tournant tourne à une vitesse modérée et dans une seule direction.
Afficher / masquer le code
// Source : https://github.com/NikodemBartnik/ArduinoTutorials/tree/master/28BYJ-48
#define STEPPER_PIN_1 9
#define STEPPER_PIN_2 10
#define STEPPER_PIN_3 11
#define STEPPER_PIN_4 12
int step_number = 0;
void setup() {
pinMode(STEPPER_PIN_1, OUTPUT);
pinMode(STEPPER_PIN_2, OUTPUT);
pinMode(STEPPER_PIN_3, OUTPUT);
pinMode(STEPPER_PIN_4, OUTPUT);
}
void loop() {
OneStep(false);
delay(2);
}
void OneStep(bool dir) {
if (dir) {
switch (step_number) {
case 0:
digitalWrite(STEPPER_PIN_1, HIGH);
digitalWrite(STEPPER_PIN_2, LOW);
digitalWrite(STEPPER_PIN_3, LOW);
digitalWrite(STEPPER_PIN_4, LOW);
break;
case 1:
digitalWrite(STEPPER_PIN_1, LOW);
digitalWrite(STEPPER_PIN_2, HIGH);
digitalWrite(STEPPER_PIN_3, LOW);
digitalWrite(STEPPER_PIN_4, LOW);
break;
case 2:
digitalWrite(STEPPER_PIN_1, LOW);
digitalWrite(STEPPER_PIN_2, LOW);
digitalWrite(STEPPER_PIN_3, HIGH);
digitalWrite(STEPPER_PIN_4, LOW);
break;
case 3:
digitalWrite(STEPPER_PIN_1, LOW);
digitalWrite(STEPPER_PIN_2, LOW);
digitalWrite(STEPPER_PIN_3, LOW);
digitalWrite(STEPPER_PIN_4, HIGH);
break;
}
} else {
switch (step_number) {
case 0:
digitalWrite(STEPPER_PIN_1, LOW);
digitalWrite(STEPPER_PIN_2, LOW);
digitalWrite(STEPPER_PIN_3, LOW);
digitalWrite(STEPPER_PIN_4, HIGH);
break;
case 1:
digitalWrite(STEPPER_PIN_1, LOW);
digitalWrite(STEPPER_PIN_2, LOW);
digitalWrite(STEPPER_PIN_3, HIGH);
digitalWrite(STEPPER_PIN_4, LOW);
break;
case 2:
digitalWrite(STEPPER_PIN_1, LOW);
digitalWrite(STEPPER_PIN_2, HIGH);
digitalWrite(STEPPER_PIN_3, LOW);
digitalWrite(STEPPER_PIN_4, LOW);
break;
case 3:
digitalWrite(STEPPER_PIN_1, HIGH);
digitalWrite(STEPPER_PIN_2, LOW);
digitalWrite(STEPPER_PIN_3, LOW);
digitalWrite(STEPPER_PIN_4, LOW);
break;
}
}
step_number++;
if (step_number > 3) {
step_number = 0;
}
}