Final Project

The idea!!

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.


  • Neat and clean working area
  • 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

  • User-friendly interface
  • The machine is controlled using a mobile app. The volume of the fluid required for the casting is entered by the user.

  • Precise measurement
  • 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

    Weeks Covered

    For completion of this project I have used the skills acquired during the following weeks

  • Week 3: Computer-aided design
  • 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.

  • Designing a slide case for the bottle holder.
  • Designing bottle holder

  • Designing the machine case

  • Designing a case for the LCD display

  • Designing a reducer for the solenoid valve

  • Designing a case for holding the motor in place.

  • Designing case for the solenoid valve

  • Week 4:Computer controlled cutting

  • Setting screws

  • 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.

  • Checking various sizes of the rings 7.8mm, 7.9mm, upto 8.2mm to check tolerances. The ring with 8mm diametre was perfect.

  • Cutting spacers for maintaining the rods horizontal.

  • Bottle holders

  • Week 5 and week 7: Electronic Production and Electronic Designing
  • 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.

  • Week 6: 3D printing
  • 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.

  • Reducer
  • The measurement of the solenoid valve openings were taken precisely using Vernier Caliper and the design was made using solidworks.

  • It was not an exact fit so I had to sand its sides using sand paper
  • Finalised the design for the solenoid valve case

  • Sanding to finish the product

  • Fitting everything together

  • Week 8: Computer controlled machining
  • 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.

  • Mechanical and Machine Designing Week
  • Developing the Mechanical structure and automation.

  • Week 11: Input devices
  • The board has certain inputs. The board is programmed to respond to the inputs.

    Load cell

    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.

    Calibrating the load cell.

    I used the following code for Calibrating the load cell.

    Arduino Code

        #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.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.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.
        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: ");
            char temp =;
            if(temp == '+' || temp == 'a')
              calibration_factor += 10;
            else if(temp == '-' || temp == 'z')
              calibration_factor -= 10;
  • Week 12: Output devices
  • 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

  • Week13: Interfacing and application programming
  • The user interacts with the machine using a mobile app, where he/she can input the values required for the machine.

  • Embedded Programming
  • Programming the board

    Arduino Code

           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()
          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 =;
            material =;
            startSignal =;
            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.setCursor(0, 1);
              if (weight > 15)
                do {
                  //Start Fisrt Solinoid Valve
                  Serial.println("Weight is Gretarthan 5 gram and Starting process");
                  digitalWrite(SV1, HIGH);
                  digitalWrite(SV1, LOW);
                } while (weight == quatity / 2);
                //Move stepper for Second Material 
                digitalWrite(DIR, HIGH);
                for (int i = 0; i <= 400 ; i++)
                  digitalWrite(STP , HIGH);
                  digitalWrite(STP , LOW);
                do {
                  //Start Second Solinoid Valve
                  digitalWrite(SV2, HIGH);
                  digitalWrite(SV2, LOW);
                } while (weight == quatity);
                //Move setpper to home position
                digitalWrite(DIR, LOW); // change Direction
                for (int i = 0; i <= 400 ; i++)
                  digitalWrite(STP , HIGH);
                  digitalWrite(STP , LOW);
            else {
              Serial.println("Blutooth Transmisson faild");
              digitalWrite(led, LOW);
  • The look
  • 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.

    Click here to download resource files.