Bem vindo ao nosso blog

Conectando ideias

Como fazer medição do Ph da água com Arduino

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
pHFigura 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
  }
ADVERTISEMENT
 
 
 
REPORT THIS AD

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.

DS18B20 wiringFigura 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.

Temp (2)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>”.

TFigura 3 - Leituras de pH antes e depois do ajuste. Solução tampão de pH 10

Como testar um Relé Convencional

Como medir um Resistor

Configurando teclado no Arduino UNO

Configurando teclado no Arduino UNO

Configurando teclado no Arduino UNO

Informações de contato

Contate-nos por e-mail ou redes sociais
contato@arduinoeautomacao.com.br

Inscreva-se em nossa newsletter