Saat ini para peminat sangat tertarik untuk mengendalikan Brushless DC (BLDC).
Dibandingkan dengan motor DC tradisional, performa motor telah meningkat, efisiensi energi juga meningkat, namun lebih sulit digunakan. Banyak produk siap pakai
tersedia untuk tujuan ini.
Misalnya, ada banyak pengontrol BLDC kecil yang bekerja sangat baik untuk pesawat RC.
Bagi mereka yang ingin mempelajari pengendalian BLDC secara lebih mendalam, terdapat juga berbagai mikrokontroler dan perangkat keras elektronik lainnya untuk pengguna industri, yang biasanya memiliki dokumentasi yang sangat baik.
Sejauh ini saya belum menemukan penjelasan lengkap tentang cara menggunakan mikrokontroler Arduino untuk kontrol BLDC.
Selain itu, jika Anda tertarik untuk melakukan pengereman regeneratif, atau menggunakan BLDC untuk pembangkit listrik, saya belum menemukan banyak produk yang cocok untuk digunakan dengan motor kecil, saya juga belum mengetahui cara mengendalikan generator 3 Fasa.
Struktur ini awalnya ada dalam cerita tentang
perhitungan real-time, saya terus melakukannya setelah kursus selesai.
Ide dari proyek ini adalah untuk menunjukkan model proporsional mobil hybrid dengan penyimpanan energi roda gila dan pengereman regeneratif.
Motor yang digunakan dalam proyek ini adalah BLDC kecil yang dibersihkan dari hard drive komputer yang rusak.
Manual ini menjelaskan cara menggunakan mikrokontroler Arduino dan
sensor posisi Hall- Affects dalam mode mengemudi dan pengereman regeneratif.
Harap dicatat bahwa mengunjungi oscillisoft sangat membantu, jika tidak penting, untuk menyelesaikan proyek ini.
Jika Anda tidak dapat mengakses ruang lingkup, saya telah menambahkan beberapa saran tentang cara melakukannya tanpa ruang lingkup (langkah 5).
Satu hal yang proyek ini tidak boleh disertakan dalam pengontrol motor sebenarnya adalah fungsi keselamatan apa pun seperti proteksi arus berlebih.
Faktanya, yang terburuk adalah motor HD Anda terbakar.
Namun, menerapkan proteksi arus berlebih dengan perangkat keras saat ini tidaklah sulit, dan mungkin saya akan melakukannya suatu saat nanti.
Jika Anda mencoba mengendalikan motor yang lebih besar, harap tambahkan proteksi arus berlebih untuk melindungi motor Anda dan keselamatan Anda sendiri.
Saya ingin mencoba menggunakan pengontrol ini dengan motor yang lebih besar yang dapat melakukan pekerjaan \'nyata\' tetapi saya belum memiliki yang tepat.
Saya perhatikan bahwa eBay menjual mobil 86 W dengan harga sekitar $40.
Sepertinya kandidat yang bagus.
Ada juga situs web RC bernama \'GoBrushless\' yang menjual kit untuk merakit BLDC mereka sendiri.
Ini tidak terlalu mahal dan sepadan dengan pengalaman membangunnya.
Harap dicatat bahwa tidak ada sensor hall untuk motor di situs web ini. Wah!
Menulis struktur ini adalah pekerjaan besar.
Semoga bermanfaat, silahkan berikan komentar dan sarannya.
Multimeter Digital (DMM) -
Jika DMM Anda memiliki osiloskop pengukur frekuensi (
Lebih baik memiliki minimal 2 saluran)
Driver T8 Torx (
Anda memerlukan salah satunya untuk membuka hard drive apa pun).
Ada toko perangkat keras yang bagus.
Bengkel Mesin dan prototipe cepat (
Ini sangat membantu tetapi menurut saya proyek ini dapat diselesaikan tanpa mereka).
Bahan cincin magnetik motor bldc dari hard disk komputer (
Setengah dari motor)
Dari hard drive lain Beberapa (3-6)
Ada motor kecil kedua di disk perak di hard disk (DC disikat OK)
Karet gelang atau (sebaiknya)
Motor DC brushless dengan pegangan dengan motor lain pelat roti elektronik kawat padat bulan Arduino Duemilanove Resistor 120 k ohm enam hingga 400 ohm resistor linier atau berputar Potensiometer100 k ohmST rangkaian mikro L6234 tiga fase IC driver motor dua kapasitor 100 uF satu kapasitor 10 nF satu kapasitor 220 nF satu kapasitor 1 uF satu kapasitor 100 uF tiga dioda penerima Satu 2. Sekering
Hall-5 Amp bipolar Honeywell SS411A 1 dudukan sekering 3
Catatan: Mike Anton merancang dan menjual produk yang akan menggantikan elektronika daya dan rangkaian sensor Hall yang telah saya tunjukkan dalam manual ini (
Ini dikendalikan menggunakan induksi potensial balik).
Spesifikasi dan informasi pengadaan dapat ditemukan di dua tautan berikut: Jika Anda akan mengerjakan proyek ini, saya sarankan Anda meluangkan waktu untuk memahami secara menyeluruh cara kerja dan kontrol BLDC.
Ada banyak sekali referensi online (
Lihat di bawah untuk beberapa saran).
Namun, saya menyertakan beberapa bagan dan tabel dalam proyek saya yang akan membantu Anda memahaminya.
Berikut adalah daftar konsep yang menurut saya paling penting untuk memahami proyek ini: Transistor MOSFET Setengah jembatan 3
fase Pengurangan kalimat 6- 3 langkah
Modulasi Lebar Pulsa motor fase (PWM) Hall-
Microchip AVR443: sensor-referensi umum Motor DC Prinsip Dasar untuk sensor posisi Digital
Kontrol motor DC brushless tiga fase berdasarkan kontrol motor DC atmelbrusless
Kontrol motor BLDC fase dari sensor Flying Star Hall, video yang bagus tentang membersihkan hard drive motor, namun penulis seolah-olah menjalankan motor sebagai motor loncatan dan sebagai motor loncatan. Halaman web referensi yang lebih spesifik untuk BLDC pada IC penggerak motor l6234, termasuk lembar data, catatan aplikasi, dan informasi pembelian.
Sampel gratis untuk penggerak motor tanpa sikat PM untuk aplikasi kendaraan listrik hibrida.
Ini adalah satu-satunya makalah yang saya temukan yang menjelaskan urutan perubahan fase pengereman regeneratif.
Tulisan ini, pengereman regeneratif pada kendaraan listrik bermanfaat, saya meminjam beberapa angka darinya, tapi menurut saya ini salah menjelaskan cara kerja regenerasi.
Saya melakukan proyek ini dengan motor penggerak disk daur ulang karena mudah dilewati dan saya suka menggunakan motor kecil bertegangan rendah untuk mempelajari kabel yang dikendalikan oleh BLDC dan tidak menimbulkan masalah keselamatan.
Selain itu, konfigurasi magnet sensor hall menjadi sangat sederhana dengan menggunakan cincin magnet (rotor)
Dari kedua motor ini (Lihat Langkah 4).
Jika Anda tidak ingin repot memasang dan mengkalibrasi sensor hall (langkah 5-7)
Saya tahu setidaknya ada beberapa motor penggerak CD/DVD yang terpasang di sensor Hall.
Untuk memberikan inersia putaran pada motor dan memberi sedikit beban, saya memasang 5 hard drive pada motor, direkatkan secara perlahan dengan sedikit lem kuat dan direkatkan ke motor (
Ini membuat roda gila dalam proyek asli saya).
Jika Anda akan melepaskan motor dari hard drive, Anda memerlukan drive torx T8 untuk membuka tutup Perumahan (
Biasanya ada dua sekrup yang tersembunyi di balik tongkat di label tengah)
Dan sekrup internal yang menahan motor di tempatnya.
Anda juga perlu melepas kepala Pembaca (
Sound Circle Executive)
Dengan cara ini Anda dapat mengeluarkan disk memori untuk menjangkau motor.
Selain itu, Anda memerlukan motor hard drive kedua yang sama untuk melepaskan rotor dari motor tersebut (
Ada magnet di dalamnya).
Untuk membongkar motor, saya ambil rotor (atas)
Catok motor dan cungkil pada stator (bawah)
Kedua obeng tersebut berjarak 180 derajat.
Tidak mudah untuk memegang motor dengan cukup kencang tanpa mengalami deformasi.
Anda mungkin ingin membuat v-
block kayu yang digunakan untuk tujuan ini.
Saya mengebor lubang pada cincin magnet pada mesin bubut agar pas dengan nyaman di bagian atas motor.
Jika Anda tidak dapat menggunakan mesin bubut, Anda dapat memperbaiki rotor terbalik pada motor dengan lem yang kuat.
Gambar 2 dan 3 dibawah ini memperlihatkan interior salah satu motor yang telah saya bongkar.
Pada paruh pertama terdapat (rotor) terdapat 8 kutub (
Magnet terbungkus plastik).
Pada babak kedua (stator)
terdapat 12 slot (belitan).
Masing-masing dari ketiga fasa motor tersebut mempunyai 4 slot yang disusun secara seri.
Beberapa motor HD memiliki tiga kontak di bagian bawah, satu kontak per fase, dan yang lainnya adalah tap tengah motor (
Tempat bertemunya tiga tahap).
Dalam proyek ini, tidak diperlukan ketukan tengah, namun dapat berguna dalam kontrol bebas sensor (
saya berharap dapat merilis catatan tentang kontrol bebas sensor suatu hari nanti).
Jika motor Anda memiliki empat kontak, Anda dapat mengidentifikasi fase dengan ohmeter.
Hambatan antara keran pusat dan fasa adalah setengah dari hambatan antara dua fasa.
Sebagian besar literatur tentang motor BLDC membahas motor yang memiliki bentuk gelombang potensial belakang berbentuk tangga, namun motor hard drive tampaknya memiliki potensi balik yang terlihat seperti sinus (Lihat di bawah).
Sejauh yang saya tahu, mengendarai motor gelombang sinus dengan PWM gelombang sinus berfungsi dengan baik, meskipun efisiensinya mungkin sedikit menurun.
Seperti semua motor BLDC, motor ini terdiri dari
Jembatan Transistor setengah fase tiga (
Lihat foto ke-2 di bawah).
Saya menggunakan IC buatan ST Micro (L6234)
Untuk bridge atau disebut juga driver motor.
Sambungan listrik L6234 ditunjukkan pada langkah 8.
Foto ketiga di bawah ini menunjukkan diagram skema driver motor dan ketiga fasa motor.
Agar motor dapat beroperasi searah jarum jam, saklar akan dilakukan dengan urutan sebagai berikut (
Huruf pertama adalah transistor atas dan huruf kedua adalah transistor bawah)
: Langkah 1 2 3 4 5 6 searah jarum jam: CB, AB, AC, BC, BA, CA berlawanan arah jarum jam: BC, BA, CA, CB, AB, AC ini 6-
Urutan langkah memerlukan \'derajat kelistrikan\' sebesar 360, namun hanya derajat fisik 90 untuk motor ini.
Oleh karena itu, kecepatan putaran masing-masing motor terjadi empat kali lipat.
Kedua rangkaian tersebut kelihatannya sama, namun tidak sama karena untuk
rangkaian 6 Langkah, untuk CW, arah arus yang melalui fasa adalah satu arah, dan untuk CCW, arah arusnya berlawanan.
Anda dapat melihatnya sendiri dengan menerapkan tegangan baterai atau catu daya ke salah satu fasa motor.
Jika Anda memberikan tegangan, motor akan bergerak sedikit ke satu arah dan berhenti.
Jika Anda dapat dengan cepat mengubah tegangan fasa dalam salah satu urutan di atas, Anda dapat memutar motor secara manual.
Transistor dan mikrokontroler menyelesaikan semua saklar ini dengan sangat cepat, berpindah ratusan kali per detik ketika motor berjalan pada kecepatan tinggi.
Perlu diketahui juga bahwa jika tegangan diterapkan pada kedua fasa, motor akan bergerak sedikit dan kemudian berhenti.
Ini karena torsinya nol.
Hal ini dapat dilihat pada foto keempat di bawah ini yang memperlihatkan potensi balik dari sepasang fasa motor.
Ini adalah gelombang sinus.
Ketika gelombang melewati x-
poros, torsi yang dihasilkan oleh fasa ini adalah nol. Pada
rangkaian perubahan fasa BLDC enam Langkah yang tidak pernah terjadi.
Sebelum torsi pada fasa tertentu menjadi rendah, daya dialihkan ke kombinasi fasa lain.
Motor BLDC yang lebih besar biasanya diproduksi oleh sensor Hall di dalam motor.
Jika Anda memiliki motor seperti itu maka Anda dapat melewati langkah ini.
Juga, saya tahu setidaknya ada beberapa motor penggerak CD/DVD yang sudah terpasang di sensor Hall.
Saat motor berputar, tiga sensor hall digunakan untuk mendeteksi posisi, sehingga perubahan fasa dilakukan pada saat yang tepat.
Motor HD saya bekerja hingga 9000 RPM (150 Hz).
Karena terdapat 24 pergantian per roda, pada 9000 RPM, mesin diganti setiap 280 mikrodetik.
Mikrokontroler Arduino bekerja pada frekuensi 16 MHz, sehingga setiap siklus clocknya adalah 0,06 mikrodetik.
Saya tidak tahu berapa banyak siklus jam yang diperlukan untuk melakukan pengurangan kalimat, tetapi meskipun diperlukan 100 siklus jam, dibutuhkan 5 mikrodetik untuk setiap pengurangan kalimat.
Motor HD tidak memiliki sensor Hall sehingga perlu dipasang di bagian luar motor.
Sensor perlu diperbaiki sehubungan dengan putaran motor dan terkena serangkaian kutub yang konsisten dengan putaran motor.
Solusi saya adalah melepas cincin magnet dari motor yang sama dan memasangnya terbalik pada motor yang akan dikontrol.
Saya kemudian memasang tiga sensor hall di atas cincin magnet ini, dengan jarak 30 derajat satu sama lain pada poros motor (
putaran motor listrik 120 derajat).
Dudukan sensor Hall saya terdiri dari dudukan sederhana yang terdiri dari tiga bagian aluminium yang saya proses dan tiga bagian plastik yang dibuat berdasarkan prototipe cepat.
Jika Anda tidak memiliki alat ini, tidak akan sulit menemukan cara lain untuk menunjukkan posisi.
Membuat braket untuk sensor Hall akan lebih menantang.
Ini adalah cara kerja yang mungkin: 1.
Temukan baki plastik dengan ukuran yang tepat dan Anda dapat dengan hati-hati melakukan epoksi pada sensor hall. 2.
Sebuah templat dicetak di atas kertas yang lingkarannya sama dengan jari-jari cincin magnet, dan ketiga tanda tersebut berjarak 15 derajat 3.
Rekatkan templat ke disk, lalu gunakan templat tersebut sebagai panduan untuk menempatkan epoksi sensor hall pada tempatnya dengan hati-hati.
Sekarang sensor Hall sudah terpasang pada motor, sambungkan ke rangkaian yang ditunjukkan di bawah ini dan uji menggunakan DMM atau osiloskop untuk memastikan keluarannya semakin tinggi dan rendah seiring putaran motor.
Saya menjalankan sensor ini di bawah 5 v menggunakan output 5 v Arduino.
Sensor Hall memiliki output tinggi atau rendah (1 atau 0)
Itu tergantung pada apakah mereka merasakan Antartika atau Arktik.
Karena jaraknya 15 derajat, magnet berputar di bawahnya dan mengubah polaritasnya setiap 45 derajat, ketiga sensor ini tidak akan pernah tinggi atau rendah pada saat yang bersamaan.
Saat motor berputar, keluaran sensor adalah 6-
Pola langkah ditunjukkan pada tabel berikut.
Sensor harus selaras dengan gerak motor agar salah satu dari ketiga sensor tersebut berubah tepat pada posisi perubahan fasa motor.
Dalam hal ini, tepi naik sensor hall pertama (H1)
Harus konsisten dengan bukaan kombinasi C (tinggi) dan B (rendah).
Ini setara dengan menyalakan transistor 3 dan 5 pada rangkaian jembatan.
Saya menyelaraskan sensor dengan magnet dengan osiloskop.
Untuk melakukan ini, saya harus menggunakan tiga saluran cakupan.
Saya memutar motor dengan menghubungkan ke sabuk motor kedua dan mengukur potensial balik antara kombinasi dua fasa (
A dan B, A dan C)
Ini adalah dua sinus.
Seperti gelombang pada gambar di bawah.
Kemudian lihat sinyal sensor Hall 2 pada saluran 3 osiloskop.
Penahan sensor Hall diputar hingga tepi naik sensor hall sejajar sepenuhnya dengan titik di mana perubahan fasa harus dilakukan (Lihat di bawah).
Saya sekarang menyadari bahwa hanya ada dua saluran untuk melakukan kalibrasi yang sama.
Jika BEMF kombinasi fasa B-
Menggunakan C, tepi naik H2 akan berhubungan dengan kurva BC.
Alasan mengapa pergantian fasa harus dilakukan disini adalah untuk selalu menjaga torsi motor setinggi mungkin.
Potensi balik sebanding dengan torsi dan Anda akan melihat bahwa setiap perubahan fasa terjadi ketika potensial balik lewat di bawah kurva tahap berikutnya.
Oleh karena itu, torsi sebenarnya terdiri dari bagian tertinggi dari setiap kombinasi fasa.
Jika Anda tidak dapat mengakses cakupannya, inilah ide penyelarasan saya.
Ini sebenarnya latihan yang menarik bagi siapa saja yang ingin mengetahui cara kerja Motor BLDC.
Apabila motor Fase A dihubungkan (positif) dan B (negatif)
ke sumber listrik dan menghidupkan sumber listrik, maka motor akan berputar sedikit dan berhenti.
Kemudian, jika kabel daya negatif dipindahkan ke fasa C dan daya dihidupkan, motor akan berputar lebih jauh dan berhenti.
Bagian selanjutnya dari rangkaian ini adalah memindahkan ujung positif ke Fase B, dan seterusnya.
Ketika Anda melakukan ini, motor selalu berhenti di tempat torsinya nol, yang sesuai dengan satu tempat di mana grafik melewati sumbu x pada grafik.
Perhatikan bahwa titik nol dari kombinasi fasa ketiga berhubungan dengan posisi perubahan fasa dari dua kombinasi pertama.
Oleh karena itu, posisi torsi nol dari
kombinasi B-C adalah di mana Anda ingin memposisikan tepi naik h2.
Tandai posisi ini dengan tanda halus atau bilah tajam, lalu sesuaikan dudukan sensor hall menggunakan DMM hingga output H2 tepat lebih tinggi pada tanda ini.
Meski melenceng sedikit dari jadwal sekolah, seharusnya motor tetap berfungsi dengan baik.
Motor tiga fasa akan menerima daya dari driver motor tiga fasa L6234.
Saya menemukan bahwa ini adalah produk bagus yang dapat bertahan dalam ujian waktu.
Ada banyak cara untuk membuat komponen Anda tergoreng secara tidak sengaja saat menggunakan elektronika daya, saya bukan seorang insinyur listrik dan saya tidak selalu tahu apa yang terjadi.
Dalam program sekolah saya, kami membuat
keluaran setengah jembatan 3 Fase yang terdiri dari 6 transistor MOSFET dan 6 dioda.
Kami menggunakan ini pada HIP4086 dari driver Intersil lainnya, tetapi kami memiliki banyak masalah dengan pengaturan ini.
Kami membakar banyak transistor dan chip.
Saya menjalankan L6234 (
Jadi motornya) pada 12V.
L6234 memiliki serangkaian input yang tidak biasa untuk mengontrol setengah jembatan yang terdiri dari 6 transistor.
Tidak setiap transistor mempunyai masukan, tetapi
masukan pengaktifan (EN) untuk masing-masing dari tiga tahap, dan kemudian masukan lainnya (IN)
Pilih transistor mana yang berada dalam fasa terbuka (atas atau bawah).
Misalnya nyalakan transistor 1 (atas) dan 6 (bawah)
EN1 dan EN3 keduanya high (
EN2 low untuk menjaga stage tetap tertutup)
IN1 High, IN3 low.
Hal ini membuat kombinasi fasa-C.
Sedangkan catatan aplikasi L6234 menyarankan penerapan PWM yang digunakan untuk mengontrol kecepatan motor ke pin IN, saya memutuskan untuk melakukannya pada pin EN karena, pada saat itu, menurut saya akan menjadi \'aneh\' untuk menyalakan transistor fasa atas dan bawah secara bergantian \'.
Sebenarnya sepertinya tidak ada salahnya menyalakan transistor rendah kedua fasa secara bersamaan, karena mempunyai potensial yang sama, sehingga tidak ada yang melewati arus.
Dengan metode saya, fase tinggi diaktifkan dan dinonaktifkan secara bergantian pada frekuensi PWM, sedangkan fase rendah tetap menyala selama seluruh perubahan fase.
Di bawah ini adalah skema penggerak motor, saya telah menambahkan koneksi pin ke papan Arduino. Saya juga menambahkan
sekering 2,5 amp antara kabel baterai positif dan rangkaian, sekering kapasitor 100 uF antara catu daya dan gnd untuk mengurangi riak arus regeneratif.
spesifikasi
Catatan: Mike Anton membuat PCB untuk L6234, yang (saya yakin) akan
Mengganti trek ini dan menyelamatkan Anda dari pekerjaan merakitnya. Lihat tautan ini untuk
dan informasi pembelian: Saya belum menemukan banyak tentang 3-
Saya akan menjelaskan pemahaman saya tentang cara kerjanya.
Harap dicatat bahwa saya bukan seorang insinyur listrik dan kami akan menghargai segala koreksi atas penjelasan saya
Saat mengemudi, sistem kontrol mengirimkan arus ke tiga fase motor dengan cara yang memaksimalkan torsi
dalam pengereman regeneratif, kontrol sistem juga memaksimalkan torsi, tetapi kali ini torsi negatiflah yang menyebabkan motor melambat sekaligus mengirimkan arus kembali ke baterai.Metode
pengereman regeneratif yang saya gunakan berasal dari makalah dari Oakridge National Laboratory di Amerika Serikat.S.govt.Sebuah
laboratorium yang melakukan banyak penelitian untuk motor Otomotif.Bagan
di bawah ini berasal dari makalah lain yang membantu menggambarkan cara kerjanya (
Namun, menurut saya penjelasan yang diberikan dalam makalah kedua ini sebagian salah).
fase motor berfluktuasi ke atas dan ke bawah.
Pada gambar, ini menunjukkan momen ketika BEMF tinggi di Tahap B dan rendah di tahap.
Dalam hal ini, ada kemungkinan arus mengalir dari B ke.
Penting untuk pengereman regeneratif, transistor low-end menyala dan mati dengan cepat (
Ribuan saklar PWM per detik). konverter boost, di mana energi disimpan dalam fase motor (Wikipedia memiliki artikel bagus yang menjelaskan cara
transistor low-end dimatikan , tetapi pada tegangan yang lebih tinggi,
arus langsung mengalir melalui dioda \' anti-eksitasi
kerja konverter boost). Energi ini dilepaskan ketika
siklus kerja PWM mengontrol jumlah pengereman. Saat mengemudi
\' di sebelah setiap transistor dan kemudian kembali ke baterai. Dioda mencegah arus mengalir dari baterai ke motor. memperlambat motor. Transistor sisi rendah menggunakan sakelar PWM, dan
untuk mempertahankan torsi
, pergantian motor beralih dari satu kombinasi ke kombinasi berikutnya pada waktunya
setinggi mungkin .
Pergantian rem regeneratif sangat mirip karena beberapa mode peralihan menyebabkan motor menghasilkan torsi negatif sebanyak mungkin. nah, menurut
motor harddisk yang saya gunakan adalah motor torsi yang sangat rendah, sehingga tidak menghasilkan banyak BEMF kecuali
pada kecepatan tertinggi beberapa dioda khusus dengan penurunan tegangan lebih rendah. Di bawah ini adalah daftar input dan output pada arduino
saya alasan utamanya adalah
. Juga sertakan grafik dan foto papan saya. 2- Entri digital-Hall 1 Resistansi 120 K dari Gnd 3 Entri digital hall 2 Resistansi 120 K dari Gnd 4 Hall 3 input digital- Resistansi 120 K dari Gnd 5 1 Output Digital di
seri dengan resistor 400 ohm 6 2 Output digital di seri dengan 400 ohm resistor 7 3 Output digital seri dengan resistor 400 ohm 9- Output digital EN 1 seri dengan
resistor 400 ohm
5 v dan gnd terhubung di kedua ujungnya dan pin analog
10- Output digital EN 2 seri dengan resistor 400 ohm 11- Output digital EN
3 seri dengan resistor 400 ohm, potensiometer 100 k Ohm, dengan
Berikut keseluruhan program
yang saya tulis untuk Ardjuino, yang mencakup komentar:
0 terhubung di tengah untuk mengontrol kecepatan motor dan volume pengereman.
daya 5 V juga digunakan untuk menjalankan
Hall (lihat
sensor
langkah 5).
Catu
/* bldc_congroller 3. 1. 1*
3 oleh David Glazer. Seri X adalah IC driver motor 3 Fase
jarum jam * dengan pengereman regeneratif * kecepatan motor dan pengereman dikendalikan oleh potensiometer tunggal * posisi
ST L6234 * menjalankan motor penggerak
disk searah
pin 2,3,4) * Dan mengubah kombinasinya menjadi 6 langkah perubahan fase yang berbeda pada pin 9, 10, 11 pada 32 kHz * Output PWM ( Sesuai dengan EN
motor oleh tiga Efek Hall. Sensor * Arduino menerima output dari 3
sensor hall (
1,2,
3*3 DO masing-masing pada pin 5,6, 7 (IN 1,2,3 )
523: Taksi * 524-
* Hubungkan simulasi dalam 0 ke potensiometer untuk mengubah siklus kerja PWM dan Ubah * antara mengemudi dan pengereman regeneratif *. * 0- 499: rem * 500-
allstate1; Variabel dari tiga sensor hall (3,2,1
1023: otomotif * mengomentari banyak baris untuk debugging dengan mencetak berbagai nilai ke koneksi serial. */Int
)int HallState2; int HallState3; Int HallVal = 1;
MSPs = 0; /Tingkat kecepatan int bKecepatan = 0 untuk motor
Variabel ini digunakan bersama
;
dengan analog untuk mengukur posisi pengaturan celah potensiometer throttle (){pinMode
; /Tingkat rem throttle = 0; /
(2,INPUT); /Hall 1 pinMode (3,INPUT); /Hall 2 pinMode (4,INPUT)
/L6234 Hall 3
/output
driver motor pinMode (5,OUTPUT);
/In 1 pinMode (6,OUTPUT);
/In 2 pinMode (7,OUTPUT);
/In 3 pinMode (9,OUTPUT);
/EN 1 pinMode (10,OUTPUT);
/EN 2 pinMode (11,OUTPUT);
/EN 3/serial. begin(9600)
; If you will be using
untuk
10 dan 11/atur PWM
/
Atur
a serial connection, please uncomment this line. The flush command at the end of the program /* Atur frekuensi PWM pada pin 9,
ke 32 kHz
pin 9, 10/pertama hapus ketiga bit pra-pembagi: int prescalerVal = 0x07; /Buat variabel bernama prescalerVal dan atur agar sama dengan bilangan biner \'00000111\' TCCR1B & = ~ Prescaler /Dan nilai dalam TCCR0B dengan bilangan biner \'11111000\'/sekarang atur bit pra-pengkodean yang sesuai: int pra-pengkodean bit 2 = 1;
nilai
dalam TCCR0B dengan bilangan biner \'00000001\'
TCCR2B & = ~ Pra-kalerval;
/set PWM ke 32 kHz untuk pin 3,11 (
Program ini hanya menggunakan Pin 11)
/Hapus ketiga bit pra-kaler terlebih dahulu :
/Dan nilai dalam TCCR0B dengan bilangan biner \'11111000\'/sekarang atur bit pra-pengkodean yang sesuai: TCCR2B | = Pra-pengkodean bit 2; dengan bilangan biner \'00000001\'
/pertama hapus ketiga bit yang telah dikodekan sebelumnya :} Loop
utama dari/PRGROM void loop (){
/Time = millis();
Waktu setelah program pencetakan dimulai. println(time); //Serial.print(\'\');
Throttle = analogRead (0) ;
/Throttle potensiometer MSPs = map (
Throttle, 512,1023, 0,255);
/Pengemudi dipetakan ke bagian atas potensiometer bSpeed = peta (
Throttle, 0,511,255, 0);
/Pengereman regeneratif setengah bagian di bagian bawah pot/MSPs ed = 100;
/Untuk debugging HallState1 = digitalRead (2);
/Baca nilai masukan dari Hall 1 2 = Bacaan Digital (3);
/Baca nilai masukan dari Hall 2 3 = Bacaan Digital (4);
Baca nilai input/tulisan numerik dari Hall 3 (8, HallState1);
/Ketika sensor yang sesuai memiliki daya tinggi, led akan menyala
Awalnya digunakan untuk men-debug digitalWrite (
9, HallState2); //digitalWrite(10, HallState3);
print(\'H 1: \');
For debugging serial port. println(HallState1); Serial. print(\'H 2: \'); Serial. println(HallState2); Serial. print(\'H 3: \'); Serial. println(HallState3);
Serial. println(\' \'); */ //Serial. println(mSpeed); //Serial. println(HallVal) ;
/Monitor keluaran/penundaan (1000);
//Serial.print(\'\');
/* T1 = digitalRead (2);
//T1 = ~T1; Serial.print(\'\t\'); print(\'\t\'); Serial. print(T3); Serial. print(\'\'); Serial. print(\'\'); Serial. print(digitalRead(3)); Serial. print(\'\t\'); Serial. print(digitalRead(9)); Serial. print(\'\t\'); Serial. println(digitalRead(10)); Serial. print(\'\'); Serial. print(\'\'); //delay(500);
*/Perubahan fasa penggerak/setiap bilangan biner memiliki case yang sesuai dengan transistor berbeda yang dihidupkan/bit matematika yang digunakan untuk mengubah nilai keluaran arduino: /PORTD berisi keluaran pin IN pada driver L6234/output yang digunakan untuk menentukan apakah transistor atas atau pin transistor bawah/EN untuk setiap fasa dikontrol dengan analogi perintah Arduino, atur siklus kerja PWM (
0 = OFF, 255 = ON atau nilai throttle dikendalikan oleh potensiometer). if (throttle > 511){switch (HallVal){
Kasus 3: /
yang diharapkan dari pin
xxx mengacu pada input Hall dan PORTD & =
PORTD = 1111xxx00
; /
Output
; Fase A (
)analogWrite(10,0); Penutupan fase B (tugas = 0)analogWrite
Transistor kelas atas
(
0-7
B00011111 tidak boleh diubah
B00100000;
/Analowrite (9,mSpeed);
putus;
11,255); // Fase C aktif = 100% (Transistor kelas bawah)
B00011111; /PORTD | = B10100000; analogWrite(9,0); analogWrite(10,255); analogWrite(11,mSpeed); break;
Case 4: /PORTD = B100xxx00; /Expected
output of pin 0-
7 PORTD &
= B00011111; PORTD | = bym000; /Analowrite (9,255); analogWrite(10,0); analogWrite(11,mSpeed); break;
6:/
Case
PORTD
=
B110xxx00; /Expected output
PORTD & = B00011111;
of pin 0-
7
PORTD b11. 000 =;
/Analowrite (9,255); analogWrite(10,mSpeed); analogWrite(11,0); break;
Case 2:/PORTD = B010xxx00;
/Expected output of pin 0-
7 PORTD & = B00011111;
B0201700 PORTD | =;
/Analowrite (9,0); analogWrite(10,mSpeed); analogWrite(11,255); break; }}
/Regenerative brake phase change/PORTD (
Output of IN pin on L6234)
The pins selalu rendah, jadi hanya transistor rendah pada setiap fasa yang digunakan selama regen. else{
/PORTD = B000xxx00;
/Output yang diharapkan dari pin
0-7 PORTD & = B00011111;
analogWrite
(11,0); break;
Case 1: analogy writing (9,bSpeed); analogWrite(10,0); analogWrite(11,0); break;
Case 5: analogy writing (9,0); analogWrite(10,0); analogWrite(11,bSpeed); break;
Case 4: analogy writing (9,0); analogWrite(10,0);
analogWrite(11,bSpeed); break; Case 6
: analogy writing (9,0); analogWrite(10,bSpeed); analogWrite(11,0); break; Case 2: analogy writing (9,0); analogWrite(10,bSpeed); analogWrite (11,0); break; }} /
Time = millis ()
; Time after the printing program starts. println(time); //Serial. print(\'\'); //Serial. flush(); /
If you want to debug
using a serial port, please uncomment} Saya pikir operasi yang dilakukan Arduino dalam proyek ini sangat sederhana
Faktanya, catatan aplikasi L6234 merekomendasikan array gerbang sederhana yang dapat diprogram (GAL16V8 terbuat dari Lattice
melakukan tugas ini dengan mikroprosesor.
tampaknya sia-sia
sehingga
Semiconductor) untuk melakukan pekerjaan ini menyusun gerbang logika rahasia.
Saya menemukan beberapa rangkaian logika yang relatif sederhana yang dapat menggerakkan IC L6234 dari keluaran tiga sensor hall.
Bagan untuk tahap A ditunjukkan di bawah ini, dan tabel kebenaran untuk ketiga tahap (
Agar rangkaian logika fase B dan C, pintu \'bukan\' harus dialihkan ke sisi lain dari \'atau.
Masalah dengan pendekatan ini adalah bahwa ada hampir 20 koneksi di setiap tahap, sehingga memerlukan sedikit usaha. untuk menyatukannya.
Yang terbaik adalah memprogramnya sebagai gerbang logika yang dapat diprogram.