We at first set out to replace the Fergboard with the CNC shield. However, we ran into many problems doing this, so we decided to investigate the advantages and disadvantages of both approaches instead. We aim to allow future projects to build on our findings. Details for setting up the boards are found in the individual reports.
Below shows the Arduino Uno and CNC shield setup (left) and Fergboard setup (right).
The first advantage of using this setup is that the Arduino Uno runs on GRBL. This means that we can send commands to the motors using GCode. GCode is great because it is well supported and is open-source software. We can easily set how many steps and how fast for the motor to move.
Another advantage is that we can run bipolar motors, which gives us higher pull-out torque (max torque). This helps us identify our area of interest on the water sample faster. (The stepper motors used by WaterScope are in fact unipolar motors converted to bipolar motors)
However, we ran into problems. We can easily drive three 5V motors, but not 12V motors (and we're still not sure why!). Another disadvantage is that converting to bipolar motors is an extra step that slows down the assembly line. We also didn't have time to figure out how to run GRBL software from the Raspberry Pi. We were only able to run GRBL software on a laptop.
- see Akhass' report for details on this setup
This motor drive board is custom-built to drive unipolar motors. WaterScope uses unipolar motors as they are cheap and readily available. Another advantage is that the commands on Fergboard are run in Python, which made it easy for the software team to interface with the web server, which is also Python based.
There are still drawbacks to using the Fergboard setup. The open-source software is not as well supported as GCode, which is well supported and universal. Also the user is currently unable to specify a motor speed on the web interface. Using unipolar motors also mean that the pull-out torque is lower than the other setup. The motors sometimes also go out of sync due to their microcontrollers being independent. The Fergboard also crashes when overloaded with commands!
- see William's report for details on this setup
Neverthless, both approaches can work! We are hoping that you can one day build on our findings. We have many recommendations on how you can do this in our individual reports!
- see Akhass' report for details on future recommendations for Arduino + CNC shield setup
- see William's report for details on future recommendations for Fergboard setup