Weekly Update #6

Published 2019/02/25

Pod Dispenser

Work began on the development of a pod (small plastic cup) dispenser. This device would eject the plastic cups from a reservoir into the gantry cart before each run of the machine. We are attempting to have cogs hold the cup stack in place by the lip of the bottom cup, and rotate slightly to drop the bottom cup. A concept image is below.














However, multiple cogs spaced around the pods are required to hold the stack in place, and we are encountering challenges related to synchronizing them. Three continuous-rotation servos are being used to rotate the cogs, but being open-loop devices there is no way to account for the natural variance in motor speeds. We are currently exploring other ways to dispense the pods.
















Unity Board development

The modular control board discussed last week as tested on a breadboard this week. After confirming control of the stepper motor and the ability to read from the sensors using the ATmega328P micro controller on-board, a PCB was designed. Originally, multiple PCBs were developed for different types of devices (gantry cart, dispensers), however to improve modularity and decrease development time and costs, a single, unified PCB was designed with the idea of multiple devices in mind. The unification of all the PCBs lead us to call this new board Unity.
















While the Unity boards are being fabricated, firmware development is in progress. Currently a rudementary I2C link has been established between the Unity board and the Raspberry Pi. The protein ratio value pulled from the front-end UI is sent via I2C to the Unity board and the microcontroller spins the stepper at an RPM corresponding to the value (e.g. 20% = 20 RPM, 60% = 60 RPM). A command-based packet system is currently in the works - we would like to be able to send a command corresponding to a certain action (e.g. move_stepper(20)) with parameters from the master to a device. To do that, we plan to send multiple bytes, in a packet such as [command, arg1, arg2, arg3] to a specific device. Different commands would trigger different actions taken by the Unity board it was addressed to.


Update (Feb. 26th): Operation of the Unity board is demonstrated in this video: