تا به حال به طعم ترش لیمو یا کف کردن صابون فکر کردهاید؟ دلیل اصلی این ویژگیها، چیزی به نام pH میباشد که نشاندهنده میزان اسیدی یا قلیایی بودن مواد است. pH مانند یک شاخص مهم، نقش کلیدی در تعیین خواص مواد مختلف ایفا میکند. از کشاورزی و صنایع غذایی گرفته تا تصفیه آب و محیط زیست، کنترل دقیق pH برای حفظ کیفیت محصولات و فرآیندهای مختلف ضروری است.
اندازه گیری ph با آردوینو بوسیله سنسور ph آردوینو، یک پروژه جذاب و آموزشی است که به شما امکان میدهد تا دنیای الکترونیک و برنامهنویسی را بهتر بشناسید و یک ابزار کاربردی برای اندازهگیری pH انواع محلولها بسازید.
با ساخت pH متر بوسیله برد آردوینو، نه تنها در هزینهها صرفهجویی میکنید، بلکه درک عمیقتری از مفاهیم اساسی سنجش pH پیدا خواهید کرد. پروژه ساخت pH متر با آردوینو میتواند پایهای برای توسعه پروژههای پیچیدهتر باشد، مثلاً ساخت یک سیستم کنترل خودکار pH برای آکواریوم یا آزمایشگاه. با کمی دانش الکترونیک و برنامهنویسی، شما قادر خواهید بود تا یک ابزار دقیق و شخصیسازی شده برای اندازهگیری pH در خانه، مدرسه یا محل کار خود بسازید.
وسایل موردنیاز برای ساخت pH متر با آردوینو
برای ساخت یک pH متر ساده و کاربردی با استفاده از برد آردوینو، به قطعات زیر نیاز داریم:
- آردوینو UNO مغز متفکر پروژه است. آردوینو سیگنالهای دریافتی از سنسور pH را پردازش کرده و دستورات لازم را برای نمایشگر LCD ارسال میکند.
- نمایشگر LCD 16×2 این نمایشگر، مقادیر pH اندازهگیری شده را بهصورت عددی نمایش میدهد. اندازه 16×2 به این معنی است که نمایشگر دارای 16 کاراکتر در هر 2 سطر است.
- ماژول I2C برای LCD این ماژول برای ارتباط بین برد آردوینو و نمایشگر LCD استفاده میشود. با استفاده از پروتکل I2C، میتوان با تعداد سیمهای کمتری، دادهها را بین دو دستگاه مبادله کرد.
- سنسور pH آنالوگ این سنسور وظیفه اندازهگیری میزان اسیدی یا قلیایی بودن محلول را بر عهده دارد. سنسور pH، مقدار pH را به یک سیگنال الکتریکی تبدیل میکند که توسط آردوینو قابل خواندن است.
- سیمهای رابط برای اتصال فیزیکی بین قطعات مختلف مدار استفاده میشود.
- بردبورد (Breadboard) یک صفحه آزمایشی است که برای ساخت سریع و آسان مدارهای الکترونیکی استفاده میشود.
مقیاس pH چیست؟
ph یک مقیاس عددی است که برای سنجش میزان اسیدی یا قلیایی بودن یک محلول استفاده میشود. این مقیاس از ۰ تا ۱۴ متغیر است.
- ph کمتر از ۷ محلول اسیدی است.
- ph برابر با ۷ محلول خنثی است.
- ph بیشتر از ۷ محلول قلیایی یا بازی است.
بهعنوانمثال، آبلیمو دارای phپایین (اسیدی) و محلول صابون دارای phبالا (قلیایی) است.
در واقع، ph نشاندهنده غلظت یونهای هیدروژن (+H) در یک محلول است. اما برای سادگی محاسبات، از مقیاس لگاریتمی استفاده میشود.
در مجموع، ph یک ابزار مهم برای تعیین ویژگیهای شیمیایی مواد مختلف است.
سنسور آنالوگ pH چگونه کار میکند؟
سنسورهای آنالوگ pH ابزاری هستند که برای اندازهگیری میزان اسیدی یا قلیایی بودن یک محلول طراحی شدهاند. این سنسورها با نمایش مقدار pH، اطلاعات دقیقی در مورد ماهیت شیمیایی محلول ارائه میدهند. سنسورهای pH در صنایع مختلفی همچون کشاورزی، تصفیه آب و فاضلاب، صنایع تولیدی و پایش محیط زیست کاربرد گستردهای دارند.
این سنسورها دارای یک مدار داخلی تنظیمکننده ولتاژ هستند که امکان تغذیه با ولتاژ3.3 تا 5.5 ولت برق مستقیم (DC) فراهم میکند. این ویژگی باعث سازگاری آنها با انواع بردهای کنترلکننده مانند آردوینو میشود. همچنین، سیگنال خروجی این سنسورها توسط یک فیلتر سختافزاری از نویز پاکسازی میشود تا دقت اندازهگیری افزایش یابد.
به زبان سادهتر، سنسور pH مانند یک زبان شیمیایی است که به ما میگوید یک محلول چقدر اسیدی یا قلیایی است. این سنسورها با ارسال یک سیگنال الکتریکی، میزان pH را به ما نشان میدهند. این سیگنال توسط یک مدار داخلی تقویت و فیلتر میشود تا اطلاعات دقیقتری به دست آید. سنسورهای pH در صنایع مختلفی استفاده میشوند تا کیفیت محصولات و محیط زیست را کنترل کنند.
مشخصات فنی تجهیزات
ماژول تبدیل سیگنال
- ولتاژ تغذیه: 3.3 تا 5.5 ولت برق مستقیم (DC)
- اتصال حسگر BNC
- دقت بالا: ±0.1 در دمای 25 درجه سانتیگراد
- محدوده اندازهگیری: 0 تا 14
الکترود pH
- محدوده دمای کارکرد: 5 تا 60 درجه سانتیگراد
- نقطه صفر (خنثی): 7 ± 0.5
- کالیبرهکردن آسان
- مقاومت داخلی: کمتر از 250 مگا اهم
پینهای برد مبدل سیگنال pH
- V+: ورودی 5 ولت dc
- G: پین زمین
- Po: خروجی آنالوگ pH
- Do: خروجی3.3 ولت dc
- To: خروجی دما
ساختار الکترود pH
همانطور که در تصویر الکترود pH مشاهده میشود، سنسور pH معمولاً به شکل یک میله است که در انتهای آن یک غشای شیشهای قرار دارد. این غشا با یک محلول که pH ثابتی دارد (معمولاً pH = 7) پر شده است. این طراحی الکترود، محیطی را فراهم میکند که در آن یونهای هیدروژن (+H) دائما به سطح داخلی غشای شیشهای متصل میشوند.
هنگامی که حسگر سنسور را در محلول مورد آزمایش قرار میدهیم، یونهای هیدروژن موجود در محلول با یونهای مثبت دیگر روی غشای شیشهای تبادل میشوند. این تبادل منجر به ایجاد یک پتانسیل الکتروشیمیایی در سراسر غشا میشود. این پتانسیل به یک ماژول تقویتکننده الکترونیکی ارسال میشود که آن را اندازهگیری کرده و به واحدهای pH تبدیل میکند. اختلاف بین این پتانسیلها بر اساس معادله نرنست، مقدار pH را تعیین میکند.
بهطور کلی، سنسور pH با استفاده از یک غشای شیشهای حساس به یونهای هیدروژن کار میکند. وقتی این غشا با محلول تماس پیدا میکند، یونهای هیدروژن بین محلول و غشا جابهجا میشوند. این جابهجایی باعث ایجاد یک ولتاژ میشود که با میزان اسیدی یا قلیایی بودن محلول ارتباط مستقیم دارد. سنسور این ولتاژ را اندازهگیری کرده و آن را به مقدار pH تبدیل میکند.
معادله نرنست
E = E0 – 2.3 (RT/nF) ln Q
معادله نرنست رابطهای است که ارتباط بین پتانسیل الکترود یک نیمسلول و غلظت یونهای مؤثر در واکنش الکترودی را نشان میدهد. به عبارتی، این معادله به ما کمک میکند تا پتانسیل الکتریکی تولید شده را در شرایط مختلف محاسبه کنیم.
کاربردهای معادله نرنست
- محاسبه پتانسیل سلول: این معادله به طور گسترده برای محاسبه پتانسیل الکتریکی یک سلول الکتروشیمیایی تحت شرایط غیراستاندارد استفاده میشود.
- محاسبه نیروی محرکه الکتریکی (EMF): با استفاده از معادله نرنست میتوان نیروی محرکه الکتریکی کل یک سلول الکتروشیمیایی را محاسبه کرد.
- محاسبه pH: یکی از کاربردهای مهم معادله نرنست در محاسبه pH محلولها است. الکترودهای شیشهای که برای اندازهگیری pH استفاده میشوند، بر اساس اصل معادله نرنست کار میکنند.
معادلهای که در متن ذکر شده است، رابطه بین پتانسیل الکتریکی ایجاد شده در یک الکترود شیشهای و pH محلول را نشان میدهد. این معادله نشان میدهد که پتانسیل الکتریکی اندازهگیری شده توسط الکترود شیشهای به طور مستقیم با لگاریتم غلظت یونهای هیدروژن (pH) در محلول مرتبط است.
یعنی، وقتی یک الکترود شیشهای را در یک محلول قرار میدهیم، بین داخل الکترود و محلول یک اختلاف پتانسیل ایجاد میشود که به میزان اسیدی یا قلیایی بودن محلول بستگی دارد. معادله نرنست به ما کمک میکند تا این اختلاف پتانسیل را اندازهگیری کرده و از روی آن pH محلول را محاسبه کنیم.
پارامتر های معادله نرست
E = E0 – 2.3 (RT/nF) ln Q
- E: پتانسیل اندازهگیری شده (ولت یا میلیولت)
- E⁰: پتانسیل استاندارد (ولتاژ)
- R: ثابت جهانی گازها (8.314 ژول بر مول . کلوین)
- T: دمای مطلق (کلوین)
- N: تعداد الکترونهای منتقل شده در واکنش
- F: ثابت فارادی (96485.33 کولن بر مول)
- Q: ضریب واکنش (نسبت غلظت محصولات به واکنشدهندهها)
شماتیک مدار
برای پروژه ساخت pH متر با آردوینو، شماتیک مدار به شرح زیر است:
اتصال برد تبدیل سیگنال pH به آردوینو
اتصال بین پورت آردوینو و برد تبدیل سیگنال pH در جدول زیر نشاندادهشده است.
آردوینو | برد سنسور pH |
5V | V+ |
GND | G |
A0 | Po |
برنامهنویسی آردوینو برای ساخت pH متر
پس از اتصال موفق سختافزار، اکنون زمان برنامهنویسی آردوینو است. کد کامل پروژه ساخت pH متر با آردوینو در انتهای آموزش آورده شده است. بیایید توضیح گامبهگام کد پروژه را دنبال کنیم.
اولین کاری که باید در برنامه انجام دهید، واردکردن تمام کتابخانههای موردنیاز است. در اینجا من از کتابخانه “LiquidCrystal_I2C.h” برای استفاده از رابط I2C نمایشگر LCD و “Wire.h” برای استفاده از قابلیت I2C روی آردوینو استفاده کردهام.
1 2 3 4 5 | #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); |
سپس، مقدار کالیبرهکردن تعریف میشود که در صورت نیاز میتوان آن را تغییر داد تا مقدار pH دقیق محلولها به دست آید. (این موضوع در قسمت پایانی همین آموزش توضیح داده خواهد شد)
1 | float calibration_value = 21.34; |
در داخل تابع setup()، کامندهایی برای نمایش یک پیام خوشآمد گویی روی LCD نوشته میشوند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 نمونه از مقادیر آنالوگ خوانده شده و در یک آرایه ذخیره میشوند. این کار برای کاهش نویز و بهبود دقت مقدار خروجی انجام میشود.
1 2 3 4 5 6 7 8 9 | for (int i = 0; i < 10; i++) { buffer_arr[i] = analogRead(A0); delay(30); } |
سپس، مقادیر آنالوگ دریافتی را به ترتیب صعودی مرتب کنید. این کار لازم است؛ زیرا ما باید میانگین نمونهها را در مرحله بعدی محاسبه کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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 تبدیل شده و روی نمایشگر LCD نمایش داده میشود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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); } |
کالیبرهکردن الکترود pH
کالیبرهکردن الکترود pH برای اطمینان از دقت اندازهگیری pH بسیار مهم است. در واقع، ما الکترود را با یک محلول که pH شناخته شده دارد (محلول مرجع) مقایسه میکنیم تا مطمئن شویم که دستگاه بهدرستی کار میکند.
مراحل کالیبرهکردن
1. انتخاب محلول مرجع
معمولاً از محلولهایی با pH مشخص (مثلاً 7، 4 و 10) استفاده میشود. این محلولها pH بسیار پایداری دارند و برای کالیبرهکردن ایدهآل هستند.
2. قراردادن الکترود در محلول مرجع
الکترود pH را به آرامی در محلول مرجع فرو ببرید. مطمئن شوید که قسمت حساس الکترود کاملاً در محلول قرار گرفته باشد.
3. کالیبرهکردن
پس از اینکه الکترود در محلول قرار گرفت، دستگاه شروع به اندازهگیری pH میکند. اگر مقدار نمایش داده شده با مقدار واقعی pH محلول مرجع تفاوت داشت، باید مقدار صحیح را در کد آردوینو تنظیم کنید.
مثال: اگر محلول مرجع7 pH دارد و دستگاه 6.5 را نشان میدهد، باید مقدار 0.5 به متغیر calibration_value اضافه کنید. این کار باعث میشود که دستگاه مقادیر pH را با دقت بیشتری اندازهگیری کند.
4. تکرار کالیبرهکردن با محلولهای دیگر
برای دقت بیشتر، بهتر است از چندین محلول مرجع با pHهای مختلف استفاده کنید. این کار به شما کمک میکند تا اطمینان حاصل کنید که محدوده اندازهگیری دستگاه دقیق است.
تست pH متر آردوینو
ما pH متر آردوینو را با فرو بردن آن در آب خالص و آب لیمو آزمایش کردهایم. نتایج را میتوانید در زیر مشاهده کنید.
- تست آب خالص عدد نمایش داده شده 7.09
- تست آبلیمو عدد نمایش داده شده 2.40
بهاینترتیب میتوان یک سنسور pH با استفاده از آردوینو ساخت و از آن برای بررسی سطح pH مایعات مختلف استفاده کرد.
سخن آخر
با ساخت این pH متر ساده با استفاده از برد آردوینو، نهتنها یک پروژه الکترونیکی جذاب را به پایان رساندیم، بلکه گام مهمی در جهت درک بهتر مفاهیم اساسی الکترونیک، برنامهنویسی و سنسورها برداشتیم. این پروژه نشان داد که با کمی دانش فنی و خلاقیت میتوان ابزارهای اندازهگیری دقیق و کاربردی ساخت که در صنایع مختلف، کشاورزی، آزمایشگاهها و حتی در خانه برای بررسی کیفیت آب قابلاستفاده هستند.
ساخت pH متر با آردوینو به ما کمک میکند تا با دنیای وسیع اتوماسیون و اینترنت اشیا آشنا شویم و به این فکر کنیم که چگونه میتوان با توسعه این پروژه، دستگاههای هوشمندتری ساخت که قادر به ثبت دادهها، ارسال هشدار و کنترل خودکار فرایندها باشند. با ساخت این pH متر، نهتنها یک ابزار کاربردی در اختیار داریم، بلکه درکی عمیقتر از اینکه الکترونیک چگونه میتواند به حل مشکلات روزمره و بهبود کیفیت زندگی کمک کند، پیدا میکنیم. این پروژه یک نمونه کوچک اما قدرتمندی است که نشان میدهد با کمی تلاش و دانش، میتوانیم ابزارهای هوشمند و مفیدی برای خود و جامعه بسازیم.
کد کامل پروژه
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #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); } |