Project in progress

Copy Of Fidget Spinner RPM Counter © GPL3+

Arduino Project: How to make a Fidget Spinner RPM counter with Hall-effect sensor.

  • 755 views
  • 1 comment
  • 4 respects

Components and supplies

Apps and online services

About this project

Parts Required:

  • Fidget Spinner
  • neodyimium magnet(strong)
  • Arduino Uno
  • LED + resistor 220 Ohm
  • Hall-Effect Sensor - a3144
  • Single Turn Potentiometer
  • Jumper Wires
  • Breadboard
  • LCD 1602

2: Hall-Effect Sensor

Using Hall-Effect Sensor we can measure the speed of rotation. I used Hall-Effect Sensor - a3144. I use two of it to make it easier to detect

RPM (Revolutions per minute) – the number of revolutions per minute. Revolutions per minute – a unit of measurement of rotational speed: the number of complete rotations made by the body (fidget spinner, wheel etc.) around a fixed axis. Used to describe the speed of rotation of the mechanical components in the mechanisms and machines.

3: How does it work?

To measure the speed of rotation on the Fidget Spinner must be mounted a part of neodyimium magnet that affect the Hall sensor after each complete turn of the Spinner.

4: Indication

The presence of a magnetic field is indicated on the LED. Left and Right LED is keep shinning for some visual imporvement. LED in the middle will only light up when magnet detected by hall-effect sensor.

LCD 1602 indicates current RPM, maximum RPM and tachometr bar (from 0 up to 1260rpm). 1020 rpm is my personal record.

Schematics

Fidget Spinner RPM Counter Circuit Diagram
Spinner schematics d8vlcjmqir

Code

codeArduino
#include <LiquidCrystal.h>
LiquidCrystal lcd(13,12,11,10,9,8);
const int hallSensorPin = 2;                      // connect the hall effect sensor on pin 2
const unsigned long sampleTime = 1000;
const int maxRPM = 1260;                  // maximum RPM for LCD Bar
int rpmMaximum = 0;

void setup() 
{
  pinMode(hallSensorPin,INPUT);
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Initializing");
  delay(1000);
  lcd.clear();
  lcd.print("Welcome to Fidget Spinner RPM Counter");
  for (int positionCounter = 0; positionCounter < 21; positionCounter++) {
    lcd.scrollDisplayLeft();
    delay(350);
  }
  delay(1000);
  lcd.clear();
}

void loop() 
{
  delay(100);
  int rpm = getRPM();
  if (rpm > rpmMaximum) rpmMaximum = rpm;
  lcd.clear();
  displayRPM(rpm);
  displayBar(rpm);
  
}
 
int getRPM()
{
  int count = 0;
  boolean countFlag = LOW;
  unsigned long currentTime = 0;
  unsigned long startTime = millis();
  while (currentTime <= sampleTime)
  {
    if (digitalRead(hallSensorPin) == HIGH)
    {
      countFlag = HIGH;
    }
    if (digitalRead(hallSensorPin) == LOW && countFlag == HIGH)
    {
      count++;
      countFlag=LOW;
    }
    currentTime = millis() - startTime;
  }
  int countRpm = int(60000/float(sampleTime))*count;
  return countRpm;
}
    
void displayRPM(int rpm) 
{
  lcd.clear();
  lcd.setCursor(0, 0); 
  lcd.print(rpm,DEC);
  lcd.setCursor(7,0);
  lcd.print(rpmMaximum, DEC);
  lcd.setCursor(13,0);
  lcd.print("MAX");
  Serial.print("RPM = ");
  Serial.print(rpm);
  Serial.print("  MAX RPM = ");
  Serial.println(rpmMaximum);
}

void displayBar(int rpm)
{
  int numOfBars=map(rpm,0,maxRPM,0,15);
  lcd.setCursor(0,1);
  if (rpm!=0)
  {
  for (int i=0; i<=numOfBars; i++)
   {
        lcd.setCursor(i,1);
        lcd.write(1023);
      }
  }
} 

Comments

Similar projects you might like

Magic Lamp

by Nekhil ravi

  • 1,047 views
  • 3 comments
  • 12 respects

PuzzleBox

Project tutorial by Arduino

  • 296 views
  • 0 comments
  • 1 respect

Arduino MKR GSM 1400 and DTMF

by Arduino_Genuino

  • 4,012 views
  • 0 comments
  • 9 respects

Love You Pillow

Project tutorial by Arduino

  • 2,592 views
  • 0 comments
  • 5 respects

Infrared Replicator

Project tutorial by Gustavo Gonnet

  • 3,920 views
  • 6 comments
  • 26 respects
Add projectSign up / Login