Forward Note
Its October already? That is kind of wild. Seasons picking up I guess, and the FTC Discord just added a new electrical channel(Hello people from the future, yes this is that old presumably, or they deleted the channel by now). Anyway, the motivation for this is I saw an FTC bot light on fire a couple weeks ago and I thought hey, why not compile all that useless information you have about electronics and stuff into one post! Most of it ended up in gm0 but some of it is a bit more complex so I put it here :)
I’m not gonna go over the stuff in the gm0 wiring guide because thats done well and frankly I don’t have the spoons to do this without that as a base. So read through it, its like 5 minutes or so and gives you the highlights
Alright lets begin with everyone’s favourite topic
Static Discharge/ESD
This ones pretty simple honestly not much too it but I do want to kind of explain what ESD is since people don’t really fully understand it I think? ESD has two main forms here but only one is really relevant. The irrelevant one is human contact static discharge. You ever touch a doorknob or those little screws under a light switch and get zapped? Or do that to your friend by accident? Thats human contact static discharge, pretty much every device on the market has some way to mitigate it so its not a huge deal. The real killer is the other form of static discharge, which is static discharge from your robot to another bot or wall.
When a robot moves, it builds up charge. The exact mechanism behind this is complicated and boring (go take electricity and magnetism in college) but there basically ends up being a bunch of charge (electrons) just kinda hanging around on your bot after driving it around a bunch. The thing about electrons though, is they like to spread out, and so they will always try to rush to new areas when they can. Your bot is pretty isolated so they just hang out on there normally. However, when you touch the field wall (specifically the metal part at the top), something happens. Suddenly… there is new metal to explore! The electrons, excited at this New Metal Thing to explore, rush out as fast as they can.
The slight issue with this, is all those electrons rushing out? That manifests as a spark of electricity in the thousands of volts range. Ouch!
Now gone are the days where this would actually kill your electronics, but it really isn’t good for them. If those electrons decide the easiest way to get to the wall involve going through your expansion or control hub? Yeah that thing is going go turn off for a very brief amount of time (causing it to reboot sometimes) while the electricity goes through. Not good.
How do you prevent this?
Well, gm0 talks a bit about this, but one way is to fight the charge buildup itself. Dryer sheets on the wheels, ESD mitigation spray yada yada yada and I’m already bored. Lets talk about the more interesting stuff: How to stop it on your bot.
First thing is first: The REV grounding strap. This actually doesn’t prevent charge buildup at all, it just grounds your frame to mitigate the effects of ESD. Here is another way to think about it: Have you ever jumped into a pool before and the water felt cold? Its annoying at first, but over time you get used to it and the water starts to feel warm. After that, if you get out of the pool and jump in again, its not cold anymore. This is a horrible explanation that grossly oversimplifies whats going on, but the ground strap is basically just getting the electronics used to the charge so when it comes rushing through its not as catastrophic.
Pretty much the easiest way to prevent ESD though, is to just cover exposed metal on your robot with electrical tape if its in danger of touching the field wall. This massively reduces the chance of ESD killing your bot. Pretty simple.
Current Draw and Power Budgeting
I think I can safely claim this is one of the top 3 most misunderstood things about FTC electronics. Its pretty fair though, the actual dynamics of how power draw and current and voltage and all that works is pretty confusing but I’m going to try to sum it all up for you. The main purpose of this section is to explain something I think that a lot of people don’t truely understand, which is the 20 amp power limit in FTC.
The reason the 20 amp limit can be confusing, I think, comes down to a dissonance between experience and theory. We know the numbers for stall current of FTC motors (around 9 amps or so), and the fuse rating is constant (20 amps). So then, by those numbers, stalling 3 motors should pop the fuse! Except… it doesn’t?
Go ahead, take your strafer chassis and drive it into a wall. Stalling all four motors you see… the fuse remains unbroken somehow. Isn’t that curious? 4 stalled motors should be drawing 36 amps which is above the 20 amp limit, so everything says it should stop… but it doesn’t. I’ve seen people try to explain this as the fuse being thermal based and other explanations but its both a lot simpler and a lot more complex then that.
Your first hint at what is going on is the little battery meter in the drivers station. When your mecanum chassis stalls, you will notice the voltage dropping. In fact, many FTC teams know about “brownout”, you draw too much current and your battery voltage falls. Its interesting to know why this happens though. To understand this, you need to know about an electronic device: the resistor. A resistor, well, resists electricity (thus the name). A very simple but important property of the resistor is Ohm’s law, which simply states that voltage decreases when going through a resistor, and the amount it decreases is equal to the current through the resistor times the resitence of the resistor. So how does this relate to batteries? Well, when we model a battery, we actually model the battery with a small resistor next to it, because as you draw more current from the battery its voltage will drop. This is called the internal resistance of the battery.
Why this matters:
At 5.0A draw, your battery only delivers 12.0V instead of 13.0V. Motors draw less current at lower voltage, which is why stalling 4 motors doesn't instantly trip the 20A fuse.
Tip: If voltage drops below 9V, the REV Control Hub may brown out and reboot!
I went and measured 7244’s batteries and we average about 0.2 ohms of internal resistance. This means for every amp of power drawn, the voltage will reduce by about 0.2 volts. Very quickly, you can see this adds up. If we draw 10 amps through the battery, our voltage already drops from 13 volts to 11 volts. The full 20 amps would drop us from 13 volts all the way down to 9 volts.
The reason why this helps you is it slightly self regulates the current draw of your system. When given a lower voltage, motors cannot draw as much current. For example, the matrix motor inside of popular goBilda yellowjacket motors draws 11 amps at stall at 12 volts, and only draws 9 amps at stall at 10v, and 7.2 amps at stall at 8v. So when you stall a goBilda yellowjacket, it draws 11 amps, which means your voltage drops by 2.2 volts down to 10-11 volts, which means it can only draw 9 amps, which means your voltage goes to just above 11 volts, and it eventually will settle into a number around 9-10 amps. This gives you a little breathing room against the budget, but not much.
As a note, the main thing that saves you with the strafer is the wheels will slip well before the motor stalls enough to break the fuse. This is why 6 wheel drivetrains will causes fuses to trip sometimes, because of the added traction.
Power Budgeting
We really don’t want our voltage to drop too much while running our 30 degree of freedom robot, so we want to budget power. All power budgeting is doing is looking at what we are running and trying to balance out how much power is being used at one given time. The best way to do this is simply to run mockups of the mechanisms, record power draw, and then put that into a spreadsheet and combine what you want to run at once to make sure you have enough power. For example, if you want to be actively driving (usually 3-5 amps) while raising an arm (4-5 amps), then you may not be able to also lift slides (2-5 amps) without dropping a lot of voltage, which decreases how much power you can put into mechanisms. Maybe you would want to stop, in order to clear out the drivetrain power draw and allocate it to the lift. Remember to keep in mind that pushing a bot requires more power then just driving freely.
In general as well, a single motor should never draw more then 4.5 amps on average. If it does, gear it for more torque, since you will get the same effective speed at lower current draw. Just a quirk of how motors work.
Also remember to include servos here! You have to halve the current usage since they operate on 6v but not 12, but they can also quickly add to your power budget.
But what is the proper budget to aim for? It really depends on how much power you are comfortable dropping. I usually try not to exceed 2-3 volts of drop, but in an emergency you can absolutely push past that to 16, 17, or even 18 amps. Remember, always give yourself headroom in case you suddenly need to play defense or throw more power into something. I usually aim for a max of 12 amps worst case theoretical (your power budget should be worst case average so you always come under).
My rule of thumb is to try to avoid running more then 2 things at once. So if you are running your drivetrain, run an intake with it. If you want to run slides, don’t run it with the drivetrain and intake. The 2 at once principle is a decent starting rule of thumb, but still do the budget to see what you can get away with.
Power Budget Calculator
Connected Devices
4 devicesRecommendations
Power budget looks good! You have headroom for defense or sudden movements.
Tips:
- Keep at least 3A headroom for unexpected defense
- Servos run at 6V, so their current draw is halved on the 12V battery
- Mecanum wheels slip before stalling, saving you from fuse trips
- Avoid running more than 2 heavy mechanisms simultaneously
Analog Signals
I want to touch on this briefly due to the growing popularity of the Axon Robotics Max+/Mini+ servos with their analog output. There seems to consistently be a few people concerned or noticing noise in the analog signal when running it with the servo line. This is completely expected of an analog signal.
Basically when you have a signal line you always need to remember where your ground is. Due to funny electrical effects, a signal line will couple with a ground line running near it, and when they are in seperate cables then nearby wires can induce noise in the analog signal. I’ve seen speculation that the PWM signal line is what is causing noise in the analog reading, but I tend to disagree. My personal guess, without testing this, is the servo is introducing some noise in the power line that ends up messing up the sensitive analog signal slightly.
The solution to this is pretty straightforward: run your analog signals seperate to the servo line with a little bit of seperation. This will help avoid noise and give you a more accurate signal. I believe Axon sells a jst adapter board that helps with this by running ground next to the analog wire, which is pretty helpful.