Hi All,
I have the B83609 ir wheel encoder (20 holes per disk). It is hooked up to an ESP32 ala the Dronebot tutorial. However, I am getting consistently 10x higher click counts than I should be getting. Furthermore, the click count varies when run on a measured 2 meter distance.
Has anyone run into this problem ?
My thoughts are:
1. ESP32 is sampling too fast
2. There is debounce
3. There is ringing.
4. My jumper wires are too long
I need to get this working so I can start multiply my problems by tacking on an IMU.
Best regards,
Phil
Since no one has responded maybe answers to a few questions will help spur someone more familiar with this setup to answer.
First the B83609 sensor is designed to measure rotational speed. You indicated that your getting 10x more counts than expected. What are you using to measure the turning disk besides the B83609 for reference? The B83609 will provide 20 high and 20 low pulses for every revolution.
You also mentioned that the click count varied on a 2 meter distance. Does this mean you are trying to measure distance traveled? Are there belts, wheels or tracks that could slip, so there is not a one to one relationship with the rotating disk?
To be helpful more information is needed? What is the general application? How do you have the B83609 wired to the ESP32? What is the content of your program?
I have not used any of the parts involved in your project so you are probably helping more than I'm helping you. I found your problem interesting and did some research on the components you indicated you were using. I noticed that in Bill's video he indicated that the raw signal from the B83609 sensor was and not very clean and required a circuit to clean it up before feeding into the processor board. You may already have this but I thought I would mention it as it could cause the eradicate counts.
I also noticed that you take both turns1 and turns2 times 60 to get rpms. But I didn't see anything that actually measured the time that the Counter1 and Counter2 were accumulated in.
float rpms1 = 0.0;
float rpms2 = 0.0;
float turns1 = 0.0;
float turns2 = 0.0;turns1 = Counter1/20.0;
turns2 = Counter2/20.0;
rpms1 = turns1 * 60.0;
rpms2 = turns2 * 60.0;
Also is there a chance the optical pickups are not aligned with the slotted wheels? Or maybe there is something loose in how the two are mounted.
Hi,
Thank you for your input. I will have to check later in the year. It could be something was loose. The DIY robot car is stored away in the attic in preparation for Summer. Alternatively, I will try to find some motors with built in encoders.
Best regards,
Phil