Isi kandungan:

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

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

Video: Penjana / Penguji 4-20ma Menggunakan Arduino: 8 Langkah
Video: GENERADOR AR del año 1940 Dynamotor Generator 2024, Jun
Anonim
Penjana / Penguji 4-20ma Menggunakan Arduino
Penjana / Penguji 4-20ma Menggunakan Arduino

Penjana 4-20mA tersedia di ebay, tetapi saya suka satu bahagian DIY dan menggunakan bahagian yang saya ada.

Saya ingin menguji input analog PLC kami untuk mengesahkan bacaan scada kami dan untuk menguji output instrumen 4-20mA. Terdapat banyak penukar arus ke voltan dan penukar voltan ke arus untuk arduino di ebay, mereka memerlukan penentukuran. Saya boleh menggunakannya untuk menentukur mana-mana penukar yang terdapat di ebay dan seumpamanya.

Saya memutuskan bahawa saya akan membuat generator dan penguji. Pada masa ini, ia masih berfungsi dan masih menjadi prototaip.

Saya mempunyai sistem bunyi 2.1 lama yang tidak digunakan (pembesar suara kecil). Oleh itu, saya menggunakan salah satu kotak pembesar suara sebagai penutup. Saya juga mempunyai penguat yang mati kerana kilat, saya mengeluarkan terminal pembesar suara dari penguat itu untuk menyambung angin. Saya berhasrat untuk membuat PCB di masa depan dan kandang yang lebih baik.

Bekalan:

Senarai Bahagian.

LCD // 20x4 (sesuaikan kod jika lebih kecil)

LM7808 // pengatur 8volt

LED // Apa-apa jenis atau saiz

Perintang untuk LED // Sesuai untuk jenis LED dan 8volt

Perintang 100 ohm + perintang 47 ohm dalam siri // Akan digunakan sebagai perintang shunt

Perintang 10K // Arduino analog dalam perlindungan daripada voltan tinggi

Perintang 22K // Untuk menghentikan A0 daripada terapung

Trimpot 100 ohm + 47 ohm perintang dalam siri // PT100 simulator

Kapasitor 35 volt // Saya menggunakan 470uF, hanya untuk memastikan turun naik voltan bekalan

RTD (transduser PT100) // Span tidak penting (julat)

DIODE (untuk perlindungan kekutuban)

INA219

Arduino

Langkah 1:

Imej
Imej

Dengan mengikuti skema, anda harus memulakan di mana untuk menambah bahagian-bahagian dan memasangkannya.

LM7808 membenarkan maksimum input 25volts yang baik untuk sistem PLC, mereka biasanya menggunakan bekalan kuasa 24volt. Tambahkan heatsink ke pengatur dan jangan gunakannya untuk jangka masa panjang. Penurunan 16volt menyebabkan pengatur menghasilkan banyak haba.

Bekalan input memberi makan pengatur dan menyambung ke INA219 VIN, dalam konfigurasi ini INA219 juga dapat mengukur voltan bekalan yang betul tolak penurunan voltan dari dioda. Anda harus mengukur penurunan voltan diod anda dan menambahkannya ke kod sehingga anda mendapat bacaan voltan bekalan yang betul.

Dari INA219 VOUT ke RTD + menggerakkan RTD. RTD- ke tanah melengkapkan litar.

Untuk menguji kad analog PLC, anda akan menghubungkan RTD- ke input pada kad analog dan tanah dari kad ke arduino ground. (Pastikan untuk memutuskan sambungan sebarang instrumen yang terpasang pada saluran yang sedang diuji).

R5 dan LED1, menunjukkan sistem dihidupkan.

Pengatur masuk ke arduino VIN (arduino telah membina pengatur hingga 5volts).

Pin Arduino 5V menuju ke INA219 untuk menghidupkan cip on-board. INA219 GND ke arduino ground.

Trim pot wiper ke RTD PIN1 dan Trim pot pin 3 ke RTD pin 2 akan meniru sambungan PT100. (Tukar wayar jika memutar pot pemotong mengikut arah jam tidak meningkatkan mA).

Langkah 2: Uji Keluaran Instrumen

Untuk menguji output instrumen, bahagian tambahan diperlukan, seperti perintang shunt. Perintang 0.25W normal akan melakukan kerja dengan baik. Anda boleh meninggalkan perintang shunt dan menambahkan INA219 kedua untuk menguji output instrumen. Saya tinggal satu sahaja, jadi saya gunakan perintang.

Ujian menggunakan shunt hanya dapat dilakukan di sisi negatif peranti. Sekiranya anda menggunakan sisi positif, anda akan membekalkan arduino anda lebih daripada 4 kali voltan yang dibenarkan dan membiarkan asap keluar.

Tambahkan perintang shunt secara bersiri dengan wayar negatif instrumen. Bahagian pintasan yang paling dekat dengan peranti akan menjadi analog positif untuk arduino. Bahagian lain shunt yang paling dekat dengan bekalan kuasa akan menjadi arduino ground melengkapkan litar input analog.

Perintang shunt 150 ohm adalah maksimum mutlak yang harus digunakan semasa menggunakan arduino. Perintang mempunyai penurunan voltan linear ke mA yang mengalir melaluinya. Semakin besar mA semakin besar voltan.

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

Pada arus 4mA # 150ohm * 0.004A = 0.6volt ke arduino.

Sekarang anda mungkin mahu voltan mendekati 5 volt sehingga anda boleh menggunakan rangkaian ADC penuh arduino. (Bukan idea yang baik).

RTD boleh mencapai output 30.2mA (Tambang tidak). 150ohm * 0.03A = 4.8 volt. Itu sedekat yang saya mahu.

Laman web lain menunjukkan penggunaan perintang 250ohm.

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

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

Anda berisiko membakar ADC dan arduino anda.

Untuk menguji alat di luar, bawa bateri 12 volt dengan anda dan sambungkan ke input bekalan. Menggunakan sumber kuasa luaran tidak akan mempengaruhi penyediaan PLC semasa.

Untuk menguji kad input analog di lapangan, bawa bateri 12 volt dengan anda. Putuskan sambungan instrumen + dari litar. Sambungkan ground ke ground instrumen dan RTD- ke wayar instrumen yang terputus.

Langkah 3: Penentukuran

Penentukuran
Penentukuran

Untuk mengkalibrasi bacaan perintang shunt anda, masukkan RTD- ke analog Shunt masuk. Tetapkan periuk potong anda sehingga mA yang dihasilkan adalah 4mA. Sekiranya peranti anda mA tidak sama maka ubah nilai pertama dalam kod pada baris 84. Meningkatkan nilai ini akan menurunkan bacaan mA.

Kemudian tetapkan periuk potong anda untuk menghasilkan 20mA. Sekiranya peranti anda mA tidak sama maka ubah nilai kedua dalam kod pada baris 84.

Oleh itu, 4-20mA anda kini akan menjadi 0,6-3volt (teori). Julat lebih daripada cukup. Dengan menggunakan perpustakaan dari eRCaGuy, pensampelan berlebihan akan memberi anda bacaan yang lebih baik dan stabil.

Semoga anda membaca ini. Ini adalah arahan pertama saya, jadi tolong ambil mudah jika saya melakukan kesalahan di suatu tempat atau meninggalkan sesuatu.

Projek ini mungkin bukan kaedah terbaik untuk menyelesaikannya, tetapi ia berfungsi untuk saya dan seronok melakukannya.

Beberapa idea yang saya ada tambahan …

Tambahkan servo untuk memutar periuk potong di dalam kotak.

Tambahkan butang tekan untuk memutar servo ke kiri atau kanan.

Tambahkan sensor suhu digital ke pemanas badan pengawal selia untuk memberi amaran akan bahaya panas.

Langkah 4: Pengaturcaraan Arduino

#sertakan

// #masuk // Ketidaksesuaian jika anda menggunakan LCD dengan shift shift.

#sertakan

#sertakan

#sertakan

#sertakan

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

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

// LiquidCrystal_SR lcd (3, 4, 2); // Komen jika anda menggunakan LCD dengan shift shift.

// | | | _ Latch Pin

// | / _ Pin Jam

// / _ Data / Dayakan Pin

bait bitsOfResolution = 12; // memerintahkan resolusi berlebihan

angka panjang yang tidak ditandatanganiSampelToAvg = 20; // jumlah sampel DI ATAS PENYELESAIAN YANG DIBERIKAN yang anda mahu ambil dan rata-rata

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

lama tidak ditandatangani sebelumnyaMillis = 0;

float shuntvoltage = 0.0; // Dari INA219

float busvoltage = 0.0; // Dari INA219

float current_mA = 0.0; // Dari INA219

voltan beban apungan = 0.0; // Dari INA219

float arduinovoltage = 0.0; // Pengiraan voltan dari pin A0

A0analogReading panjang yang tidak ditandatangani = 0;

bait analogIn = A0;

apungan ma_mapped = 0.0; // Voltan peta dari A0 hingga 4-20mA

batal persediaan () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_tFrequency semasa;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // Perpustakaan yang diubah suai untuk lebih tepat pada mA

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

lcd.clear ();

lcd.home (); // balik rumah

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

kelewatan (2000);

lcd.clear ();

}

gelung kosong ()

{

arus panjang yang tidak ditandatanganiMillis = millis ();

selang panjang const = 100;

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

Baca peranti I2C secara berkala dan lakukan beberapa pengiraan

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

if (currentMillis - sebelumnyaMillis> = selang) {

sebelumnyaMillis = currentMillis;

Selang ();

}

Cetak_To_LCD (); // Saya mungkin tidak perlu mengemas kini LCD secepat ini dan boleh dipindahkan ke bawah Selang ()

}

batal

Selang () {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

loadvoltage = (busvoltage + (shuntvoltage / 1000)) + 0.71; // +0.71 adalah penurunan voltan diod saya

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0analogReading); // Dikira menjadi mV

ma_mapped = peta (arduinovoltage, 752, 8459, 30, 220) / 10.0; // Peta tidak boleh menggunakan apungan. Tambahkan 0 di belakang nilai yang dipetakan dan bahagi dengan 10 untuk mendapatkan bacaan terapung.

// Pemetaan dari pengiraan voltan memberikan bacaan yang lebih stabil kemudian menggunakan bacaan adc mentah.

if (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // Tanpa beban, INA219 cenderung membaca di bawah -0.01, baiklah.

{

current_mA = 0;

busvoltage = 0;

beban voltan = 0;

shuntvoltage = 0;

}

}

batal

Cetak_To_LCD () {

lcd.setCursor (0, 0);

if (ma_mapped <1,25) {// Tanpa arus ini adalah bacaan mA saya, jadi saya hanya membuangnya.

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

}

lain {

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

}

lcd.setCursor (0, 1);

lcd.print ("Peranti:");

lcd.setCursor (10, 1);

jika (ma_mapped <1,25) {

lcd.print ("tiada peranti");

}

lain {

lcd.print (ma_mapped);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("Jana:");

lcd.setCursor (10, 2);

lcd.print (current_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("Bekalan:");

lcd.setCursor (10, 3);

lcd.print (beban voltan);

lcd.print ("V");

}

Langkah 5: Beberapa Lagi Foto

Beberapa Lagi Foto
Beberapa Lagi Foto

Terminal pembesar suara penguat. LED didorong oleh penjana semasa (RTD). Pendawaian kad analog akan menggantikan LED.

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

Langkah 6: Memasang

Pemasangan Dalam
Pemasangan Dalam

Semua nampak sesuai. Saya menggunakan silikon untuk menyimpan beberapa barang buat sementara waktu. Pot periuk diselaraskan ke kanan atas. Lubang kecil telah dipralilkan. Saya dapat menyesuaikan arus dari bahagian atas kotak.

Langkah 7: Hanya Foto

Sekadar Foto
Sekadar Foto
Sekadar Foto
Sekadar Foto
Sekadar Foto
Sekadar Foto
Sekadar Foto
Sekadar Foto

Langkah 8: Perkataan Akhir

Saya telah menguji output peranti ini dengan Allan Bradley PLC. Hasilnya sangat baik. Saya mendapat jarak penuh. Saya juga telah menguji peranti ini dengan sensor tekanan 4-20mA yang mempunyai paparan LCD terpasang. Hasilnya sekali lagi sangat baik. Pembacaan saya dimulakan oleh beberapa perpuluhan.

Saya menulis kod arduino saya dalam tab. Dalam PLC mereka dipanggil sub rutin. Memudahkan penyahpepijatan untuk saya.

Dilampirkan adalah fail teks tab tersebut.

Disyorkan: