Bom dia.

Estou ciente que existem inúmeros tópicos sobre o assunto, porém já testei todos os codigos apresentados que consegui encontrar e nenhum calcula a rpm corretamente.

Tenho um contador de RPM da minipa para comparação.

Alguem tem algum código que marque realmente a rpm?

Tenho um motor que gira exatamente a 120 rpm e nenhum dos codigos que testo marca essa velocidade.

Existem incontaveis videos, mas não conferem a rpm, apenas mostram um monte de numeros ..

Alguem pode me ajudar,  preciso marcar a RPM de 60 a 300rpm.

Muitos marcam alternadamente 60 -120 -60 -120...

Grato

Exibições: 3061

Responder esta

Respostas a este tópico

Boa tarde, 

Veja se ajuda :

Sensor Hall de rotação - RPM

http://labdegaragem.com/forum/topics/sensor-hall-de-rota-o-rpm

Se quiser medir a frequencia com muita precisão, temos esse tutorial : 

ESP32 – Frequencímetro de precisão

https://blog.eletrogate.com/esp32-frequencimetro-de-precisao/

Nesse projeto, é só incluir o cálculo de RPM :

  RPM = é o número de rotações (ou revoluções) por minuto. 

Se capturar a frequência do pulso do motor (um pulso por volta) , poderá fazer alguns cálculos: 

   RPS = rotações por segundo 

Se um pulso for gerado para cada volta (rotação):

   RPM = 60 x RPS     ( um minuto tem 60 segundos) 

olá Paulo.

      Eu já perdi a conta da quantidade de tópicos aqui no LDG, onde publiquei implementações medindo RPMs.  Em todos eles, publiquei códigos completos e com comentários funcionais, que explicam todo o funcionamento do próprio código. Não tenho uma lista dos links neste momento, mas irei preparar uma e publico assim que possível.

      De qualquer forma, este seu tópico é uma boa oportunidade, pois vc está essencialmente só medindo a RPM,  e os demais parâmetros do seu Sistema (velocidade e distância percorrida) são decorrentes da medição da RPM. Assim  ele pode ser usado como referência para diversas outras necessidades relacionadas à medição da RPM.

      Mas peço a vc que esclareça o seguinte ponto:  qual o modelo de Sensor Hall ("plaquinha" ou "módulo") vc está usando?

      Vc pode postar aqui uma foto do Sensor?  (ou então postar um link onde eu possa ver qual o modelo do Sensor).

      Note:  é importante conferir alguns parâmetros técnicos do seu Sensor, como alimentação e principalmente o tipo de saída (se é "Totem-Pole" ou se é "Open-Collector", "Open-Drain").

      O seu Arduino, pelo seu código eu suponho que é o UNO (ou talvez o Nano).

      Então publicarei uma implementação simples mas efetiva para que vc possa usar como referência. Os códigos que publico aqui, são de forma que sempre podem ser expandidos conforme a necessidade (e sem precisar fazer gambiarras que resultam geralmente em efeitos colaterais indesejados).

      Sobre o link específico do "Instructables" que vc postou, eu diria que não é uma boa referência para quem quer realmente aprender e seguir em frente neste aprendizado. Naquele código tem diversas pontos implementados de forma inadequada, e que dificultam as pessoas expandirem a coisa (e provavelmente incorrerão em efeitos colaterais). Realmente não entendo o porquê complicam tanto. Isso não é bom pois veja que aqueles "problemas" vc acabou levando para o seu código. Mas o "Instructables" é um bom site (mas também é algo mais como um zoológico de implementações). Mas não é porque funcionou, que aquela é a forma mais "adequada" de implementação para todas as pessoas. Espero que vc e outros vejam isto que coloquei como uma crítica construtiva.

      Abrçs,

      Elcids

Obrigado Elcids, e desculpe-me pelas  as falhas. Vou tentar mandar uma foto. Não estava conseguindo (recebia um erro do servidor).

No sensor está escrito: 44E    402

É uma plaquinha com com um ou 2 resistors e 3 saidas (gnd,5v, S)

Mas comprei um modulo 3144e e pretendo testar com esse novo modulo.(ainda nao recebi)

Estou usando o nano.

(As linhas de calculos de velocidade foram incluidas por mim (do jeito que achei correto (rs), não estao no codigo original)

Grato

Anexos

na linha: 

vel=(rpm/5.665)*.925/60*60*60; //CALCULA VELOCIDADE (Km/h)

Trata-se de uma pequena esteira com perimetro de 92,5 cm

ou seja a cada 5.665 voltas do eixo motor a esteira dá uma volta.

o perimetro do eixo motor é de 16,328. (92,5/16,328=5.665)

Faço a medição da RPM no eixo motor da esteira.

Se estiver fazendo cálculos errados desculpe-me.

Paulo

Boa noite,

Esteira você pode medir por metros/segundo. Vai ficar melhor para expressar o valor. 

Qual é o diametro da polia que move a esteira? 

f1est.PNG

f2est.PNG

f3est.PNG

(Interface NEXTION ainda em desenvolvimento, me enrosquei nas RPM..lol)

O rolo tem 5,2 cm diametro.  A polia eh igua a do motor 20 dentes.

Essa é soh uma das  informações, mas no display NEXTION eu mostro  Km/h, M/min e cm/s, (essa ultima (cm/seg) eh a mais usada no proposito da esteira)

Existe a opçao para usuaario escolher a unidade de medida que quer trabalhar.

Grato

(Estou fazendo esses projetos a pedido de minha filha, que faz Doutorado em uma faculdade pública. Um já conclui.(video abaixo))

Paulo

https://youtu.be/J7ahTvLoV08

Boa tarde Paulo, 

Achei esse trabalho sobre esteira rolante.

Nele tem o cálculo de velocidade da esteira. Sujiro que leia. 

Esteira Transportadora

https://www.ifmg.edu.br/arcos/ensino-1/tai/20162_TAI1_Esteiratransp...

5.2.1-Velocidade angular e linear:

A velocidade linear descreve no movimento de rotação de cada polia a distância que é percorrida por segundo, sendo essa velocidade dada em m/s, aumentando conforme o diâmetro da polia aumenta. A equação da para o calculo velocidade linear é dada por:

f = Frequência
t = Tempo

W=Velocidade angular
R = Raio

Obrigado a todos pelo retorno. 

Vou estudar com certeza.

Mas o foco de minha postagem refere-se ao código do arduino para calculo de RPM, que só mostrava a metade das RPMs, e eu queria entender o porque e como alterar se fosse o caso.

Grato voces são muito atenciosos. 

Paulo

olá Paulo.

      Antes de mais nada, parabéns por sua implementação do seu Sistema, mostrado no vídeo que vc disponibilizou. Ficou profissional e sensacional.

      Concluí a implementação do código que prometi, e testei medindo rotações até 15 mil RPMs, e o erro foi menor que 0,5%. E na maioria das medições, o valor medido foi praticamente exato (por exemplo para 120 RPM que é seu caso). Irei publicar aqui logo mais (falta capturar algumas imagens para usar no post).

      Mas antes, vou esclarecer porque aquele código que vc estava usando (do Instructables), mede a metade do "valor correto".

      Naquele código, há uma série de "problemas", tanto na codificação do cálculo, quanto na temporização do próprio código. Veja:  se a rotação é 120 RPM, então a rotação por segundo será 2 (pois 120 rotações / 60 segundos =  2  rotações por segundo). No seu caso Paulo, cada giro do eixo do Motor está produzindo no Sensor Hall, 1 Pulso por rotação. Então se são 2 rotações por segundo, o Sensor irá produzir exatos 2 Pulsos por segundo.  Agora observe a equação usada no código:

      rpm = 30 * 1000 / ( millis() - time ) * REV

      A equação multiplica o  tempo de medição  (o resultado de "millis - time"), por 30000, e então por "REV" (a quantidade de Pulsos contada).  Considere o caso de 3 Pulsos medidos (que vc escolheu no seu código), os quais ocorrerão num período de 1,5 segundos  já que a RPM é 120.  Ou seja, millis - time = 1500  (em mili-segundos),  e REV = 3  que é a contagem de Pulsos. Na equação teremos:

      rpm = 30 * 1000 / ( 1500 ) * 3 = 60

     Conclusão, o fator "30" na equação está inadequado, pois o autor fixou para o caso específico dele, onde cada giro do eixo do Motor produz 2 Pulsos (e não 1, como é seu caso Paulo). Se fossem produzidos 2 Pulsos por giro, ao invés da contagem 3, teríamos 6, e com isso o resultado seria 120 RPM.

      Para corrigir isso, a equação "correta" seria assim:

     rpm = 60 * 1000 * (REV / N)  /  ( millis() - time )

      Onde "N" é a quantidade de Pulsos gerados por giro no eixo do Motor. Para o caso do autor, N = 2, e isso resulta que a equação volta a ser a original. Mas no seu caso Paulo, N = 1, pois cada giro do eixo produz um único Pulso, e com isso o resultado será o correto.

      Mas ainda há um problema: se a divisão  REV / N  resultar em valor fracionário, como é um cálculo com números inteiros, a fração será truncada, e isso resultará em um erro no resultado. Então é preciso fazer pelo menos uma parte do cálculo com "float".  Mas no seu caso Paulo, temos N=1, então REV / N = REV, ou seja, o valor resultante já é um inteiro, e o resultado não seria errado quando usando a equação com o fator "N".

      Sobre eventualmente a medição ser correta no código original, veja que para 120 RPM são apenas dois Pulsos por segundo, e qualquer imprecisão no tempo de execução do Processo poderá acarretar contagem errônea dos Pulsos, no momento exato que o teste "if" é feito para checar a contagem acima de um valor (no seu caso vc está usando "3"). E no código há vários elementos que propiciam a imprecisão no tempo de execução (impressões na Serial, "delays", cálculos, etc).   Então o que é preciso, é usar uma técnica de amostragem que não dependa dessas imprecisões (pois elas existirão sempre), e assim resulte em uma medição mais correta e precisa.

     Acredito que hoje ainda consigo publicar o código que implementei e que mede com grande precisão a RPM (e sem aquelas dependências de temporização que descrevi). No post também explicarei o funcionamento do Processo.

      Abrçs,

      Elcids

Maravilha de explicação!!!  Muito obrigado. Vou estudar e tentar implementar a forma correta.

Muito agradecido Elcids!!

Paulo

Boa noite. Tentei com a formula que voce passou, mas recebo numeros absurdos na rpm.

Paulo

olá Paulo.

      Antes de tudo, peço desculpas por parecer que "larguei" o tópico. Estive ausente desde o final do ano, para todas as atividades técnicas, e como não consegui publicar o post antes disto,  resultou que somente agora retomei a publicação.

      A demora também se deve ao fato de que resolvi acrescentar grande quantidade de detalhes sobre como a implementação funciona, o que ajudará muito aqueles que querem aprender sobre a técnica usada para a medição da RPM.

      Sobre seus testes, provavelmente vc cometeu algum erro simples, daqueles bem traiçoeiros aos nossos olhos.

      Caso deseje, posso enviar o código para vc testar, via email do LDG, antes mesmo de eu concluir todo o post que irei publicar aqui (pois devido a grande quantidade de detalhes, ainda irá demorar mais alguns dias para concluir).

      Abrçs,

      Elcids

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço