For our group project, we decided to design a spice mixer! Arabic food is considered spicy, if you want to learn how to prepare any dish you have to master mixing the right amount of spices and the right types! this machine does all the mixing automataically! we programed it to do one dish recipe as a start but ideally we hope that one day we can have a list of recipes that our machine can follow and prepare.
Planning
We started to look on the available spice mixers in the market, we noticed most of them are for industrial using with large sizes, so we planned to make it compact as possible, so it could be used in every house.
We planned to have at least 4 types of spies that are used on most dishes, with main 3 dishes, each dish has a certain push button, for example if one needs dish number 1, he had to push on the specified push button then the machine will make the spice mix of that dish.
The main features of the machine are:
1. Linear system to make the bowel slides under the spice dispensers.
2. Dispense system.
3. Electronics.
4. Integration system(frame).
After dividing the components it was easy for us to divide the tasks so we can work in parallel to each other.
1- After dividing the components it was easy for us to divide the tasks so we can work in parallel to each other.
2- Dispensers and dispense systems require design and 3D printing. this task was given to Mohammad Shuqwara(me) and Ahmad Jaara.
3- Electronics design and integration system design was given to Rasha Khalifeh.
4- production of the integration system was given to Ismael Qashou.
5- Soldering and asembling of electronics was given to Lina Hudaib.
6- Video and presentation was done by Rasha Khalifeh.
Integration system (frame) - Rasha's Part
As a bigginer with fusion360, it wasn’t easy to design the frame. At first I made a 2D frame to cut with the laser, after asembeling it, we decided on few changes and i designed my frame accordingly.
I drew the first frame in our systems integration box with the hinges that will be press fitted into the side elements.
I copied my frame to create two containers, one where the linear movement and dispensers will be placed and second where motors, PCBs and wires will be hiding. I changed the opening to suit our needs.
Modify > move > choose make a copy and choose distance. I measured our linear system and dispensers before deciding on the distance.
Now here is the part I learned after multiple trials to design the frame.
make a surface interlocking with hinges you created, from Modify > combine > cut > choose targeted object and tool object, the most important thing is to press on keep tool now your new surface is purforated from the exact same place your hinges are located! I manually made those openings bigger with .05mm from each side to make it easier to press and fit all components together
I repeat this with multiple surfaces, the upper, the side and the lower. I then made dispenser openings.
I uploaded all parts designed by my colleagues and added the glass dispensers.
Below is the final design.
Image below shows Spice Mixer machine after assembling of all parts: dispensers, linear movement, motors and frame.
Circuit Design - Rasha's Part
We decided to use stepper motors since we need to count our steps and make our mixing plate stop at certain places. In my circuit I need the following:
1- Stepper motors.
2- Stepper drivers.
3- Power supply.
4- ESP32 do it microcontroller.
One PCB connected to motors and power supply only.
Six PCBs connected to stepper drivers, resistors, and power supply.
As you can see we only had through-hole resistors at the lab so we used a th footprint. we made sure there is no short using the multimeter and i put double sided tape on the bottom before soldering so the resistor wouldn’t move!
Dispensing - Mohammad & Ahmad's part
Starting with this part was a bot challenging, so first we divided it into the following parts:
1- Cone.
2- Archimedes' screw.
3- Archimedes' screw housing.
4- The ring
5- Coupler.
For the cone shape we used revolve command to make it, we also added the key feature which will be used to fix the housing of the Archimedes' screw, also we add the rip to prevent the leakage of the powder during dispensing.
Next part was the Archimedes' screw was made also by sweep command in surface tap on a cylinder that we already made:
We made the Archimedes' screw housing with opening to dispense the spices, and cap so it will be no leakage.
We also made a sealing piece so we made sure all spice dispensed will get in with no leakage:
This part was tricky a bit, the ring supposed to be will connected to the jar with no leakage, we take the original cap of the and tried to revers engineer it, after a lot of trials we managed to make a good tooths profile that fits the jars tooths.
After we test it we attached the ring to the cone and combined them
Last part is the coupling between the motor shaft and the Archimedes' screw, we designed two pieces they will be attached to the shafts by screws
After we designed all parts, we will 3D print them, all fabricated parts are in the following settings:
1- Layer Height:0.2mm.
2- Infill percentage: 50%
3- Adhesion: Brim(5mm) diameter.
4- Print speed: 60 mm/s
5- First layer speed& Brim speed: 30 mm/s
6- Build plate temperature: 60C
7- With support.
Assembling all components:
Final Test:
Linear System - Lina's part
The objective of the linear system is to go back and forth, and stop under the each dispenser for a set of time to collect the spices, first we go through the design first and on fusion 360.
This plate will move in a straight line and stop under the desired spice, then continue moving.
We need three parts for this mechanism. The first part will be the moving component, on which we will place the plate. This part will move along the axis, and to achieve this movement, I will use a screw and its nut.
To ensure that the plate moves in a straight line, we will use two rods and two linear bearings to reduce friction between the part and the rods.
For the motor component, we plan to use a stepper motor to rotate the screw, which will cause movement in the plate. To connect the motor shaft with the screw, we originally intended to use a rigid coupler, but if we have a flexible coupler we would use it instead. This will allow for some flexibility in alignment.
On the other side, where the block bearing is located, it will assist with aligning the system. we have installed two limit switches on either side. The limit switch is used to provide a signal to stop, start the operation of a motor when an object reaches a specific position.
Coding
We list the two codes, one for the linear system and the other for the dispensing system:
First we tested the linear system through this code:
int ml_pin_step = 15;
int ml_pin_dir =2;
int dir = 0;
int sw_start_pin = 17;
int sw_end_pin = 4;
void setup() {
pinMode(ml_pin_step, OUTPUT);
pinMode(ml_pin_dir, OUTPUT);
pinMode(sw_start_pin, INPUT_PULLUP);
pinMode(sw_end_pin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
if(digitalRead(sw_start_pin) == 0){
dir = LOW; //forward
delay(100);
}
if(digitalRead(sw_end_pin) == 0){
dir = HIGH; //back
delay(5000);
}
Serial.println(dir);
digitalWrite(ml_pin_dir, dir); //back
int time = 2100;
digitalWrite(ml_pin_step, HIGH);
delayMicroseconds(time);
digitalWrite(ml_pin_step, LOW);
delayMicroseconds(time);
}
This code controls a linear system in the Spice mixer. It uses a motor with step and direction control, along with limit switches to detect the start and end positions of the linear system. The code continuously checks the status of the limit switches. If the start switch is pressed, it sets the motor direction to move forward. If the end switch is pressed, it sets the motor direction to move backward with a delay of 5 seconds. The motor direction is then written to the corresponding pin. The code generates step pulses at a specific time interval to drive the motor, determining its speed and movement. The motor direction is also outputted through the serial monitor. so in general the code provides control over the linear system's motion by monitoring the limit switches and controlling the motor accordingly.
The integrated code for all systems:
//Pins diclirtion
#define LinearMotorDir 2
#define LinearMotorStep 15
//******************//
#define LimitSwich1 16
#define LimitSwich2 17
//******************//
#define Dis1Dir 14
#define Dis1Step 13
#define Dis2Dir 26
#define Dis2Step 27
#define Dis3Dir 33
#define Dis3Step 25
#define Dis4Dir 21
#define Dis4Step 19
#define Dis5Dir 18
#define Dis5Step 5
//******************//
#define PushButtonModeM 4
#define PushButtonModeK 22
#define PushButtonModeR 23
//******************//
#define StepsDelayUS 1000
#define IntervalDelaymS 3000
//******************//
bool LimitSwich1State = 0;
bool LimitSwich2State = 0;
//******************//
unsigned int Dis1M=10;
unsigned int Dis1K=10;
unsigned int Dis1R=10;
//******************//
unsigned int Dis2M=10;
unsigned int Dis2K=10;
unsigned int Dis2R=10;
//******************//
unsigned int Dis3M=10;
unsigned int Dis3K=10;
unsigned int Dis3R=10;
//******************//
unsigned int Dis4M=10;
unsigned int Dis4K=10;
unsigned int Dis4R=10;
//******************//
unsigned int Dis5M=10;
unsigned int Dis5K=10;
unsigned int Dis5R=10;
//******************//
void SetHome(){
digitalWrite(LinearMotorDir,HIGH);
while(digitalRead(LimitSwich1)){
digitalWrite(LinearMotorDir,HIGH);
delayMicroseconds(StepsDelayUS);
digitalWrite(LinearMotorDir,LOW);
}
digitalWrite(LinearMotorDir,LOW);
}
void setup() {
pinMode(LinearMotorStep,OUTPUT);
pinMode(LinearMotorDir,OUTPUT);
pinMode(Dis1Step,OUTPUT);
pinMode(Dis1Dir,OUTPUT);
pinMode(Dis2Step,OUTPUT);
pinMode(Dis2Dir,OUTPUT);
pinMode(Dis3Step,OUTPUT);
pinMode(Dis3Dir,OUTPUT);
pinMode(Dis4Step,OUTPUT);
pinMode(Dis4Dir,OUTPUT);
pinMode(Dis5Step,OUTPUT);
pinMode(Dis5Dir,OUTPUT);
//******************//
pinMode(PushButtonModeM,INPUT);
pinMode(PushButtonModeK,INPUT);
pinMode(PushButtonModeR,INPUT);
pinMode(LimitSwich1,INPUT);
pinMode(LimitSwich2,INPUT);
}
void loop() {
SetHome();
if(digitalRead(PushButtonModeM)==HIGH){
SetHome();
Maqloba();
}
else if (digitalRead(PushButtonModeK)==HIGH){
SetHome();
Kabsa();
}
else if (digitalRead(PushButtonModeR)==HIGH){
SetHome();
Rice();
}
}
The culmination of the Fab Academy project is the integration phase, where all components and systems come together to form a fully functional spice mixer. This innovative device features a series of dispensers designed to add a variety of spices onto a plate that moves along a horizontal track. The precise movement of the plate is achieved through a combination of motors and screws, carefully controlled by a custom-designed PCB board. This PCB board acts as the central control unit, coordinating the actions of the motors and ensuring precise and accurate dispensing of spices. The integration of the PCB board enhances the automation and efficiency of the spice mixer, providing a seamless and user-friendly experience.
In terms of power supply, the spice mixer incorporates a direct electric power system to cater to the requirements of the multiple DC motors. This direct electric power configuration ensures a steady and reliable source of power to drive the motors responsible for the plate's movement and the functioning of the dispensers. By utilizing a direct electric power supply, the spice mixer achieves consistent performance and eliminates the need for intermediate power conversion, maximizing efficiency and minimizing power losses. This robust power setup enhances the overall functionality and responsiveness of the spice mixer, allowing for smooth operation and precise control of the dispensing process.
Conclusion:
In summary, the Spice Mixer involved designing a compact spice mixer for home use. we divided the tasks among us and successfully executed our respective parts. we designed and 3D printed components for the dispensing system, created a frame using Fusion360, developed circuit designs for motor control, and assembled all the parts together. We also wrote code to control the linear system's movement and integrate it with the dispensing system. The result was a functional Spice Mixer machine that could accurately dispense spices for specific recipes. The project showcased how the team collaborates and put efforts to manage combine mechanical, electronic, and programming skills to create an automated spice mixing machine.
In the future, maybe we can work on a recipe database, adjustable spice intensity, smartphone integration, voice command functionality, smart ingredient detection, multi-language support, nutritional information display, simplified cleaning, cloud syncing and sharing, and expandable spice dispensers.
we would like to extend our sincere appreciation and thanks to our instructor, Emma. Her guidance, expertise, and support have been invaluable throughout our Spice Mixer project. Her dedication to teaching, prompt assistance, and valuable feedback have significantly contributed to our success. We are grateful for the knowledge and skills we have gained under her mentorship. Emma's passion for the subject and commitment to our learning have inspired us to excel. We are truly thankful for her exceptional instruction and the impact she has had on our project.
View from google map