Mengemudi motor DC dengan MOSFET dan mikrokontroler?


13

Saya sedang mengembangkan quadcopter nano menggunakan mikrokontroler Atmega328, didukung pada 3.3V, dan motor DC brushed sangat kecil. Arus rata-rata yang digunakan oleh motor ini adalah sekitar 800mA @ 3.7V.

Awalnya, untuk mengendarainya, saya menggunakan driver motor L293D tetapi komponen ini cukup tidak efisien. Arus diukur ketika motor berlari dengan daya maksimum sekitar 500mA dan jadi daya dorongnya jauh lebih rendah dari yang seharusnya.

Sekarang, untuk mengatasi masalah ini, saya akan mengganti driver motor dengan 4 MOSFET tingkat logika. Setelah pencarian yang panjang, saya menemukan ini (2SK4033).

Apakah Anda tahu apakah itu akan berhasil? Apakah saya harus menggunakannya bersamaan dengan dioda? Jika jawabannya "ya", bagaimana ini (MBR360RLG)?

Saya memilih komponen ini juga karena saya dapat membelinya dari toko online yang sama.


2
Andy telah menjawab bagian MOSFET dari pertanyaan Anda, tetapi tidak ada yang menyebutkan pertanyaan yang lebih mendasar: bagaimana Anda berencana untuk mengganti L293D dengan 4 N MOSFET? Menempatkan N MOSFET ke sisi yang tinggi dapat menyebabkan masalah efisiensi. Gambar skema dapat membantu memperjelas ide Anda.
Laszlo Valko

Apa yang Anda maksud dengan "sisi tinggi"? Pada saat ini, satu-satunya skema yang saya miliki adalah yang memiliki L293D. Jika itu bisa membantu, saya bisa mempostingnya. Ide saya adalah bahwa setiap motor digerakkan oleh MOSFET (keseluruhan 4) dan jika diperlukan, dioda juga. Apa yang bisa menjadi solusi yang lebih efisien?
supergiox

Setiap output L293D termasuk transistor "sisi tinggi" (antara Vcc & output) dan transistor "sisi rendah" (antara GND & output). Jika Anda mengganti transistor "sisi tinggi" dengan N MOSFET, Anda akan membutuhkan catu daya yang dapat memberikan Vgs (setidaknya 2..3..4V) di atas tegangan output. Atau maks. tegangan keluaran adalah Vcc - Vgs ...
Laszlo Valko

Vgs harus 3.3V dan output (Vds) harus 3.7V (tegangan baterai yang sama, yang unik). Jadi, jika ada masalah ini, bagaimana saya bisa melakukannya? Bisakah Anda menyarankan solusi lain?
supergiox

2
Anda memiliki opsi berikut: a) gunakan P MOSFET untuk sisi-tinggi; b) menggunakan pengganda tegangan terpisah atau rangkaian konverter DC-DC untuk menyediakan 2 * Vcc untuk menggerakkan gerbang MOSFET sisi tinggi; c) menggunakan sirkuit bootstrap untuk memberikan tegangan Vout + Vcc yang tepat untuk menggerakkan gerbang MOSFET sisi-tinggi. Masing-masing memiliki kelemahan dan / atau keterbatasannya.
Laszlo Valko

Jawaban:


17

MOSFET harus bekerja dengan sangat baik untuk aplikasi ini. Berikut beberapa hal yang perlu dipertimbangkan:

1:

Saat menggunakan FET untuk menggerakkan beban, Anda dapat memilih konfigurasi sisi-tinggi atau sisi-rendah. Sisi tinggi menempatkan FET di antara rel daya dan beban, dan sisi lain beban terhubung ke ground. Dalam konfigurasi sisi rendah, satu ujung beban terhubung ke power rail, dan FET diposisikan antara beban dan tanah:

HighVsLow

Cara paling sederhana untuk menggerakkan motor Anda (atau beban lainnya) adalah dengan menggunakan NOSFET Saluran-N dalam konfigurasi sisi rendah. N-FET mulai bekerja ketika tegangan gerbang lebih tinggi dari sumbernya. Karena sumber terhubung ke ground, gerbang dapat didorong dengan logika on-off normal. Ada ambang batas bahwa tegangan gerbang harus melampaui ("Vth") sebelum melakukan FET. Beberapa FET memiliki Vth dalam puluhan volt. Anda menginginkan N-FET "tingkat logis" dengan ambang batas yang jauh lebih kecil dari Vcc Anda.

Ada dua kelemahan pada konfigurasi FET sisi rendah:

  • Motor berliku terhubung langsung ke power rail. Saat FET mati, seluruh belitan "panas". Anda mengganti ground, bukan koneksi power.

  • Motor tidak akan memiliki referensi ground yang benar. Itu potensi terendah akan lebih tinggi dari tanah oleh tegangan maju FET.

Tak satu pun dari ini harus penting dalam desain Anda. Namun, mereka bisa bermasalah jika Anda tidak mengharapkannya! Terutama dengan sirkuit daya tinggi :)

Untuk mengatasi masalah ini, Anda bisa menggunakan P-FET dalam konfigurasi sisi tinggi. Sirkuit penggerak menjadi sedikit lebih rumit. Sakelar P-FET biasanya memiliki gerbang yang ditarik ke rel daya. Power rail ini lebih tinggi dari VCC UC, jadi Anda tidak dapat menghubungkan pin I / O UC langsung ke gerbang. Solusi umum adalah dengan menggunakan N-FET sisi rendah yang lebih kecil untuk menarik ke bawah gerbang P-FET sisi tinggi:

DualFet

R1 dan R3 ada untuk menjaga FET dimatikan sampai Q2 digerakkan. Anda akan membutuhkan R3 bahkan dalam konfigurasi sisi rendah.

Dalam kasus Anda, saya pikir N-FET sisi rendah sederhana (dengan R3) akan melayani Anda lebih baik.


2:

Perhatikan R2 di diagram terakhir. Gerbang MOSFET bertindak sebagai kapasitor, yang harus diisi sebelum arus sumber drain mulai mengalir. Mungkin ada lonjakan arus yang signifikan ketika Anda pertama kali menyediakan daya, jadi Anda perlu membatasi arus ini untuk mencegah kerusakan pada driver output UC. Tutupnya hanya akan terlihat seperti kependekan untuk sekejap sehingga tidak perlu ada margin kesalahan yang besar. Atmel spesifik Anda, misalnya, dapat mengambil 40mA. 3.3V / 35mA => 94.3 Ohm. Sebuah resistor 100 Ohm akan bekerja dengan baik.

Namun, resistor ini akan memperlambat waktu nyala dan mati FET, yang akan memberi batas atas pada frekuensi switching Anda. Juga, ini memperpanjang jumlah waktu di mana FET berada di wilayah linier operasi, yang menghabiskan daya. Jika Anda berpindah pada frekuensi tinggi, ini mungkin menjadi masalah. Salah satu indikatornya adalah jika FET terlalu panas!

Solusi untuk masalah ini adalah menggunakan Driver FET. Mereka secara efektif buffer yang dapat sumber lebih banyak arus, dan dengan demikian dapat mengisi gerbang lebih cepat tanpa perlu resistor pembatas. Juga, sebagian besar Driver FET dapat menggunakan power rail yang lebih tinggi daripada Vcc pada umumnya. Tegangan gerbang yang lebih tinggi ini mengurangi daya tambahan FET yang on-resistance dan hemat. Dalam kasus Anda, Anda dapat memberi daya pada Driver FET dengan 3.7V, dan mengendalikannya dengan 3.3V uC.

FetDriver


3:

Akhirnya, Anda akan ingin menggunakan dioda Schottky untuk melindungi terhadap lonjakan tegangan yang disebabkan oleh motor. Lakukan ini setiap kali Anda mengganti beban induktif:

LowSideWithDiode

Motor berkelok-kelok adalah induktor besar, sehingga akan menahan setiap perubahan aliran arus. Bayangkan arus mengalir melalui belitan, lalu matikan FET. Induktansi akan menyebabkan arus terus mengalir dari motor ketika medan listrik runtuh. Tapi, tidak ada tempat untuk arus itu pergi! Jadi itu menembus FET, atau melakukan sesuatu yang sama merusaknya.

Schottky, ditempatkan sejajar dengan beban, memberikan jalur yang aman bagi arus untuk bergerak. Lonjakan tegangan maksimal pada tegangan maju dioda, yang hanya 0,6 V pada 1A untuk yang Anda tentukan.

Gambar sebelumnya, konfigurasi sisi rendah dengan dioda flyback, mudah, murah, dan cukup efektif.


Satu-satunya masalah lain yang saya lihat dengan menggunakan solusi MOSFET adalah bahwa ia secara inheren searah. L293D asli Anda adalah beberapa driver setengah jembatan. Ini memungkinkan untuk menggerakkan motor di kedua arah. Gambar menghubungkan motor antara 1Y dan 2Y. L293D dapat menghasilkan 1Y = Vdd dan 2Y = GND, dan motor berputar dalam satu arah. Atau, dapat menghasilkan 1Y = GND dan 2Y = Vdd, dan motor akan berputar ke arah lain. Cukup berguna.

Semoga berhasil dan selamat bersenang - senang!


Bagus! Apakah saya memerlukan resistor antara ujung mikro dan gerbang? Apakah nilai 220 Ohm bagus? (3.3V / 0.02A = 170 Ohm ~ 220 Ohm)
supergiox

1
Pertanyaan bagus. Di dunia ideal, gerbang tidak akan tenggelam sama sekali. Itulah salah satu manfaat FET dibandingkan BJT. Tapi, di dunia nyata, gerbang bertindak sebagai kapasitor kecil, yang harus diisi sebelum arus sumber drain mulai mengalir. Anda ingin mengisi daya dengan cepat, untuk mengaktifkan FET dengan cepat. Ketika Anda pertama kali menyalakan pin UC, kapasitansi gerbang muncul sebagai korsleting. ATmega328 dapat mengambil 40mA per pin. Tutupnya hanya akan terlihat seperti kependekan untuk sesaat, jadi saya tidak akan repot dengan terlalu banyak margin of error. Katakanlah, 3.3V, 35mA: ~ 100-Ohm. Saya akan menggabungkan ini, hari ini juga!
bitsmack

1
Oh, dan jika Anda mengganti motor pada frekuensi tinggi, hambatan ini menjadi masalah. Ini memperlambat pengisian dan pemakaian gerbang, yang memperlambat frekuensi switching Anda. Juga, ini memperpanjang jumlah waktu di mana FET berada di wilayah linier operasi, yang menghabiskan daya. Jika Anda menemukan bahwa ini adalah masalah, gunakan "FET Driver" atau buffer lain, yang dibuat untuk sumber / menenggelamkan arus jauh lebih tinggi ke / dari gerbang. Kemudian Anda dapat meminimalkan (atau menghilangkan) pengeras ulang.
bitsmack

Saya pikir frekuensi saklar adalah frekuensi PWM, jadi seharusnya sekitar 500Hz.
supergiox

1
Bagus :) Saya cemburu; Saya sudah lama ingin membangun quad copter sekarang! Beri tahu kami ...
bitsmack

12

Inilah yang saya cari untuk MOSFET. Ngomong-ngomong, ini dari lembar data 2SK4033: -

masukkan deskripsi gambar di sini

Anda mengatakan 800mA adalah arus rata-rata tetapi, dapatkah ini meningkat menjadi lebih dari 1A saat beban? Bagaimanapun, pada 1A dan dengan tegangan drive gerbang 3.3V, MOSFET turun sekitar 0.15V melintasi terminal-terminalnya saat menyalakan beban 1A. Dapatkah Anda hidup dengan kehilangan daya ini (150mW) dan yang lebih penting, ketika tegangan baterai turun di bawah 3V, Anda dapat hidup dengan kinerja yang hilang karena tegangan gerbang turun dengan tak terhindarkan.

Hanya Anda yang bisa menjawab pertanyaan ini. Ada MOSFET yang lebih baik dari ini tetapi Anda harus menghitung arus beban nyata untuk motor yang Anda harapkan.

EDIT

Ini adalah chip yang saya temui yang bisa sangat berguna sebagai pengganti MOSFET. Ini adalah DRV8850 dari TI. Ini berisi dua setengah jembatan dan ini berarti dapat secara independen menggerakkan dua dari 4 motor tanpa perlu dioda flyback (pada dasarnya, FET atas beroperasi sebagai penyearah sinkron dan ini tentu saja mengurangi kerugian). On-resistance untuk setiap FET adalah 0,045 ohm dan diberi nilai 5A (daya dihamburkan sekitar 1,1 watt) tetapi, mengingat bahwa OP menginginkan sekitar 1A, ini menjadi sangat sepele. Rentang tegangan daya adalah 2V hingga 5.5V jadi sekali lagi ini sangat cocok: -

masukkan deskripsi gambar di sini


Terima kasih banyak. Ya, motor dapat meningkatkan arus ke nilai sedikit di atas 1A, tetapi hanya untuk waktu yang singkat. Aturan praktis yang saya tahu adalah untuk mempertimbangkan arus yang merupakan ganda dari rata-rata (1.6A). Saya pikir kehilangan daya 150mW bukanlah masalah besar.
supergiox

Bagaimana dengan tegangan baterai yang lebih rendah ketika drive gerbang lebih buruk dan kehilangan menjadi lebih besar. Saya bermain advokat setan tentu saja!
Andy alias

Tentang tegangan baterai turun di bawah 3V, saya tidak tahu apakah saya mengerti maksud Anda. Lagi pula, saya menggunakan regulator tegangan (LE33CZ) untuk memberi daya pada ATmega pada 3.3V. Bukankah itu berarti bahwa tegangan "selalu" 3.3V? Satu pertanyaan lagi. Bagaimana dengan dioda?
supergiox

1
Ketika tegangan baterai turun hingga 3,4 volt, output regulator akan mulai turun juga dan ini berarti volt drive ke gerbang mulai turun dan fets menjadi lebih tidak efisien. Menangani skenario ini sebelum dioda. Dioda itu sepele dibandingkan.
Andy alias

1
Apakah Anda memerlukan satu Fet untuk mengendalikan setiap motor atau dua. Laszlo mengasumsikan Anda membutuhkan 2 karena Anda awalnya menggunakan L293.
Andy alias

6

Karena motor DC brushed digunakan, Anda tidak perlu menggunakan H-Bridge sebagai drive. Hanya dua case yang benar-benar membutuhkan H-Bridge; perlu pergantian motor eksternal (pikirkan motor PM brushless misalnya) atau perlu membalikkan putaran. Sepertinya tidak ada yang berlaku di sini. Menggunakan arah tunggal atau Single Quadrant Drive (SQD) akan sangat menyederhanakan apa yang Anda coba lakukan.

FET yang Anda pikirkan untuk digunakan (2SK4033) bukan pasangan yang cocok untuk voltase drive yang tersedia (Andy telah menunjukkan alasannya), dan kami akan membahas lebih detail tentang memilih FET nanti.

Mengemudi motor DC brushed dengan Single Quadrant Drive (SQD)

Vth

masukkan deskripsi gambar di sini

VωRwindRgRpdVbVdrv adalah tegangan dari driver FET.

sayam) dan siklus tugas PWM (DC) yang diberikan, akan ada arus FET (puncak sayad-halk, rms sayad-rms) dan arus Dioda (rata-rata sayamendambakan) terkait sebagai:

  • sayad-halk = sayam
  • sayad-rms2 = DC sayam2
  • sayamendambakan = (1-DC) sayam

Kriteria dasar untuk memilih FET (semacam ABC untuk memilih FET):

  • VDS > 1.5VB-maks

VDSseharusnya tidak kurang, tetapi tidak perlu memilikinya jauh lebih tinggi juga. Bahkan, bagian tegangan yang lebih tinggi memiliki die yang lebih besar dan ukuran paket mengambil langkah di atas ~ 55V.

  • Vth-maks < VDrv-mnt3

    Memilih Vth-maks cara ini akan memberikan manfaat penuh dari Rds bagian itu.

  • ΔTJ-SEBUAH <50C

    Kenaikan panas sangat penting. Ini bertanggung jawab atas semua kerugian ... kerugian konduksi, kerugian gerbang, dan kehilangan switching.

Pemilihan bagian sampel berdasarkan 3 kriteria:

Dalam hal ini dengan VB-maks = 3.7V dan VDrv-mnt = 3.3V, cari bagian saluran N dengan VDS > 5.6V dan Vth-maks <1.1V dan tebakan RDSdari ~ 40mOhms baru saja masuk. Saya menempatkan ini di layar digikey, tetapi vendor yang sama akan bekerja. Beberapa bagian muncul. Karena bagian yang Anda sebutkan adalah Toshiba, pilih salah satu dari mereka untuk melihat lebih jauh.

  • SSM3K123TU : VDS = 20V, Vth-maks = 1V

Next step is to figure out the Heat rise. What kind of power can this part take and still have less than a 50C rise? This is a small part, 2mm X 2.1mm. Looking at the thermal resistance graph in the datasheet (sheet 5, curve c), we see that for the most minimally mounted part Rth converges to 500C/W. So, for 50C rise power in the FET must be limited to 0.1W total for the part to be acceptable. Power in the FET is the sum of conduction loss, and switching loss:

PT = Pcond + Psw

where

Pcond = Rds DC Im2

Psw ~ 12ImVbFPWM(τf+τr)

When the FET switches, it all happens in the Miller Plateau. To turn a FET on, as Vgs increases, at some point Vds will start to fall. That's the start of the Miller Plateau. Vgs will be stuck at that voltage (the Miller Plateau voltage Vmp) until the FET is turned on and Vds reaches 0V. The time it takes for that to happen is the fall time of the switching waveform.

enter image description here

That's the Miller Plateau for the SSM3K123. See it circled there in red? Looks like it's about 4nC wide. So, the time it takes for the FET to switch is the same time it takes for the gate drive circuit to process (by displacement current) that 4nC of Miller Plateau charge (Qmp). Current in the driver will be determined by (Vmp - Vdrv)/Rg. Also approximate that Vmp is 1/2 Vdrv, so that:

Qmp = τVdrv2Rg or τ = 2RgQmpVdrv = 2(100Ohms)(4nC)3.3V = 242nSec

Time for some operating assumptions. Ambient temperature is 50C (so max FET die temp is 100C), PWM frequency is 20kHz (because lower frequencies are audible, and really 5kHz to 10kHz is just obnoxious), duty cycle (DC) is 90%, and motor current (Im) is 1.2A. From the Rds versus temp curve on page 3 of the datasheet we see that at 100C, Rds is 33mOhms. Now we are ready to calculate power loss in the FET.

PT = 0.9(33mOhm)(1.2A)2 + (3.3V)(1.2A)(242nSec)(20kHz) = 36mW + 19mW = 55mW

So, for these conditions FET heat rise comes in at about 1/2 the limit of 100mW. In fact, Im could be 1.65A and the FET would still be in the heat rise budget.

Loose Ends

  • Put the drive circuit and switches close to the motor.

  • While it may be possible for the micro to drive the FET directly, a driver for the protection of the micro is a good idea (something like a NC7WZ16 could work here).

  • Gate circuit resistance becomes an exercise in impedance matching. The lowest gate circuit resistance should be is the characteristic impedance of gate circuit parasitic L and FET Ciss. Here is an earlier question that goes in to more detail and may be helpful.

  • Choose a diode with the same voltage rating as the FET, and current rating higher than the maximum Im. A Schottky will have lower loss, but if FET duty cycle is > ~70% it won't really matter if a switching diode is used instead.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.