Índice:

Medidor RPM com STM32: 8 etapas
Medidor RPM com STM32: 8 etapas

Vídeo: Medidor RPM com STM32: 8 etapas

Vídeo: Medidor RPM com STM32: 8 etapas
Vídeo: Medidor de RPM com STM32 2024, Novembro
Anonim
Medidor RPM com STM32
Medidor RPM com STM32

Embora seja um tanto incômodo de comprar (porque não está disponível em muitas lojas na Internet), acho necessário discutir o STM32 L432KC. Este chip merece um carinho especial, pois é ULTRA BAIXO POTÊNCIA. Porém, para quem não possui o STM32, ele pode ser substituído neste projeto pelo Arduino Uno. Para fazer isso, basta alterar o pino da entrada de interrupção.

Vamos então criar um medidor de RPM usando o STM32 L432KC e um sensor infravermelho. Este mesmo programa também pode ser usado para medir a velocidade do vento. O recurso de baixo consumo de energia deste microcontrolador é perfeito para IOT.

Etapa 1: Módulos

Módulos
Módulos
Módulos
Módulos

Para o nosso projeto de hoje, usamos o MAX7219CWG de 8 dígitos, bem como o Módulo infravermelho.

Etapa 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

Etapa 3: demonstração

Demonstração
Demonstração

Em nossa montagem, temos o STM32, o display de 8 dígitos e a entrada de pulso. O cartão infravermelho tem um fototransistor e um LED que capta a luz refletindo em uma fita branca. Essa fita é presa a uma roda e, a cada giro, vai gerar um pulso, que será capturado pela interrupção STM32.

Temos um diodo e um capacitor na montagem que foram usados para evitar que o ruído do sinal da leitura da fita chegasse ao STM32, o que faria com que ele interpretasse o liga e desliga.

A demonstração mostra nosso projeto, assim como o medidor Minipa (ambos em operação).

Etapa 4: Montagem

conjunto
conjunto

Etapa 5: Programa

Faremos um programa no qual o módulo infravermelho irá disparar uma interrupção no STM32 L432KC a cada “turno”, e faremos os cálculos para mostrar o RPM no display.

Etapa 6: Bibliotecas

Bibliotecas
Bibliotecas

Adicione a seguinte biblioteca "DigitLedDisplay".

Basta acessar "Sketch >> Incluir Bibliotecas >> Gerenciar Bibliotecas…"

Etapa 7: Código Fonte

Bibliotecas e variáveis

Vamos iniciar o código-fonte incluindo a biblioteca DigitLedDisplay. Mostraremos o objeto de exibição. Eu defino o pino de interrupção, que será 12. Além disso, insiro um operador volátil para o contador de RPM e o tempo para evitar problemas de colisão.

/ * Incluir Biblioteca DigitLedDisplay * / # include "DigitLedDisplay.h" / * Arduino Pin para Exibir Pino 7 para DIN, 6 para CS, 5 para CLK * / // DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); // arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); // STM32 L432KC int pin = 12; // pino de interrupção (módulo IR) volatile unsigned int rpm; // contador de rpm volatile unsigned long timeold; //tempo

Configurar

No Setup configuramos o funcionamento do display, bem como configuramos a interrupção como Rising.

void setup () {Serial.begin (115200); / * Defina o brilho mínimo: 1, máximo: 15 * / ld.setBright (10); / * Definir a contagem de dígitos * / ld.setDigitLimit (8); ld.printDigit (0); attachInterrupt (digitalPinToInterrupt (pin), interruptPin, RISING); rpm = 0; tempo = milis (); }

Ciclo

Finalmente, determinamos o intervalo de 1 em 1 minuto para atualizar a exibição. Depois de limpar a tela, imprimimos o RPM. Executamos a função que a interrupção irá chamar. Calculamos o RPM e o tempo de atualização.

loop vazio () {atraso (1000); ld.clear (); ld.printDigit (rpm); } void interruptPin () {rpm = 60 * 1000 / (milis () - tempo antigo); tempo = milis (); }

Etapa 8: Arquivos

Baixe os arquivos:

PDF

EU NÃO

Recomendado: