2019-07-22

So, I've been building robots which has made me learn a lot. Some of my pain points right now are power distribution, power supply, controller selection, and chassis configuration.

Power distribution

Virtually all of the microcontrollers I have (because I've focused heavily on the feather ecosystem) require either USB or LiPo/JST power input, and they're kind of voltage sensitive. This is all well and good for most things - a lot of my sensors are 3.3V and that's easy to do; a lot of the boards can even provide 5V if I use a USB power supply. However, I'm using motors now - and these want 6V+. So, I'm looking at either two batteries and/or building my own power distribution system.

I'm opting to design my own board that uses an LM7805 to provide a 5V rail and an LD1117 to provide a 3.3V rail, while still providing a direct power out. I'm also adding in decoupling caps on both sides (1000 µF on the power supply input and 100µF on each rail), and power switches for both the power supply and the motor controller output. This gives me a global kill switch as well as a way to kill the motors so I can just test sensors and other things. It also removes my input power constraint (the limit for both is around 40V, and the max I'm even looking at is 24VDC much later down the road for a heftier chassis). I was thinking of using an MCP1700, but they have a 6V input limit, and I'd rather not have that constraint. I expect that the current draw through the 5V and 3.3V rails will be well under the 1.5A limit, so I don't think I need heat sinks or anything; still, I'm going with a flush-against-the-board approach for heat dissipation.

Controller selection

Choosing a controller has proven harder than I thought. I'm keen to use an ARM controller to provide more power, and maybe to run TFLite on the board later. This means I'm constrained to the boards I have that are not your typical Arduino; the boards I have available right now are

  • an Adafruit Feather M4 express (samd51, USB/JST LiPo)
  • a Sparkfun Redboard Turbo (samd21, 3.3V, USB/JST LiPo)
  • a Sparkfun Thing Plus (samd51, 3.3V, USB/JST LiPo)
  • Raspberry Pi 3B+

Power supply

This ties together both the distribution problem (making sure I have an adequate power budget) as well as the question of supplying the controller. The three samd options are all limited to power input via a JST-connected LiPo battery or USB power; I think I'd use a LiPo for the controller and a separate battery pack for everything else. This preserves the USB port for programming, especially since none of the boards have networking options readily available.

From a power perspective, the Pi is the biggest reason to make sure the 5V rail can supply a higher current. The RPi forums note that 2.5A is recommended, which allocates 1.2A for the USB ports and 1.3A for the Pi. It might make sense to power the Pi using one of my 2.4A USB power packs; the only real USB device I'd be using though is a camera. The Jevois camera that I'm looking at using now (because it's what I have) notes [1] the following power constraints:

  • Regulated 5V +/- 10% voltage.
  • No less than 800mA current (so, a total of 4 Watts of power). Less current is possible if you know that you will only be using some machine vision algorithm that does not fully load the CPU inside JeVois, and which will hence yield a lower power requirement.

The IMU uses less than 5mA operating at a useful rate, so I don't really need to account for that; it's dwarfed by the other sensors. The HC-SR04 ultrasonic sensors I'm using will require 40mA; the two common configurations I have now are 3x URS (forward facing) and 4x URS (3x forward facing and 1x rear). With 4x URS, the max draw from these is 160mA, plus 800 mA for the camera. I also picked up a low-end 2D scanning lidar (the RPLIDAR A2M8) indicates 600mA max power usage. This yields the following current requirements:

Sensor configuration Current draw
4x HCSR04 160 mA
4x HCSR04 + Jevois A33 960 mA
4x HCSR04 + A2M8 760 mA
4x HCSR04 + Jevois A33 + A2M8 1560 mA

I don't yet know how much current my battery packs can supply, so that's the next step to figure out. Since I'd only use the camera and lidar with a pi, that means 1.6A + 1.3A = 2.9A. I'm not sure my current power packs can supply that.

Chassis configuration

So far, I'm using some cheap chassis I picked up; these are limited in their configurability. I ended up picking up some ABS sheets that I can drill holes in, so I can add holes that fit the chassis mounting options and set up the mounting however I want. I tried supergluing the ultrasonic sensors to Scooter but that made replacing them after I killed them through overvoltage difficult; krex has limited mounting options, even after I bought a second chassis just to steal a stacking plate. At some point I may just have to build my own chassis from the ABS sheets.

Going forward

The reason I'm building different robots is to do different things. Krex has a Jetson Nano that I can use to do some reinforcement learning and build a relatively complex system on top of ROS. The smaller (e.g. Feather) robots will platformio / Arduino framework projects that just experiment with different ideas.

[1]c.f. http://jevois.org/doc/UserConnect.html

Tags: ,