Circuito de tacômetro Arduino para leituras precisas

Experimente Nosso Instrumento Para Eliminar Problemas





Um tacômetro é um dispositivo que mede a rotação ou velocidade angular de um corpo em rotação. Ele difere do velocímetro e do hodômetro, pois esses dispositivos lidam com a velocidade linear ou tangencial do corpo, enquanto o tacômetro a.k.a. “tacômetro” lida com o RPM mais fundamental.

Por Ankit Negi



O tacômetro é composto de um contador e um temporizador, ambos trabalhando juntos fornecem o RPM. Em nosso projeto, faremos o mesmo, usando nosso Arduino e alguns sensores, configuraremos um contador e um temporizador e desenvolveremos nosso tacômetro prático e fácil .

Pré-requisitos

O contador nada mais é do que um dispositivo ou configuração que pode contar qualquer evento de ocorrência regular, como a passagem de um ponto no disco durante a rotação. Inicialmente, os contadores foram construídos usando o arranjo mecânico e ligações como engrenagens, catracas, molas etc.



Mas agora estamos usando contador com sensores e eletrônicos mais sofisticados e altamente precisos. O temporizador é um elemento eletrônico que é capaz de medir o intervalo de tempo entre eventos ou medir o tempo.

Em nosso Arduino Uno, existem cronômetros que não apenas controlam o tempo, mas também mantêm algumas das funções importantes do Arduino. No Uno, temos 3 temporizadores chamados Timer0, Timer1 e Timer2. Esses temporizadores têm as seguintes funções- • Timer0- Para funções Uno como delay (), millis (), micros () ou delaymicros ().

• Timer1- Para o funcionamento da biblioteca servo.

• Timer2- Para funções como tom (), não tom ().

Junto com essas funções, esses 3 temporizadores também são responsáveis ​​por gerar a saída PWM quando o comando analogWrite () é usado no pino designado do PMW.

Conceito de interrupções

No Arduino Uno está presente uma ferramenta oculta que pode nos dar acesso a uma série de funções conhecidas como Interrupções de Timer. Interrupção é um conjunto de eventos ou instruções que são executados quando chamados de interromper o funcionamento atual do dispositivo, ou seja, não importa o que códigos que seu Uno estava executando antes, mas quando uma interrupção for chamada de Arduino, execute a instrução mencionada na interrupção.

ímã no eixo do motor

Agora o Interrupt pode ser chamado em certas condições definidas pelo usuário usando uma sintaxe embutida do Arduino. Estaremos usando este Interrupt em nosso projeto que torna nosso tacômetro mais resoluto e também mais preciso do que o outro projeto de Tacômetro presente na web.

Componentes necessários para este projeto de tacômetro usando Arduino

• Sensor de efeito Hall (Fig.1)

módulo sensor de efeito hall

• Arduino Uno

Placa Arduino UNO

• Pequeno ímã

pequeno ímã

• Jumper de fios

• Objeto giratório (eixo do motor)

motor DC

Configuração do circuito

• A configuração para a criação é a seguinte-

• No eixo cuja velocidade de rotação se deseja medir é encaixado um pequeno ímã utilizando pistola de cola ou fita isolante.

• O sensor de efeito Hall possui um detector na frente e 3 pinos para conexões.

• Os pinos Vcc e Gnd são conectados aos pinos 5V e Gnd do Arduino, respectivamente. O pino de saída do sensor é conectado ao pino digital 2 do Uno para fornecer o sinal de entrada.

• Todos os componentes são fixados em uma placa de montagem e o detector Hall é destacado da placa.

Programação

int sensor = 2 // Hall sensor at pin 2
volatile byte counts
unsigned int rpm //unsigned gives only positive values
unsigned long previoustime
void count_function()
{ /*The ISR function
Called on Interrupt
Update counts*/
counts++
}
void setup() {
Serial.begin(9600)
//Intiates Serial communications
attachInterrupt(0, count_function, RISING) //Interrupts are called on Rise of Input
pinMode(sensor, INPUT) //Sets sensor as input
counts= 0
rpm = 0
previoustime = 0 //Initialise the values
}
void loop()
{
delay(1000)//Update RPM every second
detachInterrupt(0) //Interrupts are disabled
rpm = 60*1000/(millis() - previoustime)*counts
previoustime = millis() //Resets the clock
counts= 0 //Resets the counter
Serial.print('RPM=')
Serial.println(rpm) //Calculated values are displayed
attachInterrupt(0, count_function, RISING) //Counter restarted
}

Faça upload do código.

Conheça o código

Nosso tacômetro usa sensor de efeito Hall O sensor de efeito Hall é baseado no efeito Hall em homenagem ao seu descobridor Edwin Hall.

Efeito Hall é o fenômeno de geração de voltagem através de um condutor de corrente quando um campo magnético é introduzido perpendicular ao fluxo de corrente. Esta tensão gerada devido a este fenômeno auxilia na geração do sinal de entrada. Como mencionado Interrupt será utilizado neste projeto, para chamar Interrupt temos que configurar alguma condição. O Arduino Uno tem 2 condições para chamar interrupções-

RISING- Quando usado, as interrupções são chamadas toda vez que o sinal de entrada vai de LOW para HIGH.

FALING-Quando usado, as interrupções são chamadas quando o sinal vai de HIGH para LOW.

Usamos o RISING, o que acontece é que quando o ímã colocado no eixo ou objeto giratório se aproxima do detector Hall o sinal de entrada é gerado e a interrupção é chamada, a interrupção inicia a função de rotina de serviço de interrupção (ISR), que inclui o incremento em o valor da contagem e, portanto, a contagem ocorre.

Usamos a função millis () do Arduino e previoustime (variável) em correspondência para configurar o temporizador.

O RPM, portanto, é finalmente calculado usando a relação matemática

RPM = Contagens / Tempo gasto. Convertendo os milissegundos em minutos e o rearranjo, chegamos à fórmula = 60 * 1000 / (milis () - tempo anterior) * contagens.

O atraso (1000) determina o intervalo de tempo após o qual o valor de RPM será atualizado na tela, você pode ajustar este atraso de acordo com suas necessidades.

Este valor de RPM obtido pode ser usado posteriormente para calcular a velocidade tangencial do objeto em rotação usando a relação- v = (3,14 * D * N) / 60 m / s.

O valor de RPM também pode ser usado para calcular a distância percorrida por uma roda ou disco giratório.

Em vez de imprimir valores no monitor serial, este dispositivo pode se tornar mais útil conectando um display LCD (16 * 2) e bateria para melhor uso.




Anterior: Circuito de driver de motor de passo usando IC 555 Próximo: Circuito de medidor de capacitância digital usando Arduino