Daftar Isi:

Generator / Penguji 4-20ma Menggunakan Arduino: 8 Langkah
Generator / Penguji 4-20ma Menggunakan Arduino: 8 Langkah

Video: Generator / Penguji 4-20ma Menggunakan Arduino: 8 Langkah

Video: Generator / Penguji 4-20ma Menggunakan Arduino: 8 Langkah
Video: Testing of 4-20mA to Voltage Converter Module and 4-20mA Current Generator Module @roboticsdna2495 2024, November
Anonim
Generator/Penguji 4-20ma Menggunakan Arduino
Generator/Penguji 4-20ma Menggunakan Arduino

Generator 4-20mA tersedia di ebay, tetapi saya menyukai bagian DIY dan menggunakan bagian yang saya miliki.

Saya ingin menguji input analog PLC kami untuk memverifikasi pembacaan scada kami dan untuk menguji output instrumen 4-20mA. Ada banyak konverter arus ke tegangan dan konverter tegangan ke arus untuk arduino di ebay, mereka membutuhkan kalibrasi. Saya dapat menggunakan ini untuk mengkalibrasi konverter yang ditemukan di ebay dan sejenisnya.

Saya memutuskan bahwa saya akan membuat generator dan penguji DIY. Saat ini masih dalam proses dan prototipe.

Saya memiliki sistem suara 2.1 lama yang tidak digunakan (speaker kecil). Jadi saya menggunakan salah satu kotak speaker sebagai penutup. Saya juga memiliki amplifier yang mati karena petir, saya melepas terminal speaker dari amplifier itu untuk membuat koneksi menjadi mudah. Saya berniat untuk membuat PCB di masa depan dan kandang yang lebih baik.

Perlengkapan:

Daftar Bagian.

LCD // 20x4 (adaptasi kode jika Anda lebih kecil)

LM7808 // regulator 8volt

LED // Semua jenis atau ukuran

Resistor untuk LED // Sesuai untuk tipe LED dan 8volt

Resistor 100 ohm + resistor 47 ohm secara seri // Akan digunakan sebagai resistor shunt

10K resistor // Arduino analog dalam perlindungan terhadap tegangan tinggi

Resistor 22K // Untuk menghentikan A0 dari mengambang

Trimpot 100 ohm + 47 ohm resistor secara seri // simulator PT100

Kapasitor 35 volt // Saya menggunakan 470uF, hanya untuk menjaga fluktuasi tegangan suplai turun

RTD (PT100 transduser) // Rentang tidak masalah (rentang)

DIODE (untuk perlindungan polaritas)

INA219

Arduino

Langkah 1:

Gambar
Gambar

Mengikuti skema akan membantu Anda memulai di mana menambahkan bagian-bagian dan menyambungkannya.

LM7808 memungkinkan input maksimum 25volt yang baik untuk sistem PLC, mereka umumnya menggunakan catu daya 24volt. Tambahkan heatsink ke regulator dan jangan menggunakannya untuk waktu yang lama. Menjatuhkan 16 volt menyebabkan regulator menghasilkan banyak panas.

Pasokan input memberi makan regulator dan terhubung ke INA219 VIN, dalam konfigurasi ini INA219 juga akan dapat mengukur tegangan suplai yang benar dikurangi penurunan tegangan dari dioda. Anda harus mengukur penurunan tegangan dioda dan menambahkannya ke kode sehingga Anda mendapatkan pembacaan tegangan suplai yang benar.

Dari INA219 VOUT ke RTD+ menyalakan RTD. RTD- ke ground melengkapi sirkuit.

Untuk menguji kartu analog PLC, Anda akan menghubungkan RTD- ke input pada kartu analog dan ground dari kartu ke ground arduino. (Pastikan untuk melepaskan instrumen apa pun yang terpasang pada saluran yang sedang diuji).

R5 dan LED1, menunjukkan sistem dinyalakan.

Regulator masuk ke arduino VIN (arduino telah membangun regulator ke 5 volt).

Pin Arduino 5V masuk ke INA219 untuk memberi daya pada chip on-board. INA219 GND ke tanah arduino.

Trim pot wiper ke RTD PIN1 dan Trim pot pin 3 ke RTD pin 2 akan mensimulasikan koneksi PT100. (Tukar kabel jika memutar pot trim searah jarum jam tidak meningkatkan mA).

Langkah 2: Uji Output Instrumen

Untuk menguji keluaran instrumen diperlukan komponen tambahan, seperti resistor shunt. Resistor 0,25W normal akan berfungsi dengan baik. Anda dapat meninggalkan resistor shunt dan menambahkan INA219 kedua untuk menguji keluaran instrumen. Saya hanya punya satu yang tersisa jadi saya menggunakan resistor sebagai gantinya.

Pengujian menggunakan shunt hanya dapat dilakukan pada sisi negatif perangkat. Jika Anda menggunakan sisi positif, Anda akan memasok Arduino Anda dengan lebih dari 4 kali tegangan yang diizinkan dan mengeluarkan asap.

Tambahkan resistor shunt secara seri dengan kabel negatif instrumen. Sisi shunt yang paling dekat dengan perangkat akan menjadi analog positif untuk arduino. Sisi lain dari shunt yang paling dekat dengan catu daya akan menjadi ground arduino yang melengkapi rangkaian input analog.

Resistor shunt 150 ohm adalah nilai maksimum mutlak yang harus digunakan saat menggunakan arduino. Resistor memiliki penurunan tegangan linier dengan mA yang mengalir melaluinya. Semakin besar mA semakin besar tegangannya.

Pada arus 20mA #150ohm*0.02A = 3volt ke arduino.

Pada arus 4mA #150ohm*0,004A = 0,6volt ke arduino.

Sekarang Anda mungkin ingin tegangan menjadi lebih dekat ke 5 volt sehingga Anda dapat menggunakan rentang ADC penuh dari arduino. (Bukan ide yang bagus).

RTD dapat mencapai output 30.2mA (Milik saya). 150ohm * 0,03A = 4,8 volt. Itu sedekat yang saya inginkan.

Situs web lain diindikasikan untuk menggunakan resistor 250ohm.

Pada arus 20mA #250ohm*0.02A = 5volt ke arduino.

Pada arus 30mA #250ohm*0.03A = 7.5volt ke arduino.

Anda berisiko membakar ADC dan arduino Anda.

Untuk menguji instrumen di lapangan, bawalah baterai 12 volt dan hubungkan ke input suplai. Menggunakan sumber daya eksternal tidak akan mempengaruhi pengaturan PLC saat ini.

Untuk menguji kartu input analog di lapangan, bawalah baterai 12volt. Putuskan sambungan instrumen + dari sirkuit. Hubungkan arde ke arde instrumen dan RTD- ke kabel instrumen yang terputus.

Langkah 3: Kalibrasi

Kalibrasi
Kalibrasi

Untuk mengkalibrasi pembacaan resistor shunt Anda, sambungkan RTD- ke Analog shunt. Atur pot trim Anda sehingga mA yang dihasilkan adalah 4mA. Jika mA perangkat Anda tidak sama maka ubah nilai pertama dalam kode pada baris 84. Meningkatkan nilai ini akan menurunkan pembacaan mA.

Kemudian atur pot trim Anda untuk menghasilkan 20mA. Jika mA perangkat Anda tidak sama, maka ubah nilai kedua dalam kode di baris 84.

Jadi 4-20mA Anda sekarang akan menjadi 0,6-3volt (teoretis). Jangkauan lebih dari cukup. Menggunakan perpustakaan dari eRCaGuy, oversampling akan memberi Anda pembacaan yang lebih baik dan stabil.

Semoga Anda membaca ini. Ini adalah instruksi pertama saya, jadi harap tenang jika saya membuat kesalahan di suatu tempat atau meninggalkan sesuatu.

Proyek ini mungkin bukan cara terbaik untuk melakukannya, tetapi ini berhasil bagi saya dan menyenangkan melakukannya.

Beberapa ide saya punya tambahan…

Tambahkan servo untuk memutar pot trim di dalam kotak.

Tambahkan tombol tekan untuk memutar servo ke kiri atau ke kanan.

Tambahkan sensor suhu digital ke heatsink regulator untuk memperingatkan panas yang berbahaya.

Langkah 4: Pemrograman Arduino

#termasuk

// #include //Batalkan komentar jika Anda menggunakan LCD dengan register geser.

#termasuk

#termasuk

#termasuk

#termasuk

//A4 = (SDA)

//A5 = (SCL)

Adafruit_INA219 ina219;

LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

// LiquidCrystal_SR lcd(3, 4, 2); //Batalkan komentar jika Anda menggunakan LCD dengan register geser.

// | | |_ Pin Kait

// | \_ Pin Jam

// \_ Data/Aktifkan Pin

byte bitsOfResolution = 12; //memerintahkan resolusi oversampled

unsigned long numSamplesToAvg = 20; //jumlah sampel PADA RESOLUSI OVERSAMPLED yang ingin Anda ambil dan rata-rata

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

unsigned long beforeMillis = 0;

tegangan shunt mengambang = 0,0; //Dari INA219

tegangan bus mengambang = 0,0; //Dari INA219

float current_mA = 0,0; //Dari INA219

tegangan beban mengambang = 0,0; //Dari INA219

tegangan arduino mengambang = 0,0; // Perhitungan tegangan dari pin A0

A0analogReading panjang yang tidak ditandatangani = 0;

byte analogIn = A0;

float ma_mapped = 0,0; //Peta tegangan dari A0 ke 4-20mA

batalkan pengaturan() {

adc.setADCSpeed(ADCSpeed);

adc.setBitsOfResolution(bitsOfResolution);

adc.setNumSamplesToAvg(numSamplesToAvg);

uint32_t frekuensi saat ini;

ina219.begin();

ina219.setCalibration_32V_30mA(); //Perpustakaan yang dimodifikasi untuk lebih presisi pada mA

lcd.begin(20, 4); // inisialisasi LCD

lcd.clear();

lcd.rumah(); // pulang ke rumah

lcd.print("*********************");

penundaan(2000);

lcd.clear();

}

lingkaran kosong()

{

unsigned long currentMillis = milis();

interval panjang const = 100;

//&&&&&&&&&&&&&&&&&

Baca perangkat I2C secara berkala dan lakukan beberapa perhitungan

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

if (Millis saat ini - Mili sebelumnya >= interval) {

sebelumnyaMillis = saat iniMillis;

Selang();

}

Cetak_Ke_LCD(); // Saya mungkin tidak perlu memperbarui LCD secepat ini dan dapat dipindahkan ke bawah Interval()

}

ruang kosong

Interval() {

tegangan shunt = ina219.getShuntVoltage_mV();

busvoltage = ina219.getBusVoltage_V();

current_mA = ina219.getCurrent_mA();

tegangan beban = (tegangan bus + (tegangan shunt / 1000)) + 0,71; // +0,71 adalah penurunan tegangan dioda saya

A0analogReading = adc.newAnalogRead(analogIn);

arduinovoltage = (5.0 * A0analogReading); //Dihitung ke mV

ma_mapped = peta(arduinovoltage, 752, 8459, 30, 220) / 10.0; //Peta tidak bisa menggunakan float. Tambahkan 0 di belakang nilai yang dipetakan dan bagi dengan 10 untuk mendapatkan pembacaan float.

//Pemetaan dari perhitungan tegangan memberikan pembacaan yang lebih stabil daripada menggunakan pembacaan adc mentah.

if (tegangan shunt >= -0,10 && tegangan shunt <= -0,01) //Tanpa beban, INA219 cenderung membaca di bawah -0,01, baik milik saya.

{

arus_mA = 0;

tegangan bus = 0;

tegangan beban = 0;

tegangan shunt = 0;

}

}

ruang kosong

Cetak_Ke_LCD() {

lcd.setCursor(0, 0);

if (ma_mapped < 1.25) { //Tanpa arus, ini adalah pembacaan mA saya, jadi saya buang saja.

lcd.print("* Generator 4-20mA *");

}

lain {

lcd.print("** Penguji Analog **");

}

lcd.setCursor(0, 1);

lcd.print("Perangkat:");

lcd.setCursor(10, 1);

if (ma_mapped < 1.25) {

lcd.print("tidak ada perangkat");

}

lain {

lcd.print(ma_mapped);

}

lcd.print("mA");

lcd.setCursor(0, 2);

lcd.print("Hasilkan:");

lcd.setCursor(10, 2);

lcd.print(current_mA);

lcd.print("mA");

lcd.setCursor(0, 3);

lcd.print("Persediaan:");

lcd.setCursor(10, 3);

lcd.print(tegangan beban);

lcd.print("V");

}

Langkah 5: Beberapa Foto Lainnya

Beberapa Foto Lainnya
Beberapa Foto Lainnya

Terminal pengeras suara. LED digerakkan oleh generator arus (RTD). Kabel kartu analog akan menggantikan LED.

Terminal di paling kiri adalah untuk input suplai. Terminal di sebelah kanan adalah untuk input instrumen.

Langkah 6: Memasang

Pas
Pas

Semuanya tampak cocok. Saya menggunakan silikon untuk sementara menahan beberapa barang. Pot trim adalah silikon ke kanan atas. Sebuah lubang kecil telah dibor sebelumnya. Saya dapat menyesuaikan arus dari atas kotak.

Langkah 7: Hanya Foto

Hanya Foto
Hanya Foto
Hanya Foto
Hanya Foto
Hanya Foto
Hanya Foto
Hanya Foto
Hanya Foto

Langkah 8: Kata-kata Terakhir

Saya telah menguji output perangkat ini dengan PLC Allan Bradley. Hasilnya sangat bagus. Saya mendapatkan jangkauan penuh. Saya juga telah menguji perangkat ini dengan sensor tekanan 4-20mA yang memiliki layar LCD bawaan. Sekali lagi hasilnya sangat bagus. Pembacaan saya meleset beberapa desimal.

Saya menulis kode arduino saya di tab. Dalam PLC mereka disebut sub rutin. Membuat debugging lebih mudah untuk saya.

Terlampir adalah file teks dari tab tersebut.

Direkomendasikan: