Como Funciona o ROTARY ENCODER | Como programar o Encoder no Arduino | Tutorial de programação
ฝัง
- เผยแพร่เมื่อ 25 พ.ย. 2024
- O Rotary Encoder é um componente que possui um eixo rotativo e que tem como saída dois sinais pulsados, que nos informam qual o sentido e qual a velocidade que o eixo está sendo girado.
Ele tem o tamanho e formato parecidos com um Potenciômetro, mas a semelhança fica só no visual, internamente são componentes bem diferentes. O Rotary Encoder não tem limite de giro, você pode girar indefinidamente para ambas direções, horário e anti-horário. Internamente existe contatos que estão abrindo e fechando enquanto o eixo gira, ou seja, são chaves que geram o pulso que deverá ser lido para saber qual a velocidade (quantos pulsos) e qual o sentido (qual a sequencia de pulsos)
É possível identificar qual o sentido do giro do Rotary Encoder através da análise dos dois pulsos de saída dele, no vídeo eu explico a técnica, é bem simples e pode ser implementada em Arduino por exemplo.
No vídeo em mostro um exemplo de programa onde temos um contador de pulsos incrementando ou decrementando conforme a velocidade e sentido de giro do Rotary Encoder. O resultado disso é exibido em Display LCD.
Compre o seu microdontrolador:
Arduino Mega 2560: s.click.aliexp...
Arduino Uno: amzn.to/2ZATs0b
Arduino Uno + ESP8266: s.click.aliexp...
NodeMCU ESP8266: amzn.to/3erEWAd
Não deixe de se inscrever no canal para não perder todas as aulas e futuros projetos! Aproveite para me seguir também nas outras redes sociais:
Instagram: / cleber.funbots
Facebook: / cleber.funbots
Telegram: t.me/cleberfun...
Um abraço! 🤓
Prof. Cleber Borges
__________
Acredito que a contagem a cada dois que aparece no display é devido a contagem da borda de descida e de subida, no caso ambas são contabilizadas. A solução que encontrei para contar apenas um por vez foi alterar o contador para contar by halves, deste modo substitui
int contador = 0; por float contador = 0.0;
contador++; substitui por contador += 0.5;
contador--; substitui por contador -=0.5;
te amo
Muito obrigado pela aula!
Bom, sem resposta do Prof., resolvi tentar entender o que ocasiona o incremento ou decremento de 2 em 2...
Ao que parece o responsável por isso é o feito baucing, uma vez que não há logica para isso no código.
E muitos acham erroneamente, que os resistores de pullup da plaquinha são para evitar tal efeito, quando apenas servem para travar as entradas do arduíno em nível alto.
Basta então colocar um capacitor de 100nf para o pino CLK e outro para o DT, ambos ligando ao ground, foi como resolvi por aqui.
Interessante. Obrigado.
Simples e funcional. Faltou só o link para download.
ótima explicação!
Olá Prof. Cleber.
O seu vídeo é nota 10.
Durante o vídeo, o Sr. comentou sobre controle PID e há muito tempo estou procurando um controle de temperatura PID para uma resistência elétrica no Arduino. O Prof. poderia postar um vídeo com o código desse controle?
Não precisa de AUTO-TUNE, a sintonia eu uso um controlador NOVUS e só copio as constantes Kp, Ki e Kd para o Arduino. O sensor de temperatura é um termopar do tipo K controlado pelo shield MAX6675.
Muito Obrigado.
Olá Gilberto! Eu fiz um vídeo sobre um controle de temperatura PID utilizando um Fan PWM, acho que você consegue adaptar fácil para o seu projeto, assiste esse vídeo: th-cam.com/video/K0G01H5wj1Y/w-d-xo.html
Ótimo vídeo... Da para usar ele para medir ângulo?
oi Lucas! Acho complicado porque a resolução dele não é tão boa para ângulos, se for pequenos ângulos deve ficar bem ruim. Sugiro tentar com potenciômetro multivoltas, fica bem melhor.
Sabe me dizer se ele mais duro para girar do que aqueles comum?
Obrigado pelo vídeo. Ele guarda a posição? Isto é, ele poderia ser usado para registrar a posição de um eixo robótico?
Obrigado! Não guarda, você tem que armazenar na memória a última posição do robô.
Se eu pegar um rotary encoder comum E colocar os resistores conforme a ligacao do ky-040 ....ele vai funcionar igual o ky-040?
Excelente conteúdo. Esse encoder suporta uma rotação mais elevada, como por exemplo ser acoplado a um eixo?
Obrigado Alberto! Creio que não, porque ele tem uma certa resistência ao girar, não fica legal com um motor. Para essa finalidade recomendo utilizar um disco encoder com um leitor Infravermelho, ensinei como faz nesse vídeo aqui: th-cam.com/video/tr83BTwIujY/w-d-xo.html
Já cheguei com o joinha.
ola, cheguei aqui pois tenho um projeto de trocar o potenciômetro que tenho nos pedais do meu simulador e por um encoder, mas agora to na duvida entre esse modelo ai que é o ky-040 q é semelhante a um potenciômetro na aparência ou colocar aquele outro, o sensor hall 49e. Poderia fazer me esclarecer se tem diferença ou se um é melhor que o outro? do meu ver é apenas aparência pois os 2 são digitais. Obrigado pelos vídeos e muito sucesso no canal, grande abraço.
Oi Ederson! O sensor hall é um tipo de sensor magnético, o que é diferente desse encoder que usa comutação de chaves mesmo. Melhor procurar o encoder que é mesmo usado no seu pedal. valeu!
muito bom to tentando tira uns 3 botoes de um radinho arduino e coloca esse rotary encoder mas nao ta fazio naao
Opa Cleber, quero fazer um projeto de stream deck, porém, gostaria de controlar o volume do meu PC de forma tátil, inicialmente pensei em adicionar alguns potenciômetros, no entanto, quando vi esse vídeo, fiquei na dúvida de qual escolher, poderia me ajudar? Qual seria mais fácil a implementação no projeto? Pois, não encontrei muita coisa na Internet que me auxiliasse. Já me inscrevi no canal e estou maratonando, muito bons os seus vídeos, parabéns!
oi Nick! Bom, não sei como seria para o potenciômetro, pois teria que ser um código que enviasse o valor dele quando ele sofrer alteração, mas o pot pode ficar instável daí ficaria mandando toda hora, tem que testar pra ver. Talvez usar botões normais mesmo já ajude, um para aumentar e outro para diminuir. Você vai precisar acertar no seu PC como seria o atalho para alterar o volume e configurar esse atalho no seu código, não parece difícil. Se tiver na dúvida ainda me avisa, abraço!
@@FunBots No vídeo onde mais recente você adicionou um encoder no sistema, acha que eu possa utilizar um multiplexador para colocar mais 2 encoders? Estou fazendo meu projeto baseado no free deck. Obrigado pela resposta!
@@NickAndGamer Nick, nunca usei multiplex com encoder, acho que não funciona legal, por conta de possíveis perdas de leitura (tempo descoordenado multiplex-arduino), mas teria que testar para ter certeza. Eu iria pelo jeito mais certo que é usar outros pinos para os outros encoders mesmo e mantendo a leitura no código de forma similar para todos eles, acho que é bem melhor para garantir eles funcionando corretamente. valeu!
@@FunBots Entendi, irei conectar apenas o switch do encoder nos multiplex, já os out's nesse vídeo você disse que precisam ser portas digitais, mas no outro conecta em analógicas, poderia me elucidar? As portas que sobram, são: D2 á D5 e A0 á A3. Obrigado pela ajuda.
@@NickAndGamer As portas analógicas funcionam como digitais também, mas o contrário não. ;)
Olá amigo,estou querendo fazer um projeto que inclui um desses potenciômetros e queria saber se você conseguiria responder minhas dúvidas...
1-existe algum modelo desses encoders rotatorios que tenha apenas 3 variáveis? tipo que não gire infinitamente tipo de ventilador que tem apenas 3~5 posições.
2-todos esses potenciômetros Encoders precisam de C.I./Arduino pra funcionar ou só é necessário em Encoders rotatórios infinitos onde precisa da função analógica?
Ótimo Vídeo continue assim!!
Olá amigo. se eu entendi bem o seu caso, o que você precisa não é nem de um encoder e nem de potenciômetro, mas sim de uma chave rotatória com 3-5 posições. Procure por esse termo no goole/mercado livre que com certeza você acha alguma. Os encoders precisam de algum CI para conseguir ler sim, porque no fundo eles só geram um tipo de onda quadrada, então precisamos de um CI para interpretar isso e fazer alguma função com eles. Valeu!!!
eu gostaria de de colocar um encolder na minha fonte de bancada Wanptek, estou estudado uma forma de fazer isso. Estava pensando em utilizar um resistor digital, tem alguma ideia melhor?
Pergunta difícil hein, teria que conhecer o esquema da fonte e ver o que melhor adapta. Acho que provavelmente seria o resistor digital
Olá boa tarde Prof. Cleber, tudo bem?
Estou fazendo uma adaptação e uma caixa de som que tem como ajustador de volume botões de pressionar mas eles estragaram e eu queria colocar um Encoder rotativo para facilitar ajustes. No caso das caixas de som para aumentar/diminuir o volume, quando pressiono no VOL- ele fecha contrato com dois terminais naplaca circuito (terminal A e B) e quando eu pressiono o botão VOL+ fecha contato com os terminais B e C onde o terminal B e terra. Teria de alguma forma usar o Encoder com Arduino neste meu projeto onde eu rodo ANTH/HORÁRIO ele abaixe/aumente o volume fechando contato nos terminais do arduino ?
Muito obrigado
Oi Rafa! Cara, ACHO que dá... você faz a leitura do Encoder do mesmo modo que fiz no vídeo, daí você programa para o Arduino acionar uma saída digital se girar para sentido horário e outra saída diferente quando girar anti-horário. Daí nessas saídas você precisa colocar um transistor para fazer o papel do antigo botão, na base do transistor você conecta essa saída do Arduino (com um resistor de 1k entre eles), daí os contatos do botão você conecta no coletor e no emissor do transistor. Essa solução depende muito de como é o circuito da sua caixa, se for algo bem simples (o botão mandava GND), deve funcionar sim! Sugiro testar num protoboard antes. Valeu!
Prof., na parte do vídeo que mostra o funcionamento, está incrementando e decrementando de 2 em 2...
Vc alterou o código para esse implemento?
Olá amigo, sabe me dizer por qual motivo meu rotary encoder só apresenta numero de 0 à 127 ??? Gostaria de decrementar com números negativos.
Olá companheiro, preciso muito de uma ajuda. Estou fazendo um projeto de um volante de F1 e nele usam 3 desses encoders como botões de opção e configurações do volante. Mas queria aumentar o projeto e botar uma embreagem no volante (exatamente como no F1 real). Nesse caso vão ser duas borboletas para as marchas e uma embaixo para a embreagem.
Mas eu precisava que a embreagem funcionasse exatamente como no carro, que é como se fosse um potenciômetro. Quanto maior a pressão "mais forte" o sinal no Pc.
Eu não entendi muito bem a diferença entre esses encoders e um potenciômetro.
Poderia me ajudar?
Pois pensei em botar o potenciômetro no eixo de giro da borboleta. Quando eu for apertando ela, o potenciômetro vai girando (deu para entender minha ideia?).
Pergunto também, pq se esse encoders funcionarem, pego 4 em vez de 3.
Fala Guto. O potenciômetro é um resistor variável e o Encoder são chaves comutando, o potenciômetro é lido de forma analógica (valores entre 0-1023) e o encoder é digital (sempre é 0 ou 1). Então o caso da borboleta dá sim para colocar um potenciômetro para ler a "intensidade do pressionar", o problema será adaptar ele no mecanismo dela e ao mesmo tempo ter sensibilidade, pois o potenciômetro irá girar bem pouco com o movimento dela. Sinceramente não sei como melhorar...
Professor pode fazer um código para esse ROTARY ENCODER com raspberry pi pico usando usando micropython.....
Encima fazer uma fonte com o encoder
é possível ligar encoder como um botão?. pra um lado ativa o botão A e do outro botão B. se dou 10 clicks é como pressionar o botão B 10 vezes seguidas.
Queria saber o mesmo
@@silverAceband pelo q já estudei até é possível mas não de forma automática, tem q primeiro ler o encoder e colocar na programação pra executar o botão.
Pq estava incrementando de 2 em 2? Valeu!
Vc é a terceira pessoa que faz esse questionamento, mas infelizmente sem resposta.
Não tem lógica esse funcionamento incrementando de 2 em 2.
A maioria dos códigos desses vídeos são cópias, ou seja, foram desenvolvidos por outra pessoa, então tem coisas que não sabem explicar.
Ao que parece, o responsável por isso é o efeito baucing, portanto com uma filtragem vc consegue fazer o incremento ou decremento de 1 em 1.
Foi como resolvi aqui...
Coloque um capacitor de 100nf do pino
CLK para o ground e do DT para o ground.
Estou com um de 3 terminais. Tô meio perdido
Fala Zelmiro! Cara, você tem o datasheet dele? Me manda uma foto dele lá no insta, abraço!
Serve como volante para jogos? Percebi que ao girar tem umas paradas...
Para jogos acho que não fica legal esse modelo, teria que ser um mais preciso. Eu sugiro tentar um potenciômetro de precisão (multi-voltas). Abraço!