Boa tarde a todos, estou montando um sistema para detecção de voltagem em três resistores com notificação pelo programa quando for cessada a corrente. No entanto, o que está ocorrendo é que mesmo com as conexões ligadas o console está retornando como se as resistências estivessem queimadas mesmo que a ligação esteja OK. Temo que seja um problema de mau contato, apesar de já ter trocado os jumpers e também dobrei as pontas dos resistores para melhor encaixe na protoboard.

Estou utilizando:
- Arduino UNO ligado no USB
- Protoboard
- Jumpers MxM

Abaixo irei anexar fotos do meu circuito e também meu programa na IDE.

Exibições: 365

Anexos

Responder esta

Respostas a este tópico

Gabriel Luiz Alves de Souza

Recomendo remover seu código da postagem, e anexa-lo com um .ino, isso facilita a visualização da turma.

Veja, na sua ligação, o que você fez foi: 5v -> resistor -> entrada analógica. Não tem nenhum divisor resistivo ou sensor, além disso, a leitura analógica fica em constante variação por causa da própria estrutura do hardware.

Então, esse "if(voltageOne != 4.90){" provavelmente vai retornar "verdadeiro" com uma frequência alta. 

Primeiro passo, saiba quais os valores você está tendo de retorno. Teste isso:

https://pastebin.com/F3Pq8hwk

Anexado o arquivo .ino na postagem. Fiz algumas alterações no programa, aparentemente resolvi meu problema do post original. Sou um tanto quanto leigo com elétrica/eletrônica mas estou desenvolvendo o circuito de forma experimental para uma atividade de meu estágio e gostaria de saber se estou o fazendo corretamente. Sem um divisisor resistivo ou sensor, minhas leituras não estão sendo confiáveis?

Rodei esse programa que me enviou e as três portas analógicas estão retornando 1023.

Boa tarde,

verifiquei que é o seu primeiro post aqui no LdG.

Sempre recomendamos aos novos, que leiam atentamente os tópico:

https://labdegaragem.com/forum/topics/sugest-o-de-como-postar"

Lendo, você encontrará a recomendação e o motivo de não colar códigos na área de texto do tópico.

Recomendo que você reedite seu tópico removendo seu código da área de texto do seu tópico e

anexando-o  como um arquivo.

Em seguida também escrito  no referido tópico, nos dê o maixo de informação para que então tenhamos condições de ajuda-lo.

Por exemplo: O que significa "retornando como se as resistências estivessem queimadas "?

Que valor aparece impresso na serial?

Use o Serial.print() para imprimir os valores de :

   voltageOne
   voltageTwo
  voltageThree

e informe aqui os valores.

RV mineirin

Bom dia.

PS: 

correção:

use assim:

Use o Serial.print(x,6) para imprimir os valores de :

    Serial.print(voltageOne,6);
    Serial.print(voltageTwo,6);
  Serial.print(voltageThree,6);

e informe aqui os valores.

RV mineirin

Bom dia!

Obrigado pela instrução, anexei meu programa como .ino na postagem, pode-se perceber que realizei algumas alterações em meu código e, com o serial.print atualmente meu programa está retornando 4.90000 para todas as três saídas analógicas.

Com "retornando como se as resistências estivessem queimadas"? eu queria dizer que meu código estava retornando "Resistência 1 queimada", assim como para a 2 e a 3. Adicionando um delay(1000) ao final do programa aparentemente meu problema foi resolvido, pois agora estou recebendo essa mensagem somente quando retiro um dos resistores ou os jumpers ligados em suas respectivas saídas analógicas.

Bom dia,

obrigado por entender as razões da solicitação e de ter removido o código da área de texto.

Sobre sua dificuldade, o que posso dizer, por muito que já li nos fóruns, e por experiência

própria, que ao comparar valores de variáveis tipo float deve  tomar cuidado.

Por exemplo no seu caso :

         "  float voltageOne = sensorOne * (4.9 / 1023.0) "  e

        "  if(voltageOne == 4.90) " 

ou 

         " if(voltageOne != 4.90) "

o float obtido pode ser   4,8999999999999, ou 4,90000000001, que será diferente de 4.90.

Ao usar o if em ambos casos o resultado será um valor diferente de 4,90

O recomendado ao usar float em comparação é usar intervalos:

       if( (voltageOne  >= X) and (voltageOne  <= y))  

Qualquer dúvida estamo0s aqui para tentar auxiliar.

RV mineirin

PS: Ao usar as linha de código do seu exemplo no corpo do texto, não estou postando

código e sim fragmentos de código com textos ilustrativos do código para dar sentido à

explanação e por isto os realcei em negrito.

Em outro fóruns existe um recurso de postar esta linha entre tags tipo </>, mas no LdG 

não temos este recurso.

RV mineirin

Grande RV:

   Sempre que coloco algumas linhas de código no corpo do post, com a mesma finalidade com que o fizestes, tenho que escrever "correndo o risco do RV me xingar!"

   Depois dete teu P.S., não preciso mais!   :-)

Abração!

D. T. Ribeiro.

Bom dia!!

Muito obrigado pela orientação, estou utilizando essa comparação lógica em meu programa agora. Estou com outras dúvidas acerca do meu desenvolvimento porém acho mais pertinente abrir outro tópico devido a diferença de assunto.

Olá, Gabriel!

   Além de reforçar o que foi solicitado nos posts do Tiago e do RV, sugiro que você ligue no UNO o +5V ( e depois o +3V3 ) diretamente nas entradas analógicas que está usando no Sketch.

   Se o problema persistir, meça a continuidade dos jumpers diretamente nos pinos do UNO, isto é, se o pino de +5V ( ou +3V3 ) está, de fato, em curto com as entradas analógicas. A medição direta nos pinos e não nos jumpers tem por objetivo testar inclusive os conectores do UNO. Se não estiver, troque os jumpers até garantir esta continuidade e refaça os testes.

   Se, ainda assim você ler algo em torno de 0V, que é o que eu suponho estar acontecendo, o problema está no seu programa.

   Aliás, as perguntas feitas pelo RV em seu post tem por objetivo não só poupar o tempo de quem ajuda, mas principalmente fornecer uma solução mais rápida para quem precisa. Se já tivéssemos aquelas informações, talvez o problema já teria sido solucionado.

   Se não me engano, há uma passagem bíblica que diz: "Ajuda-te que Eu te ajudarei!"

Sucesso!

D. T. Ribeiro

Bom dia D. T. Ribeiro!

Ligando diretamente nas entradas analógicas obti 4.9V com a tensão de 5V e entre 3,2762V e 3,2906V para a tensão de 3,3V. Como dito acima realizei algumas alterações em meu código que acredito terem resolvido meu problema mencionado no post, mas por ter pouco conhecimento de elétrica/eletrônica não tenho certeza.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço