I have noticed in the lab that during the casting week students usually end up miscalculating the amount of casting fluid required for casting. In this way , the lab inventory is getting wasted. NeatCAST is a machine that can carefully measure and dispense the amount of fluid required for the particular casting.
I made a basic hand drawing of the final look of the machine.
When mixing the fluid the working area usually becomes very dirty. The hands get messy while handling these fluids also mixing the viscous fluids carefully is a tedious process
The machine is controlled using a mobile app. The volume of the fluid required for the casting is entered by the user.
When the amount of fluid required for the casting operation is entered into the machine either in volume or in weight. The machine then precisely dispenses the fluid required by measuring the weight using a load cell
For completion of this project I have used the skills acquired during the following weeks
After making a rough sketch by hand I then coverted the idea into a 3D model using solidworks. With this 3D I got the idea of placing the components in the machine.
Using the knowledge in computer controlled cutting, I cut the vinyl and
Then I used laser cutting machine to cut the 6mm acrilic rings to be used as bearing and also the weighing base was also cut with the machine.Bottle holders
The board was designed using Eagle software. Since the number of components were more , despite my best efforts I could not generate paths using single layer. So i switched to two layer format y using jumper wires. The circuit was complete.
The board for the machine was designed and milled with the elements i learned during the electronic production week and electronics design week.
The case to hold the solenoid in place was made by 3D printing. Also the reducer for the 9mm silicon pipe, the case for motor and the mount for the pulley was also made by 3D printing.
The measurement of the solenoid valve openings were taken precisely using Vernier Caliper and the design was made using solidworks.
Fitting everything together
The whole body of the machine was made using plywood which was cut using CNC router. The design was porcessed and with precise machining the body was made perfectly.
Developing the Mechanical structure and automation.
The board has certain inputs. The board is programmed to respond to the inputs.
A load cell is a transducer that is used to create an electrical signal whose magnitude is directly proportional to the force being measured. For this project I'm using a shearbeam loadcell to measure the weight of the liquid falling into the container.It is rated at 1kg. It is used with an HX 711 amplifier.
I used the following code for Calibrating the load cell.
#include "HX711.h"
#define DOUT 3
#define CLK 2
HX711 scale(DOUT, CLK);
float calibration_factor = -750; //-7050 worked for my 440lb max scale setup
void setup() {
Serial.begin(9600);
Serial.println("HX711 calibration sketch");
Serial.println("Remove all weight from scale");
Serial.println("After readings begin, place known weight on scale");
Serial.println("Press + or a to increase calibration factor");
Serial.println("Press - or z to decrease calibration factor");
scale.set_scale();
scale.tare(); //Reset the scale to 0
long zero_factor = scale.read_average(); //Get a baseline reading
Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale. Useful in permanent scale projects.
Serial.println(zero_factor);
}
void loop() {
scale.set_scale(calibration_factor); //Adjust to this calibration factor
Serial.print("Reading: ");
Serial.print(scale.get_units(), 1);
Serial.print(" g"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
Serial.print(" calibration_factor: ");
Serial.print(calibration_factor);
Serial.println();
if(Serial.available())
{
char temp = Serial.read();
if(temp == '+' || temp == 'a')
calibration_factor += 10;
else if(temp == '-' || temp == 'z')
calibration_factor -= 10;
}
}
The output of the board actuation of a stepper motor, an LCD display and an LED. I used the knowledge gained from week 12 to make it work.
This machine employs and LCD to display some information regarding the fluid that is being
The user interacts with the machine using a mobile app, where he/she can input the values required for the machine.
Programming the board
/*
Author :- Hari Krishnan
EASY Cast Final Project Code
2018 Fab Academy
*/
#include "HX711.h"
#include <LiquidCrystal.h>
#define calibration_factor -950
#define DOUT 4 // changed to D4
#define CLK 9
#define SV1 6 // Solinoid valve 1
#define SV2 5 // Solinoid valve 2
#define DIR 8 //stepper Direction pin
#define STP 7 //stepper Step pin
#define led 3 // In-built led
int quatity , material ; // User defined Quatity and Material
char startSignal ;
HX711 scale(DOUT, CLK);
const int rs = A0 , en = A1, d4 = A2, d5 = A3 , d6 = A4, d7 = A5 ;
LiquidCrystal lcd (rs , en , d4 , d5 , d6 , d7);
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("--NEAT Cast--");
Serial.println("NEAT Cast ");
scale.set_scale(calibration_factor); //This value is obtained by using the SparkFun_HX711_Calibration sketch
scale.tare(); //Assuming there is no weight on the scale at start up, reset the scale to 0
pinMode(SV1 , OUTPUT);
pinMode(SV2 , OUTPUT); // set Solinoid valve as output
pinMode(DIR , OUTPUT);
pinMode(STP , OUTPUT); // set Setpper DIR and STP as Output
pinMode(led, OUTPUT);
}
void loop()
{
lcd.setCursor(0, 1);
lcd.print("Waiting for Input");
if (Serial.available() > 0)
{
quatity = Serial.read();
material = Serial.read();
startSignal = Serial.read();
if (startSignal == 'A') { // Check that user is pressed the START Button
Serial.println("Receved Start Signal and checking wheight");
digitalWrite(led, HIGH);
int weight = scale.get_units();
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("Resin");
if (weight > 15)
{
do {
//Start Fisrt Solinoid Valve
Serial.println("Weight is Gretarthan 5 gram and Starting process");
digitalWrite(SV1, HIGH);
delay(3000);
digitalWrite(SV1, LOW);
delay(3000);
} while (weight == quatity / 2);
//Move stepper for Second Material
digitalWrite(DIR, HIGH);
for (int i = 0; i <= 400 ; i++)
{
digitalWrite(STP , HIGH);
delay(3);
digitalWrite(STP , LOW);
delay(3);
}
do {
//Start Second Solinoid Valve
digitalWrite(SV2, HIGH);
delay(3000);
digitalWrite(SV2, LOW);
delay(3000);
} while (weight == quatity);
//Move setpper to home position
digitalWrite(DIR, LOW); // change Direction
for (int i = 0; i <= 400 ; i++)
{
digitalWrite(STP , HIGH);
delay(3);
digitalWrite(STP , LOW);
delay(3);
}
}
}
else {
Serial.println("Blutooth Transmisson faild");
digitalWrite(led, LOW);
}
}
}
The machine is controlled via a mobile app where the user selects the material intended for casting and chooses the amount of material that is required to be dispensed.
For the demo I am using water. This is where I realised that for using solenoid valve there should be more pressure in the fluid. So demo using resin was a hard choice.