Monday 19 November 2012

INDUSTRY DAY UniKL BMI

Presentation during the Industry Day.


Nasrul, Yusuf, Akmal
 

PROJECT POSTER

Project Poster for Industry Day.


 

RESULT FROM TESTING

Result

Early Warnng Fault Detection System is a system protection that give early alert SMS when overload happen. when the motor in overload condition, the alert SMS will send to the selected personal. The result is shown below.


The system will startup and reading the velocity of motor until the motor is in overload condition then the GSM will send notification to the selected personal. 


1. The Main Board, Arduino Controller, DC speed controller and Rotary Encoder is in On condition.Motor start rotate.



2. When Overload happen, Main Board is in trip condition and DC Speed Controller will stop but Arduino Controller still On to ready send the notification.



3. Serial Monitor show the overload happen. 



4. GSM send the notification to the Phone.











SYSTEM PROTOTYPE EARLY WARNING FAULT DETECTION SYSTEM

This system will be apply to any industry because the concept is protection and the picture below is the prototype of the system.

 

SYSTEM DESIGN FOR EACH PARTS

Parts of the Early Warning Fault Detection System.


1. Main Board Circuit



2. DC Speed Controller



3. Rotary Encoder Sensor



4. Arduino Controller and GSM Shield

 




PROGRAMMING EARLY WARNING FAULT DETECTION SYSTEM

Coding for Early Warning Fault Detection System.

#include <GSM_Shield.h>
# define LED 13
# define BUTTON 7

GSM gsm;
int error;
int hits = 0;
float wheel_radius = 1;
volatile unsigned int current_time;
long time_interval = 1000; //how often do you want to know velocity (milliseconds)
float velocity; //this is the velocity in length units / time_interval

//**************************************************************************
char number[]="+60166638494";  //Destination number
char text[]="MOTOR OVERLOAD  SYSTEM TRIP  PLEASE CHECKING!!!    sent by GSM Arduino";  //SMS to send
byte type_sms=SMS_UNREAD;      //Type of SMS
byte del_sms=0;                //0: No deleting sms - 1: Deleting SMS
//**************************************************************************
 
void setup ()
{

  Serial.begin(9600);
  attachInterrupt(0, count, CHANGE);
  current_time = millis();
  Serial.println("system startup");
  gsm.TurnOn(9600);          //module power on
  gsm.InitParam(PARAM_SET_1);//configure the module
  gsm.Echo(0);               //enable AT echo
  pinMode (LED, OUTPUT);
  pinMode(BUTTON, INPUT);

}

void loop ()
{

  if ( millis() >= current_time + time_interval)
  {

    velocity = (hits*(wheel_radius * 392.7))/time_interval;//the constant is 2*pi*1000/16
    Serial.println(velocity);
    hits = 0;
    current_time = millis();
   
     if (velocity < 10)
    {

    digitalWrite(LED, HIGH);
    Serial.print("Send SMS to ");
    Serial.println(number);
    error=gsm.SendSMS(number,text);

    }

  }
}

void count()
{

 hits++;

}

PROGRAMMING GSM (EARLY WARNING FAULT DETECTION SYSTEM)

Coding for checking GSM.

#include <GSM_Shield.h>
# define LED 13
# define BUTTON 7

//**************************************************************************
char number[]="+60166638494";  //Destination number
char text[]="testing the GSM    sent by GSM Arduino";  //SMS to send
byte type_sms=SMS_UNREAD;      //Type of SMS
byte del_sms=0;                //0: No deleting sms - 1: Deleting SMS
//**************************************************************************

GSM gsm;
char sms_rx[122]; //Received text SMS
//int inByte=0;    //Number of byte received on serial port
char number_incoming[20];
int call;
int error;
int val = 0;

void setup()
{

  Serial.begin(9600);
  Serial.println("system startup");
  gsm.TurnOn(9600);          //module power on
  gsm.InitParam(PARAM_SET_1);//configure the module 
  gsm.Echo(0);               //enable AT echo
 
  pinMode (LED, OUTPUT);
  pinMode(BUTTON, INPUT);

}


void loop()

char inSerial[5];   
int i=0;
delay(2000);
  
           val = digitalRead(BUTTON);
 
    if (val == HIGH) 
    {

    digitalWrite(LED, HIGH);
    {
       
         Serial.print("Send SMS to ");
         Serial.println(number);
         error=gsm.SendSMS(number,text); 
   
     }
  
     } 

     else 
    {

    digitalWrite(LED, LOW);

    }
   
    if (Serial.available() > 0)
    {            
       
        while (Serial.available() > 0) 
        {

         inSerial[i]=(Serial.read()); //read data 
         i++; 
    
       }

       inSerial[i]='\0';
       Check_Protocol(inSerial);
    }
      


void Check_Protocol(String inStr)
{
  
         Serial.print("Command: ");
         Serial.println(inStr);
      
   Serial.println("Check_Protocol");
 
   //  switch (inStr[0])
   
   delay(1500);
   
   return;

 }
 

PROGRAMMING VELOCITY (EARLY WARNING FAULT DETECTION SYSTEM)

Coding for checking velocity.


int hits = 0;
float wheel_radius = 1;
volatile unsigned int current_time;
long time_interval = 1000; //how often do you want to know velocity (milliseconds)
float velocity; //this is the velocity in length units / time_interval

void setup ()
{

  Serial.begin(9600);
  attachInterrupt(0, count, CHANGE);
  current_time = millis();

}

void loop ()
{

     if ( millis() >= current_time + time_interval)
    {
    
     velocity = (hits*(wheel_radius * 392.7))/time_interval;//the     constant is 2*pi*1000/16
     Serial.println(velocity);
     hits = 0;
     current_time = millis();

  }
}  

void count()
{

 hits++;

}

ROTARY ENCODER SENSOR

Rotary Encoder Sensor is using to measure the speed of the motor by using Arduino Controller






 RE08A is a rotary encoder kit has slotted disc (8 slots) and a simple interface sensor board. Rotary encoder is a sensor or transducer used to convert the data of rotary motion into a series of electrical pulses which is readable by controller. The slotted disc has a 35mm outside diameter with 8 slots that provides 16 transitions.  The optical sensor is used to sense the 16 transitions of the slotted disc. With these transitions, controller is able to recognize the rotary angle of the disc. With this concept, a rotary encoder can be employed in a DC motor shaft for the controller to ‘know’ its current position.  



 This rotary encoder kit has been design with the features of:

  •     Industrial grade PCB with high reliability yet professional outlook.
  •     Simple 3 pin interface (+5, Gnd and Sig).
  •   Included On board green LED as indicator.
  •     Direct connection to microcontroller (internal pull-up to 5V).
  •     Up to 1 KHz (1000 pulse/sec).
  •     Disc size: 35mm (outer diameter) x 3mm(inner diameter)
  •     Sensor board size: 12mm (height) x 35mm (length) x 15mm (width)



Electrical Characteristic
 




 True table in normal operating condition


















  1. Optical sensor at “A” will detect the missing slot  of disc when the disc rotate, further generate pulses at signal pin.
  2. Header pin at “B” is input supply. User should connect 5V (+) to this pin.
  3. Header pin at “C” is ground of 5V supply, or in other words, the negative terminal of supply.
  4. Header pin at “D” is signal output of sensor board. This pin is internally pull-up to 5V, thus no extra component is needed for this sensor to be connected to controller.
  5. LED at “E” is an indicator. This LED will light ON  if the disc does not block the optical sensor.