Vous êtes sur la page 1sur 9

02/05/2019 Como medir a rotação de um motor com o sensor de velocidade LM393 - Arduino e Cia

Pesquise neste blog :

17 fevereiro 2016
Pesquisar
Como medir a rotação de um motor com o sensor de Custom Search

velocidade LM393
Medir a velocidade de um motor pode ser muito útil em projetos de robótica, e você pode fazer isso utilizando o
sensor de velocidade encoder LM393. Com ele você pode medir a rotação de motores, calcular a velocidade
de robôs, definir limites de deslocamento, entre outras aplicações.

Assine nossa newsletter:

Seu email...

Quero assinar!

Esse módulo pode também ser utilizado para contagem de pulsos ou como chave de fim de curso. Ele utiliza o
chip comparador LM393 (datasheet), e na sua extremidade tem um optointerruptor com um vão de 5 mm no
qual você pode utilizar um disco encoder ou algum outro dispositivo para interromper o feixe de luz.

Módulo sensor de velocidade LM393

O módulo possui 4 pinos, sendo dois de alimentação (3 à 5V e GND), uma saída digital (DO) e uma analógica
(A0).

Marcadores

arduino bluetooth componentes display


esp32 esp8266 gsm HC-SR04 IR LCD livros
modulos motores raspberry pi sensores
shield temperatura videos wireless

Arquivo do blog


► 2019 (8)

► 2018 (25)

► 2017 (24)

▼ 2016 (28)

► Dezembro 2016 (2)

► Novembro 2016 (2)

► Outubro 2016 (2)
O optointerruptor MOCH22A tem de um lado um led infravermelho, e no outro lado um fototransistor. Quando o ►
► Setembro 2016 (2)
feixe de luz infravermelha é interrompido, a saída digital D0 envia o sinal 1, caso contrário, o saída permanece

► Agosto 2016 (3)
em nível 0.

► Julho 2016 (2)
Vamos testar esse sensor utilizando dois programas: um para medir a velocidade de um motor, e outro como ►
► Junho 2016 (1)
uma chave de fim de curso. Nesses dois exemplos vamos usar apenas a saída digital D0 do módulo. ►
► Maio 2016 (3)

► Abril 2016 (3)
Medindo a rotação de um motor ►
► Março 2016 (3)

▼ Fevereiro 2016 (2)
Para medir a rotação de um motor, ligue o sensor de velocidade no Arduino com o pino D0 ligado à porta digital Web Server com o módulo ESP8266
NodeMCU e DHT22
2:
Como medir a rotação de um motor com
o sensor de v...


► Janeiro 2016 (3)


► 2015 (35)

► 2014 (55)

https://www.arduinoecia.com.br/2016/02/sensor-de-velocidade-lm393-arduino.html 1/9
02/05/2019 Como medir a rotação de um motor com o sensor de velocidade LM393 - Arduino e Cia

► 2013 (66)

Postagens populares

Como utilizar o módulo I2C


com display LCD

Controle remoto IR no
Arduino

Acionando portas do
Arduino usando Android e
bluetooth

Para testar o circuito, usamos um disco encoder ligado ao motor. O disco possui várias "aberturas" por onde o Controlando um servo motor
feixe de luz vai passar e gerar um pulso na saída digital. com Arduino

Ligando uma lâmpada com


módulo relé

Fale com o administrador do site


Politica de Privacidade

O conteúdo do blog Arduino e Cia, está


licenciado com uma Licença Creative
Commons - Atribuição-CompartilhaIgual 4.0
Internacional.

O disco que estamos usando tem 20 aberturas, e esse número deve ser colocado no programa (linha 11), que
vai usar essa informação para calcular a rotação do motor.

1 //Programa: Sensor de velocidade Arduino LM393


2 //Autor: Arduino e Cia
3
4 //Pino ligado ao pino D0 do sensor
5 int pino_D0 = 2;
6 int rpm;
7 volatile byte pulsos;
8 unsigned long timeold;
9
10 //Altere o numero abaixo de acordo com o seu disco encoder
11 unsigned int pulsos_por_volta = 20;
12
13 void contador()
14 {
15 //Incrementa contador
16 pulsos++;
17 }
18
19 void setup()
20 {
21 Serial.begin(9600);
22 //Pino do sensor como entrada
23 pinMode(pino_D0, INPUT);
24 //Interrupcao 0 - pino digital 2
25 //Aciona o contador a cada pulso
26 attachInterrupt(0, contador, FALLING);
27 pulsos = 0;
28 rpm = 0;
29 timeold = 0;
30 }
31
32 void loop()
33 {
34 //Atualiza contador a cada segundo
35 if (millis() - timeold >= 1000)
36 {
37 //Desabilita interrupcao durante o calculo
38 detachInterrupt(0);
39 rpm = (60 * 1000 / pulsos_por_volta ) / (millis() - timeold) * pulsos;
40 timeold = millis();
41 pulsos = 0;
42
43 //Mostra o valor de RPM no serial monitor

https://www.arduinoecia.com.br/2016/02/sensor-de-velocidade-lm393-arduino.html 2/9
02/05/2019 Como medir a rotação de um motor com o sensor de velocidade LM393 - Arduino e Cia
44 Serial.print("RPM = ");
45 Serial.println(rpm, DEC);
46 //Habilita interrupcao
47 attachInterrupt(0, contador, FALLING);
48 }
49 }

Carregue o programa no Arduino e utilize o serial monitor para visualizar a velocidade de rotação do motor.

Utilizando o módulo como chave de fim de curso

Você pode utilizar esse módulo também como chave de fim de curso, para indicar o correto posicionamento de
um motor ou alguma estrutura, como por exemplo uma porta, janela, uma guia linear ou outra estrutura móvel.

Nesse caso, o sensor de velocidade funciona como se fosse uma chave liga/desliga, fazendo com que o
programa execute uma rotina específica caso o feixe de luz do optointerruptor seja bloqueado.

Testamos essa configuração acrescentando no circuito anterior um motor de passo 28BYJ-48:

O programa usa a biblioteca Customstepper (download), que já usei anteriormente no post Controlando motor
de passo 28BYJ-48 utilizando CustomStepper.

É feita uma monitoração simples da porta digital 2, e cada vez que é recebido o valor 1, a variável sentido tem
o seu valor invertido.

1 //Programa: Sensor de velocidade LM393 - Chave de fim de curso


2 //Autor: Arduino e Cia
3
4 #include <CustomStepper.h>
5
6 //Pino ligado ao pino D0 do sensor
7 int pino_D0 = 2;
8
9 //Define os parametros de ligacao do motor de passo
10 CustomStepper stepper(8, 9, 10, 11, (byte[])
11 {
12 8, B1000, B1100, B0100,
13 B0110, B0010, B0011, B0001, B1001
14 }, 4075.7728395, 12, CW);
15
16 int sentido = 0;
17
18 void setup()
19 {
20 Serial.begin(9600);
21 //Pino do sensor como entrada
22 pinMode(pino_D0, INPUT);
23 //Define a velocidade do motor
24 stepper.setRPM(12);
25 //Define o numero de passos por rotacao
26 stepper.setSPR(4075.7728395);
27 }
28
29 void loop()
30 {
31 int valor = digitalRead(pino_D0);
32 if (valor != 0)
33 {
34 while (digitalRead(pino_D0) != 0)
35 {
36 delay(100);
37 }
38 //Inverte o sentido de rotacao
39 sentido = !sentido;
40 }
41 delay(1);
42 if (sentido == 0)

https://www.arduinoecia.com.br/2016/02/sensor-de-velocidade-lm393-arduino.html 3/9
02/05/2019 Como medir a rotação de um motor com o sensor de velocidade LM393 - Arduino e Cia
43 {
44 //Gira motor no sentido horario
45 stepper.setDirection(CW);
46 stepper.rotate();
47 }
48 if (sentido == 1)
49 {
50 //Gira motor no sentido anti-horario
51 stepper.setDirection(CCW);
52 stepper.rotate();
53 }
54 stepper.run();
55 }

Usando o programa acima, à cada vez que o feixe de luz do sensor é interrompido, o sentido de rotação do
motor é alterado.

Postado por Arduino e Cia às 22:38

Marcadores: 28BYJ-48, lm393, motor de passo, sensores

45 comentários:
dancopy 23 de fevereiro de 2016 13:46
Eu tenho o Sensor de Velocidade (não o módulo completo); 1) o que teria de ser mudado no circuito para eu
poder ligá-lo no Arduino?
2) Era possível fazer um circuito com esse Sensor e um LCD para mostrar os dados? Obrigado

Responder

Respostas

Arduino e Cia 8 de março de 2016 20:47


Boa noite,

Não fiz nenhum teste ainda apenas com o sensor, mas olhando o módulo, são poucos componentes
que você vai precisar.

Quanto ao LCD, atualmente eu recomendo um módulo I2C para display LCD, assim você economiza
várias portas do Arduino.

Abraço!

Responder

Alvanir Ricardo Dums 25 de abril de 2016 21:44

Olá estou fazendo o diagrama do meu projeto no Fritzing. Estou utilizando este sensor, porém não consegui ele
no Fritzing, poderia me ajudar ?

Responder

Respostas

Arduino e Cia 26 de abril de 2016 08:04


Oi Alvanir,

Eu também não consegui achar esse componente no Fritzing, então pedi para desenharem
separadamente...

Abraço!

silio 4 de maio de 2017 13:32


me pudes pasar el diagrama del sensor

silio 4 de maio de 2017 15:49


me pudes pasar el modulo del sensor para fritzing gracias

Responder

Arthur Martins de Souza Barreto 12 de maio de 2016 19:36


boa noite, onde acho os discos para acoplar nos motores?

Responder

Respostas

Arduino e Cia 13 de maio de 2016 13:32

Oi Arthur,

No Mercado Livre tem algumas opções de disco. Faça uma procura por "disco encoder".

https://www.arduinoecia.com.br/2016/02/sensor-de-velocidade-lm393-arduino.html 4/9
02/05/2019 Como medir a rotação de um motor com o sensor de velocidade LM393 - Arduino e Cia

Abraço!

Responder

tzx1400 24 de junho de 2016 17:45


boa noite. amigo gostei muito da sua explicação, porém gostaria de saber se você pode me ajudar a tirar uma
dúvida. estou com um projeto aqui em que tenho que usar esse sensor para registrar a velocidade de um carro.
minha pergunta é: se este disco ficar na roda do carro o sensor consegue fazer a leitura?
Responder

Respostas

Arduino e Cia 14 de julho de 2016 14:21


Boa tarde,

Isso depende de testes, mas pela velocidade do sensor, creio que funcionaria sem problemas.

Abraço!

Responder

Geografia 3 de julho de 2016 20:33


Ola. Teria como utilizar este sensor como um anemometro?

Responder

Respostas

Arduino e Cia 14 de julho de 2016 14:01


Boa tarde,

Sim, sem problemas.

Abraço!

Responder

Ricardo Alvarado Ogasawara 6 de julho de 2016 02:15


Como ficaria o programa para Arduino Mega 2560?

Responder

Respostas

Arduino e Cia 14 de julho de 2016 14:00

Oi Ricardo,

Você pode usar o mesmo programa.

Abraço!

Responder

Eduardo Castellani 7 de julho de 2016 21:34


Obrigadão
Responder

Respostas

Arduino e Cia 14 de julho de 2016 14:00

Valeu!!!! :)

Abraço.

Responder

Unknown 11 de agosto de 2016 21:37


Olá, vi apenas exemplos usando a saída digital que seria apenas o pulso do sensor... Porém no caso da saída
analógica a saída seria o que? Possuo um projeto que necessita da leitura da velocidade de forma analógica (0-X
Volts)
Responder

Anônimo 19 de agosto de 2016 21:55

Boa noite,
Gostaria de saber que tipo de sensor poderia utilizar para medir a velocidade de um carrinho sem motor.

Responder

https://www.arduinoecia.com.br/2016/02/sensor-de-velocidade-lm393-arduino.html 5/9
02/05/2019 Como medir a rotação de um motor com o sensor de velocidade LM393 - Arduino e Cia

Jhesus Cristo de Deus 27 de agosto de 2016 19:54

ola, uma duvida, eu tendo um sensor hall, tres fios na roda de um carro com sistema de airbag, o que teria que
mudar no projeto acima para conseguir captar a velocidade da roda. Desde já obrigado :)

Responder

Andromina robot 24 de novembro de 2016 17:14


Onde posso obter o arquivo (Fritzing encoder FC-03)?
Responder

Guilherme 21 de janeiro de 2017 14:30

Olá. Primeiro muito obrigado pelo seu trabalho, ajuda muito.


Sabe se é possível ligar dois sensores em um memso arduino? estou tendo algumas dificuldades com a
programação para ligar o segundo sensor...
valeu.
Responder

Vincent Vega 9 de março de 2017 22:43


opa... passando para deixa um alô e dizer que o tutorial foi de grande serventia...

Responder

Respostas

Arduino e Cia 16 de março de 2017 22:10


Opa.. bom saber.... :)

Abraço e obrigado!

Adilson

Responder

Anônimo 20 de março de 2017 12:59

Parabéns pelo tutorial! Muito bom!


Gostaria de saber se é possível identificar a direção em que o motor está girando com esse sensor, ou seja, fazer
leituras de velocidades tanto negativas quanto positivas.
Agradeço desde já.

Responder

Respostas

Arduino e Cia 21 de março de 2017 10:27

Bom dia!

Para determinar a direção, vc precisaria de pelo menos dois sensores desse.

Abraço e obrigado!

Adilson

Responder

Anônimo 24 de março de 2017 09:06


Bom dia, meu nome é Italo,
gostaria de saber se posso delimitar um número de rotações de um motor dc, que não seja o de passo, para abrir
e fechar uma janela ou abri um portão por exemplo. Obrigado!

Responder

Respostas

Arduino e Cia 25 de março de 2017 10:00

Oi Italo,

Pode sim, você pode usar um sensor de velocidade como esse do post e contar os pulsos enviados
pelo módulo, determinando assim o quanto ele girou.

Abraço!

Responder

Unknown 31 de maio de 2017 21:57

Boas podes me explicar melhor essa parte toda?

//Atualiza contador a cada segundo


if (millis() - timeold >= 1000)
{

https://www.arduinoecia.com.br/2016/02/sensor-de-velocidade-lm393-arduino.html 6/9
02/05/2019 Como medir a rotação de um motor com o sensor de velocidade LM393 - Arduino e Cia
//Desabilita interrupcao durante o calculo
detachInterrupt(0);
rpm = (60 * 1000 / pulsos_por_volta ) / (millis() - timeold) * pulsos;
timeold = millis();
pulsos = 0;
Responder

Jefferson Fonseca 13 de junho de 2017 20:54


Olá!

Sou Jefferson, estou precisando do módulo LM393 para concluir o diagrama elétrico do meu TCC -
Especialização Eng. Automação, Controle e Robótica, meu projeto é um robô seguidor de linha com braço
robótico, com sistema de controle PID para velocidade.

Agradeço pelo apoio técnico das informações contidas no site, para conclusão das informações de meus estudos
ao longo do curso.

Responder

Respostas

Arduino e Cia 20 de junho de 2017 21:25

Oi Jefferson,

Tudo bem? O que você precisa exatamente? Do componente do Fritzing ?

Abraço e obrigado por visitar o Arduino e Cia! :)

Adilson

Responder

Takao 21 de junho de 2017 22:32

Boa noite montei o tacômetro, a a rotação não esta confiável sendo que estou medindo a rotação de um motor de
passo, no lcd que controla o motor está em 24rmp, com o teste que fiz fica variando muito, até de 15rmp a 45
rpm
Responder

Raphael Nunes 19 de julho de 2017 18:25


Olá,qual a velocidade máxima para leitura?

Responder

Unknown 8 de fevereiro de 2018 18:51

Boa tarde ele suporta umidade e agua?

Responder

Respostas

Arduino e Cia 25 de fevereiro de 2018 16:49

Não recomendo. :)

Abraço!

Adilson

Responder

Site Oficial Guaicui.com 16 de abril de 2018 00:52

Olá, boa noite! Estou fazendo um projeto de TCC, meu objetivo é diminuir colisão traseira entre carros, eu quero
fazer com que o carro que estiver a trás consiga saber a velocidade do carro da frente (CASO O CARRO A
FRENTE FAZER UMA FREADA BRUSCA), com a utilização de sensor ultrassônico (que vai fazer a função de
informar quando o carro estiver muito perto do permitido pela legislação). ENFIM! PESQUISEI EM VÁRIOS
SITES E O MAIS PRÓXIMO FOI O SEU, GOSTARIA DE SABER SE TEM ALGUM SENSOR OU COMPONENTE
ELETRÔNICO QUE EU CONSIGA PROGRAMAR E SABER A VELOCIDADE DO CARRO A FRENTE? DESDE
JÁ AGRADEÇO :)

Responder

Anônimo 25 de abril de 2018 11:16

Seria interessante avisar que as portas com interrupção sao especificas


https://www.arduino.cc/reference/pt/language/functions/external-interrupts/attachinterrupt/

Responder

Unknown 24 de junho de 2018 20:14

Como funciona a saída analógica desse sensor? Qual a escala de saída? É em volts ou mA?
Agradeço se alguém tiver alguma informação.
Responder

https://www.arduinoecia.com.br/2016/02/sensor-de-velocidade-lm393-arduino.html 7/9
02/05/2019 Como medir a rotação de um motor com o sensor de velocidade LM393 - Arduino e Cia
David França 27 de julho de 2018 18:11
Oi amigo. Gostei muito do seu post. Tenho esse sensor de velocidade e gostaria que pudesse me ajudar. Queria
utilizar ele como um contador de voltas ao invés de calcular o rpm. Como eu poderia fazer isso?

Responder

Respostas

Arduino e Cia 30 de julho de 2018 22:54

Oi David,

Depende do projeto e do tipo de equipamento que você vai usar, mas é relativamente simples.
Usando o programa de exemplo do post, que tem 20 pulsos por volta, basta você criar um contador
que a cada 20 pulsos, conta 1 volta.

Abraço!

Adilson

Responder

Unknown 27 de setembro de 2018 02:58

Bom dia estou a pensar num projecto de alterar um sistema de tracção cuja a velocidade é regulada em
frequência só não sei se é possível, e penso ajuda nessa modificação é um trabalho académica.

Responder

Alex Vilarindo 27 de setembro de 2018 14:14


Boa tarde. Comprei esse encoder, um disco com 20 furos, um motor cc 3V a 6V
(https://www.filipeflop.com/produto/motor-dc-3-6v-com-caixa-de-reducao-e-eixo-duplo/), que diz que a velocidade
é de 200rpm a 6V. Estou utilizando uma alimentação de fonte externa de 5V. Logo, é de se esperar uma
velocidade pouco abaixo dos 200rpm. Utilizei desse programa para testar o encoder e quando mede a velocidade
do motor cc citado mostra na serial um valor em torno de 520rpm. Segue abaixo o código:

//Programa: Sensor de velocidade Arduino LM393


//Autor: Arduino e Cia

//Pino ligado ao pino D0 do sensor


int pino_D0 = 2;
int rpm;
volatile byte pulsos;
unsigned long timeold;

//Altere o numero abaixo de acordo com o seu disco encoder


unsigned int pulsos_por_volta = 20;

int IN3 = 6;
int IN4 = 7;

void contador()
{
//Incrementa contador
pulsos++;
}

void setup()
{
Serial.begin(9600);
//Pino do sensor como entrada
pinMode(pino_D0, INPUT);
//Interrupcao 0 - pino digital 2
//Aciona o contador a cada pulso
attachInterrupt(0, contador, FALLING);
pulsos = 0;
rpm = 0;
timeold = 0;

pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);

void loop()
{

digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);

//Atualiza contador a cada segundo


if (millis() - timeold >= 1000)
{
//Desabilita interrupcao durante o calculo
detachInterrupt(0);
rpm = ((60 * 1000 / pulsos_por_volta ) / (millis() - timeold)) * pulsos;
timeold = millis();
pulsos = 0;
//Mostra o valor de RPM no serial monitor
Serial.print("RPM = ");
Serial.println(rpm, DEC);
//Habilita interrupcao
attachInterrupt(0, contador, FALLING);

https://www.arduinoecia.com.br/2016/02/sensor-de-velocidade-lm393-arduino.html 8/9
02/05/2019 Como medir a rotação de um motor com o sensor de velocidade LM393 - Arduino e Cia
}
}

O que há de errado?

Responder

Guilherme 18 de novembro de 2018 19:55

Boa tarde,
Na interrupção o que é o comando FALLING?

Obrigado

Responder

Respostas

Arduino e Cia 28 de novembro de 2018 22:32

Oi Guilherme,

O FALLING quer dizer que o microcontrolador vai detectar a interrupção na descida do sinal, ou seja,
quando ele estiver 1 e passar para 0.

Abraço!

Adilson

Responder

Alexandro Trevisan 23 de novembro de 2018 11:38

Eu consigo utilizar ele juntamente com aquelas fitas listradas de impressora (do carrinho de impressão)?

Responder

Respostas

Arduino e Cia 28 de novembro de 2018 22:36

Oi Alexandro,

Boa pergunta e ótima sugestão. Nunca tentei, vou ver se arrumo alguma para testar.

Abraço!

Adilson

Responder

Digite seu comentário...

Comentar como: brunofcouto1@ Sair

Publicar Visualizar Notifique-me

Postagem mais recente Página inicial Postagem mais antiga

Assinar: Postar comentários (Atom)

Arduino e Cia © Copyright 2019

https://www.arduinoecia.com.br/2016/02/sensor-de-velocidade-lm393-arduino.html 9/9

Vous aimerez peut-être aussi