Fizemos algumas alterações no programa de aquisição de dados Multipar para permitir o uso do programa com outros modelos de medidores de bancada usados em Laboratórios de Águas.
O objetivo principal da alteração foi introduzir uma estrutura modular para permitir que o programa principal carregue o módulo específico para a aquisição das leituras de um determinado medidor.
A tela inicial permite selecionar o modelo do medidor e consequentemente o respectivo módulo que será carregado em seguida para a tela de configuração dos sensores instalados, unidades de leitura e porta serial usada.
Os procedimentos ler_porta
e tela_config
passaram a ser definidos nos módulos para cada modelo de medidor para permitir que a manipulação da saída de cada medidor seja feita por uma rotina específica.
E os módulos ficam armazenados no diretório multipar
Nessa primeira etapa, utilizamos o medidor da WTW™, modelo Multi 340i, o qual possui duas entradas. Uma para pH ou ORP e outra para OD ou Condutividade.
Este equipamento exibe apenas uma mensagem de erro se não tiver conectado um eletrodo calibrado, por isso tivemos que preparar um eletrodo para o equipamento enviar valores de OD pela porta serial. Como o eletrodo estava sem uso há alguns meses providenciamos a troca do eletrólito, limpeza e calibração conforme o manual.
O manual do medidor (em inglês) está disponível no site do fabricante (ba52318e02_Multi_340i.pdf), mas também deixamos uma cópia no nosso site (ba52318e02_Multi_340i.pdf).
Tive dificuldades para localizar as informações no manual do equipamento (em inglês), por isso resolvi organizar um pequeno resumo (em português) sobre o medidor e o sensor (CellOx 325) e disponibilizar para download: WTW_Multi_340i_CellOx_325.pdf.
Segundo o manual o controle remoto pode ser feito com o programa KOM™ ( para uso exclusivo com Windows™) fornecido pelo fabricante, permitindo uma comunicação bidirecional entre o PC e o medidor.
Mas como a nossa proposta é o uso e a divulgação de Software Livre na Automação em Laboratório de Águas decidimos usar apenas a comunicação unidirecional registrando os dados enviados pela porta serial em intervalos de tempo pré-definidos.
Em seguida configuramos, no medidor, a velocidade e o intervalo de tempo mínimo (5 segundos) para o envio de dados pela porta serial. Veja orientações na página 9 do resumo (WTW_Multi_340i_CellOx_325.pdf) ou na página página 56 do manual (ba52318e02_Multi_340i.pdf).
Foi utilizado um cabo de comunicação do fabricante (AK340/B) que possui um conector DB9 fêmea conectado a um adaptador USB-Serial, pois o Notebook utilizado não possui uma porta serial.
Mas quem quiser montar um cabo de comunicação basta seguir as informações sobre a pinagem disponíveis na página 55 do manual.
Para mais informações sobre a montagem de cabos para comunicação serial visite a seção Portas Seriais e Comunicação Serial.
Nessa etapa inicial usamos o programa de aquisição (femto600s.tcl) que, pela sua simplicidade, permite rápidos ajustes nos procedimentos para tratamento dos dados.
Configuramos a porta serial com os comandos:
set porta [ open /dev/ttyUSB0 r+ ] fconfigure $porta -mode 4800,n,8,2
E observamos o envio de muitos caracteres end of line (identificado com o comando :set list do editor vi), o que insere linhas em branco entre os dados.
Isso foi resolvido com a inclusão do teste if:
if {$dados == ""} { return }
Observamos também o envio de caracteres pouco usuais (ø - o cortado, Ω - ômega e æ - ae) dependendo do parâmetro monitorado.
Para filtrar esses caracteres procuramos nos mecanismos de busca (Google, Altavista e Duckduckgo) pelos respectivos códigos Unicode para poder usar com Expressões Regulares.
Para testar o reconhecimento desses caracteres usamos as seguintes expressões regulares:
if { [regexp {\u0013} $dados c] } { .tela.dados insert end "Variável Ômega -> $c\n" } if { [regexp {\u00F8} $dados c] } { .tela.dados insert end "Variável Grau -> $c\n" } if { [regexp {\u00E6} $dados c] } { .tela.dados insert end "Variável ae -> $c\n" }
A interface de configuração permite a seleção dos eletrodos instalados, unidades de leitura e a porta serial usada.
O código em Tcl/Tk está disponível para download no link: multipar_02.zip. Deixamos também um pacote Starpack para Linux lo link: starpack_multipar_02.zip