Berbagi teknologi

[Menerapkan FOC motor brushless stm32 dari awal] [Teori] [posisi 3/6, kecepatan, kontrol arus]

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Bagian sebelumnya , melalui derivasi SVPWM, kami memperoleh kemampuan untuk mengontrol gaya apa pun pada rotor motor. Pada bagian ini, kita memilih bentuk SVPWM dari decoupling sumbu dq rotor yang diperoleh pada bagian sebelumnya untuk mengontrol gaya rotor secara wajar dan mencapai tujuan akhir dari kontrol motor FOC: posisi, kecepatan, dan kontrol arus.

kontrol PID

Orang yang membaca bagian ini kemungkinan besar memahami kendali PID (Proporsi proporsional, Integral integral, Diferensial turunan), yang juga dibatasi oleh kemampuan saya. Saya tidak akan memberikan penjelasan lengkap di sini, juga tidak akan melibatkan metode kendali tingkat lanjut.
Baik itu posisi, kecepatan, atau arus motor, semuanya dapat dianggap sebagai parameter yang dikontrol.
Dari perspektif intuitif, ketika nilai real-time dari parameter yang dikontrol kurang dari nilai target, kekuatan eksternal perlu diterapkan untuk meningkatkan parameter yang dikontrol. Jika gaya eksternal yang diterapkan terlalu besar, parameter yang dikontrol akan melampaui batas, menyebabkan amplitudo osilasi parameter yang dikontrol di dekat nilai target menjadi semakin besar, jika gaya eksternal yang diterapkan terlalu kecil, parameter akan mencapai nilai target; terlalu lambat. Oleh karena itu, perlu diperoleh gaya eksternal yang sesuai agar parameter yang dikontrol tidak berosilasi semakin keras, dan kecepatan penyesuaian tidak terlalu lambat. Dari ide kontrol intuitif inilah P dalam PID. Saat hanya menggunakan kontrol P, atur ukuran gaya eksternal = selisih antara parameter yang dikontrol dan nilai target * koefisien P. Sangat intuitif untuk mengatakan bahwa semakin besar perbedaannya, semakin besar gaya eksternal yang diberikan. Jika koefisien P diatur relatif kecil, meskipun parameter yang dikontrol tidak akan berosilasi sepanjang waktu dan perlahan-lahan dapat stabil ke nilai target, kecepatan penyesuaiannya terlalu lambat, pada saat ini, kontrol D dari PID dapat ditambahkan untuk membuat parameter yang dikontrol awalnya berosilasi dengan cepat ke nilai target.
Mari kita pikirkan tentang kontrol D dari perspektif intuitif. Ketika parameter yang dikontrol mendekati atau melewati nilai target di bawah kontrol P murni, gaya koreksi dalam arah yang berlawanan dengan kecepatan membantu parameter yang dikontrol mengerem mendekati nilai target, memungkinkan parameter yang dikontrol untuk mengerem. rem. Kecilkan ke nilai target lebih cepat. Gaya koreksi yang berlawanan arah dengan kecepatan ini adalah kendali D. Setelah menambahkan kontrol D, ukuran gaya eksternal kontrol = perbedaan antara parameter yang dikontrol dan nilai target * koefisien P kecepatan parameter yang dikontrol * koefisien D. Saat menggunakan kontrol D murni, karena kecepatan parameter yang dikontrol adalah 0 pada keadaan awal, parameter yang dikontrol tidak akan menerima gaya eksternal. Terlihat juga bahwa kontrol P memberikan gaya eksternal dan kontrol D membatasi gaya eksternal. Jika koefisien D dipilih terlalu besar, kecepatan yang kecil dapat menyebabkan gaya eksternal yang besar; jika koefisien D dipilih terlalu kecil, itu tidak akan cukup untuk membatasi gaya eksternal produksi kontrol P, dan parameter yang dikontrol akan menjadi lambat. menstabilkan.
Mari kita pikirkan kontrol I dari sudut pandang intuitif. Ketika ada beban pada parameter yang dikontrol, gaya eksternal yang diberikan oleh kontrol P sederhana mungkin tidak cukup untuk menopang beban parameter yang dikontrol dan nilai target dari waktu ke waktu Akumulasi, daya yang dibutuhkan parameter yang dikontrol untuk mencapai nilai target ketika ada beban dapat diperoleh. Mekanisme ini saya kendalikan. Setelah menambahkan kontrol I, ukuran gaya eksternal kontrol = selisih antara parameter yang dikontrol dan nilai target * Koefisien P, kecepatan parameter yang dikontrol * Koefisien D, selisih antara parameter yang dikontrol dan nilai target terakumulasi seiring waktu * I koefisien.
Saat mengendalikan motor, tanpa keadaan khusus, karena sumbu d tidak berkontribusi terhadap putaran motor, kontrol pid hanya dapat mengontrol gaya sumbu q, dan sumbu d dapat dikontrol atau keluarannya dapat langsung disetel ke 0.

Saring

Dalam pengendalian kecepatan dan pengendalian arus, dibatasi oleh akurasi dan frekuensi pengambilan sampel, kecepatan dan arus tidak stabil dan berubah dengan cepat. Misalnya, gambar berikut adalah nilai kecepatan motor yang dihitung secara langsung. Terdapat banyak gigi gergaji dan berfluktuasi di sekitar nilai sebenarnya Jika nilai tersebut digunakan secara langsung, maka akan menyebabkan keluaran PID sangat berfluktuasi.
Masukkan deskripsi gambar di sini
Gambar di bawah menunjukkan bahwa setelah difilter, nilainya mendekati nilai sebenarnya:Masukkan deskripsi gambar di sini Ada banyak metode pemfilteran, seperti low-pass filtering dan Kalman filtering. Intinya adalah memperkirakan nilai yang mendekati nilai sebenarnya pada data yang dicampur dengan noise. Karena pemfilteran adalah topik yang sangat besar, prinsipnya tidak akan dijelaskan di bagian ini. Anda dapat langsung melihat kodenya di bagian praktik selanjutnya. Kami hanya mengingatkan Anda bahwa perhitungan pemfilteran perlu dilakukan sebelum memasukkan pengontrol PID.

kontrol posisi individu

Posisi mengacu pada sudut. Perlu diperhatikan bahwa ada dua sudut fisik, yang satu adalah sudut motor dan yang lainnya adalah sudut rotor. Encoder motor dipasang pada rumah rotor, sehingga encoder memperoleh sudut rumah rotor, dan rotor terletak di dalam. Karena rumah rotor dan rotor dipasang satu sama lain, terdapat offset tetap antara kedua sudut . Saat memasang, encoder Derajat nol perangkat tidak boleh menghadap magnet permanen rotor. Sudut encoder disediakan oleh encoder, dan sudut rotor juga dapat diketahui. Cara memperoleh offset tetap ini akan dijelaskan pada bagian praktik selanjutnya. Pada bagian ini, Anda hanya perlu menyelesaikan bagian perhitungan teoritis. Vektor magnet yang dihasilkan bekerja pada magnet permanen rotor, sehingga perhitungan teoritis didasarkan pada sudut rotor.
Masukkan deskripsi gambar di sini
Ada dua metode untuk mencapai kontrol posisi rotor:

metode pid:
Ide intuitifnya adalah menggunakan sumbu q rotor untuk terus menarik rotor ke kiri dan ke kanan. Setelah rotor menyimpang dari posisi target, berikan gaya terbalik pada sumbu q untuk menariknya gaya tarik, dan rotor kembali ke posisi target.
Keuntungan: Sumbu q dapat memberikan gaya yang lebih besar, dan kontrol posisi lebih cepat dan bertenaga.
Kekurangan: Karena sumbu q berbeda 90 derajat dari vektor magnet magnet permanen rotor, posisi (sudut) rotor secara real-time perlu diketahui.
Karena posisi rotor secara real-time mudah diperoleh dengan encoder, pid digunakan untuk mengontrol posisi dalam banyak kasus.
Masukkan deskripsi gambar di sini
Diagram blok kontrol FOC dari lokasi terpisah adalah seperti yang ditunjukkan di bawah ini. Maksud dari gambar tersebut adalah dengan menginput posisi target, menghitung selisihnya dengan sudut yang dihitung oleh encoder, kemudian menginputkan pengontrol pid untuk hanya mengontrol intensitas sumbu q rotor, intensitas sumbu d langsung disetel ke 0, dan akhirnya intensitas sumbu dq (0 ~1) dimasukkan ke dalam fungsi SVPWM yang diturunkan sebelumnya, dan keluarannya adalah siklus kerja pwm dari lengan jembatan uvw.Yang perlu diperhatikan disini adalah input posisi target θ dalam theta_{dalam}θdi dalamBisa berupa sudut rotor atau sudut encoder atau sudut multi putaran, asalkan terkait dengan umpan balik θ thetaθPertahankan sudut yang sama.
Masukkan deskripsi gambar di sini

Tarikan paksa sumbu D:
Ide intinya adalah mengontrol kumparan secara artifisial untuk menghasilkan vektor magnet kumparan target, dan sumbu d magnet permanen akan tertarik ke posisi target. Perhatikan bahwa metode ini menarik sumbu d ke posisi target.
Keuntungan: Karena posisi target dihasilkan, tidak perlu mengetahui sudut rotor, rotor secara alami akan tertarik padanya.
Kekurangan: Komponen gaya tangensial kecil, dan gaya eksternal tangensial yang kecil dapat menyebabkan rotor keluar dari posisinya.
Masukkan deskripsi gambar di sini

Kontrol kecepatan individu

Penggunaan metode drag sumbu d untuk mengontrol kecepatan tidak tepat, karena tujuan drag sumbu d bukan untuk menggunakan encoder, tanpa data encoder maka akan sulit untuk menghitung kecepatan. Pengendalian kecepatan dapat menggunakan metode kendali pid, namun karena perubahan nilai kecepatan relatif tidak stabil selama putaran motor, dan kendali D sebanding dengan perubahan parameter yang dikontrol, maka umumnya hanya kendali PI yang digunakan.
Cara menghitung kecepatannya sangat sederhana, yaitu Sudut saat ini − Sudut yang terakhir direkam Δ t frac{Sudut saat ini - Sudut yang terakhir direkam}{Delta{t}}ΔTsudut saat iniSudut yang terakhir direkam
Kontrol kecepatan dapat dicapai dengan memasukkan perbedaan antara kecepatan target dan kecepatan real-time ke dalam kontrol PI.
Diagram blok kontrol FOC kecepatan individu adalah seperti yang ditunjukkan di bawah ini.
Masukkan deskripsi gambar di sini

Kontrol arus individu

Arus motor mewakili torsi. Setelah gaya rotor dipisahkan dari sumbu dq, diketahui bahwa hanya sumbu q yang berkontribusi terhadap putaran motor, dan hanya sumbu q yang menghasilkan torsi. Oleh karena itu, hanya arus sumbu q yang perlu dikontrol mengontrol torsi motor. Jika arus sumbu d juga dikontrol, tingkat pemanfaatan arus motor dapat ditingkatkan, pembangkitan panas dapat dikurangi, dan keluaran torsi maksimum motor dapat ditingkatkan.
Masukkan deskripsi gambar di sini
Dapatkan arus motor:
Sumbu dq rotor merupakan konsep abstrak yang digunakan untuk memudahkan pelepasan gaya rotor. Arus sumbu dq tidak dapat dideteksi secara langsung. Arus yang dapat langsung dideteksi adalah arus pada rangkaian garis fasa motor arus dapat dihitung berdasarkan arus saluran fasa yang didapat.
Ada banyak cara untuk mendeteksi arus saluran fasa. Dua metode yang paling umum adalah: 1. Deteksi arus ditempatkan di antara tabung listrik lengan jembatan atas dan bawah, yang disebut deteksi online. 2. Deteksi arus ditempatkan di antara lengan bawah dan GND, yang disebut deteksi sisi rendah.
Masukkan deskripsi gambar di sini
karena sebuah simpul流出电流 流入电流=0 , jadi hanya diperlukan dua unit pendeteksi arus untuk saluran tiga fasa. Namun, yang terbaik adalah menggunakan tiga unit deteksi arus untuk deteksi sisi rendah, karena ketika siklus kerja pwm lengan jembatan tertentu adalah 1 atau mendekati 1, tidak akan ada arus yang melewati lengan jembatan bawah atau arus akan mengalir. menjadi tidak stabil, dan garis tiga fasa hanya akan Unit pendeteksi arus yang tersisa dapat mengumpulkan arus secara normal. Setelah ada tiga unit pendeteksi arus, ketiga unit pendeteksi arus dapat dibaca. Dua nilai arus dipilih sesuai dengan tugasnya siklus, dan siklus lainnya dihitung dengan asumsi jumlah arus adalah 0. Deteksi online tidak memiliki masalah ini, karena terlepas dari apakah lengan jembatan bawah ditutup atau tidak, selalu ada arus yang mengalir melalui garis fasa. Karena tegangan pada posisi deteksi online relatif besar, unit deteksi arus untuk deteksi online harus mampu menahan tegangan yang besar dan biayanya relatif mahal.

Setelah memperoleh arus saluran tiga fasa, selanjutnya dicari cara untuk mengubahnya menjadi arus sumbu dq.Arus garis fasa dapat diproyeksikan ke sumbu dq, sehingga arus sumbu dq dapat diperoleh secara langsung. Namun, metode arus utama adalah dengan memproyeksikan sumbu dq terlebih dahulu α alfaαSumbu dan beta-betaβsumbu (langkah ini disebut transformasi Clark), dan kemudian α alfaαSumbu dan beta-betaβArus sumbu diproyeksikan ke sumbu dq (langkah ini disebut transformasi park), karena akan digunakan pada posisi yang lebih maju FOC tanpa sensor α alfaαSumbu dan beta-betaβarus sumbu.

transformasi clark:
Arus tiga fasa Aku kamu, aku v, aku w Aku_kamu, aku_v, aku_wSAYAkamkamkamu,SAYAkita,SAYAakuProyeksikan ke Saya α, saya β Saya_alfa, saya_betaSAYAα,SAYAβTerlihat dari hubungan geometri pada gambar di bawah, ekspresi proyeksinya adalah:
{ Saya α = Saya u − Saya v ∗ cos ⁡ 6 0 ° − Saya w ∗ cos ⁡ 6 0 ° Saya β = Saya v ∗ cos ⁡ 3 0 ° − Saya w ∗ cos ⁡ 3 0 °{SAYAα=SAYAkamkamkamuSAYAkitakarena60derajatSAYAakukarena60derajatSAYAβ=SAYAkitakarena30derajatSAYAakukarena30derajat {SAYAα=SAYAkamkamkamuSAYAkitakarena60°SAYAakukarena60°SAYAβ=SAYAkitakarena30°SAYAakukarena30°
Masukkan deskripsi gambar di sini

transformasi taman:
Akan Saya α, saya β Saya_alfa, saya_betaSAYAα,SAYAβSumbu diproyeksikan ke sumbu dq (sebenarnya dikalikan dengan matriks rotasi). Seperti terlihat dari hubungan geometri pada gambar di bawah, ekspresi proyeksinya adalah:
{ Saya d = Saya α ∗ cos ⁡ θ Saya β ∗ sin ⁡ θ Saya q = − Saya α ∗ sin ⁡ θ Saya β ∗ cos ⁡ θ{SAYAD=SAYAαkarenaθ SAYAβdosaθSAYAQ=SAYAαdosaθ SAYAβkarenaθ {SAYAD=SAYAαkarenaθ SAYAβdosaθSAYAQ=SAYAαdosaθ SAYAβkarenaθ
Masukkan deskripsi gambar di sini

Diagram kendali FOC arus tunggal adalah seperti yang ditunjukkan di bawah ini. Karena perubahan arus relatif tidak stabil, maka kendali D yang berkaitan dengan kecepatan perubahan parameter yang dikontrol biasanya tidak digunakan di sini, hanya kendali PI yang digunakan.
Masukkan deskripsi gambar di sini

Kontrol kaskade posisi-kecepatan-arus

Jika ada persyaratan seperti itu: saat mengontrol posisi, tentukan kecepatan maksimum dan arus maksimum saat motor kembali ke posisi atau saat mengontrol kecepatan, tentukan arus maksimum saat motor mencapai kecepatan target, maka Anda perlu menggunakan kontrol level string posisi-kecepatan-saat ini. Kontrol kaskade disini tidak mengontrol motor untuk mencapai nilai arus atau nilai kecepatan tertentu, namun mengharuskan motor untuk mencapai nilai arus maksimum atau nilai kecepatan maksimum selama proses pengendalian, karena tidak mungkin mempertahankan motor pada satu posisi. Ada kecepatan atau ada arus.
Kontrol kaskade berarti masukan dari loop kontrol saat ini adalah output dari loop kontrol sebelumnya. Dengan mengambil contoh kontrol posisi kaskade, diagram blok kontrolnya adalah:
Masukkan deskripsi gambar di sini


Bagian teoritis telah selesai. Kita telah memperoleh metode perhitungan SVPWM dan proses kontrol posisi, kecepatan dan arus. Kita dapat menulis kode FOC. Namun, kita akan menemui berbagai masalah dalam praktiknya, seperti urutan garis fasa dan Tugas pwm. Dibandingkan dengan cara penerapan, waktu pengambilan sampel saat ini, konfigurasi periferal, dll., bagian praktis berikut menggunakan raja hemat biaya chip tunggal yang sangat umum: alat smt32f103c8t6 dan stm32cube, tanpa menggunakan perpustakaan motor, untuk mencapai penyelesaian Kontrol FOC dari awal.