Mengontrol motor DC yang sangat kecil dengan PWM?

8

Saya memiliki motor DC yang sangat kecil (dari Walkman), saya ingin mengontrol kecepatan dari pengontrol mikro. Untuk itu saya ingin menghubungkan seri MOSFET dan menerapkan sinyal PWM ke gerbangnya untuk mengubah kecepatan motor.

Saya telah mengukur L & R motor = 4.7mH, 11.5Ohm (Tao 0.41msec).

Dari menjalankan beberapa percobaan dengan motor menggunakan catu daya bangku saya dapat melihat bahwa itu berjalan dengan baik dari tegangan 0,2V hingga sekitar 0,4V - itu semua kisaran yang saya butuhkan.

Catu daya yang saya miliki untuk ini diatur ke 1.8V (digunakan untuk bagian digital dari rangkaian) sehingga ini membuat menggunakan MOSFET standar agak sulit karena saya tidak dapat memasok tegangan yang diperlukan untuk saturasi gerbang. Saya membeli beberapa P-channel MOSFET seperti ini .

Jadi meskipun saya akan mengira pengaturan ini akan bekerja (Vcc -> motor -> FET -> GND) saya sepertinya tidak bisa mendapatkan resolusi yang baik atas kontrol dan saya tidak mendapatkan torsi sebanyak dari motor yang saya gunakan untuk mendapatkan ketika lari dari catu daya DC.

Saya tidak yakin apa freq. Saya harus menggunakan dan tidak yakin parameter lain apa yang perlu diperiksa untuk membuat pekerjaan ini sebagaimana dimaksud. Bantuan apa pun akan dihargai.

* PEMBARUAN * Mengikuti jawaban Olin, saya telah membangun sirkuit yang disarankannya. Saya telah menggunakan transistor 2N3904, resistor 180Ohm disejajarkan dengan tutup 4.7nF. Terlampir adalah tegangan kolektor ketika dijalankan dari kode PWM 100 (dari 256). Vcc adalah 1.8V.

masukkan deskripsi gambar di sini

pengguna34920
sumber
1
mengapa tidak menggunakan BJT sebagai gantinya - ini adalah motor kecil dan Anda akan dengan mudah mendapatkan sinyal 0,6V untuk menyalakannya.
JIm Dearden
@ JImDearden Saya mencoba beberapa 2N5088 yang saya miliki tetapi penurunan tegangan pada transistor begitu besar sehingga hampir tidak ada tegangan yang diterapkan pada motor sehingga hanya bersenandung dan tidak bergerak.
user34920
1
Coba beralih transistor seperti 2N3904 dengan resistor dasar 1k. Anda juga akan memerlukan dioda flyback pada motor dengan banyak induktansi dan tegangan berlebih. 1kHz harus oke untuk PWM.
Jon

Jawaban:

8

Solusi paling sederhana adalah dengan menggunakan saklar NPN sisi rendah:

Anda mengatakan resistansi motor DC adalah 11,5 so, sehingga arus maksimum yang dapat dihasilkan adalah 1,8 V / 11,5 Ω = 160 mA. Sebenarnya transistor akan memakan beberapa 100 mV menurunkan arus maksimum yang mungkin, jadi ini adalah maksimum yang aman untuk dirancang. Gambar transistor baik untuk mendapatkan minimum 50, jadi kita membutuhkan setidaknya 160 mA / 50 = 3,2 mA arus basis. 5 mA kemudian merupakan target yang baik untuk memastikan transistor jenuh saat menyala. Gambar drop BE menjadi 700 mV, sehingga menyisakan 1,1 V melintasi resistor saat dinyalakan. 1.1 V / 5 mA = 220 Ω.

C1 ada untuk mempercepat turn-on dan turn-off. (220 Ω) (4,7 nF) = 1 μs, yang merupakan konstanta waktu C1-R1.

Frekuensi PWM harus cukup cepat sehingga arus melalui motor berubah sedikit setiap fase on dan off. Riak yang disebabkan oleh PWM adalah tegangan AC yang ditumpangkan pada tegangan DC rata-rata. Hanya tegangan DC yang digunakan untuk menggerakkan motor. Komponen AC tidak menyebabkan torsi, hanya panas, jadi Anda ingin tetap rendah relatif terhadap DC. Umumnya Anda menjalankan motor sedikit di atas batas pendengaran manusia, yang juga biasanya cukup cepat untuk menjaga komponen AC kecil. Pada 25 kHz, misalnya, periode PWM adalah 40 μs, yang akan memberi Anda banyak resolusi dari perangkat PWM yang masuk akal dalam mikrokontroler.

Ditambahkan sebagai respons terhadap jejak lingkup kolektor

Bentuk dasar bentuk gelombang terlihat bagus, sehingga tampaknya transistor beralih dengan benar dan tegangan diterapkan di motor dengan benar.

Paku saat belokan mengkhawatirkan. Mereka mungkin artefak lingkup, tetapi jika jejak lingkup Anda akurat, maka dioda tidak berfungsi atau tidak terhubung dengan benar. Paku tidak boleh lebih dari satu volt atau lebih di atas pasokan.

D1 tidak hanya menjaga agar transistor tidak hangus, tetapi juga melindungi banyak arus motor selama waktu mati. Yang pertama diperlukan, dan yang kedua meningkatkan efisiensi.

Ditambahkan 2

Melihat lebih dekat pada jejak lingkup Anda, saya melihat bahwa tegangan kolektor saat motor mati adalah 2,48 V. Anda mengatakan suplai 1,8 V, sehingga membuat tegangan mati 680 mV di atas pasokan. Itu berarti Anda tidak membangun sirkuit seperti yang saya katakan. Anda jelas menggunakan dioda silikon biasa, mungkin yang lambat seperti 1N400x. Giliran lambat pada waktu dioda menjelaskan lonjakan tegangan, dan mengurangi level drive keseluruhan sedikit pada siklus tugas PWM tertentu. Ini juga akan menyebabkan shoot-thru ketika transistor dinyalakan kembali, karena dioda masih berjalan. Dioda Schottky akan memiliki drop maju lebih rendah dan pemulihan mundur efektif dalam konteks sirkuit ini.

Sistem umumnya masih berfungsi, tetapi coba dengan dioda Schottky seperti yang saya sebutkan.

Olin Lathrop
sumber
Saya sebenarnya sudah menyusun sirkuit ini sekarang. Frekuensi PWM. sekitar 31KHz. Saya menggunakan transistor 2N3904 dengan resistor 180 Ohm ke pangkalan dan tutup percepatan 4.7nF. Saya memiliki resolusi 8bit PWM dari MCU saya. Pada sekitar kode 100 (dari 256) saya dapat melihat motor mulai berputar. Adakah pemikiran tentang cara meningkatkan resolusi? Mungkin menambahkan beberapa offset DC ke pangkalan? Saya juga ingin menunjukkan bahwa motor berjalan dengan kode 100, namun berjalan sedikit lebih cepat daripada min. kecepatan yang saya butuhkan. Saya tidak dapat menurunkan kode PWM karena akan berhenti.
user34920
terima kasih Olin untuk jawaban yang bagus. Anda akan menguraikan pilihan C1? Anda berbicara tentang konstanta waktu, saya mengerti seharusnya sekitar 1/10 dari periode switching, tetapi saya berharap ukuran C1 saja yang penting untuk menghidupkan / mematikan waktu karena menyediakan beberapa biaya "instan".
Vladimir Cravero
1
@ Vlad: Membuang muatan tambahan ke pangkalan saat dihidupkan, dan mengisap beberapa operator gratis saat mematikan keduanya adalah peristiwa jangka pendek. Mereka mungkin hanya berlangsung beberapa 100 ns setelah setiap tepi. Anda ingin waktu yang konstan sedikit lebih lama dari itu, tetapi juga cukup pendek sehingga tutup "reset" sebelum tepi berikutnya. Kami tampak seperti kompromi yang baik, tetapi banyak faktor yang bisa jadi masalah yang sulit diprediksi. Saya akan mulai dengan nilai-nilai yang ditunjukkan, kemudian melihat bentuk gelombang dan menyesuaikan jika perlu.
Olin Lathrop
@user: Lihatlah bentuk gelombang kolektor. Mungkin hal-hal tidak terjadi seperti yang dimaksudkan. Apa yang dilakukan motor dengan voltase DC yang bervariasi? Apakah ada tegangan di mana ia mulai tetapi kemudian tidak pergi terlalu cepat setelah pergi?
Olin Lathrop
@ OlinLathrop Saya menambahkan foto bentuk gelombang kolektor (pengukuran ini diambil melintasi transistor CE). Saat menggunakan suplai DC, motor mulai berputar pada 0,2V dan kecepatan itu yang saya inginkan minimum (sekitar 50-60 RPM).
user34920
0

Mari kita asumsikan Anda memiliki pengalaman dasar dengan mikrokontroler dan dapat membangun sirkuit.

Cara paling lurus ke depan untuk menggerakkan motor menggunakan H-bridge, current sense resistor, dan PWM. Pada dasarnya H-bridge akan memungkinkan penggunaan 3.3V atau 5V, apa pun yang paling nyaman.

Bahkan, tergantung pada aplikasi Anda bahkan dapat melewati kontrol saat ini, mungkin Anda tidak akan menyebabkan kerusakan bahkan jika motor akan mandek.

Ngomong-ngomong, apakah Anda memerlukan kontrol kecepatan atau posisi?

Gregory Kornblum
sumber