Things used in this project

Hardware components:
Adafruit industries ada161 image 75px
Photo resistor
A specific photo resistor is not required.
×1
Resistors
You'll need three resistors. Read more to figure which ones you'll need for your project.
×3
12002 04
Breadboard (generic)
×1
Teensy31
Teensy 3.1
This is just one of the many platforms you can use for this simple tachometer.
×1
Texas instruments lm358ap image
Texas Instruments General Purpose Dual Op-Amp
×1
Software apps and online services:
Ide web
Arduino IDE
Whatever IDE you like to use, you'll just need a serial monitor.

Schematics

Op-Amp Comparator
This op-amp circuit digitizes the change in resistance of a photo resistor. This simplifies the tachometer code and produces more reliable results than an analogRead().
Comparator schematic sjlsjtzl53

Code

Teensy TachometerArduino
The output from the op-amp is attached to pin 13 on a Teensy 3.2. This digital input has an attached LED so troubleshooting can be easier. Using an interrupt when the pin goes high, a boolean variable is set to true and then the RPM is calculated in the main loop, output to serial and the boolean variable is set back to false.
void setup()
{                
  Serial.begin(38400);
  
  pinMode(13, INPUT_PULLUP);
  
  /* Depending on the board you're using, the interrupt declaration might have
   * a different syntax
   */
  attachInterrupt(13, tick, RISING); 
}

long rev; //T
long prevRev = 0;
bool change = false;
int changeCount = 0;
double rpm;
double prevRPM;

void loop()                     
{
  if (change == true) {
    rev = millis();
    rpm = 60000/(rev - prevRev);
    if (rpm != prevRPM ) {
      Serial.println(String(millis()) + "~" + String(rpm));
      prevRPM = rpm;
    }
    prevRev = rev;
    change = false;
  }  
}

void tick() {
  change = true;
}

Credits

D37aaf5f52244e34c101fde6da29efd6
Elliot Carter
2 projects • 4 followers
Contact

Replications

Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Sign up / LoginProjectsPlatformsTopicsContestsLiveAppsBetaBlog