[Helios Labs] recently published version two of their 3D printed fish feeder. The system is designed to feed their fish twice a day. The design consists of nine separate STL files and can be mounted to a planter hanging above a fish tank in an aquaponics system. It probably wouldn’t take much to modify the design to work with a regular fish tank, though.
The system is very simple. The unit is primarily a box, or hopper, that holds the fish food. Towards the bottom is a 3D printed auger. The auger is super glued to the gear of a servo. The 9g servo is small and comes with internal limiters that only allow it to rotate about 180 degrees. The servo must be opened up and the limiters must be removed in order to enable a full 360 degree rotation. The servo is controlled by an Arduino, which can be mounted directly to the 3D printed case. The auger is designed in such a way as to prevent the fish food from accidentally entering the electronics compartment.
You might think that this project would use a real-time clock chip, or possibly interface with a computer to keep the time. Instead, the code simply feeds the fish one time as soon as it’s plugged in. Then it uses the “delay” function in order to wait a set period of time before feeding the fish a second time. In the example code this is set to 28,800,000 milliseconds, or eight hours. After feeding the fish a second time, the delay function is called again in order to wait until the original starting time.
I love 3D printing but the first thing that always comes to mind when seeing 3D is usually a way to do it with less printed parts or no printed parts. for example the hopper section looks like a project box with one side removed. then print the funnel and auger section bellow that with motor mount.
I know what you mean. I know a lot of people who, once they obtained a 3d printer, they just went nuts and everything had to be printed. It’s kind of like the guy who only has a hammer. To that guy, every problem looks like a nail. That being said, I think there’s something more appealing about a device that’s designed for a specific purpose. This build might look cleaner and nicer than a similar device built from other components modified to suit this purpose.
Cura says the whole contraption would cost me 4.12€ even accounting for electricity and mistakes in calculating the pla required for the parts this box would cost me less than 5€, it’s difficult to find a box that cheap, and then you have to adapt it to your needs with supports, cuts or… printed parts. Just leaving the house to buy the box would cost 1-2€ in transports, i could buy it from china at half the price and get the free delivery but then there is a 1 month wait for anything to get past customs in this country and i would still have to adapt the box.
4€ buys you a box from Hammond and there is a lot to choose, for 4€ you can even get a die cast alu one!
Except you have to cut and machine that project box, when you could just start the print and go out for coffee or work on the rest of the project.
Use logic.
Use said box and just print the lid/funnel, I didn’t say it was a finished product..
Or return from home just to see half of a print and a clogged nozzle lol.
Why print the auger when you can buy an off the shelf drill bit for probably cheaper than you can print it for and not have to super glue it in place?
I’d alter the code to avoid the initial feeding when first powered on. Ever had a power disruption where the power goes off then back on multiple times? Some aquariums have very little tolerance for excess food, and can be wrecked in a hurry. Missed or delayed feedings are much better tolerated.
That would be a great update. Something as simple as a button press for the initial feeding, then a delay of 8 hours for the second feeding.An indicator LED can also be added on to let you know if the power has gone out while you are away. Light on at boot, light off on first feeding and stays off through the second feeding. When you get home, if the LED is on, there has been a power cycle.
How about a continuous feeding ? Instead of a servo, use a small stepper connected to the auger, and every so many seconds, rotate it by one step.
Interesting idea. I’ve rarely seen it done that way, and I’m not certain, but there’s probably a good reason why. Some thoughts:
1) It might be possible some smarter fish learn to remain clustered around the feeder, waiting for the next bit of food to fall. They’d get an unfair share.
2) Faster, more aggressive fish would also have an unfair advantage, able to eat everything before slower fish get any.
3) Food would be dispensed while they’re sleeping. (At least some of my fish sleep.) If flake food is on the menu, it’s so thin and processed that several water-soluble vitamins and minerals leech out significantly in just minutes; flake is best eaten ASAP.
Such a setup might suffice for a vacation feeder, but I don’t think I’d rely on it long-term.
The millis() function overflows after about a month or so. As such, this feeder will stop functioning at this time. It would be much better to set some EEPROM values, pull down the reset pin, and then continue going based on those values. That way it can run for years.
If you just do millis-foousing uint64_t for foo the overflow is a non issue.
The rest:
If you want to keep time just throw in an RTC!
..and the RTC will probably have a 1 second clock signal coming out of it you can feed into a divider.
Of course RTCs have alarms, and some can have the clock output set to any interval you like, even 8 hours.
Now you can make the whole thing battery powered, and wait for the realisation to kick in that you’ve just re-invented the garden watering timer.
How long is the EEPROM good for though?