kloon / openbeerfiller Goto Github PK
View Code? Open in Web Editor NEWAn opensource beer filling line microcontroller
License: GNU General Public License v3.0
An opensource beer filling line microcontroller
License: GNU General Public License v3.0
Filled cans remain in the filling area after the process has finished, relying on the movebeerbelt routine to be called on the next start button press, so that the cans are pushed clear.
The only drawback from this approach is to remove the empty/unfilled cans when the production is started up again.
When the filler tubes are raised the volume they displaced while being inserted will need to be topped up.
An idea would be to reopen the filler tubes after x amount of retraction for a short period. We might be in luck here to get away with not doing anything is the beer left in the tube is sufficient to top of the can/bottle as it retracts.
Add support for LCD/LED displays with menu functionality. This will be used for basic configuration and information display.
I recommend implementing a "all stop" feature. This would be a button (you can use the start button for this) to stop machine at any point.
Based on earlier concepts I designed a state machine which will allow the can filler to stop from any state. I'll attached the code here for reference purposes.
The current code utilises a while loop for sensing when a bottle/can has reached its full capacity, the problem with this is that it causes a block in the main program loop which is not ideal.
Using interrupts we can eliminate this while loop block in the main loop allowing for other critical functionality that relies on the main loop to execute flawlessly.
The problem we need to solve is that there's only two interrupt pins on the Uno and we require a lot more to monitor the three filling solenoids as well as a kill switch.
The solution would be to look at ways we can utilise a single pin and attach multiple interrupts and inputs on that pin.
This issue is only present with the Arduino Uno, the ESP8266 supports interrupts on all its digital pins.
Currently, there are still some blocking function calls running that relies on using delay()
for waiting before another function/event fires.
Using mills()
combined with more program states instead of delay()
we can eliminate all these blocking calls ensuring the main loops stays non-blocking.
See this tutorial for more details on millis()
benefit over delay()
and how to use it.
Is this code right,
void triggerFullFillSensor1() {
Serial.println( "Beer fill sensor 1 triggered" );
// Close beer inlet solenoid.
digitalWrite(BEER_INLET_SOL_1, LOW)&&((BEER_FILL_SENSOR_1)<400));
fillSensor1Triggered = true;
}
There seems to be no actual wiring guide or layout for the mosfets.
While the current program works on the ESP8266 it does not utilise the features of the ESP8266 to it's full potential.
Would be great to add conditional support for the ESP8266 for features like a Web Server with monitoring capabilities, utilising interrupts on all digital pins, OTA updates, logging, and many more.
fill cans lower probe, take reading store locally for this run then push up to web service. all done through the LCD and buttons
Since there are three fill sensors we may need to have slightly different trigger levels experimenting with my test setup has shown slightly different levels on each sensor.
Introduce an inductive sensor placed beneath the first can filling tube that can count cans as they pass the sensor. Having a sensor in place we can prevent opening the filling tubes when there are no cans underneath them.
I would like to have support for ESP32 for coding OpenBeerFiller in MicroPython.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.