Sojourner F17: Trade Off Study – IR Line Sensors
/in Mini Pathfinder, Sojourner Generation #2/by Daniel YeldellSojourner Preliminary Documentation (Fall 2017)
/in Mini Pathfinder, Sojourner Generation #2/by Daniel YeldellSpring 2017 Mini Pathfinder Final Blog Post
/in Mini Pathfinder, Sojourner Generation #1/by John HerBy: John Her (Project Manager)
Moses Holley (Electronics and Control)
Edgardo Villalobos (Manufacturing-Solar Panel)
Johnathan Chan (Manufacturing-Chassis)
Adan Rodriguez (Mission, Systems, and Test)
Table of Contents
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.
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.
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.
Mission Command and Control
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.
Firmware
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.
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.
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
Completed PCB Design
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
Chassis
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.
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.
Solar
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.
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.
A micro usb was attached to both the positive and negative leads of the solar panel.
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.
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.
https://drive.google.com/open?id=1D4-kNlP_zy35XqHd-88Zd2Wl2X3w6gr05WJnChsNDzU
Project Status
Power Allocation
Mass Allocation
3d Print 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.
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.
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
CDR:https://drive.google.com/open?id=1jm68b_I-lYIxEX2KnLQ9umSzJKdmA3KJs0HE2ciRDsY
PDR:https://drive.google.com/open?id=1ROLFfi2FNQnKXeBWZFecfNi36JnrB8bCFhlLQb2EYzE
Project Libre:https://drive.google.com/open?id=0BwLPwnTqIptrcWEwalpwLS1oVzA
Burndown:https://drive.google.com/open?id=0BwLPwnTqIptrWHE0c3lnbHEtYnM
Verification and Validation:https://drive.google.com/open?id=1D4-kNlP_zy35XqHd-88Zd2Wl2X3w6gr05WJnChsNDzU
Solidworks:https://drive.google.com/open?id=0BwLPwnTqIptremdfTTRaNkY5bFE
Fritzing Files: https://drive.google.com/open?id=0BwLPwnTqIptrc2xkWm5tYVdiM0U
EagleCAD:https://drive.google.com/open?id=0BwLPwnTqIptrM1pZbllodXVnbnM
Arduino Firmware: https://drive.google.com/open?id=0BwLPwnTqIptrQldiNFI1cDg3cW8
Spring 2017 Mini Pathfinder Encoder Testing
/in Mini Pathfinder, Sojourner Generation #1/by John HerBy: Moses Holley (Electronics and Control)
Table of Contents
Introduction
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.
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(){
Serial.begin(9600);
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
index++;
if(index >= numreadings){
index=0;
}
if (millis() > 11000){ // wait for RPMs average to get stable
Serial.print(” RPM = “);
Serial.println(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.*/
rpmcount++;
}
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(){
Serial.begin(9600);
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.*/
rpmcount++;
}
// Elimelec Lopez – April 25th 2013
Conclusion
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
/in Mini Pathfinder, Sojourner Generation #1/by John HerBy: Johnathan Chan (Manufacturing-Chassis)
Intro
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.
Measurements
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.
Conclusion
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
/in Mini Pathfinder, Sojourner Generation #1/by John HerBy: Moses Holley (Electronics and Control)
Introduction
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.
Results
Conclusion
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.
References
[1] http://www.batteryspace.com/prod-specs/1389-RCR123A36.pdf
Spring 2017 Mini Pathfinder Rotary Encoder Tradeoff Study
/in Mini Pathfinder, Sojourner Generation #1/by John HerBy: Moses Holley (Electronics and Control)
Table of Contents
Introduction
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]
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]
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.
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.
Conclusion
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.
Resources
[1]https://www.pololu.com/product/2590
[2]https://www.pololu.com/product/3081
Spring 2017 Mini Pathfinder Solar Cell Voltage Test
/in Mini Pathfinder, Sojourner Generation #1/by John HerSolar Cell Blog Post
By: Edgardo Villalobos (Manufacturing-Solar Panel)
Introduction
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.
Results
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
Conclusion
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.
Spring 2017 Mini Pathfinder Motor Trade Off Study
/in Mini Pathfinder, Sojourner Generation #1/by John HerBy: Moses Holley (Electronics and Control)
Introduction
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.
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.
Conclusion
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.
References
[2]http://www.ebay.com/itm/131747528794?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT