Electrical

Acorn’s electrical system can broadly be described as a motherboard communicating with four corner assemblies using CAN bus.

A diagram showing the vehicle chassis wiring.

Chassis Wiring

We use a custom data cable system with two CAN bus circuits and a special emergency stop system, plus a second set of cables to carry power. One CAN bus circuit is used specifically for our motor controllers, while the other circuit is available for general use.

Power cables are generally 12 gauge silicone jacketed wire terminated with Anderson PP45 crimp connectors. We use this wire specifically.

The data cable system uses 8 pin “M12” connectors and cables commonly used in industrial ethernet. We use the A-code mating style as opposed to X-code. For PCB mount connectors we use M12A-08PFFR-SF7003, for cables we use something like M12A08ML-12AML-SD002 or M12A08ML-12AFL-SB002.

1 ESTOP SWITCH CIRCUIT
2 CAN 1 HIGH
3 CAN 1 LOW
4 ISOLATED GROUND
5 CAN 0 HIGH
6 ESTOP SQUARE WAVE
7 ISOLATED FIVE VOLT
8 CAN 0 LOW

Circuit Boards

Acorn relies on an extensive set of custom circuit boards. The two most important boards are the motherboard and the motor controller, with other boards supporting these in a few ways.

Anyone can order our PCBs through JLCPCB using the files from our github, but this is not advised until our PCB designs have matured. In the future we will publish official PCB releases, to make ordering them easier for users.

Motherboard

Holds the main computer, a Raspberry Pi Compute Module 4, and communicates with the four motor controllers using CAN bus. Also manages GPS, wifi, emergency stop system, and several other functions.
Kicad files

For more information see Motherboard

Motor Controller

Made up of three PCBs. Motor Driver Module, CPU Base, and User Interface. The driver module holds the MOSFETS and related power driver circuitry to drive a motor. Nominally rated at 53 volts, 20A continuous (depending on thermals), 50A peak. The CPU Base holds two motor driver modules and contains two RP2040 CPUs. One CPU handles all motor driving functions, while the other handles CAN bus communications and other auxiliary functions. Both PCBs can be reflashed over CAN bus using our firmware flashing scripts. The User Interface PCB attaches to the CPU Base PCB and features several buttons, switches, and LEDs as well as room for an OLED display. This is used to control the corner assembly.
Kicad files

Induction Encoder

Our round induction encoder PCB is used to sense the steering angle in the corner assembly. It is a large ring-shaped PCB with a special coil pattern and an IPS2200 induction encoder chip, plus 8 evenly spaced analog magnetic field sensors. Three ADS1115 I2C ADCs read these sensors. The PCB communicates with the motor controller using I2C over the motor controller encoder ports. The induction section uses two phases, and the magnetic sensors detect a magnet in the steering gear which disambiguates the phases. The PCB is partially generated with a python script also present in the git repo.
Kicad files

Magnetic Angle Encoder

An on-axis magnetic angle encoder. Designed to be used as an angle sensor on hobby-style brushless motors for use with our motor controller. Not presently used on our robot, but important to know it is available for use with supporting code.
Kicad files

RP2040 Debugger PCB

A custom debugger PCB for our RP2040 board. Designed before the official debugger was available, but features our larger and more rugged molex debug connector, USB-C, and lots of good vibes. The design has now been updated to match the official debugger schematic (excluding level shifting buffers).
Kicad files

Mag Sensor

A single analog magnetic field strength sensor PCB is available for custom end stop sensing when building tools or other machinery with our system. This board mates to the CPU Base PCB of the motor controller.
Kicad files

Supercap balance and fuse PCB

This PCB is still under development, but will balance the supercaps and provide some sort of safety fuse or current based shut-off of power if there is a short on the system power leads. One version of that board is here:
Kicad files

Camera system PCB

In the future we will build a camera system for Acorn that will probably feature a Raspberry Pi CM5 compute module, two Starlight Eye open source cameras, an opto-isolated shutter sync circuit, and power supplies. One module could be mounted in each corner of Acorn with one facing outward and one facing inward, for a total of four external navigation cameras and four crop vision cameras. Cameras could also be mounted as overlapping stereo pairs. See the open source StarlightEye camera here:
GitHub - will127534/StarlightEye: A IMX585 camera board designed for Raspberry Pi See also the One Inch Eye here:
GitHub - will127534/OneInchEye: A One Inch CMOS sensor (IMX283) camera board designed for Raspberry Pi
The large pixels of these sensors offer considerable advantages over standard Raspberry Pi camera modules, but sensor availability may be an issue.