Spring 2017 Mini Pathfinder Final Blog Post

 By: John Her (Project Manager)

Moses Holley (Electronics and Control)

Edgardo Villalobos (Manufacturing-Solar Panel)

Johnathan Chan (Manufacturing-Chassis)

Adan Rodriguez (Mission, Systems, and Test)

Executive Summary

Project Objectives

The Mini Pathfinder project for Spring 2017 is a scaled and modeled after NASA’s 1997 Sojourner rover of the Pathfinder mission. It will utilize the 3Dot board and a custom PCB. It is to be remotely operable with a fully functioning rocker bogie suspension system. It will be able to provide speed and battery telemetry to the user via the arxterra app and have a solar panel that charges the battery.

Mission Profile

Our mission is a scaled version of the Pathfinder project. We will remotely traverse a course of 27.8 meters in length. The course will have 3 stairs it will descend and 3 stairs it will ascend with each stair being 27mm. During this course the Mini Pathfinder will demonstrate electronic differential turning, solar charging, proper rocker bogie mechanics and provide telemetry.

System Design

The Mini Pathfinder will use the 3Dot and a custom PCB for the extra motors and the encoders.

Figure 1. System Block Diagram

Subsystem Design

Modeling Results

Interface Definitions

We have three interface definitions for three different IC’s. The first is for the 3Dot board. The next two are for the custom PCB that will have the two extra motor drivers and the digital io expander for the rotary encoders.

Figure 2. Interface Definitions for the 3Dot Board

Figure 3. Custom PCB IC Motor Driver Interface Definitions

Figure 4. Custom PCB IC Rotary Encoders Interface Definitions

Cable Tree

Our cables will be routed from the motors and encoders through the suspension and into the electronics box. The solar panel will have a mount with a hole where the cable will connect so that it can charge the battery.

Figure 5. Cable Tree

Mission Command and Control

Figure 6.

Figure 7.

Electronics Design

After the trade off studies, we have decided on micro metal gear motors and hall effect sensor based rotary encoders. To control the extra motors not connected directly to the 3Dot, we will be using a custom PCB that is base on the adafruit motorshield which houses a PCA9685 and two TB6612FNG motor drivers. In addition to the motorshield, we will also implement a MCP2301 I/O expander to take the digital input from the rotary encoders. The power for the extra motors will be supplied from the battery boost on the back of the 3Dot board so that we can access the same voltage that is supplied to the motors on board the 3Dot.

Figure 8. Adafruit Motorshield (PCA9685)

Figure 9. Adafruit Motorshield (TB6612FNG)


After discussing our project flow chart with an fellow Electronics and Control Engineer, Forest Nutter, we decided to redesign our flow chart. The initial image is the beginning stages of an overall view of the project.

Figure 10. Firmware Flowchart

PCB Schematic

Since the 3DoT only has a single motor driver chip that is capable of driving two motors, we needed to make a custom PCB to interface with the 3DoT that will allow for 4 additional motors and also be able to take digital input for the rotary encoders. We modeled the motor driver off of the adafruit motor shield version 2.3. The motor shield consisted of the PCA9685pw PWM driver and two TB6612FNG dual motor drivers, which is what the 3DoT uses. The PCA9685pw allows for control of PWM outputs through the I2C bus, which is available through the 3DoT, so that we could properly control the motor drivers. For the digital IO expander, we chose the MCP23017 due to it having 16 digital IO channels for our rotary encoders, which use two digital outputs per wheel for a total of 12 outputs.

Figure 11. Custom PCB Schematic

Our first schematic design had many errors that were easy to point out and a few that were only seen if looking very close. Fabian, previous EE 400D student, pointed out the schematic flaws and  gave recommendations. One of the mistakes I made was in forgetting the pull up resistors for the I2C communication. The I2C needs the pull up resistors because most of the devices are active low. Throughout my ICs and the voltage in, (VCC and VBoost), I forgot to place decoupling capacitors for circuit protection and for clean signals. My first completed schematic looked great with labels on the wires. By simply clicking the name of the wire and looking closely, I connected the TB6612FNG dual motor driver outputs to each other which caused them to short. My project manager, Jon Her, advised that we start from scratch. After the irritative process the above image is the finish schematic. It was a tough process, but having the schematic looked over and over ensured that we have a potential working PCB.  

PCB Layout

After the electronics and controls engineer(ENC), was finished with the schematic on EagleCAD, it was suggested that we try to make a printed circuit board(PCB) out of it and mount the PCB onto the 3DoT board like a “shield” because it was a level 2 requirement(See Figure 1). On the EagleCAD, requirements for the power lines had the size of 16mil. Data routes had 10mil. And there was a 20 drill size for vias. All of the lines had a 45 degree turn so that it doesn’t lose its connection when it is printed and powered up. The top and bottom planes of our PCB are ground copper poured planes. After placing all of the parts on the specified size of the layout, we made sure we used the DRC several times to make sure it completed all the requirements. We also ordered the parts and components before the PCB was made, so that it would arrive in a timely manner.


Dimension on 3dot board

Figure 12. Dimensions of the Custom PCB Shield


Completed PCB Design

Figure 13. Screenshot of the Routing Diagram

Figure 14. Final product with top and bottom ground copper poured planes in red and blue

We created a custom PCB for our 3Dot board(see figure 3). After we did a final DRC on our final PCB, we then sent it to the president, customer, and Fabian for approval. We had to revise our board several times before it was approved, but once it was, it was sent to 4PCB to be manufactured. We then purchased the stencil from OshStecil. The next steps are to use the stencil and put solder paste on the top layer of the custom PCB. Then we will put the parts and components in its respective places. After, we will heat the board up using a heat gun so that the components will attach onto the board.

Hardware Design


To ensure that the 3Dot sat correctly into the chassis, small cutouts were made to allow the Bluetooth module room along with a few pins that were sticking out from the battery holder. A channel was also cut out to allow a wire to access the battery boost on the underside of the 3Dot. There were also channels cut out to allow access to the usb port and the power switch on the 3Dot.

Figure 15. Inside the chassis

To allow proper rocker bogie mechanics, a three beveled gearbox was utilized. Each gear has 16 teeth to allow for a 1:1 gear ratio from the left side of the suspension to the right side.

Figure 16. The rocker bogie gearbox


As a requirement, the Mini Pathfinder was to have a Solar Panel charge the battery on the 3dot board. To accomplish this, the solar panel needed to be scaled to the rover, while also being able to supply enough voltage and current. The solar cells also needed to be encapsulated. The model of the solar panel was closely modeled after the Sojourner Rover.

Figure 17. Solar Cell on the Mini Pathfinder

With the help of the chassis manufacturer for the mini pathfinder, we were able to scale the size in which the solar panel needed to be. The model was scaled using schematic renderings of the real Sojourner that were found on the internet. The size of the solar cell needed to be around 122x52mm.

Once the size of the panel was found, I needed to find solar cells that were able to charge the 3dot battery and that would fit that size and then encapsulate them. To meet this, I used a 5V 200mA already encapsulated cell that was bought in store. The size of the solar cell was 120x70mm, which fit the requirement of size.

Figure 18. 120x70mm 5v 200mA Encapsulated Solar Cell


A micro usb was attached to both the positive and negative leads of the solar panel.

Figure 19. Wiring Diagram


After finding the type of solar cell I’d be using, a way of holding the cell onto the rover needed to be found. Using Solidworks, I was able to create a holder to house the cell in place with a hole in the bottom to allow for the micro usb plug to pass through to connect to the 3dot board through the outside. This holder allowed for easy replacement of the cell, if needed. The cell could easily be removed by sliding in and out.  

Figure 20. Solar Cell Holder

Figure 21. Solar Cell in Holder

In conclusion, the solar cell needed to be tested more in order to observe how long it really took to charge the battery. Overall the solar cell was a success in looks and functionality as far as charging.

Verification & Validation Test

Verification and validation can be viewed at this link.


Project Status

Power Allocation

Figure 22. Power Allocation based on maximum battery current discharge at any given time.

Mass Allocation

Figure 22. Mass allocation

3d Print Allocation

Figure 23. 3d Print time allocation

Cost Report

While we were able to get many parts and pieces for free, what cost the most was the custom PCB parts and the rotary encoders.

Figure 24. Costs of the project

Burndown and Percent Complete

With all our tasks still left to finish and the progress we made on the project. We finished at %62 completion and remained behind schedule.

Figure 25. Project Burndown with completion at 62%

Concluding Thoughts

If there is anything I would change knowing what I know now, it would to ensure that progress is made consistently every week and that the project schedule be updated at every opportunity. Meeting up with Professor Hill is always a good idea as well. He has valuable input, and tries to help. The lectures may not cover everything but that is why there is so much documentation on Professor Hill’s website. I would also suggest reading over all the material and not taking any other classes that require a lot of time, as this class will already eat up all your time.

Project Resources

Project Video: https://youtu.be/HVbv6seOrCA




Project Libre:https://drive.google.com/open?id=0BwLPwnTqIptrcWEwalpwLS1oVzA


Verification and Validation:https://drive.google.com/open?id=1D4-kNlP_zy35XqHd-88Zd2Wl2X3w6gr05WJnChsNDzU


Fritzing Files: https://drive.google.com/open?id=0BwLPwnTqIptrc2xkWm5tYVdiM0U


Arduino Firmware: https://drive.google.com/open?id=0BwLPwnTqIptrQldiNFI1cDg3cW8



Spring 2017 Mini Pathfinder Encoder Testing

By: Moses Holley (Electronics and Control)


The objective of this test was to gain an understanding of how RPM encoders work along with the Arduino code to manipulate them. We need the shaft encoders to detect wheel slippage and control the differential turning for the Mini Pathfinder.

Subsystem Relation

The RPM encoder test was first implemented using the OSEPP Motor Encoder. In this test, We gained an understanding of how the two A3144 hall effect sensors on the chip detect the rotating magnets. Then with the Arduino code converts the rotations in to RPMs. This test was used to measure the speed at which the wheels will turn at the 3dot output voltage of 5 volts. The n20 motors are rated at 6v at a speed of 32 rpm. We used an Arduino Uno because the 3Dot was having trouble uploading at the time.

Figure 1. Test Setup

Figure 2. RPM output

Arduino Code

Average RPM reading Code: This code waits for 10 readings then gets the avg of the RPMs.

// read RPM and calculate average every then readings.

// This code was retrieved online and we manipulated the reading[index] to get the correct readings.

const int numreadings = 10;

int readings[numreadings];

unsigned long average = 0;

int index = 0;

unsigned long total;


volatile int rpmcount = 0;//see http://arduino.cc/en/Reference/Volatile

unsigned long rpm = 0;

unsigned long lastmillis = 0;


void setup(){


attachInterrupt(0, rpm_fan, FALLING);



void loop(){

if (millis() – lastmillis >= 1000){  /*Uptade every one second, this will be equal to reading frecuency (Hz).*/

detachInterrupt(0);    //Disable interrupt when calculating

total = 0;  

readings[index] = rpmcount * 5.45;  /* Convert frecuency to RPM, note: this works for one interruption per full rotation. For two interrups per full rotation use rpmcount * 30.*/

for (int x=0; x<=9; x++){

  total = total + readings[x];


average = total / numreadings;

rpm = average;

rpmcount = 0; // Restart the RPM counter


if(index >= numreadings){



if (millis() > 11000){  // wait for RPMs average to get stable


Serial.print(” RPM = “);



lastmillis = millis(); // Uptade lasmillis

 attachInterrupt(0, rpm_fan, FALLING); //enable interrupt




void rpm_fan(){ /* this code will be executed every time the interrupt 0 (pin2) gets low.*/




RPM Code: This code gets the RPM of each reading.

// read RPM

// This code was retrieved online and manipulated the RPM.

volatile int rpmcount = 0;//see http://arduino.cc/en/Reference/Volatile

int rpm = 0;

unsigned long lastmillis = 0;


void setup(){


attachInterrupt(0, rpm_fan, FALLING);//interrupt cero (0) is on pin two(2).



void loop(){

if (millis() – lastmillis == 1000){  /*Uptade every one second, this will be equal to reading frecuency (Hz).*/

detachInterrupt(0);    //Disable interrupt when calculating

rpm = rpmcount * 5.45;  /* Convert frecuency to RPM, note: this works for one interruption per full rotation. For two interrups per full rotation use rpmcount * 30.*/

Serial.print(“RPM =\t”); //print the word “RPM” and tab.

Serial.print(rpm); // print the rpm value.

Serial.print(“\t Hz=\t”); //print the word “Hz”.

Serial.println(rpmcount); /*print revolutions per second or Hz. And print new line or enter.*/

rpmcount = 0; // Restart the RPM counter

lastmillis = millis(); // Uptade lasmillis

attachInterrupt(0, rpm_fan, FALLING); //enable interrupt



void rpm_fan(){ /* this code will be executed every time the interrupt 0 (pin2) gets low.*/



// Elimelec Lopez – April 25th 2013



Although we gained a lot of understanding of how the RPM encoder works we will not use this model for our design. The shape of the OSEPP encoder is catered to a DC motor placed of it to be very close to the rotating magnets. We will have a different design that has the DC motor encased in the wheel which requires that the rotating magnet rotate around the motor. When we decide what kind of encoder will be used there will be an updated blog post.

Spring 2017 Mini Pathfinder Bogie Degrees of Freedom

By: Johnathan Chan (Manufacturing-Chassis)


Since the Mini Pathfinder has to be able to climb up stairs as large as the wheels, we need to ensure that the bogie suspension has enough of an angle to pivot to overcome the stairs. Measuring the angle of the pivoting bogie will help us determine if it can do this.


We were able to measure the degrees of freedom by laying the suspension flat on a piece of paper and making a mark of where it is when it is flat. Then we marked where it is completely up. After we used a protractor to measure the degrees of freedom which is 87 degrees.

Figure 1. Flat on the Ground

Figure 2. Suspension all the way up

Figure 3. Angle of which the suspension from flat on the ground to all the way up


With the suspension we created, the rover will be able to maneuver through obstacles the size of its wheels.

Spring 2017 Mini Pathfinder Motor no Load Current and Voltage Test

By: Moses Holley (Electronics and Control)


In this test, I will be testing the n20 motors at various voltages. The motors are rated for 6 volts, but the operating boosted voltage on the 3Dot board is 5 volts. The battery is rated at 3.6 volts, should we tap directly into the battery, but is typically fully charged at 4.2 volts [1]. The discharge cutoff voltage is at 2.75 volts, but wanted to test it at a slightly higher output of 3 volts.

Figure 1. Applying Voltage to the Motor


Figure 2. Voltage and Current Results


There is no significant change in the current draw from the different voltages on all the motors. Since the 3Dot motor connectors will use the 5 volts from the boost converter, we will most likely utilize the same voltage output so that all the motors will spin at the same rate. This is an easier solution than programming the onboard motors to spin at the same rate that the other motors.


[1] http://www.batteryspace.com/prod-specs/1389-RCR123A36.pdf

Spring 2017 Mini Pathfinder Rotary Encoder Tradeoff Study

By: Moses Holley (Electronics and Control)


The objective of this trade off study is to select an electrical device that can detect RPMs for our motors. One way RPM detection is important for our project would be our wheel slip detection.

Subsystem Relation

On the subsystem level, there are many things that we hope to accomplish with rotary encoders. We would like to detect wheel slip, wheel has lost traction or free spinning in the air, for each motor. We would also like to use the rotary encoders within differential turning and the climbing algorithm.

In order to fulfill this requirement, we researched optical shaft encoders, magnetic shaft encoders, and even considered designing a custom shaft encoder PCB.

Optical Shaft Encoder

Pololu’s optical encoders are sensor boards and reflective wheels added to micro metal gear motors with extended back shafts. They have the option of a 3-tooth and a 5-tooth encoder that provides a 12 counts per revolution or 20 counts per revolution. These encoders output are direct photo-transistor outputs. [1]

Figure 1. Optical Encoder


Magnetic Shaft Encoder

Similar to the optical encoder, Pololu’s magnetic encoders are attached to the extended shaft of an geared motor. These boards use 6-pole magnetic discs that can be used to add quadrature encoding. This board senses the rotation of the magnetic disc and provides a resolution of 12 counts per revolution of the motor shaft when counting the ends of both channels. [2]

Figure 2. Magnetic Encoder

Custom Shaft Encoder PCB

The custom shaft encoder was inspired by the magnetic shaft encoder just mentioned. The architecture is exactly like the shaft encoder. Although, after detailed research to find the exact EagleCad symbol for our hall effect sensor TLE4946-2K that the magnetic sensor uses. We discovered that the TLE4946-2K hall effect sensor can be with in TO-236-3, SC-59, SOT-23-3 packages. Digikey will send the package in SC-59. Fortunately, there are MOSFETs and Transistors that share similar packages. I choose PNP transistor that has a package of SC-59-BEC, SC59 (SOT23) Motorola, to be place holders for the hall effect sensor that we will purchase.

Figure 3. Magnetic Encoder Schematic and Layout

We were considering creating our own because we would have the ability to produce four from one square inch of PCB. The decision factor revolved around cost and time to have them implemented in our design.


In conclusion, we realized too late that we did not purchase the extended metal gear motors that would fit perfectly with the optical or magnetic shaft encoders. We decided to decline creating custom shaft encoders because they would be too time costly and we wanted to ensure that we had working encoders. We chose to purchase the magnetic shaft encoders instead. Although, we did not place the encoder behind the motor but inside a slit that held the motor attached to the suspension. We placed magnets on the inner wheel. As the wheel rotates the sensor should catch the change in poles from the magnet.





Spring 2017 Mini Pathfinder Solar Cell Voltage Test

Solar Cell Blog Post

By: Edgardo Villalobos (Manufacturing-Solar Panel)


The mini pathfinder will utilize one small encapsulated 5V 200mA solar cell. The reason for this is because it requires less cells to come up with the voltage and current required to charge the battery than if using the normal type cells, meaning less real estate on the small rover.


The size of the solar panel for the Mini Pathfinder should be 122x52mm, but the size of the one on hand is 120x70mm. This cell will be connected through the usb port to recharge the battery on the 3Dot board.The measured voltage was 5.2V

Figure 1. Solar Panel Voltage


The voltage of this solar panel is enough to charge the 3Dot board through the usb port during operation. The next step will be to determine if the solar panel can output enough current.

Pathfinder S’17 Final Blog Post

By Martin Diaz (Project Manager)

Edgardo Villalobos (Solar – Design and Manufacturing Engineer)

Anthony Dunigan (Chassis – Design and Manufacturing Engineer)

Renpeng Zhang (Electronics and Control Engineer)

Abdullah Albelbisi (Missions, Systems, and Test Engineer)

Executive Summary

By Martin Diaz (Project Manager)

Program Objective

1. Articulating custom solar panels which are able to track the sun and enter/exit a cocoon state. The panels will be modular allowing the remote identification (telemetry) and astronaut replacement of a broken module. Additional telemetry requirements include providing information on articulation angles, panel voltages, charging current, and battery fuel level. A cocoon state shall be used during simulated launch, dust storms, and operation over steep terrain.

2. Form factor of the solar panels will be identical to the panels on the Spirit and Opportunity Mars rovers. Sizing of the panels will be consistent with the existing chassis and meeting the form factor of the Mars rovers. Specifically, the size of the panels relative to the size of the chassis will be identical to the mars rovers (scaled model).

3. Electronic slip differential 6-wheel Drive for turning and traversal of rough terrain, specifically, the outside and inside wheels will turn at different speeds while turning, plus wheels under no load conditions will stops spinning.

4. Demonstration of GPS navigation mode with obstacle avoidance (articulating LIDAR sensor)

5. The Mission Objective is to traverse the same course defined for the Fall ’16 Pathfinder.

6. Based on the fixed size of the articulating solar panels, efficiency, sun’s path during time of mission, and the mission objective, the project will propose charge time and batteries for the rover. Margins must be identified.

7. No modification to the pathfinder rover shall preclude future High Desert operations (High temperature materials with cooling system as needed). a. Wheels b. Pan/Tilt platform c. AC Unit

Mission Profile

The S’17 Pathfinder will commence it’s Mission by first exiting a “cocoon state” in front of CSULB’s library, then  traversing .09 miles to it’s destination charging station. To reach it, the Pathfinder will need to traverse up and down a set of 3 steps. GPS Navigation mode will use 11 predefined checkpoints including start and finish L-L coordinates. Along the way, the Pathfinder will operate in articulation mode, in which the solar panels will track the sun and provide current telemetry of each of it’s 36 cells to a sync’d Arxterra App user within Bluetooth range.

Key Features

Custom Arxterra Control Panel

  • Buttons for opening and closing panels
  • Buttons for entering and exiting panel articulation mode
  • Meters that show each solar cells output voltage

Proper Rocker Bogie Suspension System

  • Obstacle Climbing
  • Keeps all wheels in contact with ground in uneven terrain

Cocooning and Articulating Solar Panels

  • Solar panels can fold up and down by use of stepper motors and worm gear.
  • Solar panels will move up and down to find a better position for increase sunlight.

Solar Cell Telemetry

  • Solar Cell Current Telemetry that can be viewed through Arxterra control panel.

Pan and Tilt system for lidar sensors


Electronic Slip Differential

  • Inside and Outside wheels will spin at different speeds
  • Any tires under no load will stop spinning

Autonomous GPS navigation and Obstacle Avoidance

  • In autonomous mode the pathfinder will travel to the next coordinate and avoid obstacles along the way.

Rotary encoders to measure each wheel rpm

  • Wheel rpm will be monitored and used in electronic slip differential program.

Level 1 Requirements

  1. L1.1 Pathfinder shall travel a .09 miles course. Course includes going up a set of 3 stairs at 70 degree inclination and down a set of 3 stairs with a downward slope of 70 degree.
  2. L1.2 Pathfinder shall launch from cocoon state. Solar panels folded upward at 85 degrees from base.
  3. L1.3 Pahtfinder shall allow user to manually execute “enter cocoon state” program module via arxterra App to enter into cocoon state at any time.
  4. L1.4 Pathfinder shall all user to manually execute “exit cocoon state” program module via Arxterra app to exit cocoon state at any time. 85 to 210 angle.
  5. L1.5 Pathfinder shall allow user to execute “articulate state” program module which is available after the pathfinder has completed the “exit cocoon state” sequence in order to articulate the solar cells directly at the sun limited to the full bend of each wing, which is between 210 and 85 degrees relative to the solar panel base. articulate state is based on an “articulate state” program module which precisely actuates each wing’s stepper motor module’s parameters which include time of day, GPS location, orientation, and local sun trajectory.
  6. L1.6 Pathfinder shall provide updates of solar panel articulation angles which come from the ‘articulate state” program module.
  7. L1.7 Pathfinder will provide solar panel voltages and charging current by capturing each modular panels electrical output separately.
  8. L1.8 Two side panels, a butt panel, and a base panel shall be modularly encapsulated and wired.
  9. L1.9 From factor of the solar panels will be identical to the panels on the spirit and opportunity.
  10. L1.10 Electronic slip differential 6 wheel drive shall be implemented by an “ESD” program module.
  11. L1.11 Wheels that are not in contact with terrain shall be actuated by “ESD” program module to stop spinning by using currents that match free spinning wheel characteristics as inputs.
  12. L1.12 Pathfinder shall demonstarte obstacle avoidacne during course traversal by articulating 2 lidar sensors via pan and tilt system. The lidar sensors will provide input and be controlled by the waypoint navigation program module used during the fall 16 semester
  13. L1.13 Pathfinder will utilize “waypoint navigation” program module for autonomous GPS navigation
  14. L1.14 Rocker bogie system shall be improved by closely modeling the suspension mechanics behind the mars exploration rovers, curiosity and spirit.
  15. L1.15 Pathfinder will not hinder future use of pathfinder in high desert condition by modification of wheels, pan/tilt platform, and AC unit.
  16. Pathfinder will be ready to demonstrate mission profile and project objectives by may 12th, 2017

System Design

By Abdullah Albelbisi (Missions, Systems, and Test Engineer)

System Block Diagram

Mission Command and Control

We have used Axterra app to develop a custom command to control ( “Cocoon state”, articulate state”, telemetry)


“Cocoon State” : is a state where we can control the panels to either close or open. The initial benefit from cocooning is to prevent the solars from harm causing by natural effect. We control it

by pressing either “cocoon on” or “cocoon off” on the Axterra app.


“Articulate State” : is a state to allow the solar panels to follow the most dense direction of light to produce power and charge the battery. It can be controlled by pressing either “on” or “off” on the Axterra app.
“Telemetry” : 12 custom telemetries have been assigned to address a visual amount of energy is being produced by every 3 solar cells.

Experimental Results

HC-Sro4 Ultrasonic Sensor Test

Wheel Forces Calculations

Solar Current Sensor Experiment

Stepper Motor Control

Solar Panel Voltage Calculations

Encapsulation Trade Off Study

Solar Manufacturing

By Edgardo Villalobos (Solar – Design and Manufacturing Engineer)

As a requirement, the Pathfinder was to have a solar panel in the shape of the solar panels on the Spirit and Opportunity Rovers that would charge the 12V 7Ah battery onboard the Pathfinder. The wings on the solar panel needed to be able to open and close to a cocoon state and also articulate to the sun. Another requirement on the solar panel was to obtain the voltage differential from each of the solar cells to make it easier to pinpoint the location of the non-functioning cell.

The previous semester’s solar panel group had made the wings out of aluminum, which I found to be a little too heavy for the worm gear mechanism used to make the wings open and close. I replaced the aluminum wings with plexiglass in order to lighten the load, which I now know was a mistake as the plexiglass was not strong enough and will not withstand the heavy heat.


The solar panel consisted of 36 6V 100mA encapsulated solar cells that were arranged in series and parallel in order to achieve the right amount of voltage and current to charge the battery in a timely manner. The rule of thumb with solar panels is that the voltage required to charge the battery needs to be one and a half times bigger than the voltage of the battery in order to stay consistent. The cells were arranged to achieve 18 volts. Each panel consisted of two rows in parallel and three cells in series in each row, theoretically making a total of 18V 200mA. The whole solar panel theoretically achieved 18V 1.2A. The solar cell array was then attached to the first two terminals of the solar charger that was placed on the Pathfinder.

In order to fix the worm gear issue, a box with ball bearings could be made to hold the worm gear and spur gear together for a tighter grip. Another solution is to make the size of the gears larger. The problem here is that the weight of the wings was causing the hinge to bend away from the worm gear. In order to get the ball bearing box to work, the placement of the wings and hinges would also need to change. The gears could also use a little oil/grease for easy movement.


Another problem with the wings is that they don’t fully close onto themselves as the material on top of the wings gets in the way. A solution to this could be the use of L-hinges. Although the L-hinges aren’t the nicest to look at, they do provide room for overlap.

In conclusion, I was unable to get the solar panels articulating/cocooning mechanism to function correctly. With the little changes I described will make it work.

Chassis Manufacturing

By Anthony Dunigan (Chassis – Design and Manufacturing Engineer)

The new chassis design was based on the fulfilling the requirement of improving the rocker bogie design by closely modeling the suspension behind the Mars Exploration Rover. The design is a modified version of the MER Curiosity, Curiosity’s differential bar is located on top of the rover since it did not have any solar panels. But our project has the solar panel so the model that was design last semester place the bar in the rear of the rover. The differential bar allows one leg to rotate down and push the opposite leg down. This will the allow for all 6 wheels to remain on the surface. The issue with the previous design was that the rover could not maintain all 6 wheels when going over an obstacle that is greater than the diameter of the wheel. Mars Exploration Rovers should be allowed to traverse over obstacles that are approximately 1.5 times to 2 times the diameter of the wheel. The previous design could barely traverse over obstacles  its own wheel diameter. The new design to improve the rocker bogie was increase the length of the bar to allow more room for the legs to go up and down freely without hitting the chassis.

The new bar was increased from 9.75 inches to 12.125 inches to accomplish this.

Another issue with the previous design was the bogie pivot (the pivot where the two legs are attached to) were not allowed to move freely. The issue was fixed by by using 2 ball bearing washers on each of the pivot points to allow this free movement.

Magnetic Rotary Encoder

The rotary encoders are currently not placed on the rover. The encoders that may be used are the vetco hall effect sensor module. Below is a 3D model of where the encoders will be placed as well as the sensor

Modified Chassis Design Conclusion
The modified design was not tested. So to see if the modified design works, testing should be done before modifying or applying a new design. Assuming this modified design can work properly, there will still be an issue. This new issue which was discovered near the end of the mission was that the solar panel stepper motors will rest on the rod connectors that connect the legs to the bar. This may not cause any issues initially but it would be best that this issue be avoided. A fix for this would be using the previous design’s differential bar and extending the rovers legs out approximately an inch and half from its current position using longer  socket shoulder screws http://(https://goo.gl/wawpGJ . This design may have issues with having more force being applied onto the longer screw. So some stress testing may be required. An alternative design would be to completely get rid of the differential bar mechanism and opt in for a differential gear box mechanism. The following mechanism would have to be placed in between the battery and electrical box. Which will be an issue due to the battery being in the way of the connection points where the differential gear mechanism will be placed. So the battery may be required to be moved further back to allow this modification.


  1. https://docs.google.com/document/d/1NPQc2yRRpnUTUtxoxJKHqFgdvQKcfK46eKzEHFoKYcc/edit
  2. https://docs.google.com/presentation/d/18KhcQu9Qbvz87q95ofyxz0uMTzXnwRA5Ok51WPXzeXQ/edit

Electrical Box Setup

By Anthony Dunigan (Chassis – Design and Manufacturing Engineer)

The current cabling setup for the electrical box is shown below.

The box includes 3 VNH5019 motor shields that are stacked on top of each other. They are stacked to reduce the area that each individual driver  would have taken in the box. An additional hole was drilled into the box to allow more wires to enter the box which will decrease the risk of the wires being frayed or pinched from entering only one access point.

Fuse Protection

An inline fuse was incorporated into the box to protect the circuitry and battery. The previous semester did not incorporate this mechanism. The fuse can go hold up to 20 Amps. But only a 5 to 6 amp fuse will be required for protection. A fuse over 6 amps is not advised due to the max output of the battery being approximately 7 amps and will increase the risk of damaging the battery and circuits. As well as protecting the battery from exploding! The fuse was placed before the switch to protect the switch as well.

Terminal Block/Power Distribution

An 8 block terminal was used to distribute power and ground. The terminal block requires a ring terminal connector. Each ring terminal is red due to the classification of the wires gauge size (16 gauge). The power wires are red while the ground wires are black. 3 of the power lines coming from the output of the terminal block are going to the 3 motor driver shields. 1 wire is connected to the step down voltage regulator. The voltage regulator steps down the 12 Volts from the battery to 5 Volts. The output of the regulator is connected to a breadboard that should supply the arduino leonardo, servo motor, and ultrasonic sensors. Be sure to double check the voltage and current ratings  for all devices in the electrical box. The terminal block also has a custom polycarbonate glass protection on it. This should protect the terminal block from making contact with other electrical devices within the box.


Cabling Conclusion

The issue with current electrical box is that it is too small (7x5x3 cubic inches). A larger electrical box may be required to give sufficient room for all the required components that need to be placed. A larger electrical box will also allow you additional room just in case any additional components need to be placed inside such as the solar panel pcb and charge controller. The charge controller can have its own enclosure placed on the back side near the battery. But you must also consider the possible new mechanical design of the differential gearbox that may not allow the charge controller on the rear near the battery due to the new placement of the battery.

A smaller inline fuse may be used as well to increase the amount of room inside the electrical box. Additional fuses to be placed in line with the motor shields should be considered.



By Renpeng Zhang

For the motor drivers and I2C expander, we decided to make it into a shield for Arduino. However, due to the size and number of the motor drivers; we weren’t able to put them into a single shield, so we decided to do two shields and stack them on top of the Arduino Leonardo. Due to the size of the heatsinks on the motor drivers, we have to design the shield in such a way where the top shield won’t cover up the motor drivers on the bottom shield. After careful considerations, we decided to put one PCA9685 I2C expander with three motor drivers on the first shield and the other PCA9685 I2C expander with the other three motor drivers on the second shield. The schematics for the two shield are identical except for the current sensing pins. The first shield utilizes the first 3 analog pins and the second shield utilizes the last 3 analog pins.

New design as a platform for Pololu VNH5019 dual motor drivers

Solar PCB

Previous Semester’s PCB was assembled. Still needs cleaning up.

Chassis –  PCB Layout

By Anthony Dunigan (Chassis – Design and Manufacturing Engineer)

Without Polygon

With Polygon


This is the completed or the most recently updated version of the custom PCB. This current version of the PCB will consist of 2 PCA9686 IC’s (I2C), multiple resistors and capacitors. The layout consist of 3 VNH5019 motor shield connectors. There will also be  arduino micro connectors, power pin connectors, lidars sensor connector, bluetooth connectors, and an alternate arduino pwr connector. This custom PCB will be using existing parts within the chassis. The existing parts are the motor shields and bluetooth. The additional parts needed will be the arduino micro. The PCB size is about 4 square inches. Includes holes for mounting the PCB.


  1. https://drive.google.com/open?id=0B9ZODu6tlNEcUnZkNWFUNWVKY3c
  2. From the Chassis_5_5 folder. File: Chassis_5_5D4.brd



By Renpeng Zhang

General Software Flowchart

Rover control flowchart

Solar Panel State Flowchart

Verification Matrix

By Abdullah Albelbisi (Mission System and Test)



Project Documentation

Resource Report

By Everyone


Cost Report

By Everyone



By Martin Diaz (Project Manager)

The schedule was created using project Libre. The task were separated by division and then scheduled with the critical tasks in mind.



By Martin Diaz (Project Manager)

The burndown was created by getting each task from the project Libre into excel and then assigning percent completion for each week.








What We Learned From This Semester

By Martin Diaz (Project Manager)

One of the things I learned late in the semester was to ask the division for help. Don’t assume they won’t want to help you. The division managers can step in and help your project a lot and even get their engineers from other projects to help support your project.


Asking Professor Hill is also a lot of help. Especially with circuit design, schematics, and PCB layout.  We were having a lot of trouble trying to make our custom PCB on our own and then went to Prof. Hill for help. He said he enjoys circuit design and wished we had seen him sooner. If we had we would have completed our PCB in time.


One of the difficulties the group had was not be able do work on the project because one of the members had certain parts. I suggest getting similar parts from Prof. Hill so they can work on similar systems. For example you can 6 smaller motors and breadboard them to test your code instead of waiting for a chance to work on the actual motors you are going to use.


Project Video



EagleCAD Files – https://drive.google.com/open?id=0B_Kn5EG3fBjuejZyajBfYWVKWE0

Fritzing Files – https://drive.google.com/open?id=0B_Kn5EG3fBjuaURKRTBUR2M3QTA

Arduino Code – https://drive.google.com/open?id=0B_Kn5EG3fBjuMV9MZERvaENvUVE

Solar Design and Manufacturing Files – https://drive.google.com/open?id=0B4jU8uMDmOoiVVp5dkFRbC1jRTA

Chassis Design and Manufacturing Files – https://drive.google.com/drive/folders/0Bz6ZQqAMFyLHcXlsVm5lNUlIeXc?usp=sharing

Verification and Validation – https://drive.google.com/open?id=0B3RM6QKrhjFIR3JqcHZLRmVmUDA

Bill of Materials – https://docs.google.com/document/d/1fk77AdEc3pNCxLTQE3WCtPdG5hXLdYsb-yxXMa35l6k/edit?usp=sharing


Spring 2017 Mini Pathfinder Motor Trade Off Study

By: Moses Holley (Electronics and Control)


The objective of this trade off study is to find a motor that meets our robots requirements and also satisfies mission verification.

Subsystem Relation

Motor selection ultimately depended on the Mini Pathfinder’s size. Initially, the customer wanted a rover that could fit in one’s pocket and also in the palm of their hand. With this perspective we looked in to micro vibration motors. After a few meetings with the customer, we can to an consensus to have the Mini Pathfinder scaled down to 1:4.57 for length and height of the sojourner rover to minimally encompass the 3DoT Board. That in turn caused the wheel size to be 28 mm high and have the motors encased making the motor not visible.

Micro Vibration Motors

The vibration motors that we were interested in for our initial design can be seen here[1].  These motors require a gearbox to bring down the RPMs. Some of these motor RPMs were as high as 15000 RPM. In creating the gearbox we would have to alter the shaft and place the gearings on top of the shaft.

Figure 1. Micro Vibration Motor

Micro Metal Gearmotor HP 6V

The updated design scale granted to me to to choose a motor that must not exceed 19mm. The 19mm was given by the 2mm clearance of the 3D print of the wheels on top and bottom of the motor. The motors chosen has a 12mm diameter [2]. It also already had its own gearbox that produced 30 RPMs according to the specs. I figured this would be a great motor size just in case we make additional adjustments to the wheels. We later did make adjustments by adding shaft encoders. There was still enough clearance for the wheel and the shaft encoder.

Figure 2. Micro Metal Gear Motor


When choosing a motor for the Mini Pathfinder, we came to find out the size of the robot is a huge factor. Our first idea of the motor caused me to research for micro vibration motors. Those motors required many adjustments to benefit the Mini Pathfinder. Fortunately, we were able to resize our robot which actually granted us a motor that not only met clearances but also ideal performances through the assembled gearbox. After this trade off study, we decided to use the Micro Metal Gearmotor HP 6V motors for our design.




Spring 2017 Mini Pathfinder Updated Mission Profile

By: John Her (Project Manager)


The Mini Pathfinder mission has changed since the PDD where it will no longer participate with other robots in a game. Instead, the Mini Pathfinder will have the same mission as the Spring 17’ Pathfinder but scaled down.

New Mission Profile

We will remotely traverse a course of approximately 27.8 meters in length. The course will have 3 stairs it will descend and 3 stairs it will ascend with each stair being 27mm. During this course the Mini Pathfinder will demonstrate electronic differential turning, solar charging, proper rocker bogie mechanics and provide telemetry.  

Figure 1. Pathfinder distances in Red. Mini Pathfinder distances in blue

Since the Spring 2017 Pathfinder is inherited from the Fall 2016 Pathfinder, the distance from the center of the front wheel to the center of the rear wheel is a total of 19.22 inches or 488.188mm [1]. To get the scale factor, we find the distance from the center of our front wheels to the center of our rear wheels which has a measurement of 99mm. (488.188/99=4.9311919). We mapped the coordinates of the Spring 2017 Pathfinder and used google maps and its measuring tool to get approximate measurements.  


With the new Mission Profile set, we can continue with our design of the Mini Pathfinder.



HC-SR04 Ultrasonic Sensor Test

By Renpeng Zhang

HC-SR04 range test


Range HC-SR04 was tested



* HC-SR04 testing code

* Connect Vcc to 5V

* Connect Gnd to Gnd

* Connect Trig to pin 9(PWM)

* Connect Echo to pin 10(PWM)



// defines pins numbers

const int trigPin=9;

const int echoPin=10;


// defines variables

long duration;

double distance;


void setup() {

 pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output

 pinMode(echoPin, INPUT); // Sets the echoPin as an Input

 Serial.begin(9600); // Starts the serial communication


void loop() {

 // Clears the trigPin

 digitalWrite(trigPin, LOW);


 // Sets the trigPin on HIGH state for 10 micro seconds

 digitalWrite(trigPin, HIGH);


 digitalWrite(trigPin, LOW);

 // Reads the echoPin, returns the sound wave travel time in microseconds

 duration=pulseIn(echoPin, HIGH);

 // Calculating the distance


 // the -1 is to factor in the error of my specific sensor and put it into consideration

 // Prints the distance on the Serial Monitor

 Serial.print(“Distance: “);


 Serial.println(” cm”);