author
5Instructables27,291Views13CommentsVirginia, USAJoined March 11th, 2017
3D printing, CNC and Raspberry Pi/Arduino hobbyist

Tell us about yourself!

Complete Your Profile

Achievements

10K+ Views Earned a bronze medal
  • Add an Arduino-based Optical Tachometer to a CNC Router

    I'm not sure that would work in this application. According to the spec sheet (https://www.vishay.com/docs/83760/tcrt5000.pdf)Peak operating distance: 2.5 mmOperating range within >20% relative collector current: 0.2 mm to 15 mmThe operating distance is from .2mm to 15mm. The typical installation distance for a CNC router would be 35 to 40mm.

    Nice job. The code should be easily scaled to any size display, you just need to adjust the OLED_HEIGHT, OLED_WIDTH and then modify the YELLOW_SEGMENT_HEIGHT as the height in pixels of a character for the top RPM banner.I'l love to see a picture of your final installation

    I'm not sure of that particular IR detector. I couldn't find the spec sheet for it. The IR Photodiode in the project works by setting it up in a reverse bias configuration. Since a diode only conducts electricity (current) in one direction, a reverse bias configuration will not allow current to pass. Once the IR Photodiode detects the IR light reflected off the collet nut, it does allow current to pass going from zero to near full voltage in an instant. That level change is easily detected by the Arduino interrupt as the detector pulse.A capacitor can filter noise, but if it is too large it would filter the level change that is needed for the Arduino interrupt detector.The software does have a sleep mode for the display. Change the value of DISPLAY_TIMEOUT_INTERVAL to whatever val...

    see more »

    I'm not sure of that particular IR detector. I couldn't find the spec sheet for it. The IR Photodiode in the project works by setting it up in a reverse bias configuration. Since a diode only conducts electricity (current) in one direction, a reverse bias configuration will not allow current to pass. Once the IR Photodiode detects the IR light reflected off the collet nut, it does allow current to pass going from zero to near full voltage in an instant. That level change is easily detected by the Arduino interrupt as the detector pulse.A capacitor can filter noise, but if it is too large it would filter the level change that is needed for the Arduino interrupt detector.The software does have a sleep mode for the display. Change the value of DISPLAY_TIMEOUT_INTERVAL to whatever value (currently 120 seconds) desired.

    I'm not sure which IR Module you are using, but the IR Module mentioned on the Adafruit site is the tsop382 (https://www.vishay.com/docs/82491/tsop382.pdf)These IR detectors have a demodulator inside that looks for modulated IR at 38 KHz. Just shining an IR LED wont be detected, it has to be PWM blinking at 38KHz.Unfortunately that type of IR detector will not work. A IR Photodiode pair is needed to have the response time needed to generate detectable pulses.

    View Instructable »
  • Add an Arduino-based Optical Tachometer to a CNC Router

    Yes, it should work with the 1.8 TFT screen. You'll need the correct driver, which Adafruit has available on their site. You'll need to adjust the constants that define the OLED resolution, so you'll need to change OLED_HEIGHT = 64, OLED_WIDTH = 128; to the 128x160 resolution of the 1.8 TFT. You may need to adjust the YELLOW_SEGMENT_HEIGHT = 16 statement that defines the height of the RPM: ###### banner at the top, and you may need to adjust the TEXT_SIZE_LARGE = 2 constant to a different number that correlates with the font size you choose for that top RPM:### banner.The other critical thing you will need to do is to increase the number of sensor pulses per revolution to more accurately display slow RPM. The easiest way is to add additional reflective strips to the spindle. On th...

    see more »

    Yes, it should work with the 1.8 TFT screen. You'll need the correct driver, which Adafruit has available on their site. You'll need to adjust the constants that define the OLED resolution, so you'll need to change OLED_HEIGHT = 64, OLED_WIDTH = 128; to the 128x160 resolution of the 1.8 TFT. You may need to adjust the YELLOW_SEGMENT_HEIGHT = 16 statement that defines the height of the RPM: ###### banner at the top, and you may need to adjust the TEXT_SIZE_LARGE = 2 constant to a different number that correlates with the font size you choose for that top RPM:### banner.The other critical thing you will need to do is to increase the number of sensor pulses per revolution to more accurately display slow RPM. The easiest way is to add additional reflective strips to the spindle. On the Router, you could easily add from 1 to 5 more strips to the collet nut to add additional sensor pulses to detect. In the caculateRpm() function you'll need to create a new constant and divide the revolutions by the total number of sensor pulses per complete revolution. ie. const int PULSES_PER_REVOLUTION = 4; current_revolutions = revolutions / PULSES_PER_REVOLUTION;Then adjust the arrays to that will generate the dial. Change MAJOR_TICKS[] to MAJOR_TICKS[] = { 0, 1000 }; and MINOR_TICKS to MINOR_TICKS[] = {250, 500, 750};

    View Instructable »
  • Add an Arduino-based Optical Tachometer to a CNC Router

    A single color display is supported without any changes needed. The two-color OLED displays dedicate 16 pixels for the top color. On a single color display, those same number of pixels are used as the top banner, but it's all one color.

    View Instructable »
    • Add a Laser Guide to Your Sienci Mill One CNC Router
      857 views
      24 favorites
      0 comments
  • tmbarbour's instructable Add a Linear Speed Display to Your Bandsaw's weekly stats: 8 months ago
    • Add a Linear Speed Display to Your Bandsaw
      682 views
      12 favorites
      0 comments
  • Add an Arduino-based Optical Tachometer to a CNC Router

    I have the full color 3" touch screen for the Arduino that could be used. It needs a full-size Arduino to drive it. I wouldn't know how to properly connect the sensor up to the engine to have a proper tach. I believe it would be cheaper (and more reliable) to purchase an after market tach. You could cobble together a combination, use an aftermarket tach and have it drive a 3" Arduino graphics display.

    That sounded like a reasonable question, so I modified the the arduino code and constructed the display and sensor holder out of wood this time. I ended up using 24 reflective strips to provide a reasonably smooth display and enough precision for the slower speeds. I just published the instructable, so let me know if you have any questions. https://www.instructables.com/id/Add-a-Linear-Speed-Display-to-Your-Bandsaw

    View Instructable »
  • tmbarbour's instructable Easy Z-Probe for Your CNC Router's weekly stats: 8 months ago
    • Easy Z-Probe for Your CNC Router
      584 views
      11 favorites
      0 comments
  • Add an Arduino-based Optical Tachometer to a CNC Router

    I don't know for sure, but I'm skeptical that it would work. The sensor in the project needs to respond quickly to the reflective input. At 30K RPM, the sensor is sending 500 pulses a second to be detected by the Arduino. I would be concerned that the proximity sensor might not be optimized to respond so quickly and may even be buffered so that 'smart car robots' don't twitch when the sensor is triggered.

    I hadn't really considered any of those, but looking at the the pages of Digikey sensors listed, they have an angled sensing field and are tuned to a distance of 0.15". The data sheets show a massive drop-off in sensitivity past 1" The sensor in the project works extremely well at the needed distance of 1.5".

    View Instructable »
    • Add an Arduino-based Optical Tachometer to a CNC Router
      3,032 views
      42 favorites
      2 comments
  • tmbarbour's instructable Add Homing Switches to a Sienci Mill One CNC's weekly stats: 1 year ago
    • Add Homing Switches to a Sienci Mill One CNC
      921 views
      11 favorites
      1 comments