The Juicer is a wirelessly controlled, programmable juice maker which will mix each ingredient of a recipe to the exact proportions every time.
The Juicer will take a recipe selection serially via either the keyboard or the wireless remote and dispense the juices into the cup below. Force and Photo sensors are incorporated to control the precise pouring. Wireless communication is controlled with two microcontrollers operating at a frequency of 433 MHz. All of this is housed by a big red frame custom made from 4130 steel.
Our initial vision was to have the microcontroller control the opening and closing of three containers. The duration of the opening would simply be timed assuming a constant flow. After further thought, we concluded that this was inadequate and simple feedback was essential for a true working model which we could keep and use in the future. Further, we wanted to challenge ourselves by creating the metal frame entirely from scratch and also incorporate a wireless remote control to the control the Juicer from anywhere with the wireless range.
Our initial consideration and one of the early challenges was coming up with a good inexpensive way of dispense the liquids. Our main concerns were that the containers must hold a lot of juice and that the dispensing mechanism needed to be cheap so we could stay within budget. Ideas ranging from pumps, solenoid valves, stepper motors finally concluded with pull solenoids controlling a modified Poland Springs 2.5 gallon spring water container that was spring loaded and naturally returned back to the closed position.
The software is essentially one giant statemachine that is broken down into smaller ones for the ease of debugging and readability. We begin here with at top level design diagram.
Top Level Code Overview
From the stationary Juicer, the user will have the choice of making a selection, programming a new recipe, or show all the recipes. Each of these second level states will also branch into their own state machines which we will describe more in detail below.
From the remote control, the user will only be allowed to select from the first three recipes in the database. No programming or showing of the database is allowed since we wanted to make the remote compact and thus only mounted three control buttons.
After each command is complete, it will return back to the main menu and await the next selection by the user.
The pouring or opening of the solenoid controlled valves are controlled by the pouring routine. This routine will start with the first container and check the database to see how much to pour. The amount that is poured is determined by the force sensor that is placed below the cup. When that calculated amount is reached, it starts pouring the next container. This is repeated until all three containers are cycled through.
The initial weight of the cup is recorded before each drink is poured. We subtract out the initial weight of the cup so we can measure only the amount of fluids we dispensed. This allows us the versatility to use different cups of varying weights.
One main difficulty encounter in this step was the non linearity of the force sensor. The resistance of the force sensor did not increase linearly with the amount of force applied. This forced us to make a linear interpretation of the output of the force sensor which is not as accurate as we would have liked. Also, the placement location of the cup on the metal platform also changed the force sensors reading introducing yet another variable.
Note that the photo resistor sensor can be placed near the top of the cup to detect if the fluid is at that level. While pouring the drink, if the software detects that there is enough change in light from the photo sensor, it immediately stops the pouring cycle. The photo resistor is currently mounted on the frame and used as an emergency stop button. Simply place your finger over the sensor and pouring will stop.
The show recipe routine simply cycles through the entire database and displays the proportions of each ingredient. This consisted of a simple loop through all of the possible entries.
The programming of new recipes was achieved by taking user inputs from the keyboard. A display shows the user the format in which the program expects the inputs. The user simply enters the proportions of each ingredient.
Since our Juicer is programmable, the database is saved even if the power is switched off. We used the EEPROM feature of the Atmel Mega32 chip for the storing of the recipe data.
Visit Here for more.