Mundarija:

Arduino Cradle Rocker: 19 qadam (rasmlar bilan)
Arduino Cradle Rocker: 19 qadam (rasmlar bilan)

Video: Arduino Cradle Rocker: 19 qadam (rasmlar bilan)

Video: Arduino Cradle Rocker: 19 qadam (rasmlar bilan)
Video: Have you ever seen a bearing installed like this #shorts #satisfying #bearing #asmr #asmrsounds 2024, Iyul
Anonim
Image
Image

Kechirasiz, men videoni tahrir qilish bo'yicha taklif qilgan jo'shqin musiqaga qarshi tura olmadim.

Yaqinda men birinchi bolamni tug'dim va allaqachon amakim (ajoyib yog'och ustasi) jiyanim uchun yasagan yog'och beshikka ega bo'ldim. Mening jiyanim ancha oldin o'sib ulgurgan edi, shuning uchun men uni olganimdan xursand bo'ldim va hamma pulni onam bloggerlari xotinim o'tirgan har qanday beshikka/bassetaga sarflamaslikdan xursand bo'ldim. Beshik - bu juda oddiy dizayn, beshik korpusini qo'llab -quvvatlaydigan ikkita murvat bilan. Uni qulflash uchun olinadigan qoziq bor.

Bir necha hafta o'tgach, biz bolakayimiz joylashguncha beshikni biroz tebratib, tez -tez yengil bezovtalikni bostirishimiz mumkinligini aniqladik. Biz buni bilib olgan kecha, men kechasi kechasi qo'llarim bilan qopqog'im ostiga cho'zilib, uxlab yotgan holda bir necha 10 daqiqalik mashg'ulotlarni o'tkazdim, men o'zimni yotoqdan chiqmasdan tinchlantirish yo'lini topganimdan xursandman. Ertalab men qo'llarimni cho'zmasdan beshikni silkitib qo'yishim uchun ip va ozgina karabina bog'ladim.

Ertasi kuni men o'zim uchun bu bolani robot bilan rok qilish usulini topdim. Arduino -ga kiring …

Ta'minotlar

OK, bu mening birinchi Arduino loyiham edi, shuning uchun men tajriba o'tkazdim, sinov va xato qildim va ishonchim komilki, mening dizaynimni takomillashtirish uchun joy bor, lekin bu erda mening qismlar ro'yxati: hamma narsani boshqarish uchun Arduino Uno ($ 13) simlarni ulash uchun to'plam ($ 10)

Bosqichli dvigatel ($ 14) Bu eng qiziqarli qism, chunki hamma ishni u bajaradi. Men biroz pastroq tork haydovchisidan boshladim, lekin keyin uni oldim va u juda yaxshi ishlayapti. Quvvatli dvigatellar (10-30 dollar) Arduino va dvigatel o'rtasida joylashgan. Ko'rinib turibdiki, bu dvigatel boshqalarga qaraganda jimroq haydashga qodir, shuning uchun men bordim, chunki biz uxlayotganimizda motor mening (va o'g'limning) boshidan bir necha fut uzoqlikda bo'ladi. Men dastlab faqat $ 10 evaziga bitta TMC2209 drayverini sotib oldim, lekin oxir -oqibat 4 dona paketni sotib oldim, chunki dastlab qiyinchiliklarga duch keldim va bir paytlar taxtani qovurmaganimga ishonch hosil qilmoqchi edim. Oxir -oqibat men 3 ta taxtani o'ldirdim, bu meni keyingi narsaga olib keladi … Kondensatorlar! $ 10 va mening step motorim boshqaradigan maksimal kuchlanishga yaqinroq bo'lganini oldim. Agar siz boshqa dvigatel yoki step haydovchisidan foydalansangiz, u kuchlanish (V) ni boshqarishi va quvvat manbai Amperi (A) hech bo'lmaganda dvigatel chizgan eng yuqori Amperga teng ekanligiga ishonch hosil qiling. $ 8) Quvvat manbai mana shu narsaga ulanadi. Non paneliga yopishib olish uchun siz ularni bir nechta simlarga lehimlashingiz kerak bo'ladi. Men ulagichlarni katta to'plami ($ 9), shuning uchun boshqaruvni men xohlagan joyga qo'yishim mumkin.

Yoqish/o'chirish va boshqalar uchun tugmalar ($ 8)

Mikrofon kuchaytirgichi ($ 11) Oh, bu ovoz ham yoqilganligini bilmadingizmi?

Kichkina g'ildirak g'ildiraklari ($ 8) Men ulardan foydalanishni tugatdim, lekin yaxshiroq alternativalar bo'lishi mumkin. Keyinchalik, sizga, albatta, lehimli temir va dvigatelni o'rnatish uchun nima kerak bo'lsa, kerak bo'ladi. Men shaxsan 4 ta yog'och bo'lakdan qo'pol quti yasadim, keyin ularni beshik oyog'imning kengligidagi boshqa yog'ochga burab qo'ydim. Hozircha men uni qisib qo'yganman, chunki bilmayman, amakimning beshigiga to'y qilmoqchimisiz.

1 -qadam: Stepper haydovchisining pinouti bilan tanishib chiqing

Arduino 5V/GND -ni elektron jadvalingizga ulang
Arduino 5V/GND -ni elektron jadvalingizga ulang

Men ishlatgan modellashtirish dasturida aynan shu haydovchi paneli yo'q edi, shuning uchun siz ushbu rasmga havola qilishingiz kerak bo'ladi. Men hamma narsani xuddi shu rasmdagi yo'nalishda joylashtirdim.

2 -qadam: Arduino 5V/GND -ni elektron jadvalingizga ulang

Arduino 5V simini non taxtangizning bir tomonidagi "+" relsiga ulang Arduino GND-laridan birining simini non taxtasining bir tomonidagi "-" simiga ulang.

(e'tibor bermang

3-qadam: +/- Railsni VIO/GND ga ulang

+/- Railsni VIO/GND ga ulang
+/- Railsni VIO/GND ga ulang

"-" relsidan simni qadam haydovchi platasining pastki chap qismidagi GND ga ulang. "+" Relsidan VIO ga simni ulang.

4 -qadam: DIR/STEP -ni Arduino -dagi raqamli pinlarga ulang

DIR/STEP -ni Arduino -dagi raqamli pinlarga ulang
DIR/STEP -ni Arduino -dagi raqamli pinlarga ulang

DIR va STEP pinlarini qadam haydovchi platasidan Arduino -dagi ikkita raqamli pinga ulang. Men mos ravishda 2 va 3 -pinlarni ishlatardim, lekin keyinroq kodingizga pinlarni o'rnatganingiz muhim emas.

5 -qadam: Keling, oldinga boramiz va bu kondansatkichni qo'shamiz …

Keling, bu kondansatkichni qo'shamiz …
Keling, bu kondansatkichni qo'shamiz …

Menda kondansatör yo'qligi uchun 2 pog'onali haydovchi taxtasini yoqib yubordim, shuning uchun davom etamiz va haydovchining platasidagi VM/GND pinlariga 47uF 50V kondansatör qo'shamiz. Kondensatordagi "-" pinining taxtadagi GND pinida joylashganligiga ishonch hosil qiling (kondansatkichning tegishli tomonida "-" bo'ladi)

6 -qadam: Oldinga boring va GND -ni ulang

Va oldinga boring va GND ni ulang
Va oldinga boring va GND ni ulang

Siz hozirgina kondansatör qo'shgan GND-da, uni boshqa GND bilan bir xil "-" temir yo'liga ulang.

7 -qadam: Dvigatelni haydovchiga ulang

Dvigatelni haydovchiga ulang
Dvigatelni haydovchiga ulang

Qaysi pin qayerga ketishi siz sotib olgan dvigatelga bog'liq bo'ladi, lekin men sanab o'tadigan narsada amazon ro'yxatida simlar sxemasi bor.

Mening motorim uchun -

Yashil va qora ranglarni M2B va M2A ga ulang

Qizil va ko'kni M1A va M1B ga ulang Eslatma: Agar biron sababga ko'ra sizning motoringizda diagramma bo'lmasa, sizda multimetr bo'lsa, qaysi simlar kontaktlarning zanglashiga olib kelishini osongina aniqlashingiz mumkin. Multimetrni past kuchlanishga sozlang va dvigatelni uzing. Dvigatel simlaridan biriga multimetr simlaridan birini bosing, so'ngra boshqa simlarning har birini boshqa sim bilan sinab ko'ring. Agar siz qarshilik ko'rsatkichini olsangiz, u holda ikkita sim 1 sxemani, qolgan ikkisi esa boshqasini hosil qiladi.

8-qadam: EN, MS1 va MS2 ni "-" ga ulang

EN, MS1 va MS2 ni ulang
EN, MS1 va MS2 ni ulang

Men bu zarurligiga to'liq ishonchim komil emas, lekin ishonamanki, bu dvigatelni TMC2209 drayverida kichikroq mikrosxemaga o'rnatadi. Siz ularni eng yaqin temir yo'lga ulashingiz mumkin, chunki biz uni boshqa tomonga bog'laymiz.

9 -qadam: Ayol quvvat ulagichini ikkita simga lehimlang

Ayol quvvat ulagichini ikkita simga lehimlang
Ayol quvvat ulagichini ikkita simga lehimlang

Men lehimlash bo'yicha dunyodagi eng zo'r emasman, shuning uchun siz boshqa joydan qidirishingiz kerak bo'ladi, lekin men ham shunday qilganman. Men simlarning uchlarini ulagich simlariga tekis qilib yotadigan qilib egdim, keyin simni simga lehimladim. Menda hech qanday issiqlik o'tkazmaydigan narsa yo'q edi, shuning uchun men ularni elektr tasmasi bilan mahkam o'rab qo'ydim.

10 -qadam: Yangi lehimli ayol ulagichingizni ulang

Yangi lehimli ayol konnektorini ulang
Yangi lehimli ayol konnektorini ulang

Qiziq simni "+" ga, qora rangni "-" ga hali ulamang.

11 -qadam: Ularni VM/GND ga ulang

Ularni VM/GND ga ulang
Ularni VM/GND ga ulang

Bu "+" va "-" relslarini VM va uning yonidagi GND ga ulang. Kondensatorga ega bo'lganlar.

12 -qadam: Sizning qo'l ishingizga qoyil qoling

Sizning qo'l ishingizga qoyil qoling
Sizning qo'l ishingizga qoyil qoling

Yaxshi, endi sizda dvigatel va haydovchi to'liq sozlangan! Bu erdan boshlab biz faqat nazoratni amalga oshiramiz. Aytgancha, oldinga:

  • Agar siz biron sababga ko'ra haydovchini uzib qo'ysangiz, 36V quvvat manbaiga ulangan paytda uni ulashga urinmang. Men uchinchi haydovchi kartamni shunday o'ldirganman.
  • Arduino -ni ulashdan oldin 36V quvvat manbaiga ulang. Men shaxsan Arduino -ni qovurmaganman, lekin yo'lda men bu haqda ko'p ogohlantirishni ko'rdim.

13 -qadam: Majburiy emas - VREF -ni tekshiring

TMC2209 dvigatelda tokni boshqaruvchi potansiometrga ega. Agar sizda men qilgan haydovchi bo'lsa, bu erda o'qishingiz mumkin. Agar siz sozlamalarni sozlamoqchi bo'lsangiz:

  • Barcha quvvatni uzing va dvigatel simlarini haydovchidan uzing.
  • Haydovchining EN (yoqish) pinidagi simni ajratib oling. Bu yuqori chap burchakdagi pin.
  • Dvigatel quvvat manbaini ulang (36V)
  • 20V kuchlanishli multimetrdan foydalanib, GND manbasiga bitta simni (men "-" temir yo'limga simli ulanishni ishlatardim), ikkinchisiga VREF piniga tegib turing. Iltimos, boshqa hech narsaga tegmang, agar shunday qilsangiz, haydovchingizni qisqartirishingiz mumkin.
  • Kichkina tornavida yordamida potentsiometr vintini ohista sozlang. Mening taxtam uchun soat sohasi farqli o'laroq = ko'proq quvvat. Mening VREF shaxsan ~ 0.6V o'qiydi.

14 -qadam: tugmalar

Tugmalar!
Tugmalar!

Keyin tugmachalarni shu tarzda ulang. Ularga kuch kerak emas.

  • Arduino GND-laridan biriga "-" tugmachali paneldan ulang. Agar xohlasangiz, uni boshqa non panelidagi "-" relsidan ham zanjirlab qo'yishingiz mumkin.
  • Har bir tugmani bitta pinini "-" relsiga ulang
  • Har bir tugmani boshqa pinini Arduino raqamli piniga ulang.

Men 4 tugmani ishlatardim: Dvigatelni yoqish/o'chirish

Motor davom etadi

Mikrofon yoqilgan

Mikrofon o'chirilgan

Kodga kelsak, bular haqida ko'proq ma'lumot, lekin men mikrofonning yoqilgan yoki o'chirilganligini bildirish uchun LEDlarim bo'lmaganligi uchun alohida mikrofon tugmalaridan foydalandim, shuning uchun alohida yoqish/o'chirish tugmachalari uni aql bovar qilmas holga keltirdi.

15 -qadam: Mikrofon kartasini qo'shing

Mikrofon kartasini qo'shing
Mikrofon kartasini qo'shing

Bu oddiy va Adafruit bu erda yaxshi ko'rsatmalarga ega (va lehimlash asoslari!).

  • "-" ni GND ga ulang
  • Mikrofon panelidagi GND-ni "-" ga ulang (GND-ni to'g'ridan-to'g'ri GND-ga ulashingiz va avvalgi bosqichni o'tkazib yuborishingiz mumkin)
  • VCC -ni Arduino -dagi 3.3V quvvat manbaiga ulang. Bu juda muhim, chunki bu quvvat manbai 5V ga qaraganda kamroq "shovqinli", natijada mikrofon yaxshiroq o'qiladi
  • OUTni Arduino -dagi ANALOG IN piniga ulang. Men A0 dan foydalanardim.

16 -qadam: Bu yakuniy natija bo'lishi kerak

Bu yakuniy natija bo'lishi kerak!
Bu yakuniy natija bo'lishi kerak!
Bu yakuniy natija bo'lishi kerak!
Bu yakuniy natija bo'lishi kerak!

Hammasi hozir tayyor bo'lishi kerak. Mana, yakuniy diagrammaning tasviri va mening simlarning chalkashligi. Keling, ba'zi kodlarni ko'rib chiqaylik!

17 -qadam: kod

OK, kodni ko'rib chiqaylik! Bu mening eng toza ishim emas, lekin bu ishni bajaradi. Men bu erda hamma narsani tushuntirish uchun sharhlar qo'shdim, lekin menga chidab turing. Men buning uchun Arduino IDE -dan foydalandim (Windows va Mac -da bepul mavjud). Burilish bu: Dvigatel tezligi va burilish uchun masofani o'rnating.

Bir qator toshlarni (burilishlarni) belgilang.

Belgilangan masofani 1 burilish uchun aylantiring. Belgilangan marta aylantiring.

Dvigatelni yoqish kerakmi yoki yo'qligini bilish uchun tugma bosilishini kuzatib turing yoki mikrofonni tinglang, siz tezlikni, masofani va mikrofonning sezgirlik qiymatlarini sozlashingiz kerak, vosita tezligi tovush va momentga ta'sir qiladi. Dvigatel qanchalik tez harakat qilsa, shuncha baland bo'ladi va siz kamroq tork olasiz. Meniki hozir deyarli jim, shuning uchun uni ko'p ovoz chiqarmasdan ishga tushirish mumkin.

#include // "standart" qadam motorli kutubxona

//#DEBUG 1 ni aniqlang // mikrofon darajasini sozlamoqchi bo'lganingizda buni sharhlamang // Tugma sozlamalari - bular tugmalarga ulangan raqamli pinlar uchun mos keladi int motorEnablePin = 10; const int ContinuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Mikrofonni sozlash - A0 - bu mikrofon uchun analog. Namuna oynasi millis const int micPin = A0; const int sampleWindow = 1000; imzosiz int namunasi; bool micEnabled = noto'g'ri; er -xotin mikrofon Sezuvchanlik = 0,53; //, ehtimol, buni o'zgartirish kerak bo'ladi // Men uchun.5 atrofida kichik chayqalishni yoqmaslik uchun etarlicha yaxshi edi // lekin kichik yig'lar uchun o'qlar int stepsPerRevolution = 3200; // buni dvigatelingiz uchun bir inqilobga to'g'ri keladigan qadam soniga mos ravishda o'zgartiring // Mening motorim - 200 qadam/aylanish // Lekin men haydovchini 1/16 mikrostepga qo'ydim // shuning uchun 200*16 = 3200 … rostini aytsam, to'g'ri yo'l // buni qilish uchun Stepper myStepper (stepsPerRevolution, 2, 3); // 2 va 3 - DIR & STEP pinlari int stepCount = 0; int motorSpeed = 95; // siz buni beshik va chaqaloq vazniga qarab sozlashingiz kerak int numSteps = 90; // Dvigatel harakatlanadigan masofa. // Buni dvigatelga biriktirgan g'ildirakning radiusiga qarab sozlash kerak //. Bu va tezlik, ehtimol, sinov va xato bo'ladi. // Eslatma - qadam motorlarida yuqori tezlik = pastroq samarali moment // Agar sizda yetarli moment bo'lmasa, sizning motoringiz qadamlar o'tkazib yuboradi (qimirlamaydi) int oldmotorButtonValue = HIGH; bool yoqilgan = noto'g'ri; // motor yoqilganmi? int loopStartValue = 0; int maxRocks = 100; // int rockCount = 0 ni o'chirishdan oldin necha marta chayqalishini xohlaysiz; void setup () {#ifdef DEBUG Serial.begin (9600); // disk raskadrovka jurnali uchun #endif pinMode (motorEnablePin, INPUT_PULLUP); // Bu tugmachalarning pinMode quvvatisiz ishlashi uchun sozlama (ContinuePin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motor tezligi); // dvigatel tezligini siz ilgari ko'rsatganidek o'rnatadi} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead faqat tugma qiymatlarini o'qiydi int ContinueValue = digitalRead (ContinPin); // Bu vosita tugmachalarini bosilishini aniqlaydi va agar (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {yoqilgan =! Yoqilgan bo'lsa, uni bir marta bosish uchun bir necha marta bosishdan saqlaydi. } micCheck (); // Agar dvigatel o'chirilgan bo'lsa va mikrofon yoqilgan bo'lsa, (! Yoqilgan && micEnabled) {agar (getMicReading ()> = micSensitivity) yoqilgan = rost bo'lsa, bolaning yig'layotganini tinglang; } agar (yoqilgan) {stepsPerRevolution = stepsPerRevolution * -1; // teskari yo'nalish // Mening sozlamam bilan // birinchi tebranishni orqaga qaytarish samaraliroq. Siz buni loopdan keyin qo'yishingiz mumkin // agar sizniki bo'lmasa // aylantiruvchi dvigatel uchun yuqorida ko'rsatilgan masofa (int i = loopStartValue; i <numSteps; i ++) {// o'chirilganligini tekshiring int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Bu keyingi ikkita satr motor holatini "saqlaydi", shunda uni keyingi safar yoqsangiz // u xuddi siz o'chirmagandek sayohatni davom ettiradi. Bu tashlanishni oldini oladi // sizning harakat masofalaringiz loopStartValue = i; // manzilni saqlash StepPerRevolution = stepsPerRevolution * -1; // oldmotorButtonValue = tempmotorButtonValue yo'nalishini saqlang; tanaffus; } checkContinue (ContinueValue); // davom etish tugmasi bosilganligini tekshiring micCheck (); myStepper.step (stepsPerRevolution / 50); // har bir tsikl uchun qancha qadam kerak, // siz buni sozlashingiz kerak bo'lishi mumkin // agar halqa tugagan bo'lsa, biz to'liq aylanish masofasini davom ettirishimizga ishonch hosil qiling // agar siz dvigatelni o'zingiz o'chirib qo'ysangiz, bu o'ynaydi va pozitsiya if (i == numSteps - 1) {loopStartValue = 0; }}} kechikish (100); // keyingi rock qilishdan oldin 100 millis pauza qiling. Buni sozlashingiz kerak bo'ladi. if (yoqilgan) checkComplete (); oldmotorButtonValue = motorButtonValue; // bu ikki marta bosishni oldini olish uchun ishlatiladi} // Bu kod to'g'ridan -to'g'ri Adafruit -dan. double getMicReading () {unsigned long startMillis = millis (); imzosiz int peakToPeak = 0; // tepadan tepaga darajadagi belgisiz int signalMax = 0; imzosiz int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); agar (digitalRead (motorEnablePin) == LOW) yoqilgan bo'lsa = rost; namuna = analogRead (micPin); agar (namuna signalMax) {signalMax = namuna; // faqat maksimal darajalarni saqlang} else if (namuna = maxRocks) {yoqilgan = noto'g'ri; rockCount = 0; // o'rta pozitsiyaga qaytish

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

myStepper.step (stepsPerRevolution * -1 / 50); // inqilobning 1/100 bosqichi:

}

} }

18 -qadam: o'rnatish va g'ildirakni o'rnatish

O'rnatish va g'ildirakni o'rnatish
O'rnatish va g'ildirakni o'rnatish

Bu men uchun hali ham WIP, chunki aytganimdek, men hali beshigimga vintlar solmoqchi emasman. Ishonchim komilki.

  • Mening g'ildiragim to'g'ri chiziqni tortishi uchun beshikdan tushadigan qo'l vazifasini bajaradigan qisqich qo'ying
  • Dvigatelni qo'yish uchun qo'pol qutini yig'ib, uni taglik plastinkasiga mahkamladim, uni beshik oyog'iga mahkamladim.
  • Kichkina qadamli g'ildirak g'ildiragiga mos keladigan teshikli maxsus yog'och g'ildirak g'ildiragi yasandi. Men markaziy tuynukni juda qattiq qilib qo'ydim va qadamli g'ildirak g'ildiragiga urib qo'ydim. Men g'ildirakning o'rtasidan teshik ochdim, shunda metall g'ildirak g'ildiragidagi vintni step motoriga mahkamlash uchun kirishim mumkin edi.
  • Beshikning "qo'lidan" g'ildiragigacha bo'lgan ipni yugurdi. Men ipni burg'ulash teshigidan o'tkazib, joyiga yopishtirib mahkamladim.

Uchinchi bosqichning eng yaxshi echimi, birinchi navbatda, katta diametrli g'ildirak g'ildiragini sotib olishdir. Menikining diametri 3 dyuymdan oshmaydi va bu mening beshigim uchun juda yaxshi ishlaydi.

Mening birinchi versiyamda g'ildirak o'rniga qo'l ishlatilgan. Bu deyarli ishlamadi, chunki kuch izchil yo'nalishda qo'llanilmadi va agar boshlang'ich pozitsiyasi to'g'ri bo'lmasa, u ham tashlab yuborilishi mumkin edi. G'ildirakdan foydalanish bu muammolarni hal qiladi. Men ham kichik kasnakli tizim yordamida o'yin -kulgi qildim, lekin kerak bo'lmadi, chunki g'ildiragim menga etarli momentni berdi.

19 -qadam: Yakuniy sozlash

Yakuniy sozlash
Yakuniy sozlash

Mikrofonni bolangizga yaqinroq joylashtiring, lekin ular hech qanday simga tegmasin, tugmachani xohlagan joyingizga qo'ying. Siz tugmachalarni arduino -dagi Wi -Fi sozlamalari bilan almashtira olasiz, lekin men hali bu darajaga bormadim.

Tavsiya: