Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Power Supply Saku yang Dapat Diprogram dengan Layar OLED

Komponen dan persediaan

Arduino UNO
× 1
Arduino Nano R3
× 1
Peningkatan DC DC XL 6009
× 1
Sakelar Tombol Tekan SparkFun 12mm
× 1
Kristal 16 MHz
× 1
Konektor Blok Terminal
× 1
Regulator Linier dengan Output yang Dapat Disesuaikan
× 1
Regulator Linier (7805)
× 1
1N4007 – Tegangan Tinggi, Dioda Nilai Arus Tinggi
× 1
Kabel USB-A ke B
× 1
Potensiometer Presisi Multi Putaran- 10k ohm (25 Putaran)
× 1
OP07 Instrumentasi OpAmp
× 1
Kotak Soket Umum
× 1
Papan Proto FR4
× 1
Kabel jumper (generik)
× 1
Header Pria 40 Posisi 1 Baris (0,1")
× 1
Resistor 10k ohm
× 1
Resistor 22.1k ohm
× 1
Resistor 1k ohm
× 1
Arduino Latching Relay 5v 2A
× 1
SparkFun MCP 4131 Potensiometer Digital 10k
× 1
Pita Tembaga Arduino
× 1
Arduino LM358 Opamp
× 1
Arduino 1306 OLED
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Pistol lem panas (generik)
Motor Bor Mini

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Ide

Sebagai orang yang hobi, kami sering kali perlu menyalakan prototipe kami, memeriksa tegangan, arus, batas daya proyek kami, menguji komponen yang baru dibeli. Kebutuhan catu daya variabel selalu ada dalam pekerjaan ini. Namun sayangnya, tidak semua dari kita memiliki power supply bench/lab. Ini juga mahal jika dibeli, besar jika perlu dibawa. Saya mencari catu daya yang dapat diprogram dengan biaya lebih rendah, dengan portabilitas dan produktivitas untuk memberi daya pada prototipe dan komponen pengujian saya. Jadi, saya memutuskan untuk membuatnya.

Ini memiliki beberapa fitur berikut:

  • Dapat diprogram
  • Dapat diisi ulang
  • Portabel
  • Variabel Langkah
  • Pengukur Tegangan/Arus/Daya
  • Relai yang Dilindungi
  • Dapat Disesuaikan, Ringkas, dan Lucu
  • Antarmuka Pengguna OLED yang Keren
  • Kontrol Pengguna Tombol Tekan dan Navigasi Berbasis Menu
  • Firmware Dapat Diupgrade untuk lebih banyak fitur!

Dan catu daya paling serbaguna untuk proyek elektronik berdaya rendah.

Aksi Langsung!

Lihat video ini yang menunjukkan pengoperasian perangkat:

Spesifikasi Perangkat

Perangkat memiliki spesifikasi sebagai berikut:

  • Arus Beban DC Output Maks:400 mA
  • Rentang Tegangan:2,0 Volt - 12,0 Volt
  • Langkah Tegangan:Kira-kira 0,1 Volt
  • Efisiensi Terbaik:75 %
  • Akurasi Pengukuran Saat Ini:+/- 1 mA
  • Akurasi Pengukuran Tegangan:+/- 0,02 Volt

Harap dicatat bahwa perangkat ini adalah prototipe cepat. Dimungkinkan untuk membuat 0-30, bahkan Pasokan Negatif dan Arus Keluaran yang lebih banyak dengan menggunakan baterai berkapasitas tinggi, elektronik tambahan, dan desain yang ditingkatkan.

Prinsip Kerja

Desainnya sendiri adalah perangkat keras yang intensif. Banyak hal yang terjadi di sini. Diagram blok kasar dari sistem adalah seperti ini:

Sumber daya adalah Baterai Li-Po 3,7 V yang dapat diisi ulang USB. Menggunakan modul boost DC-DC XL6009 terlebih dahulu kami membuat 15,6 volt dari Li-Po. Untuk menjalankan MCU kami juga membuat 5 Volt menggunakan Regulator 7805.

Klon Arduino UNO Atmega328P terhubung dengan 2 Sakelar Input Pengguna berbasis Interupsi, Tampilan Output OLED yang Elegan. Port unggah firmware (sketsa) Rx/Tx/DTR melalui USB/Serial dari PC. (modul 1)

Inti dari proyek ini adalah Potensiometer Digital (Digipot) MCP4131 + OpAmp LM 358 Generator Tegangan Langkah berbasis. Tegangan ini adalah Tegangan Kontrol dari LM317 Adjustable Regulator. (modul 2)

Digipot dikendalikan dari Arduino melalui perintah seperti Pseudo-SPI. LM317 dirancang sedemikian rupa sehingga Tegangan Pin Output selalu 1,25 Volt lebih tinggi dari Sesuaikan Tegangan Pin asalkan Tegangan Pin INPUT cukup tinggi (di sini 15,6 volt). (modul 3)

Tegangan langkah diumpankan ke Adjust Pin untuk membuat Output variabel dari Arduino sesuai kebutuhan Pengguna.

ADC mengukur semua tegangan yang terkait dengan pengawasan dan perlindungan; tegangan baterai, tegangan boost, tegangan sensor pengisian dan tegangan output dikondisikan melalui jaringan pembagi tegangan untuk mengumpankan rentang ADC, yaitu 0-1,1 volt di sini. Saya telah menggunakan REFERENSI INTERNAL Arduino yang menghasilkan tegangan referensi 1,1 volt.

Untuk penginderaan arus, arus balik (Beban Gnd) dari Beban Keluaran dihubungkan secara seri dengan Resistor Penginderaan Arus 1 Ohm ke Sistem Gnd. Ketika arus mengalir melalui beban eksternal, ada juga penurunan tegangan dalam pengertian resistor ini. Tegangan ini diperkuat melalui OP07 Precision Operation Amplifier dan diumpankan ke salah satu pin ADC.

Terakhir, untuk pengisian baterai, 5 volt dari USB dihubungkan secara seri dengan dioda 4007 dan resistor pembatas arus 5 ohm ke Baterai Li-Po. Ini adalah metode pengisian daya mentah, bukan yang terbaik untuk pengisian daya Li-Po.

Operasi Musim Panas: Potensiometer Digital MCP4131 menciptakan tegangan langkah dengan kisaran 0-5 Volt dalam langkah sekitar 40mV (7-bit 10K Digipot memiliki 129 langkah 5V/128 =0,40 mV), yang kemudian 2,5 kali diperkuat oleh LM358 yang memberikan 0-12,5 volt kontrol rentang tegangan dengan langkah 0,1 volt. Sinyal tegangan langkah yang diperkuat ini diumpankan ke Pin Penyesuaian LM317. LM317 menghasilkan tegangan keluaran V_Step+1,25 Volt yang disuplai ke beban eksternal. Pengembalian/pembumian beban eksternal dihubungkan ke pembumian internal melalui resistor Sense Arus 1 Ohm. Misalkan:x Arus mA mengalir ke beban eksternal, itu akan membuat x mV drop (Hukum Ohm V=I*R) pada Resistor Arus 1 Ohm. Sinyal tegangan kecil ini diumpankan ke Low Offset (10uV) OpAmp OP07 yang dikonfigurasi dengan penguatan 2.5X, yang akan menghasilkan 2.5x Keluaran mV. ADC Arduino dikonfigurasi dengan referensi internal 1,1 Volt sehingga tegangan dari 0 -1100 mV dapat dirasakan pada langkah sekitar 1mV (1100/1023). Output OP07 terhubung ke Arduino ADC untuk penginderaan arus. Inilah sebabnya mengapa batas saat ini adalah 400mA. Itu dapat ditingkatkan/dikurangi dengan mengubah penguatan OP07. Demikian pula rentang tegangan output dapat diubah dengan mengubah tegangan boost &gain LM358. Tegangan lain diukur dengan tegangan jaringan pembagi tegangan resistif agar sesuai dengan Rentang ADC. Relai gerendel memiliki 2 kumparan. Dengan menerapkan daya sesaat ke salah satu koil, kontak relai dapat dialihkan. Setelah diaktifkan, koil tetap di sana, sehingga koil segera dimatikan.

Membangun Proyek

Pertama kita mulai dengan kotak soket sakelar tunggal, dan membuat potongan dan penyelarasan yang diperlukan untuk menempatkan baterai, port pengisian USB, sakelar daya, dll.

Selanjutnya, heat sink dibuat dengan pita tembaga dan koin untuk modul penguat DC-DC.

Modul boost ditempatkan di dalam kotak soket:

Dengan menggunakan bagian-bagian di atas, dibuat 3 modul berikut:

  • Arduino + I/O + Modul Kontrol
  • Tegangan Langkah dan Modul Regulator yang Dapat Disesuaikan
  • Modul Penginderaan Saat Ini

Akhirnya koneksi jaring laba-laba di antara semua papan terhubung dan disolder.

Setelah menggunakan lem panas sebagai filler, akhirnya kita punya:

Mengembangkan Firmware &Prosedur Operasi

Firmware (Arduino Sketch) sekarang adalah 1.0.2 Beta. Tidak semua fitur tersedia saat ini. Tetapi fitur terpenting seperti pengontrol tegangan, relai penghubung/pemutusan, melihat informasi diaktifkan. Dalam pengaturan batal() ada beberapa fungsi inisialisasi untuk menghangatkan pin Arduino yang terkait dengan perangkat keras eksternal yang berbeda.

MASUKKAN :Terdapat 2 tombol input berbasis interupsi untuk menaikkan/menurunkan tegangan output, menu akses (tidak tersedia pada versi ini). INT0 &INT1 pada Arduino Pin 2 dan 3 dikodekan untuk FALLING EDGE INTERRUPT. Anda akan melihat 2 kapasitor secara paralel dengan sakelar mekanis untuk menghilangkan pemantulan. Kode ditulis untuk memicu interupsi saat pengguna menekan sakelar ini untuk menghidupkan/mematikan output melalui relai atau menaikkan/menurunkan voltase (Beta).

KELUARAN :1306 OLED menunjukkan informasi keluaran yang memperoleh data dari ADC, pengatur waktu internal (untuk waktu aktif perangkat) dan variabel tanda untuk memberi tahu pengguna tentang status pengaktifan/penonaktifan keluaran. Berdasarkan perpustakaan U8G, OLED mencetak info sebagai teks dan numerik. Saya memiliki rencana untuk menggunakan representasi grafis (tipe Analog).

5 pin digital SSD1306 (OLED dari Waveshare) clk,din,cs,d/c,res terhubung ke pin Arduino 10, 9, 11, 13, 12 dan diprogram sesuai dengan itu. Di loop utama update_display() fungsi dipanggil setiap kali untuk memperbarui info di OLED.

Timer Internal 1 dari Atmega328P di dikonfigurasi untuk memicu secara berkala setiap 1 detik untuk melacak waktu.

KONTROL: Potensiometer Digital MCP 4131 adalah pengontrol dengan increment_digipot() & decrement_digipot() fungsi di mana data dipindahkan dengan clocking dan penundaan yang tepat menggunakan Pin 6, 7, 8 sebagai Pin CS, Clk, Data. Ini seperti SPI lunak yang lambat. Karena saya telah menggunakan pin Hardware SPI di tempat lain, ini adalah satu-satunya solusi saat itu.

Dua pin digital 4 &5 digunakan untuk mengontrol relai pengunci. Pulsa tinggi pendek diumpankan ke transistor penggerak relai untuk memberi energi pada 2 kumparan untuk membalik relai. Itu terjadi baik secara otomatis (selama kelebihan beban/korsleting) atau secara manual oleh pengguna .

ADC: calc_VI() fungsi di loop utama melakukan analogRead untuk mendapatkan informasi Tegangan dan Arus rata-rata 20 kali dan memperbarui variabel untuk informasi baru yang kemudian dicetak di layar

Sketsa ditulis dalam beberapa tab untuk mengatur kode untuk berbagai fungsi yang terkait dengan operasi yang berbeda. Ada ADC, Digipot, Display_Fn , Interupsi, Relay dan Timer tab mengatur semua fungsi yang ditentukan pengguna. Saya akan mencoba menambahkan lebih banyak komentar yang menjelaskan semua fungsi, tetapi Anda tidak akan kesulitan memahaminya karena fungsi tersebut didasarkan pada beberapa fungsi Arduino yang melakukan tugas tertentu.

Batasan

Ada beberapa batasan serius pada perangkat ini:

  • Tegangan tidak boleh di bawah 2,0 V
  • Keluaran tegangan dinaikkan tidak kontinu
  • Pengukuran arus menghasilkan perpindahan tanah untuk arus tinggi
  • Pengukuran ADC memiliki resolusi rendah
  • Efisiensi adalah yang terburuk di kelasnya pada pembebanan arus tinggi tegangan rendah
  • Pengisian daya Li-Po tidak standar, sedikit tidak aman

Referensi

Anda dapat mempelajari lebih lanjut tentang setiap komponen dalam tutorial ini:

  • Potensiometer putar
  • Tutorial tombol

Kesimpulan &

Catu daya yang dapat diprogram ini akan membantu saya membuat proyek/prototipe lebih efisien. Pengukuran tegangan arus listrik tanpa menggunakan multimeter.


Kode

  • Sumber Daya Portabel yang Dapat Diprogram Arduino
  • Kode Ver 1.0.1 Beta
  • Kode Ver 1.0.2 Beta
  • Kode versi 1.0.3
Suatu Daya Portabel yang Dapat Diprogram ArduinoArduino
Ver 1.0.1 dengan Pin out info di komentar
// Pin Reset, D0 &D1 untuk upload Sketch// Pin D9,D10,D11,D12,D13 untuk mengontrol OLED Display// ADC A0 Pin untuk Sensing V_boost// Pin ADC A2 untuk Penginderaan V_batt (LiPo)// Pin ADC A3 untuk Penginderaan I_Output (Beban)// Pin ADC A4 untuk Penginderaan V_USB (Pengisian)// Pin ADC A5 untuk Penginderaan V_Output (Beban)// Pin Penggerak 2 Kumparan Latch Relay D4 &D5#define RC1 4#define RC2 5// Saklar Input Pengguna terhubung ke Pin D2 &D3#define SW1 2#define SW2 3// Pin D6,D7,D8 untuk Pin Kontrol Pot Digital#define CS_PIN 6#define CLK_PIN 7 #define DATA_PIN 8volatile uint8_t Switch1 =1;volatil uint8_t Switch2 =1;float V_Out =0.0;float I_Out =0.0;float V_Bat =0.0;float V_Bst =0.0;float V_Chg =0.0;uint32_t waktu =0;#include "U8glib" h"// Pin Kontrol Tampilan OLED//SSD1306 oled waveshare(clk,din,cs,d/c,res);// THIS FOR WAVESHAREU8GLIB_SSD1306_128X64 u8g(10, 9,11, 13,12); void setup(void) { // layar balik, jika diperlukan analogReference(INTERNAL); u8g.setRot180(); tombol_init(); relai_init(); init_timer1(); digipot_init(); }loop batal(batal) { update_display(); calc_VI(); if (Switch1==0) { rc1_latch(); Sakelar1=1; kenaikan_digipot(); } if (Switch2==0) { rc2_latch(); Sakelar2=1; pengurangan_digipot(); } penundaan(100); }
Kode Ver 1.0.1 BetaC/C++
Tidak ada pratinjau (hanya unduhan).
Kode Ver 1.0.2 BetaC/C++
Perbaikan Bug untuk Penjajaran Teks/Kotak
Perbaikan Bug untuk Perjalanan Kelebihan Beban

Beberapa bug akan diperbaiki pada rilis berikutnya
Tanpa pratinjau (hanya unduhan).
Kode ver 1.0.3C/C++
Relai keluaran perbaikan bug dinonaktifkan selama penyalaan
Perbaikan bug otomatis menyetel tegangan output 5,00 v setelah dinyalakan
Tidak ada pratinjau (hanya unduhan).

Skema

Digambar di Papan Tulis! https://circuits.io/circuits/4762970-arduino-based-programmable-power-supply

Proses manufaktur

  1. Game Arduino Pong - Tampilan OLED
  2. Kontrol Penerima Koin dengan Arduino
  3. Pusat Kontrol Arduino
  4. Suhu Arduino. Monitor Dan Jam Waktu Nyata Dengan Tampilan 3.2
  5. Arduino dengan Bluetooth untuk Mengontrol LED!
  6. Arduino Power
  7. Bermain Dengan Tampilan Berikutnya
  8. Voltmeter DIY dengan Arduino dan Tampilan Nokia 5110
  9. Platform Pelatihan Arduino
  10. Buat Aplikasi Fridgeye dengan Tampilan Berikutnya