- Bahan yang Dibutuhkan
- Diagram Sirkuit Beban Elektronik Arduino DC
- Desain PCB dan File Gerber
- Memesan PCB Anda dari AllPCB
- Kode Arduino untuk Beban DC yang Dapat Disesuaikan
- Menguji Beban DC yang Dapat Disetel
Jika Anda pernah bekerja dengan Baterai, sirkuit SMPS, atau sirkuit catu daya lainnya, sering kali Anda harus menguji sumber daya Anda dengan memuatnya untuk memeriksa bagaimana kinerjanya dalam kondisi pemuatan yang berbeda. Alat yang biasa digunakan untuk melakukan jenis pengujian ini disebut Beban DC Arus Konstan, yang memungkinkan kami untuk menyesuaikan arus keluaran sumber daya Anda dan kemudian menjaganya tetap konstan hingga disesuaikan kembali berubah. Dalam tutorial ini, kita akan belajar cara membuat Beban Elektronik yang Dapat Disetel sendiri menggunakan Arduino, yang dapat mengambil tegangan input maksimum 24V dan mengalirkan arus setinggi 5A. Untuk proyek ini, kami telah menggunakan papan PCB yang diproduksi oleh AllPCB, penyedia jasa pembuatan dan perakitan PCB profesional yang berbasis di Cina.
Dalam tutorial sumber arus terkontrol tegangan kami sebelumnya, kami telah menjelaskan cara menggunakan penguat operasional dengan MOSFET dan memanfaatkan rangkaian sumber arus yang dikontrol tegangan. Tetapi dalam tutorial ini, kami akan menerapkan sirkuit itu dan membuat sumber arus yang dikontrol secara digital. Jelas, sumber arus yang dikontrol secara digital membutuhkan rangkaian digital dan untuk melayani tujuan tersebut, Arduino NANO digunakan. Arduino NANO akan menyediakan kontrol yang diperlukan untuk beban DC.
Sirkuit terdiri dari tiga bagian. Bagian pertama adalah bagian Arduino Nano, bagian kedua adalah konverter digital ke analog, dan bagian ketiga adalah rangkaian analog murni dimana digunakan penguat operasional ganda dalam satu paket yang akan mengontrol bagian beban. Proyek ini terinspirasi oleh posting di Arduino, namun, sirkuit diubah untuk mengurangi kerumitan dengan fitur dasar bagi semua orang untuk membuatnya.
Beban elektronik kami dirancang untuk memiliki bagian masukan dan keluaran berikut.
- Dua sakelar input untuk menambah dan mengurangi beban.
- Sebuah LCD yang akan menampilkan beban yang ditetapkan, beban aktual, dan tegangan beban.
- Arus beban maksimum dibatasi hingga 5A.
- Tegangan input maksimum adalah 24V untuk beban.
Bahan yang Dibutuhkan
Komponen yang diperlukan untuk membangun beban elektronik DC tercantum di bawah ini.
- Arduino nano
- LCD karakter 16x2
- Dua soket barel
- Mosfet irf540n
- Mcp4921
- Lm358
- Resistor shunt 5watt.1 ohm
- 1k
- 10k - 6 pcs
- Heatsink
- .1uF 50v
- 2k - 2 lembar
Diagram Sirkuit Beban Elektronik Arduino DC
Dalam skema di bawah ini, penguat operasional memiliki dua bagian. Salah satunya adalah untuk mengontrol MOSFET dan yang lainnya adalah untuk memperkuat arus yang dirasakan. Anda juga dapat memeriksa video di bagian bawah halaman ini yang menjelaskan cara kerja sirkuit secara lengkap. Bagian pertama memiliki R12, R13, dan MOSFET. R12 digunakan untuk mengurangi efek pembebanan pada bagian umpan balik dan R13 digunakan sebagai resistor gerbang MOSFET.
Dua resistor tambahan R8 dan R9 digunakan untuk merasakan tegangan suplai dari catu daya yang akan ditekan oleh beban tiruan ini. Sesuai aturan pembagi tegangan, kedua resistor ini mendukung maksimum 24V. Lebih dari 24V akan menghasilkan tegangan yang tidak sesuai untuk pin Arduino. Jadi berhati-hatilah untuk tidak menghubungkan catu daya yang memiliki tegangan output lebih dari 24V.
Resistor R7 adalah resistor beban sebenarnya di sini. Ini adalah resistor 5 Watt,.1 Ohm. Sesuai power-law, itu akan mendukung maksimum 7A (P = I 2 R), tetapi untuk sisi yang aman, lebih bijak untuk membatasi arus beban maksimum 5A. Oleh karena itu, pada saat ini beban maksimum 24V, 5A dapat diatur oleh beban dummy ini.
Bagian lain dari penguat dikonfigurasi sebagai penguat penguatan. Ini akan memberikan keuntungan 6x lipat. Selama aliran arus, penurunan tegangan akan muncul. Misalnya, ketika arus 5A mengalir melalui resistor, penurunan tegangan akan menjadi 0,5V melintasi resistor shunt 0,1 Ohm (V = I x R) menurut hukum ohm. Penguat non-pembalik akan memperkuatnya menjadi x6, oleh karena itu 3V akan menjadi keluaran dari bagian kedua penguat. Output ini akan dirasakan oleh pin input analog Arduino nano dan arus akan dihitung.
Bagian pertama dari penguat dikonfigurasi sebagai rangkaian pengikut tegangan yang akan mengontrol MOSFET sesuai tegangan input dan mendapatkan tegangan umpan balik yang diinginkan karena arus beban yang mengalir melalui resistor shunt.
MCP4921 adalah pengubah Digital ke Analog. DAC menggunakan protokol komunikasi SPI untuk mendapatkan data digital dari unit mikrokontroler dan memberikan keluaran tegangan analog tergantung padanya. Tegangan ini merupakan masukan dari op-amp. Kami sebelumnya juga telah mempelajari cara menggunakan MCP4921 DAC ini dengan PIC.
Di sisi lain terdapat Arduino Nano yang akan memberikan data digital ke DAC melalui protokol SPI dan mengontrol beban, serta menampilkan data dalam tampilan karakter 16x2. Dua hal tambahan yang digunakan, yaitu tombol turunkan dan tambah. Alih-alih menghubungkan ke pin digital, ia terhubung ke pin analog. Oleh karena itu, seseorang dapat mengubahnya ke jenis sakelar lain seperti slider atau encoder analog. Selain itu, dengan memodifikasi kode, seseorang dapat memberikan data analog mentah untuk mengontrol beban. Ini juga menghindari masalah sakelar pantulan.
Akhirnya, dengan meningkatkan beban, Arduino nano akan memberikan data beban ke DAC dalam format digital, DAC akan memberikan data analog ke penguat operasional, dan penguat operasional akan mengontrol MOSFET sesuai tegangan input penguat operasional.. Akhirnya, tergantung pada aliran arus beban melalui resistor shunt, penurunan tegangan akan muncul yang selanjutnya akan diperkuat oleh saluran kedua LM358 dan didapat oleh Arduino nano. Ini akan ditampilkan pada tampilan karakter. Hal yang sama akan terjadi ketika pengguna menekan tombol turunkan.
Desain PCB dan File Gerber
Karena rangkaian ini memiliki jalur arus tinggi, merupakan pilihan bijak untuk menggunakan taktik desain PCB yang tepat untuk menghilangkan kasus kegagalan yang tidak diinginkan. Jadi, PCB dirancang untuk beban DC ini. Saya telah menggunakan Software Eagle PCB Design untuk mendesain PCB saya. Anda dapat memilih Perangkat Lunak Cad PCB. Desain PCB akhir dalam perangkat lunak CAD ditunjukkan pada gambar di bawah ini,
Salah satu faktor penting yang perlu diperhatikan selama desain PCB ini adalah menggunakan bidang daya tebal untuk aliran arus yang tepat ke seluruh rangkaian. Ada juga jahitan tanah VIAS (vias acak di bidang tanah) yang digunakan untuk aliran tanah yang tepat baik di lapisan ke atas dan ke bawah.
Anda juga dapat mengunduh file Gerber dari PCB ini dari tautan di bawah ini dan menggunakannya untuk fabrikasi.
- Unduh File Gerber Beban DC Elektronik yang Dapat Disesuaikan
Memesan PCB Anda dari AllPCB
Setelah Anda siap dengan file Gerber Anda, Anda dapat menggunakannya untuk membuat PCB Anda. Omong-omong, sponsor artikel ini menampilkan ALLPCB, yang dikenal dengan PCB berkualitas tinggi dan pengiriman sangat cepat. Selain Manufaktur PCB, AllPCB juga menyediakanPerakitan PCB dan Sumber Komponen.
Untuk mendapatkan pesanan PCB Anda dari mereka, kunjungi allpcb.com dan daftar. Kemudian di halaman beranda, masukkan dimensi PCB Anda dan jumlah yang dibutuhkan seperti yang ditunjukkan di bawah ini. Kemudian klik Kutip sekarang.
Sekarang Anda dapat mengubah parameter lain dari PCB Anda seperti jumlah lapisan, warna topeng, ketebalan, dll. Di sisi kanan, Anda dapat memilih negara Anda dan pilihan pengiriman yang diinginkan. Ini akan menunjukkan waktu tunggu dan jumlah total yang harus dibayar. Saya telah memilih DHL dan jumlah total saya adalah $ 26, tetapi jika Anda adalah pelanggan pertama kali, harga akan turun di kasir. Kemudian klik Add to Cart lalu klik check out sekarang.
Sekarang, Anda dapat mengklik unggah file Gerber Anda dengan mengklik "Unggah Gerber" dan kemudian klik beli.
Pada halaman berikutnya, Anda dapat memasukkan alamat pengiriman dan memeriksa harga akhir yang harus Anda bayarkan untuk PCB Anda. Anda kemudian dapat meninjau pesanan Anda dan kemudian klik kirim untuk melakukan pembayaran.
Setelah pesanan Anda dikonfirmasi, Anda dapat duduk dan menyampaikan agar PCB Anda tiba di depan pintu Anda. Saya menerima pesanan saya setelah beberapa hari dan kemudian kemasan sudah rapi seperti gambar di bawah ini.
Kualitas PCBnya bagus seperti biasa seperti yang Anda lihat sendiri pada gambar di bawah ini. Sisi atas dan sisi bawah papan ditunjukkan di bawah ini.
Setelah Anda mendapatkan papan Anda, Anda dapat melanjutkan dengan merakit semua komponen. Papan saya yang sudah selesai terlihat seperti ini yang ditunjukkan di bawah ini.
Selanjutnya, Anda dapat mengunggah kode dan menyalakan modul untuk memeriksa cara kerjanya. Kode lengkap untuk proyek ini diberikan di bagian bawah halaman ini. Penjelasan kode tersebut adalah sebagai berikut.
Kode Arduino untuk Beban DC yang Dapat Disesuaikan
Kodenya sangat sederhana. Pada awalnya, kami menyertakan file header SPI dan LCD serta mengatur tegangan logika maksimum, pin pemilihan chip, dll.
#include
Bagian ini terdiri dari deklarasi terkait alur program yang diperlukan dari bilangan bulat dan variabel. Juga, kami mengatur pin periferal asosiasi dengan Arduino Nano.
const int slaveSelectPin = 10; // Chip pilih pin int number = 0; int meningkat = A2; // Tingkatkan pin int menurun = A3; // kurangi pin int current_sense = A0; // rasa saat ini pin int voltage_sense = A1; // rasa tegangan pin int state1 = 0; int state2 = 0; int Set = 0; voltase apung = 0; float load_current = 0,0; float load_voltage = 0,0; arus mengambang = 0,0; tegangan float = 0,0; LCD LiquidCrystal (7, 6, 5, 4, 3, 2); // Pin LCD
Ini digunakan untuk Setup LCD dan SPI. Juga, arah pin diatur di sini.
batal penyiapan () { pinMode (slaveSelectPin, OUTPUT); pinMode (peningkatan, INPUT); pinMode (kurangi, INPUT); pinMode (current_sense, INPUT); pinMode (voltage_sense, INPUT); // menginisialisasi SPI: SPI.begin (); // mengatur jumlah kolom dan baris LCD : lcd.begin (16, 2); // Cetak pesan ke LCD. lcd.print ("Beban Digital"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); penundaan (2000); }
Ini digunakan untuk Mengonversi nilai DAC.
batal convert_DAC (unsigned int value) { / * Step Size = 2 ^ n, Oleh karena itu 12bit 2 ^ 12 = 4096 Untuk referensi 5V, stepnya adalah 5/4095 = 0.0012210012210012V atau 1mV (approx) * / unsigned int container; unsigned int MSB; LSB int unsigned; / * Langkah: 1, simpan 12 bit data ke dalam container Misalkan datanya adalah 4095, dalam biner 1111 1111 1111 * / container = value; / * Langkah: 2 Membuat Dummy 8 bit. Jadi, dengan membagi 256, 4 bit atas ditangkap di LSB LSB = 0000 1111 * / LSB = container / 256; / * Langkah: 3 Mengirim konfigurasi dengan meninju data 4 bit. LSB = 0011 0000 ATAU 0000 1111. Hasilnya adalah 0011 1111 * / LSB = (0x30) - LSB; / * Langkah: 4 Container masih memiliki nilai 21bit. Mengekstrak 8 bit yang lebih rendah. 1111 1111 DAN 1111 1111 1111. Hasilnya adalah 1111 1111 yaitu MSB * / MSB = 0xFF & container; / * Langkah: 4 Mengirim data 16bits dengan membaginya menjadi dua byte. * / digitalWrite (slaveSelectPin, LOW); penundaan (100); SPI.transfer (LSB); SPI.transfer (MSB); penundaan (100); // ambil pin SS tinggi untuk membatalkan pilihan chip: digitalWrite (slaveSelectPin, HIGH); }
Bagian ini digunakan untuk operasi terkait penginderaan saat ini.
float read_current (void) { load_current = 0; untuk (int a = 0; a <average; a ++) { load_current = load_current + analogRead (current_sense); } load_current = load_current / rata-rata; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; return load_current; }
Ini digunakan untuk membaca tegangan beban.
float read_voltage (void) { load_voltage = 0; untuk (int a = 0; a <average; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } load_voltage = beban_voltage / rata-rata; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; return load_voltage; }
Ini adalah loop yang sebenarnya. Di sini, langkah saklar diukur dan data dikirim ke DAC. Setelah mengirimkan data, aliran arus aktual dan tegangan beban sedang diukur. Kedua nilai tersebut akhirnya juga dicetak pada LCD.
void loop () { state1 = analogRead (meningkat); if (state1> 500) { delay (50); state1 = analogRead (naikkan); jika (state1> 500) { volt = volt + 0,02; } } state2 = analogRead (kurangi); if (state2> 500) { delay (50); state2 = analogRead (kurangi); if (state2> 500) { if (volt == 0) { volt = 0; } lain { volt = volt-0,02; } } } angka = volt / 0,0012210012210012; convert_DAC (angka); tegangan = read_voltage (); current = read_current (); lcd.setCursor (0, 0); lcd.print ("Set Nilai"); lcd.print ("="); Setel = (volt / 2) * 10000; lcd.print (Set); lcd.print ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (saat ini); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (voltase); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // penundaan (1000); //lcd.clear (); }
Menguji Beban DC yang Dapat Disetel
Sirkuit beban digital disolder dan diberi daya menggunakan sumber daya 12V. Saya menggunakan baterai Lithium 7.4V saya di sisi sumber daya dan menghubungkan pengukur penjepit untuk memeriksa cara kerjanya. Seperti yang Anda lihat ketika arus yang disetel 300mA, rangkaian menarik 300mA dari baterai yang juga diukur dengan meteran penjepit sebagai 310mA.
Cara kerja lengkap sirkuit dapat ditemukan di video yang ditautkan di bawah ini. Semoga Anda memahami proyek ini dan menikmati membangun sesuatu yang bermanfaat. Jika Anda memiliki pertanyaan, tinggalkan di bagian komentar atau gunakan Forum.