Di bagian artikel sebelumnya, kami memeriksa tahap memulai desain sistem. Sekarang saya ingin memberi tahu Anda jenis perangkat apa yang keluar pada akhirnya.
Bagian 1
Bagian 2
Dalam pembahasan bagian pertama, masalah pengukuran tegangan dan arus diangkat. Jadi saya memutuskan untuk membahasnya lebih detail. Seperti yang saya tulis sebelumnya, sensor tegangan dan arus di rangkaian kita adalah transformator. Miniatur transik BV 201 0145 digunakan untuk mengukur tegangan, dan untuk sensor arus AC-1020:
Tegangan dilepaskan darinya, yang kemudian didigitalkan oleh ADC yang terpasang di mikrokontroler. Bagian analog ditunjukkan di bawah ini:
Sensor arus dibebani melintasi resistor R3. Dioda Zener VD3 melindungi dari lonjakan tegangan mendadak yang disebabkan oleh lonjakan arus pendek. Resistor R2, R4 mengatur "titik nol" di sekitar 1.8V. Hal yang sama dilakukan untuk trafo tegangan. Hanya ada pembagi pada resistor R8 dan R10, karena transformator dalam kasus kami menghasilkan tegangan pengenal 12 V.
Kami mendigitalkan pada frekuensi 1000 Hz selama 200 ms. Berdasarkan nilai yang diperoleh, kami menghitung RMS. Kami melakukan penghitungan cepat dari nilai kuadrat tepat di interupsi. Setelah 200 sampel terkumpul di loop program utama, penghitungan akhir dilakukan dengan menggunakan bilangan floating point.
Mengapa Anda perlu mengukur RMS dan cara terbaik untuk melakukannya dijelaskan dengan baik di sini di artikel ini .
Saya telah menulis lebih dari sekali bahwa ketika mengembangkan perangkat kami, kami selalu berusaha menggunakan komponen elektronik yang paling umum secara maksimal, agar, di satu sisi, untuk mengurangi biaya, dan di sisi lain, tidak mengalami masalah dengan pasokannya selama produksi seri. Pada desain ini, semua resistor yang digunakan memiliki toleransi 5%. Secara alami, karena kesalahan seperti itu, produk setelah produksi mengalami kesalahan besar saat mengukur tegangan dan arus. Kesalahan ini telah dihilangkan di meja kalibrasi otomatis. "Stand", tentu saja, terdengar agak nyaring, tetapi berfungsi sebagaimana mestinya. Dudukan terdiri dari komponen berikut:
- Set tiga lampu halogen 500 W.
- Sensor arus dijelaskan di atas
- Meteran listrik Energomera CE102M
- Konverter USB-RS-485
- Pemutus arus
Kami menggunakan meteran sebagai meteran teladan untuk tegangan listrik dan arus beban. Model CE102M sangat nyaman karena, pertama, terhubung hanya dengan dua kabel ke konverter USB-RS-485 (ada konverter daya sendiri di dalam meteran), dan, kedua, tidak perlu memasukkan nomor seri untuk membaca data. Sepertinya sepele, tetapi mereka menambah kenyamanan dalam menggunakan konter.
Protokol pertukaran dijelaskan dengan baik dalam manual pabrikan. Jadi tidak ada kesulitan dengan implementasi perangkat lunak.
Ngomong-ngomong, Anda bisa menulis artikel kecil terpisah di penghitung. Pada suatu waktu, saya bekerja sama dengan mereka, sebagai hasilnya, beberapa perangkat kami mendukung empat model populer: Incotex-SK "Mercury 206", Energomer "CE102", Energomer "CE102M" dan IEK "STAR 104/1".
Tampilan umum dudukan ternyata sebagai berikut:
Untuk otomatisasi, program sederhana dikembangkan yang membaca data dari meteran, mengontrol relai bawaan pengontrol dan secara otomatis memilih koefisien untuk pengukur arus dan voltase:
Kami biasanya menggunakan kode batang untuk nomor seri perangkat kami. Sangat mudah untuk memasukkannya menggunakan pemindai kode batang:
Namun dalam hal ini, perangkat dipesan, dan pelanggan diminta untuk mengeksekusi serial hanya dalam bentuk angka besar di panel depan.
Program kalibrasi menyimpan semua data di sistem internal kami. Ini mencatat siapa, kapan yang diperiksa dan daftar parameter yang sesuai. Yang terpenting adalah nomor seri dan alamat MAC.
Omong-omong, tentang alamat MAC. Kami membelinya sebagai chip 24AA025E48-I / SN dari Microchip. Jika dibeli dalam jumlah besar, harganya murah dan sangat mudah digunakan. Alamat MAC dibaca melalui antarmuka I2C.
Sekarang untuk koneksi dengan server. Pada awal pengembangan, kami sudah memiliki fungsi utama. Ini adalah layanan web sederhana yang ditulis dalam ASP.net dan program server terpisah untuk berkomunikasi dengan perangkat keras. Setiap pengontrol sekali dalam satu menit mengirimkan paket informasi melalui protokol UDP. Perangkat lunak server mem-parsingnya, menyimpan data dalam database (dengan "decimation" hingga satu jam sekali) dan sebagai tambahan mengingat alamat IP eksternal dan port dari mana paket itu berasal. Ini diperlukan untuk mengontrol pengontrol dari server.
Karena, pada kenyataannya, 100% perangkat berada di belakang NAT, perlu mempertimbangkan beberapa keanehan. Yang utama adalah bahwa beberapa NAT memiliki sedikit waktu tunggu untuk mengalokasikan port eksternal ke klien (kurang dari satu menit). Persentase tersebut, menurut statistik kami, tidak terlalu besar, tetapi hal ini mengarah pada kebutuhan untuk mengurangi interval pengiriman data pemantauan dari pengontrol ke server untuk "memelihara" port khusus.
Saya akan langsung menulis mengapa kami menggunakan koneksi UDP dan bukan TCP, meskipun perangkat kami, tentu saja, memiliki implementasi kedua protokol tersebut. Pilihan UDP hanya didasarkan pada kemudahan penggunaan dan biaya komputasi yang rendah baik di sisi pengontrol maupun server. Ya, ini tidak menjamin pengiriman paket data, tetapi Anda perlu memahami bahwa ini mudah diimplementasikan oleh protokol lapisan yang lebih tinggi yang berjalan di atas UDP. Selain itu, saat mentransmisikan data monitoring, kehilangan beberapa paket per hari sama sekali tidak signifikan, apalagi mengingat saat menyimpan ke database, kita masih "menipis" dan menyimpan data hanya sekali dalam satu jam. Tetapi ketika pengontrol dikendalikan dari jarak jauh, misalnya, ketika relai dihidupkan / dimatikan dalam mode manual, sistem "permintaan-respons" berfungsi dan beberapa upaya untuk mengirim perintah dilakukan.
Selain itu, melalui server, kami telah menerapkan pembaruan jarak jauh "firmware" dari pengontrol. Ia juga bekerja melalui UDP. Benar, pembaruan bekerja dalam mode semi-otomatis. Semua sama, tidak baik untuk menjalankannya di mesin pada saat yang sewenang-wenang, karena ini dapat menyebabkan masalah pada pekerjaan pengguna akhir. Bayangkan betapa terkejutnya mereka jika di siang hari bolong, relai Ethernet memutuskan beberapa beban dan memulai ulang :-)
Sebagai kesimpulan, saya ingin mengatakan bahwa selama dua tahun terakhir kami telah memproduksi hampir seribu perangkat semacam itu. Semuanya online. Sekitar dua ribu pengontrol lain juga terus berkomunikasi dengan server kami. Secara umum, semuanya bekerja dengan cukup mantap. Meskipun, tentu saja, kami terus mengembangkan fungsinya. Misalnya, kami baru saja merilis mafia. aplikasi untuk remote control perangkat kami melalui Internet. Tapi lain kali menulis tentang dia ...