Project in progress

Copy Of Fidget Spinner RPM Counter © GPL3+

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

  • 15 views
  • 0 comments
  • 0 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

Windows PC Lock/Unlock Using RFID

Project tutorial by Prasanth K S

  • 6,572 views
  • 6 comments
  • 29 respects

LED Cube

Project tutorial by Praditha Alwis

  • 298 views
  • 0 comments
  • 4 respects

Makers (Cubecon) #1 Infrared Transmit & Infrared Receive

Project in progress by Alpha

  • 119 views
  • 0 comments
  • 3 respects

Lie Detector

Project tutorial by Adaline Baskaran

  • 5,537 views
  • 5 comments
  • 16 respects

Arduino Keyboard

Project in progress by Gabriele Scordamaglia

  • 357 views
  • 2 comments
  • 4 respects
Add projectSign up / Login