Durch ein zufällig im WWW entdecktes Foto eines automatisierten Mini-Zen-Gartens, war ich inspiriert selbst ein solches "Gerät" herzustellen. Die Idee ist recht einfach: In einer flachen Schale befindet sich feiner Sand, der durch einen langsam rotierenden Rechen abwechselnd mit einem Muster vesehen oder glattgestrichen wird.
Ich entschied mich für einen Schrittmotor vom Typ 28BYJ-48, der sich gesteuert durch einen kleinen Mikrocontroller (hier: ATtiny13) so langsam wie möglich drehen soll. Man können auch normale Gleichstrom-Motoren verwenden, doch haben meine vorrätigen Motoren zu sehr störende Geräusche gemacht, so dass ich mich für den Schrittmotor entschied.
Zunächst wurde das Drehverhalten mit einem Arduino Uno im Zusammenspiel mit einem Breadboard getestet und justiert:
#define PIN_IN1 8 // blue
#define PIN_IN2 9 // pink
#define PIN_IN3 10 // yellow
#define PIN_IN4 11 // orange
void setup()
{
pinMode(PIN_IN1, OUTPUT);
pinMode(PIN_IN2, OUTPUT);
pinMode(PIN_IN3, OUTPUT);
pinMode(PIN_IN4, OUTPUT);
}
void loop()
{
rotateRight(4500);
}
void rotateRight(unsigned int motorSpeed)
{
setMotor(LOW, LOW, LOW, HIGH, motorSpeed);
setMotor(LOW, LOW, HIGH, HIGH, motorSpeed);
setMotor(LOW, LOW, HIGH, LOW, motorSpeed);
setMotor(LOW, HIGH, HIGH, LOW, motorSpeed);
setMotor(LOW, HIGH, LOW, LOW, motorSpeed);
setMotor(HIGH, HIGH, LOW, LOW, motorSpeed);
setMotor(HIGH, LOW, LOW, LOW, motorSpeed);
setMotor(HIGH, LOW, LOW, HIGH, motorSpeed);
}
void setMotor(byte in1, byte in2, byte in3, byte in4, unsigned int motorSpeed)
{
digitalWrite(PIN_IN1, in1);
digitalWrite(PIN_IN2, in2);
digitalWrite(PIN_IN3, in3);
digitalWrite(PIN_IN4, in4);
delayMicroseconds(motorSpeed);
}
Die Anpassung der Schaltung auf den ATtiny13 war recht einfach und die Programmierung wurde auch schon ausführlich in dem Beitrag ATtiny besprochen.
#define PIN_IN1 PB4 // blue
#define PIN_IN2 PB0 // pink
#define PIN_IN3 PB1 // yellow
#define PIN_IN4 PB2 // orange
void setup()
{
pinMode(PIN_IN1, OUTPUT);
pinMode(PIN_IN2, OUTPUT);
pinMode(PIN_IN3, OUTPUT);
pinMode(PIN_IN4, OUTPUT);
}
void loop()
{
rotateRight(4500);
}
void rotateRight(unsigned int motorSpeed)
{
setMotor(LOW, LOW, LOW, HIGH, motorSpeed);
setMotor(LOW, LOW, HIGH, HIGH, motorSpeed);
setMotor(LOW, LOW, HIGH, LOW, motorSpeed);
setMotor(LOW, HIGH, HIGH, LOW, motorSpeed);
setMotor(LOW, HIGH, LOW, LOW, motorSpeed);
setMotor(HIGH, HIGH, LOW, LOW, motorSpeed);
setMotor(HIGH, LOW, LOW, LOW, motorSpeed);
setMotor(HIGH, LOW, LOW, HIGH, motorSpeed);
}
void setMotor(byte in1, byte in2, byte in3, byte in4, unsigned int motorSpeed)
{
digitalWrite(PIN_IN1, in1);
digitalWrite(PIN_IN2, in2);
digitalWrite(PIN_IN3, in3);
digitalWrite(PIN_IN4, in4);
delayMicroseconds(motorSpeed);
}
Nun wurden die Sockel und Buchsen in einer Lochrasterplatine befestigt und die entsprechenden Verbindungen mit Drahtbrücken oder Kabeln analog zum Breadboard-Aufbau umgesetzt:
Da ich alle mechanischen Bauteile und die Schale mit meinem Ender-3 Pro drucken wollte, habe ich wieder auf das bewährte Programm OpenSCAD zurückgegriffen, mit welchem man die Teile schnell und präzise erstellen kann.
Für die Schale habe ich keine Primitiv-Formen als Grundlage benutzt, sondern eine 3D-Figur aus einer in Inkscape erstellen SVG-Figur kreisförmig extrudiert.
Auch die darunter befindliche Basis, welche später die Elektronik und den Motor beinhalten sollen, wurden auf dieselbe Weise wie die Schale erstellt.
Der Adapter für den Schrittmotor und der Rechen, mit dem der Sand später "geformt" wird, waren einfach zu erstellen. Mit OpenSCAD kann man auch Animationen erstellen und so kann man eine bewegte Vorschau auf den rotierenden Mini-Zen-Garten generieren lassen:
Die benötigten 3D-Dateien können hier alle heruntergeladen werden:
Dies ist die Schale, die mit drei Schrauben an der Basis montiert und dann der Sand eingefüllt wird.
pond.scadDie Basis wird unter die Schale geschraubt und nimmt Motor und die Steuerungselektronik auf.
base.scadDer Rechen wird nach der Montage auf den Adapter für den Schrittmotor gesteckt.
linear_wiper.scadDer Adapter verbindet den Schrittmotor mit dem Rechen.
stepper_adapter.scadNach dem Ausdruck der Basis können nun die Steuerungs-Platine und der Schrittmotor eingebaut werden:
Nach dem Drucken der Schale für den Zen-Garten (ca. 14 Stunden), konnte sie mit der Basis leicht zusammengeschraubt werden, da hier versenkbare (2mm) Schrauben und dazu passende Gewindeeinsätze (hier von Ruthex) verwendet wurden, damit das Gewinde und die Stabilität dessen länger haltbar ist.
Beim Anschluss an eine 5V Spannungsquelle (z.B. Powerbank) werden ca. 225mA Stromfluss gemessen. Dies entspricht einer Leistungsaufnahme von ca. 1,1W. Damit würde die oben gelistete Powerbank mit 30000mAh ca. 130 Stunden ununterbrochen laufen.
zurück