Low Level

From Elcano Project Wiki
Jump to navigation Jump to search

LowLevel v3.1 PCB


  • The LowLevel Board (LLB) is a daughter board (shield) for an Arduino Mega microcontroller. It has been renamed "Drive-By-Wire". It implements drive-by-wire, turning a trike into a CAN-bus based vehicle compatible with commercial self-driving equipment. The LLB communicates over the CAN bus with the higher-level autonomous system or manual control from the receiver system. It directly manages the actuators: the throttle to the motor, the turning servo, and the brakes.

  • Motion directives are received on a CAN bus interface, processed, and articulated.
  • System status (turn angle, wheel linear velocity) is reported back to CAN bus.
  • LLB v3.x has the following interfaces:
    • One CANbus channel on two connectors; a DB9-M and a three-pin screw terminal. The board includes a 120 ohm terminating resistor.
    • X3 Motor (DB-15M): Interface to E-bike controller
      • Analog voltage (approximately 0v to 4v) output to hub motor throttle
      • Digital outputs for activating reverse and regenerative braking.
      • PWM output for PWM-operated braking (no longer used)
      • Analog inputs for hall sensor feedback from motor controllers supporting this feature. These inputs are NOT 5V SAFE. They absolutely require external supporting circuitry.
      • A few spare connections for future expandability, such as a second DAC output and one digital GPIO.


    • Steering Header (RJ45):
      • Two sets of pins to support analog potentiometers (5v, signal input, ground) giving angle of front wheels
      • One PWM output (with its own ground) to drive the steering actuator.
      • This cable is broken out into its component signals using an RJ45 patch jack, mounted near the steering actuator.
    • X4 (ODO): Cyclometer (reed switch) input jack. This is pulled high by default, and brought low when the magnet passes the sensor.
    • High current pluggable terminal for solenoid brakes:
      • Connections for ground, 12v, and 24v.
      • Two relay outputs to solenoids: on/off and 12/24V.
  • The LowLevel runs on 5V power, and provides outputs for sensors. Note that the Arduino Mega 2560's regulator has a fairly low current limit, and should not be used for any significant current supply. The Arduino's DC input jack accepts 12V, and its USB port may be connected to a typical USB power supply. The 12V is provided by a DC-DC converter from the main battery (36 to 50V).

Image: LowLevel.JPG

NEXT > High Level

LowLevel v2.1 PCB


  • Version 2.1 used UART serial connections to other boards instead of the CAN bus. It interprets messages from higher-level autonomous systems or manual controls (RC, joystick). It directly manages the state of the actuators; the hub motor, the turning servo, and the brakes.

  • Depending on the current firmware or operating mode, motion directives are received on one of three interfaces;
  • LLB v2.x has the following low-level interfaces:
    • X2 Cruise (DB-25F) - ElcanoSerial messages from High Level.
    • X3 Motor ( DB-15M): Analog voltage (0,4v) output hub motor.
    • X1/X5 Turn Sensors (RJ45): SPI wheel angle sensor digital inputs. (Digital urn sensors were never implemented.)
    • X4 (ODO): Cyclometer (reed switch) input jack. Board layout was incorrect. This signal needs to be jumpered to Arduino pin D2.
    • JP9 (8 pin): Joystick analog input signals.
    • JP12 (3 pin): Pulse output signal to steer.
    • JP11 (3 pin): Pulse output signal to apply main brakes. (No longer used)
    • JP5 (4 pin): Left wheel angle sensor analog input. (Little used since it covers 360 degrees and is less accurate)
    • JP6 (4 pin): Right wheel angle sensor analog input. (Trike prefer this, since it is +/- 30 degrees, and more accurate)
  • LLB v3.x makes significant wiring changes:
    • Removes the ElcanoSerial connection and the DB-25F.
    • Removes JP9, joystick analog inputs.
    • Removes headers used to interface the RC receiver.
    • Adds one CANbus interface on a DE-9F socket. For legacy compatibility UART serial is be available on this interface as well.

LowLevel v1.0 PCB

  • The first version of the LLB was called MegaShieldDB. It had similar functionality, but different connectors. It had five DB connectors.

NEXT > High Level