-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Solve the noise issue in PCB due to motors #14
Comments
@Jamm02 @ChinmayLonkar @Sidshx kindly assign someone for this testing and post the results here and treat it as priority since we need to make changes to SRA board hardware design wrt to the post. |
@gautam-dev-maker I'll take this task👍 |
HOW TO REPRODUCE THE ISSUE:
WHAT TO DO:
Based on the result of the above test we can debug the actual solution of the issue. |
@omsheladia will be taking up the task |
More details on the issue - Reddit post 1: https://www.reddit.com/r/embedded/comments/srgqlz/i2c_communication_not_working_properly_when_motor/ Reddit post 2: https://www.reddit.com/r/ECE/comments/srgpyk/i2c_communication_not_working_properly_when_motor/ Reddit post 3: Reddit Post 4: Solution and Conclusion: After many test runs, the following is the conclusion until now:
Layer 0.1uF(<=100uF) was installed across the terminals of all Bo motors still no change in results.
For more reference view discord #wall-e channel |
@dhairyashah1 I am not so sure about the second point of the conclusion, because we were only able to control the error if we manually reduce the duty cycle (and hence reduce the current consumption). Let's see if the issue can be reproduced. |
@gautam-dev-maker if we could have an economical alternative to the motors that would be great too. BO motors get stalled with ease momentarily. |
I agree, but then my dilemma is why didn't we face this issue with L298N motor driver, why with TB6612FNG. If motor driver is the real culprit then we will need to make serious changes. |
I will be taking up this task, though a small meet before getting started would be helpful. |
@omsheladia I would recommend you read all the material posted above and go through the reddit post provided by @dhairyashah1 , I think that is way more than enough to explain things. |
@omsheladia any updates on the task? |
@Jamm02 Gone through the resources, and am coming to the college tomorrow since I do not have Walle at the moment and will update how it goes tomorrow |
|
@dhairyashah1 I was told just to reproduce the results first and then test it with the new motor driver. |
@omsheladia was this tested on drv8833 or tb6612fng |
@dhairyashah1 The kit available in SRA when I went was not in the best condition, so had to reassemble it again. Then even while testing the esp32 mounted on the sra board was throwing errors until I replaced it with a different one which took some time. And I was testing it on the current tb6612fng driver. |
@omsheladia so it took 8 days to reassemble and solve errors right? |
|
@omsheladia Have you tested this on DRV8833 instead of tb6612fng? |
I was informed in person today to carry out the same thing on a breadboard i.e. without using the sra board. |
Wasn't this already obvious @omsheladia? You can't plug a DRV8833 into the existing slot on the SRA board. Options - testing on a perf board/ breadboard. This was conveyed and self-understood well in advance as per my knowledge. |
@dhairyashah1 I had to try the same thing with DRV883 and I never said anything about plugging it into the existing slot directly, was gonna use jumpers. But there was a risk about the difference in voltage levels of both the drivers which could destroy either the DRV8833 or the SRA board which I told Gautam. So he told to continue with TB6612FNG without the sra board. |
@omsheladia how is it different to try it on sra board vs externally on breadboard? The solution was to look up and research on some solution online/ask on reddit/ try different stuff. I dont see anything like that. Consider using Drv8833 changing voltage level as we have a lot of buck converter MODULES at SRA. Converting 12v to 10v and trying could have been done. I want to know what different has been done/tested clearly. |
@dhairyashah1 it was not my decision to do the current task on the breadboard. As far as solution is concerned, I did try to run by some solution but was told to do the task first and then will see about the solution. And for hooking up the DRV8833 with the SRA Board, I did consider using the buck converter for the change in voltage and also ran it by Gautam before setting it up in SRA yesterday but I was told to do the task first which I wrote above. |
@omsheladia pls specify what was that some solution ? Be clear, talking with links, demos, results or conclusions is desired. |
@gautam-dev-maker @dhairyashah1 @omsheladia, @Premraj02 will be following with this task ahead. @Premraj02 it is expected that a brief update is given by the end of this week. Feel free to ask queries regarding the task after going through the thread. |
@dhairyashah1 @gautam-dev-maker Updates:
2)Implemented the MPU and TB6612 system on breadboard instead of SRA board. But the issue still occurs. Thus the issue is related to motor driver and not the design of SRA board. 3)Next I replaced the TB6612 with DRV8833 (on breadboard) and the issue did not occur. So I connected the DRV8833 on the SRA board using jumper wires. And it seems to work fine. 4)The only issue with DRV8833 is that it requires less voltage (Currently using 9V, Max is 10.8V) and also it supplies less current than TB6612. Max current with TB6612 was 600mA whereas with DRV8833, max current is 500mA. Due to this, the motors are slower with DRV8833 and when the pitch error is less (±1) the motors don’t respond to lower values of PWM. Conclusion: DRV8833 solves the noise issue but with limitation of current. In future if we decide to shift to DRV8833, we will have to add on more voltage regulator on the SRA board (12V to 9V) or use a 9V adapter instead of 12V. Next I will try to get same output current by increasing motor PWM above current limit of PWM values. |
As per the datasheet of TB6612FNG motor driver, VM as well as Vcc should have 2 bypass capacitors of 10uF and 0.1uF. But the motor driver module has only one 10uF capacitor on VM line. So I tried adding one more 10uF capacitor between Vcc and Gnd. But this doesn't solve our problem and the issue is still there with the TB6612FNG motor driver. References: https://www.sparkfun.com/datasheets/Robotics/TB6612FNG.pdf Attachments: |
@dhairyashah1 @gautam-dev-maker Attachments: |
@Premraj02 what do you mean by "starts responding at"? Try 12 V with DRV8833 and see if it works, only then we can determine if the problem is with motor driver or routing. Also if we are looking at solutions, we can use ferrite Bead on PCB. But to use ferrite bead we must know the upper range frequency of noise generated. |
@gautam-dev-maker Tomorrow I will try DRV8833 at 12V. Also, I will try to check the noise frequency using oscilloscope. |
@Premraj02 kindly post all the updates here. |
@dhairyashah1 @gautam-dev-maker
Next I will be testing effect of PWM frequency on motor noise. Attachments: |
https://youtu.be/fGtXZA5SEDI
|
@Premraj02 post the updates, findings, conclusions and test performed so far here |
Updates:
Conclusion: Connecting MPU direcly on SRA board was the best solution found. To test this solution deeply, we will need to prototype one SRA board with onboard MPU connector. Attachments: |
Summary of tests performed till now: <style type="text/css"></style>
|
Updates:
Conclusion: By using 4 core shielded cable to connect motors, we can completely eliminate the noise. Attachments: |
In Wall-E 2022, we faced the issue of noise in I2C line , which was caused by static noise in motors. This forced us to add capacitors and ferrite bead on the motors. Since we have never faced this issue before with BO motors, we can assume that motor driver might not be working well in filtering the noise.
We can test it by using different motor drivers like DRV8833 to see if the problem persists.
The text was updated successfully, but these errors were encountered: