Halo semuanya. Saat belajar di universitas, saya mengumpulkan mobil listrik kecil, sumur, atau kartu. Triknya adalah bahwa semua kendali drive listrik, termasuk rem, diberikan kepada pengontrol sementara. Dan hanya tentang bagaimana saya melakukan mobil kecil ini, dan perangkap apa yang saya temui selama konstruksi - saya ingin menceritakan materi ini. Materi itu tidak mengklaim sebagai unik, tetapi bagi saya itu adalah pengalaman hebat dan menarik.

Tema ceritanya ada di persimpangan aspek perangkat keras dan perangkat lunak. Dan dalam firmware untuk controller, saya tidak berurusan dengan beberapa konsep atau data abstrak, tetapi dengan perangkat "fisik" yang sangat nyata: relay, motor listrik, transistor, dll. Jadi saya akan memberikan deskripsi singkat tentang bagian teknis, komposisi yang pada saat itu semua tarian dengan rebana.
Node utama
Motor traksi - kolektor universal. Ini dapat bekerja baik dari langsung dan dari arus bolak-balik. Tegangan pengoperasian 220 volt.

Baterai - 25 sel asam timbal 6 volt dari Casil masing-masing terhubung secara seri, sebagai hasilnya, kami mendapatkan baterai 150-160 volt. Itu dipasang di belakang dan digulung ulang dengan pita listrik biru, semuanya sudah sebagaimana mestinya :)

Mesin menggerakkan roda melalui roda gigi cacing dengan rasio roda gigi i = 10. Foto menunjukkan bahwa mesin digabungkan ke gearbox menggunakan roller kecil, itu adalah mesin khusus.

Sistem pengereman, yaitu, cakram rem dengan caliper, pada prinsipnya tidak. Pasang rem fisik pada waktu itu tidak berhasil. Oleh karena itu, pengereman engine tetap menjadi satu-satunya pilihan nyata, sehingga pengontrol juga harus mengendalikan pengereman mesin.
Kontroler untuk unit kontrol
Pada prinsipnya, pengontrol sederhana untuk kendaraan listrik juga dapat dipasang di "ranjang longgar". Tapi saya ingin dapat mengkonfigurasi semuanya dengan indah dengan bantuan program, setelah semua, abad ke-21. Setelah diskusi panjang yang sangat ilmiah saat makan malam, saya memutuskan bahwa chip microchip pic16f877a harus diambil sebagai dasar dari pengontrol, berikut adalah karakteristik singkatnya:

Pada saat itu, saya tidak benar-benar meraba-raba dalam bidang elektronik, dan pada awalnya saya ingin membuat sirkuit ini sangat memalukan - mesin dihidupkan atau mesin dimatikan, tetapi alih-alih relay meletakkan kunci transistor sehingga tidak ada yang klik dan tidak terbakar. Tetapi saya memutuskan bahwa risikonya dapat dibenarkan, saya tidak kehilangan apa-apa dan saya hanya ingin melakukan sesuatu yang berharga. Jadi saya memilih sekelompok mikrokontroler + transistor efek medan listrik sebagai kunci. Tombol throttle dan reverse dibawa ke roda kemudi.
Fitur sirkuit
Ketika memilih transistor, saya tidak berhemat dan memilih IRFP4227PBF - transistor efek medan N-channel (terbuka dengan pulsa positif) untuk tegangan 200 volt dan arus maksimum 130 ampere. Case TO-247AC. Tapi, ke depan, saya katakan - saya bisa membakarnya.

PWM - apa itu dan apa yang dimakannya
Karena saya menggunakan mikrokontroler dalam hubungannya dengan transistor efek medan, itu adalah dosa untuk tidak mencoba menggunakan pwm / pWM di sirkuit. Apa itu shim? Pulse Width Modulation (PWM) adalah proses kontrol daya dengan metode denyut nadi dan mematikan perangkat. - terima kasih untuk Wikipedia.
Keuntungan dari metode ini mengendalikan transistor: selama operasi, ia berada di dua negara - baik sepenuhnya tertutup, tidak ada arus dan tidak ada yang pemanasan, atau benar-benar terbuka dan ketahanannya beberapa mil, masing-masing, beberapa fraksi watt panas dihamburkan ke panas pada transistor itu sendiri , atau satuan watt, rangkaiannya nyaris tidak hangat dalam mode operasi ini. Dan proses seperti itu - buka / tutup terjadi ribuan kali per detik. Ini disebut frekuensi PWM. Ada juga yang disebut "duty cycle". Menerjemahkan ke dalam bahasa manusia - angka ini menunjukkan berapa banyak waktu transistor terbuka. Jika kita sedikit lebih dalam - katakanlah kita memiliki frekuensi sinyal PWM 1000 hertz. Jadi transistor membuka dan menutup 1000 kali per detik, dan proses switching antara on dan off adalah 1/1000 sepersekian detik. Nilai 1/1000 adalah periode frekuensi. Dan dengan bantuan siklus tugas, kami menunjukkan bagian waktu dari periode transistor yang terbuka dan arus yang melewatinya. Sebagai contoh: dalam program ini, siklus tugas 255 adalah daya maksimum, 127 - 50%, 0 - transistor ditutup.
Untuk menghasilkan frekuensi seperti itu, pengontrol "fisik" yang dibangun ke dalam chip digunakan, meskipun ada kemungkinan implementasi perangkat lunak, tetapi dalam hal ini pengontrol hanya akan melakukan apa yang menghasilkan frekuensi dengan periode tertentu dan siklus tugas pada output. Dan menggunakan pengontrol dari pinggiran MK, adalah mungkin untuk menghasilkan sinyal, dan sehingga program akan melakukan sesuatu yang lain.
Semakin jauh ke hutan, semakin marah serigala - seberapa efektif drive listrik akan bekerja tergantung pada frekuensi PWM. Saya mencoba frekuensi yang berbeda, dari 2 hingga 15 kilohertz, setiap kali itu berubah secara pemrograman. Jujur, saya tidak melihat banyak perbedaan, tetapi saya yakin itu benar. Sayangnya, data tentang masalah ini tidak dapat diperoleh dalam jumlah yang cukup. Satu-satunya hal yang saya perhatikan adalah bahwa mesin mencicit pada frekuensi yang berbeda selama operasi. By the way, jika seseorang memperhatikan di kereta bawah tanah, bus listrik dan kereta api yang selama awal Anda mendengar gemuruh, mencicit, melolong - ini hanya derit yang sama dari gulungan motor karena bekerja pada frekuensi pengontrol. Ini sangat terlihat di kereta "Swallow", yang berjalan di sepanjang MCC selama awal.
Jebakan dalam algoritma kerja
Masalah selanjutnya adalah dengan mesin mundur. Mesinnya adalah kolektor, ia memiliki dua belitan - tidak bergerak - stator, di badan, dan berputar - rotor. Untuk mengubah arah rotasi, perlu untuk mengarahkan arah arus di salah satu belitan, bukan saya ke arah yang lain. Untuk ini, dua relay digunakan, mereka bekerja secara bersamaan, "melempar" sirkuit untuk membalikkan ketika daya dipasok ke mereka. Tetapi dalam versi pertama dari firmware ada kesalahan - relay diaktifkan di bawah beban. Sebagai hasil dari pengujian di bawah beban, ada dua relay terbakar, karena motor adalah beban induktif dan ada busur yang kuat pada kontak relay, kontak hanya meleleh dan terbakar selama switching.
Jalan keluar dari situasi ini adalah memperkenalkan ke dalam program kondisi yang sebelum mematikan kita menghapus beban dengan membuka siklus tugas sinyal PWM oleh 0, membuang relai, dan memutar daya kembali ke level yang ditetapkan. Inilah tepatnya cara rem pada mobil bekerja - mundur. Hanya hardcore - tidak ada sensor dan encoders, tidak ada. Dan di sini adalah foto relai, itu seperti relai pemula dari Lada. Jika Anda mengganti mereka tanpa beban, mereka juga bekerja dengan tegangan tinggi, mereka menyimpan 160 volt pada 15 ampere, tetapi saya akui bahwa kontaknya dipanaskan karena penampang yang kecil.


Setelah saya menyelesaikan firmware, dan daya naik dengan lancar ke level tertentu. Dan ini sudah menghilangkan goncangan dalam transmisi dan memuat pada node. Ini adalah bagaimana satu baris dalam program ini dapat meningkatkan umur unit.
Kami menghubungkan pengontrol dengan transistor dengan benar
Hanya tetap menghubungkan transistor dengan benar dengan pengontrol. Saya melakukan ini agak salah, melalui sepasang optik, secara langsung. Tetapi sirkuit ini berputar ketika bekerja dengan voltase rendah, pada voltase operasi tinggi rana transistor terus menyala, dan driver push-pull diperlukan untuk kontrol. Rangkaian normal ditunjukkan di bawah ini. Namun demikian, pada suatu waktu, rangkaian dengan pasangan optik sudah cukup, dengan beberapa keajaiban, itu berfungsi untuk test drive, dan mulai terbakar segera setelah itu. Berikut adalah diagram driver "benar", hanya dalam versi saya masih ada decoupling optik dari controller. Gambar diambil dari Drive2:

Beberapa poin menarik
- Ketika memulai, motor listrik mengkonsumsi listrik berkali-kali lebih banyak bahkan tanpa beban. Dan ketika rotor mengerem pada saat start, sikat grafit mulai merokok.
- Pada saat itu, ketika transistor terbakar pada mesin - mulai berjalan dengan sendirinya, karena hanya transistor yang memisahkan baterai dari mesin. Jadi pengenalan skema perlindungan dibenarkan jika Anda tidak ingin mengejar mobil dan berdoa agar itu tidak menabrak siapa pun.
- Mesin yang saya gunakan adalah dari mesin cuci. Omset tanpa memuat, ia mengklaim 14.000 - sulit untuk percaya, tetapi angka ini ada di papan nama. Meskipun ia menarik dengan sempurna "dari bawah."
- Tegangan pada baterai melorot, tanpa beban saya punya sekitar 150 volt, dengan tenang bisa 140 di bawah beban. Dan jika baterai terlalu rendah, maka 130, karena ini, mobil bisa berkendara sangat baik pada baterai segar untuk beberapa menit pertama, maka ketika baterai dihabiskan suatu tempat sekitar 20-30% dari energi, lebih atau kurang mode pengoperasian dimulai, mobil melaju lebih lambat, melaju lebih lambat, tetapi itu tidak begitu terlihat. Ketika baterai dikonsumsi sekitar 70% dari biaya, perjalanan berubah menjadi kursus kura-kura.
- Saya bahkan berhasil membakar transistor yang agak kuat karena tegangan lebih pada shutter-nya. Untuk melindungi dari ini, Anda perlu shunt gerbang transistor dengan dioda ke catu daya driver transistor.
- Relay dihubungkan ke MK menggunakan saklar transistor daya rendah pada voles kecil.
Pada akhirnya, apa yang terjadi di video
Secara umum, percobaan saya dengan drive listrik dimulai kembali di sekolah dan saya mencoba banyak desain yang berbeda, tetapi ini adalah skema yang paling sukses pada saat itu. Jika Anda suka bahannya, saya akan menulis pos terpisah tentang keseluruhan epik.
UPD: Mengubah kesalahan dalam artikel, terima kasih kepada semua orang yang merespons