Skip to the content
2 layers146.6 × 113.5 mmLowLevelv4 1 V2, the printed circuit board in 3D

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

6

README

README.md

DriveByWire

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 ________________________________

Version 3 (Arduino Mega) ________________________________

Version 4 (Arduino Due) _______________________________________________

To Install

  • Download the Drive_By_Wire module into the project parent directory
text
git clone https://github.com/elcano/Drive-by-wire.git
  • Move into the Drive_By_Wire folder
text
cd Drive_By_Wire
  • Download the required libraries
text
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
QtyValueFootprintReferences
90.1uFCapacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mmC2, C3, C4, C5, C6, C10, C11, C12, C13
822kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR12, R13, R14, R15, R17, R18, R19, R20
71KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR23, R24, R26, R34, R35, R36, R38
7PTR1PAD1-17Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalDACA1, DACB1, GND1, LSense1, Rsense1, STEER1, UNK5V1
65.15kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3, R5, R6, R7, R9, R10
510kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2, R4, R8, R30, R31
4LED3MMLowLevelv3_1:LED3MMBRAKES_ON1, DEBUG1, POWER_OK1, UNK24V_ACTIVE1
3100Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR29, R33, R39
31uFCapacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mmC1, C9, C15
32N3904Package_TO_SOT_THT:TO-92T1, T2, T3
34.7kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R11, R16
3LM358Package_DIP:DIP-8_W7.62mmU2, U3, U4
21N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD2, D3
233pFCapacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mmC7, C8
24.7KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR27, R28
2560pFCapacitor_THT:C_Disc_D3.0mm_W2.0mm_P2.50mmC14, C16
2IRLZ44NPackage_TO_SOT_THT:TO-220-3_VerticalQ2, Q3
2MBR745Package_TO_SOT_THT:TO-220-2_VerticalD4, D5
10Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR32
1120Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR22
11N5400Diode_THT:D_DO-201_P15.24mm_HorizontalD1
11kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR37
120KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR25
12x3Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalICSP1
1Analog In 8-11, DAC, CANConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalADCH1
1BUZZER-PTHLowLevelv3_1:BUZZER-12MMLS1
1CONN_03-SCREW-5MMTerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type055_RT01503HDWU_1x03_P5.00mm_HorizontalCAN_HEADER1
1DB9 PlugConnector_Dsub:DSUB-9_Male_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mmCAN/UART1
1Digital 14-21Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalDIGITAL_14-1
1Digital 22-53Connector_PinHeader_2.54mm:PinHeader_2x18_P2.54mm_VerticalDUE_EXPANSION1
1ECS-160-20-46XCrystal:Crystal_HC49-U_VerticalQ1
1Jumper_3_OpenConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP1
1MCP2515(MCP2510)PPackage_DIP:DIP-18_W7.62mmIC1_1
1MCP2551DIL08Package_DIP:DIP-8_W7.62mm_LongPadsIC2_1
1MCP4802Package_DIP:DIP-8_W7.62mm_LongPadsIC3_1
1MOMENTARY-SWITCH-SPST-PTH-6.0MMButton_Switch_THT:SW_PUSH_6mmRESET1
1ODO_JACKLowLevelv3_1:ODO_JACKX1
1ORWH-SH-105D1F,000LowLevelv3_1:TE_ORWH-SH-105D1F,000PB2_12/24
1PINHD-1X2Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalE-STOP1
1RJ45_MOTORConnector_RJ:RJ45_Amphenol_54602-x08_HorizontalJ3
1RJ45_STEERConnector_RJ:RJ45_Amphenol_54602-x08_HorizontalJ4
1ROS_CONNConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1SD_CardConnector_Card:SD_Kyocera_145638109511859+J2
1TXB0108DQSRPackage_SO:SOIC-20W_7.5x12.8mm_P1.27mmU1
1TerminalBlock_4Ucon_1x04_P3.50mm_HorizontalTerminalBlock_4Ucon:TerminalBlock_4Ucon_1x04_P3.50mm_HorizontalX2

More from elcano/Drive-by-wire-version-1-4

1
  • 2 layers93 × 60 mmSteeringBoard4.4, the printed circuit board in 3D

    SteeringBoard4.4

    elcano/Drive-by-wire-version-1-4

    Drive-by-wire system for an e-bike

    34 parts5

Similar boards

  • 2 layers92.1 × 88.9 mmArdCurvTracer, the printed circuit board in 3D

    ArdCurvTracer

    jonsag/ardCurveTracer

    An arduino testing transistors

    64 parts2
  • 4 layers140 × 85 mmGantry Hub V2 PCB, the printed circuit board in 3D

    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 mmPWM PCB, the printed circuit board in 3D

    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 mmPRIME D, the printed circuit board in 3D

    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 mmProyecto exposito, the printed circuit board in 3D

    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 mmPD Board, the printed circuit board in 3D

    PD Board

    SubodhBawankar/pdb-vishwa

    Power Distribution Board for Vishwa Rover 2024

    50 parts1
  • 2 layers173 × 73.6 mmTI thermostat esp32, the printed circuit board in 3D

    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 mmBoatcontrol, the printed circuit board in 3D

    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.