ScadaBr - Arduinos - Influência entre as portas analógicas

Amigos,

trago aqui uma discussão, baseada na observação de slaves (escravos) que tenho instalados em uma rede de automação. O mestre dessa rede é o software chamado ScadaBR, bem discutido nos posts do LDG.

Acontece que estou procurando melhorar a exatidão dos valores obtidos para me garantir que as leituras realmente são as reais.

Observem a leitura de uma porta analógica que possui um potenciômetro ligado a ela. Durante 24h, não foi feito nenhum ajuste no potenciômetro.

Fiquei muito intrigado por essa variação. Por coincidência fui olhar a variação da leitura de um sensor de iluminação que tenho no mesmo arduino. Observem o gráfico.

Para mim ficou claro que existe uma relação. Checando no código observei que as leituras são feitas em sequência, sem intervalo. Dai fui pensar se é necessário a colocação de um delay, ou se possível, outra alternativa.

Em um outro escravo da mesma rede estou monitorando uma porta analógica ligada ao GND. Para minha surpresa o valor não ficou zerado. Observem que até caiu com o tempo. O que acontece no arduino?

Alguém tem algo a contribuir com esse assunto?

Exibições: 2994

Responder esta

Respostas a este tópico

Então,agora estou as voltas estudando o cerne dos microcontroladores Avr atmega 328, infelizmente isso leva um pouco de tempo, mas estou procurando fazer o mais rapido possivel, eu tenho um teste para vc fazer o problema que eu não vou poder analisar em profundidade os resultados, mas pode nos ajudar. 

Como vc disse parece que foi resolvido a questao dos graficos quando vc colocou o delay, o que significa que o wiechert estava certo quanto ao tempo de amostra, mas a minha ideia é que vc faça uma uma correção de offset em todo e qualquer sensor para utilizar no arduino sem problemas com sensores analogicos 

lembrando que o objetivo deste teste e tirar o fator de correção (que por sinal ainda não sei como fazer) mas eu chego lá.

Procedimento ideal:

  • um arduino 
  • dois potenciometors com tensões maximas e minimas cada (0v e 5v), de repente vai precisar de um divisor de tensão para fazer pelo menos um dos potenciometros estritamente em 5v e o outro estritamente em zero
  • um datalog para arduino para gerar o grafico dentro do arduino e depois comparar com o grafico pelo scadabr 
  • um cartão sd para guarda as informações do grafico gerado pelo datalog 

Caso vc não tenha o datalog ou não queira fazer vc pode utilizar o do scadabr mesmo mas isso tira um pouco, o objetivo que eu tinha de comparar os dois grafico para tirar uma melhor conclusão 

Caso queira usar um datalog no arduino eu vou buscar por aqui o precedimento ou podemos aguarda algum colega garagista no dar um dica de compra de shield e como utiliza-lo ou usar o proprio shield ehternet com Sd com algum codigo (bom) de datalog. 

O objetivo é ver como os graficos iram fica depois por exemplo de um dia inteiro em ação, teoricamente um deveria ficarsomente em zero e outro somente em 5v constantemente(talvez com variação desprezivel), caso aconteça a mesma situação dos graficos acima vamos precisar corrigir. 

lembrando que esse teste que eu estou te passando ainda é uma caixa preta até pra mim, acho que podemos aprender tb fazendo por tentativa e erro e dai tirar a teoria toda do problema

Outra procure mostra a solução que vc consegiu no momento e como ficaram os graficos atualmente.

Adriano,

li seu comentário mas ainda não entendi o teste.

Faço qualquer teste no sentido de entender mais os microcontroladores.

Tenho o ethernet shield com microSD. Mas não sei nenhum código.

Pode mandar o teste que faço aqui e gravo além de vc poder acompanhar pelo scadabr.

Não entendi também a questão dos potenciômetros. 

Se quiser fazer um esquemático ajuda também.

De qualquer forma esse conhecimento contribui para quem quiser fazer o arduino uma plataforma legal para slaves do scadabr.

O objetivo deste teste é ver como se comporta os graficos gerados pelo proprio arduino nele mesmo (com ethernet shield) e comparar com o grafico gerado pelo  scadabr,no geral o sitema de aquisição estara perfeito quando a aquisição no proprio arduino e no scadabr estverem iguais, eu sei que o fabio durão usou um datashield vendido aqui no LDG, ele deve saber usar muito bem esse shield, mas vou procurar por aqui o procedimento para usar um programa datalog no ethernetshield, mas vc já pode fazer no prorprio scadabr 

Na verdade tenho que fazer uma correção,estará pefeito se ambos demostrarem os mesmos valores padroes para cada situação (arduino e scadabr),caso tenha  alteraçoes ai temos que ver.Vou fazer um modelo de teste aqui ete passo.

Acredito que uma vez a gente acertando a aquisição de dados do arduino poderemos setar qualquer outro sensor

aqui o esquematico parao teste:

no p1 vc coloca 5v e no outro vc coloca 0v, deixa rolar o grafico no scadabr durante um bom tempo para vermos o resultado da plotagem do grafico.

sidney,vc pode usar outra fonte como de 12v no entanto que obedeça a formula:

onde Vout é a tensao de saida 5V, 

Vcc a tensao de entrada 

R a resistencia

Adriano,

Acho que dá pra simplificar o seu teste usando simplesmente o raciocínio, vamos lá:

Onde você escreve:

  • dois potenciometors com tensões maximas e minimas cada (0v e 5v), de repente vai precisar de um divisor de tensão para fazer pelo menos um dos potenciometros estritamente em 5v e o outro estritamente em zero

Não é preciso dois potenciometros, apenas ligue uma entrada no 5V e a outra no GND... mais simples e garantido que isso não existe.

  • um datalog para arduino para gerar o grafico dentro do arduino e depois comparar com o grafico pelo scadabr 
  • um cartão sd para guarda as informações do grafico gerado pelo datalog 

Não é preciso nada disso, apenas observar o gráfico gerado pelo SCADABR, afinal de contas, as entradas estão ligadas ao 5V e ao GND e não estão variando.

Qualquer variação nos valores do gráfico significam erros de conversão.

Manter o experimento simples e confiável é o melhor caminho a seguir, complicar pra que?

Tranquilo wiechert, é que eu nao tenho tanta experiencia com o arduino,  então faço do jeito que entendo, tambem acho que a sua opção e bem mais simples para o sidney, o minha unica preocupação é que o valor da tensão nao fique flutuando gerando erro na plotagem.

Ligando as entradas direto ao 5V e ao GND as entradas  só vão flutuar se a fonte de alimentação variar...  por isso o uso de divisor de tensão nas entradas para testar a pior situação (uma entrada em 5V e a outra em GND) é desnecessário e só serve para complicar a montagem e aumentar os possíveis erros por mau contato.

Como o 5V da fonte é usado também como referência do AD do atmega, qualquer variação na tensão de alimentação não será detectada. Portanto o uso do cartão SD será além de trabalhosa, é ineficaz e desnecessária.

wiechert, 

Como vc falou se a fonte variar, pode gerar uma variação ou outra a ideia seria que os potenciometros com o divisor de tensão gere os 5v independente da flutuação da fonte(para garantir mais, pode-se usar até um zener), normalmente se faz isso para garantir a tensão na saida independente da variação da fonte, se a fonte do arduino em qualquer momento variar não saberiamos se foi a fonte ou o AD. Eu ainda sou a favor de colocar o divisor pelo menos na saida de 5v.a não ser se a fonte for absolutamente confiavel(o que ao meu ver muitas fontes não são tao confiaveis assim) pelo menos essas baratinhas.

Adriano, 

O problema principal do tópico e o objetivo do teste é verificar se a conversão do AD está ocorrendo corretamente quando se usa duas ou mais entradas.

Para isto é preciso verificar se tempo de aquisição está correto e que o circuito de sample and holding do AD se carregue completamente com o valor aplicado na entrada selecionada no momento da leitura.

Portanto, para que se tenha certeza disto é preciso pegar a pior situação possível:

Uma entrada recebendo o extremo inferior enquanto a outra entrada está recebendo o extremo superior da faixa de trabalho do AD, que no caso é GND e 5V respectivamente. Ou seja, o circuito de amostragem irá se carregar ou se descarregar entre os valores extremos a cada vez que mudarmos a seleção da entrada analógica para uma nova leitura.

A entrada que está no GND estará no mesmo potencial de referência minima do AD que é o próprio GND, resultando em uma saída 0 no AD.

Sua ideia de garantir isso com o divisor ou com o zener na saida do divisor não resolve... pelo simples fato que não adianta garantir uma entrada estável e não garantir a estabilidade da tensão de referência do AD pino 21(AREF) do ATMEGA328P. Pois a conversão é feita pela comparação entre AREF e a tensão da entrada. E caso qualquer uma variar o resultado também irá variar, e ai não será possível identificar se a leitura variou devido a falha na aquisição ou se foi variação na referência. Fora o detalhe de que para que a saída do conversor chegue ao fundo de escala (1023) a entrada deve estar no mesmo nível de tensão da referência, oque não é garantido pelo circuito sugerido...

Mas isso é garantido simplesmente aplicando na entrada analógica ao mesmo potencial do pino AREF, ou seja, ligando a entrada analógica no pino 5V do arduino.

Ai não importa mais se a tensão vai mudar de 4,99V para 5,5V ou para qualquer outro valor, o resultado na saída do conversor tem que ser 1023, se não for é porque o tempo de aquisição foi curto. 

Eliminamos desta forma qualquer influencia no resultado que não seja devido ao ajuste do tempo de aquisição do AD.

Entendeu agora porque o divisor só iria atrapalhar?

Voltando ao objetivo principal do teste e do tópico ( verificar a inexistência de interferência entre duas ou mais entradas ), o resultado ideal seria obter sempre o valor 0 (limite inferior) e 1023 (limite superior).

Abraço.

Bom,

todo mundo aqui foi fantástico. 

Façamos assim: Começei um novo teste e veremos o resultado depois de uns dois dias. Dai posto o resultado aqui para comparação e vou especificar bem o teste para ficar bem claro.

Aos que tem acesso ao sistema podem olhar online.

até

Sidney quanto a referencia de terra deixe todos no mesmo GND, até melhor usar o do arduino mesmo.

Perfeito wiechert,como sempre cada post seu é uma aula,entendo mais quando vc posta sobre um determinado assunto do que eu lendo e relendo os livros.Mas eu ainda continou lendo os materias que vc recomendou para me aprofundar neste assunto. 

grande abraço

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço