İçindekiler:

Arduino Cradle Rocker: 19 Adım (Resimlerle)
Arduino Cradle Rocker: 19 Adım (Resimlerle)

Video: Arduino Cradle Rocker: 19 Adım (Resimlerle)

Video: Arduino Cradle Rocker: 19 Adım (Resimlerle)
Video: USB based Automatic cradle designed for my little princes 2024, Temmuz
Anonim
Image
Image

Üzgünüm, video düzenleme işimin önerdiği bayat yoğun müziğe karşı koyamadım.

Geçenlerde ilk çocuğum oldu ve amcamın (harika bir ahşap işçisi olan) yeğenim için yaptığı tahta bir beşiğim vardı. Yeğenim uzun zamandır büyümüştü, bu yüzden onu almaktan mutlu oldum ve TÜM PARA'yı anne blogcuların karımın bayıldığı beşik/beşiğe harcamaktan kaçındım. Beşik oldukça basit bir tasarımdır, temelde beşik gövdesini destekleyen cıvatalarla birlikte iki dikme. Yerine kilitlemek için çıkarılabilir bir mandal var.

Birkaç hafta içinde, oğlumuz yerleşene kadar beşiği biraz sallayarak genellikle hafif huzursuzluğu bastırabileceğimizi gördük. Bunu öğrendiğimiz gece, gece geç saatlerde, yorganın altından uzanıp, uykulu uykulu onu sallayarak, yataktan kendim kalkmadan onu sakinleştirmenin bir yolunu bulduğum için mutlu, birkaç 10 dakikalık esneme hareketleri yaptım. sabah bir ip ve küçük bir karabina bağladım, böylece kolumu uzatmadan beşiği sallayabildim.

Ondan sonraki sabah, bir robotun bu çocuğu benim için sallaması için beyin fırtınası yapmaya başladım. Arduino'ya girin…

Gereçler

Tamam, bu benim ilk Arduino projemdi, bu yüzden bazı denemeler ve deneme yanılmalar yaptım ve tasarımımda iyileştirmeler yapabileceğime eminim ama işte parça listem: Her şeyi kontrol etmek için Arduino Uno (13 $) Bir devre tahtası kabloları bağlamak için kit (10 $)

Step motor (14 $) Bu en eğlenceli parça, çünkü tüm işi yapan şey o. Biraz daha düşük torklu bir sürücüyle başladım ama sonra bunu aldım ve gayet iyi çalışıyor. Daha da güçlü bir tane almaktan çekinmeyin. Step motor sürücüleri (10-30 $) Bu, Arduino ve motor arasında bulunur. Bu spesifik olan, görünüşe göre motoru diğerlerinden daha sessiz sürebiliyor, bu yüzden ben uyurken motor benim (ve oğlumun) kafasından birkaç metre uzakta olacağı için bununla gittim. Başlangıçta ~10$'a bir TMC2209 sürücüsü satın aldım, ancak sonunda 4'lü bir paket satın aldım çünkü ilk başta biraz zorlandım ve bir noktada tahtayı kızartmadığımdan emin olmak istedim. Sonunda 3 kartı öldürdüm, bu da beni bir sonraki öğeme getiriyor… Kapasitörler! (10$) Gerçekten sadece 1 47 uF 50V kapasitöre ihtiyacınız var, bu yüzden 240'lık bu kutu aşırı derecede fazlaydı. 36V güç kaynağı (17 $) Başlangıçta cılız bir 12V kaynağı satın aldım, sonra tüm sorunlarımın kaynağının bu olduğunu öğrendim ve step motorumun kaldırabileceği maksimum voltaja daha yakın bir tane aldım. Farklı bir motor veya step sürücü kullanıyorsanız, voltajı (V) kaldırabileceğinden ve beslemenin Amperajının (A) en az motorun çektiği tepe Amper kadar yüksek olduğundan emin olun. Dişi güç jakı soketleri ($8) Güç kaynağının takıldığı şey budur. Breadboard'unuza yapıştırmak için bunları bazı kablolara lehimlemeniz gerekecek. Kontrolleri odada istediğim yere koyabilmem için büyük bir paket jumper (9 $).

Açma/kapama vb. için düğmeler (8 $)

Bir mikrofon amfisi ($11) Ah, bunun da sesle etkinleştirildiğini bilmiyor muydunuz?

Bazı küçük kasnak tekerlekleri (8 $) Bunları kullandım, ancak daha iyi alternatifler olabilir. Daha sonra bunun hakkında daha fazlası. Ayrıca kesinlikle bir havyaya ve motoru monte etmek için kullanmak istediğiniz her şeye ihtiyacınız olacak. Ben şahsen 4 vidalanmış tahta parçasından kaba bir kutu yaptım ve sonra bunları kabaca beşik bacağımın genişliği olan başka bir tahta parçasına vidaladım. Şimdilik onu kenetledim çünkü amcamın beşiğine zarar vermek isteyip istemediğimi bilmiyorum.

Adım 1: Step Sürücü Pin Çıkışınızla Kendinizi Tanıyın

Arduino 5V/GND'yi Breadboard'unuza bağlayın
Arduino 5V/GND'yi Breadboard'unuza bağlayın

Kullandığım modelleme programında tam olarak bu sürücü panosu yoktu, bu yüzden bu resme başvurmanız gerekecek. Her şeyi bu görüntüyle aynı yönde ayarladım.

Adım 2: Arduino 5V/GND'yi Breadboard'unuza bağlayın

Arduino 5V'den bir teli breadboard'unuzun bir tarafındaki "+" rayına bağlayınArduino GND'lerinden birinden devre tahtasının aynı tarafındaki "-" rayına bir tel bağlayın

(görmezden gel

Adım 3: +/- Raylarını VIO/GND'ye bağlayın

+/- Raylarını VIO/GND'ye bağlayın
+/- Raylarını VIO/GND'ye bağlayın

Adım sürücü kartının sol alt kısmındaki "-" raydan GND'ye bir kablo bağlayın. "+" raydan VIO'ya bir kablo bağlayın

Adım 4: DIR/STEP'i Arduino'daki Dijital Pinlere Bağlayın

DIR/STEP'i Arduino'daki Dijital Pinlere Bağlayın
DIR/STEP'i Arduino'daki Dijital Pinlere Bağlayın

Step sürücü kartındaki DIR ve STEP pinlerini Arduino'daki dijital pinlerden ikisine bağlayın. Sırasıyla 2 ve 3 numaralı pinleri kullandım, ancak daha sonra kodunuzdaki pinleri ayarladığınız sürece önemli değil.

Adım 5: Devam Edelim ve O Kondansatörü Ekleyelim…

Devam Edelim ve O Kondansatörü Ekleyelim…
Devam Edelim ve O Kondansatörü Ekleyelim…

Yerinde bir kapasitör olmadığı için 2 step sürücü kartını yaktım, bu yüzden devam edelim ve 47uF 50V kondansatörü sürücü kartındaki VM/GND pinlerine ekleyelim. Kondansatör üzerindeki "-" pininin breadboard üzerindeki GND pininde olduğundan emin olun (kondansatörün ilgili tarafında bir "-" olacaktır)

Adım 6: Devam Edin ve O GND'yi Bağlayın

Ve Devam Edin ve O GND'yi Bağlayın
Ve Devam Edin ve O GND'yi Bağlayın

Kondansatörü yeni eklediğiniz GND'de, devam edin ve bunu diğer GND ile aynı "-" rayına bağlayın.

Adım 7: Motoru Sürücüye Bağlayın

Motoru Sürücüye Bağlayın
Motoru Sürücüye Bağlayın

Hangi pinin nereye gittiği, satın aldığınız motora bağlı olacaktır, ancak listelediğimin amazon listesindeki bağlantı şeması var.

motorum için -

Yeşil ve Siyahı M2B ve M2A'ya Bağlayın

Kırmızı ve Mavi'yi M1A ve M1B'ye Bağlayın Not: Herhangi bir nedenle motorunuzun şeması yoksa, bir multimetreniz varsa hangi kabloların devre oluşturduğunu kolayca anlayabilirsiniz. Multimetrenizi düşük amper ayarına getirin ve motorunuzun bağlantısını kesin. Motor kablolarından birine giden multimetre uçlarından birine dokunun ve ardından diğer kabloların her birini diğer uçla deneyin. Bir direnç okuması alırsanız, bu iki kablo 1 devre oluşturur ve diğer ikisi diğerini oluşturur.

Adım 8: EN, MS1 ve MS2'yi "-" ye bağlayın

EN, MS1 ve MS2'yi aşağıdakilere bağlayın
EN, MS1 ve MS2'yi aşağıdakilere bağlayın

Bunun gerekli olduğundan tam olarak emin değilim, ancak motoru TMC2209 sürücüsünde daha küçük bir mikro adım ayarına ayarladığına inanıyorum. Bunları diğer tarafa daha sonra bağlayacağımız için kendilerine en yakın "-" rayına bağlayabilirsiniz.

Adım 9: Bir Dişi Güç Konektörünü İki Kabloya Lehimleyin

Dişi Güç Konektörünü İki Kabloya Lehimleyin
Dişi Güç Konektörünü İki Kabloya Lehimleyin

Lehimlemede dünyanın en iyisi değilim, bu yüzden bunun için başka bir yere bakmanız gerekecek, ama benimkini böyle yaptım. Kabloların uçlarını, konektör uçlarına yaslanacak şekilde büktüm, sonra kabloyu uca lehimledim. Kablo ısıyla daralan malzemem yoktu, bu yüzden onları elektrik bandıyla harika bir şekilde sardım.

Adım 10: Yeni Lehimlenmiş Dişi Konnektörünüzü Bağlayın

Yeni Lehimlenmiş Dişi Konnektörünüzü Bağlayın
Yeni Lehimlenmiş Dişi Konnektörünüzü Bağlayın

Lütfen gerçek güç kaynağınızı henüz prize takmayın. Kırmızı kablo "+"ya, siyah kablo "-"ye

Adım 11: Bunları VM/GND'ye Bağlayın

Bunları VM/GND'ye Bağlayın
Bunları VM/GND'ye Bağlayın

Bu "+" ve "-" raylarını VM'ye ve yanındaki GND'ye bağlayın. Üzerinde kondansatör olanlar.

Adım 12: El İşinize Hayran Olun

El İşinize hayran kalın
El İşinize hayran kalın

Pekala, artık motoru ve sürücüyü tamamen kurdunuz! Şu andan itibaren sadece kontroller yapacağız. Bu arada, ileriye dönük:

  • Herhangi bir nedenle sürücünüzün bağlantısını kestiyseniz, 36V gücünüz takılıyken takmaya çalışmayın. 3.sürücü kartımı bu şekilde öldürdüm.
  • Arduino gücünü takmadan önce 36V gücünü takın. Şahsen bir Arduino'yu kızartmadım, ancak yol boyunca bununla ilgili birçok uyarı gördüm.

Adım 13: İsteğe Bağlı - VREF'inizi Kontrol Edin

TMC2209, motora giden akımı kontrol eden bir potansiyometreye sahiptir. Benimle aynı sürücüye sahipseniz, buradan okuyabilirsiniz. Ayarı yapmak istiyorsanız:

  • Tüm gücü kesin ve motor kablolarını sürücüden ayırın.
  • Kabloyu sürücüdeki EN (etkinleştir) pinine ayırın. Bu, sol üst köşedeki pimdir.
  • Motor güç kaynağınızı takın (36V olan)
  • 20V'a ayarlanmış bir multimetre kullanarak, bir ucu bir GND kaynağına ("-" rayıma bir kablo bağladım) ve diğer ucu VREF pinine dokundurun. Lütfen kabloya başka bir şeye dokunmayın, yaparsanız sürücünüzü kısaltabilirsiniz.
  • Potansiyometre vidasını nazikçe ayarlamak için küçük bir tornavida kullanın. Tahtam için saat yönünün tersine = daha fazla güç. VREF'im kişisel olarak ~ 0.6V okuyor.

Adım 14: Düğmeler

Düğmeler!
Düğmeler!

Sırada, düğmelerinizi bu şekilde bağlayın. Güce ihtiyaçları yok.

  • Düğme devre tahtanızın "-" rayını Arduino'nun GND'lerinden birine bağlayın. İsterseniz diğer breadboard'un "-" rayından da zincirleyebilirsiniz.
  • Her düğmenin bir pimini "-" rayına bağlayın
  • Her düğmenin başka bir pimini Arduino'daki dijital bir pime bağlayın.

4 düğme kullandım: Motor açık/kapalı

Motor devam

mikrofon açık

mikrofon kapalı

Koda ulaştığımızda bunlarla ilgili daha fazla bilgi var, ancak farklı mikrofon düğmeleri kullandım çünkü mikrofonun açık veya kapalı olduğunu bana bildiren LED'lerim yoktu, bu nedenle farklı açma/kapama düğmelerine sahip olmak onu kusursuz hale getirdi.

Adım 15: Mikrofon Kartını Ekleyin

Mikrofon Kartını Ekleyin
Mikrofon Kartını Ekleyin

Bu basit ve Adafruit'in burada iyi talimatları (ve lehimleme temelleri!) var.

  • "-" yi bir GND'ye bağlayın
  • Mikrofon kartındaki GND'yi "-" konumuna bağlayın (GND'yi doğrudan GND'ye bağlayabilir ve önceki adımı gerçekten atlayabilirsiniz)
  • VCC'yi Arduino'daki 3.3V güce bağlayın. Bu güç kaynağı 5V'den daha az "gürültülü" olduğu ve daha iyi mikrofon okumaları sağladığı için bu önemlidir.
  • OUT'u Arduino'daki bir ANALOG IN pinine bağlayın. A0 kullandım.

Adım 16: Bu Nihai Sonuç Olmalı

Nihai Sonuç Bu Olmalı!
Nihai Sonuç Bu Olmalı!
Nihai Sonuç Bu Olmalı!
Nihai Sonuç Bu Olmalı!

Artık her şey hazır olmalı. İşte son diyagramın bir resmi ve gerçekte benim tel karmaşam. Biraz koda bakalım!

Adım 17: Kodlayın

Tamam, koda bakalım! Bu benim en temiz işim değil, ama işi hallediyor. Burada her şeyi açıklamak için yorumlar ekledim, ama sabredin. Tüm bunlar için Arduino IDE kullandım (Windows ve Mac'te ücretsiz olarak mevcuttur) Amaç şudur: Bir motor hızı ve dönüş mesafesi ayarlayın.

Yapacak bir dizi kaya (salıncak) ayarlayın.

1 vuruş için ayarlanan mesafeyi çevirin. Belirli sayıda sallayın.

Tüm bunların arasında, motorun açılıp açılmayacağını görmek için düğmelere basıldığını izleyin veya mikrofonu dinleyin. Hız, mesafe ve mikrofon hassasiyeti değerlerini ayarlamanız gerekecek. Motor hızı, ses seviyesini ve torku etkiler. Motor ne kadar hızlı giderse, o kadar gürültülü olur ve o kadar az tork alırsınız. Benimki şu anda neredeyse sessiz, bu yüzden fazla ses çıkarmadan çalışmasını sağlamak mümkün.

#include // "standart" step motor kitaplığı

//#define DEBUG 1 // mikrofon seviyelerini ayarlamak istediğinizde bunu iptal edin // Düğme kurulumu - bunlar, düğmelere bağladığınız dijital pinlerin bulunduğu yere karşılık gelir const int motorEnablePin = 10; const int devamPin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Mikrofon kurulumu - A0, mikrofonun analog girişidir. Örnek pencere, millis const int micPin = A0; const int örnekWindow = 1000; imzasız int örneği; bool micEnabled = yanlış; çift mikrofonHassasiyet = 0,53; // muhtemelen bunu değiştirmeniz gerekecek // Benim için yaklaşık 0,5, küçük soğutmalarda ateşlenmemek için yeterince iyiydi // ama küçük çığlıklar için ateşlenir int stepPerRevolution = 3200; // bunu motorunuz için devir başına adım sayısına uyacak şekilde değiştirin // Motorum 200 adım/devir // Ama sürücüyü 1/16 mikro adıma ayarladım // yani 200*16 = 3200… dürüstçe bunun hakkında hiçbir fikrim yok // bunu yapmanın doğru yolu Stepper myStepper(stepsPerRevolution, 2, 3); // 2 ve 3, DIR & STEP pinleridir int stepCount = 0; int motorHızı = 95; // bunu beşiğinize ve bebeğinizin ağırlığına göre ayarlamanız gerekecek int numSteps = 90; // Motorun hareket edeceği mesafe. // Bunu, motorunuza taktığınız tekerleğin // yarıçapına göre ayarlamanız gerekecek. Bu ve hız muhtemelen deneme yanılma olacaktır. // Not - step motorlarda daha yüksek hız = daha düşük efektif tork // Yeterli torka sahip değilseniz, motorunuz adımları atlar (hareket etmez) int oldmotorButtonValue = HIGH; bool etkin = yanlış; // motor etkin mi? int loopStartValue = 0; int maxRocks = 100; // kapatmadan önce kaç kez sallanmasını istiyorsunuz int rockCount = 0; void setup() { #ifdef DEBUG Serial.begin(9600); // hata ayıklama günlüğü için #endif pinMode(motorEnablePin, INPUT_PULLUP); // Bu, düğmelerin power pinMode olmadan çalışması için bir ayardır(continuePin, INPUT_PULLUP); pinMode(micEnablePin, INPUT_PULLUP); pinMode(micDisablePin, INPUT_PULLUP); myStepper.setSpeed(motorHızı); // motor hızını daha önce belirttiğiniz değere ayarlar } void loop() { int motorButtonValue = digitalRead(motorEnablePin); // digitalRead sadece düğme değerlerini okur int ContinueValue = digitalRead(continuePin); // Bu, motor düğmesine basıldığını algılar ve eğer (motorButtonValue == HIGH && oldmotorButtonValue == LOW) { etkin = !enabled; } Mikrofon kontrolü(); // Motor kapalı ve mikrofon açıksa, bebek ağlamasını dinleyin if(!enabled && micEnabled) { if(getMicReading() >= micSensitivity) enable = true; } if (etkin) {stepPerRevolution =stepPerRevolution * -1; //yönü tersine çevir // Benim kurulumumda, ilk vuruşta geri gitmek daha etkili //. Bunu döngüden sonra koyabilirsiniz // eğer durum sizin için geçerli değilse // motor yukarıda belirtilen mesafe için döndürün for(int i = loopStartValue; i < numSteps; i++){ //kontrol için int tempmotorButtonValue = digitalRead(motorEnablePin); if(tempmotorButtonValue != motorButtonValue) { rockCount = 0; // Sonraki iki satır motor konumunu "kaydeder", böylece bir sonraki açışınızda // sanki kapatmamışsınız gibi hareket etmeye devam eder. Bu atmayı engeller // hareket mesafeleriniz loopStartValue = i; // konumu kaydetstepPerRevolution =stepPerRevolution * -1; // yönü koru oldmotorButtonValue = tempmotorButtonValue; kırmak; } kontrolDevam(devamDeğer); // devam düğmesine basılıp basılmadığını kontrol et micCheck(); myStepper.step(stepsPerRevolution / 50); // döngü başına kaç adım atılacağı, // bunu ayarlamanız gerekebilir // döngü bittiğinde tam döngü mesafesine devam ettiğimizden emin olun // motoru kendiniz kapattıysanız ve "kaydettiyse" bu devreye girer pozisyon if(i == numSteps - 1) { loopStartValue = 0; } } } gecikme(100); // sonraki taşı yapmadan önce 100 milis duraklat. Bunu ayarlamanız gerekecek. if (etkin) checkComplete(); eskimotorButtonValue = motorButtonValue; // bu çift tıklamaları önlemek için kullanılır } // Bu kod doğrudan Adafruit'ten. double getMicReading() { imzasız uzun startMillis = millis(); imzasız int peakToPeak = 0; // tepeden tepeye seviye unsigned int sinyalMax = 0; imzasız int sinyalMin = 1024; while (millis() - startMillis < sampleWindow) { micCheck(); if (digitalRead(motorEnablePin) == LOW) etkin = true; örnek = analogRead(micPin); if (örnek sinyalMax) { sinyalMax = örnek; // sadece maksimum seviyeleri kaydedin } else if (örnek = maxRocks) { etkin = yanlış; rockCount = 0; // orta konuma geri dön

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

myStepper.step(stepsPerRevolution * -1 / 50); // bir devrimin 1/100 adımı:

}

} }

Adım 18: Montaj ve Tekerlek Kurulumu

Montaj ve Tekerlek Kurulumu
Montaj ve Tekerlek Kurulumu

Bu benim için hala bir Devam Eden Çalışma, çünkü dediğim gibi henüz beşiğime vida takmak istediğimden emin değilim. Benimkini kurma şeklim şu:

  • Tekerleğimin düz bir çizgide çekebilmesi için beşikten çıkan bir kol görevi görecek bir kelepçe koyun
  • Motoru yerleştirmek için ham bir kutuyu birbirine vidaladım ve onu beşik bacağına kenetlediğim bir taban plakasına vidaladım.
  • İçerideki küçük kademeli kasnak tekerleğine uyacak şekilde delikli özel bir ahşap kasnak çarkı yaptı. Ortadaki deliği çok sıkı yaptım ve sadece kademeli kasnak çarkına vurdum. Tekerleği step motora sıkmak için metal kasnak tekerleğindeki vidaya erişebilmek için tekerleğin ortasına bir delik açtım.
  • Beşikten "koldan" tekerleğe bir ip geçirin. İpi, açtığım delikten geçirip yerine bantlayarak sabitledim.

3. adım için daha iyi çözüm, ilk etapta daha büyük çaplı bir kasnak çarkı satın almaktır. Benimki oluğun içinde 3 çapın biraz altında ve benim özel beşiğim için gerçekten iyi çalışıyor.

İlk versiyonumda tekerlek yerine kol kullanılıyordu. Kuvvet tutarlı bir yönde uygulanmadığı için hemen hemen işe yaramadı ve ayrıca başlangıç pozisyonu doğru değilse fırlatılmaya gerçekten duyarlıydı. Bir tekerlek kullanmak bu sorunları çözer. Ayrıca küçük bir kasnak sistemi kullanarak eğlendim, ancak tekerleğim bana yeterli tork verdiği için buna gerek duymadım.

Adım 19: Son Kurulum

Son Kurulum
Son Kurulum

Mikrofonu çocuğunuzun yakınına ama herhangi bir kabloya çarpmayacakları bir yere monte edin. Son hedefe gitmek için yeterli kablonuz olduğu sürece düğmeleri istediğiniz yere koyun. Ayrıca düğmeleri arduino'da bir wifi kurulumuyla değiştirebilirsiniz, ancak henüz o kadar derine inmedim. İyi şanslar!

Önerilen: