Skip to content

Latest commit

 

History

History
330 lines (293 loc) · 12.2 KB

hexaFloorRideHardware.md

File metadata and controls

330 lines (293 loc) · 12.2 KB

HexaFloorRide Hardware

This page lists all the parts that you need in order to build your own HexaFloorRide.

Chassis

HexaFloorRide's chassis is comprised of a lower main body section with six protruding legs with 3 axis of movement. The body and legs are milled out of 6061 extruded aluminium. When fully assembed HexaFloorRide's physical dimensions are roughly:

  • Height = ~ 7.5 inches when in neutral standing position.
  • Length = ~ 15.5 inches when in neutral standing position.
  • Weight = ~ 4.1 lbs (1856g) without battery or PCB.

HexaFloorRide's chassis is comprised of:

  • 1 lower body panel
  • 1 mounting post with #2-56 threaded holes on all 4 sides for mounting things
  • 2 mounting brackets
  • 1 battery holder
  • 1 battery
  • 18 servo motors
  • 6 thigh components
  • 6 ServoBlock assembles (for the hips)
  • 6 shin components
  • 6 foot components
  • 6 shoe components
HexaFloorRide Components
Qty Name Image
1 Lower body
Weight 141g
Lower body Fig.1 - Lower body
6 Thigh
Weight 7g
Hip Fig.2 - Thigh
6 Shin
Weight 13g
Shin Fig.3 - Shin
6 Foot
Weight 12g
Foot Fig.4 - Foot
6 Shoe Weight <0.16g Foot Fig.5 - Shoe
1 Mounting Post
Weight 133g
Mounting Post Fig.6 - Mounting Post
2 Mounting Bracket
Weight included in Mounting Post
Mounting Bracket Fig.7 - Mounting Bracket
1 Battery Holder
Weight 73g
Battery Holder Fig.8 - Battery Holder
1 Battery
Weight 542g
Battery Fig.9 - Battery
18 Servo motor
Weight 43g
Battery Fig.10 - Servo Motor
18 Servo Block
24T Spline horn & block
49g
Battery Fig.11 - Servo Block

Miscellaneous Hardware

In addition to the parts above you will also need

Servo Motors & Horns

servo motor Fig.5 - Servo motor HexaFloorRide has a total of 18 leg joints. Each leg has a hip, knee and ankle joint. These joints are HiTec HS-485HB servo motors which we purchased from the Robot Shop. The motors came in a bundle with aluminium 24T horns that fit the servo shafts. The applied voltage of this motor should be in range of 4.8 to 7.2V. The frequency of motor is 50 Hz and the PWM duty cycle is 20 milliseconds. This motor has 3 pins as follows:
  • PWM: Orange
  • VCC: Red
  • GND: Brown

Motor Drivers

motor driver Fig.7 - Motor driver The Hexpod robot requires a way to connect a large number of servo motors to a microcontroller with limit IO pins. To achieve this we use a pair of Adafruit PCA9685 16-channel 12-bit servo motor drivers. These motor drivers have their own onboard NXP Semiconductors PCA9685 microcontrollers that handles the details of PWM signalling to the motors so all we have to do is communicate to them via I2C which only consumes 2 IO pins. The defult I2C address for the driver is 64 (0x40). There is also an all-call address at 112 (0x70). Since HexaFloorRide has 18 motors and a single driver can only handle a maximum of 16 we need to use 2 of these drivers. Since both drivers are on the same I2C bus we need to change the I2C address of the second driver to avoid conflicts. Page 13 of the Adafruit document explains how to do this. In short, we solder A0 port on the left controller to change it's address to 0x41.

The motor controller has specific behavours. We tested these behaviours and found the following:

Test 1: Fresh start

Steps:

  • Power up 3.3VDC
  • Power up 5.0 VDC
  • Pull USB cable off ESP32
  • No MQTT motor commands issued

This resulted in all servos being compliant with no resistance to moving them.

Test 2: From fresh start issue command to one servo

Steps:

  • Issue command stp,0,0,300

This resulted in the servo no longer being compliant. It now tries to hold its position

Test 3: Cut power to see if robot goes back to being compliant

  1. Cut 3.3VDC power. Servo becomes compliant.
  2. Add 3.3vdc power back. Servo goes back to last position and is no longer compliant.
  3. Cut 5VDC power. Servo becomes compliant.
  4. Add 5vdc power back. Servo goes back to last position and is no longer compliant.
  5. Disconnect USB cable from SOC. Servo becomes compliant.
  6. Reconnect USB cable to SOC. Requirs yu to re-establish console connectin in but does not require a reload of the software. Servo remains compliant.

Based on this testing it appears that the only way to erase past motor commends is to disconnect the console cable from the SOC. Not entirely sure what this means. Is the SOC sending continual messages to the PCA9685 via the library we are using? Cannot think what other explanation there is for this behaviour. Need to break out a scope or protocol analyzer to check on this. Will be very surprised if this is the case.

Line level converter

motor driver Fig.8 - I2C bus voltage converter Since the ESP32 microprocessor used for HexaFloorRide's brain is a 3.3VDC device and the PCA9685 microprocessor used in the motor driver board is a 5 VDC device we must use a line level converter on the I2C bus to connect between them. HexaFloorRide uses the KeeYees 4 Channel I2C Logic Level Converter Bi-Directional Module which appears to be a clone of the Sparkfun Bi-Directional Logic Level Converter. For wiring help check out the wiring guide.

Main processor

ESP32 dev board Fig.9 - ESP32 Dev Board The brains of HexaFloorRide come courtesy of an Espressif ESP32 Software On a Chip (SOC). We are using Adafruit 28 pin variant of their Huzzah32 Feather development board for ESP32 integration into our circuit.

Motion Sensors

Not sure if we will use this or not

The robot’s motion tracking is provided by an Invensense MPU6050 inertial measurement unit development board which combine a 3-axis microelectromechanical gyroscope and a 3-axis accelerometer on the same silicon die, together with an onboard Digital Motion Processor (DMP), which processes complex 6-axis MotionFusion algorithms.

Power Management

The robot is powered by direct current provided by a Dewalt 20V 3AH lithium-ion battery. This voltage is stepped down to a 12 volt bus, a 5 volt bus and a 3.3 volt bus using a Drok LM2596 multiple output power supply.

Buttons

The robot features a reset and selection button as well as a power button. These buttons feature embedded software controlled LEDs that allow for the robot to give visual queues as to what it is doing.

OLED/LCD

Not sure what display we will use yet.

Assembly

Full step by step instructions for HexaFloorRide can be found here.