Indholdsfortegnelse:

Arduino Cradle Rocker: 19 trin (med billeder)
Arduino Cradle Rocker: 19 trin (med billeder)

Video: Arduino Cradle Rocker: 19 trin (med billeder)

Video: Arduino Cradle Rocker: 19 trin (med billeder)
Video: DIY Macrame Baby Cradle Tutorial │ How to Make Baby Cradle Macrame Swing │ Macrame Bassinet 2024, Juli
Anonim
Image
Image

Beklager, jeg kunne ikke modstå den corny intense musik, min videoredigerings ting foreslog.

Jeg fik for nylig mit første barn og havde allerede en trævugge, som min onkel (som er en fantastisk træarbejder) lavede til min nevø. Min nevø havde længe vokset det, så jeg var glad for at tage det og undgå at bruge ALLE PENGE på den vugge/bassinet, som morbloggerne fik min kone til at svømme over. Vuggen er et ret simpelt design, stort set to stendere med bolte igennem dem, der understøtter holderen. Der er en aftagelig pind for at låse den på plads.

Inden for et par uger fandt vi ud af, at vi ofte kunne dæmpe let ballade ved at vugge vuggen lidt, indtil vores dreng faldt til ro. Den nat vi fandt ud af det, tilbragte jeg et par 10 minutters strækninger sent om aftenen med min arm, der strakte sig under dækkene, vugget ham søvnigt, glad for at jeg havde fundet en måde at berolige ham på uden at stå ud af sengen selv. morgen fastgjorde jeg en snor og en lille karabinhage, så jeg kunne vugge vuggen uden at skulle strække armen ud.

Morgenen efter begyndte jeg at brainstorme en måde at bare få en robot til at rocke dette barn til mig. Indtast Arduino …

Forbrugsvarer

Ok, dette var mit første Arduino -projekt nogensinde, så jeg lavede nogle eksperimenter og forsøg og fejl, og jeg er sikker på, at der er plads til forbedringer i mit design, men her er min deleliste: Arduino Uno ($ 13) til at kontrollere alt Et brødbræt kit ($ 10) til tilslutning af ledninger

Steppermotoren ($ 14) Dette er det sjoveste stykke, fordi det er det, der gør alt arbejdet. Jeg startede med en lidt lavere drejningsmomentdriver, men fik så denne, og den fungerer ret godt. Få en endnu mere kraftfuld. Trinmotordrivere ($ 10-30) Denne sidder mellem Arduino og motoren. Denne specifikke er tilsyneladende i stand til at køre motoren mere støjsvagt end nogle andre, så jeg gik med det, da motoren kommer til at være et par meter fra mit (og min søns) hoved, mens vi sover. Jeg købte oprindeligt lige en TMC2209 -driver til ~ $ 10, men endte med at købe en pakke med 4, fordi jeg først havde lidt svært ved at ville sikre mig, at jeg ikke havde stegt brættet på et tidspunkt. Jeg endte med faktisk at dræbe 3 tavler, hvilket bringer mig til mit næste emne … Kondensatorer! ($ 10) Du har virkelig kun brug for 1 47 uF 50V kondensator, så denne boks med 240 var for meget. En 36V strømforsyning ($ 17) Jeg købte oprindeligt en lille 12V forsyning, og fandt derefter ud af, at det var kilden til alle mine problemer og fik en, der var tættere på den maksimale spænding, som min steppermotor kunne klare. Hvis du bruger en anden motor eller stepper driver, skal du sørge for, at den kan klare spændingen (V), og at strømforsyningen (A) på forsyningen er mindst lige så høj som den maksimale forstærker trukket af motoren. $ 8) Dette er, hvad strømforsyningen tilsluttes. Du skal lodde disse til nogle ledninger for at stikke i dit brødbræt. En stor pakke jumpere ($ 9), så jeg kunne placere betjeningselementerne, hvor jeg ville i rummet.

Knapper ($ 8) til on/off osv

En mikrofonforstærker ($ 11) Åh, vidste du ikke, at dette også var lydaktiveret?

Nogle små remskiver ($ 8) Jeg endte med at bruge disse, men der kan være bedre alternativer. Mere om det senere. Du skal også helt sikkert bruge et loddejern og hvad du end vil bruge til at montere motoren. Jeg lavede personligt bare en grov æske ud af 4 sammenskruede træstykker og skruede dem derefter til et andet stykke træ, der er nogenlunde bredden på mit vuggeben. For nu har jeg det bare spændt fast, fordi jeg ikke ved, om jeg vil ødelægge min onkels vugge.

Trin 1: Gør dig bekendt med din Stepper Driver Pinout

Tråd Arduino 5V/GND til dit brødbræt
Tråd Arduino 5V/GND til dit brødbræt

Det modelleringsprogram, jeg brugte, havde ikke dette præcise driverkort, så du bliver nødt til at henvise til dette billede. Jeg har arrangeret alt i samme retning som dette billede.

Trin 2: Tilslut Arduino 5V/GND til dit brødbræt

Tilslut en ledning fra Arduino 5V til "+" skinnen på den ene side af dit brødbræt Tilslut en ledning fra en af Arduino GND'erne til "-" skinnen på samme side af brødbrættet

(ignorer

Trin 3: Tilslut +/- skinnerne til VIO/GND

Tilslut +/- skinnerne til VIO/GND
Tilslut +/- skinnerne til VIO/GND

Tilslut en ledning fra "-" skinnen til GND nederst til venstre på stepper driverkortet. Tilslut en ledning fra "+" skinnen til VIO

Trin 4: Tilslut DIR/STEP til digitale pins på Arduino

Tilslut DIR/STEP til digitale pins på Arduino
Tilslut DIR/STEP til digitale pins på Arduino

Tilslut DIR- og STEP -benene fra stepper driverkortet til to af de digitale ben på Arduino. Jeg brugte henholdsvis pins 2 & 3, men det er ligegyldigt, så længe du sætter benene i din kode senere.

Trin 5: Lad os gå fremad og tilføj kondensatoren …

Lad os gå foran og tilføje kondensatoren …
Lad os gå foran og tilføje kondensatoren …

Jeg brændte ud 2 stepper driver boards, fordi jeg ikke havde en kondensator på plads, så lad os gå videre og tilføje 47uF 50V kondensatoren til VM/GND benene på driverkortet. Sørg for, at "-" stiften på kondensatoren er i GND-stiften på brødbrættet (der vil være en "-" på den tilsvarende side af kondensatoren)

Trin 6: Og gå fremad og tilslut den GND

Og gå fremad og tilslut den GND
Og gå fremad og tilslut den GND

På den GND, du lige har tilføjet kondensatoren til, skal du fortsætte og tilslutte den til den samme "-" skinne som den anden GND.

Trin 7: Tilslut motoren til driveren

Tilslut motoren til driveren
Tilslut motoren til driveren

Hvilken pin går hvor, afhænger af den motor, du har købt, men den, jeg har angivet, har ledningsdiagrammet på Amazon -listen.

Til min motor -

Tilslut Green & Black til M2B & M2A

Tilslut rød og blå til M1A & M1B Bemærk: Hvis din motor af en eller anden grund ikke har et diagram, kan du nemt finde ud af, hvilke ledninger der danner et kredsløb, hvis du har et multimeter. Indstil dit multimeter til en lav forstærkerindstilling, og afbryd din motor. Rør ved en af multimeterledningerne til en af motortrådene, og prøv derefter hver af de andre ledninger med den anden ledning. Hvis du får en modstandslæsning, danner de to ledninger 1 kredsløb, og de to andre danner den anden.

Trin 8: Tilslut EN, MS1 og MS2 til "-"

Tilslut EN, MS1 og MS2 til
Tilslut EN, MS1 og MS2 til

Jeg er ikke helt sikker på, at dette er nødvendigt, men jeg tror, at det indstiller motoren til en mindre indstilling af mikrotrin på TMC2209 -driveren. Du kan slutte dem til skinnen "-" nærmest dem, da vi senere vil forbinde den til den anden side.

Trin 9: Lod en kvindelig strømstik til to ledninger

Lod en kvindelig strømstik til to ledninger
Lod en kvindelig strømstik til to ledninger

Jeg er ikke verdens bedste til lodning, så det skal du søge andre steder efter, men det gjorde jeg sådan. Jeg bøjede enderne af ledningerne, så de lå fladt mod stikledningerne og lodde derefter ledningen til ledningen. Jeg havde ingen varmekrympestoffer til ledninger, så jeg pakkede dem bare fantastisk ind med elektrisk tape.

Trin 10: Tilslut din ny loddet kvindestik

Tilslut din ny loddet kvindestik
Tilslut din ny loddet kvindestik

Tilslut ikke din faktiske strømforsyning endnu. Rød ledning til "+", sort til "-"

Trin 11: Tilslut dem til VM/GND

Tilslut dem til VM/GND
Tilslut dem til VM/GND

Tilslut disse "+" og "-" skinner til VM og GND ved siden af. Dem med kondensatoren på.

Trin 12: Beundre dit håndværk

Beundre dit håndværk
Beundre dit håndværk

Okay, du har nu motoren og chaufføren fuldstændig sat op! Fra nu af skal vi bare kontrollere. Forresten, fremad:

  • Hvis du har afbrudt din driver af en eller anden grund, så prøv ikke at tilslutte den, mens din 36V strøm er tilsluttet. Jeg dræbte mit 3. driverkort på den måde.
  • Tilslut 36V -strømmen, før du tilslutter Arduino -strømmen. Jeg stegte ikke personligt en Arduino, men undervejs så jeg mange advarsler om dette.

Trin 13: Valgfri - Kontroller din VREF

TMC2209 har et potentiometer, der styrer strømmen til motoren. Hvis du fik den samme driver som jeg, kan du læse om det her. Hvis du vil justere indstillingen:

  • Afbryd al strøm, og afbryd motorkablerne fra driveren.
  • Afbryd ledningen til EN (aktiver) pin på driveren. Dette er stiften i øverste venstre hjørne.
  • Tilslut din motor strømforsyning (36V)
  • Ved hjælp af et multimeter sæt på 20V skal du røre den ene ledning til en kilde til GND (jeg brugte en ledning til min "-" skinne) og berøre den anden ledning til VREF-stiften. Venligst rør ikke ledningen til noget andet, du kan kortslutte din chauffør, hvis du gør det.
  • Brug en lille skruetrækker til forsigtigt at justere potentiometerskruen. For mit bord mod uret = mere strøm. Min VREF læser personligt ~ 0,6V.

Trin 14: Knapper

Knapper!
Knapper!

Tilslut derefter dine knapper sådan. De har ikke brug for strøm.

  • Tilslut en "-" skinne på dit knapbrødbræt til en af GNU'erne i Arduino. Du kan også bare kæde det af fra det andet breadboards "-" skinne, hvis du vil.
  • Tilslut en stift af hver knap til skinnen "-"
  • Tilslut en anden pin af hver knap til en digital pin på Arduino.

Jeg brugte 4 knapper: Motor tænd/sluk

Motor fortsætter

Mikrofon tændt

Mikrofon slukket

Mere om disse, når vi kommer til koden, men jeg brugte forskellige mikrofonknapper, simpelthen fordi jeg ikke havde LED'er til at lade mig vide, om mikrofonen var tændt eller slukket, så det at have forskellige tænd/sluk -knapper gjorde det idiotsikkert.

Trin 15: Tilføj mikrofonkortet

Tilføj mikrofonkortet
Tilføj mikrofonkortet

Denne er enkel, og Adafruit har gode instruktioner (og grundlag for lodning!) Her.

  • Tilslut "-" til en GND
  • Tilslut GND på mikrofonkortet til "-" (du kan direkte forbinde GND til GND og springe det foregående trin over, virkelig)
  • Tilslut VCC til 3,3V strøm på Arduino. Dette er vigtigt, da denne strømforsyning er mindre "støjende" end 5V, hvilket resulterer i bedre mikrofonaflæsning
  • Slut OUT til en ANALOG IN -pin på Arduino. Jeg brugte A0.

Trin 16: Dette burde være det endelige resultat

Dette burde være det endelige resultat!
Dette burde være det endelige resultat!
Dette burde være det endelige resultat!
Dette burde være det endelige resultat!

Alt skal være klar nu. Her er et billede af det endelige diagram og mit virvar af ledninger i virkeligheden. Lad os se på en kode!

Trin 17: Kode

Ok lad os se på koden! Dette er ikke mit reneste arbejde, men det får jobbet gjort. Jeg har tilføjet kommentarer for at forklare alt her, men vær med mig. Jeg brugte Arduino IDE til alt dette (tilgængeligt på Windows og Mac gratis) Nøglen er dette: Indstil en motorhastighed og afstand til at dreje.

Indstil et antal sten (gynger), der skal laves.

Drej den indstillede afstand i 1 sving. Sving et bestemt antal gange.

Mellem alt dette skal du holde øje med knappetryk eller lytte til mikrofonen for at se, om motoren skal tænde. Du bliver nødt til at justere værdier for hastighed, afstand og mikrofonfølsomhed. Motorhastighed påvirker lydstyrke og drejningsmoment. Jo hurtigere motoren går, jo højere er den, og jo mindre drejningsmoment får du. Min er i øjeblikket næsten lydløs, så det er muligt at få den til at køre uden at lave meget lyd.

#include // "standard" stepper motorbibliotek

//#definer DEBUG 1 // kommenter dette, når du vil justere mikrofonniveauer // Knapopsætning - disse svarer til, hvor de digitale ben, du tilsluttede knapperne const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Mikrofonopsætning - A0 her er den analoge indgang til mikrofonen. Prøvevindue er i millis const int micPin = A0; const int sampleWindow = 1000; usigneret int prøve; bool micEnabled = falsk; dobbelt mikrofølsomhed = 0,53; // du skal sandsynligvis ændre dette // For mig var omkring.5 godt nok til ikke at skyde på små sno // men vil affyre for små skrig int stepsPerRevolution = 3200; // ændre dette, så det passer til antallet af trin pr. omdrejning for din motor // Min motor er 200 trin/omdrejning // Men jeg indstiller driveren til 1/16 mikrotrin // så 200*16 = 3200 … ærlig talt aner jeg ikke, om dette er den rigtige måde // for at gøre dette Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 er DIR & STEP -benene int stepCount = 0; int motorSpeed = 95; // du skal justere dette efter din vugge & babyvægt int numSteps = 90; // Den afstand motoren bevæger sig. // Du skal justere dette baseret på radius af det hjul, du sætter // til din motor. Dette og hastighed vil sandsynligvis være forsøg og fejl. // Bemærk - højere hastighed på steppermotorer = lavere effektivt drejningsmoment // Hvis du ikke har nok drejningsmoment, springer din motor over trin (ikke bevæger sig) int oldmotorButtonValue = HIGH; bool aktiveret = falsk; // motor aktiveret? int loopStartValue = 0; int maxRocks = 100; // hvor mange gange du vil have det til at rocke, før int rockCount = 0; ugyldig opsætning () {#ifdef DEBUG Serial.begin (9600); // til logning af fejlfinding #endif pinMode (motorEnablePin, INPUT_PULLUP); // Dette er en indstilling for, at knapperne kan fungere uden power pinMode (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // indstiller motorhastigheden til det, du tidligere har angivet} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead læser bare knapværdier int continueValue = digitalRead (continuePin); // Dette registrerer tryk på motorknappen og forhindrer den i at udløse mere end én gang pr. Klik, hvis (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Hvis motoren er slukket, og mikrofonen er tændt, skal du lytte efter babygråd, hvis (! Aktiveret && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } hvis (aktiveret) {stepsPerRevolution = stepsPerRevolution * -1; // omvendt retning // Med mit setup er det mere effektivt at bakke om // det første sving. Du kan sætte dette efter sløjfen // hvis det ikke er tilfældet for din // spin -motor afstanden angivet ovenfor for (int i = loopStartValue; i <numSteps; i ++) {// tjek for deaktivering af int tempmotorButtonValue = digitalRead (motorEnablePin); hvis (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Disse næste to linjer "gemmer" motorpositionen, så næste gang du tænder den // fortsætter den med at rejse, som om du ikke havde slukket den. Dette forhindrer afkastning // dine bevægelsesafstande loopStartValue = i; // Gem position stepsPerRevolution = stepsPerRevolution * -1; // opretholde retning oldmotorButtonValue = tempmotorButtonValue; pause; } checkContinue (continueValue); // Kontroller, om der blev trykket på Fortsæt -knappen micCheck (); myStepper.step (stepsPerRevolution / 50); // hvor mange trin der skal tages pr sløjfe, // du skal muligvis justere dette // sørg for at fortsætte fuld sløjfe afstand, hvis sløjfen er færdig // dette spiller ind, hvis du slukkede motoren selv og det "gemte" position hvis (i == numSteps - 1) {loopStartValue = 0; }}} forsinkelse (100); // pause 100 millis, før du laver den næste sten. Du skal justere dette. hvis (aktiveret) checkComplete (); oldmotorButtonValue = motorButtonValue; // denne bruges til at forhindre dobbeltklik} // Denne kode er direkte fra Adafruit. dobbelt getMicReading () {usigneret lang startMillis = millis (); usigneret int peakToPeak = 0; // peak-to-peak niveau usigneret int signalMax = 0; usigneret int signalMin = 1024; mens (millis () - startMillis <sampleWindow) {micCheck (); hvis (digitalRead (motorEnablePin) == LOW) aktiveret = true; sample = analogRead (micPin); hvis (sample signalMax) {signalMax = sample; // gem kun de maksimale niveauer} else if (sample = maxRocks) {aktiveret = falsk; rockCount = 0; // vende tilbage til den midterste positio

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

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

}

} }

Trin 18: Montering og hjulopsætning

Montering og hjulopsætning
Montering og hjulopsætning

Dette er stadig et WIP for mig, for som sagt er jeg ikke sikker på, at jeg vil sætte skruer i min vugge endnu.

  • Sæt en klemme til at fungere som en arm, der kommer ud af vuggen, så mit hjul kan trække i en lige linje
  • Skruede en rå kasse sammen for at sætte motoren i, og skruede den fast på en bundplade, som jeg spændte fast i vuggen
  • Lavet et skræddersyet trissehjul med et hul, der passer til det lille stepper remskivehjul indeni. Jeg lavede midterhullet meget stramt og bare malet i stepper remskive hjulet. Jeg borede et hul gennem hjulet til midten, så jeg kunne få adgang til skruen på metalskivehjulet for at stramme det til trinmotoren.
  • Kørte en snor fra vuggen "arm" til hjulet. Jeg sikrede snoren ved at køre den gennem det hul, jeg havde boret, og bare tape den på plads.

Den bedre løsning til det tredje trin er bare at købe et remskive med større diameter i første omgang. Min er lidt under 3 i diameter inde i rillen og fungerer rigtig godt til min særlige vugge.

Min første version brugte en arm i stedet for et hjul. Det fungerede ikke nær så godt, fordi kraften ikke blev anvendt i en konsekvent retning, og det var også virkelig modtageligt for at blive smidt af, hvis startpositionen ikke var korrekt. Brug af et hjul løser disse problemer. Jeg underholdt også ved hjælp af et lille remskive system, men endte ikke med at skulle, fordi mit hjul gav mig nok drejningsmoment.

Trin 19: Endelig opsætning

Endelig opsætning
Endelig opsætning

Monter mikrofonen tæt på dit barn, men på et sted, hvor de ikke kommer til at ramme nogen ledninger. Sæt knapperne, hvor du vil, så længe du har nok ledninger til at køre til den endelige destination. Du kan også bare erstatte knapperne med et wifi -setup på arduinoen, men jeg er ikke gået så dybt endnu. Held og lykke derude!

Anbefalede: