This is a Turkish tutorial of an open source Arduino library, which is meant for turning your Arduino into a “Analog pH Meter”. I will show you how to install the library to Arduino Ide and make an example Project of a pH meter calibrator with the library, throughout this tutorial while giving information about pH scale and explaining why calibrating pH meters are cruicial.
Merhaba, bu yazıda Arduino mikrokontrolörünüze “Analog pH Metre” olma özelliği ekleyen, açık kaynak bir pH Metre kütüphanesinden bahsedeceğim. Yazı boyunca pH ölçü biriminin kısa bir özetini, neden pH metrelerin kalibre edilmesi gerektiğini, pH Metre kütüphanesinin kurulumunu pH metre kalibrasyon aleti örnek projesini ve proje kodlarını görebilirsiniz.
Profesyonel kullanım için olan bir pH metre.
pH Nedir? pH Metre Kalibrasyonu Neden Önemlidir?
pH yani “power of hydrogen” 1909 yılında Danimarkalı kimyager Soren Peder Lauritz Sorensen tarafından tanımlanmış, hidrojen iyonunun aktivitesi üzerinden çözeltinin nötr, asidik veya bazik olmasını tanımlayan bir ölçü birimidir. Çözeltideki hidrojen iyonu (H+) ve hidroksit iyonunun (OH-) derişimine bağlı olarak pH birimi belirlenir.
Hidrojen iyon derişimi - pH değişimini gösteren grafik
Bir çözeltinin veya maddenin hidrojen iyonu derişimi hidroksit iyonu derişiminden fazla işe o çözelti veya madde asidik (pH değeri 7-), tam tersine hidroksit iyonu derişimi hidrojen iyonu derişiminden fazla ise o çözelti veya madde baziktir (pH değeri 7+). Bu madde veya çözeltinin hidrojen iyonları hidroksit iyonlarına eşitse nötrdür (pH değeri 7). pH değeri logaritmik olarak ölçülür. Yani bir çözeltinin 1 pH’lık değişimi lineer olarak 10 katlık bir değişime denk gelir.
pH Metreler ilk kullanımdan once ve kullanım süreleri boyunca düzenli olarak kalibre edilmelidirler. Kalibrasyon işlemi pH metrenin doğru değerleri göstermesi açısından kritik bir öneme sahiptir. pH metrelerde pH ölçümünün yapılmasını sağlayan elektrotlar zamanla başka bileşiklerle kaplanır veya aşınır. Bu aşınma sonucu pH metrenin gösterdiği değerler gerçek pH değerinden sapar. En ufak pH değişimlerinin bile önemli olduğu alanlarda çalışılıyorsa, pH metreler mutlaka düzenli olarak kalibre edilmelidir.
pH metre kalibrasyon çözeltileri. Genellikle 4, 7 ve 9.21 pH değerlerine sahip olurlar.
Analog PH Meter Kütüphanesinin Kullanımı
1. https://github.com/frdteknikelektro/AnalogPHMeter adresinden kütüphaneyi indirin.
2. Arduino programını açıp sırasıyla Sketch->Include Library->Add .ZIP Library seçeneklerini seçin.
3. AnalogPHMeter-develop.zip dosyasını seçin ve Open'a tıklayın.
Analog PH Meter Kütüphanesinin Kullanımı
1. Yeni bir sketch açın ve "pH_Kalibre" olarak kaydedin.
2. Kullanacağımız kütüphanelerimizi sketch’imize eklemek için, kodun en başına, #include <AnalogPHMeter.h> ve #include <EEPROM.h> yazın. İlk kütüphane pH metrenin, ikinci kütüphane Arduino gibi birçok mikrokontrolörde bulunan EEPROM hafıza çipinin kütüphanesidir. Bu kütüphane Arduino IDE’si ile yüklü gelmektedir.
3. Analog pH metremizi tanımlayıp, Arduino’daki Analog 0 pinine bağlayan kodu ekleyin. İsterseniz pH metrenizi bağladığınız pini değiştirebilirsiniz, bağladığınız pin analog olduğu sürece çalışacaktır. Ardından kalibrasyon sırasında okuyacağımız ve Arduino’nun hafızasına verinin değişkenini tanımlayın.
4. void setup() fonksiyonunun içine, 9600 baud hızında seri haberleşmeyi başlatacak kodu yazın ve kalibrasyon verilerini kaydedecek olan komutları yazın.
5. Kalibrasyon verilerini kaydedecek kodu yazdıktan sonra, kullanıcının ekranda göreceği ve uygulayacağı komut listesini ekrana yansıtan (print eden) komutları ekleyin. Komutların sonuna delay eklerseniz, komutlar ekrana yansıdığında takip etmesi daha kolay olur. Delay süresini okuma hızınıza göre değiştirebilirsiniz.
6. void loop() fonksiyonunun içine, kalibrasyon için alınacak pH ölçümlerini ekrana yansıtan kodu sonuna okunma kolaylığı sağlaması için delay komutu ekleyerek yazın.
7. Bir if koşulu yaratın ve bu koşulu seri bağlantıdan cevap gelirse çalışacak şekilde tanımlayın. Kullanıcının basması gereken tuş için bir karakter yaratın ve bu karakteri kullanıcı (klavye) inputuna atayın. İlk yazdığınız if koşulunun içine 5 adet if-else komutu ekleyin ve her if-else komutunun içine sırasıyla basılan tuşlara göre kütüphane fonksiyonlarını yerine getiren kodları yazın. İlk üç if komutunun içine sırasıyla 7, 4 ve 10 pH ölçüm değerlerini tanımlayan kütüphane fonksiyonlarını, komut tuşunu ekleyerek yazın. Sonraki if komutuna kalibrasyon verisini hafızadan silen komutu yine komut tuşuyla birlikte yazın. Son if koşuluna ise kalibrasyon verisini kaydeden EEPROM kütüphanesi fonksiyonunu yazın ve void loop() fonksiyonu tırnağını kapatın.
Bu yazımda Arduino mikrokontrolörü için " frdteknikelektro" adlı GitHub kullanıcısı tarafından yazılmış " AnalogPHMeter" kütüphanesinin kurulumu, pH ölçü birimi ve pH metre kalibrasyonu hakkında bilgi vererek, kütüphane kullanımını örnekle anlattım. Umuyorum ki vermiş olduğum bilgileri beğenirsiniz, okuduğunuz için teşekkürler. Başka yazılarda görüşmek dileğiyle.
GitHub: https://github.com/frdteknikelektro/AnalogPHMeter
Örnek projenin kaynak kodu:
#include <AnalogPHMeter.h>
#include <EEPROM.h>
AnalogPHMeter pHSensor(A0); // pH metreyi "Analog 0" pinine atar.
double pHCalibrationValueAddress = 0; // Kalibrasyon verisini hafızaya kaydetmek için tanımlanan değişken.
void setup() {
Serial.begin(9600); // 9600 baud rate'de seri haberleşmeyi başlatır.
struct PHCalibrationValue pHCalibrationValue; // Kalibrasyon verisini hafızaya kaydedilmesini sağlar.
EEPROM.get(pHCalibrationValueAddress, pHCalibrationValue);
pHSensor.initialize(pHCalibrationValue);
Serial.println("Analog pH metre kalibrasyon işlemi"); // User komutlarını ekrana yansıtır.
Serial.println("Yapılacak işlemler:");
Serial.println(" - pH metrenizi 7 pH değerine sahip solüsyona daldırın");
Serial.println(" - 3 saniye bekleyin.");
Serial.println(" - Kalibrasyonu tamamlamak için 'y' tuşuna basın.");
Serial.println(" - 4 veya 10 pH değerinde solüsyonlar ile kalibrasyon yapmak için,");
Serial.println(" 4 pH için 'a', 10 pH için 'd' tuşuna basın.");
Serial.println("Kalibrasyon verilerini kaydetmek için 's' tuşuna basın.");
Serial.println("Kalibrasyon verilerini sıfırlamak için 'c' tuşuna basın.");
delay(1000);
}
void loop() {
Serial.println(pHSensor.singleReading().getpH()); // pH ölçümlerini ekrana yansıtır.
delay(1000)
if (Serial.available()) {
char c = Serial.read();
if (c == 'y') { // Basılan tuşlara göre kalibrasyon işlemini
pHSensor.calibrationMid(7.000f); // gerçekleştiren kütüphane fonksiyonları.
} else if (c == 'a') {
pHSensor.calibrationLow(4.000f);
} else if (c == 'd') {
pHSensor.calibrationHigh(10.000f);
} else if (c == 'c') {
pHSensor.calibrationClear(); // Kalibrasyon verisini hafızadan temizler.
} else if (c == 's') {
EEPROM.put(pHCalibrationValueAddress, pHSensor.getCalibrationValue()); // Kalibrasyon verisini kaydeder.
}
}
}
Posted on Utopian.io - Rewarding Open Source Contributors
Harika bilgiler teşekkür ederiz artık pH ne demek biliyoruz.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Güzel yorumunuz için ben teşekkür ederim.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
The contribution has been approved.
[utopian moderator]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @drencolha I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You got a 20.00% upvote from @votebuster courtesy of @drencolha!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You got a 0.63% upvote from @upme requested by: @drencolha.
Send at least 2.5 SBD to @upme with a post link in the memo field to receive upvote next round.
To support our activity, please vote for my master @suggeelson, as a STEEM Witness
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
You got a 1.83% upvote from @allaz courtesy of @drencolha!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit