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
Tags:
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
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2023 Criado por Marcelo Rodrigues.
Ativado por