Benötigte Komponenten
- Gedruckte Teile (STL Download Drehteller Base mit DC-Buchse )
- Arduino Nano kompatibles Board + USB-Kabel
- 28BYJ-48 Schrittmotor
- ULN2003 Treiber
- 5V Netzteil
- Ein-/Ausschalter
- DC-Einbaubuchse
- 2 M3 Schrauben
- 4x 608zz Kugellager (8x22x7mm)
Benötigtes Werkzeug
- Optional: Doppelseitiges Klebeband oder Heißkleber
- 3D-Drucker
- Lötkolben
- Schraubendreher
- Abisolierzange
Beschreibung
Dieses Projekt basiert auf diesem Design, welches auf Thingiverse zum Download verfügbar ist. Wir haben das Projekt herausgesucht und gedruckt, weil wir ansprechende Aufnahmen für kleine Bausätze und Artikel erstellen wollten. Hierfür war dieser Drehteller perfekt geeignet und die Dateien wanderten fix an den 3D-Drucker.
Das Design setzt auf einen Arduino Nano mit einem günstigen 28BYJ-48 Schrittmotor, der sich für diesen Zweck perfekt eignet. Durch die ULN2003 Treiberplatine lässt sich der Schrittmotor, wie in diesem Beitrag beschrieben, super einfach ansteuern und programmieren.
Die Bodenplatte haben wir angepasst und eine Bohrung für eine DC-Einbaubuchse hinzugefügt, damit man sein Netzteil auch für andere Zwecke verwenden kann. Ohne diese Bohrung für die Buchse, müsste man den Stecker vom Netzteil opfern.
Druckparameter
- 3D-Drucker: Ender-5 Plus
- Filament: yourDroid PLA+ (Weiss)
- Düsentemperatur: 210°C / 200°C
- Heizbetttemperatur: 60°C
- Layerhöhe: 0,24 mm
- Infill: 15%
Anschlussplan
ULN2003 Platine | Arduino |
IN1 | Pin 8 |
IN2 | Pin 9 |
IN3 | Pin 10 |
IN4 | Pin 11 |
+ | VIN |
- | GND |
Code
Mit diesem Code dreht sich der Drehteller in moderater Geschwindigkeit und nur in eine Richtung.
// Quelle: 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);
} } step_number++; if(step_number > 3){ step_number = 0; } } |