Innehållsförteckning:

Arduino Cradle Rocker: 19 steg (med bilder)
Arduino Cradle Rocker: 19 steg (med bilder)

Video: Arduino Cradle Rocker: 19 steg (med bilder)

Video: Arduino Cradle Rocker: 19 steg (med bilder)
Video: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, Juli
Anonim
Image
Image

Jag kunde tyvärr inte motstå den otroliga intensiva musik som min videoredigeringssak föreslog.

Jag fick nyligen mitt första barn och hade redan en trävagga som min farbror (som är en fantastisk träarbetare) gjorde till min brorson. Min brorson hade länge vuxit ur det, så jag tog det gärna och slippade spendera ALLA PENGAR på vilken vagga/vagn som mammabloggarna fick min fru att svälla över. Vaggan är en ganska enkel design, i princip två stolpar med bultar genom dem som stöder vaggkroppen. Det finns en avtagbar pinne för att låsa den på plats.

Inom några veckor upptäckte vi att vi ofta kunde dämpa lätt oro genom att gunga vaggan lite tills vår pojke slog sig ner. Natten vi fick reda på det tillbringade jag några tio minuters sträckor sent på kvällen med armen som sträckte mig under täcket, vaggade honom sömnt, glad att jag hade hittat ett sätt att lugna honom utan att själv kliva upp ur sängen. på morgonen satte jag på en snöre och en liten karbinhake så att jag kunde vagga vaggan utan att behöva sträcka ut armen.

Morgonen efter det började jag brainstorma ett sätt att bara få en robot att rocka det här barnet åt mig. Ange Arduino …

Tillbehör

Ok, det här var mitt första Arduino -projekt någonsin, så jag testade och testade och fel, och jag är säker på att det finns utrymme för förbättringar i min design, men här är min lista: Arduino Uno ($ 13) för att styra allt. kit ($ 10) för anslutning av ledningar

Stegmotorn ($ 14) Detta är det roligaste stycket, för det är det som gör allt arbete. Jag började med en något lägre vridmomentförare, men fick sedan den här och den fungerar ganska bra. Skaffa gärna en ännu kraftfullare. Stegmotordrivrutiner ($ 10-30) Detta sitter mellan Arduino och motorn. Denna specifika kan tydligen köra motorn tystare än några andra, så jag gick med det eftersom motorn kommer att vara några meter från mitt (och min sons) huvud medan vi sover. Jag köpte ursprungligen bara en TMC2209 -drivrutin för ~ $ 10, men slutade köpa ett paket med 4 eftersom jag hade lite svårt i början och ville se till att jag inte hade stekt brädan någon gång. Jag slutade faktiskt med att döda 3 brädor, vilket tar mig till mitt nästa objekt … Kondensatorer! ($ 10) Du behöver egentligen bara 1 47 uF 50V kondensator, så den här lådan med 240 var överkill. 36V strömförsörjning ($ 17) Jag köpte ursprungligen en liten 12V -strömförsörjning och fick då reda på att det var källan till alla mina problem och fick en som var närmare maxspänningen som min stegmotor kunde hantera. Om du använder en annan motor eller stegmotor, se till att den klarar spänningen (V) och att strömstyrkan (A) på matningen är minst lika hög som toppförstärkarna som dras av motorn. $ 8) Detta är vad strömförsörjningen ansluts till. Du måste löda dessa till några trådar för att sticka in i din brödbräda. Ett stort paket hoppare ($ 9) så att jag kunde sätta kontrollerna var jag ville i rummet.

Knappar ($ 8) för på/av osv

En mikrofonförstärkare ($ 11) Åh, visste du inte att detta var ljudaktiverat också?

Några små remskivor ($ 8) Jag slutade använda dessa, men det kan finnas bättre alternativ. Mer om det senare. Du kommer definitivt att behöva ett lödkolv och vad du än vill använda för att montera motorn. Jag personligen gjorde bara en grov låda av 4 skruvade ihop träbitar och skruvade sedan dem till en annan träbit som är ungefär bredden på mitt vaggben. För tillfället har jag bara spänt fast det för jag vet inte om jag vill skada min farbrors vagga.

Steg 1: Bekanta dig med din Stepper Driver Pinout

Anslut Arduino 5V/GND till din brödbräda
Anslut Arduino 5V/GND till din brödbräda

Modellprogrammet jag använde hade inte detta exakta drivrutinkort, så du måste referera till den här bilden. Jag har ordnat allt i samma riktning som den här bilden.

Steg 2: Anslut Arduino 5V/GND till din brödbräda

Anslut en kabel från Arduino 5V till "+"-skenan på ena sidan av din brödbräda Anslut en kabel från en av Arduino GND till "-"-skenan på samma sida av brödbrädet

(ignorera

Steg 3: Anslut +/- skenorna till VIO/GND

Anslut +/- Rails till VIO/GND
Anslut +/- Rails till VIO/GND

Anslut en kabel från "-"-skenan till GND längst ned till vänster på stegdrivrutinen. Anslut en kabel från "+"-skenan till VIO

Steg 4: Anslut DIR/STEP till Digital Pins på Arduino

Anslut DIR/STEP till Digital Pins på Arduino
Anslut DIR/STEP till Digital Pins på Arduino

Anslut DIR- och STEP -stiften från stegdrivarkortet till två av de digitala stiften på Arduino. Jag använde stift 2 respektive 3, men det spelar ingen roll så länge du sätter in stiften i koden senare.

Steg 5: Låt oss gå framåt och lägg till kondensatorn …

Låt oss gå framåt och lägg till den kondensatorn …
Låt oss gå framåt och lägg till den kondensatorn …

Jag brände ut 2 stegdrivrutinkort eftersom jag inte hade en kondensator på plats, så låt oss fortsätta och lägg till 47uF 50V -kondensatorn i VM/GND -stiften på förarkortet. Se till att "-" stiftet på kondensatorn sitter i GND-stiftet på brödbrädet (det kommer att finnas ett "-" på motsvarande sida av kondensatorn)

Steg 6: Och gå framåt och anslut den GND

Och gå framåt och anslut den GND
Och gå framåt och anslut den GND

På GND som du precis har lagt kondensatorn till, fortsätt och anslut den till samma "-" skena som den andra GND.

Steg 7: Anslut motorn till drivrutinen

Anslut motorn till drivrutinen
Anslut motorn till drivrutinen

Vilken stift går vart beror på motorn du köpte, men den jag listade har kopplingsschemat på amazonlistan.

För min motor -

Anslut Green & Black till M2B & M2A

Anslut rött och blått till M1A & M1B Obs! Om din motor av någon anledning inte har ett diagram kan du enkelt räkna ut vilka ledningar som bildar en krets om du har en multimeter. Ställ in din multimeter på en låg amp -inställning och koppla ur din motor. Rör vid en av multimeterledarna till en av motorkablarna och prova sedan var och en av de andra ledningarna med den andra ledningen. Om du får en resistansavläsning bildar de två ledningarna en krets, och de andra två bildar den andra.

Steg 8: Anslut EN, MS1 och MS2 till "-"

Anslut EN, MS1 och MS2 till
Anslut EN, MS1 och MS2 till

Jag är inte helt säker på att detta är nödvändigt, men jag tror att det ställer in motorn till en mindre mikrosteginställning på TMC2209 -drivrutinen. Du kan ansluta dem till skenan "-" närmast dem, eftersom vi kommer att ansluta den till andra sidan senare.

Steg 9: Löd en kvinnlig strömkontakt till två ledningar

Löd en kvinnlig strömkontakt till två ledningar
Löd en kvinnlig strömkontakt till två ledningar

Jag är inte världens bästa på att löda, så du måste leta någon annanstans efter det, men jag gjorde mitt så. Jag böjde trådarnas ändar så att de låg platt mot anslutningsledningarna och lödde sedan kabeln till ledningen. Jag hade inga värmekrympande grejer så jag slog in dem alldeles utmärkt med eltejp.

Steg 10: Anslut din nylödda honkontakt

Anslut din nylödda honkontakt
Anslut din nylödda honkontakt

Anslut inte din faktiska strömförsörjning ännu. Röd ledning till "+", svart till "-"

Steg 11: Anslut dem till VM/GND

Anslut dem till VM/GND
Anslut dem till VM/GND

Anslut dessa "+"-och "-" -skenor till VM och GND bredvid den. De med kondensatorn på.

Steg 12: Beundra ditt handarbete

Beundra ditt handarbete
Beundra ditt handarbete

Okej, nu har du motorn och föraren helt inställda! Härifrån kommer vi bara att göra kontroller. Förresten, framåt:

  • Om du har kopplat bort din drivrutin av någon anledning, försök inte att ansluta den medan din 36V -ström är inkopplad. Jag dödade mitt tredje drivkort så.
  • Anslut 36V -strömmen innan du ansluter Arduino -strömmen. Jag stekte inte personligen en Arduino, men på vägen såg jag många varningar om detta.

Steg 13: Valfritt - Kontrollera din VREF

TMC2209 har en potentiometer som styr strömmen till motorn. Om du fick samma förare som jag, kan du läsa om det här. Om du vill justera inställningen:

  • Koppla bort all ström och koppla bort motorkablarna från föraren.
  • Koppla bort kabeln till EN -knappen (aktivera) på drivrutinen. Detta är stiftet i det övre vänstra hörnet.
  • Anslut din motorns strömförsörjning (36V)
  • Använd en multimeter som är inställd på 20V, rör en ledning till en GND-källa (jag använde en kabelanslutning till min "-" skena) och rör den andra ledningen till VREF-stiftet. Vänligen rör inte ledningen till något annat, du kan korta din förare om du gör det.
  • Använd en liten skruvmejsel för att försiktigt justera potentiometerskruven. För min bräda, moturs = mer kraft. Min VREF läser personligen ~ 0,6V.

Steg 14: Knappar

Knappar!
Knappar!

Anslut sedan dina knappar så. De behöver inte ström.

  • Anslut en "-" skena på din knappbrödbräda till en av GNU: arna på Arduino. Du kan också bara kedja av den från andra brödbrädans "-" skena om du vill.
  • Anslut en stift av varje knapp till skenan "-"
  • Anslut en annan stift av varje knapp till en digital stift på Arduino.

Jag använde fyra knappar: Motor på/av

Motorn fortsätter

Mikrofon på

Mikrofonen avstängd

Mer om dessa när vi kommer till koden, men jag använde distinkta mikrofonknappar helt enkelt för att jag inte hade lysdioder för att meddela mig om mikrofonen var på eller av, så att ha distinkta på/av -knappar gjorde det idiotsäkert.

Steg 15: Lägg till mikrofonkortet

Lägg till mikrofonkortet
Lägg till mikrofonkortet

Den här är enkel, och Adafruit har bra instruktioner (och lödningsgrunder!) Här.

  • Anslut "-" till en GND
  • Anslut GND på mikrofonkortet till "-" (du kan direkt ansluta GND till GND och hoppa över föregående steg, verkligen)
  • Anslut VCC till 3.3V -strömmen på Arduino. Detta är viktigt eftersom denna strömförsörjning är mindre "bullrig" än 5V, vilket resulterar i bättre mikrofonavläsningar
  • Anslut OUT till en ANALOG IN -stift på Arduino. Jag använde A0.

Steg 16: Detta borde vara det slutliga resultatet

Detta borde vara det slutliga resultatet!
Detta borde vara det slutliga resultatet!
Detta borde vara det slutliga resultatet!
Detta borde vara det slutliga resultatet!

Allt ska vara klart nu. Här är en bild av det slutliga diagrammet och mitt virrvarr av trådar i verkligheten. Låt oss titta på någon kod!

Steg 17: Kod

Ok, låt oss titta på koden! Det här är inte mitt renaste arbete, men det gör jobbet. Jag har lagt till kommentarer för att förklara allt här, men håll ut med mig. Jag använde Arduino IDE för allt detta (tillgängligt på Windows och Mac gratis) Jist är detta: Ställ in en motorhastighet och avstånd att svänga.

Ställ in ett antal stenar (gungor) att göra.

Vrid det inställda avståndet för 1 sväng. Sväng ett visst antal gånger.

Mellan allt detta, titta efter knapptryckningar eller lyssna på mikrofonen för att se om motorn ska slå på. Du måste justera värden för hastighet, avstånd och mikrofonkänslighet. Motorhastighet påverkar volym och vridmoment. Ju snabbare motorn går, desto högre är den och desto mindre vridmoment får du. Min är för närvarande nästan tyst, så det är möjligt att få den att köra utan att göra mycket ljud.

#inkludera // "standard" stegmotorbibliotek

//#definiera DEBUG 1 // kommentera detta när du vill justera mikrofonnivåer // Knappinställningar - dessa motsvarar var de digitala stiften du kopplade till knapparna const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Mikrofoninställning - A0 här är analog -in för mikrofonen. Provfönstret är i millis const int micPin = A0; const int sampleWindow = 1000; osignerat int -prov; bool micEnabled = false; dubbel mikrosensitivitet = 0,53; // du kommer förmodligen att behöva ändra detta // För mig var runt.5 tillräckligt bra för att inte skjuta på små kurrar // men kommer att skjuta för små skrik int stepsPerRevolution = 3200; // ändra detta för att passa antalet steg per varv för din motor // Min motor är 200 steg/varv // Men jag ställer in föraren på 1/16 mikrosteg // så 200*16 = 3200 … ärligt talat ingen aning om detta är det rätta sättet // för att göra detta Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 är DIR & STEP -stiften int stepCount = 0; int motorSpeed = 95; // du måste justera detta efter din vagga & baby vikt int numSteps = 90; // Det avstånd som motorn kommer att röra sig. // Du måste justera detta baserat på radien på hjulet du fäster // till din motor. Detta och hastighet kommer sannolikt att vara försök och fel. // Obs - högre hastighet på stegmotorer = lägre effektivt vridmoment // Om du inte har tillräckligt med vridmoment hoppar din motor över steg (rör sig inte) int oldmotorButtonValue = HIGH; bool aktiverat = falskt; // motor aktiverad? int loopStartValue = 0; int maxRocks = 100; // hur många gånger du vill att den ska rocka innan du stänger av int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // för felsökningsloggning #endif pinMode (motorEnablePin, INPUT_PULLUP); // Detta är en inställning för knapparna att fungera utan power pinMode (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // ställer in motorhastigheten till det du angav tidigare} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead läser bara knappvärden int continueValue = digitalRead (continuePin); // Detta upptäcker motorknapptryckningen och förhindrar att den avfyras mer än en gång per klick om (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Om motorn är avstängd och mikrofonen är på lyssnar du efter att barnet gråter om (! Enabled && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } om (aktiverat) {stepsPerRevolution = stepsPerRevolution * -1; // omvänd riktning // Med min inställning är det mer effektivt att backa på // den första svingen. Du kan lägga detta efter slingan // om det inte är fallet för din // spinnmotor det avstånd som anges ovan för (int i = loopStartValue; i <numSteps; i ++) {// kolla om det är avstängt int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Dessa två nästa rader "sparar" motorpositionen, så att nästa gång du slår på den // fortsätter den att resa som om du inte hade stängt av den. Detta förhindrar att du slänger av // dina rörelseavstånd loopStartValue = i; // spara position stepsPerRevolution = stepsPerRevolution * -1; // behåll riktning oldmotorButtonValue = tempmotorButtonValue; ha sönder; } checkContinue (continueValue); // kontrollera om knappen Fortsätt trycktes ned micCheck (); myStepper.step (stepsPerRevolution / 50); // hur många steg som ska tas per slinga, // du kan behöva justera det position om (i == numSteps - 1) {loopStartValue = 0; }}} fördröjning (100); // pausa 100 millis innan du gör nästa sten. Du måste justera detta. om (aktiverat) checkComplete (); oldmotorButtonValue = motorButtonValue; // detta används för att förhindra dubbelklick} // Denna kod är direkt från Adafruit. dubbel getMicReading () {osignerad lång startMillis = millis (); osignerad int peakToPeak = 0; // topp-till-topp-nivå osignerad int signalMax = 0; osignerad int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); om (digitalRead (motorEnablePin) == LOW) aktiverat = true; sample = analogRead (micPin); if (sample signalMax) {signalMax = sample; // spara bara maxnivåerna} annars if (sample = maxRocks) {aktiverat = falskt; rockCount = 0; // återgå till mitten positio

för (int i = loopStartValue; i <numSteps/2; i ++) {

myStepper.step (stepsPerRevolution * -1 / 50); // steg 1/100 av en revolution:

}

} }

Steg 18: Montering och hjulinställning

Montering och hjulinställning
Montering och hjulinställning

Detta är fortfarande ett WIP för mig, för som sagt är jag inte säker på att jag vill sätta skruvar i min vagga ännu. Så här riggade jag upp min är följande:

  • Sätt en klämma för att fungera som en arm som kommer från vaggan så att mitt hjul kan dra i en rak linje
  • Skruvade ihop en rå låda för att sätta in motorn och skruvade fast den på en bottenplatta, som jag spände fast i hållaren
  • Gjord ett skräddarsytt trissrullehjul med ett hål för att passa det lilla steghjulshjulet inuti. Jag gjorde mitthålet väldigt tätt och bara malleterade i steghjulet. Jag borrade ett hål genom hjulet till mitten så att jag kunde komma åt skruven på metallhjulet för att dra åt det på stegmotorn.
  • Körde ett snöre från vaggan "armen" till hjulet. Jag säkrade strängen genom att köra den genom hålet som jag hade borrat och bara tejpa fast den.

Den bättre lösningen på det tredje steget är att bara köpa ett hjul med större diameter i första hand. Min är lite under 3 i diameter inuti spåret och fungerar riktigt bra för min speciella vagga.

Min första version använde en arm istället för ett hjul. Det fungerade inte lika bra eftersom kraften inte applicerades i en konsekvent riktning, och det var också mycket mottagligt för att bli kastad om startpositionen inte var korrekt. Att använda ett hjul löser dessa problem. Jag roade också med ett litet remskivsystem, men det slutade med att jag inte behövde det eftersom mitt hjul gav mig tillräckligt med vridmoment.

Steg 19: Slutlig installation

Slutlig installation
Slutlig installation

Montera mikrofonen nära ditt barn, men på en plats där de inte kommer att träffa några ledningar. Sätt knapparna var du vill, så länge du har tillräckligt med ledningar för att springa till slutdestinationen. Du kan också bara byta ut knapparna mot en wifi -inställning på arduino, men jag har inte gått så djupt än. Lycka till!

Rekommenderad: