Techtile

Sprint 3

After having fabricated a functional gantry for Sprint two, we wanted to make some improvements to this main gantry of our system in order to kick off our progress towards an MVP for the end of Sprint three. In an effort to do this, we decided to take our gantry (currently set up as two linear shafts stacked vertically within the housing) and flip it on its side. In other words, the solenoid which punches the braille marks into the paper now travels between the two linear shafts as opposed to in front of them both. We decided to do this because as a result of the significant moment arm from the shafts to the solenoid, there was a good amount of downward torque on the solenoid causing unnecessary friction.

Moreover, when we pulled with the gantry belt on either side of the solenoid, the spot where we had made this attachment ended up not being the exact center of mass of the solenoid and linear shaft system. As a result, this too imparted a torque on the system, as it tried to move the solenoid. By moving it between the bars, we were able to pull from the middle of the solenoid and have it move smoothly along.

Card image cap
Card image cap

On the embedded and electrical integration side, we also switched from using the Adafruit motor shield to Arduino CNC Shield v3 with stepper motor driver DRV8880. The new motor shield provides sufficient power to drive two stepper motors. We used Speedy Stepper library to write firmware for driving the stepper motors. The new motor drivers has the capability of microstepping which allows us have a smooth continuous movement of the stepper motor. Previously, without microstepping, the stepper motor moves in large discrete steps and therefore generate a vibrating noise when the stepper motor is running. With microstepping at ⅛ of a step, we successfully get rid of the vibration and accomplish fluent movement for both the gantry and paper roller. We also purchased a 19.5V power supply to power the stepper motor shield.

Card image cap

On the software side, we calibrated the amount of stepping for both the gantry when moving between columns and between braille cells and the roller for paper movement. For each braille cell, the solenoid traverses along a path in the shape of U. In this way, we minimize imprecision in paper movement with small increments and have braille in the same row to line up as much as possible. To differentiate between new column and new braille cell, we designate the number 8 for indicating a new column and number 9 for indicating a new braille and send the command accordingly through serial communication. For example, for a given braille cell [1,1,1,0,1,0], the corresponding commands sent from Python to Arduino is “7”, “8”, “2”, “8”, “9” where “7” and “2” are the braille content, “8” indicates new column and set the paper movement in the correct direction and “9” indicates new braille for the next data.