Johnson Matthey – Marker Band Length Sorter (on-Going)

This is my engineering senior design project (January 2020 to December 2020) at San Diego State University (SDSU) under the Department of Mechanical Engineering. Our project advisor is Professor Alexander Lehman.

System Level Diagram of the entire apparatus

I created this System Level Diagram

SolidWorks drawing of Final Assembly

SolidWorks drawing of the Final Assembly

As I’m typing this, our budget is approximately $50,300, with the majority of that money going to the machine vision camera. We are currently in the process of ordering materials and fabricating our apparatus.

I’m working alongside fellow engineering students: Jason Agtina, Theresa Escolano, and Nathan Fosgett.

The goal is to design and fabricate a system to sort under-sized length marker bands for British company Johnson Matthey.

Thus far, my role in the project includes:

  • Maintaining active communication between Johnson Matthey and the SDSU team
  • Wrote code to enable the machine vision camera to communicate with the sorting servo motor (see below)
  • Develop free body diagrams of critical parts and subsystems (see below)
/* Machine Vision Controlled Servo
 *  by Roselynn Conrady
 *  modified 13 April 2020
 *  Utilizing serial communication to use Keyence machine
 *  vision camera to move a servo based on the reported
 *  quality of marker bands

#include <Servo.h>

int incomingData; // incoming serial data
int failPos = 0; // variable to store quality fail servo position
int passPos = 180; // variable to store quality passing servo position
Servo myservo; //create servo object to control a servo

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); //opens serial port, sets data rate to 9600 bps
  myservo.attach(9); // attaches the servo on pin 9 to the servo object

void loop() {
  // put your main code here, to run repeatedly:
  if (Serial.available()) {
    incomingData =; // read incoming data
    if (incomingData == 1) {
      myservo.write(passPos);//tell servo to go to passing servo position
      delay(15); //waits 15ms for the servo to reach the position
    else {
      myservo.write(failPos); //tell servo to go to quality fail servo position 
      delay(15); //waits 15ms for the servo to reach the position

An example of a free body diagram I created