Estou fazendo um projetinho no Arduíno, e preciso alterar um valor através de um potenciometro

Ex: 1.780,00 incrementando 0,05 até chegar em 1.782,50 ou

desincrementado 0,05 até chegar 1.777,50

Com o potenciomentro na posição central nada deve acontecer

usei a função de AnalogRead, e o valor lido fica muito alterado

Qualquer ajuda eu agradeço

Exibições: 229

Responder esta

Respostas a este tópico

Olá,

Anexa o seu sketch, não cole na área de texto, usa a ferramenta Deseja carregar arquivos e anexe.

Siga estas diretrizes do forun. https://labdegaragem.com/forum/topics/sugest-o-de-como-postar

Abs.

CK

olá Mauro Valerio Ferreira 

tudo bem?

Independente da minha resposta, recomendo seguir as orientações do Carlos kwiek, afinal, outras pessoas podem ter a mesma dúvida que você no futuro.

(Certa vez tive uma aula com o Elcids Chagas (usuário muito bom, era - pois está sumido já tem tempo - conhecido por responder com textos enormes e com uma quantidade igualmente enorme de conhecimento, as vezes mais conhecimento do que era necessário, mas aprendi que conhecimento nunca é demais) onde ele tratou desse assunto. Sei os motivos, mas não tenho capacidade de transmitir, NEM DE LONGE, com a precisão e didática que ele tem. Então serei simplista ok?)

Nos pinos analógicos do arduino, caso seja definido como entrada, você tem a opção de realizar uma leitura digital ou analógica.

A leitura digital (digitalRead()), retornará SEMPRE o valor 0 (0v) ou 1 (5v). É elementar, não precisa de mais explicações (acho que 3V, ainda retorna como HIGH/1/alto)

A leitura analógica (analogRead()) retornará um valor DE 0 (0v) ATÉ 1023 (5v).

O "arduino" possui apenas 1 entrada analógica real, entretanto ela é multiplexada (A0~A5), e fica num "loop" para trazer a informação ao usuário.

A vantagem, é que o usuário utiliza "6 entradas analógicas", e não apenas 1. E isso AMPLIA MUITO as possibilidades do produto (muito mesmo).

A desvantagem, de modo resumido, é que a mudança do canal do multiplexador gera uma capacitância parasita, com localização em uns 2 ou 3 subníveis do circuito. E esse é o motivo do ruído/variação.

Isso é um problema do "arduino"? não, é uma característica.

Isso é um problema para seu projeto? Depende do quão estável o sinal precisa ser para você.

Caso você precise de mais estabilidade do que ele fornece, então você irá precisar TRATAR o sinal para se adequar as suas necessidades. Para isso, existem 2 métodos: software e hardware (pode usar os 2 ao mesmo tempo também).

Por software

você poderá fazer uma média dos valores dentro de um determinado tempo. Ou seja, soma o valores "N" vezes, e depois divide por "N".

obs- Recomendo utilizar a lógica com millis(). Caso não saiba usar a função, veja este link: https://labdegaragem.com/forum/topics/aula-fun-o-millis

obs2- também pode usar uma soma direta, o resultado será parecido ex:

int var;

int count;

count = count + 1;

var = var + analogRead(pino);

if (count == 50){

     var = var/50;

     count = 0;

   }

onde "var" será a referência do sinal do seu potenciometro.

Por hardware

você precisará fazer um filtro RC. Ele irá reduzir a capacitância parasita.

Sugestões para você assistir

https://www.youtube.com/watch?v=pk1oV7GHaTI

https://www.youtube.com/watch?v=zKMYsPMKYfQ

Após tratar este sinal, agora teremos um sinal mais estável. O que resta agora é LOGICA DE PROGRAMAÇÃO.

obs- caso eu tenha errado em algo, peço aos colegas que me corrijam. 

Olá.

  Nesse caso, com uma variação de 2,50 com incremento de 0,05 recomendo usar umas aproximações.

  A leitura da porta é algo como 0 a 1023 (depende do modelo).

  2,5 para mais ou 2,5 para menos são 5,0 com incremento de 0,05 são 100 incrementos.
  Se dividir por 10 vai ter 0 a 102. Parece perfeito. Se quiser de 0 a 100 mata o limite no if()

  Vc faria algo como:

  Seu valor = 1770+0,05*(AD/10).

  Deve fazer o serviço que vc quer, variando por toda a excursão do potenciômetro.

  Só teria um detalhe: Como é para ajuste humano o usuário pode entender uma experiência ruim se vc deixar no limiar e ele ficar meio que pulando. Eu estabilizaria isso  com os filtros digitais e eletrônicos sugeridos. A ultima casa costuma variar sempre, um pouco mais de variação é comum se vc usar fios longos, sem blindagem, ligação incorreta do GND, fonte ruim, cargas ruidosas perto, etc. Essa conta elimina a ultima casa, então deve ficar bom.

  

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço