Seifenblasmaschine Programm: Difference between revisions
Fablab admin (talk | contribs) Created page with "=== Beschreibung Sketch === Die hier genannten Variablen dienen zum Abgleich der Seifenblasenmaschine. Je nach Länge des Fadens und des Models des verwendeten Servos ist die Position des Blaserings nicht optimal und kann durch Ändern der 3 Positionsvariablen angeglichen werden. #define posUp 5 #define posCenter 70 #define posDown 150 Die 3 Variablen bestimmen die 3 Servowerte, die der Höhe des Blasrings entsprechen. Mögliche Werte sind zwisc..." |
(No difference)
|
Revision as of 13:25, 30 September 2025
Beschreibung Sketch
Die hier genannten Variablen dienen zum Abgleich der Seifenblasenmaschine. Je nach Länge des Fadens und des Models des verwendeten Servos ist die Position des Blaserings nicht optimal und kann durch Ändern der 3 Positionsvariablen angeglichen werden.
#define posUp 5 #define posCenter 70 #define posDown 150
Die 3 Variablen bestimmen die 3 Servowerte, die der Höhe des Blasrings entsprechen. Mögliche Werte sind zwischen 0 und 180. Es gibt rechtsdrehende und linksdrehende Servos.
- posUp ist die obere Position in der die Seifenblasen geblasen werden. Der Blasering soll nicht in der Mitte des Propeller positioniert werden, sondern in der unteren Hälfte des Propellers, ein Stück oberhalb des Seifenflüssigkeitsbehälter.
- posCenter ist die Zwischenposition zum Abtropfen.
- posDown ist die Position in der Seifenflüssigkeit. Der Blasring darf dabei nicht den Boden berühren da ansonsten der Faden vom Rad springen kann.
uint8_t servoPos[] = {posDown, posCenter, posDown, posUp, posUp, posUp};
uint32_t timePos[] = { 1000, 1000, 1000, 1000, 5000, 600};
uint8_t fanOn[] = { 0, 0, 0, 0, 1, 0};
uint32_t stepDelay = 40;
Die Arrays servoPos[], timePos[] und fanOn[] speichern die Werte für die Höhe des Blasrings, die Zeit in Millisekunden, für die der Blasring in dieser Höhe bleibt und ob der Ventilator ein- oder ausgeschaltet ist. Durch hinzufügen oder löschen von Elementen (gleiche Anzahl von Elementen in jedem Array) ist es möglich, verschiedene Bewegungsmuster des Blasrings zu programmieren. Die Variable stepDelay gibt die Pause zwischen den Zwischenschritten des Servos an. Dadurch macht der Servo eine langsame, geschmeidige Bewegung. Kleinere Werte machen die Bewegung schneller.
switch (mode)
{
case 0:
servoTargetPos = servoPos[actualStep];
…
case 1:
…
if (servoTargetPos > servoActualPos) servoActualPos++;
if (servoTargetPos < servoActualPos) servoActualPos--;
myservo.write(servoActualPos);
…
case 2:
…
fan(fanOn[actualStep]);
…
case 3:
if (millis() - oldmillis >= timePos[actualStep])
{
actualStep ++;
…
mode = 0;
}
}
Der Sketch ist als Schrittkette ausgeführt, die die folgenden Schritte durchführt:
0 Nächste Servoposition aus der Variable holen; 1 Servo zur neuen Position fahren 2 Ventilator ansteuern (ein oder aus) 3 Wartezeit
Verdrahtung
Die Verbindung zwischen dem Servo und dem NANO bzw dem Ventilatormodul und dem NANO werden mittels vorkonfektionierten Steckkabel gemacht.
Für das Ventilatormodul L9110 werden vier 10 cm lange F-F Kabel benötigt. Die Farben sind nicht wichtig. Hat man die freie Farbwahl sollte man schwarz für GND und rot für Vcc bzw +5V nehmen da diese Farben häufig für Stromversorgung verwendet werden.
GND wird mit GND , die Vcc des FAN-Modul mit +5V des NANO verbunden, INA geht auf D2 und INB auf D3.
Es gibt diese Module mit Rechtsdrehenden und Linksdrehenden Luftschrauben. Sollte die Luft in die falsche Richtung blasen, kann man das durch vertauschen der Kabel an INA und INB ändern.
Für den Servo braucht es drei 10 cm M-F Kabel, die den Kabel des Servo verlängern und aufsplitten. Da auf den Steckleisten des NANO nur einmal +5V herausgeführt ist, werden die Pins des Programmiersteckplatz ICSP verwendet und zwar GND, +5V und D11.
Stromversorgung erfolgt über USB und einem Powerbank oder Netzteil mit USB Buchse.
Der Sketch ist für Dauerlauf ausgelegt. Wenn die Seifenblasenflüssigkeit aufgebraucht ist muß man die Maschine manuel von der Stromversorgung nehmen.
Erweiterungen wie zB ein Bewegungssensor damit Seifenblasen nur bei Anwesenheit von Zuschauern geblasen werden oder eine Reflektionslichtschranke, die die Seifenmembran im Blasring erkennt sind denkbar.