I am having trouble creating a working drive for our robot, I have replaced the cortex, power expander, wires, motors, batteries, way the chain is routed, tension on the chain including adding extra axles to allow for a looser chain but the extra axle put tension where we needed it to be. We have widened our drive in order to have 2 chains connecting the wheel so the chin goes from the 1st wheel to the 2nd wheel and there is a chain on the opposite side of that wheel going to the 3rd wheel. Basically our problem is that our drive will function up until the point it is either bumped even slightly or touched. If that occurs then our motors stop working and basically constantly turn on and off if we try to move. we have tried everything we can think of and have made sure there is no extra friction. All of our other motors are working properly but the drive wheels are not. Please let me know if anyone else is having this problem r if you have any ideas to resolve this issue.
Which ports are the motors connected to?
You are overheating your motors. When a 393 motor is overheated, a thermal protection circuit in the motor trips and won’t let it do anything until it cools down. For a given voltage, electric motors use more current at low RPM. More current means more heat. Take steps to reduce the strain on the motors so that they can spin more freely, or reduce the gearing ratio if necessary so the motors can spin faster. One easy way to tell if a drive train has too much friction is to dismount the motors then try to spin the wheels. If they are hard to spin or don’t stay spinning for a while, there is way too much friction in the drive. The other change is driving changes: don’t suddenly go from stopped to full power, don’t suddenly go from full forward to full reverse, don’t push hard against stationary objects or robots, etc. These driving changes can also be partially enforced with coding changes if necessary.
Pictures would help but try things to reduce the load: (here are a few things off of the top of my head)
- Make sure your axles are not bent
- I hope you are using bearings
- No metal on metal contact
- Make sure the inserts on the wheel are not stripped
- Have the robot be as light as possible (without compromising structural integrity)
- I never like using chain on my drive, if you have 6 motors and 6 wheels just direct drive each wheel independently and forget about the chain or any gears (this has been my exact issue in the past)
Also you could add JPearmans smart motor library if you are using encoders which will also help a lot. But I would only add that after you have it working solely mechanically
they are connected to ports, 5,6,7,8. I have heard about ports 9 and 10 randomly not working but i don’t think that’s the problem we are having thx, tho.
thank you for your help however we have taken into account all of the things you have mentioned, and have even tried replacing the cortex, batteries, and have made sure all those problems are accounted for. I’ll will include pictures to show that it is well designed but obviously something is wrong. we have tried talking to other team’s coaches to see if there is anything else we are missing but we have tried everything they have suggested and it has resolved the problem.
the motors are not overheating they start acting like they do not have full power but if you wait 10 seconds then everything is back to normal and they all run on the power-expander 4 motor are y’ed and the other are plugged in normally. the motors are cold/ normal temperature when they are acting up. they are like in a state where they move slightly back and forth they are moving slightly forward but they go back and forth when the motors are not ruining right. but when the motors are ruining right they drive the way they should and no problems occur. thank you for your advice but we have done our research before relying on the forum. but we have looked everywhere to find a solution but nothing works, also all the lights on both the cortex and the power- expander are showing green.
That might be a problem: ports 1-5 are on one PTC and ports 6-10 are on the second PTC.
The rule of thumb is that each PTC could only handle two motors at max (stall) current before starting to thermally shut down. Once motors spin up to their nominal speed, the current demand goes down, and each Cortex PTC could support all 5 motors.
So, if you have multiple motors on various subsystems - split them evenly. For example, half of left side motors, half of right side motors, and half of the flywheel motors on ports 1-5, and the remaining motors on ports 6-10.
Ports 1 and 10 are special, in a sense that they have faster command response due to the built-in H-Bridges. It is best not to mix them with other ports on the same subsystem.
Then don’t start all subsystems at once, i.e. first spin up flywheel and only then start driving or vice versa.
As @John_TYler have said, first you need to ensure that all mechanical stuff is taken care of, which I read you did. If you pull axles out of motors the drive train should be able to free spin for a number of seconds:
Then, as @josh_siegel pointed out, you may want to give a try to Smart Motor Library. You primarily need it for slew control but its other features make it worth learning how to use. You will be able to reduce initial motor current demand by applying slew control.
EDIT:
Did I understand correctly that you are running all six drivetrain motors off the power expander?
That would be definitely a problem. Power expander has only one PTC and there is no way it could handle six motors without very gentle slew control.
Your best strategy is to leave two motors on power expander and power the rest of them from Cortex splitting them even between port groups 2-5 and 6-9.
I agree to this, The simpler your drive is, the less sprockets, gears, and axles it has, the less friction and slop the end result will have.
Is this only happening when hooked to competition control systems? Can you download the code the the simple Task (Main) formatting rather than the template.
I had an issue that sounded very mechanical, but I’m positive it wasn’t. It seems kind of like yours. Kind of.
My Problem
TL;DR:
My robot’s drive would work awesomely in practice, but never on the field. After rigorous demolition of possible sources of friction, I decided to change my code from the competition template. It worked afterwards.
This only occurred when on the field, hooked into their control system.
Whenever I ran my autonomous code, my drive stopped working about 30-45 seconds into the match. I was able to wait for a few seconds before they would start working again, and then fail in a few seconds. This sounded extremely mechanical.
My robot had run perfectly in practice prior to the event. My HS 4 motor drive train linked with chain to a central, elevated climbing assist wheel had never stalled out. To my (still very young) organization, my drive power and speed was impressive with Cortex electronics.
I was using a steel chassis with locked omnis, and two robots together could not push me. It was awesome. (And I still haven’t been successfully pushed. In practice, I pushed around a 4 Motor 393 torque simple robot. At nearly full speed)
Anyway, I pretty much tore apart my drive train between quals. It ran perfectly on a practice field. Nevertheless, I started by removing my chain entirely, thinking a hit had bent an axle or something.
I tested it, and it ran about the same. Still essentially perfectly.
In my next match, I stalled out again. I had enough time afterwards to test drive my robot as it sat for about 7 minutes straight. No problems.
But, I still tore into it, because obviously something was wrong. I removed my outer wheel supports, against my better judgement. It ran fine in testing, but, once again, stalled on the field.
I’d already done more than what my coach could think of, so I was kind of at a loss.
Well, that was my last qual match. It was only then I thought to look at the code and see if something logical was wrong. It wasn’t, from what I could see. I even brought over another team’s programmer to take a look. (Cortex teams were sparse at this competition, so I didn’t have many options. And I didn’t know where to look for Strong V5 programmers with extensive RobotC knowledge.)
The code was the only thing it could be. I figured that it had to be how my code was interacting with the field control. At least that’s all I, or anyone I talked to, could figure out.
So, I pulled up a simpler, backup code file that didn’t use the competition template. I put it on my robot, and it ran perfectly on a practice field, just as it had with my other code.
I hooked into a Driver Skills run with it, and just tested my systems with the competition control. It’s slightly different, but I figured close enough. (Because I was only testing everything, it was a very weak run. But oh well. A good Skills run wouldn’t do much against my seemingly incompetent mechanical prowess.)(Except the issue wasn’t mechanical, as established.)
Everything ran fine.
In elims, we were picked up by the next ranked team, and were the 10th or 12th alliance, I think. Didn’t do very well in quals, so there I was. But I really liked the team I was with. (Even though their robot was kinda lacking. I liked the people.)
I didn’t run an autonomous code, and managed to keep my drive from stalling. We didn’t have much of a chance anyway, so I stayed away from using full power as I normally would.
We lost in R16, but that’s okay. (The refs gave me an unwarranted warning when I tried to use my ram, so I backed off. It wouldn’t be match-affecting, anyway.)
I can elaborate on this ^ if needed for specific questions. Just ask. I’m still not sure I know exactly what the problem was.
If you can, can you swap out your drive motors with normal, torque motors? Make sure it’s not an internal issue? As you can see above in my “hidden details,” I have some experience with seemingly mechanical electrical problems.
Also, was your phone(s) in Airplane Mode? An outgoing signal they close to the Driver Ststion, such as a hotspot, could’ve caused signal interference, though it’s a long shot.
actually yeah, @Got_a_Screw_Loose is a smarty make sure you establish that the problem isn’t in the code before checking the mechanics. try making a simple program to drive forward or something and see if the problem persists. It very well may be a coding issue.
I can’t tell if you’re memeing me or being serious. I’ve been told both before.
Either way, thanks, Xe.
a little of both I suppose…
Honestly not surprised. And I’m loving that my tagging is actually working now.
Let’s not get off-topic here. We have a pm to do that.
So, thank you guys for all your suggestions, however we have found the problem that resided in the code, it was that when setting up the code in the beginning you can set what type of motor is connected to each port high torque high speed normal. in the code we were trying to run the motors were set to normal so they were not receiving the amount of power they were expecting I guess and that caused them to fail, but now that we have changed them to be set at high speed motors we have not had the problem happen again. thanks for all your help.