A medição do potencial hidrogeniônico (pH) faz-se importante em diversos processos, principalmente os que envolvem ácidos e/ou bases. Existem diversas formas para realizar essa medição, sendo uma das mais utilizadas o eletrodo com membrana de vidro (mais informações sobre esse sensor aqui, nas partes 2 e 3).
Embora a saída desse sensor seja em volts, o valor é tão baixo que não é possível detectá-lo nem mesmo com multímetros convencionais, impossibilitando seu uso direto com o Arduino. Porém, existem circuitos destinados especialmente para realizar a conversão dessa leitura, sendo um deles o “pH Circuit” desenvolvido pela Atlas Scientific.
Este post tem como objetivo explicar como é feita a leitura do pH com o Arduino a partir desses instrumentos, assim como a calibração e ajuste do elemento sensor. Para tais fins, serão necessários os seguintes materiais:
- Arduino
- Eletrodo com membrana de vidro
- pH Circuit
- Conector BNC fêmea (disponível na Atlas Scientific)
- Sensor de temperatura DS18B20
- Soluções tampão (pH 4.0, 7.0 e 10.0
Figura 1 - Circuito de ligação do pH Circuit, conector BNC e Arduino.
Para se realizar a leitura de pH, basta montar o circuito apresentado na figura 1 e conectar o BNC macho do eletrodo no BNC fêmea do circuito. Deve-se utilizar o código disponibilizado pela Atlas Scientific. Esse código permite o envio de comandos através do monitor Serial. O comando para realizar leituras contínuas de pH é a letra “C” (maiúscula ou minúscula), seguido de “<CR>”.
#include <SoftwareSerial.h> #define rx 2 #define tx 3 SoftwareSerial myserial(rx, tx); char ph_data[20]; char computerdata[20]; byte received_from_computer=0; byte received_from_sensor=0; byte arduino_only=0; byte startup=0; float ph=0; byte string_received=0; void setup(){ Serial.begin(38400); myserial.begin(38400); } void serialEvent(){ if(arduino_only!=1){ received_from_computer=Serial.readBytesUntil(13,computerdata,20); computerdata[received_from_computer]=0; myserial.print(computerdata); myserial.print('\r } } void loop(){ if(myserial.available() > 0){ received_from_sensor=myserial.readBytesUntil(13,ph_data,20); ph_data[received_from_sensor]=0; string_received=1; Serial.println(ph_data); } if(arduino_only==1){Arduino_Control();} } void Arduino_Control(){ if(startup==0){ myserial.print("e\r delay(50); myserial.print("e\r delay(50); startup=1; } delay(800); myserial.print("R\r if(string_received==1){ ph=atof(ph_data); if(ph>=7.5){Serial.println("high\r");} if(ph<7.5){Serial.println("low\r");} string_received=0;} } void s_cal(){ myserial.print("s\r void f_cal(){ myserial.print("f\r void t_cal(){ myserial.print("t\r void phFactoryDefault(){ myserial.print("X\r void read_info(){ myserial.print("I\r void phSetLEDs(byte enabled) { if(enabled) myserial.print("L1\r else myserial.print("L0\r }
Já que o valor do pH de uma solução depende da sua agitação molecular, para realizar medições precisas dessa variável faz-se necessário compensar a temperatura. Para isso utilizou-se do sensor de temperatura DS18B20, mas qualquer forma de medição pode ser utilizada.
Figura 2 - Circuito para a leitura de temperatura com o DS18B20.
Conhecendo o valor de temperatura (em graus Celsius), esse pode ser apenas digitado no monitor Serial e enviado como um comando (seguido de “<CR>”). O código da Atlas Scientific irá então fazer a compensação. No caso do experimento conduzido, essa temperatura era de 21 °C.
Figura 2 - Temperatura medida e comando enviado.
Feito isso, já estaremos obtendo leituras de pH. Mas será que elas são acuradas?
Para certificar-se disso podem-se utilizar soluções tampão. Essas soluções possuem o pH fixo em determinado valor e podem ser utilizadas para a calibração do sensor. São necessários no mínimo três pontos de medição. Usualmente utilizam-se tampões para os pH’s 4.0, 7.0 e 10.0.
No experimento conduzido, percebeu-se que — sob a temperatura ajustada de 21 °C — a leitura para a solução tampão de pH 4.0 era de 5.59. Para corrigir esse erro, utilizou-se do comando “F<CR>” que permite informar ao pH Circuit que a solução possui pH 4.0, e que o sensor deve ser ajustado para esse valor.
De forma similar, realizaram-se os ajustes para pH 7.0 e 10.0, sempre submergindo o eletrodo em água antes de mudá-lo de solução, de forma a minimizar a mistura entre os tampões. Os comandos de ajuste para esses pontos são, respectivamente, “S<CR>” e “T<CR>”.
Figura 3 - Leituras de pH antes e depois do ajuste. Solução tampão de pH 10