در این پروژه، از pHسنج آردوینو ، برای اندازهگیری اسیدیته بودن یک مایع سود خواهیم برد و به همین منظور در این عملیات، از مقیاس pH استفاده میشود. این اندازهگیریها، از 1 الی 14 متغیر میباشد که در آن 1 اسیدیترین مایع را نشان میدهد و 14 قلیاییتریت مایع را نشان میدهد.
7 pH برای مواد خنثی است که نه اسیدی هستند و نه باز. اکنون، pH نقش بسیار مهمی در زندگی ما دارد و از آن در کاربردهای مختلف استفاده میشود. به عنوان مثال، میتوان از آن در استخر برای بررسی کیفیت آب استفاده کرد. به طور مشابه، اندازهگیری pH در طیف گستردهای از برنامهها مانند کشاورزی، تصفیه فاضلاب، صنایع، نظارت بر محیط زیست و غیره مورد استفاده قرار میگیرد.
در پروژه pHسنج آردوینو قصد داریم یک pHسنج آردوینو بسازیم و یاد بگیریم که چگونه pH یک محلول مایع را با استفاده از حسگر pH و آردوینو اندازهگیری کنیم. یک LCD 16×2 برای نشاندادن مقدار pH در صفحه نمایش استفاده میشود. همچنین برای تعیین صحت سنسور یاد میگیریم که چگونه سنسور pH را کالیبره کنیم. بیایید شروع کنیم!
فهرست مطالب
ابزار ساخت pHسنج آردوینو
- Arduino Uno
- 16*2 Alphanumeric LCD
- I2C Module for LCD
- Gravity Analog pH sensor
- Connecting wires
- Breadboard
مقدار pH چیست؟
برای pHسنج آردوینو، واحدی که برای اندازهگیری میزان اسیدیته یک ماده استفاده میکنیم، pH نام دارد. اصطلاح H به عنوان ورود منفی غلظت یون هیدروژن تعریف شده است. دامنه pH میتواند از 0 تا 14 باشد. مقدار pH 7 خنثی است، زیرا آب خالص دارای مقدار pH دقیقا 7 است. مقادیر پایینتر از 7 اسیدی هستند و مقادیر بیشتر از 7 قلیایی میباشند.
طرز کار سنسور PH آنالوگ pHسنج آردوینو
سنسور pH آنالوگ برای اندازهگیری مقدار pH محلول و نشاندادن اسیدیته یا قلیایی مواد طراحی شده است. معمولاً در کاربردهای مختلفی مانند کشاورزی، تصفیه فاضلاب، صنایع، نظارت بر محیطزیست و غیره مورد استفاده قرار میگیرد.
این ماژول دارای یک تراشه تنظیمکننده ولتاژ در برد است که از منبع ولتاژ گسترده 3.3-5.5V DC پشتیبانی میکند، که با 5V و 3.3V هر برد کنترل مانند آردوینو سازگار است. سیگنال خروجی توسط jitter فیلتر میشود.
مشخصات فنی pHسنج آردوینو
ماژول تبدیل سیگنال
- Supply Voltage: 3.3~5.5V
- BNC Probe Connector
- High Accuracy: ±0.1@25°C
- Detection Range: 0~14
الکترود PH
- محدوده دمای کار: 60 ~ 60 درجه سانتی گراد
- صفر (خنثی) نقطه: 0.5 7
- کالیبراسیون آسان
- مقاومت داخلی: <250MΩ
صفحه تبدیل سیگنال pH
توضیحات پین در pHسنج آردوینو
V +: ورودی 5 ولت DC
G: پین زمینی
Po: خروجی آنالوگ pH
Do: خروجی 3.3 ولت DC
To: بازده دما
ساخت الکترود pH
ساخت سنسور pH در بالا نشان داده شده است. در pHسنج آردوینو حسگر pH مانند میلهای است که معمولاً از ماده شیشهای ساخته شده و نوک آن به نام “غشای شیشهای” میباشد. این غشاء با یک محلول بافر از pH شناخته شده پر میشود (به طور معمول pH = 7). این طراحی الکترود محیطی را با اتصال ثابت یونهای H+ در داخل غشای شیشهای تضمین میکند.
وقتی پروب درون محلول مورد آزمایش قرار میگیرد، یونهای هیدروژن موجود در محلول آزمایش با سایر یونهای دارای بار مثبت بر روی غشای شیشه شروع به تبادل میکنند، و این یک پتانسیل الکتروشیمیایی را در سراسر غشاء ایجاد میکند که به ماژول تقویتکننده الکترونیکی تغذیه میشود که پتانسیل را بین هر دو الکترود اندازهگیری میکند و آن را به واحدهای pH تبدیل میکند. تفاوت بین این پتانسیلها مقدار pH را بر اساس معادله Nernst تعیین میکند.
معادله هسته ای
معادله Nernst ارتباطی بین پتانسیل سلول یک سلول الکتروشیمیایی، دما، مقدار واکنش و پتانسیل سلولی استاندارد را نشان میدهد. در شرایط غیر استاندارد، از معادله Nernst برای محاسبه پتانسیلهای سلول در یک سلول الکتروشیمیایی استفاده میشود.
از معادله Nernst همچنین میتوان برای محاسبه نیروی کل الکتروموتور (EMF) برای یک سلول الکتروشیمیایی کامل استفاده کرد. این معادله برای محاسبه مقدار PH یک محلول نیز استفاده میشود. پاسخ الکترود شیشهای توسط معادله Nernst اداره میشود به شرح زیر است:
E = E0 - 2.3 (RT/nF) ln Q Where Q= Reaction coefficient E = mV output from the electrode E0 = Zero offset for the electrode R = Ideal gas constant= 8.314 J/mol-K T = Temperature in ºK F = Faraday constant = 95,484.56 C/mol N = Ionic Charge
مدار مدار pHسنج آردوینو
نمودار مدار برای پروژه pHسنج آردوینو در زیر آورده شده است.
اتصال صفحه تبدیل سیگنال pH با آردوینو
به منظور ساخت pHسنج آردوینو ، ارتباط بین برد تبدیل سیگنال Arduino و PH در جدول زیر نشان داده شده است.
برنامه نویسی pHسنج آردوینو
پس از اتصال موفقیتآمیز سختافزاری، اکنون زمان آن رسیده است که برنامه pHسنج آردوینو را برنامهریزی کنید. کد کامل pHسنج آردوینو در قسمت پایین این آموزش آورده شده است. توضیح مرحلهای این پروژه در زیر آورده شده است.
اولین کاری که باید در برنامه انجام شود، شامل کلیه کتابخانههای مورد نیاز است. اینجا در این مورد، کتابخانه “LiquidCrystal_I2C.h” را برای استفاده از رابط I2C از یک نمایشگر LCD و “Wire.h” برای استفاده از قابلیتهای I2C در آردوینو درج کردهایم.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2);
در مرحله بعد، مقدار کالیبراسیون تعریف شده است، که میتواند در صورت نیاز اصلاح شود تا مقدار pH دقیق محلولها بدست آید.
float calibration_value = 21.34;
در داخل ()setup، دستورات LCD برای نمایش پیام خوش آمدید در LCD نوشته شده است.
lcd.init(); lcd.begin(16, 2); lcd.backlight(); lcd.setCursor(0, 0); lcd.print(" Welcome to "); lcd.setCursor(0, 1); lcd.print(" Circuit Digest "); delay(2000); lcd.clear();
در داخل ()loop، 10 مقدار آنالوگ نمونه را بخوانید و آنها را در یک آرایه ذخیره کنید. برای صافکردن مقدار خروجی لازم است.
for(int i=0;i<10;i++) { buffer_arr[i]=analogRead(A0); delay(30); }
سپس مقادیر آنالوگ دریافتی را به ترتیب صعودی مرتب کنید. این امر ضروری است زیرا ما باید در مرحله بعدی میانگین میزان نمونه را محاسبه کنیم.
for(int i=0;i<9;i++) { for(int j=i+1;j<10;j++) { if(buffer_arr[i]>buffer_arr[j]) { temp=buffer_arr[i]; buffer_arr[i]=buffer_arr[j]; buffer_arr[j]=temp; } } }
کالیبراسیون الکترود pH
کالیبراسیون الکترود PH در این پروژه بسیار مهم است. برای این کار، ما باید راهحلی داشته باشیم که ارزش آن برای ما شناخته شده باشد. این را میتوان به عنوان راهحل مرجع برای کالیبراسیون سنسور در نظر گرفت.
فرض کنید، ما یک راهحل داریم که مقدار PH آن 7 (آب مقطر) است. اکنون وقتی الکترود به محلول مرجع اضافه میشود و مقدار PH نمایش داده شده بر روی LCD، 6.5 است. سپس برای کالیبراسیون آن، فقط کافی است 7-6.5 = 0.5 را در متغیر کالیبراسیون “calibration_value” در کد اضافه کنید.
یعنی مقدار 21.34 + 0.5 = 21.84 را بدست آورید. پس از ایجاد این تغییرات، دوباره کد را در آردوینو بارگذاری کرده و با فروبردن الکترود در محلول مرجع، pH را دوباره بررسی کنید. اکنون ال سی دی باید مقدار pH صحیح را نشان دهد یعنی 7 (تغییرات کمی قابل توجه است). به طور مشابه، این متغیر را برای کالیبراسیون سنسور تنظیم کنید. سپس تمام راهحلهای دیگر را بررسی کنید تا خروجی دقیقی داشته باشید.
آزمایش تستر pH آردوینو
ما این pHسنج Arduino را با فرو بردن آن در آب خالص و آب لیمو امتحان کردهایم، نتیجه را در زیر میتوانید مشاهده کنید.
آب خالص
کد کامل در زیر آورده شده است.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); float calibration_value = 21.34; int phval = 0; unsigned long int avgval; int buffer_arr[10],temp; void setup() { Serial.begin(9600); lcd.init(); lcd.begin(16, 2); lcd.backlight(); lcd.setCursor(0, 0); lcd.print(" Welcome to "); lcd.setCursor(0, 1); lcd.print(" Circuit Digest "); delay(2000); lcd.clear(); } void loop() { for(int i=0;i<10;i++) { buffer_arr[i]=analogRead(A0); delay(30); } for(int i=0;i<9;i++) { for(int j=i+1;j<10;j++) { if(buffer_arr[i]>buffer_arr[j]) { temp=buffer_arr[i]; buffer_arr[i]=buffer_arr[j]; buffer_arr[j]=temp; } } } avgval=0; for(int i=2;i<8;i++) avgval+=buffer_arr[i]; float volt=(float)avgval*5.0/1024/6; float ph_act = -5.70 * volt + calibration_value; lcd.setCursor(0, 0); lcd.print("pH Val:"); lcd.setCursor(8, 0); lcd.print(ph_act); delay(1000); }