Logo Manvith Reddy Dayam
Automatic Sweet Maker

Automatic Sweet Maker

August 30, 2021
Table of Contents

Process

process

Parameters Involved

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

parameters

Governing Equations

Conveyor Belt

  1. Equation for length (L)

    (D+d2)×3.14+2c=L(D + \frac{d}{2}) \times 3.14 + 2c = L
  2. Equation for velocity (v):

    v=u+atv = u + a \cdot t

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

  1. Volume displaced per revolution (V_1)

    V1=(D2)2×π×H×NV_1 = \left(\frac{D}{2}\right)^2 \times \pi \times H \times N
  2. Volume displaced per minute (V_2)

    V2=V1×RPM V_2 = V_1 \times RPM

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

  1. Heat energy ( Q )

    Q=mcpdTQ = m \cdot cp \cdot dT

    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)
  2. Heat transfer rate ( P )

    P=mcpdTdtP = \frac{m \cdot cp \cdot dT}{dt}

    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

circuit

Design

design1

mixer

design2

Algorithm

algorithm

Code

dhokla-maker.ino
#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);
}