Pada masa kini, peminat sangat berminat untuk mengawal DC Brushless (BLDC)
berbanding dengan motor DC tradisional, prestasi motor telah bertambah baik, kecekapan tenaga juga bertambah baik, tetapi lebih sukar digunakan. Banyak produk luar
yang ada untuk tujuan ini.
Sebagai contoh, terdapat banyak pengawal BLDCS kecil yang berfungsi dengan baik untuk pesawat RC.
Bagi mereka yang ingin melihat kawalan BLDC dengan lebih mendalam, terdapat juga banyak pengawal mikro dan perkakasan elektronik lain untuk pengguna perindustrian, yang biasanya mempunyai dokumentasi yang sangat baik.
Setakat ini saya tidak menemui apa-apa penerangan komprehensif tentang cara menggunakan Arduino Micro-Controller untuk Kawalan BLDC.
Selain itu, jika anda berminat untuk melakukan brek regeneratif, atau menggunakan BLDC untuk penjanaan kuasa, saya tidak menemui banyak produk yang sesuai untuk digunakan dengan motor kecil, dan saya juga tidak mengetahui bagaimana untuk mengawal penjana 3-fasa.
Struktur ini pada asalnya dalam cerita tentang
pengiraan masa nyata, saya terus berbuat demikian selepas kursus berakhir.
Idea projek ini adalah untuk menunjukkan model berkadar kereta hibrid dengan penyimpanan tenaga roda dan brek regeneratif.
Motor yang digunakan dalam projek ini adalah bldcs kecil yang dibersihkan dari cakera keras komputer yang rosak.
Manual ini menerangkan cara menggunakan pengawal mikro Arduino dan Hall-
mempengaruhi sensor kedudukan dalam mod memandu dan regeneratif.
Sila ambil perhatian bahawa melawat Oscillisoft sangat membantu, jika tidak penting, untuk menyelesaikan projek ini.
Jika anda tidak dapat mengakses skop, saya telah menambah beberapa cadangan tentang cara melakukannya tanpa skop (Langkah 5).
Satu perkara yang projek ini tidak boleh dimasukkan ke dalam mana -mana pengawal motor sebenar adalah sebarang fungsi keselamatan seperti perlindungan semasa.
Malah, perkara yang paling teruk ialah anda membakar motor HD.
Walau bagaimanapun, melaksanakan perlindungan semasa dengan perkakasan semasa tidak sukar, dan mungkin saya akan melakukannya pada satu ketika.
Jika anda cuba mengawal motor yang lebih besar, sila tambahkan perlindungan semasa untuk melindungi motor dan keselamatan anda sendiri.
Saya ingin cuba menggunakan pengawal ini dengan motor yang lebih besar yang boleh melakukan kerja \ 'real \' tetapi saya tidak mempunyai yang betul lagi.
Saya perhatikan bahawa eBay menjual kereta 86 W untuk kira -kira $ 40.
Nampaknya calon yang baik.
Terdapat juga laman web RC yang dipanggil \ 'Gobrusless \' yang menjual kit yang memasang bldc mereka sendiri.
Ini tidak terlalu mahal dan ia bernilai pengalaman untuk membina satu.
Sila ambil perhatian bahawa tiada sensor dewan untuk motor di laman web ini. Wah!
Menulis struktur ini adalah pekerjaan yang besar.
Saya harap anda dapati ia berguna, sila buat komen dan cadangan anda.
Multimeter digital (DMM)-
Jika DMM anda mempunyai osiloskop meter frekuensi (
lebih baik mempunyai sekurang-kurangnya 2 saluran)
pemacu T8 Torx (
anda memerlukan salah satu daripada mereka untuk membuka sebarang cakera keras).
Terdapat kedai perkakasan yang baik.
Bengkel mesin dan prototaip cepat (
ini sangat membantu tetapi saya fikir projek ini boleh dilakukan tanpa mereka).
Bahan cincin magnet motor bldc dari cakera keras komputer (
separuh motor)
dari pemacu keras yang lain (3-6)
motor kecil kedua dalam cakera perak pada cakera keras cakera keras (DC disikat ok
terdapat
) litar mikro lirik mikro l6234 pemacu motor fasa IC dua 100 uf kapasitor satu kapasitor 10 nf satu kapasitor 220 nf satu kapasitor satu 100 kapalititor
uf
100
. dikawal menggunakan induksi potensi belakang).
Maklumat spesifikasi dan perolehan boleh didapati dalam kedua -dua pautan ini: Jika anda akan melakukan projek ini, saya cadangkan anda meluangkan masa untuk memahami dengan teliti bagaimana BLDC berfungsi dan kawalan.
Terdapat sebilangan besar rujukan dalam talian (
lihat di bawah untuk beberapa cadangan).
Walau bagaimanapun, saya termasuk beberapa carta dan jadual dalam projek saya yang akan membantu anda memahami.
Berikut adalah senarai konsep yang saya fikir adalah yang paling penting untuk memahami projek ini: Transistor MOSFET 3-fasa separuh jambatan 6-
langkah pengurangan Pulse
Pulse Pulse Modulasi Fasa Motor (PWM) Hall-
Microchip AVR443: Rujukan Basor Dc Basor
3
DC Flying Star Hall Sensor, video yang baik untuk membersihkan motor cakera keras, tetapi penulis nampaknya menjalankan motor sebagai motor melangkah dan sebagai motor melangkah. Laman web rujukan yang lebih spesifik untuk BLDC pada IC pemacu motor L6234, termasuk lembaran data, nota aplikasi, dan maklumat pembelian.
Sampel percuma untuk pemacu motor berus PM untuk aplikasi kenderaan elektrik hibrid.
Ini adalah satu -satunya kertas yang saya dapati yang menggambarkan susunan perubahan fasa brek regeneratif.
Makalah ini, brek regeneratif dalam kenderaan elektrik berguna, saya meminjam beberapa nombor daripadanya, tetapi saya fikir ia salah menerangkan bagaimana regenerasi berfungsi.
Saya melakukan projek ini dengan motor pemacu cakera kitar semula kerana mudah dilalui dan saya suka menggunakan motor voltan rendah kecil untuk mempelajari kord yang dikawal oleh BLDC dan tidak menyebabkan masalah keselamatan.
Di samping itu, konfigurasi magnet sensor dewan menjadi sangat mudah dengan menggunakan cincin magnet (rotor)
dari kedua motor ini (lihat langkah 4).
Sekiranya anda tidak mahu pergi ke semua kerumitan memasang dan menentukur sensor dewan (Langkah 5-7)
Saya tahu terdapat sekurang-kurangnya beberapa motor pemacu CD/DVD yang dibina di dalam sensor di dalam.
Untuk menyediakan beberapa inersia yang beralih ke motor dan memberi mereka sedikit beban, saya meletakkan 5 cakera keras pada motor, perlahan -lahan terpaku bersama -sama dengan gam yang kuat dan terpaku pada motor (
ini menjadikan roda roda dalam projek asal saya).
Jika anda akan mengeluarkan motor dari cakera keras, anda memerlukan pemacu T8 Torx untuk membongkar perumahan (
biasanya terdapat dua skru yang tersembunyi di belakang tongkat di label tengah)
dan skru dalaman yang memegang motor di tempatnya.
Anda juga perlu mengeluarkan pembaca kepala (
bunyi eksekutif bulatan)
dengan cara ini anda boleh mengeluarkan cakera memori untuk mencapai motor.
Di samping itu, anda memerlukan motor cakera keras kedua yang sama untuk mengeluarkan pemutar dari motor itu (
terdapat magnet di dalam).
Untuk memisahkan motor, saya meraih pemutar (atas)
vise motor dan membuangnya pada stator (bawah)
dua pemutar skru adalah 180 darjah.
Ia tidak mudah untuk memegang motor pada pasangan yang cukup ketat tanpa ubah bentuk.
Anda mungkin mahu membina kayu v-
blok yang digunakan untuk tujuan ini.
Saya menggerudi lubang di cincin magnet pada pelarik supaya ia sesuai dengan selesa di bahagian atas motor.
Sekiranya anda tidak dapat menggunakan pelarik, anda boleh membetulkan pemutar terbalik pada motor dengan gam yang kuat.
Gambar -gambar 2 dan 3 di bawah menunjukkan bahagian dalam salah satu motor yang saya telah dibongkar.
Pada babak pertama di sana (pemutar) adalah 8 tiang (
magnet dibalut plastik).
Pada babak kedua (stator)
terdapat 12 slot (belitan).
Setiap tiga fasa motor mempunyai 4 slot dalam siri.
Sesetengah motor HD mempunyai tiga kenalan di bahagian bawah, satu kenalan setiap fasa, dan yang lain adalah ketuk pusat motor (
di mana tiga peringkat bertemu).
Dalam projek ini, tiada pusat paip diperlukan, tetapi ia boleh menjadi berguna dalam kawalan bebas sensor (
saya berharap untuk melepaskan nota mengenai kawalan bebas sensor satu hari).
Jika motor anda mempunyai empat kenalan, anda boleh mengenal pasti fasa dengan ohmeter.
Rintangan antara ketuk pusat dan fasa adalah separuh daripada rintangan antara mana -mana dua fasa.
Kebanyakan kesusasteraan di BlDC Motors berkaitan dengan mereka yang mempunyai bentuk gelombang berpotensi berbentuk tangga, tetapi motor cakera keras nampaknya mempunyai potensi belakang yang kelihatan seperti sinus (lihat di bawah).
Setakat yang saya tahu, memandu motor gelombang sinus dengan PWM gelombang sinus berfungsi dengan baik, walaupun kecekapan mungkin sedikit.
Seperti semua motor BLDC, ini terdiri daripada
jambatan setengah transistor tiga fasa (
lihat gambar ke-2 di bawah).
Saya menggunakan IC yang dibuat oleh St Micro (L6234)
untuk jambatan, juga dikenali sebagai pemandu motor.
Sambungan elektrik L6234 ditunjukkan dalam langkah 8.
Gambar ketiga di bawah menunjukkan gambarajah skematik pemandu motor dan tiga fasa motor.
Agar motor beroperasi mengikut arah jam, suis akan dibuat dalam urutan berikut (
huruf pertama adalah transistor atas dan huruf kedua adalah transistor yang lebih rendah)
: langkah 1 2 3 4 5 6 mengikut arah jam: cb, ab, ac, bc, ba, ca counterwise: bc, ba, ca, ab
, untuk motor ini.
Oleh itu, kelajuan putaran setiap motor berlaku empat kali.
Kedua-dua urutan seolah-olah sama, tetapi mereka tidak sama kerana untuk
urutan 6 langkah, untuk CW, arah semasa melalui fasa adalah satu arah, dan untuk CCW, arah semasa adalah bertentangan.
Anda dapat melihat ini dengan menggunakan voltan bateri atau bekalan kuasa ke fasa motor sama ada.
Jika anda menggunakan voltan, motor akan bergerak sedikit dalam satu arah dan berhenti.
Jika anda dapat dengan cepat menukar voltan pada fasa dalam salah satu urutan di atas, anda boleh memutar motor secara manual.
Transistor dan mikrokontrol melengkapkan semua suis ini dengan cepat, menukar beratus -ratus kali sesaat apabila motor berjalan pada kelajuan tinggi.
Juga, sila ambil perhatian bahawa jika voltan digunakan untuk kedua -dua fasa, motor bergerak sedikit dan kemudian berhenti.
Ini kerana tork adalah sifar.
Anda dapat melihat ini dalam gambar keempat di bawah, yang menunjukkan potensi belakang sepasang fasa motor.
Ini adalah gelombang sinus.
Apabila gelombang berjalan melalui X-
aci, tork yang disediakan oleh fasa ini adalah sifar. Dalam
urutan perubahan fasa BLDC enam langkah yang tidak pernah berlaku.
Sebelum tork pada fasa tertentu menjadi rendah, kuasa ditukar kepada gabungan fasa lain.
Motor BLDC yang lebih besar biasanya dihasilkan oleh sensor dewan di dalam motor.
Jika anda mempunyai motor seperti itu maka anda boleh melangkau langkah ini.
Juga, saya tahu terdapat sekurang-kurangnya beberapa motor pemacu CD/DVD yang dibina dalam sensor yang sudah ada.
Apabila motor berputar, tiga sensor dewan digunakan untuk pengesanan kedudukan, jadi perubahan fasa dilakukan pada saat yang tepat.
Motor HD saya berjalan sehingga 9000 rpm (150 Hz).
Oleh kerana terdapat 24 perubahan setiap roda, pada 9000 rpm, mesin berubah setiap 280 mikroseconds.
Pengawal mikro Arduino berfungsi pada 16 MHz, jadi setiap kitaran jam adalah 0. 06 mikroseconds.
Saya tidak tahu berapa banyak kitaran jam yang diperlukan untuk melakukan pengurangan kalimat, tetapi walaupun 100 kitaran jam diperlukan, iaitu, ia memerlukan 5 mikroseconds untuk setiap pengurangan ayat.
HD Motors tidak mempunyai sensor dewan, jadi perlu memasangnya di luar motor.
Sensor perlu diperbaiki dengan putaran motor dan terdedah kepada satu siri tiang yang konsisten dengan putaran motor.
Penyelesaian saya adalah untuk mengeluarkan cincin magnet dari motor yang sama dan memasangnya terbalik pada motor untuk dikawal.
Saya kemudian memasang tiga sensor dewan di atas cincin magnet ini, 30 darjah selain antara satu sama lain pada aci motor (
120 darjah putaran motor elektrik).
Pemegang sensor dewan saya terdiri daripada pemegang mudah yang terdiri daripada tiga bahagian aluminium yang diproses oleh saya dan tiga bahagian plastik yang dibuat pada prototaip cepat.
Sekiranya anda tidak mempunyai alat ini, tidak sukar untuk mencari cara lain untuk menunjukkan kedudukannya.
Mewujudkan kurungan untuk sensor dewan akan lebih mencabar.
Ini adalah cara yang mungkin untuk bekerja: 1.
Cari dulang plastik saiz yang betul dan anda boleh dengan teliti epoksi sensor dewan. 2.
Templat dicetak di atas kertas, yang mempunyai lingkaran yang sama dengan jejari cincin magnet, dan tiga markah adalah 15 darjah 3 selain.
Letakkan templat ke cakera dan kemudian gunakan templat sebagai panduan untuk meletakkan dengan teliti Epoxy Sensor Hall di tempatnya.
Sekarang sensor dewan dipasang pada motor, sambungkannya ke litar yang ditunjukkan di bawah dan menguji mereka menggunakan DMM atau osiloskop untuk memastikan output semakin tinggi dan lebih rendah apabila motor berputar.
Saya menjalankan sensor ini di bawah 5 V menggunakan output 5 V Arduino.
Sensor dewan adalah tinggi atau rendah dalam output (1 atau 0)
ia bergantung kepada sama ada mereka merasakan Antartika atau Artik.
Oleh kerana mereka adalah 15 darjah, magnet berputar di bawahnya dan menukar polaritas setiap 45 darjah, ketiga -tiga sensor ini tidak akan tinggi atau rendah pada masa yang sama.
Apabila motor berputar, output sensor adalah 6-
corak langkah yang ditunjukkan dalam jadual berikut.
Sensor mesti diselaraskan dengan gerakan motor supaya salah satu daripada tiga sensor berubah tepat pada kedudukan perubahan fasa motor.
Dalam kes ini, kelebihan sensor dewan pertama (H1)
harus selaras dengan pembukaan gabungan C (tinggi) dan B (rendah).
Ini bersamaan dengan menghidupkan transistor 3 dan 5 dalam litar jambatan.
Saya menyelaraskan sensor dengan magnet dengan osiloskop.
Untuk melakukan ini, saya perlu menggunakan tiga saluran skop.
Saya memutar motor dengan menyambung ke tali pinggang motor kedua dan mengukur potensi belakang antara dua kombinasi fasa (
A dan B, A dan C)
ini adalah dua sinus.
Seperti gelombang dalam gambar di bawah
kemudian lihat isyarat Sensor Hall 2 pada Saluran 3 dari osiloskop.
Pemegang Sensor Hall dihidupkan sehingga kelebihan sensor Hall yang semakin meningkat sepenuhnya dengan titik di mana perubahan fasa perlu dilakukan (lihat di bawah).
Saya kini menyedari bahawa terdapat hanya dua saluran untuk melakukan penentukuran yang sama.
Jika BEMF gabungan fasa B-
menggunakan C, kelebihan H2 yang semakin meningkat akan dikaitkan dengan lengkung BC.
Sebab mengapa perubahan fasa perlu dijalankan di sini adalah untuk sentiasa menjaga tork motor setinggi mungkin.
Potensi belakang adalah berkadar dengan tork dan anda akan melihat bahawa setiap perubahan fasa berlaku apabila potensi belakang berlalu di bawah lengkung peringkat seterusnya.
Oleh itu, tork sebenar terdiri daripada bahagian tertinggi setiap kombinasi fasa.
Sekiranya anda tidak dapat mengakses skop, ini idea penjajaran saya.
Ini sebenarnya latihan yang menarik untuk sesiapa sahaja yang ingin tahu bagaimana motor BLDC berfungsi.
Jika fasa motor A disambungkan (positif) dan B (negatif)
ke bekalan kuasa dan menghidupkan bekalan kuasa, motor akan berputar sedikit dan berhenti.
Kemudian, jika memimpin kuasa negatif dipindahkan ke fasa C dan kuasa dihidupkan, motor akan bertukar lebih jauh dan berhenti.
Bahagian seterusnya urutan adalah untuk memindahkan petunjuk positif ke fasa B, dan lain-lain.
Apabila anda melakukan ini, motor sentiasa berhenti di mana tork adalah sifar, yang sepadan dengan satu tempat di mana carta melewati paksi x pada carta.
Perhatikan bahawa titik sifar kombinasi fasa ketiga sepadan dengan kedudukan perubahan fasa dua kombinasi pertama.
Oleh itu, kedudukan tork sifar B-
gabungan C adalah di mana anda ingin meletakkan kelebihan H2 yang semakin meningkat.
Tandakan kedudukan ini dengan tanda halus atau bilah tajam, dan kemudian laraskan pemegang sensor dewan menggunakan DMM sehingga output H2 tepat pada tanda ini.
Walaupun anda menyimpang sedikit dari jadual sekolah anda, motor harus berfungsi dengan baik.
Tiga fasa motor akan menerima kuasa dari pemandu motor tiga fasa L6234.
Saya mendapati bahawa ini adalah produk yang baik yang boleh tahan ujian masa.
Terdapat banyak cara untuk secara tidak sengaja menggoreng komponen anda apabila menggunakan kuasa elektronik, saya bukan seorang jurutera elektrik dan saya tidak tahu apa yang berlaku. Dalam program sekolah saya, kami melakukan
3-fasa kami sendiri daripada 6 transistor MOSFET dan 6 diod.
output setengah jambatan
Kami menggunakan ini pada HIP4086 dari intersil pemandu lain, tetapi kami mempunyai banyak masalah dengan persediaan ini
kami membakar sekumpulan transistor dan cip.
Saya menjalankan L6234 (
jadi motor) pada 12V.
L6234 mempunyai set input yang luar biasa untuk mengawal setengah jambatan 6 transistor.
Tidak setiap transistor mempunyai input, tetapi input (en)
input untuk setiap tiga peringkat, dan kemudian input lain (dalam)
pilih transistor mana dalam fasa terbuka (atas atau lebih rendah).
Sebagai contoh, hidupkan transistor 1 (atas) dan 6 (lebih rendah)
kedua -dua EN1 dan EN3 adalah tinggi (
EN2 rendah untuk mengekalkan tahap tertutup)
IN1 tinggi, IN3 rendah.
Ini menjadikan fasa kombinasi-C.
Walaupun nota aplikasi L6234 mencadangkan memohon PWM yang digunakan untuk mengawal kelajuan motor ke pin dalam, saya memutuskan untuk melakukannya pada pin en kerana, pada masa itu, saya fikir ia akan menjadi \ 'aneh \' untuk menghidupkan transistor atas dan bawah fasa yang sama
. melewati
Mereka
.
semasa
Kecil, jadi untuk versi yang lebih besar, sila rujuk dokumentasi untuk L6234.
Nota: Mike Anton membuat PCB untuk L6234, yang akan (saya percaya)
menggantikan trek ini dan menjimatkan kerja memasangnya.
Lihat pautan ini untuk spesifikasi dan maklumat pembelian: Saya tidak dapat menemui banyak tentang 3-
Saya akan menerangkan pemahaman saya tentang bagaimana ia berfungsi.
Sila ambil perhatian bahawa saya bukan jurutera elektrik dan kami akan menghargai apa -apa pembetulan untuk penjelasan saya.
Apabila memandu, sistem kawalan menghantar arus ke dalam tiga fasa motor dengan cara yang memaksimumkan tork.
Dalam brek regeneratif, sistem kawalan juga memaksimumkan tork, tetapi kali ini ia adalah tork negatif yang menyebabkan motor melambatkan semasa menghantar kembali arus ke bateri.
Kaedah brek regeneratif yang saya gunakan berasal dari kertas dari Makmal Kebangsaan Oakridge di Amerika Syarikat. S. Govt.
Makmal yang melakukan banyak penyelidikan untuk motor automotif.
Carta di bawah ini datang dari kertas lain yang membantu menggambarkan bagaimana ia berfungsi (
namun, saya fikir penjelasan yang diberikan dalam kertas kedua ini tidak betul).
Perlu diingat bahawa apabila motor berputar, voltan BEMF dalam fasa motor turun naik ke atas dan ke bawah.
Dalam angka itu, ia menunjukkan masa apabila BEMF tinggi di peringkat B dan rendah di pentas.
Dalam kes ini, adalah mungkin untuk arus mengalir dari B ke.
Kritikal untuk brek regeneratif, transistor rendah menyala dan mematikan dengan cepat (
beribu-ribu suis PWM sesaat).
Apabila suis transistor mewah dimatikan;
Apabila transistor rendah dihidupkan, aliran semasa seperti yang ditunjukkan dalam gambar pertama.
Dari segi elektronik kuasa, litar adalah seperti peranti yang dipanggil penukar rangsangan, di mana tenaga disimpan dalam fasa motor (
Wikipedia mempunyai artikel yang baik yang menjelaskan bagaimana penukar rangsangan berfungsi).
Tenaga ini dikeluarkan apabila transistor rendah dimatikan, tetapi pada voltan yang lebih tinggi, arus dengan serta-merta mengalir melalui \ 'anti-excitation \' diod di sebelah setiap transistor dan kemudian kembali ke bateri.
Diod menghalang arus dari mengalir dari bateri ke motor.
Pada masa yang sama, arus ke arah ini (
bertentangan dengan memandu)
berinteraksi dengan cincin magnet untuk menghasilkan tork negatif yang melambatkan motor ke bawah.
Transistor sisi rendah menggunakan suis PWM, dan kitaran tugas PWM mengawal jumlah brek.
Apabila memandu, komutasi motor beralih dari satu kombinasi ke seterusnya dalam masa terdekat untuk mengekalkan tork tertinggi.
Pengumuman brek regeneratif sangat serupa kerana beberapa mod pensuisan menyebabkan motor menghasilkan tork negatif yang mungkin.
Jika anda menonton video dalam langkah pertama, anda dapat melihat bahawa brek regeneratif berfungsi dengan baik, tetapi ia tidak berfungsi dengan baik.
Saya fikir sebab utama ialah motor cakera keras yang saya gunakan adalah motor tork yang sangat rendah, jadi ia tidak menghasilkan banyak BEMF kecuali pada kelajuan tertinggi.
Pada kelajuan yang lebih rendah, terdapat sedikit brek regeneratif (jika ada).
Selain itu, sistem saya berjalan pada voltan yang agak rendah (12 V)
selain itu, kerana setiap laluan melalui diod anti-ekspresi mengurangkan voltan dengan beberapa volt, ini juga mengurangkan kecekapan.
Saya menggunakan diod penerus normal dan saya mungkin mendapat prestasi yang lebih baik jika saya menggunakan beberapa diod khas dengan penurunan voltan yang lebih rendah.
Berikut adalah senarai input dan output pada Arduino.
Juga termasuk carta dan gambar papan saya. 2-
Digital Entry-Hall 1
120 K Rintangan GND 3
Dewan Kemasukan Digital 2
120 K Rintangan GND 4
Hall 3 Digital Input-
120 K Rintangan GND 5
1 Output Digital dalam Siri dengan 400 OHM
Resistor 6
2
Output Digital dalam Siri dengan 400 OHM Output 7
3 Siri dengan 400 ohm Resistor 11-
Output digital EN 3 adalah siri dengan perintang 400 ohm, 100 k ohm potentiometer, dengan 5 V dan GND disambungkan pada kedua-dua hujung dan pin analog 0 disambungkan di tengah.
Potentiometer ini digunakan untuk mengawal kelajuan motor dan jumlah brek.
Bekalan kuasa 5 V juga digunakan untuk menjalankan sensor dewan (lihat langkah 5).
Berikut adalah keseluruhan program yang saya tulis untuk Ardjuino, yang merangkumi komen:/* Bldc_congroller 3. 1.
1* 3 oleh David Glazer.
Siri X adalah ST L6234 3-
Fasa Motor Driver IC * Running Disk Drive Motor Wordwise * dengan brek regeneratif * kelajuan motor dan brek yang dikawal oleh potensiometer tunggal * kedudukan motor oleh tiga
sensor kesan Hall-effect * Arduino menerima output dari 3 sensor Hall (pin 2,3,4
*
) En 1,2, 3 * 3 lakukan pada pin 5,6, 7, dalam 1,2,3)
simulasi dalam 0 ke potensiometer untuk menukar kitaran tugas PWM dan
*
Sambungkan
perubahan
* Allstate1
;
() {pinMode (2, input);
/Hall 1 pinmode (3, input);
/Hall 2 pinmode (4, input);
/L6234 Hall 3/Output Pemandu 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/bersiri. bermula (9600);
Jika anda akan menggunakan sambungan siri, sila nyatakan garis ini.
Perintah siram pada akhir program.
/* Tetapkan kekerapan PWM pada pin 9, 10 dan 11/set pwm hingga 32 kHz untuk pin 9, 10/pertama jelas ketiga-tiga bit pra-divider: int prescalerval = 0x07;
/Buat pembolehubah yang dipanggil prescalerval dan tetapkannya untuk menyamai nombor binari \ '00000111 \' tccr1b & = ~ prescaler
/dan nilai dalam tccr0b dengan bilangan binari \ '11111000 \'
/Set prescalerval untuk menyamai nombor binari \ '00000001 \' TCCR1B | = prescalerval2;
/Atau nilai dalam TCCR0B dengan bilangan binari \ '00000001 \' /set pwm ke 32 kHz untuk pin 3,11 (
program ini hanya menggunakan pin 11)
/jelaskan ketiga-tiga bit pra-kalkun terlebih dahulu: TCCR2B & = ~ pra-calerval;
/Dan nilai dalam tccr0b dengan bilangan binari \ '11111000 \'/Sekarang tetapkan bit pra-pengekodan yang sesuai: TCCR2B | = Pra-pengekodan bit 2;
/Atau nilai dalam TCCR0B dengan bilangan binari \ '00000001 \'/pertama jelas ketiga-tiga bit pra-dikodkan:}
gelung utama loop void/prgrom () {
/time = millis ();
Masa selepas program percetakan bermula. println (masa); // bersiri. cetak (\ '\');
Throttle = analogread (0);
/Throttle potentiometer msps = peta (
throttle, 512,1023, 0,255);
/Memandu dipetakan ke bahagian atas potensiometer bspeed = peta (
throttle, 0,511,255, 0);
/Pengerusi regeneratif separuh bahagian di bahagian bawah periuk/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 Tulis dari Dewan 3 (8, Hallstate1);
/Apabila sensor yang sepadan berkuasa tinggi, LED akan menghidupkan
asalnya digunakan untuk debug DigitalWrite (9, Hallstate2);
// DigitalWrite (10, Hallstate3); Hallval = (Hallstate1)+ (2*Hallstate2)+ (4*Hallstate3);
/Kirakan nilai binari 3 sensor dewan/* siri. cetak (\ 'h 1: \');
Untuk debugging port siri. println (Hallstate1); Bersiri. cetak (\ 'h 2: \'); Bersiri. println (Hallstate2); Bersiri. cetak (\ 'h 3: \'); Bersiri. println (Hallstate3); Bersiri. println (\ '\');
*/// Serial. println (mspeed); // bersiri. println (Hallval); // bersiri. cetak (\ '\');
/Memantau output/kelewatan transistor (1000);
/* T1 = DigitalRead (2); // t1 = ~ t1;
T2 = DigitalRead (4); // t2 = ~ t2;
T3 = DigitalRead (5); // t3 = ~ t3; Bersiri. cetak (T1); Bersiri. cetak (\ '\ t \'); Bersiri. cetak (t2); Bersiri. cetak (\ '\ t \'); Bersiri. cetak (T3); Bersiri. cetak (\ '\'); Bersiri. cetak (\ '\'); Bersiri. cetak (DigitalRead (3)); Bersiri. cetak (\ '\ t \'); Bersiri. cetak (DigitalRead (9)); Bersiri. cetak (\ '\ t \'); Bersiri. println (DigitalRead (10)); Bersiri. cetak (\ '\'); Bersiri. cetak (\ '\'); // kelewatan (500);
*/Perubahan fasa memandu/Setiap nombor binari mempunyai kes yang sepadan dengan transistor yang berbeza yang dihidupkan/bit matematik yang digunakan untuk menukar nilai output arduino:/portd mengandungi output dalam pin pada pemacu l6234/output yang digunakan untuk menentukan sama ada transistor atas atau pin yang lebih
rendah nilai yang dikawal oleh potentiometer). jika (throttle> 511) {switch (Hallval) {
case 3:/portd = 1111xxx00;
/Output yang dijangkakan pin 0-
7 xxx merujuk kepada input dewan dan portd & = b00011111 tidak boleh diubah;
Portd | = B01100000;
/Analowrite (9, mspeed);
PWM pada fasa (
transistor mewah) analogwrite (10,0);
Penutup Fasa B (tugas = 0) AnalogWrite (11,255); // fasa c pada -duty = 100% (
transistor rendah) pecah;
Kes 1:/portd = b001xxx00;
/Output dijangka pin 0-
7 portd & = b00011111;
/Portd | = B00100000;
/Analowrite (9, mspeed);
PWM pada fasa (
transistor mewah) analogwrite (10,255); // fasa b pada (
transistor rendah) analogwrite (11,0); // fasa b off (tugas = 0) break;
Kes 5:/portd = B101xxx00;
/Output dijangka pin 0-
7 portd & = b00011111;
/Portd | = B10100000; AnalogWrite (9,0); AnalogWrite (10,255); AnalogWrite (11, mspeed); rehat;
Kes 4:/portd = B100xxx00;
/Output dijangka pin 0-
7 portd & = b00011111;
Portd | = BYM000;
/Analowrite (9,255); AnalogWrite (10,0); AnalogWrite (11, mspeed); rehat;
Kes 6:/portd = B110xxx00;
/Output dijangka pin 0-
7 portd & = b00011111;
PORTD B11. 000 =;
/Analowrite (9,255); AnalogWrite (10, mspeed); AnalogWrite (11,0); rehat;
Kes 2:/portd = b010xxx00;
/Output dijangka pin 0-
7 portd & = b00011111;
B0201700 PORTD | =;
/Analowrite (9,0); AnalogWrite (10, mspeed); AnalogWrite (11,255); rehat; }}
/Perubahan fasa brek regeneratif /portd (
output dalam pin pada l6234)
Pin sentiasa rendah, jadi hanya transistor rendah pada setiap fasa digunakan semasa regen. brek. lain {
/portd = b000xxx00;
/Output dijangka pin 0-
7 portd & = b00011111;
Portd | = BYM0000; // switch (Hallval) {
Case 3: Writing Analogy (9, BSPEED); // AnalogWrite (9,0); AnalogWrite (10,0); AnalogWrite (11,0); rehat;
Kes 1: Penulisan Analogi (9, BSPEED); AnalogWrite (10,0); AnalogWrite (11,0); rehat;
Kes 5: Penulisan Analogi (9,0); AnalogWrite (10,0); AnalogWrite (11, bspeed); rehat;
Kes 4: Penulisan Analogi (9,0); AnalogWrite (10,0); AnalogWrite (11, bspeed); rehat;
Kes 6: Penulisan Analogi (9,0); analogwrite (10, bspeed); AnalogWrite (11,0); rehat;
Kes 2: Penulisan Analogi (9,0); analogwrite (10, bspeed); AnalogWrite (11,0); rehat; }}
/Time = millis ();
Masa selepas program percetakan bermula. println (masa); // bersiri. cetak (\ '\'); // bersiri. siram ();
/Jika anda ingin debug menggunakan port bersiri, sila uncomment}
Saya fikir operasi yang dilakukan oleh Arduino dalam projek ini sangat mudah sehingga ia kelihatan seperti sisa untuk melakukan tugas ini dengan mikropemproses.
Malah, nota aplikasi L6234 mencadangkan pelbagai gerbang yang boleh diprogramkan mudah (
GAL16V8 yang diperbuat daripada semikonduktor kekisi) untuk melakukan tugas ini.
Saya tidak biasa dengan pengaturcaraan peranti ini, tetapi kos IC hanya $ 2. 39 di Newark.
Litar bersepadu lain yang serupa juga sangat murah.
Pilihan lain adalah untuk menyatukan pintu logik yang bijak.
Saya datang dengan beberapa urutan logik yang agak mudah yang boleh mendorong L6234 IC dari output tiga sensor dewan.
Carta untuk peringkat A ditunjukkan di bawah, dan jadual kebenaran untuk ketiga -tiga peringkat (
litar logik fasa B dan C, pintu \ 'tidak \' mesti dihidupkan ke sisi lain \ 'atau
agar
.