Obsah:

Kolébka kolébky Arduino: 19 kroků (s obrázky)
Kolébka kolébky Arduino: 19 kroků (s obrázky)

Video: Kolébka kolébky Arduino: 19 kroků (s obrázky)

Video: Kolébka kolébky Arduino: 19 kroků (s obrázky)
Video: Robot: What is my purpose... 2024, Červenec
Anonim
Image
Image

Omlouvám se, nemohl jsem odolat zběsilé intenzivní hudbě, kterou navrhovala moje úprava videa.

Nedávno jsem měl své první dítě a už jsem měl dřevěnou kolébku, kterou pro mého synovce vyrobil můj strýc (který je úžasný dřevorubec). Můj synovec to už dávno přerostl, takže jsem to rád vzal a vyhnul jsem se utrácení VŠECH PENĚZ za jakoukoli kolébku/kočárek, na který maminka bloggerky omdlela mou ženu. Kolébka je velmi jednoduchá konstrukce, v zásadě dvě stojky se šrouby, které podpírají tělo kolébky. K dispozici je odnímatelný kolík, který jej zajistí na místě.

Během několika týdnů jsme zjistili, že často dokážeme potlačit lehkou rozrušenost tím, že trochu kolébáme, dokud se náš chlapec neusadil. V noci, kdy jsme to zjistili, jsem strávil několik 10 minut úseků pozdě v noci s paží sahající zpod přikrývky, ospale se kolébal, šťastný, že jsem našel způsob, jak ho uklidnit, aniž bych sám vstal z postele. ráno jsem připevnil provázek a malou karabinu, abych mohl kolébat, aniž bych musel natahovat ruku.

Ráno poté jsem začal brainstormingovat způsob, jak pro mě to dítě prostě rozjet robotem. Vstupte do Arduina…

Zásoby

Dobře, toto byl můj první projekt Arduino, takže jsem experimentoval a zkoušel a omyl, a jsem si jistý, že v mém designu je prostor pro vylepšení, ale tady je můj dílčí seznam: Arduino Uno (13 dolarů) za ovládání všeho sada (10 $) pro připojení vodičů

Krokový motor (14 $) Toto je nejzábavnější kousek, protože je to věc, která dělá veškerou práci. Začal jsem s trochu nižším točivým momentem, ale pak jsem dostal tento a funguje docela dobře. Klidně si pořiďte ještě výkonnější. Ovladače krokových motorů (10–30 $) To sedí mezi Arduino a motor. Tento konkrétní je zjevně schopen řídit motor tišeji než někteří jiní, takže jsem šel s tím, protože motor bude pár stop od mé (a mého syna) hlavy, zatímco budeme spát. Původně jsem si koupil jeden ovladač TMC2209 za ~ 10 $, ale nakonec jsem si koupil balíček 4, protože jsem měl zpočátku nějaké potíže a chtěl jsem se ujistit, že jsem v určitém okamžiku desku nesmažil. Nakonec jsem zabil 3 desky, což mě přivádí k další položce … Kondenzátory! (10 $) Opravdu potřebujete pouze 1 47 uF 50 V kondenzátor, takže tato krabice 240 byla přehnaná. Napájecí zdroj 36 V (17 $) Původně jsem koupil slabé 12 V napájení, pak jsem zjistil, že to je zdroj všech mých potíží a dostal ten, který byl blíže maximálnímu napětí, které můj krokový motor zvládl. Pokud používáte jiný motor nebo krokový ovladač, ujistěte se, že zvládne napětí (V) a že proud (A) zdroje je alespoň tak vysoký jako špičkové zesilovače odebírané motorem. $ 8) Do toho se zapojuje napájecí zdroj. Budete je muset připájet k některým drátům, které se zasunou do vašeho prkénka. Velký balíček propojek (9 $), abych mohl umístit ovládací prvky kamkoli jsem chtěl v místnosti.

Tlačítka (8 $) pro zapnutí/vypnutí atd

Zesilovač mikrofonu (11 $) Nevěděli jste, že to také bylo aktivováno zvukem?

Některé malé kladky (8 $) jsem nakonec použil, ale mohly by existovat lepší alternativy. Více o tom později. Určitě budete také potřebovat páječku a vše, co chcete použít k montáži motoru. Osobně jsem vyrobil hrubou krabici ze 4 přišroubovaných kusů dřeva a poté je přišrouboval k jinému kusu dřeva, který je zhruba na šířku mé kolébky. Prozatím to mám zapnuté, protože nevím, jestli chci strýčkovi strhnout kolébku.

Krok 1: Seznamte se s kolíkem ovladače Stepper

Připojte Arduino 5V/GND k prkénku
Připojte Arduino 5V/GND k prkénku

Modelovací program, který jsem použil, neměl tuto přesnou desku ovladače, takže budete muset odkazovat na tento obrázek. Všechno jsem uspořádal ve stejné orientaci jako tento obrázek.

Krok 2: Připojte Arduino 5V/GND k prkénku

Připojte vodič z Arduino 5V ke kolejnici „+“na jedné straně prkénka Připojte vodič z jednoho z GND Arduino ke kolejnici „-“na stejné straně prkénka

(ignorujte

Krok 3: Připojte kolejnice +/- k VIO/GND

Připojte +/- lišty k VIO/GND
Připojte +/- lišty k VIO/GND

Připojte vodič z kolejnice "-" k GND v levém dolním rohu desky krokového ovladače. Připojte vodič z kolejnice "+" k VIO

Krok 4: Připojte DIR/STEP k digitálním pinům na Arduinu

Připojte DIR/STEP k digitálním pinům na Arduinu
Připojte DIR/STEP k digitálním pinům na Arduinu

Připojte piny DIR a STEP z desky krokového ovladače ke dvěma digitálním pinům na Arduinu. Použil jsem piny 2 a 3, respektive, ale to nevadí, pokud si piny v kódu nastavíte později.

Krok 5: Pojďme dopředu a přidáme ten kondenzátor …

Pojďme dopředu a přidejme ten kondenzátor …
Pojďme dopředu a přidejme ten kondenzátor …

Vypálil jsem 2 desky krokových ovladačů, protože jsem neměl kondenzátor na místě, takže pojďme do toho a přidejte kondenzátor 47uF 50V na piny VM/GND na desce ovladače. Ujistěte se, že pin „-“na kondenzátoru je v kolíku GND na desce (na odpovídající straně kondenzátoru bude „-“)

Krok 6: A jděte dopředu a připojte ten GND

A jděte vpřed a připojte ten GND
A jděte vpřed a připojte ten GND

Na GND, ke kterému jste právě přidali kondenzátor, pokračujte a připojte jej ke stejné kolejnici „-“jako ostatní GND.

Krok 7: Připojte motor k ovladači

Připojte motor k ovladači
Připojte motor k ovladači

Který pin půjde kam, bude záviset na motoru, který jste si koupili, ale ten, který jsem uvedl, má schéma zapojení v seznamu Amazon.

Pro můj motor -

Připojte zelenou a černou k M2B a M2A

Připojte červenou a modrou k M1A a M1B Poznámka: Pokud z nějakého důvodu váš motor nemá schéma, můžete snadno zjistit, které vodiče tvoří obvod, pokud máte multimetr. Nastavte multimetr na nízký zesilovač a nechte odpojit motor. Dotkněte se jednoho z vodičů multimetru jednoho z vodičů motoru a poté vyzkoušejte každý z ostatních vodičů druhým vodičem. Pokud získáte odpor, pak tyto dva vodiče tvoří 1 obvod a další dva tvoří druhý.

Krok 8: Připojte EN, MS1 a MS2 k „-“

Připojte EN, MS1 a MS2 k
Připojte EN, MS1 a MS2 k

Nejsem si úplně jistý, že je to nutné, ale domnívám se, že motor nastaví na menší nastavení mikrokroku na ovladači TMC2209. Můžete je připojit k kolejnici "-", která je jim nejblíže, protože ji později připojíme na druhou stranu.

Krok 9: Pájecí zásuvku zapojte do dvou vodičů

Pájecí zásuvku zapojte do dvou vodičů
Pájecí zásuvku zapojte do dvou vodičů

Nejsem na světě nejlepší v pájení, takže to budete muset hledat jinde, ale já jsem to tak udělal. Konce vodičů jsem ohnul tak, aby ležely naplocho na kabelech konektoru, a poté jsem drát připájel k elektrodě. Neměl jsem žádné smršťovací šňůry, takže jsem je obdivuhodně omotal elektrickou páskou.

Krok 10: Připojte nově pájený konektor

Připojte svůj nově pájený konektor pro ženy
Připojte svůj nově pájený konektor pro ženy

Zatím prosím nezapojujte svůj skutečný napájecí zdroj. Červený vodič do "+", černý do "-"

Krok 11: Připojte je k VM/GND

Připojte je k VM/GND
Připojte je k VM/GND

Připojte ty kolejnice „+“a „-“k VM a vedle něj GND. Ty, na kterých je kondenzátor.

Krok 12: Obdivujte svou ruční práci

Obdivujte svou ruční práci
Obdivujte svou ruční práci

Dobře, nyní máte motor a ovladač kompletně nastavený! Od nynějška budeme jen dělat kontroly. Mimochodem, kupředu:

  • Pokud jste z jakéhokoli důvodu odpojili ovladač, nepokoušejte se jej připojit, když je připojeno napájení 36 V. Zabil jsem takto svoji 3. desku ovladače.
  • Před připojením napájení Arduino zapojte 36V napájení. Osobně jsem nesmažil Arduino, ale po cestě jsem viděl mnoho varování ohledně toho.

Krok 13: Volitelné - zkontrolujte svůj VREF

TMC2209 má potenciometr, který řídí proud do motoru. Pokud máte stejný ovladač jako já, můžete si o tom přečíst zde. Chcete -li upravit nastavení:

  • Odpojte veškeré napájení a odpojte vodiče motoru od ovladače.
  • Odpojte vodič od pinu EN (povolení) na ovladači. Toto je kolík v levém horním rohu.
  • Připojte napájení motoru (36 V)
  • Pomocí multimetru nastaveného na 20 V se dotkněte jednoho vodiče ke zdroji GND (použil jsem drát připojený ke své kolejnici „-“) a druhého kabelu se dotkněte pinu VREF. Nedotýkejte se kabelu ničeho jiného, pokud ano, můžete svůj ovladač zkratovat.
  • Malým šroubovákem jemně nastavte šroub potenciometru. Pro moji desku proti směru hodinových ručiček = větší výkon. Můj VREF osobně čte ~ 0,6V.

Krok 14: Tlačítka

Knoflíky!
Knoflíky!

Dále připojte tlačítka takto. Nepotřebují sílu.

  • Připojte kolejnici „-“knoflíkové lišty k jednomu z GND Arduina. Pokud chcete, můžete ho také jednoduše řetězit z kolejnice „-“na druhém prkénku.
  • Připojte jeden kolík každého tlačítka k kolejnici „-“
  • Připojte další pin každého tlačítka k digitálnímu pinu na Arduinu.

Použil jsem 4 tlačítka: Motor zapnuto/vypnuto

Motor pokračuje

Mikrofon zapnutý

Mikrofon vypnutý

Více o nich, když se dostaneme ke kódu, ale použil jsem odlišná tlačítka mikrofonu jednoduše proto, že jsem neměl LED diody, které by mi daly vědět, zda je mikrofon zapnutý nebo vypnutý, takže díky odlišným tlačítkům zapnutí/vypnutí bylo spolehlivé.

Krok 15: Přidejte desku mikrofonu

Přidejte desku mikrofonu
Přidejte desku mikrofonu

Ten je jednoduchý a Adafruit zde má dobré pokyny (a základy pájení!).

  • Připojte „-“k GND
  • Připojte GND na desce mikrofonu k „-“(můžete přímo připojit GND k GND a přeskočit předchozí krok, opravdu)
  • Připojte VCC k napájení 3,3 V na Arduinu. To je důležité, protože tento napájecí zdroj je méně „hlučný“než 5V, což má za následek lepší čtení mikrofonu
  • Připojte OUT ke kolíku ANALOG IN na Arduinu. Použil jsem A0.

Krok 16: Toto by měl být konečný výsledek

To by měl být konečný výsledek!
To by měl být konečný výsledek!
To by měl být konečný výsledek!
To by měl být konečný výsledek!

Nyní by mělo být vše připraveno. Zde je obrázek konečného diagramu a mé spleti drátů ve skutečnosti. Podívejme se na nějaký kód!

Krok 17: Kód

Dobře, podívejme se na kód! Není to moje nejčistší práce, ale práci zvládne. Přidal jsem komentáře, abych vše vysvětlil, ale mějte se mnou. K tomu všemu jsem použil Arduino IDE (k dispozici zdarma pro Windows a Mac) Jistota je následující: Nastavte rychlost a vzdálenost otáčení motoru.

Nastavte řadu skal (houpaček), které musíte udělat.

Otočte nastavenou vzdálenost o 1 švih. Otočte nastavený počet opakování.

Mezi tím vším sledujte stisknutí tlačítek nebo poslouchejte mikrofon, abyste zjistili, zda by se motor měl zapnout. Budete muset upravit hodnoty rychlosti, vzdálenosti a citlivosti mikrofonu. Rychlost motoru ovlivní hlasitost a točivý moment. Čím rychleji motor běží, tím je hlasitější a tím menší točivý moment. Můj je v současné době téměř tichý, takže je možné jej spustit bez vydávání velkého zvuku.

#include // "standardní" knihovna krokových motorů

//#definujte DEBUG 1 // odkomentujte to, když chcete upravit úrovně mikrofonu // Nastavení tlačítek - ty odpovídají místu, kde jsou digitální piny, které jste připojili k tlačítkům, konstantní motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Nastavení mikrofonu - A0 zde je analogový vstup pro mikrofon. Okno vzorku je v milis konst. Int micPin = A0; const int sampleWindow = 1000; nepodepsaný int vzorek; bool micEnabled = false; dvojnásobná citlivost mikrofonu = 0,53; // to asi budete muset změnit // Pro mě bylo kolem 0,5 dost dobré na to, aby nevystřelilo na malé vrčení // ale bude střílet na malé výkřiky int stepsPerRevolution = 3200; // změňte to tak, aby odpovídalo počtu kroků na otáčku vašeho motoru // Můj motor je 200 kroků/otáčku // Ale nastavil jsem ovladač na 1/16 mikrokroků // takže 200*16 = 3200 … upřímně nevím, jestli toto je správný způsob // jak to udělat Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 jsou piny DIR & STEP int stepCount = 0; int motorSpeed = 95; // budete to muset upravit podle své kolébky a hmotnosti dítěte int numSteps = 90; // Vzdálenost, kterou se motor pohne. // Budete to muset upravit podle poloměru kola, které připojíte // k motoru. To a rychlost bude pravděpodobně pokus a omyl. // Poznámka - vyšší rychlost u krokových motorů = nižší efektivní točivý moment // Pokud nemáte dostatek točivého momentu, váš motor přeskočí kroky (nepohybuje se) int oldmotorButtonValue = HIGH; bool enabled = false; // motor povolený? int loopStartValue = 0; int maxRocks = 100; // kolikrát chcete, aby se spustilo, než vypnete int rockCount = 0; neplatné nastavení () {#ifdef DEBUG Serial.begin (9600); // pro protokolování ladění #endif pinMode (motorEnablePin, INPUT_PULLUP); // Toto je nastavení, aby tlačítka fungovala bez napájení pinMode (continuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // nastaví rychlost motoru na to, co jste zadali dříve} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead jen čte hodnoty tlačítek int continueValue = digitalRead (continuePin); // Toto detekuje stisknutí tlačítka motoru a zabrání jeho spuštění více než jednou za kliknutí, pokud (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {enabled =! Enabled; } micCheck (); // Pokud je motor vypnutý a mikrofon je zapnutý, poslouchejte pláč dítěte, pokud (! Enabled && micEnabled) {if (getMicReading ()> = micSensitivity) enabled = true; } if (enabled) {stepsPerRevolution = stepsPerRevolution * -1; // zpětný směr // S mým nastavením je účinnější couvat při // prvním švihu. Můžete to umístit za smyčku // pokud tomu tak není u vašeho // točení motoru o vzdálenost uvedenou výše pro (int i = loopStartValue; i <numSteps; i ++) {// zaškrtněte pro vypnutí int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Tyto další dva řádky „ukládají“polohu motoru, takže při příštím zapnutí // bude pokračovat v jízdě, jako byste jej nevypnuli. Tím se zabrání vyhazování // vzdálenosti vašich pohybů loopStartValue = i; // uložení pozice stepsPerRevolution = stepsPerRevolution * -1; // zachovat směr oldmotorButtonValue = tempmotorButtonValue; přestávka; } checkContinue (continueValue); // zkontrolujte, zda bylo stisknuto tlačítko pokračovat micCheck (); myStepper.step (stepsPerRevolution / 50); // kolik kroků je třeba provést na jednu smyčku, // to možná budete muset upravit // ujistěte se, že budeme pokračovat v plné vzdálenosti smyčky, pokud je smyčka dokončena // to se projeví, pokud jste sami vypnuli motor a „uložilo“to pozice if (i == numSteps - 1) {loopStartValue = 0; }}} zpoždění (100); // před dalším kamenem pozastavte 100 mil. Budete to muset upravit. pokud (povoleno) checkComplete (); oldmotorButtonValue = motorButtonValue; // toto se používá k zamezení dvojího kliknutí} // Tento kód je přímo od Adafruit. double getMicReading () {unsigned long startMillis = millis (); nepodepsané int peakToPeak = 0; // úroveň špičky-špičky bez znaménka int signalMax = 0; nepodepsaný int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == LOW) enabled = true; vzorek = analogRead (micPin); if (sample signalMax) {signalMax = sample; // uložte pouze maximální úrovně} else if (ukázka = maxRocks) {enabled = false; rockCount = 0; // návrat do střední polohy

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

myStepper.step (stepsPerRevolution * -1 / 50); // krok 1/100 revoluce:

}

} }

Krok 18: Montáž a nastavení kola

Montáž a nastavení kola
Montáž a nastavení kola

To je pro mě stále WIP, protože jak jsem řekl, nejsem si jistý, zda chci do kolébky ještě vložit šrouby.

  • Nasaďte svorku, která bude působit jako rameno vycházející z kolébky, aby moje kolo mohlo táhnout v přímém směru
  • Sešroubováním surové krabice vložte motor a přišroubujte ji k základní desce, kterou jsem upnul na kolébku
  • Vyrobeno na zakázku dřevěné kladkové kolo s otvorem, aby se vešlo dovnitř malé krokové kladkové kolo. Středový otvor jsem udělal velmi těsný a jen jsem ho obalil v kolečku krokové kladky. Do kola jsem vyvrtal otvor do středu, abych měl přístup ke šroubu na kovovém kole kladky a utáhl jej na krokový motor.
  • Z kolébkové „paže“na kolečko spustil provázek. Zajistil jsem provázek tak, že jsem ho protáhl otvorem, který jsem vyvrtal, a jen jsem ho nalepil na místo.

Lepším řešením třetího kroku je koupit si nejprve kladkové kolo s větším průměrem. Můj je uvnitř drážky o průměru méně než 3 palce a funguje opravdu dobře pro mou konkrétní kolébku.

Moje první verze používala místo kola paži. Nefungovalo to tak dobře, protože síla nebyla aplikována konzistentním směrem, a bylo také velmi náchylné k vymrštění, pokud výchozí pozice nebyla správná. Použití kola tyto problémy řeší. Bavil jsem se také pomocí systému malých kladek, ale nakonec jsem to nepotřeboval, protože moje kolo mi poskytlo dostatek točivého momentu.

Krok 19: Konečné nastavení

Konečné nastavení
Konečné nastavení

Připevněte mikrofon k vašemu dítěti, ale na místo, kde nenarazí na žádné dráty. Umístěte tlačítka kamkoli chcete, pokud máte dostatek vodičů, které povedou do konečného cíle. Můžete také jednoduše vyměnit tlačítka za nastavení wifi na arduinu, ale ještě jsem se nedostal tak hluboko. Hodně štěstí!

Doporučuje: