Bekerja dengan sensor dan motor, dapatkah saya menggunakan keduanya atau haruskah saya menggunakan pelindung motor?

11

Pembaruan: Saat ini saya sedang mengubah beberapa hal dengan proyek. Saya mengambil beberapa dari Anda saran. Saya telah berubah dari motor stepper ke servo RC (dikontrol melalui PWM) dan jika saya mengalami masalah dan tidak bisa mengatasinya saya akan bertanya. Terima kasih untuk bantuannya!

Saya sedang mengerjakan sebuah proyek dengan seorang teman dan ini adalah pertama kalinya kami menggunakan Arduino. Kami menggunakan Arduino untuk mengambil data dari sensor (akselerometer) dan kemudian menghidupkan motor (6V, DC).

Saya telah melakukan penggalian dan sepertinya daya yang keluar dari Arduino mungkin tidak cukup untuk motor dan sensor pada saat yang bersamaan. Mungkin penundaan jenis bisa berhasil (apakah ini mungkin?).

Saya sedang mempertimbangkan menggunakan pelindung motor . Apakah saya masih dapat mengontrol accelerometer bersama dengan motor?

Saya mencoba menggunakan sumber daya eksternal tunggal (maks: 6 baterai AA; Saya mencoba membatasi jumlah baterai karena kami mencoba untuk tetap portabel) jadi apakah ada cara untuk menggunakan satu sumber sejak Arduino dan pelindung motor membutuhkan dua catu daya yang berbeda (dari pemahaman saya).

Om23
sumber
Anda masih harus dapat menggunakan pin lainnya. Perisai motor ini akan bertindak seperti saudara yang kuat dan mendengarkan apa yang dikatakan pin dan melakukan hal itu, tentu saja, dengan banyak daya, dia adalah saudara yang lebih besar! Bisakah Anda mengedit pertanyaan Anda sehingga Anda lebih spesifik tentang jumlah baterai AA yang akan Anda gunakan?
abdullah kahraman
Oke saya perbarui jumlah baterai. Apakah Anda pikir motor stepper akan menjadi pengganti yang lebih baik karena saya pernah mendengar mereka bekerja dengan sangat baik dengan Arduinos.
Om23
@ Om23 Pilihan stepper, servo, brushed DC atau brushless DC akan ditentukan oleh tujuan yang harus dipenuhi oleh motor, dan (misalnya untuk motor BLDC) perangkat keras yang tersedia untuk mengendalikan motor. Ini mungkin menjadi pertanyaan baru yang menarik, untuk menentukan motor mana yang paling baik digunakan untuk beberapa tujuan yang dapat Anda pikirkan. Tidak yakin pertanyaan seperti itu ideal untuk situs Arduino, mungkin orang lain bisa ikut campur.
Anindo Ghosh

Jawaban:

12

Edisi 1 : Mengemudi motor langsung dari Arduino

Mengemudi motor langsung dari pin Arduino tidak disarankan karena beberapa alasan:

  • Muat arus , terutama pada kondisi motor start-up dan stall. Seperti yang ditunjukkan dengan tepat dalam pertanyaan, pin Arduino mungkin tidak diberi peringkat untuk memasok arus yang cukup. Arduino mungkin memanas atau bahkan rusak oleh penarikan arus tinggi yang berkelanjutan.
    Sementara setiap pin Arduino untuk Arduino berbasis ATmega diberi peringkat untuk 40 mA, saya pribadi lebih suka untuk menjaga pemuatan berkelanjutan hingga di bawah 30 mA, selera risiko Anda mungkin berbeda. Tanpa melihat lembar data motor yang dimaksud, tidak mungkin untuk memperkirakan berapa banyak arus yang dibutuhkan motor
  • Back-EMF dari motor, baik selama motor mati, dan mungkin selama pergantian motor - Saat motor DC berputar, sikat kontak "mengganti" antara cincin split, setidaknya dalam jenis tradisional motor DC brushed, menghasilkan sedikit kecil bunga api setiap kali.
    Kembali EMF pada dasarnya adalah tegangan balik yang dihasilkan oleh kumparan motor (atau beban induktif saat mematikan), transien (paku) yang sebentar dapat jauh melebihi kisaran tegangan yang dapat diterima yang dapat ditoleransi oleh pin mikrokontroler.
    Kembali EMF tetap merupakan risiko, meskipun berkurang, bahkan jika dioda cepat terhubung dalam bias balik melintasi motor, praktik yang sangat dianjurkan.
  • Dengan demikian, isolasi semacam antara Arduino dan drive motor sangat dianjurkan. Untuk kesederhanaan implementasi, ini akan menjadi pelindung motor.
    Jika Anda nyaman dengan elektronik dasar, ini juga dapat dicapai dengan langsung memasang IC driver motor yang sesuai dan dioda flyback. ( Sunting : Ini dijelaskan dengan sangat baik dalam jawaban oleh Manishearth )
    Pengemudi motor, apakah perisai atau IC, harus diberdayakan secara independen dari Arduino, tetapi dengan dua jalur ground sumber daya dihubungkan bersama. Lihat lebih jauh ke bawah.

Masalah 2 : Mengontrol accelerometer dan pelindung motor secara bersamaan

  • Ya, accelerometer dapat dikontrol dan dibaca dari Arduino dengan pelindung motor terpasang, dengan memastikan bahwa pin yang dipilih untuk mengakses accelerometer adalah yang sebenarnya tidak digunakan oleh pelindung motor. Mereka semua akan terhubung ke perisai, tetapi tanpa fungsi internal atau koneksi di dalam perisai. Dokumentasi untuk perisai yang dipilih biasanya akan memberikan informasi ini.
    Untuk kenyamanan, cari pelindung motor dengan header yang dapat ditumpuk, yaitu dengan pin header Arduino yang direplikasi pada pelindung motor untuk memasang perangkat keras tambahan, dalam kasus Anda accelerometer. Tidak semua perisai memberikan header yang bisa ditumpuk. Dengan demikian menyulitkan menggunakan pin yang tidak digunakan oleh perisai, membutuhkan kabel untuk disolder ke bantalan header yang relevan pada PCB, atau pengaturan semacam itu.
    Jika pelindung motor yang Anda pilih menggunakan semua pin GPIO, seperti halnya pelindung untuk mengendarai beberapa motor, Anda mungkin memiliki masalah. Karena hanya 1 motor yang akan digerakkan, hindari perisai multi-motor yang tidak meninggalkan cukup pin GPIO yang tidak digunakan.

Edisi 3 : Distribusi daya antara Arduino dan pelindung motor

  • Masalah dengan pengaturan 6 x AA yang disarankan (maksimum nominal 9 Volts) adalah bahwa meskipun memberikan tegangan yang cukup untuk jack input DC yang tersedia pada banyak Arduino (biasanya diberi peringkat untuk input 7 hingga 12 Volts), itu terlalu tinggi untuk motor diusir langsung dari situ.
  • Namun, ada beberapa perisai motor yang menerima input daya langsung (misalnya 7 hingga 25 Volts), dan kemudian memberikan 5 Volts yang diatur dengan baik ke Arduino tempat mereka terpasang. Jadi Arduino tidak perlu diberdayakan secara terpisah sama sekali, dan tidak harus keduanya. Ini benar - benar satu-satunya jenis perisai motor yang harus dibeli .
  • Alternatif Kludgier termasuk menyadap 4 dari 6 sel AA untuk memberi daya motor, dan semua 6 sel untuk memberi daya jack DC (PWRIN) dari Arduino, atau menggunakan regulator buck 6 Volt terpisah untuk daya motor, sambil memberi makan 9 Volts langsung ke jack Arduino DC.
  • Mencoba memberi daya pada Arduino dengan baterai dan memberi daya pada motor dari pin Vin Arduino adalah ide yang buruk karena
    • Dioda M7 antara jack DC dan pin Vin pada beberapa desain referensi Arduino diberi peringkat 1 Ampere, motor mungkin dapat menggambar lebih banyak, setidaknya untuk sementara
    • Semua suara elektromagnetik yang dihasilkan oleh motor, kebisingan pergantian ditambah transien flyback, akan dimasukkan kembali ke papan Arduino kecuali jika decoupling yang sangat kaku diterapkan, bukan masalah yang sederhana. Umpan balik EMI ini akan menyebabkan masalah intermiten, sulit di-debug, dengan operasi Arduino.
Anindo Ghosh
sumber
10

Kebanyakan perisai mengambil beberapa pin dan meninggalkan sisanya untuk Anda (itu sebabnya banyak yang memiliki replika sistem pin Arduino di atasnya menggunakan header stackable). Mereka dirancang untuk menjadi tanpa kerumitan mungkin, jadi mendapatkan perisai adalah cara termudah untuk berkeliling ini.

Saya pribadi tidak menyalakan motor dari papan langsung; alih-alih saya menggunakan driver motor seperti L293D untuk ini. Pin tidak benar-benar baik untuk mengekstraksi arus, dan umumnya lebih baik untuk menyalakan sensor langsung daripada melalui pin Arduino. Ingat, pin memiliki batas saat ini, dan jika Anda membebani mereka, pin tersebut akan terbakar.

Menggunakan L293D itu mudah:

masukkan deskripsi gambar di sini

Hubungkan pin 1,9,16 ke sumber Vcc Anda (terminal positif dari sumber 5V apa pun yang Anda gunakan untuk Arduino. Bagi saya ini umumnya berupa garis yang ditarik dari LM7805). Sekarang hubungkan pin 4,5,13,12 ke GND Anda (terminal negatif). Sekarang, hubungkan pin 8 ke sumber tegangan tinggi (6V, 12V, atau apa pun yang ingin Anda makan ke motor Anda). Perhatikan bahwa terminal negatif semua sumber tegangan harus disingkat menjadi GND.

Sekarang, hubungkan motor Anda di dua pin output di satu situs (3,4 di sebelah kiri). Hubungkan pin input (2,7) ke dua pin yang berbeda di Arduino. Ketika Anda memberikan sinyal yang sama (TINGGI atau RENDAH) ke kedua pin, maka motor berhenti. Jika Anda memberikan TINGGI dari satu pin dan RENDAH dari yang lain, motor akan bergerak searah jarum jam atau berlawanan arah jarum jam, tergantung pada pin mana yang mendapatkan sinyal.

Jika Anda ingin motor searah dan ingin menyimpan pin, pendekkan salah satu pin input ke GND. Sekarang, ketika pin input lainnya RENDAH, motor akan mati, dan ketika TINGGI, motor akan hidup.

Anda dapat memasang motor lain menggunakan prosedur yang sama di ujung chip jika diinginkan.

L293D menarik sejumlah kecil arus dari Arduino, dan memberi daya motor dari arus yang ditarik melalui pin 8, dan biasanya ideal untuk situasi seperti itu.

Manishearth
sumber