Taula de continguts:

Arduino Cradle Rocker: 19 passos (amb imatges)
Arduino Cradle Rocker: 19 passos (amb imatges)

Vídeo: Arduino Cradle Rocker: 19 passos (amb imatges)

Vídeo: Arduino Cradle Rocker: 19 passos (amb imatges)
Vídeo: USB based Automatic cradle designed for my little princes 2024, De novembre
Anonim
Image
Image

Ho sento, no he pogut resistir la música intensa i divertida que em suggeria l'edició de vídeo.

Fa poc vaig tenir el meu primer fill i ja tenia un bressol de fusta que el meu oncle (que és un fuster impressionant) va fer per al meu nebot. El meu nebot feia molt de temps que ho havia superat, així que vaig estar encantat d’agafar-lo i evitar gastar TOTS ELS DINERS en el bressol / bressol que tinguessin la meva dona per a la meva dona. El bressol és un disseny força senzill, bàsicament amb dos muntants amb cargols que suporten el cos del bressol. Hi ha una clavilla extraïble per bloquejar-la al seu lloc.

Al cap de poques setmanes, vam trobar que sovint podíem sufocar les molèsties lleugeres sacsejant una mica el bressol fins que el nostre noi es va establir. La nit que ho vam saber, vaig passar uns quants estiraments de deu minuts a la nit amb el braç que arribava des de sota de les cobertes, sacsejant-lo adormit, feliç d’haver trobat la manera de calmar-lo sense aixecar-me del llit. al matí vaig adjuntar una corda i un petit mosquetó per poder balancejar el bressol sense haver d'estirar el braç.

L’endemà al matí, vaig començar a fer una pluja d’idees sobre una manera de tenir un robot que feia canviar aquest noi per a mi. Introduïu l'Arduino …

Subministraments

D’acord, aquest va ser el meu primer projecte d’Arduino, així que vaig fer experiments i proves d’error, i estic segur que hi ha marge de millora en el meu disseny, però aquí teniu la llista de parts: Arduino Uno (13 dòlars) per controlar-ho tot kit (10 dòlars) per connectar cables

El motor pas a pas (14 dòlars) Aquesta és la peça més divertida, perquè és el que fa tota la feina. Vaig començar amb un motor de parell lleugerament inferior, però després vaig aconseguir aquest i funciona bastant bé. Si us plau, obtingueu-ne un de més potent. Controladors de motor Stepper (entre 10 i 30 dòlars). Se situa entre l’Arduino i el motor. Aquest específic sembla ser capaç de conduir el motor amb més tranquil·litat que alguns altres, així que vaig anar amb això, ja que el motor estarà a pocs metres del cap (i del meu fill) mentre dormim. Originalment, només vaig comprar un controlador TMC2209 per uns $ 10, però vaig acabar comprant un paquet de 4 perquè al principi tenia algunes dificultats i volia assegurar-me que no hagués fregit el tauler en algun moment. En realitat, vaig acabar matant tres taulers, cosa que em porta al meu següent element … Condensadors! (10 dòlars) Realment només necessiteu un condensador de 50 uF de 50 V, de manera que aquesta caixa de 240 era massa excessiva. Una font d’alimentació de 36 V (17 dòlars) Originalment vaig comprar un subministrament de 12 V i vaig descobrir que allò era la font de tots els meus problemes. i en vaig obtenir un que estava més a prop de la tensió màxima que podia suportar el meu motor pas a pas. Si utilitzeu un motor diferent o un controlador pas a pas, assegureu-vos que pugui controlar la tensió (V) i que l’amperatge (A) del subministrament sigui, com a mínim, tan elevat com els màxims amplificadors del motor. 8 dòlars) A això es connecta la font d'alimentació. Haureu de soldar-los amb alguns cables per ficar-los a la taula de treball. Un paquet gran de ponts (9 dòlars) per poder posar els controls allà on vulgués a l’habitació.

Botons ($ 8) per activar / desactivar, etc.

Un amplificador de micròfon (11 dòlars) Oh, no sabíeu que això també estava activat per so?

Algunes rodes de politja petites (8 dòlars) les vaig acabar fent servir, però potser hi hauria millors alternatives. Més sobre això més endavant. També necessitareu una soldadora i tot el que vulgueu utilitzar per muntar el motor. Personalment, acabo de fer una caixa rugosa de 4 trossos de fusta cargolats, i després els he cargolat a un altre tros de fusta que té aproximadament l’amplada de la cama del bressol. De moment, només el tinc fixat perquè no sé si vull esborrar el bressol del meu oncle.

Pas 1: familiaritzeu-vos amb la configuració del controlador de Stepper

Connecteu Arduino 5V / GND a la vostra taula de pa
Connecteu Arduino 5V / GND a la vostra taula de pa

El programa de modelatge que he utilitzat no tenia aquesta placa de controladors exacta, de manera que haureu de fer referència a aquesta imatge. Ho he ordenat tot amb la mateixa orientació que aquesta imatge.

Pas 2: connecteu Arduino 5V / GND a la vostra taula de pa

Connecteu un cable des de l'Arduino 5V al carril "+" que hi ha a un costat de la placa de connexió Connecteu un cable d'un dels Arduino GND al carril "-" del mateix costat de la placa de control

(ignora el fitxer

Pas 3: connecteu els rails +/- a VIO / GND

Connecteu els rails +/- a VIO / GND
Connecteu els rails +/- a VIO / GND

Connecteu un cable del "-" rail a GND a la part inferior esquerra de la placa de control de passos. Connecteu un cable del rail "+" a VIO

Pas 4: Connecteu DIR / STEP als pins digitals de l'Arduino

Connecteu DIR / STEP als pins digitals de l'Arduino
Connecteu DIR / STEP als pins digitals de l'Arduino

Connecteu els pins DIR i STEP de la placa de control de pas a dos dels pins digitals de l’Arduino. He utilitzat els pins 2 i 3, respectivament, però no importa mentre definiu els pins al vostre codi més endavant.

Pas 5: anem endavant i afegim aquest condensador …

Anem endavant i afegim aquest condensador …
Anem endavant i afegim aquest condensador …

He cremat dues plaques de control de pas a pas perquè no tenia cap condensador al seu lloc, així que anem endavant i afegiu el condensador 47uF 50V als pins VM / GND de la placa de controladors. Assegureu-vos que el "-" pin del condensador es troba al pin GND de la placa de control (hi haurà un "-" al costat corresponent del condensador)

Pas 6: endavant i connecteu aquest GND

I endavant i connecteu GND
I endavant i connecteu GND

Al GND al qual acabeu d'afegir el condensador, continueu i connecteu-lo al mateix carril "-" que l'altre GND.

Pas 7: Connecteu el motor al controlador

Connecteu el motor al controlador
Connecteu el motor al controlador

Quin passador dependrà del motor que hàgiu comprat, però el que he indicat té el diagrama de cablejat a la llista d'Amazon.

Per al meu motor -

Connecteu verd i negre a M2B i M2A

Connecteu vermell i blau a M1A i M1B Nota: si per qualsevol motiu el vostre motor no té un diagrama, podeu esbrinar fàcilment quins cables formen un circuit si teniu un multímetre. Configureu el multímetre a un paràmetre d'ampli baix i desconnecteu el motor. Toqueu un dels cables del multímetre a un dels cables del motor i, a continuació, proveu cadascun dels altres cables amb l’altre cable. Si obteniu una lectura de resistència, aquests dos cables formen 1 circuit i els altres dos formen l’altre.

Pas 8: connecteu EN, MS1 i MS2 a "-"

Connecteu EN, MS1 i MS2 a
Connecteu EN, MS1 i MS2 a

No estic del tot segur que sigui necessari, però crec que defineix el motor a un paràmetre de pas més petit al controlador TMC2209. Podeu connectar-los al "-" ferrocarril més proper a ells, ja que el connectarem a l'altre costat més endavant.

Pas 9: soldeu un connector d'alimentació femella a dos cables

Soldeu un connector d'alimentació femella a dos cables
Soldeu un connector d'alimentació femella a dos cables

No sóc el millor soldador del món, de manera que haureu de buscar-ho en un altre lloc, però he fet el meu així. Vaig doblegar els extrems dels cables de manera que quedessin plans contra els cables del connector i després vaig soldar el cable al cable. No tenia cap material de contracció de calor per cable, així que els vaig embolicar prodigiosament amb cinta elèctrica.

Pas 10: connecteu el connector femení acabat de soldar

Connecteu el connector femení acabat de soldar
Connecteu el connector femení acabat de soldar

Encara no connecteu la font d’alimentació real. Cable vermell a "+", negre a "-"

Pas 11: connecteu-los a VM / GND

Connecteu-les a VM / GND
Connecteu-les a VM / GND

Connecteu els rails "+" i "-" a la màquina virtual i al GND que hi ha al costat. Els que tenen el condensador.

Pas 12: admireu els vostres treballs manuals

Admireu el vostre treball manual
Admireu el vostre treball manual

Molt bé, ara teniu el motor i el controlador completament configurats. A partir d’aquí només farem controls. Per cert, en endavant:

  • Si heu desconnectat el controlador per qualsevol motiu, no intenteu connectar-lo mentre estigueu endollat de 36V. Vaig matar la meva tercera placa del controlador així.
  • Connecteu l’alimentació de 36V abans de connectar-la a l’Arduino. No vaig fregir personalment un Arduino, però al llarg del camí vaig veure molts avisos sobre això.

Pas 13: opcional: comproveu el vostre VREF

El TMC2209 té un potenciòmetre que controla la intensitat del motor. Si teniu el mateix conductor que jo, podeu llegir-ne aquí. Si voleu ajustar la configuració:

  • Desconnecteu tota l'alimentació i desconnecteu els cables del motor del controlador.
  • Desconnecteu el cable al pin EN (enable) del controlador. Aquest és el passador de l'extrem superior esquerre.
  • Connecteu la font d'alimentació del motor (la de 36 V)
  • Amb un multímetre configurat a 20 V, toqueu un cable a una font de GND (he utilitzat un cable connectat al meu carril "-") i toqueu l'altre cable al pin VREF. Si us plau, no toqueu el plom a cap altra cosa; si ho feu, podeu provar el curt conductor.
  • Utilitzeu un petit tornavís per ajustar suaument el cargol del potenciòmetre. Per al meu tauler, en sentit antihorari = més potència. El meu VREF llegeix personalment ~ 0,6V.

Pas 14: botons

Botons!
Botons!

A continuació, connecteu els botons així. No necessiten poder.

  • Connecteu un carril "-" del tauler de control del botó a un dels GND de l'Arduino. També podeu encadenar-lo del "-" rail de l'altra placa si voleu.
  • Connecteu un passador de cada botó al carril "-"
  • Connecteu un altre pin de cada botó a un pin digital de l'Arduino.

He utilitzat 4 botons: Motor encès / apagat

El motor continua

Micròfon encès

Micròfon desactivat

Més informació sobre això quan arribem al codi, però he utilitzat diferents botons de micròfon simplement perquè no tenia LED per fer-me saber si el micròfon estava encès o apagat, de manera que disposar de botons d’encesa / apagat diferents el feia infal·lible.

Pas 15: afegiu la placa de micròfon

Afegiu la placa de micròfon
Afegiu la placa de micròfon

Aquest és senzill i Adafruit té bones instruccions (i bàsics per a soldar!) Aquí.

  • Connecteu "-" a un GND
  • Connecteu GND a la placa de micròfon a "-" (podeu connectar directament GND a GND i ometre el pas anterior, de debò)
  • Connecteu VCC a l’alimentació de 3,3 V de l’Arduino. Això és important, ja que aquesta font d'alimentació és menys "sorollosa" que la de 5 V, cosa que proporciona una millor lectura del micròfon
  • Connecteu OUT a un pin ANALOG IN de l'Arduino. He utilitzat A0.

Pas 16: aquest hauria de ser el resultat final

Aquest hauria de ser el resultat final
Aquest hauria de ser el resultat final
Aquest hauria de ser el resultat final
Aquest hauria de ser el resultat final

Tot hauria d'estar a punt ara. Aquí teniu una imatge del diagrama final i la meva confusió de cables a la realitat. Vegem algun codi.

Pas 17: Codi

D'acord, mirem el codi. Aquest no és el meu treball més net, però fa la feina. He afegit comentaris per explicar-ho tot aquí, però tingueu en compte que he utilitzat Arduino IDE per tot això (disponible a Windows i Mac de forma gratuïta).

Estableix una sèrie de roques (gronxadors) per fer.

Gireu la distància establerta per a 1 oscil·lació. Gireu un nombre determinat de vegades.

Entre tot això, vigileu si premeu els botons o escolteu el micròfon per veure si s’ha d’encendre el motor. Haureu d’ajustar els valors de velocitat, distància i sensibilitat del micròfon. La velocitat del motor afectarà el volum i el parell. Com més ràpid passa el motor, més fort és i menys parell. Actualment, el meu és gairebé silenciós, de manera que és possible que funcioni sense fer gaire so.

#include // biblioteca de motor pas a pas "estàndard"

// # define DEBUG 1 // descomenteu-ho quan vulgueu ajustar els nivells del micròfon // Configuració de botons: corresponen a on els pins digitals que heu connectat als botons const int motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Configuració del micròfon: A0 aquí hi ha l’entrada analògica del micròfon. La finestra de mostra és en millis const int micPin = A0; const int sampleWindow = 1000; mostra int sense signar; bool micEnabled = fals; doble sensibilitat al micròfon = 0,53; // probablement haureu de canviar-ho // Per a mi, al voltant de.5 era prou bo com per no disparar sobre petits arrossegaments // però es dispararà per crits petits int stepsPerRevolution = 3200; // canvieu-ho perquè s'adapti al nombre de passos per revolució del vostre motor // El meu motor té 200 passos / revolució // Però he configurat el controlador a 1/16 microsteps // per tant 200 * 16 = 3200 … sincerament, ni idea si és la manera adequada // de fer això Stepper myStepper (stepsPerRevolution, 2, 3); // 2 i 3 són els pins DIR & STEP int stepCount = 0; int motorSpeed = 95; // l'haureu d'ajustar segons el pes del bressol i del nadó int numSteps = 90; // La distància que es mourà el motor. // Haureu d’ajustar-ho en funció del radi de la roda que fixeu // al vostre motor. És probable que això i la velocitat siguin proves i errors. // Nota: velocitat més alta en motors pas a pas = parell efectiu menor // Si no teniu prou parell, el motor saltarà els passos (no es mourà) int oldmotorButtonValue = HIGH; bool habilitat = fals; // motor activat? int loopStartValue = 0; int maxRocks = 100; // quantes vegades voleu que es balancegi abans d'apagar int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // per al registre de depuració #endif pinMode (motorEnablePin, INPUT_PULLUP); // Aquesta és una configuració perquè els botons funcionin sense pinMode d'alimentació (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // estableix la velocitat del motor a la que heu especificat anteriorment} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead només llegeix els valors del botó int continueValor = digitalRead (continuePin); // Això detecta la pressió del botó del motor i impedeix que es dispari més d'una vegada per cada clic si (motorButtonValue == ALTA && oldmotorButtonValue == BAIX) {enabled =! Enabled; } micCheck (); // Si el motor està apagat i el micròfon està encès, escolteu si el bebè plora si (! Enabled && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } if (activat) {stepsPerRevolution = stepsPerRevolution * -1; // direcció inversa // Amb la meva configuració és més efectiu invertir // al primer oscil·lació. Podeu posar-ho després del bucle // si no és el vostre cas // motor de gir la distància especificada anteriorment per a (int i = loopStartValue; i <numSteps; i ++) {// comproveu si desactiva int tempmotorButtonValue = digitalRead (motorEnablePin); if (TempMotorButtonValue! = motorButtonValue) {RockCount = 0; // Aquestes dues línies següents "guarden" la posició del motor, de manera que la propera vegada que l'engegueu // continuarà viatjant com si no l'haguéssiu apagat. Això impedeix llançar // les vostres distàncies de moviment loopStartValue = i; // desa la posició stepsPerRevolution = stepsPerRevolution * -1; // mantenir la direcció oldmotorButtonValue = tempmotorButtonValue; trencar; } checkContinue (continueValue); // comproveu si es va prémer el botó Continua micCheck (); myStepper.step (stepsPerRevolution / 50); // quants passos heu de fer per bucle, // és possible que hàgiu d'ajustar-lo // assegureu-vos que continuem la distància completa del bucle si el bucle ha acabat // això entra en joc si heu apagat el motor vosaltres mateixos i "ha desat" el posició if (i == numSteps - 1) {loopStartValue = 0; }}} retard (100); // Pausa 100 mil·lis abans de fer la següent roca. Haureu d’ajustar-ho. si (activat) checkComplete (); oldmotorButtonValue = motorButtonValue; // s'utilitza per evitar dobles clics} // Aquest codi prové directament d'Adafruit. doble getMicReading () {unsigned long startMillis = millis (); unsigned int peakToPeak = 0; // nivell pic-a-pic sense signe int signalMax = 0; unsigned int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == BAIX) enabled = true; mostra = analogRead (micPin); if (sample signalMax) {signalMax = sample; // deseu només els nivells màxims} else if (mostra = maxRocks) {enabled = false; rockCount = 0; // torna a la posició mitjana

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

myStepper.step (stepsPerRevolution * -1 / 50); // pas 1/100 d'una revolució:

}

} }

Pas 18: muntatge i configuració de les rodes

Muntatge i configuració de rodes
Muntatge i configuració de rodes

Això segueix sent un WIP per a mi, perquè, com ja he dit, no estic segur de voler posar cargols al bressol.

  • Poseu una pinça perquè actuï com un braç que surt del bressol perquè la meva roda pugui tirar en línia recta
  • Va cargolar una caixa crua per posar el motor i ho vaig cargolar a una placa base, que vaig subjectar a la cama del bressol
  • S'ha creat una roda de fusta personalitzada amb un forat per adaptar-la a la roda de pas petit. Vaig fer el forat central molt ajustat i vaig mallar a la roda de la politja pas a pas. He perforat un forat a través de la roda fins al centre per poder accedir al cargol de la roda de metall de la politja per ajustar-lo al motor pas a pas.
  • Va córrer una corda des del "braç" del bressol fins a la roda. Vaig assegurar la corda fent-la passar pel forat que havia perforat i només la vaig gravar al seu lloc.

La millor solució per al tercer pas és comprar una roda de politja de diàmetre més gran en primer lloc. El meu fa una mica menys de 3 de diàmetre dins de la ranura i funciona molt bé per al meu bressol particular.

La meva primera versió feia servir un braç en lloc d’una roda. No va funcionar gaire bé, ja que la força no s’estava aplicant en una direcció constant, i també era molt susceptible de ser llançada si la posició inicial no era correcta. L’ús d’una roda resol aquests problemes. També em vaig entretenir amb un petit sistema de politges, però vaig acabar sense necessitat perquè la meva roda em donava prou parell.

Pas 19: configuració final

Configuració final
Configuració final

Munteu el micròfon a prop del vostre fill, però en un lloc on no toquin cap cable. Col·loqueu els botons on vulgueu, sempre que tingueu suficients cables per córrer fins a la destinació final. També podeu substituir els botons per una configuració de wifi a l’arduino, però encara no m’he endinsat tant. Bona sort!

Recomanat: