"Sample and hold" em um condutivímetro

107 views
Skip to first unread message

Markos

unread,
Dec 2, 2015, 6:27:43 PM12/2/15
to SJC HackerClube, sis_emb...@googlegroups.com
Oi Pessoal,

Vou pedir uma ajuda do pessoal que conhece de Eletrônica.

(Desculpe pelo tamanho da mensagem, mas a intenção é fornecer alguns
detalhes para facilitar a resposta.)

Estou às voltas com um circuito para fazer medidas de condutividade em
água baseada na técnica de pulso bipolar.

O princípio é aplicar dois pulsos de igual duração mas polaridades
opostas e ler o sinal no final do segundo pulso.

Este é o princípio da técnica:
http://www.c2o.pro.br/hackaguas/figuras/circuito_original_condutancia_pulso_bipolar.png

Encontrei um artigo que implementa a técnica usando uma interface DA
(para gerar o pulso) e outra AD (para fazer a leitura), e um conversor
I-V como na figura:
http://www.c2o.pro.br/hackaguas/figuras/computer_controlled_bipolar_pulse.png

Tentando usar o Arduino para fazer isso montei o seguinte circuito:
http://www.c2o.pro.br/hackaguas/figuras/Condutivimetro_Pulso_Bipolar_02.png

O primeiro amplificador aplica uma tensão no eletrodo que é proporcional
à diferença de potencial entre um dos resistores do divisor de tensão.

Para alterar a polaridade basta inverter os sinais dos pinos digitais (7
e 8) do Arduino .

O segundo amplificador inversor gera uma saída amplificada que eu leio
com o pino analógico do Arduino.

Fiz algumas medidas com um osciloscópio made in China e parece que está
funcionando.
http://www.c2o.pro.br/hackaguas/figuras/Condutivimetro_Pulso_Bipolar_04.png

Fiz alguns testes com soluções salinas de concentração conhecida
variando a duração dos pulsos. Mas percebi que o resultado é muito
sensível à duração dos pulsos e afeta muito a linearidade das leituras
de condutividade.

O comando analogRead do Arduino dura ~100 microsegundos, da mesma ordem
de grandeza de variação dos pulsos.

Ao invés de tentar reduzir o tempo do comando de leitura (analogRead)
estou pensando em uma jeito de fazer uma amostragem da tensão no final
do segundo pulso para fazer a leitura sem perder informação.

Por isso comecei a pensar em uma forma "simples" de usar o conceito
"sample and hold".

Estou pensando em montar o seguinte circuito (anexo).

A idéia é manter o pino digital do arduino como OUTPUT e LOW para
evitar o carregamento do capacitor durante os pulsos, e mudar para o
modo INPUT alguns microsegundos antes do final do segundo pulso para
aumentar a impedância e carregar o capacitor. E após o segundo pulso
fazer a leitura do potencial no capacitor "sem pressa".

Depois da leitura voltar o pino digital para o modo OUTPUT e LOW para
descarregar o capacitor e gerar os pulsos para nova leitura de
condutividade.

Não sei se deixo o diodo ou troco por um resistor.

Alguma dica?

Alguma sugestão de tipo e valor do capacitor?

Obrigado pela atenção.

Um Abraço,
Markos

PS Sektch que estou utilizando:

/*
Condutivímetro com Pulso Bipolar 00
Estudo do Pulso Bipolar usando circuito com amplificadores operacionais
Aplicar pulsos cíclicos com 1000us (+) -> 900us (-) -> analogRead ->
500us (0)
Avaliar com osciloscópio o perfil do sinal e as intensidades
*/

const float V_arduino = 5.00; //Tensão nos pinos digitais do Arduino

byte pin_electrode_1 = 7; //Pino que ficará conectado ao eletrodo 1
byte pin_electrode_2 = 8; //Pino que ficará conectado ao eletrodo 2

unsigned long start, finished, elapsed;
//http://tronixstuff.com/2011/06/22/tutorial-arduino-timing-methods-with-millis/

int reading_Vo_pin = A0; //Pino analógico para leitura da tensao de
saida do conversor I-V (0 ou A0)
int reading_Vi_pin = A1; //Pino analgico para leitura da tensao
aplicada na celula de condutividade

int reading_Vi;
int reading_Vo;

long time_pol;

int i = 0;

float Vo; //Variável que irá armazenar as leituras em Volts na saída
do conversor I-V
float Vi; //Variável que irá armazenar a tensão aplicada na célula
float Rf = 314; //Resistência de feedback do conversor I-V
float Gx; //Condutância da solução

void setup()
{

Serial.begin(115200);
pinMode(pin_electrode_1, OUTPUT);
pinMode(pin_electrode_2, OUTPUT);

}

void loop()
{

time_pol = 100;

for (i = 0; i < 7; i++) {

//Pino 7 = 0V e Pino 8 = 5V
digitalWrite(pin_electrode_1, HIGH);
digitalWrite(pin_electrode_2, LOW);

delayMicroseconds(time_pol - 100);
reading_Vi = analogRead(reading_Vi_pin);

//Pino 7 = 5V e Pino 8 = 0V
digitalWrite(pin_electrode_1, LOW);
digitalWrite(pin_electrode_2, HIGH);

delayMicroseconds(time_pol - 100);
reading_Vo = analogRead(reading_Vo_pin); //Medir tensão entre o
divisor de voltagem


digitalWrite(pin_electrode_1, LOW);
digitalWrite(pin_electrode_2, LOW);

time_pol = time_pol * 2;

delayMicroseconds(time_pol);

Vo = reading_Vo * 0.0048; //Converte de ADC para Volts
Vi = reading_Vi * 0.0048;

Gx = Vo / (Rf * Vi); //Calcula a condutância da solução

//Serial.print(" Vi ");
//Serial.print(Vi,4);
//Serial.print(" reading_Vo ");
//Serial.print(reading_Vo);
//Serial.print(" Vo ");
//Serial.print(Vo,4);
//Serial.print(" ");

// Serial.print(time_pol);
// Serial.print(" ");
Serial.print(Gx,6);
Serial.print(" ");



}

Serial.println();

//Serial.println("Second Bipolar Pulse");



//Serial.println(Rx);

delay(1000);

}

sample_and_hold.png

Leonardo Alves

unread,
Dec 3, 2015, 5:16:39 AM12/3/15
to sis_emb...@googlegroups.com
Segue uma pequena ajuda.

Leia o artigo abaixo que você vai achar bem interessante

https://www.dropbox.com/s/eas8sg8jvf1lzu7/JCE%20condut_grad.pdf?dl=0

Até mais
--
Leonardo M. Alves
Tec. Eletrônica
11- 96953-5774




--
Você está recebendo esta mensagem porque se inscreveu no grupo "sis_embarcados" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para sis_embarcado...@googlegroups.com.
Para postar neste grupo, envie um e-mail para sis_emb...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/sis_embarcados.
Para obter mais opções, acesse https://groups.google.com/d/optout.




Markos

unread,
Dec 3, 2015, 6:41:28 AM12/3/15
to sis_emb...@googlegroups.com
Oi Leonardo,

Valeu pela dica, mas eu já conheço esse trabalho.

Cheguei a montar o módulo oscilador para esse condutivímetro:
http://www.c2o.pro.br/automacao/x5687.html

Essa é uma abordagem clássica para condutivímetros, onde a frequência é constante.

Estou insistindo na técnica de pulso bipolar porque ela promete ser mais abrangente e versátil pois permitiria fazer leituras em uma ampla faixa de condutividade sem a necessidade de trocar os eletrodos.

Além disso o controle da frequência, via software, com o Arduino permitiria fazer estudos interessantes sobre condutividade.

Você tem alguma sugestão para o circuito que estou pensando?

Obrigado pela atenção,
Markos
--
Você recebeu essa mensagem porque está inscrito no grupo "sis_embarcados" dos Grupos do Google.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para sis_embarcado...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para sis_emb...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/sis_embarcados.
Para mais opções, acesse https://groups.google.com/d/optout.

ala...@bonseletrons.com.br

unread,
Dec 3, 2015, 7:21:27 AM12/3/15
to sis_emb...@googlegroups.com

Eu acho que o circuito que você está procurando é um peak-detector (com reset)
...

-----
Alain Mouette

Markos

unread,
Dec 3, 2015, 8:19:08 AM12/3/15
to sis_emb...@googlegroups.com
Oi Alain,

Um exemplo numérico.

Eu gostaria de gerar pulsos com duração de ~ 40 microsegundos, e amostrar a tensão a partir de 30 microsegundos.

Ou seja, ler a tensão nos últimos 10 microsegundos do pulso.

A limitação do Arduino é que o comando de leitura analógica (analogRead) dura ~100 microsegundos.

Estou pensando em usar um capacitor para carregar nos últimos 10 microsegundos do pulso.

O que estou pensando é manter um pino digital com 0V nos primeiros 30 microsegundos e aumentar a impedância (LOW -> HIGH) nos últimos 10 microsegundos para carregar o capacitor durante os 10 microsegundos finais.

O diodo impediria o descarregamento do capacitor após o final do pulso.

O reset do capacitor seria feito baixando a impedância do pino digital (HIGH -> LOW).

É isso que tenho em mente. Mas não tenho idéia se isso funcionaria e qual o capacitor mais indicado (cerâmico ou eletrolítico) e qual a capacitância recomendada.

Cheguei a pensar em substituir o diodo por um MOSFET (para evitar a queda de tensão do diodo) e controlar o MOSFET com um pino digital, mas não sei qual seria o comportamento do MOSFET quando o amplificador inverter a polaridade do sinal. Teria algum problema?

Alguma dica?

Obrigado pela atenção,
Markos

ala...@bonseletrons.com.br

unread,
Dec 3, 2015, 10:28:44 AM12/3/15
to sis_emb...@googlegroups.com

Sim, te dei a dica, procure por peak detector...
Isso que você quer não é tão seu simples quanto parece, eu cobraria bem pelo projeto ;-)

-----
Alain Mouette

Emerson Beserra

unread,
Dec 3, 2015, 12:02:41 PM12/3/15
to sis_emb...@googlegroups.com
Oi Markos,

Não seria mais fácil mudar a tua solução para uma que fosse capaz de realizar a amostragem nesse tempo específico?
Deve ter algum micro ou conversor no mercado mais apropriado para essas tuas necessidades.
Emerson Beserra

Helio coragem

unread,
Dec 3, 2015, 3:51:05 PM12/3/15
to sis_embarcados, mar...@c2o.pro.br
Olá Marcos,

Observando as formas de onda obtidas, embora com escalas de tempo diferentes, parece-me que o 
condutivimetro funciona como um filtro passa alta ou um diferenciador. 

Ou seja, o condutivimetro funciona como um capacitor, sendo a segunda forma de onda, a corrente de carga e descarga 
deste capacitor através de um resistor (resistencia devido à condutividade do liquido?).

Para efetuar a leitura com o Arduino vc precisa  carregar o capacitor de amostragem com esta corrente.
Creio que basta apenas colocar um resistor em paralelo com este capacitor de amostragem (10k, 100k, 500k ??) 
 
Antes de fazer a leitura, interrompa a onda quadrada da entrada no final de um ciclo, pois com o diodo vc 
somente conseguira carregar o capacitor. A descarga se dará pelo resistor em paralelo.
Não aconselho descarregar o capacitor pela porta do Arduino!!!!

Os valores do capacitor, resistor e frequencias da onda quadrada são para a lição de casa!!!

Att

Helio

 


 

Em quinta-feira, 3 de dezembro de 2015 11:19:08 UTC-2, Markos escreveu:
Oi Alain,

Um exemplo numérico.

Eu gostaria de gerar pulsos com duração de ~ 40 microsegundos, e amostrar a tensão a partir de 30 microsegundos.

Ou seja, ler a tensão nos últimos 10 microsegundos do pulso.

A limitação do Arduino é que o comando de leitura analógica (analogRead) dura ~100 microsegundos.

Estou pensando em usar um capacitor para carregar nos últimos 10 microsegundos do pulso.

O que estou pensando é manter um pino digital com 0V nos primeiros 30 microsegundos e aumentar a impedância (LOW -> HIGH) nos últimos 10 microsegundos para carregar o capacitor durante os 10 microsegundos finais.

O diodo impediria o descarregamento do capacitor após o final do pulso.

O reset do capacitor seria feito baixando a impedância do pino digital (HIGH -> LOW).

É isso que tenho em mente. Mas não tenho idéia se isso funcionaria e qual o capacitor mais indicado (cerâmico ou eletrolítico) e qual a capacitância recomendada.

Cheguei a pensar em substituir o diodo por um MOSFET (para evitar a queda de tensão do diodo) e controlar o MOSFET com um pino digital, mas não sei qual seria o comportamento do MOSFET quando o amplificador inverter a polaridade do sinal. Teria algum problema?

Alguma dica?

Obrigado pela atenção,
Markos


On 03-12-2015 10:08, ala...@bonseletrons.com.br wrote:

Eu acho que o circuito que você está procurando é um peak-detector (com reset)
...

-----
Alain Mouette

Markos

unread,
Dec 4, 2015, 7:21:32 AM12/4/15
to sis_emb...@googlegroups.com
Oi Alain,

Obrigado pela dica.

Encontrei algum material pesquisando por "peak detector".

Mas este não é um projeto com objetivos comerciais.

Todas as informações referentes à montagem deste condutivímetro estão abertas e disponíveis na página:

http://www.c2o.pro.br/hackaguas/apds05.html

As colaborações recebidas nas listas também são disponibilizadas nesta página.

Mas acredito que existe uma demanda crescente para instrumentos de análise de água voltados para o consumidor doméstico, devido à crescente desconfiança das pessoas quanto à qualidade da água de abastecimento ou de fontes alternativas.

Fica aí uma dica para quem se interessar pelo assunto.

Um Abraço,
Markos

Markos

unread,
Dec 4, 2015, 7:33:46 AM12/4/15
to sis_emb...@googlegroups.com
Oi Emerson,

Eu também estou de olho em alternativas mais simples, mas essa não foi a minha primeira tentativa.

Comecei pelo mais simples usando um "divisor de tensão".

Existem muitos projetos de condutivímetro disponíveis na Internet que utilizam um divisor de tensão.

E como ponto de partida usei o projeto “Water Conductivity/Numerical Output” do livro “Environmental Monitoring with Arduino” (Environmental Monitoring with Arduino, 2012)

Mas fui percebendo as limitações dessa abordagem e acabei chegando na técnica de pulso bipolar.

Essas tentativas (e erros) estão documentadas na página: www.c2o.pro.br/hackaguas/apds05.html

A técnica de pulso bipolar é de fato mais complexa mas, se eu conseguir implementar, pode oferecer maior versatilidade.

Os primeiros teste que fiz foram na faixa de milisegundos.

Só então eu percebi a necessidade de trabalhar com intervalos de tempo menores.

Mas uma das premissas que tenho adotado é tentar esgotar as possibilidades usando componentes facilmente acessíveis no mercado. E só partir para componentes específicos e dedicados como última opção.

Continuo aceitando dicas e sugestões.

Um Abraço,
Markos

ala...@bonseletrons.com.br

unread,
Dec 4, 2015, 8:03:02 AM12/4/15
to sis_emb...@googlegroups.com

Realmente, usando um peak detector você simplifica o problema de temporização e pode usar a lib padrão do Arduino sem problemas...

Dica sobre perguntas: se é um projeto aberto, informe. Colocar um link do blog ajuda muito. Eu, por exemplo, sempre ajudo mais os projetos abertos que para empresas, hehe!

Outra dica: mostre o que você já conseguiu, o que pesquisou. (Isso você já tinha feito, mas fica a dica)

E mais uma: vai atrás das dicas com palavras chave. Por exemplo, agora que você já estudou o assunto, perguntas a respeito têm maior chances de obter uma resposta (não só de min)

-----
Alain Mouette

ala...@bonseletrons.com.br

unread,
Dec 4, 2015, 8:21:54 AM12/4/15
to sis_emb...@googlegroups.com

Lendo o teu blog tive uma ideia: experimente fazer a medida com amplitude abaixo de 0,5 Volts. É bem possível que assim consiga evitar a corrosão do eletrodo, lembro que existe uma tensão mínima (esqueci o nome) para que isso aconteça.

-----
Alain Mouette

Markos

unread,
Dec 4, 2015, 8:29:33 AM12/4/15
to Helio coragem, sis_emb...@googlegroups.com
Bom Dia Helio,

Você captou a idéia central.

As placas dos eletrodos mergulhados na solução funcionam como um capacitor.

Os artigos científicos indicam que uma célula de condutividade possui componentes resistivos (Rx) e capacitivos (Cx e Cp) e que o circuito equivalente "simplificado" seria esse:
www.c2o.pro.br/hackaguas/figuras/circuito_original_condutancia_pulso_bipolar.png

Por isso o sinal apresenta um pico inicial de carregamento do capacitor em paralelo (Cp) e o carregamento mais lento do capacitor em série (Cx) com a resistência da solução (Rx).

Depois do seu alerta para não descarregar o capacitor pela porta do Arduino e com a dica do Alain para pesquisar por peak detector resolvi incluir dois  nMOSFETs controlados por pinos digitais do Arduino.

Um MOSFET para funcionar como chave e controlar o tempo de carregamento do capacitor e outro para descarregar o capacitor.

Também pensei em incluir um seguidor de tensão entre o capacitor e a porta analógica do Arduino para evitar queda de tensão do capacitor durante a leitura analógica.

Estou anexando o diagrama.

Será que funciona?  O que você acha?

Por exemplo, se eu quiser amostrar os últimos 5 ou 10 microsegundos de um pulso com duração de 40 microsegundos  eu deveria usar um capacitor cerâmico com pequena capacitância para carregar rápido. Concorda?

E só de curiosidade. Os fenômenos observados em uma célula de condutividade são o resultado da formação de dupla camada elétrica na superfície dos eletrodos. E esse é o mesmo tipo de fenômeno utilizado nos super capacitores eletroquímicos ou capacitores de dupla camada (EDLC - https://en.wikipedia.org/wiki/Electric_double-layer_capacitor).

Obrigado pela atenção,
Markos
sample_and_hold_peak_detector_02.png

Markos

unread,
Dec 4, 2015, 8:36:27 AM12/4/15
to sis_emb...@googlegroups.com
Oi Alain,

Valeu a dica.

Nas últimas medidas que fiz trabalhei com ~100mV no eletrodos.

Depois que resolver a questão da amostragem no final do pulso, vou explorar as possibilidades de tensões com menor intensidade e duração.

Obrigado,
Markos

Alexandre Nogueira

unread,
Dec 4, 2015, 8:44:50 AM12/4/15
to sis_emb...@googlegroups.com
Markos você chegou a captura com o osciloscópio em DC para o circuito da" Figura D.36. Efeito da frequência de inversão da polaridade na variação do potencial."???

ala...@bonseletrons.com.br

unread,
Dec 4, 2015, 8:46:57 AM12/4/15
to sis_emb...@googlegroups.com

O que você fez foi um sample hold, não um peak detector. Com o segundo a temporização é automática...

-----
Alain Mouette

Markos

unread,
Dec 4, 2015, 9:12:13 AM12/4/15
to sis_emb...@googlegroups.com
Oi Alexandre,

Vamos ver se eu entendi a sua pergunta.

Na figura D.36 eu mostro as leituras que obtive no ponto médio (M) do divisor de tensão, com o meu osciloscópio "Xing Ling" :^)

Os pulsos foram gerados apenas invertendo o potencial aplicado pelos pinos 7 e 8 (de pino7=0V e pino8=5V para pino7=5V e pino8=0V).

Mas essas leituras foram feitas com o circuito da figura D. 27:
www.c2o.pro.br/hackaguas/figuras/condutivimetro_00_bb.png

Ou seja, era um circuito no qual os eletrodos mergulhados na solução faziam parte de um divisor de tensão.

Eu variei o tempo de polarização dos eletrodos de 1ms até 16ms  para observar o perfil dos pulsos para diferentes frequências.

Ainda não estava usando os pulsos bipolares como no circuito da figura D.55:
www.c2o.pro.br/hackaguas/figuras/Condutivimetro_Pulso_Bipolar_04.png

Respondi a sua pergunta?

Um Abraço,
Markos

Alexandre Nogueira

unread,
Dec 4, 2015, 9:28:32 AM12/4/15
to sis_emb...@googlegroups.com
Você não estava usando pulsos bipolares??? Hora a corrente circulava 8 para o 7 ... hora do 7 para o 8!! Não são pulsos bipolares? Sempre que você capturou o osciloscópio estava em AC ou você chegou a capturar com ele em DC??? Qual a faixa de resistência esperada?? 19 Ohms/cm à 2MOhms/cm???

Markos

unread,
Dec 4, 2015, 10:29:44 AM12/4/15
to sis_emb...@googlegroups.com
Oi Alexandre,

Eu tenho feito todas as leituras no modo AC.

E as resistências ficaram na faixa de ~250 Ohms (3,5% de NaCl) até ~2500 Ohms (0,036% de NaCl).

Eu não fiz a medida da constante da célula e portanto as medidas estão reportadas somente em Ohms.

Estou considerando que, para dois eletrodos mergulhados em uma solução o que importa é a "diferença de potencial" entre os eletrodos.

Portanto se eu aplicar 0V no eletrodo 1 e 5V no eletrodo 2 é o mesmo que aplicar 0V e -5V entre os eletrodos ou -2,5 e +2,5V.

Mas com o Arduino eu só posso aplicar tensões de 0 ou 5V.

Então o que fiz, inicialmente, foi colocar a solução como uma resistência em um divisor de tensão. (Ver figura D.27)
http://www.c2o.pro.br/hackaguas/figuras/condutivimetro_00_bb.png

E colocar em loop os comandos:

...
digitalWrite(7, HIGH );
digitalWrite(8, LOW );

delay(1);

digitalWrite(7, LOW );
digitalWrite(8, HIGH );

delay(1);
...

Dessa forma o pino 7 permanece com 5V por 1ms e 0V por 1ms, e o ciclo completo dura 2ms, com uma frequência "teórica" de  500Hz.

Concorda?

Mas no caso dos pulsos "bipolares", propriamente dito, foi diferente.

Montei o circuito da figura D.55 (www.c2o.pro.br/hackaguas/figuras/Condutivimetro_Pulso_Bipolar_04.png) e a inversão das polaridades dos pinos 7 e 8 são convertidas pelo amplificador diferencial em sinais de +100mV e -100mV que são aplicados no primeiro eletrodo.

As medidas foram feitas ligando a garra no terra da fonte simétrica e a ponta de prova nos pontos indicados na figura, no primeiro eletrodo e na saída do amplificador inversor.

Como os amplificadores estão alimentados por uma fonte simétrica eu estou aplicando pulsos bipolares efetivamente.

Concorda com o meu raciocínio?

Um Abraço,
Markos

Helio coragem

unread,
Dec 4, 2015, 1:55:42 PM12/4/15
to sis_embarcados, hcor...@gmail.com, mar...@c2o.pro.br
Olá Markos,,

Pelo que entendi dos artigos de referência, vc precisa armazenar no capacitor de amostragem a carga 
relativa apenas ao pulso negativo e logo em seguida efetuar a leitura do capacitor de amostragem.

Vide a figura 8.15 da referência abaixo:
http://www.c2o.pro.br/hackaguas/download/conductivity_conductometry.pdf

Entendo que a frequencia deve ser tal que permita que com um periodo de 5RC vc tenha 
carregado /decarregado completamente a capacitancia do circuito equivalente ao sensor.
ou seja o periodo >> 5RC.

Veja que na forma de onda que vc nos mostrou  ainda existe um degrau na parte negativa, o que mostra que o 
capacitor ainda estava sendo descarregado quando a onda quadrada retornou a zero.

Talvez vc possa alargar um pouco mais o periodo desta onda quadrada. 


Gostei do seu projeto e do seu blog.
Vc tem algum laboratório onde reunem-se os nerds das águas?


Seguem abaixo algumas frases de incentivo àqueles que realizam-se com o DIY.

"Design is what you do when you don't [yet] know what you are doing.''

"What you need to invent, is an imagination and a pile of junk.''



Abs,
Helio

Alexandre Nogueira

unread,
Dec 4, 2015, 7:47:40 PM12/4/15
to sis_emb...@googlegroups.com
Se a ideia é preservar os eletrodos me parece que usar +100mV e -100mV é melhor que os ~ +5v e "-5v" que você estava usando diretamente os IO´s do Arduino! 

Fiz um teste com dois resistores iguais saindo de  Io-6, Io-7....... a outra ponta do resistor do Io7 vai para A0 e para um dos  eletrodos... o resistor do Io-6 vai para o outro eletrodo.... os eletrodos estão inseridos no liquido... 

tempo = X, Y, Z, Delta = D   
Y-512, Z-512                       // Mostra a simetria do sinal de tensão sobre os eletrodos

X : tempo mili-segundos em cada configuração dos pinos (0-1 ou 1-0)!
Y : Valor capturado por A0  para a primeira configuração dos pinos 0-1
Z : Valor capturado por A0  para a segunda configuração dos pinos 1-0
D : Delta mostra a magnitude do sinal de tensão sobre os eletrodos quanto maior... maior a resistência...
__________________________________________________________________________________________
Fiz um teste rápido com água torneiral .....

TEMPO=2000,  935,  88, Delta= 847
423,  -424
TEMPO=1500,  930,  89, Delta= 841
418,  -423
TEMPO=1000,  926,  90, Delta= 836
414,  -422
TEMPO=500,  921,  92, Delta= 829
409,  -420
TEMPO=200,  915,  93, Delta= 822
403,  -419
TEMPO=100,  913,  96, Delta= 817
401,  -416
TEMPO=10,  901,  99, Delta= 802
389,  -413
TEMPO=1,  898,  100, Delta= 798
386,  -412

Boa simetria para todos os valores de tempo 
___________________________________________________________________________________________
Com água saturada com sal de cozinha!!!

TEMPO=2000,  664,  352, Delta= 312
152,  -160
TEMPO=1500,  649,  358, Delta= 291
137,  -154
TEMPO=1000,  624,  369, Delta= 255
112,  -143
TEMPO=500,  585,  386, Delta= 199
73,  -126
TEMPO=200,  559,  402, Delta= 157
47,  -110
TEMPO=100,  540,  413, Delta= 127
28,  -99
TEMPO=10,  489,  425, Delta= 64
-23,  -87
TEMPO=1,  468,  435, Delta= 33
-44,  -77
Observe que com os tempos 10ms e 1ms provavelmente não chegou a ocorrer a reversão da polaridade deteriorando + os eletrodos!!!! Se voce monitorar com o osciloscopio em DC voce vai poder observar que para estes tempos não ocorreu a reversão o sinal, deve estar sempre positivo colocado a ponta no eletrodo do A0 e a garra terra no outro eletrodo!

Boa simetria somente para os 3 primeiros valores de tempo


Code test:__________________________________________________________________________________________
/*
  Efeito da Freqüência de Despolarização
  Polariza um dos eletrodos e mantém a polarização durante o tempo ms
  Em seguida inverte a polaridade dos eletrodos para neutralizar os efeitos de correntes faradaicas
*/

byte pin_electrode_1 = 7; //Pino que ficará conectado ao eletrodo 1
byte pin_electrode_2 = 8; //Pino que ficará conectado ao eletrodo 2

int  readings;   //Variável array que irá armazenar as leituras sucessivas de potencial (ADC) durante vários ciclos
int  readings2; 

void setup() 
  Serial.begin(115200);     
  pinMode(pin_electrode_1, OUTPUT); 
  pinMode(pin_electrode_2, OUTPUT);
}                                    

void loop() { 
       captura(2000);
       captura(1500);
       captura(1000);
       captura(500);
       captura(200);
       captura(100);
       captura(10);
       captura(1);

void captura(int tempo) {
        digitalWrite(pin_electrode_1, 0); 
        digitalWrite(pin_electrode_2, 1);     
        delay (tempo);
        readings = analogRead(A0);
        digitalWrite(pin_electrode_1, 1); 
        digitalWrite(pin_electrode_2, 0);
        delay (tempo);
        readings2 = analogRead(A0);
        digitalWrite(pin_electrode_1, 0); 
        digitalWrite(pin_electrode_2, 0); 
        Serial.print("TEMPO=");
        Serial.print(tempo);
        Serial.print(",  ");
        Serial.print( readings);
        Serial.print(",  ");
        Serial.print( readings2);
        Serial.print(", Delta= ");
        Serial.println(readings-readings2);
        Serial.print( readings-512);
        Serial.print(",  ");
        Serial.println( readings2-512);
}


Markos

unread,
Dec 6, 2015, 6:43:06 PM12/6/15
to sis_emb...@googlegroups.com
Oi Helio,

Muito obrigado pelos seus comentários.

Eles me ajudam a refletir melhor sobre os conceitos que estão envolvidos no uso dessa técnica.

Estou enviando (em pvt) as páginas do artigo original.

Acho que a melhor explicação para os fundamentos da técnica é a explicação do próprio autor no artigo original de 1970.

Transcrevo a seguir os comentários originais:

"At the beginning of the first pulse, Cp will charge quickly causing a spike in the cell current.
If t1 << RxCx , the voltage, ec, developed across Cx will be small and increase approximately linearly with time.
Thus the current flowing through Rx and Cx will drop slightly during t1 due to the charging of Cx.
When the polarity is reversed at the start of t2, Cp  will again charge quickly to the new potential.
The current through Rx and Cx will be enhanced by the potential, ec, accumulated during t1.
However during t2, Cx will discharge the same number of Coulombs that it charged during t1.
This causes a decrease in current until, at the end of t2, ec=0, and no current is flowing through Cp since it is at constant potential.
Therefore, the instantaneous current through the cell at the end of t2 is simply i = e2/Rx.
Thus , the instantaneous current measured at this time is directly proportional to the conductance and independent de Cx e Cp. "

E agora uma tradução  feita com o Google tradutor:

"No início do primeiro pulso, Cp carrega rapidamente causando um pico de corrente na célula.
Se t1 << RxCx, a tensão, ce, que se desenvolve através de Cx será pequena e aumenta de forma aproximadamente linear com o tempo.
Assim, a corrente que flui através de Rx e Cx vai cair ligeiramente durante t1 devido ao carregamento de Cx.
Quando a polaridade é invertida no início de t2, Cp irá carregar de novo rapidamente para o novo potencial.
A corrente através de Rx e Cx será reforçada devido ao potencial, ce, acumulado durante t1.
No entanto, durante t2, Cx irá descarregar o mesmo número de Coulombs que foram carregados durante t1.
Isto provoca uma diminuição da corrente até que, no fim de t2, ec= 0, e nenhuma corrente flui através de Cp uma vez que ele está em um potencial constante.
Portanto, a corrente instantânea através da célula, no final de t2 é simplesmente i = e2/Rx.
Assim, a corrente instantânea medida neste momento é diretamente proporcional à condutância e independente de Cx e Cp."

O meu grande interesse nessa técnica é principalmente a possibilidade de controle das condições de medida e a "promessa" de ser aplicável a uma ampla faixa de resistência (100 Ohms - 1MOhm).

Fiz alguns testes neste final de semana tentando usar um transístor MOSFET para fazer a amostragem e o reset, mas aparentemente  não consegui fazer o MOSFET chaver a corrente.

Não foi fácil conseguir reconhecer o padrão dos sinais.

Resolvi substituir o MOSFET por um diodo e usar um pino digital do Arduino para fazer o descarregamento do capacitor seguindo as recomendações do projeto: https://www.arduino.cc/en/Tutorial/CapacitanceMeter

Parece que funcionou. Este é o circuito: http://www.c2o.pro.br/hackaguas/figuras/sample_and_hold_02.png

Tive algumas dificuldades para observar o perfil dos sinais pelo osciloscópio. Percebi que apenas ao aproximar as mãos da protoboard para ajustar o ganho do amplificador o perfil do sinal sofria interferência.

Ainda preciso fazer o teste final com soluções salinas em concentrações conhecidas para avaliar a(s) faixa(s) de linearidade e os valores mais adequados de ganho. Mas estou otimista com essa alternativa.

Depois posso fazer os testes que você sugeriu de aumentar a duração dos pulsos.

E quanto à reunião dos "nerds das águas" :^) , existem algumas listas de discussão nas quais eu tenho tentado fomentar a discussão sobre água.

Uma das listas é:
Água-Olhar-Integral (https://br.groups.yahoo.com/neo/groups/agua-olhar-integral/info)

A outra é:
http://grupos.ufrgs.br/mailman/listinfo/fis_cta_aguas-l
que foi criada pelo projeto "De Olho nas Águas" - http://cta.if.ufrgs.br/projects/de-olho-nas-aguas

E temos ainda a lista do Public Lab:
https://groups.google.com/forum/#!forum/plots-waterquality

Veja o que está rolando nessas listas e caso se interesse, será muito bem vindo.

Mas se você quiser criar um outro espaço alternativo, conte comigo. :^)

Um Abraço,
Markos
Obrigado pela atenção,
Markos



On 03-12-2015 18:51, Helio coragem wrote:
Olá Marcos,

Observando as formas de onda obtidas, embora com escalas de tempo diferentes, parece-me que o 
condutivimetro funciona como um filtro passa alta ou um diferenciador. 

Ou seja, o condutivimetro funciona como um capacitor, sendo a segunda forma de onda, a corrente de carga e descarga 
deste capacitor através de um resistor (resistencia devido à condutividade do liquido?).

Para efetuar a leitura com o Arduino vc precisa  carregar o capacitor de amostragem com esta corrente.
Creio que basta apenas colocar um resistor em paralelo com este capacitor de amostragem (10k, 100k, 500k ??) 
 
Antes de fazer a leitura, interrompa a onda quadrada da entrada no final de um ciclo, pois com o diodo vc 
somente conseguira carregar o capacitor. A descarga se dará pelo resistor em paralelo.
Não aconselho descarregar o capacitor pela porta do Arduino!!!!

Os valores do capacitor, resistor e frequencias da onda quadrada são para a lição de casa!!!

Att

Helio

 


Markos

unread,
Dec 6, 2015, 7:19:40 PM12/6/15
to sis_emb...@googlegroups.com
Oi Alexandre,

Muito interessante o seu experimento.

Achei interessante a sua proposta de arranjo dos eletrodos e as medidas dos deltas de potencial nas diferentes polarizações (direta e reversa).

Mas você comentou que com menores intervalos de tempo de polarização (na solução com sal) haveria maior deterioração dos eletrodos.

Aí fiquei curioso para saber quais os tipos de eletrodos que você utilizou e se você chegou a comprovar na prática maior corrosão dos eletrodos com menores tempos de polarização e em solução salina.

Você chegou a pensar em fazer um experimento com duas células contendo o mesmo tipo de eletrodo em água com sal, e deixando algumas horas ou dias, em diferentes tempos de polarização (1ms X 2000ms) para avaliar experimentalmente em quais condições a corrosão é maior?

Apenas como ilustração as medidas de condutividade também são úteis no monitoramento da umidade do solo.

E aqui uma figura do que pode acontecer com os sensores:
http://www.sjchackerclube.com.br/hackerclube/wiki/index.php/Arquivo:Anodo_catodo_sensor_umidade.jpg

Fonte: http://www.sjchackerclube.com.br/hackerclube/wiki/index.php/Sensor_de_umidade

Obrigado pela atenção,
Markos

Alexandre Nogueira

unread,
Dec 6, 2015, 10:07:13 PM12/6/15
to sis_emb...@googlegroups.com
Markos o circuito que foi montado para o teste é bem parecido com este.... 
Só que usando somente uma porta como entrada analógica...

Bom.... tempos menores não irão gerar maior corrosão.. são tempos inadequados para mais que irão gerar maior corrosão.... para menos, dificuldade em se ter uma boa leitura,,,, 

Fiz uma analise errada no e-mail anterior, em qualquer um dos casos houve a reversão na corrente (ainda vou olhar no osciloscópio!)...

Observando com calma olha que interessante a relação que apareceu com a água saturada....

Com água saturada com sal de cozinha!!!
......
TEMPO=1000,  624,  369, Delta= 255
......
TEMPO=100,  540,  413, Delta= 127
...
TEMPO=10,  489,  425, Delta= 64
....
TEMPO=1,  468,  435, Delta= 33
.....
O tempo/10 e a Delta/2

convertendo DELTA para tensão...
1,246334311.... 0,6207233627..... 0,3128054741... 0,1612903226

Outra coisa... inicialmente eu esperava que os valores fossem convergir para ~512 isso me fez confundir... eles estão convergindo para  ~455...
Imagem inline 1
Não pensei em fazer um experimento a longo prazo com tempos diferentes...... pois não pensava em usar este tipo de circuito para esta função..... antes provavelmente usaria um oscilador schmitt trigger... 


Markos

unread,
Dec 7, 2015, 7:59:38 AM12/7/15
to sis_emb...@googlegroups.com
Oi Alexandre,

Muito legal os seus experimentos.

Pelo que entendi a proposta do circuito é gerar pulsos alternados e as resistências R1 e R1 serviriam para reduzir a tensão aplicada nos eletrodos.

É interessante o padrão que você observou nos potenciais para diferentes tempos de polarização.

O modelo que se utiliza para explicar a condutividade em soluções se baseia na mobilidade dos íons.

Aqui umas animações simplificadas para o padrão em DC e AC:

mobilidade iônica em DC:
www.c2o.pro.br/hackaguas/figuras/condutividade_cc.gif

mobilidade iônica em AC:
www.c2o.pro.br/hackaguas/figuras/condutividade_ca.gif

Como você percebeu o tempo de aplicação do potencial provoca a mobilidade das cargas e, dependendo da intensidade do potencial, pode ainda provocar reações.

Quanto maior a concentração de íons, maiores serão os efeitos do tempo de polarização, pois é maior o número de cargas (íons) se movimentando na direção dos respectivos eletrodos. Além disso quanto maior a concentração de íons maior será a variação de potencial na superfície dos eletrodos.

Além disso seria importante avaliar como foram feitas as medidas. Ou seja, houve algum intervalo de tempo padronizado entre as medições com diferentes tempos de polarização?

Se o tempo de polarização afeta a medida, o intervalo de tempo entre os experimentos (e a ordem) também pode afetar as medições.

Quanto à convergência em torno de 455, e não 512 (como você esperava), fiquei pensando se não seria o efeito da diferença nos valores de R1 e R2.

Para testar essa hipótese seria interessante trocar R1 por R2 e verificar se o ponto de convergência sobe para ~569.

E qual o tipo de eletrodo que você usou?

Um amigo sugeriu o uso do CI LF398 , um CI dedicado para sample and hold.

Vou providenciar a compra e ver as possibilidades de uso.

Obrigado pelas suas contribuições.

Um Abraço,
Markos

Alexandre Nogueira

unread,
Dec 9, 2015, 11:54:03 AM12/9/15
to sis_emb...@googlegroups.com
http://www.octiva.net/projects/ppm/
water conductivity meter

Alexandre Nogueira

unread,
Dec 9, 2015, 12:41:04 PM12/9/15
to sis_emb...@googlegroups.com

Markos

unread,
Dec 9, 2015, 6:53:36 PM12/9/15
to sis_emb...@googlegroups.com
Oi Alexandre,

Muito legal o vídeo.

Achei muito interessante a explicação que ele dá para o funcionamento do condutivímetro com LEDs indicadores.

Ele também mostra o uso de pulsos bipolares mas, pelo que entendi, ele mostra um caminho diferente para se fazer medidas de condutividade sem a necessidade de um conversor AD.

A idéia de carregar a célula de condutividade como um capacitor e medir o tempo de carregamento até um valor de referência é muito interessante para ser implementada usando apenas um pino digital dispensando o uso de um conversor analógico digital.

Por exemplo, para placas do tipo Raspberry, que não possui um conversor AD, essa pode ser uma altertativa para implementar um medidor de condutividade.

Ao ver a explicação dele, fiquei pensando também em usar um CI 4066 para fazer o controle dos pulsos bipolares.

Depois que eu fizer os últimos teste do projeto atual, acho que vou experimentar essa idéia.

Quanto ao projeto no site http://www.octiva.net/projects/ppm/, me parece uma abordagem tradicional, equivalente, ou até mais complexa do que o projeto no artigo indicado pelo Leonardo (https://www.dropbox.com/s/eas8sg8jvf1lzu7/JCE%20condut_grad.pdf?dl=0)

Obrigado pelas dicas.

Um Abraço,
Markos

ala...@bonseletrons.com.br

unread,
Dec 9, 2015, 7:33:43 PM12/9/15
to sis_emb...@googlegroups.com

A tensão de referencia dele não deve ser 2V.
Aposto um café para cada um que é Vcc/2

Assim as equações fazem mais sentido!

-----
Alain Mouette

Reply all
Reply to author
Forward
0 new messages