Rock Sample Analyzer

Introduction: Rock Sample Analyzer

Rock Sample Analyser is used to identify and analyse the types of rocks samples using soft hammering vibration technique. It is a novel method in identifying the rock samples. If a meteorite or any unknown rock sample is there, one can estimate the sample using this rock sample analyser. The soft hammering technique will not disturb or damage the sample. Advanced Neuro Fuzzy interpretation technique is applied to identify the samples. Graphical User Interface (GUI) is designed using MATLAB software and the user can see the vibrations obtained a graphical output and the resultant output will be shown in the panel within the fractions of second.

Step 1: Constructing the Mechanical Device

The Dimensions of the mechanical device are as follows

Length X Breadth X Height = 36 cm X 24.2 cm X 32 cm

Length of Sample rod = 24 cm

Hammer Length = 37 cm

Disc Radius = 7.2 cm

Axle lengths = 19.2 cm (2)

The automatic soft hammering mechanical device is to hammer the sample and create vibrations...The vibrations generated are spread over the samples. The vibrations generated are very smooth and will not disturb or damage the sample.

Step 2: Vibration Sensor

3 number of 801S Vibration Sensor Vibration Model Analog Output Adjustable Sensitivity For Arduino Robot Vibration Sensors are used to collect the vibrations...Mean of all the three values are used to analyse the data.

Step 3: Arduino Control and Programming

Arduino will collect the data using the analog pins and convert the data and send it to text file

Arduino Programming

int vib_1 = A0;
int vib_2 = A1; int vib_3 = A2;



pinMode(vib_1, INPUT);

pinMode(vib_2, INPUT);

pinMode(vib_3, INPUT);

Serial.println("LABEL,VIBRATION VALUE");


void loop()

int val1;

int val2;

int val3;

int val;

val1 = analogRead(vib_1);

val2 = analogRead(vib_2);

val3 = analogRead(vib_3);

val = (val1 + val2 + val3)/3;

if (val >= 100)



Serial.print("VIB =");


import processing.serial.*;

Serial mySerial;

PrintWriter output;

void setup()


mySerial = new Serial( this, Serial.list()[0], 9600 );

output = createWriter( "data.txt" ); }

void draw()


if (mySerial.available() > 0 )


String value = mySerial.readString();

if ( value != null )


output.println( value );




void keyPressed()



// Writes the remaining data to the file

output.close(); // Finishes the file

exit(); // Stops the program






Step 4: Neuro Fuzzy Interpretation Graphical User Interface

ANFIS is a combination of
logical fuzzy systems and neural networks. This kind of inference system has the adaptive nature to rely on the situation it trained. Thus it has lot of advantages from learning to validating the output. Takagi-Sugeno fuzzy model is shown in the Figure

As shown in Figure, the ANFIS system consists of 5 layers, layer symbolized by the box is a layer that is adaptive. Meanwhile, symbolized by the circle is fixed. Each output of each layer is symbolized with sequence of nodes and l is the sequence showing the lining. Here is an explanation for each layer, namely:

Layer 1.

Serves to raise the degree of membership

Layer 2

Serves to evoke firing-strength by multiplying each input signal.

Layer 3

Normalize the firing strength

Layer 4

Calculating the output based on the parameters of the rule consequent

Layer 5

Counting the ANFIS output signal by summing all incoming signals will produce

Here the graphical user interface is designed using MATLAB software. Input vibration data is feed into the software using Arduino controller and the corresponding sample will be analysed efficiently using ANFIS interpretation.

Arduino Contest 2019

Participated in the
Arduino Contest 2019

1 Person Made This Project!


  • Puzzles Speed Challenge

    Puzzles Speed Challenge
  • "Can't Touch This" Family Contest

    "Can't Touch This" Family Contest
  • CNC Contest 2020

    CNC Contest 2020



1 year ago

Very interesting, thank you for sharing the details!