Rotierender Mini-Zen-Garten

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.

Motor und Steuerung

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.

Verwendete Bauteile

Prototyp mit Arduino Uno

Zunächst wurde das Drehverhalten mit einem Arduino Uno im Zusammenspiel mit einem Breadboard getestet und justiert:

Schaltplan mit Arduino Uno
Abb.: Schaltplan mit Arduino Uno
#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);
}

Steuerung mit ATtiny13

Die Anpassung der Schaltung auf den ATtiny13 war recht einfach und die Programmierung wurde auch schon ausführlich in dem Beitrag ATtiny besprochen.

Schaltplan mit dem ATtiny13
Abb.: Schaltplan mit dem ATtiny13
#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);
}
Aufbau der Schaltung auf dem Breadboard
Abb.: Aufbau der Steuerungs-Schaltung mit ATriny13 auf dem Breadboard.

Aufbau der Steuerungs-Platine

Nun wurden die Sockel und Buchsen in einer Lochrasterplatine befestigt und die entsprechenden Verbindungen mit Drahtbrücken oder Kabeln analog zum Breadboard-Aufbau umgesetzt:

IC-Sockel auf der Platine
Abb.: Micro-USB-Buchse und IC-Sockel werden auf der Platine angebracht.
Rückseite der Lochrasterplatine
Abb.: Auf der Rückseite der Lochrasterplatine werden die notwendigen Verbindungen gelötet.
ICs werden in Sockel gesetzt
Abb.: Nach Beendigung der Lötarbeiten werden die ICs in die Sockel gesetzt und die Steuerung kann ausprobiert werden.

Aufbau des Zen-Gartens

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.

Profil der Schale
Abb.: Profil der Schale (als Vorlage für die Datei pond.scad)

Auch die darunter befindliche Basis, welche später die Elektronik und den Motor beinhalten sollen, wurden auf dieselbe Weise wie die Schale erstellt.

Profil der Basis
Abb.: Profil der Basis (als Vorlage für die Datei base.scad)

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:

3D-Vorschau des rotierenden Zen-Gartens
Abb.: 3D-Vorschau des rotierenden Zen-Gartens als Animation

Die benötigten 3D-Dateien können hier alle heruntergeladen werden:

Schale für Sand

Schale für Sand

Dies ist die Schale, die mit drei Schrauben an der Basis montiert und dann der Sand eingefüllt wird.

pond.scad

Basis

Basis

Die Basis wird unter die Schale geschraubt und nimmt Motor und die Steuerungselektronik auf.

base.scad

Rechen

Rechen

Der Rechen wird nach der Montage auf den Adapter für den Schrittmotor gesteckt.

linear_wiper.scad

Adapter für Schrittmotor

Adapter für Schrittmotor

Der Adapter verbindet den Schrittmotor mit dem Rechen.

stepper_adapter.scad

Zusammenbau

Nach dem Ausdruck der Basis können nun die Steuerungs-Platine und der Schrittmotor eingebaut werden:

Schrauben zur Befestigung des Schrittmotors
Abb.: Schrauben zur Befestigung des Schrittmotors (aus einem ausgeschlachtetem, unbekanntem Gerät)
Schrittmotor wird befestigt
Abb.: Der Schrittmotor wird in seiner Aufnahme festgeschraubt. (Die Schrauben sollten nicht zu fest gedreht werden, damit sie nicht aus der Verankerung platzen)
Fertige Basis des Zen-Gartens
Abb.: Die Steuerungs-Platine wird nun ebenfalls eingesetzt und u.U. verklebt. Nachdem der Schrittmotor damit verbunden wurde, ist die Basis des Zen-Gartens fertig.

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.

Verwendete Dekosand von TEDi
Abb.: Dieser Dekosand wurde für einen ersten Test des Zen-Gartens verwendet. Es wäre schöner, wenn ein gewisser Teil der Sandkörner etwas anders gefärbt wäre, aber dies kann man noch nachholen...

Fertiger Zen-Garten

Automatischer Zen-Garten mit weißem Sand (3,5MB).

Stromverbrauch

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