Process

Parameters Involved
- Estimate time to steam batter = 30 min
- Speed of conveyor belt = 1m/s
- Dimensions of mould plates for batter = 40cm40cm8cm (lbh)

Governing Equations
Conveyor Belt
-
Equation for length (L)
-
Equation for velocity (v):
Definitions:
- (D) = diameter of roller
- (c) = center-to-center distance (distance between centers of rollers)
- (L) = length of conveyor belt
- (v) = velocity of conveyor belt
- (a) = acceleration of conveyor belt
- (t) = time taken for moving the plate
Mixer
-
Volume displaced per revolution (V_1)
-
Volume displaced per minute (V_2)
Definitions:
- (D) = blade diameter
- (H) = blade height
- (N) = number of blades
- (RPM) = revolutions per minute (shaft speed)
- (V_1) = volume displaced per revolution
- (V_2) = volume displaced per minute
- (G) = gallons displaced per minute
Steaming Equation
-
Heat energy ( Q )
Definitions:
- Q = quantity of energy or heat (kJ)
- m = mass of substance (kg)
- cp = specific heat of substance (kJ/kg °C) — material properties and heat capacities for common materials
- dT = temperature rise of substance (°C)
-
Heat transfer rate ( P )
Definitions:
- P = mean heat transfer rate or power (kW (kJ/s))
- m = mass of the product (kg)
- cp = specific heat of the product (kJ/kg °C) — material properties and heat capacities for common materials
- dT = change in temperature of the fluid (°C)
- t = total time over which the heating process occurs (seconds)
Components
- Load sensor - SparkFun HX711 with 5Kg Load cell
- Servo motor - Metal Gear Servo - MG995
- Servo motor - Metal Gear Servo - MG995
- L298N Motor Driver with Dual Micro DC Motors (Geared)
- Ultrasonic Sensor - HC-SR04
- PA-14 - Mini Linear Actuator
- Lithium Polymer Battery 7.4v
- DC Motor - Hobby Motor Gear
- RTC - Real Time Clock
- Breadboard
- Arduino MEGA
- Toggle Switch SPDT
Circuit

Design



Algorithm

Code
#include "HX711.h"
#include <Servo.h>
#define calibration_factor -7050.0
#define loadcell_dout_pin x
#define loadcell_sck_pin y
HX711 scale;
Servo servo;
long duration;
float dist=11;
int motorPin =10;
int motor1pin1 = 1;
int motor1pin2 = 12;
int motor2pin1 = 2;
int motor2pin2 = 9;
int uss1Tpin = 3;
int uss1Epin = 4;
int uss2Tpin = 5;
int uss2Epin = 6;
int pos = 0;
int servoPin = 8;
// Dual motor move left
void dualMotorMoveLeft() {
digitalWrite(motor1pin1, HIGH);
digitalWrite(motor1pin2, LOW);
digitalWrite(motor2pin1, HIGH);
digitalWrite(motor2pin2, LOW);
}
// Dual motor move right
void dualMotorMoveRight() {
digitalWrite(motor1pin1, LOW);
digitalWrite(motor1pin2, HIGH);
digitalWrite(motor2pin1, LOW);
digitalWrite(motor2pin2, HIGH);
}
// Dual motor stop
void dualMotorStop() {
digitalWrite(motor1pin1, LOW);
digitalWrite(motor1pin2, LOW);
digitalWrite(motor2pin1, LOW);
digitalWrite(motor2pin2, LOW);
}
// Ultrasonic sensor function
void uss(int ussTpin, int ussEpin){
digitalWrite(ussTpin, LOW);
delayMicroseconds(5);
digitalWrite(ussTpin, HIGH);
delayMicroseconds(10);
digitalWrite(ussTpin, LOW);
duration=pulseIn(ussEpin,HIGH);
dist=duration/60;
delay(100);
}
// Servo open
void servopen(){
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
delay(15);
}
}
// Servo close
void servclose(){
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15);
}
}
void setup() {
Serial.begin(9600);
Serial.println("Starting weight measurement");
scale.begin(loadcell_dout_pin, loadcell_sck_pin);
scale.set_scale(calibration_factor);
scale.tare();
pinMode(motorPin, OUTPUT);
pinMode(motor1pin1, OUTPUT);
pinMode(motor1pin2, OUTPUT);
pinMode(motor2pin1, OUTPUT);
pinMode(motor2pin2, OUTPUT);
pinMode(uss1Tpin, OUTPUT); // trigger pin in USS
pinMode(uss1Epin, INPUT); // echo pin in USS
servo.attach(servoPin); // servo motor pin
}
void loop() {
digitalWrite(motorPin,HIGH);
if(scale.get_units() > 12){
digitalWrite(motorPin, LOW);
Serial.println("Mixer blade has stopped, weight is reached.");
}
delay(3000);
Serial.println("Starting uss");
delay(1000);
dualMotorMoveLeft();
while(dist > 1000){
uss(uss1Tpin,uss1Epin); // moves the motor
}
dualMotorStop();
delay(1000);
servopen();
dualMotorMoveLeft();
while(dist > 500){
uss(uss1Tpin,uss1Epin);
}
dualMotorStop();
servclose();
Serial.println("Sweet is inside the steamer...");
delay(1800000); // steamer for 30 min
servopen();
dualMotorMoveRight();
while(dist > 100){
uss(uss2Tpin,uss2Epin);
}
dualMotorStop();
delay(10000);
}