

LowLevelv4 1 V2
Drive-by-wire system for an e-bike
- Size
- 146.6 × 113.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 100
- Nets
- 132
- Pads
- 363
- Tracks, vias
- 1,410, 246
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 4 Dec 2019
- Updated
- 7 May 2026
Overview
LowLevelv4 1 V2 is an open-source printed circuit board by elcano, from the elcano/Drive-by-wire-version-1-4 repository on GitHub. It is a 2-layer board of 146.6 × 113.5 mm with 100 parts on 132 nets, routed with 1,410 tracks and 246 vias.
It is built around the LM358, MCP4802-E/P and TXB0108DQSR, with the IRLZ44N, MBR745 and ORWH-SH-105D1F,000 among its other parts. Its parts include 38 resistors, 16 capacitors, 7 ICs, 5 diodes and 4 connectors.
Main components
6LM358
SOP-8-18V~18V 0℃~+70℃ 1.2MHz 10nA 2 24mA 3V~36V 500uA 50nA 5mV 80dB Built-in compensation SOP-8 Operational Amplifier ROHSMSKSEMIOperational AmplifierMCP4802-E/P
PDIP-8-40℃~+125℃ 0.2LSB、0.25LSB 2 2.7V~5.5V 4.5us 415uA 8 Integrated buffer、Power-on reset、Power-down mode、Multi-chip synchronization、Programmable gain、Built-in reference source SPI Voltage Buffer PDIP-8 Digital to Analog Converters (DAC) ROHSMicrochip TechnologyDigital To Analog Converters (DAC)TXB0108DQSR
SON-20(2x4)-40℃~+85℃ 1.2V~3.6V 1.65V~5.5V 100Mbps Bidirectional Decoupling、Auto Direction Detection、Power-Off Protection Tri-State SON-20(2x4) Translators, Level Shifters ROHSTexas InstrumentsTranslators, Level ShiftersIRLZ44N
TO-22055V 47A N-Channel HEXFET® Power MOSFETInfineon TechnologiesUncategorisedMBR745
TO-220AC-2-65℃~+175℃ 1 Independent 100uA@45V 150A 45V 7.5A 840mV@15A TO-220AC-2 Schottky Diodes ROHSonsemiSchottky DiodesORWH-SH-105D1F,000
插件28V@DC、277V@AC 360mW 5 5V 70Ω One set of changeover: 1C (SPDT-changeover) Plugin Power Relays ROHSTE ConnectivityPower Relays
README
README.mdDriveByWire
Obsolete. New code is in DBW version 5.
This repository is for use with the Drive by Wire board created to be used for the ELCANO self-driving tricycle. In order for this module to run external libraries are required.
Repositories were updated 6/8/2023 but clobbered previous history. Chief addition is use of an RC controller that allows manual control of throttle, brakes and steering. The Sender files are intended for use on the Hi-Level board and do not really belong in the Drive-by-wire repository.
Libraries needed are listed below:
ALL Versions ________________________________
- PID by Brett Beauregard https://github.com/br3ttb/Arduino-PID-Library A simple controller calculator (proportional integral derivative) to calculate the error between a desired output and an actual output. Has files PID_v1
Version 3 (Arduino Mega) ________________________________
-
CAN_BUS_SHIELD by Seeed-Studio https://github.com/Seeed-Studio/CAN_BUS_Shield Contains CAN_BUS communication protocols and required files such as mcp_can and can-serial
-
Pin Change Interrupt by Nico Hood https://github.com/NicoHood/PinChangeInterrupt For custom configuration of Arduino pin properties. Has files PinChangeInterupt
-
MCP48x2 DAC by Jonas Forsberg https://github.com/SweBarre/MCP48x2. Library for Digital to anolog converter. Has files MCP48x2
Version 4 (Arduino Due) _______________________________________________
- Due CAN and CAN Common by Collin Kidder https://github.com/collin80/due_can https://github.com/collin80/can_common
To Install
- Download the Drive_By_Wire module into the project parent directory
git clone https://github.com/elcano/Drive-by-wire.git- Move into the Drive_By_Wire folder
cd Drive_By_Wire- Download the required libraries
git clone https://github.com/Seeed-Studio/Seeed_Arduino_CAN.git
git clone https://github.com/br3ttb/Arduino-PID-Library.git
git clone https://github.com/NicoHood/PinChangeInterrupt.git
git clone https://github.com/SweBarre/MCP48x2.git
git clone https://github.com/ivanseidel/DueTimer.git
git clone https://github.com/collin80/can_common.git
git clone https://github.com/collin80/due_can.git- Add the folders above to the IDE directory. In Windows, add the required libraries to: C:\Users<username>\Documents\Arduino\libraries
- Arduino Due requires additional installation. On the IDE, go to Tools -> Boards -> Boards Manager -> Arduino SAM Boards (32-bits ARM Cortex-M3)
Navigating Arduino IDE:
- Selecting Board: Tools -> Board -> Arduino AVR/SAM Boards -> Arduino Mega/Due
- Selecting Serial Port: Tools -> Port -> COM (Arduino Mega/Due)
- Accessing Serial Monitor: Right-hand Corner -> Select Baud Rate (115200)
Drive-by-Wire:
- Low-level board code with RC control support with existing code for brakes, steering, and throttle.
Test:
- Low-level board code with three functions to test each subsystems individually (brakes, steering, throttle).
- testBrake(): Activates brakes with 24V via Stop(), Holds brakes with 12V after 800ms via Update(), Releases brakes every ~2 seconds.
- testThrottle(): Gradually increases speed and decreases speed on DACA.
- testSteering(): Changes directions every 3 seconds, moving the linear actuator.
Sender:
- High-level board code to communicate with low-level board using CAN communication.
- Arguments for Function: Each data is reserved for 2 bytes.
- currentSpeed: Controls the speed via the DACA, input: (0 -255).
- currentBrake: Apply and updates brakes if necessary, input: (0 - releases brakes, anything above 0 - applies brakes).
- currentAngle: Changes direction based on input (may need to calibrate based on sensors), left: 779 (1ms), middle: 722 (1.5ms), right: 639 (1.85ms).
Parts
100| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 0.1uF | Capacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mm | C2, C3, C4, C5, C6, C10, C11, C12, C13 |
| 8 | 22k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R12, R13, R14, R15, R17, R18, R19, R20 |
| 7 | 1K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R23, R24, R26, R34, R35, R36, R38 |
| 7 | PTR1PAD1-17 | Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Vertical | DACA1, DACB1, GND1, LSense1, Rsense1, STEER1, UNK5V1 |
| 6 | 5.15k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R3, R5, R6, R7, R9, R10 |
| 5 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2, R4, R8, R30, R31 |
| 4 | LED3MM | LowLevelv3_1:LED3MM | BRAKES_ON1, DEBUG1, POWER_OK1, UNK24V_ACTIVE1 |
| 3 | 100 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R29, R33, R39 |
| 3 | 1uF | Capacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mm | C1, C9, C15 |
| 3 | 2N3904 | Package_TO_SOT_THT:TO-92 | T1, T2, T3 |
| 3 | 4.7k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R11, R16 |
| 3 | LM358 | Package_DIP:DIP-8_W7.62mm | U2, U3, U4 |
| 2 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D2, D3 |
| 2 | 33pF | Capacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mm | C7, C8 |
| 2 | 4.7K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R27, R28 |
| 2 | 560pF | Capacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mm | C14, C16 |
| 2 | IRLZ44N | Package_TO_SOT_THT:TO-220-3_Vertical | Q2, Q3 |
| 2 | MBR745 | Package_TO_SOT_THT:TO-220-2_Vertical | D4, D5 |
| 1 | 0 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R32 |
| 1 | 120 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R22 |
| 1 | 1N5400 | Diode_THT:D_DO-201_P15.24mm_Horizontal | D1 |
| 1 | 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R37 |
| 1 | 20K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R25 |
| 1 | 2x3 | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | ICSP1 |
| 1 | Analog In 8-11, DAC, CAN | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | ADCH1 |
| 1 | BUZZER-PTH | LowLevelv3_1:BUZZER-12MM | LS1 |
| 1 | CONN_03-SCREW-5MM | TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type055_RT01503HDWU_1x03_P5.00mm_Horizontal | CAN_HEADER1 |
| 1 | DB9 Plug | Connector_Dsub:DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm | CAN/UART1 |
| 1 | Digital 14-21 | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | DIGITAL_14-1 |
| 1 | Digital 22-53 | Connector_PinHeader_2.54mm:PinHeader_2x18_P2.54mm_Vertical | DUE_EXPANSION1 |
| 1 | ECS-160-20-46X | Crystal:Crystal_HC49-U_Vertical | Q1 |
| 1 | Jumper_3_Open | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | JP1 |
| 1 | MCP2515(MCP2510)P | Package_DIP:DIP-18_W7.62mm | IC1_1 |
| 1 | MCP2551DIL08 | Package_DIP:DIP-8_W7.62mm_LongPads | IC2_1 |
| 1 | MCP4802 | Package_DIP:DIP-8_W7.62mm_LongPads | IC3_1 |
| 1 | MOMENTARY-SWITCH-SPST-PTH-6.0MM | Button_Switch_THT:SW_PUSH_6mm | RESET1 |
| 1 | ODO_JACK | LowLevelv3_1:ODO_JACK | X1 |
| 1 | ORWH-SH-105D1F,000 | LowLevelv3_1:TE_ORWH-SH-105D1F,000 | PB2_12/24 |
| 1 | PINHD-1X2 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | E-STOP1 |
| 1 | RJ45_MOTOR | Connector_RJ:RJ45_Amphenol_54602-x08_Horizontal | J3 |
| 1 | RJ45_STEER | Connector_RJ:RJ45_Amphenol_54602-x08_Horizontal | J4 |
| 1 | ROS_CONN | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1 |
| 1 | SD_Card | Connector_Card:SD_Kyocera_145638109511859+ | J2 |
| 1 | TXB0108DQSR | Package_SO:SOIC-20W_7.5x12.8mm_P1.27mm | U1 |
| 1 | TerminalBlock_4Ucon_1x04_P3.50mm_Horizontal | TerminalBlock_4Ucon:TerminalBlock_4Ucon_1x04_P3.50mm_Horizontal | X2 |
More from elcano/Drive-by-wire-version-1-4
1- 2 layers93 × 60 mm

Similar boards
- 2 layers92.1 × 88.9 mm

- 4 layers140 × 85 mm

Gantry Hub V2 PCB
bu-gsLab/Hardware
Repository of hardware designs for Detector Lab work. All designs when possible should be done using Autodesk Inventor 2019 or earlier.
47 parts1 - 2 layers124.5 × 132.1 mm

PWM PCB
GabrielJaejus/EV
This project is the result of our efforts to find COTS hardware and existing open source software capable of communicating via HomePlug GreenPHY (HPGP) with CCS enabled vehicles and charging stations.
74 partsMIT - 2 layers68.6 × 53.3 mm

PRIME D
koson/Florida-Space-Institute
This repository is used to maintain my work on the software and hardware files for various projects.
33 parts - 2 layers117.1 × 68.6 mm

Proyecto exposito
misaacastillo/RoboticArm
“Robotic Arm” es un brazo robotico el cual cuenta con un modelo dummy de menores dimensiones. Este modelo copia tendrá una conexión entre sus potenciómetros y los servomotores ubicados en el modelo principal.
37 parts1 - 2 layers76.7 × 35.3 mm

- 2 layers173 × 73.6 mm

TI thermostat esp32
abzman/1979-TI-thermostat-replacement-PCB
replaces the PCB in an old thermostat with one that has an esp32 onboard and other upgrades
95 partsUnlicense - 4 layers535 × 308 mm

Boatcontrol
Alli-Ekundayo/scpt-rl
SCPT-RL trains a cross-attention transformer policy to place PCB components sequentially on a discrete grid. Training has two phases:
683 partsMIT
Questions
How big is the LowLevelv4 1 V2 PCB?
It measures 146.6 × 113.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the LowLevelv4 1 V2 use?
100 parts, built around the LM358, MCP4802-E/P, TXB0108DQSR and IRLZ44N. 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 LowLevelv4 1 V2 KiCad files?
From the elcano/Drive-by-wire-version-1-4 repository on GitHub, at the commit this page was made from: the board is Electronics/LowLevelv4_1_V2.kicad_pcb and its schematic Drive_By_Wire/SteeringBoard4.1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the LowLevelv4 1 V2 design in my own project?
Its repository states no licence, so its author keeps all rights: ask elcano before reusing the design.