Inhaltsverzeichnis:

Arduino Cradle Rocker - Gunook
Arduino Cradle Rocker - Gunook

Video: Arduino Cradle Rocker - Gunook

Video: Arduino Cradle Rocker - Gunook
Video: Electric baby bouncer - DIY version 2024, Juli
Anonim
Image
Image

Entschuldigung, ich konnte der kitschigen, intensiven Musik nicht widerstehen, die mein Videobearbeitungs-Ding vorgeschlagen hatte.

Ich habe vor kurzem mein erstes Kind bekommen und hatte bereits eine Holzwiege, die mein Onkel (der ein großartiger Holzarbeiter ist) für meinen Neffen gemacht hat. Mein Neffe war ihm längst entwachsen, also nahm ich es gerne und vermied es, DAS GANZE GELD für jedes Kinderbett auszugeben, über das die Mama-Blogger meine Frau in Ohnmacht fallen ließen. Die Wiege ist ein ziemlich einfaches Design, im Grunde zwei Pfosten mit Bolzen durch sie, die den Körper der Wiege stützen. Es gibt einen abnehmbaren Stift, um ihn zu arretieren.

Innerhalb weniger Wochen stellten wir fest, dass wir oft leichte Aufregung unterdrücken konnten, indem wir die Wiege ein wenig schaukelten, bis sich unser Junge beruhigte. In der Nacht, in der wir das herausfanden, verbrachte ich ein paar 10-minütige Dehnübungen spät in der Nacht, wobei ich meinen Arm unter der Bettdecke hervorstreckte und ihn schläfrig wiegte, glücklich, dass ich einen Weg gefunden hatte, ihn zu beruhigen, ohne selbst aus dem Bett zu kommen Morgens befestigte ich eine Schnur und einen kleinen Karabiner, damit ich die Wiege schaukeln konnte, ohne den Arm ausstrecken zu müssen.

Am Morgen danach fing ich an, einen Weg zu finden, wie ich dieses Kind einfach von einem Roboter schaukeln lassen könnte. Betreten Sie das Arduino…

Lieferungen

Ok, dies war mein erstes Arduino-Projekt überhaupt, also habe ich etwas experimentiert und versucht und Fehler gemacht, und ich bin mir sicher, dass es Raum für Verbesserungen in meinem Design gibt, aber hier ist meine Teileliste: Arduino Uno ($ 13) für die Steuerung von allemEin Steckbrett Kit ($10) zum Anschließen von Drähten

Der Schrittmotor (14 $) Dies ist das lustigste Stück, weil es die ganze Arbeit macht. Ich habe mit einem etwas niedrigeren Drehmomenttreiber angefangen, aber dann diesen bekommen und er funktioniert ziemlich gut. Fühlen Sie sich frei, einen noch stärkeren zu bekommen. Schrittmotortreiber (10-30 $) Dies sitzt zwischen dem Arduino und dem Motor. Dieser spezielle Motor ist anscheinend in der Lage, den Motor leiser anzutreiben als einige andere, also habe ich mich damit entschieden, da der Motor ein paar Meter von meinem (und meinem Sohn) Kopf entfernt sein wird, während wir schlafen. Ich habe ursprünglich nur einen TMC2209-Treiber für ~ 10 US-Dollar gekauft, aber am Ende ein 4er-Pack gekauft, weil ich anfangs Schwierigkeiten hatte und sicherstellen wollte, dass ich das Board nicht irgendwann gebraten hatte. Am Ende habe ich tatsächlich 3 Boards getötet, was mich zu meinem nächsten Punkt bringt … Kondensatoren! ($10) Sie brauchen wirklich nur 1 47 uF 50V-Kondensator, also war diese Box mit 240 viel übertrieben und bekam eine, die näher an der maximalen Spannung lag, die mein Schrittmotor verarbeiten konnte. Wenn Sie einen anderen Motor oder Schritttreiber verwenden, stellen Sie sicher, dass dieser die Spannung (V) verarbeiten kann und dass die Stromstärke (A) der Stromversorgung mindestens so hoch ist wie die vom Motor gezogene Spitzenstromstärke. $8) Hier wird das Netzteil eingesteckt. Sie müssen diese an einige Drähte löten, um sie in Ihr Steckbrett zu stecken. Eine große Packung Jumper ($ 9), damit ich die Bedienelemente überall im Raum platzieren konnte.

Tasten ($8) für Ein/Aus usw.

Ein Mikrofonverstärker (11 $) Oh, wussten Sie nicht, dass dies auch geräuschaktiviert ist?

Einige kleine Riemenscheiben ($ 8) habe ich am Ende verwendet, aber es könnte bessere Alternativen geben. Dazu später mehr. Sie benötigen auf jeden Fall auch einen Lötkolben und was auch immer Sie verwenden möchten, um den Motor zu montieren. Ich persönlich habe nur eine grobe Schachtel aus 4 zusammengeschraubten Holzstücken gemacht und diese dann an ein anderes Stück Holz geschraubt, das ungefähr die Breite meines Wiegenbeins hat. Im Moment habe ich es nur festgeklemmt, weil ich nicht weiß, ob ich die Wiege meines Onkels zerstören will.

Schritt 1: Machen Sie sich mit der Pinbelegung Ihres Stepper-Treibers vertraut

Verdrahten Sie Arduino 5V/GND mit Ihrem Steckbrett
Verdrahten Sie Arduino 5V/GND mit Ihrem Steckbrett

Das von mir verwendete Modellierungsprogramm hatte nicht genau diese Treiberplatine, daher müssen Sie auf dieses Bild verweisen. Ich habe alles in der gleichen Ausrichtung wie dieses Bild angeordnet.

Schritt 2: Verdrahten Sie Arduino 5V/GND mit Ihrem Steckbrett

Verbinden Sie einen Draht vom Arduino 5V mit der "+" Schiene auf einer Seite Ihres SteckbrettsVerbinden Sie einen Draht von einem der Arduino GNDs mit der "-" Schiene auf der gleichen Seite des Steckbretts

(Ignoriere das

Schritt 3: Verbinden Sie die +/- Schienen mit VIO/GND

Verbinden Sie die +/- Schienen mit VIO/GND
Verbinden Sie die +/- Schienen mit VIO/GND

Verbinden Sie einen Draht von der "-" Schiene mit GND unten links auf der Stepper-Treiberplatine. Verbinden Sie einen Draht von der "+" Schiene mit VIO

Schritt 4: Verbinden Sie DIR / STEP mit digitalen Pins auf dem Arduino

Verbinden Sie DIR/STEP mit digitalen Pins auf dem Arduino
Verbinden Sie DIR/STEP mit digitalen Pins auf dem Arduino

Verbinden Sie die DIR- und STEP-Pins von der Stepper-Treiberplatine mit zwei der digitalen Pins des Arduino. Ich habe die Pins 2 bzw. 3 verwendet, aber es spielt keine Rolle, solange Sie die Pins später in Ihrem Code setzen.

Schritt 5: Lassen Sie uns diesen Kondensator hinzufügen …

Lassen Sie uns weitermachen und diesen Kondensator hinzufügen …
Lassen Sie uns weitermachen und diesen Kondensator hinzufügen …

Ich habe 2 Stepper-Treiberplatinen ausgebrannt, weil ich keinen Kondensator hatte, also lass uns den 47uF 50V-Kondensator zu den VM / GND-Pins auf der Treiberplatine hinzufügen. Stellen Sie sicher, dass sich der "-" -Pin des Kondensators im GND-Pin des Steckbretts befindet (auf der entsprechenden Seite des Kondensators befindet sich ein "-")

Schritt 6: Und gehen Sie voran und verbinden Sie diese GND

Und mach weiter und verbinde diese GND
Und mach weiter und verbinde diese GND

Verbinden Sie auf dem GND, dem Sie gerade den Kondensator hinzugefügt haben, diesen mit derselben "-" Schiene wie den anderen GND.

Schritt 7: Verbinden Sie den Motor mit dem Treiber

Verbinden Sie den Motor mit dem Treiber
Verbinden Sie den Motor mit dem Treiber

Welcher Pin wohin gehört, hängt vom gekauften Motor ab, aber der, den ich aufgelistet habe, hat den Schaltplan auf der Amazon-Liste.

Für meinen Motor -

Verbinden Sie Grün und Schwarz mit M2B und M2A

Verbinden Sie Rot und Blau mit M1A und M1BHinweis: Wenn Ihr Motor aus irgendeinem Grund kein Diagramm hat, können Sie leicht herausfinden, welche Drähte einen Stromkreis bilden, wenn Sie ein Multimeter haben. Stellen Sie Ihr Multimeter auf eine niedrige Ampere-Einstellung ein und lassen Sie Ihren Motor abklemmen. Berühren Sie eines der Multimeterkabel mit einem der Motorkabel und versuchen Sie dann jedes der anderen Kabel mit dem anderen Kabel. Wenn Sie einen Widerstandswert erhalten, bilden diese beiden Drähte einen Stromkreis und die anderen beiden bilden den anderen.

Schritt 8: Verbinden Sie EN, MS1 und MS2 mit "-"

Verbinden Sie EN, MS1 und MS2 mit
Verbinden Sie EN, MS1 und MS2 mit

Ich bin mir nicht ganz sicher, ob dies notwendig ist, aber ich glaube, dass der Motor beim TMC2209-Treiber auf eine kleinere Mikroschritteinstellung eingestellt wird. Sie können sie mit der nächstgelegenen Schiene "-" verbinden, da wir sie später mit der anderen Seite verbinden werden.

Schritt 9: Löten Sie einen weiblichen Stromanschluss an zwei Drähte

Löten Sie einen weiblichen Stromanschluss an zwei Drähte
Löten Sie einen weiblichen Stromanschluss an zwei Drähte

Ich bin nicht der Weltbeste beim Löten, also musst du woanders suchen, aber ich habe meine so gemacht. Ich habe die Enden der Drähte so gebogen, dass sie flach an den Anschlussleitungen anliegen, und dann den Draht an die Leitung gelötet. Ich hatte kein Schrumpfmaterial für Kabel, also habe ich sie nur erstaunlich mit Isolierband umwickelt.

Schritt 10: Schließen Sie Ihre neu gelötete Buchse an

Schließen Sie Ihre neu gelötete Buchse an
Schließen Sie Ihre neu gelötete Buchse an

Bitte stecken Sie Ihr aktuelles Netzteil noch nicht ein. Rotes Kabel an "+", schwarz an "-"

Schritt 11: Verbinden Sie diese mit VM/GND

Verbinden Sie diese mit VM/GND
Verbinden Sie diese mit VM/GND

Verbinden Sie diese "+" und "-" Schienen mit der VM und der GND daneben. Die mit dem Kondensator drauf.

Schritt 12: Bewundern Sie Ihre Handarbeit

Bewundern Sie Ihre Handarbeit
Bewundern Sie Ihre Handarbeit

In Ordnung, Sie haben jetzt den Motor und den Treiber vollständig eingerichtet! Von nun an werden wir nur noch Kontrollen durchführen. Übrigens, in Zukunft:

  • Wenn Sie Ihren Treiber aus irgendeinem Grund getrennt haben, versuchen Sie nicht, ihn anzuschließen, während Ihre 36-V-Stromversorgung angeschlossen ist. Ich habe meine dritte Treiberplatine so getötet.
  • Schließen Sie die 36-V-Stromversorgung an, bevor Sie die Arduino-Stromversorgung anschließen. Ich habe kein Arduino persönlich gebraten, aber auf dem Weg habe ich viele Warnungen dazu gesehen.

Schritt 13: Optional - Überprüfen Sie Ihre VREF

Der TMC2209 verfügt über ein Potentiometer, das den Strom zum Motor steuert. Wenn Sie den gleichen Treiber wie ich haben, können Sie hier darüber nachlesen. Wenn Sie die Einstellung anpassen möchten:

  • Trennen Sie die gesamte Stromversorgung und trennen Sie die Motorkabel vom Treiber.
  • Trennen Sie das Kabel vom EN-Pin (Enable) am Treiber. Dies ist der Pin in der oberen linken Ecke.
  • Schließen Sie Ihre Motorstromversorgung an (die 36V)
  • Berühren Sie mit einem Multimeter, das auf 20 V eingestellt ist, eine Leitung mit einer GND-Quelle (ich habe eine Drahtverbindung zu meiner "-" Schiene verwendet) und berühren Sie die andere Leitung mit dem VREF-Pin. Bitte berühren Sie das Kabel nicht mit etwas anderem, Sie KÖNNEN Ihren Fahrer kurzschließen, wenn Sie dies tun.
  • Verwenden Sie einen kleinen Schraubendreher, um die Potentiometerschraube vorsichtig einzustellen. Für mein Board gegen den Uhrzeigersinn = mehr Leistung. Mein VREF liest persönlich ~ 0,6 V.

Schritt 14: Tasten

Tasten!
Tasten!

Als nächstes verbinden Sie Ihre Tasten so. Sie brauchen keinen Strom.

  • Verbinden Sie eine "-" Schiene Ihres Knopfleistenbretts mit einem der GNDs des Arduino. Sie können es auch einfach von der "-" -Schiene des anderen Steckbretts verketten, wenn Sie möchten.
  • Verbinden Sie einen Stift jeder Taste mit der "-" Schiene
  • Verbinden Sie einen anderen Pin jeder Taste mit einem digitalen Pin auf dem Arduino.

Ich habe 4 Tasten verwendet: Motor ein/aus

Motor weiter

Mikrofon an

Mikrofon aus

Mehr dazu, wenn wir zum Code kommen, aber ich habe unterschiedliche Mikrofontasten verwendet, einfach weil ich keine LEDs hatte, die mich wissen ließen, ob das Mikrofon ein- oder ausgeschaltet war.

Schritt 15: Fügen Sie die Mikrofonplatine hinzu

Fügen Sie die Mikrofonplatine hinzu
Fügen Sie die Mikrofonplatine hinzu

Dieser ist einfach und Adafruit hat hier gute Anweisungen (und Lötgrundlagen!).

  • Verbinden Sie "-" mit einer GND
  • Verbinden Sie GND auf der Mikrofonplatine mit "-" (Sie könnten GND direkt mit GND verbinden und den vorherigen Schritt wirklich überspringen)
  • Verbinden Sie VCC mit der 3,3-V-Stromversorgung des Arduino. Dies ist wichtig, da diese Stromversorgung weniger "geräuschvoll" ist als die 5V, was zu besseren Mikrofonmesswerten führt
  • Verbinden Sie OUT mit einem ANALOG IN-Pin auf dem Arduino. Ich habe A0 verwendet.

Schritt 16: Dies sollte das Endergebnis sein

Dies sollte das Endergebnis sein!
Dies sollte das Endergebnis sein!
Dies sollte das Endergebnis sein!
Dies sollte das Endergebnis sein!

Alles sollte jetzt fertig sein. Hier ist ein Bild des endgültigen Diagramms und meines Wirrwarrs von Drähten in der Realität. Schauen wir uns etwas Code an!

Schritt 17: Code

Ok, schauen wir uns den Code an! Dies ist nicht meine sauberste Arbeit, aber es erledigt die Arbeit. Ich habe Kommentare hinzugefügt, um alles hier zu erklären, aber tragen Sie mit mir. Ich habe Arduino IDE für all dies verwendet (für Windows und Mac kostenlos verfügbar).

Stellen Sie eine Reihe von Felsen (Schaukeln) ein.

Drehen Sie die eingestellte Distanz für 1 Schwung. Schwingen Sie eine bestimmte Anzahl von Malen.

Achten Sie zwischendurch auf Tastendrücke oder hören Sie auf das Mikrofon, um zu sehen, ob sich der Motor einschalten sollte. Sie müssen die Werte für Geschwindigkeit, Entfernung und Mikrofonempfindlichkeit anpassen. Die Motorgeschwindigkeit beeinflusst Lautstärke und Drehmoment. Je schneller der Motor läuft, desto lauter ist er und desto weniger Drehmoment bekommst du. Meins ist derzeit fast geräuschlos, daher ist es möglich, es ohne viel Geräusch zum Laufen zu bringen.

#include // "Standard" Schrittmotorbibliothek

// #define DEBUG 1 // Kommentieren Sie dies, wenn Sie die Mikrofonpegel einstellen möchten // Tasteneinrichtung - diese entsprechen den digitalen Pins, die Sie mit den Tasten verbunden haben const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Mikrofon-Setup - A0 hier ist der analoge Eingang für das Mikrofon. Sample-Fenster ist in Millisekunden const int micPin = A0; const int sampleWindow = 1000; unsigned int-Beispiel; bool micEnabled = false; doppelte micSensitivity = 0,53; // Sie müssen dies wahrscheinlich ändern // Für mich war ungefähr.5 gut genug, um nicht bei kleinem Gurren zu feuern // aber bei kleinen Schreien zu feuern int stepsPerRevolution = 3200; // ändern Sie dies, um die Anzahl der Schritte pro Umdrehung für Ihren Motor anzupassen // Mein Motor ist 200 Schritte / Umdrehung // Aber ich habe den Treiber auf 1/16 Mikroschritte eingestellt // also 200 * 16 = 3200 … ehrlich gesagt keine Ahnung, ob das ist der richtige // Weg Stepper myStepper(stepsPerRevolution, 2, 3); // 2 & 3 sind die DIR & STEP-Pins Int stepCount = 0; int motorSpeed = 95; // Sie müssen dies entsprechend Ihrem Wiege- und Babygewicht anpassen int numSteps = 90; // Die Entfernung, die der Motor zurücklegt. // Sie müssen dies basierend auf dem Radius des Rads anpassen, das Sie // an Ihrem Motor befestigen. Dies und die Geschwindigkeit werden wahrscheinlich Versuch und Irrtum sein. // Hinweis - höhere Geschwindigkeit bei Schrittmotoren = niedrigeres effektives Drehmoment // Wenn Sie nicht genug Drehmoment haben, überspringt Ihr Motor Schritte (nicht bewegt) int oldmotorButtonValue = HIGH; bool aktiviert = false; // Motor aktiviert? int loopStartValue = 0; int maxRocks = 100; // Wie oft soll es rocken, bevor es ausgeschaltet wird int rockCount = 0; Void setup () { # ifdef DEBUG Serial.begin (9600); // für Debug-Logging #endif pinMode(motorEnablePin, INPUT_PULLUP); // Dies ist eine Einstellung, damit die Tasten ohne Strom funktionieren pinMode(continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // setzt die Motordrehzahl auf das, was Sie zuvor angegeben haben aufrechtzuerhalten. Void loop () { Int motorButtonValue = digitalRead (motorEnablePin); // digitalRead liest nur Schaltflächenwerte int continueValue = digitalRead (continuePin); // Dies erkennt das Drücken der Motortaste und verhindert, dass sie mehr als einmal pro Klick ausgelöst wird if (motorButtonValue == HIGH && oldmotorButtonValue == LOW) { enabled = !enabled; } Mikrofon Test(); // Wenn der Motor ausgeschaltet und das Mikrofon eingeschaltet ist, hören Sie auf das Weinen des Babys if(!enabled && micEnabled) { if(getMicReading()>= micSensitivity) enabled = true; } if (aktiviert) { SchrittePerRevolution = SchrittePerRevolution * -1; // Richtung umkehren // Mit meinem Setup ist es effektiver, beim // ersten Schwung umzukehren. Sie können dies nach der Schleife einfügen // wenn dies bei Ihrem nicht der Fall ist // Motor um die oben angegebene Distanz drehen for(int i = loopStartValue; i < numSteps; i++) {//auf Ausschalten prüfen int tempmotorButtonValue = digitalRead (motorEnablePin); if(tempmotorButtonValue!= motorButtonValue) { rockCount = 0; // Diese nächsten beiden Zeilen "speichern" die Motorposition, damit sie beim nächsten Einschalten // weiterfährt, als ob Sie sie nicht ausgeschaltet hätten. Dies verhindert das Abwerfen // Ihrer Bewegungsdistanzen loopStartValue = i; // Position speichern stepsPerRevolution = stepsPerRevolution * -1; // Richtung beibehalten oldmotorButtonValue = tempmotorButtonValue; brechen; } checkContinue(continueValue); // prüfen, ob die Schaltfläche Weiter gedrückt wurde micCheck (); myStepper.step (stepsPerRevolution / 50); // wie viele Schritte Sie pro Schleife machen müssen, // Sie müssen dies möglicherweise anpassen // stellen Sie sicher, dass wir die volle Schleifendistanz fortsetzen, wenn die Schleife beendet ist // dies kommt ins Spiel, wenn Sie den Motor selbst ausgeschaltet haben und er dies "gespeichert" hat position if(i == numSteps - 1) { loopStartValue = 0; } } } Verzögerung (100); // pausiere 100 Millisekunden, bevor du den nächsten Rock machst. Sie müssen dies anpassen. if (aktiviert) checkComplete(); oldmotorButtonValue = motorButtonValue; // Dies wird verwendet, um Doppelklicks zu verhindern } // Dieser Code stammt direkt von Adafruit. double getMicReading () { unsigned long startMillis = millis (); unsigned int peakToPeak = 0; // Spitze-zu-Spitze-Pegel ohne Vorzeichen int signalMax = 0; unsigned int signalMin = 1024; while (millis() - startMillis < sampleWindow) { micCheck(); if (digitalRead(motorEnablePin) == LOW) aktiviert = true; Probe = analogRead (micPin); if (Sample signalMax) { signalMax = Sample; // nur die maximalen Level speichern } else if (Beispiel = maxRocks) { aktiviert = falsch; rockCount = 0; // zurück zur mittleren Position

for(int i = loopStartValue; i < numSteps/2; i++){

myStepper.step (stepsPerRevolution * -1 / 50); // Schritt 1/100 einer Umdrehung:

}

} }

Schritt 18: Montage & Rad-Setup

Montage & Laufrad-Setup
Montage & Laufrad-Setup

Dies ist immer noch ein WIP für mich, da ich, wie gesagt, noch nicht sicher bin, ob ich meine Wiege noch verschrauben möchte. Die Art und Weise, wie ich meine montiert habe, ist wie folgt:

  • Setzen Sie eine Klemme ein, um als Arm zu fungieren, der sich von der Halterung löst, damit mein Rad in einer geraden Linie ziehen kann
  • Eine grobe Kiste zusammengeschraubt, um den Motor einzubauen, und diese auf eine Grundplatte geschraubt, die ich an das Wiegebein geklemmt habe
  • Hergestellt aus einem benutzerdefinierten hölzernen Riemenscheibenrad mit einem Loch, um das kleine Schrittscheibenrad im Inneren zu passen. Ich habe das Mittelloch sehr eng gemacht und nur in das Schrittscheibenrad geschlagen. Ich bohrte ein Loch durch das Rad bis zur Mitte, damit ich auf die Schraube am Metallriemenrad zugreifen konnte, um es am Schrittmotor festzuziehen.
  • Lief eine Schnur von der Wiege "Arm" zum Rad. Ich befestigte die Saite, indem ich sie durch das Loch lief, das ich gebohrt hatte, und es einfach festklebte.

Die bessere Lösung für den dritten Schritt besteht darin, zunächst nur ein Riemenscheibenrad mit größerem Durchmesser zu kaufen. Meins hat einen Durchmesser von etwas weniger als 3 in der Nut und funktioniert wirklich gut für meine spezielle Wiege.

Meine erste Version verwendete einen Arm anstelle eines Rades. Es funktionierte nicht annähernd so gut, weil die Kraft nicht in eine gleichmäßige Richtung aufgebracht wurde und es auch sehr anfällig war, abgeworfen zu werden, wenn die Ausgangsposition nicht stimmte. Die Verwendung eines Rades löst diese Probleme. Ich habe auch mit einem kleinen Flaschenzugsystem unterhalten, aber am Ende musste ich es nicht, weil mein Rad mir genug Drehmoment gab.

Schritt 19: Endgültige Einrichtung

Endgültige Einrichtung
Endgültige Einrichtung

Montieren Sie das Mikrofon in der Nähe Ihres Kindes, aber an einem Ort, an dem es keine Kabel treffen kann. Platzieren Sie die Tasten, wo immer Sie möchten, solange Sie genug Kabel haben, um zum endgültigen Ziel zu gelangen. Sie könnten auch einfach die Tasten durch ein WLAN-Setup auf dem Arduino ersetzen, aber ich bin noch nicht so tief gegangen. Viel Glück da draußen!

Empfohlen: