The system interacts with the samples to be tested via an end-effector that is moved by three stepper motors in a delta configuration. The goal of the Electrical Sub-System is to enable these interactions to happen at the command of the Computer Science Sub-System. The stepper motors are being controlled via an ATmega 328 microcontroller. The microcontroller is running specialized software which translates coordinates sent from a Raspberry Pi into waveforms representing the direction, distance, and speed a motor should move in. These waveforms are then passed to a stepper driver, which switches power to the motor according to the information within these waveforms. The end result is a stepper motor which can be controlled via a Raspberry Pi. An additional ATmega 328 microcontroller is utilized to control the other electrical aspects of the system as well. Such duties include enabling and disabling the vacuum pump, as well as enabling and disabling the flash for the system camera.
This PCB handles everything related to driving the motors from a software point of view. It interprets the motor coordinates sent from the Raspberry Pi, sends signals and power to the Auxiliary PCBs, and processes encoder data from the motors. More information on the Central Processing PCB can be found here on the project GitHub.
This PCB acts as a link between the Primary Control PCB and the stepper motors themselves. Since there are three stepper motors, there will be three separate instances of this PCB in the final system. This PCB takes in a signal from one of the ATMEGA328s on the Primary Control PCB, and outputs another electrical signal which will turn the stepper motors. In order to verify that this PCB is working correctly, there are status LEDs for 24V and 5V power, as well as status LEDs for RX and TX packets. More information on the Auxiliary Stepper Driver PCB can be found here on the project GitHub.
This vacuum pump is used to create suction in order to pick up the cultural samples. It is controlled via a relay located on the primary control PCB. The D2028 vacuum pump is very common among enthusiasts, and with good reason: this budget motor is dead simple, reliable, and effective. 16” of mercury over a ¼” diameter suction cup means this pump can theoretically lift a little over ⅓ of a pound, which is plenty for our application, as its load weighs only ~100 g. This allows for a safety factor of ~50%. More information the vacuum pump can be found here on the project GitHub.