Saat ini, penggemar sangat tertarik untuk mengendalikan DC Brushless (BLDC)
dibandingkan dengan motor DC tradisional, kinerja motor telah meningkat, efisiensi energi juga meningkat, tetapi lebih sulit digunakan. Ada banyak produk di luar
rak untuk tujuan ini.
Misalnya, ada banyak pengontrol BLDC kecil yang bekerja sangat baik untuk pesawat RC.
Bagi mereka yang ingin melihat ke kendali BLDC secara lebih mendalam, ada juga banyak pengontrol mikro yang berbeda dan perangkat keras elektronik lainnya untuk pengguna industri, yang biasanya memiliki dokumentasi yang sangat baik.
Sejauh ini saya belum menemukan deskripsi komprehensif tentang cara menggunakan Arduino Micro-Controller untuk kontrol BLDC.
Juga, 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 tidak mengetahui cara mengontrol generator 3 fase.
Struktur ini awalnya dalam sebuah cerita tentang
perhitungan waktu nyata, saya terus melakukannya setelah kursus selesai.
Gagasan proyek ini adalah untuk menunjukkan model proporsional mobil hibrida 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 Arduino Micro-Controller dan Hall-
mempengaruhi sensor posisi dalam mode mengemudi dan 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 seharusnya tidak disertakan oleh proyek ini dalam pengontrol motor yang sebenarnya adalah fungsi keamanan seperti perlindungan saat ini.
Bahkan, hal terburuk adalah Anda membakar motor HD.
Namun, menerapkan perlindungan arus berlebihan dengan perangkat keras saat ini tidak sulit, dan mungkin saya akan melakukannya di beberapa titik.
Jika Anda mencoba mengendalikan motor yang lebih besar, silakan tambahkan perlindungan saat ini untuk melindungi motor Anda dan keselamatan Anda sendiri.
Saya ingin mencoba menggunakan pengontrol ini dengan motor yang lebih besar yang dapat melakukan beberapa pekerjaan \ 'nyata' tetapi saya belum memiliki yang tepat.
Saya perhatikan bahwa eBay menjual mobil 86 W seharga sekitar $ 40.
Sepertinya kandidat yang baik.
Ada juga situs web RC yang disebut \ 'Gobrushless \' yang menjual kit yang merakit BLDC mereka sendiri.
Ini tidak terlalu mahal dan sepadan dengan pengalaman untuk membangunnya.
Harap dicatat bahwa tidak ada sensor Hall untuk motor di situs web ini. Wah!
Menulis struktur ini adalah pekerjaan besar.
Saya harap Anda menganggapnya berguna, silakan buat komentar dan saran Anda.
Digital Multimeter (DMM)-
Jika DMM Anda memiliki osiloskop meter frekuensi (
lebih baik memiliki setidaknya 2 saluran)
T8 Torx Driver (
Anda perlu salah satunya untuk membuka hard drive apa pun).
Ada toko perangkat keras yang bagus.
Lokakarya mesin dan prototipe cepat (
ini sangat membantu tetapi saya pikir proyek ini dapat dilakukan tanpa mereka).
Bahan BLDC Cincin magnetik motorik dari hard disk komputer (
setengah dari motor)
dari drive hard drivesever (3-6)
ada motor kecil kedua di disk perak pada karet hard disk (DC disikat ok)
atau (lebih disukai)
motor dc-poten poten 120 panci panci 120 panci port. K Sirkuit Mikro OHMST L6234 Tiga Fase Motor Driver IC Two 100 UF Kapasitor Satu Kapasitor 10 NF Satu Kapasitor 220 NF Satu Kapasitor 1 UF Satu Kapasitor 100 UF Tiga Dioda Menerima Satu Sensor
Honeywell SS411A Bipolar Hall-5 Amp Fuse Pemegang Fuse 1 Pemegang Fuse 3
Catatan: Mike Anti Manual ini (
dikendalikan menggunakan induksi potensial punggung).
Spesifikasi dan informasi pengadaan dapat ditemukan di dua tautan ini: Jika Anda akan melakukan proyek ini, saya sarankan Anda meluangkan waktu untuk memahami dengan seksama bagaimana BLDC bekerja dan mengontrol.
Ada sejumlah besar referensi online (
lihat di bawah untuk beberapa saran).
Namun, saya memasukkan beberapa bagan dan tabel dalam proyek saya yang seharusnya membantu Anda memahami.
Berikut adalah daftar konsep yang menurut saya paling penting untuk memahami proyek ini: MOSFET Transistor 3-fase setengah-jembatan 6-
3 langkah pengurangan
widur pulsa kalimat modulasi motor fase motor (pwm) Hall-
microchip Avr443 Tanpa Kontrol Motor Tanpa Motor DC DC Sensor DC untuk
Kontrol Sensor Posisi Digital Tiga Fase Tanpa Fase Tanpa Fase Tiga Fase Tanpa
Fase Sensor Star Hall, video yang bagus untuk membersihkan motor hard drive, tetapi penulis tampaknya menjalankan motor sebagai motor loncatan dan sebagai motor loncatan. Halaman web referensi yang lebih spesifik untuk BLDC pada IC drive motor L6234, termasuk lembar data, catatan aplikasi, dan informasi pembelian.
Sampel gratis untuk PM Brushless Motor Drive untuk Aplikasi Kendaraan Listrik Hybrid.
Ini adalah satu -satunya makalah yang saya temukan yang menggambarkan urutan perubahan fase pengereman regeneratif.
Makalah ini, pengereman regeneratif pada kendaraan listrik bermanfaat, saya meminjam beberapa angka darinya, tapi saya pikir itu salah menggambarkan bagaimana regenerasi bekerja.
Saya melakukan proyek ini dengan motor drive disk daur ulang karena mudah dilewati dan saya suka menggunakan motor tegangan rendah kecil untuk mempelajari kabel yang dikendalikan oleh BLDC dan tidak menyebabkan masalah keamanan.
Selain itu, konfigurasi magnet sensor aula menjadi sangat sederhana dengan menggunakan cincin magnetik (rotor)
dari motor kedua ini (lihat langkah 4).
Jika Anda tidak ingin pergi ke semua kerumitan memasang dan mengkalibrasi sensor aula (langkah 5-7)
Saya tahu setidaknya ada beberapa motor drive CD/DVD yang dibangun di dalam sensor aula.
Untuk memberikan beberapa inersia belokan ke motor dan memberi mereka sedikit beban, saya menaruh 5 hard drive pada motor, dilemkan dengan lembut bersama dengan lem yang sedikit kuat dan direkatkan ke motor (
ini membuat roda gila dalam proyek asli saya).
Jika Anda akan menghapus motor dari hard drive, Anda memerlukan drive T8 Torx untuk membuka perumahan rumah (
biasanya ada dua sekrup yang tersembunyi di balik tongkat di label Centeron)
dan sekrup internal yang menahan motor di tempatnya.
Anda juga perlu menghapus pembaca kepala (
Eksekutif Sound Circle)
dengan cara ini Anda dapat mengeluarkan disk memori untuk mencapai motor.
Selain itu, Anda akan memerlukan motor hard drive yang sama kedua untuk melepas rotor dari motor itu (
ada magnet di dalamnya).
Untuk memisahkan motor, saya meraih rotor (atas)
catok motor dan mencabutnya di stator (bawah),
kedua obeng terpisah 180 derajat.
Tidak mudah untuk menahan motor pada pasangan yang cukup ketat tanpa deformasi.
Anda mungkin ingin membangun
blok kayu yang digunakan untuk tujuan ini.
Saya mengebor lubang di cincin magnetik di atas mesin bubut sehingga pas di bagian atas motor.
Jika Anda tidak dapat menggunakan mesin bubut, Anda dapat memperbaiki rotor terbalik pada motor dengan lem yang kuat.
Gambar -gambar 2 dan 3 di bawah ini menunjukkan interior salah satu motor yang saya lipatkan.
Di babak pertama di sana (rotor) adalah 8 tiang (
magnet yang dibungkus plastik).
Di babak kedua (stator)
ada 12 slot (belitan).
Masing -masing dari tiga fase motor memiliki 4 slot secara seri.
Beberapa motor HD memiliki tiga kontak di bagian bawah, satu kontak per fase, dan yang lainnya adalah keran tengah motor (
di mana tiga tahap bertemu).
Dalam proyek ini, tidak ada keran tengah yang diperlukan, tetapi dapat berguna dalam kontrol bebas sensor (
saya berharap dapat merilis catatan tentang kontrol bebas sensor suatu hari).
Jika motor Anda memiliki empat kontak, Anda dapat mengidentifikasi fase dengan Ohmeter.
Resistensi antara keran tengah dan fase adalah setengah dari resistensi antara dua fase.
Sebagian besar literatur tentang motor BLDC berurusan dengan mereka yang memiliki bentuk gelombang potensial berbentuk tangga, tetapi motor hard drive tampaknya memiliki potensi punggung yang terlihat seperti sinus (lihat di bawah).
Sejauh yang saya tahu, mengendarai motor gelombang sinus dengan gelombang sinus PWM bekerja dengan baik, meskipun efisiensinya mungkin turun.
Seperti semua motor BLDC, yang ini terdiri dari
jembatan setengah transistor tiga fase (
lihat foto ke-2 di bawah).
Saya menggunakan IC yang dibuat oleh St Micro (L6234)
untuk jembatan, juga dikenal sebagai pengemudi motor.
Sambungan listrik L6234 ditunjukkan pada langkah 8.
Foto ketiga di bawah ini menunjukkan diagram skematik dari pengemudi motor dan tiga fase motor.
Agar motor dapat beroperasi searah jarum jam, sakelar akan dilakukan dalam urutan berikut (
huruf pertama adalah transistor atas dan huruf kedua adalah transistor yang lebih rendah)
: Langkah 1 2 3 4 5 6 Searah jarum jam: CB, AB, AC, BC, BA, CA Counterwise: BC, BA, CA, CB, AB, AC ini 6- Langkah Langkah A FISLE STANDIA INI, BA, BA, CA, CB, AB, AC ini 6- LANGKAH
LANGKAH A FISLE TOKE INI, BC, BA, CA, CB, AB, AC ini 6- Langkah Langkah A FISLE STOLAY: motor.
Oleh karena itu, kecepatan rotasi setiap motor terjadi empat kali.
Dua urutan tampaknya sama, tetapi mereka tidak sama karena untuk
urutan 6 langkah, untuk CW, arah saat ini melalui fase adalah satu arah, dan untuk CCW, arah saat ini berlawanan.
Anda dapat melihat ini sendiri dengan menerapkan tegangan baterai atau catu daya ke fase motor.
Jika Anda menerapkan tegangan, motor akan bergerak sedikit ke satu arah dan berhenti.
Jika Anda dapat dengan cepat mengubah tegangan pada fase dalam salah satu urutan di atas, Anda dapat memutar motor secara manual.
Transistor dan mikrokontroler menyelesaikan semua sakelar ini dengan sangat cepat, beralih ratusan kali per detik ketika motor berjalan pada kecepatan tinggi.
Juga, harap dicatat bahwa jika tegangan diterapkan pada kedua fase, motor bergerak sedikit dan kemudian berhenti.
Ini karena torsi nol.
Anda dapat melihat ini di foto keempat di bawah ini, yang menunjukkan potensi punggung dari sepasang fase motor.
Ini adalah gelombang sinus.
Ketika gelombang melewati x-
poros, torsi yang disediakan oleh fase ini adalah nol. Dalam
urutan perubahan fase BLDC enam langkah yang tidak pernah terjadi.
Sebelum torsi pada fase tertentu menjadi rendah, daya dialihkan ke kombinasi fase lain.
Motor BLDC yang lebih besar biasanya diproduksi oleh sensor aula di dalam motor.
Jika Anda memiliki motor seperti itu maka Anda dapat melewatkan langkah ini.
Juga, saya tahu setidaknya ada beberapa motor drive CD/DVD yang dibangun di sensor yang sudah ada.
Ketika motor berputar, tiga sensor aula digunakan untuk deteksi posisi, sehingga perubahan fase dilakukan pada saat yang tepat.
Motor HD saya berjalan hingga 9000 rpm (150 Hz).
Karena ada 24 perubahan per roda, pada 9000 rpm, mesin diubah setiap 280 mikrodetik.
Arduino Micro-Controller bekerja pada 16 MHz, sehingga setiap siklus clock adalah 0. 06 mikrodetik.
Saya tidak tahu berapa banyak siklus jam yang diperlukan untuk melakukan pengurangan kalimat, tetapi bahkan jika 100 siklus clock diperlukan, yaitu, dibutuhkan 5 mikrodetik untuk setiap pengurangan kalimat.
HD Motors tidak memiliki sensor Hall, jadi perlu memasangnya di bagian luar motor.
Sensor perlu diperbaiki sehubungan dengan rotasi motor dan terpapar pada serangkaian kutub yang konsisten dengan rotasi motor.
Solusi saya adalah melepas cincin magnetik dari motor yang sama dan pasang terbalik pada motor untuk dikendalikan.
Saya kemudian memasang tiga sensor aula di atas cincin magnetik ini, 30 derajat terpisah satu sama lain pada poros motor (
rotasi motor listrik 120 derajat).
Pemegang sensor aula saya terdiri dari tempat sederhana yang terdiri dari tiga bagian aluminium yang diproses oleh saya dan tiga bagian plastik yang dibuat pada prototipe cepat.
Jika Anda tidak memiliki alat ini, seharusnya tidak sulit untuk menemukan cara lain untuk menunjukkan posisi tersebut.
Membuat kurung untuk sensor Hall akan lebih menantang.
Ini adalah cara yang mungkin untuk bekerja: 1.
Temukan nampan plastik dengan ukuran yang tepat dan Anda dapat dengan hati -hati epoksi sensor aula. 2.
Template dicetak di atas kertas, yang memiliki lingkaran yang sama dengan jari -jari cincin magnetik, dan tiga tanda terpisah 15 derajat.
Rekatkan template ke disk dan kemudian gunakan templat sebagai panduan untuk dengan hati -hati menempatkan sensor aula epoksi di tempatnya.
Sekarang sensor Hall dipasang pada motor, sambungkan ke sirkuit yang ditunjukkan di bawah ini dan uji mereka menggunakan DMM atau osiloskop untuk memastikan bahwa output semakin tinggi dan lebih rendah saat motor berputar.
Saya menjalankan sensor ini di bawah 5 V menggunakan output 5 V Arduino.
Sensor Hall tinggi atau rendah output (1 atau 0)
tergantung pada apakah mereka merasakan Antartika atau Kutub Utara.
Karena terpisah 15 derajat, magnet berputar di bawahnya dan mengubah polaritas setiap 45 derajat, ketiga sensor ini tidak akan pernah tinggi atau rendah pada saat yang sama.
Ketika motor berputar, output sensor adalah 6-
pola langkah yang ditunjukkan pada tabel berikut.
Sensor harus disejajarkan dengan gerakan motor sehingga salah satu dari tiga sensor berubah secara tepat pada posisi perubahan fase motor.
Dalam hal ini, tepi naik dari sensor aula pertama (H1)
harus konsisten dengan pembukaan kombinasi C (tinggi) dan B (rendah).
Ini setara dengan menyalakan transistor 3 dan 5 di sirkuit jembatan.
Saya menyelaraskan sensor dengan magnet dengan osiloskop.
Untuk melakukan ini, saya harus menggunakan tiga saluran ruang lingkup.
Saya memutar motor dengan menghubungkan ke sabuk motor kedua dan mengukur potensi punggung antara kombinasi dua fase (
A dan B, A dan C)
ini adalah dua sinus.
Seperti ombak pada gambar di bawah ini
kemudian lihat sinyal Hall Sensor 2 pada saluran 3 osiloskop.
Pemegang Sensor Hall diputar sampai tepi yang naik dari sensor Hall sepenuhnya selaras dengan titik di mana perubahan fase harus dilakukan (lihat di bawah).
Saya sekarang menyadari bahwa hanya ada dua saluran untuk melakukan kalibrasi yang sama.
Jika BEMF kombinasi fase B-
menggunakan C, tepi naik H2 akan terkait dengan kurva BC.
Alasan mengapa perubahan fase harus dilakukan di sini adalah untuk selalu menjaga torsi motor setinggi mungkin.
Potensi punggung sebanding dengan torsi dan Anda akan melihat bahwa setiap perubahan fase terjadi ketika potensial belakang melewati di bawah kurva tahap berikutnya.
Oleh karena itu, torsi aktual terdiri dari bagian tertinggi dari setiap kombinasi fase.
Jika Anda tidak dapat mengakses ruang lingkup, inilah ide saya tentang penyelarasan.
Ini sebenarnya adalah latihan yang menarik bagi siapa saja yang ingin tahu bagaimana motor BLDC bekerja.
Jika fase motor A terhubung (positif) dan B (negatif)
ke catu daya dan nyalakan catu daya, motor akan berputar sedikit dan berhenti.
Kemudian, jika timbal daya negatif dipindahkan ke fase C dan daya dihidupkan, motor akan berbalik lebih jauh dan berhenti.
Bagian selanjutnya dari urutan adalah untuk memindahkan keunggulan positif ke fase B, dll.
Ketika Anda melakukan ini, motor selalu berhenti di mana torsi adalah nol, yang sesuai dengan satu tempat di mana bagan melewati sumbu x pada grafik.
Perhatikan bahwa titik nol dari kombinasi fase ketiga sesuai dengan posisi perubahan fase dari dua kombinasi pertama.
Oleh karena itu, posisi torsi nol B-
Kombinasi C adalah tempat Anda ingin memposisikan tepi H2 yang naik.
Tandai posisi ini dengan tanda halus atau bilah tajam, dan kemudian sesuaikan pemegang sensor Hall menggunakan DMM sampai output H2 persis lebih tinggi pada tanda ini.
Bahkan jika Anda menyimpang sedikit dari jadwal sekolah Anda, motor harus bekerja dengan baik.
Tiga fase motor akan menerima daya dari driver motor tiga fase L6234.
Saya menemukan bahwa ini adalah produk yang baik yang dapat bertahan dalam ujian waktu.
Ada banyak cara untuk secara tidak sengaja menggoreng komponen Anda saat menggunakan elektronik daya, saya bukan insinyur listrik dan saya tidak selalu tahu apa yang terjadi. Dalam program sekolah saya, kami melakukan
kami sendiri dari 6 transistor MOSFET dan 6 dioda.
output setengah jembatan setengah fase
Kami menggunakan ini pada HIP4086 dari intersil pengemudi lain, tetapi kami memiliki banyak masalah dengan pengaturan ini
kami membakar banyak transistor dan keripik.
Saya menjalankan L6234 (
jadi motor) di 12V.
L6234 memiliki serangkaian input yang tidak biasa untuk mengontrol setengah jembatan 6 transistor.
Tidak setiap transistor memiliki input, tetapi
input Enable (en) untuk masing -masing dari tiga tahap, dan kemudian input lain (dalam)
pilih transistor mana dalam fase terbuka (atas atau bawah).
Sebagai contoh, nyalakan transistor 1 (atas) dan 6 (lebih rendah)
En1 dan EN3 tinggi (
EN2 rendah untuk menjaga panggung tertutup)
In1 tinggi, dalam 3 rendah.
Ini membuat kombinasi fase-C.
While the L6234 application note suggested applying the PWM used to control the speed of the motor to the IN pin, I decided to do it on the EN pin because, at that time, I think it would be \'strange\' to turn on the upper and lower transistors of the phase alternately \'.
In fact, it seems that there is nothing wrong with turning on the low transistors of both phases at the same time, because they have the same potential, so neither of melewati
mereka
arus
Gambar agak kecil, jadi untuk versi yang lebih besar, silakan merujuk ke dokumentasi untuk L6234.
Catatan: Mike Anton membuat PCB untuk L6234, yang akan (saya percaya)
mengganti lagu ini dan menyelamatkan Anda dari pekerjaan merakitnya.
Lihat tautan ini untuk spesifikasi dan informasi pembelian: Saya belum menemukan banyak tentang 3-
Saya akan menjelaskan pemahaman saya tentang cara kerjanya.
Harap dicatat bahwa saya bukan insinyur listrik dan kami akan menghargai koreksi apa pun untuk penjelasan saya.
Saat mengemudi, sistem kontrol mengirimkan arus menjadi tiga fase motor dengan cara yang memaksimalkan torsi.
Dalam pengereman regeneratif, sistem kontrol juga memaksimalkan torsi, tetapi kali ini adalah torsi negatif yang menyebabkan motor melambat saat mengirim arus kembali ke baterai.
Metode pengereman regeneratif yang saya gunakan berasal dari kertas dari Laboratorium Nasional Oakridge di Amerika Serikat. S. Govt.
Laboratorium yang melakukan banyak penelitian untuk motor otomotif.
Bagan di bawah ini berasal dari makalah lain yang membantu menggambarkan cara kerjanya (
namun, saya pikir penjelasan yang diberikan dalam makalah kedua ini sebagian salah).
Ingatlah bahwa ketika motor berputar, tegangan BEMF pada fase motor berfluktuasi ke atas dan ke bawah.
Pada gambar, ini menunjukkan momen ketika BEMF tinggi di tahap B dan rendah di panggung.
Dalam hal ini, adalah mungkin bagi arus untuk mengalir dari B ke.
Penting untuk pengereman regeneratif, transistor low-end menyala dan mati dengan cepat (
ribuan sakelar PWM per detik).
Ketika sakelar transistor kelas atas dimatikan;
Ketika transistor rendah dihidupkan, arus mengalir seperti yang ditunjukkan pada gambar pertama.
Dalam hal elektronik daya, sirkuit seperti perangkat yang disebut konverter boost, di mana energi disimpan dalam fase motor (
Wikipedia memiliki artikel yang bagus yang menjelaskan cara kerja konverter boost).
Energi ini dilepaskan ketika transistor low-end dimatikan, tetapi pada tegangan yang lebih tinggi, arus langsung mengalir melalui dioda \ 'anti-eksitasi \' di sebelah masing-masing transistor dan kemudian kembali ke baterai.
Dioda mencegah arus mengalir dari baterai ke motor.
Pada saat yang sama, arus ke arah ini (
bertentangan dengan mengemudi)
berinteraksi dengan cincin magnet untuk menghasilkan torsi negatif yang memperlambat motor ke bawah.
Transistor sisi rendah menggunakan sakelar PWM, dan siklus tugas PWM mengontrol jumlah pengereman.
Saat mengemudi, pergantian sakelar motor dari satu kombinasi ke yang berikutnya pada waktunya untuk mempertahankan torsi setinggi mungkin.
Pergantian rem regeneratif sangat mirip karena beberapa mode switching menyebabkan motor menghasilkan torsi negatif sebanyak mungkin.
Jika Anda menonton video di langkah pertama, Anda dapat melihat bahwa rem regeneratif berfungsi dengan baik, tetapi tidak berfungsi dengan baik.
Saya pikir alasan utamanya adalah bahwa motor hard drive yang saya gunakan adalah motor torsi yang sangat rendah, jadi tidak menghasilkan banyak BEMF kecuali pada kecepatan tertinggi.
Pada kecepatan yang lebih rendah, ada sedikit pengereman regeneratif (jika ada).
Juga, sistem saya berjalan pada tegangan yang relatif rendah (12 V)
lebih lanjut, karena setiap jalur melalui dioda anti-eksitasi mengurangi tegangan dengan beberapa volt, ini juga sangat mengurangi efisiensi.
Saya menggunakan dioda penyearah normal dan saya mungkin mendapatkan kinerja yang lebih baik jika saya menggunakan beberapa dioda khusus dengan penurunan tegangan yang lebih rendah.
Di bawah ini adalah daftar input dan output di Arduino.
Juga termasuk bagan dan foto papan saya. 2-
Digital Entry-Hall 1
120 K Resistansi GND 3
Digital Entry Hall 2
120 K Resistansi GND 4
Hall 3 Input Digital-
120 K Resistansi GND 5
1 Output Digital Secara seri dengan 400 ohm Resistor 6
2 Output digital dalam seri 400 ohm Resistor 7
3 Digital output dengan seri 400 OHM RESISTOR 9- OUTPUT Digital 2- OUTPUT DEGITOR 4 Digital dengan 400 OHM OUSPUT Digital 2-
OUSPUT DEGITOR 4 Digital output 2 in dengan 400 OHM OUSPUT OHM Digital OUSPUT DENGI 4
Digital OUSPUT DENGI 4 Digital OUSPUT DENGI 4 Digital OHM Digital OHM Resistor 11-
Output digital EN 3 dalam seri dengan resistor 400 ohm, potensiometer 100 K ohm, dengan 5 V dan GND terhubung di kedua ujungnya dan pin analog 0 terhubung di tengah.
Potensiometer ini digunakan untuk mengontrol kecepatan motor dan volume pengereman.
Catu daya 5 V juga digunakan untuk menjalankan sensor aula (lihat Langkah 5).
Berikut adalah seluruh program yang saya tulis untuk Ardjuino, yang mencakup komentar:/* bldc_congroller 3. 1.
1* 3 oleh David Glazer.
Seri X adalah ST L6234 3-
Fase Motor Driver IC * Menjalankan Disk Drive Motor Searah Sewa Searah * Dengan Pengereman Regeneratif * Kecepatan Motor Dan Pengereman Dikontrol oleh Potensiometer Tunggal * Posisi Motor Dengan Tiga
Sensor Hall-Efek * Arduino menerima output dari 3 pin pin (pin 2,3,4)
* dan mengonversi kombinasi mereka ke 6 langkah fase-changing ke pin yang berbeda ke pin-pin 2,3,4) * dan mengonversi kombinasi mereka ke 6 langkah fase-changing ke pin yang berbeda ke pin-pin (pin 2,3,4) * dan mengonversi kombinasi mereka ke 6 langkah fase-changing ke berbagai fase ke pin-pin (pin 2,3) * dan mengonversi kombinasi 6 fase fase yang berbeda pada fase fase-changing ke pin yang berbeda ke pin-pin (pin 2,3) * dan mengonversi kombinasi 6 fase fase-changing
ke 6 pin (pin 2,3) * EN 1,2, 3 * 3 melakukan pin 5,6, 7, masing-masing (dalam 1,2,3)
Hubungkan simulasi dalam 0 ke potensiometer untuk mengubah siklus tugas PWM dan perubahan * antara mengemudi dan pengereman regeneratif * 0-
499: rem 500-
523: Taxi * 524-
1023
* AllState1
;
() {pinmode (2, input);
/Hall 1 pinmode (3, input);
/Hall 2 PinMode (4, input);
/L6234 Hall 3/Output driver motor pinmode (5, output);
/Dalam 1 pinmode (6, output);
/Dalam 2 pinmode (7, output);
/Dalam 3 pinmode (9, output);
/En 1 pinmode (10, output);
/En 2 pinmode (11, output);
/En 3/serial. Mulai (9600);
Jika Anda akan menggunakan koneksi serial, silakan buka komentar baris ini.
Perintah flush di akhir program.
/* Atur frekuensi PWM pada pin 9, 10 dan 11/atur pwm ke 32 kHz untuk pin 9, 10/pertama hapus ketiga bit pra-pembagi: int prescalerval = 0x07;
/Buat variabel yang disebut prescalerval dan atur untuk menyamakan angka biner \ '00000111 \' tccr1b & = ~ prescaler
/dan nilai dalam tccr0b dengan jumlah biner \ '11111000 \' /Sekarang atur bit pra-encoding yang sesuai: int pra-encoding 2 = 1;
/Atur prescalerval untuk sama dengan angka biner \ '00000001 \' tccr1b | = prescalerval2;
/Atau nilai dalam tccr0b dengan jumlah biner \ '00000001 \' /Setel PWM ke 32 kHz untuk pin 3,11 (
program ini hanya menggunakan pin 11)
/Bersihkan ketiga bit pra-kaler terlebih dahulu: tccr2b & = ~ pra-Kalerval;
/Dan nilai dalam tccr0b dengan jumlah biner \ '11111000 \'/Sekarang atur bit pra-enkode yang sesuai: tccr2b | = Bit pra-enkode 2;
/Atau nilai dalam tccr0b dengan jumlah biner \ '00000001 \'/Pertama menghapus ketiga bit pra-encoded:}
Loop utama dari/prgrom void loop () {
/time = millis ();
Waktu setelah program pencetakan dimulai. println (waktu); //Serial. mencetak(\'\');
Throttle = analogread (0);
/Throttle potentiometer msps = peta (
throttle, 512.1023, 0,255);
/Mengemudi 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 input dari Hall 1 2 = Digital Read (3);
/Baca nilai input dari Hall 2 3 = Digital Read (4);
Baca nilai input/numerik menulis dari Hall 3 (8, HallState1);
/Ketika sensor yang sesuai berada dalam daya tinggi, LED akan dinyalakan
pada awalnya digunakan untuk men -debug DigitalWrite (9, HallState2);
// DigitalWrite (10, HallState3); Hallval = (HallState1)+ (2*HallState2)+ (4*HallState3);
/Hitung nilai biner dari 3 Sensor Hall Sensor/*. cetak (\ 'h 1: \');
Untuk debugging port serial. println (HallState1); Serial. print (\ 'h 2: \'); Serial. println (HallState2); Serial. print (\ 'h 3: \'); Serial. println (HallState3); Serial. println (\ '\');
*/// serial. println (mspeed); //Serial. println (Hallval); //Serial. mencetak(\'\');
/Monitor output/penundaan transistor (1000);
/* T1 = DigitalRead (2); // t1 = ~ t1;
T2 = DigitalRead (4); // t2 = ~ t2;
T3 = DigitalRead (5); // t3 = ~ t3; Serial. cetak (t1); Serial. cetak (\ '\ t \'); Serial. cetak (T2); Serial. cetak (\ '\ t \'); Serial. cetak (T3); Serial. mencetak(\'\'); Serial. mencetak(\'\'); Serial. cetak (DigitalRead (3)); Serial. cetak (\ '\ t \'); Serial. cetak (DigitalRead (9)); Serial. cetak (\ '\ t \'); Serial. println (DigitalRead (10)); Serial. mencetak(\'\'); Serial. mencetak(\'\'); // tunda (500);
*/Perubahan fase mengemudi/Setiap angka biner memiliki casing yang sesuai dengan transistor yang berbeda dihidupkan/bit matematika yang digunakan untuk mengubah nilai output Arduino:/portd berisi output dari pin pada driver L6234/output yang digunakan untuk menentukan apakah transistor atas atau siklus yang lebih rendah, pin yang lebih rendah untuk setiap fase dikontrol oleh
ardu.a. nilai throttle dikendalikan oleh potensiometer). if (throttle> 511) {switch (hallval) {
case 3:/portd = 1111xxx00;
/Output yang diharapkan dari pin 0-
7 xxx mengacu pada input Hall dan portd & = b00011111 tidak boleh diubah;
Portd | = B01100000;
/Analowrite (9, mspeed);
PWM pada analogwrite fase (
transistor kelas atas) (10,0);
Penutupan fase B (tugas = 0) analogwrite (11.255); // fase C pada -duty = 100% (
transistor low -end) istirahat;
Kasus 1:/portd = b001xxx00;
/Output yang diharapkan dari pin 0-
7 portd & = b00011111;
/Portd | = B00100000;
/Analowrite (9, mspeed);
PWM pada analogwrite fase (
transistor kelas atas) (10.255); // Fase B pada (
transistor low-end) Analogwrite (11,0); // fase b off (tugas = 0) istirahat;
Kasus 5:/portd = b101xxx00;
/Output yang diharapkan dari pin 0-
7 portd & = b00011111;
/Portd | = B10100000; analogwrite (9,0); analogwrite (10.255); analogwrite (11, mspeed); merusak;
Kasus 4:/portd = b100xxx00;
/Output yang diharapkan dari pin 0-
7 portd & = b00011111;
Portd | = bym000;
/Analowrite (9.255); analogwrite (10,0); analogwrite (11, mspeed); merusak;
Kasus 6:/portd = b110xxx00;
/Output yang diharapkan dari pin 0-
7 portd & = b00011111;
Portd B11. 000 =;
/Analowrite (9.255); analogwrite (10, mspeed); analogwrite (11,0); merusak;
Kasus 2:/portd = b010xxx00;
/Output yang diharapkan dari pin 0-
7 portd & = b00011111;
B0201700 Portd | =;
/Analowrite (9,0); analogwrite (10, mspeed); analogwrite (11.255); merusak; }}
/Perubahan fase rem regeneratif /portd (
output in pin pada l6234)
Pin selalu rendah, jadi hanya transistor rendah pada setiap fase yang digunakan selama regen. pengereman. else {
/portd = b000xxx00;
/Output yang diharapkan dari pin 0-
7 portd & = b00011111;
Portd | = BYM0000; // switch (Hallval) {
case 3: penulisan analogi (9, bspeed); // analogwrite (9,0); analogwrite (10,0); analogwrite (11,0); merusak;
Kasus 1: Penulisan Analogi (9, BSPEED); analogwrite (10,0); analogwrite (11,0); merusak;
Kasus 5: Penulisan Analogi (9,0); analogwrite (10,0); Analogwrite (11, BSPEED); merusak;
Kasus 4: Penulisan Analogi (9,0); analogwrite (10,0); Analogwrite (11, BSPEED); merusak;
Kasus 6: Penulisan Analogi (9,0); Analogwrite (10, BSPEED); analogwrite (11,0); merusak;
Kasus 2: Penulisan Analogi (9,0); Analogwrite (10, BSPEED); analogwrite (11,0); merusak; }}
/Time = millis ();
Waktu setelah program pencetakan dimulai. println (waktu); //Serial. mencetak(\'\'); //Serial. menyiram();
/Jika Anda ingin men -debug menggunakan port serial, silakan uncomment}
Saya pikir operasi yang dilakukan Arduino dalam proyek ini sangat sederhana sehingga sepertinya limbah untuk melakukan tugas ini dengan mikroprosesor.
Faktanya, catatan aplikasi L6234 merekomendasikan array gerbang yang dapat diprogram sederhana (
GAL16V8 yang terbuat dari semikonduktor kisi) untuk melakukan pekerjaan ini.
Saya tidak terbiasa dengan pemrograman perangkat ini, tetapi biaya IC hanya $ 2. 39 di Newark.
Sirkuit terintegrasi serupa lainnya juga sangat murah.
Pilihan lain adalah menyatukan gerbang logika yang bijaksana.
Saya datang dengan beberapa urutan logika yang relatif sederhana yang dapat mendorong IC L6234 dari output dari tiga sensor aula.
Bagan untuk tahap A ditunjukkan di bawah ini, dan tabel kebenaran untuk ketiga tahap (
untuk sirkuit logika fase B dan C, pintu 'bukan' 'tidak ada di sisi lain.
Jadi, ada banyak koneksi pada setiap program, sehingga ada banyak pekerjaan untuk menempatkannya bersama -sama
.