Skip to the content
PCBKitNew board
4 layers160 × 105.4 mmSolarCarECU, the printed circuit board in 3D

UVA Solar Car Embedded Systems PCB design and ECU code

Size
160 × 105.4 mm
Copper layers
4
Thickness
1.6 mm
Parts
231
Nets
210
Pads
700
Tracks, vias
1,343, 201
Pours
4
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
20 Sep 2018
Updated
12 Jun 2020

Overview

SolarCarECU is an open-source printed circuit board by solarcaratuva, from the solarcaratuva/EmbeddedSystem repository on GitHub. It is a 4-layer board of 160 × 105.4 mm with 231 parts on 210 nets, routed with 1,343 tracks and 201 vias.

It is built around the LM324AD, MCP1403-E/P and L7805. Its parts include 95 resistors, 44 capacitors, 44 fuses, 18 diodes and 11 ICs. It belongs with the NXP (LPC, Kinetis, i.MX RT) boards of this library.

Main components

3

README

README.md

UVA Solar Car Team Electrical Team - Embedded System Subgroup

The embedded system sub-group focuses on developing the embedded system for the solar car that controls the CAN bus, driver interface and BPS (Battery Management System). This repository contains all of the design files necessary to implement the electrical control systems necessary for the Solar Car project.

ECU

The ECU is the primary controller for the majority of systems, including motor control, battery monitoring, driver interface, and MPPT interface. The PCB contains circuitry for interfacing buttons and switches on driver interface, high-current lights and horn, as well as

!important! Not all pins are 12V or even 5V compatible. Certain pins connect directly to the teensy with no protection.

  • signal: name of IO signal in Eeschema (may or may not also be the net name)
  • voltage: the voltages the pin is designed for
  • direction: The direction of the signal relative to the ECU
  • description: description of the signal

User interface input (control)

These pins are used for allowing the driver to command the vehicle. All but the UART pins are 12V logic. To reduce the number of pins required on the MCU, we chose to wire 3 way position switches such that the end contacts connect to the rails and the center contact floats with a resistor divider to ensure the voltage is approximately VCC/2 when the switch is in the middle position.

signalpinvoltagedirectiondescription
BRAKE_CTRL200 - 12Vinputbrake potentiometer, used to implement regen
REGEN_CTRL170 - 12Vinputregen potentiometer, used to set max regen percentage
GEARSHIFT_CTRL140 - 12Vinput3 way position switch. 12V = forward, 6V = neutral, 0V = reverse
TURNSIG_CTRL150 - 12Vinput3 way position switch. 12V = forward, 6V = neutral, 0V = reverse
THROTTLE_CTRL160 - 12Vinputthrottle potentiometer, the gas petal
STEER_CTRL21(A7)0 - 12Vinputpotentiometer on steering wheel, may be used for differential throttle control
HAZARD_CTRL160 - 12Vinputpushbutton used to activate hazard lights, toggles on changing edge
HORN_CTRL22(A6)0 - 12Vinputhorn button
DOWN_CTRL260 - 12VinputGUI navigation pushbutton
UP_CTRL270 - 12VinputGUI navigation pushbutton
SEL_CTRL280 - 12VinputGUI navigation pushbutton
KILL_SENSE20 - 12Vinputused to detect if the power engaging the relays has been cut
HAZARD_LED250 - 12Voutputconnected to hazard button LED
UART_1_RX00 - 3.3Vinputused for Nextion 3.2" LCD
UART_1_TX10 - 3.3Voutputused for Nextion 3.2" LCD

Serial interface IO

These pins are used for communicating with various peripherals, components, and subsystems within the car. CAN0 is reserved for the BMS, while CAN1 is used for all less critical systems. UART pins are for future use.

signalpinvoltagedirectiondescription
CAN0_H0 - 5VCAN highconnected to CAN0 peripheral on Teensy 3.6 through MCP2562
CAN0_L0 - 5VCAN lowconnected to CAN0 peripheral on Teensy 3.6 through MCP2562
CAN1_H0 - 5VCAN highconnected to CAN1 peripheral on Teensy 3.6 through MCP2562
CAN1_L0 - 5VCAN lowconnected to CAN1 peripheral on Teensy 3.6 through MCP2562
UART_3_RX70 - 3.3Vinputreserved for future use
UART_3_TX80 - 3.3Voutputreserved for future use
UART_6_RX470 - 3.3Vinputreserved for future use
UART_6_TX480 - 3.3Voutputreserved for future use

Lights and Horn

These pins are capable of high currents (up to 5A distributed among the 4 outputs)

signalpinvoltagedirectiondescription
HORN570 - 12Voutputhigh power output for car horn (can only source current)
HEADLIGHTS420 - 12Voutputhigh power output for headlights (can only source current)
BRAKELIGHTS560 - 12Voutputhigh power output for brakelights (can only source current)
STROBE60 - 12Voutputhigh power output for strobelight (can only source current)
RIGHT_BLINKERS410 - 12Voutputhigh power output for right blinkers (can only source current)
LEFT_BLINKERS400 - 12Voutputhigh power output for left blinkers (can only source current)
HORN_CTRL220 - 12Vinputhigh power input for horn
HEADLIGHT_CTRL230 - 12Vinputhigh power input for headlights
BRAKE_CTRL200 - 12vinputanalog input for brakes (used for regen)

Motor control

The motor can be interfaced via UART, CAN, and GPIO. As of now, we do not have any API or knowledge of how to interface the motor over UART, as it is not documented. However it is possible to decompile the android app and reverse engineer whatever the app implements. For now, we are using CAN to retrieve important parameters from the motor such as voltage, current, RPM, throttle, and error codes. The motor only outputs messages over CAN, and does not interpret them.

The table below holds true for both MOTOR_R* and MOTOR_L* signals. NOTE: all node names in the table below are preceded with MOTOR_R* and MOTOR_L*!

signalpin (L)pin (R)voltagedirectiondescription
REGEN_EN50530 - 12Voutputenables regenerative braking on motor controller
REGEN36(pwm)37(pwm)0 - 5Voutputanalog output sets regen level when throttle is disabled (????)
THROTTLE35(pwm)38(pwm)0 - 5Voutputsets throttle when FWD_EN or REV_EN are enabled.
ECO_EN49390 - 12VoutputReduces maximum power of motor controller
METERA11A100 - 12Vinputanalog output from motor controller (????)
FWD_EN55520 - 12Voutputforward enable
REV_EN54510 - 12Voutputreverse enable

Software

At the moment we have bits and pieces of code written but no unified project as of yet. The CAN repository contains experemantal code for interfacing the CAN peripherals on the Teensy as well as development towards a motor driver. The completed motor driver will eventually be refactored into this repo.

Parts

231
QtyValueFootprintReferences
44PolyfuseFuse:Fuse_0603_1608MetricF1, F2, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23 +28
19100kResistor_SMD:R_0603_1608MetricR29, R31, R40, R43, R44, R45, R46, R47, R48, R49, R50, R51, R54, R55, R56, R60 +3
181MResistor_SMD:R_0603_1608MetricR30, R57, R58, R64, R65, R67, R68, R70, R71, R73, R75, R76, R78, R79, R81, R82 +2
14DDiode_SMD:D_SOD-123D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, D17
11100nCapacitor_SMD:C_1206_3216MetricC4, C7, C10, C13, C14, C15, C16, C17, C19, C20, C43
91nCapacitor_SMD:C_0603_1608MetricC35, C36, C37, C38, C39, C40, C41, C42, C44
9330kResistor_SMD:R_0603_1608MetricR59, R66, R69, R72, R74, R77, R80, R83, R86
8100kResistor_SMD:R_1206_3216MetricR2, R3, R4, R5, R6, R7, R41, R42
81kResistor_SMD:R_0603_1608MetricR32, R33, R34, R35, R36, R37, R38, R39
7QM6015DPackage_TO_SOT_SMD:TO-252-2Q1, Q2, Q3, Q4, Q5, Q6, Q7
61kResistor_SMD:R_1206_3216MetricR1, R8, R9, R28, R87, R88
64.7Resistor_SMD:R_0603_1608MetricR10, R11, R12, R13, R18, R19
64.7uCapacitor_SMD:C_1206_3216MetricC5, C8, C11, C18, C21, C30
647Resistor_SMD:R_0603_1608MetricR89, R90, R91, R92, R93, R94
6Screw_Terminal_01x08Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ3, J4, J5, J6, J7, J8
4120kResistor_SMD:R_0603_1608MetricR20, R21, R22, R23
42.2nCapacitor_SMD:C_0603_1608MetricC31, C32, C33, C34
43.3nCapacitor_SMD:C_0603_1608MetricC22, C23, C24, C25
436kResistor_SMD:R_0603_1608MetricR24, R25, R26, R27
46.8nCapacitor_SMD:C_0603_1608MetricC26, C27, C28, C29
48.2kResistor_SMD:R_0603_1608MetricR14, R15, R16, R17
34504Package_SO:SOIC-16_3.9x9.9mm_P1.27mmU7, U8, U9
347uCapacitor_SMD:C_1206_3216MetricC6, C9, C12
3MCP1403Package_DIP:DIP-8_W7.62mmU2, U3, U11
2120Resistor_SMD:R_1206_3216MetricR52, R53
2470uFCapacitor_THT:CP_Radial_D13.0mm_P5.00mmC1, C2
2MCP2562-E-PPackage_DIP:DIP-8_W7.62mmU5, U6
10Resistor_SMD:R_0603_1608MetricR95
110uFCapacitor_SMD:C_1206_3216MetricC3
1599-0210LED_SMD:LED_1206_3216MetricD1
1599-0230LED_SMD:LED_1206_3216MetricD3
1599-0291LED_SMD:LED_1206_3216MetricD18
1D_ZenerDiode_SMD:D_SOD-123D2
1L7805PCBDesign:PT78NR112HU4
1LM324APackage_SO:SOIC-14_3.9x8.7mm_P1.27mmU10
1LOGOlogo:PowerMaxG***
1LOGOlogo:JohnCG***
1LOGOlogo:WZG***
1LOGOlogo:CJRG***
1LOGOlogo:SOLARG***
1Screw_Terminal_01x08Connector_Phoenix_MC_HighVoltage:PhoenixContact_MCV_1,5_8-G-5.08_1x08_P5.08mm_VerticalJ2
1Teensy3.6teensy:Teensy35_36U1

Questions

How big is the SolarCarECU PCB?

It measures 160 × 105.4 mm and has 4 copper layers, 1.6 mm thick.

What parts does the SolarCarECU use?

231 parts, built around the LM324AD, MCP1403-E/P and L7805. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the SolarCarECU KiCad files?

From the solarcaratuva/EmbeddedSystem repository on GitHub, at the commit this page was made from: the board is ECU_PCB/SolarCarECU.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the SolarCarECU design in my own project?

Its repository states no licence, so its author keeps all rights: ask solarcaratuva before reusing the design.

Similar boards

  • 2 layers4-20ma mcu, the printed circuit board in 3D

    4-20ma mcu

    khall-repo/4-20ma-mcu

    0-5v to 4-20mA conversion using ATTINY84 and a LM324

    41 parts
  • 2 layers100 × 80 mmEarth Station, the printed circuit board in 3D

    Earth Station

    ProfeRimoldi/Proyecto_CanSAT

    Sistema electrónico para misión tipo CanSat desarrollado en la EEST N°4 I Brigada Aérea El Palomar, orientado al diseño, validación y documentación de hardware y firmware para sistemas embarcados aeroespaciales.

    70 parts
  • 4 layers62.8 × 97.5 mmOceanAI, the printed circuit board in 3D

    OceanAI

    daniel360kim/OceanAI

    A robotic and software orientated ocean development.

    124 parts14MIT
  • 2 layers127 × 80 mmCassetteSDK-85, the printed circuit board in 3D

    CassetteSDK-85

    ForNextSoftwareDevelopment/8085

    Intel 8085 Assembler / Disassembler / SDK-85 Simulator

    33 parts8
  • 4 layers100 × 100 mmPerfectV2.1v0, the printed circuit board in 3D

    PerfectV2.1v0

    fer-clerkx/speeduino-expo

    Speeduino board using Teensy 4.1 adapted from V0.4.4c design

    170 parts1
  • 2 layers161 × 177 mmPLC Pic18f4550, the printed circuit board in 3D

    PLC Pic18f4550

    Agustin586/Kicad-Projects

    Aca se encuentran los diseños de pcb de kicad

    178 parts
  • 2 layers54.4 × 39.8 mmBat preamp, the printed circuit board in 3D

    Bat preamp

    BIST-Research/batbot-hardware

    schematics and pcbs for the batbot

    38 partsMIT
  • 2 layers122.7 × 104.9 mmLevelShifter, the printed circuit board in 3D

    LevelShifter

    FontysMinorAR/LevelShifter

    This is an application for the Arduino Nano to test the Level shifter Board

    112 parts