Instrumentation Monitoring and Control INST81000 DESIGN AND DEVELOPMENT OF A CONTROL PROGRAM FOR A HEAT SEALING STATION

Dependencies:   mbed C12832 LCD_fonts

Committer:
alejandromontes
Date:
Thu Jul 30 20:58:19 2020 +0000
Revision:
1:fac1f476e7d4
Parent:
0:aab1b8cb4c13
Adjust of Process parameters

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alejandromontes 0:aab1b8cb4c13 1 #include "mbed.h"
alejandromontes 0:aab1b8cb4c13 2 #include "C12832.h"
alejandromontes 0:aab1b8cb4c13 3 #include "Arial12x12.h"
alejandromontes 0:aab1b8cb4c13 4 #include "Arial_9.h"
alejandromontes 0:aab1b8cb4c13 5 #include "Small_7.h"
alejandromontes 0:aab1b8cb4c13 6 #include "Small_6.h"
alejandromontes 0:aab1b8cb4c13 7
alejandromontes 0:aab1b8cb4c13 8 Serial pc(USBTX, USBRX);
alejandromontes 0:aab1b8cb4c13 9 C12832 lcd(p5, p7, p6, p8, p11);
alejandromontes 0:aab1b8cb4c13 10 AnalogIn Pot1(p19);
alejandromontes 0:aab1b8cb4c13 11 AnalogIn Pot2(p20);
alejandromontes 0:aab1b8cb4c13 12 PwmOut spkr(p26);
alejandromontes 0:aab1b8cb4c13 13 PwmOut r (p23);
alejandromontes 0:aab1b8cb4c13 14 PwmOut g (p24);
alejandromontes 0:aab1b8cb4c13 15 PwmOut b (p25);
alejandromontes 0:aab1b8cb4c13 16 BusOut leds(LED1,LED2,LED3,LED4);
alejandromontes 0:aab1b8cb4c13 17 Timer timer1;
alejandromontes 0:aab1b8cb4c13 18 InterruptIn joystickcenter(p14);
alejandromontes 0:aab1b8cb4c13 19 InterruptIn button(p9);
alejandromontes 0:aab1b8cb4c13 20 float force, temperature;
alejandromontes 1:fac1f476e7d4 21 float Process_Force=4700.0; // Process parameters can be modified depending on the product. Force of sealing
alejandromontes 1:fac1f476e7d4 22 float Process_Temperature=230.0; // Process parameters can be modified depending on the product. Temperature of sealing
alejandromontes 1:fac1f476e7d4 23 float Cycle_time=5.0; // Process parameters can be modified depending on the product. Time of sealing.
alejandromontes 0:aab1b8cb4c13 24 int k,v;
alejandromontes 0:aab1b8cb4c13 25
alejandromontes 0:aab1b8cb4c13 26 // HMI function. Interface to control and initiate the system
alejandromontes 0:aab1b8cb4c13 27 void HMI(){
alejandromontes 0:aab1b8cb4c13 28
alejandromontes 0:aab1b8cb4c13 29 pc.printf("HEAT SEAL OPERATION\n TO START OPERATION PRESS 's'\n FOR SET UP PRESS 'p'");
alejandromontes 0:aab1b8cb4c13 30 lcd.locate(10,0);
alejandromontes 0:aab1b8cb4c13 31 lcd.set_font((unsigned char*)Arial12x12);
alejandromontes 0:aab1b8cb4c13 32 lcd.printf("HEAT SEAL\n");
alejandromontes 0:aab1b8cb4c13 33 char c = pc.getc();
alejandromontes 0:aab1b8cb4c13 34
alejandromontes 0:aab1b8cb4c13 35 if(c=='s'){
alejandromontes 0:aab1b8cb4c13 36 timer1.start(); // start timer1 counting
alejandromontes 0:aab1b8cb4c13 37 pc.printf("CYLCE STARTED\n");
alejandromontes 0:aab1b8cb4c13 38 lcd.locate(85,0);
alejandromontes 0:aab1b8cb4c13 39 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 40 lcd.printf("STARTED\n");
alejandromontes 0:aab1b8cb4c13 41 }
alejandromontes 0:aab1b8cb4c13 42 if(c=='p') {
alejandromontes 0:aab1b8cb4c13 43 pc.printf("SYSTEM READY\n");
alejandromontes 0:aab1b8cb4c13 44 lcd.locate(85,0);
alejandromontes 0:aab1b8cb4c13 45 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 46 lcd.printf("READY!!\n");
alejandromontes 0:aab1b8cb4c13 47 }
alejandromontes 0:aab1b8cb4c13 48 }
alejandromontes 0:aab1b8cb4c13 49
alejandromontes 0:aab1b8cb4c13 50 //Cycle within specs
alejandromontes 0:aab1b8cb4c13 51 void good(){
alejandromontes 0:aab1b8cb4c13 52 leds=0xf;
alejandromontes 0:aab1b8cb4c13 53 wait(0.5);
alejandromontes 0:aab1b8cb4c13 54 leds=!leds;
alejandromontes 0:aab1b8cb4c13 55 }
alejandromontes 0:aab1b8cb4c13 56
alejandromontes 0:aab1b8cb4c13 57 //Cycle out of Specs
alejandromontes 0:aab1b8cb4c13 58 void bad(){
alejandromontes 0:aab1b8cb4c13 59 spkr.period(5.0/2000);
alejandromontes 0:aab1b8cb4c13 60 spkr=(0.5);
alejandromontes 0:aab1b8cb4c13 61 wait(0.5);
alejandromontes 0:aab1b8cb4c13 62 spkr=0.0;
alejandromontes 0:aab1b8cb4c13 63 }
alejandromontes 0:aab1b8cb4c13 64
alejandromontes 0:aab1b8cb4c13 65 // Joystick centre button. Activates the Emergency stop. System require Reset after E-stop activated.
alejandromontes 0:aab1b8cb4c13 66 void flip() {
alejandromontes 0:aab1b8cb4c13 67 timer1.stop();
alejandromontes 0:aab1b8cb4c13 68 pc.printf("CYLCE STOPPED\n");
alejandromontes 0:aab1b8cb4c13 69 lcd.locate(85,0);
alejandromontes 0:aab1b8cb4c13 70 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 71 lcd.printf("STOPPED\n");
alejandromontes 0:aab1b8cb4c13 72 r.period(0.001);
alejandromontes 0:aab1b8cb4c13 73 g=1;
alejandromontes 0:aab1b8cb4c13 74 r=0;
alejandromontes 0:aab1b8cb4c13 75 wait(2);
alejandromontes 0:aab1b8cb4c13 76 timer1.reset();
alejandromontes 0:aab1b8cb4c13 77 }
alejandromontes 0:aab1b8cb4c13 78
alejandromontes 0:aab1b8cb4c13 79
alejandromontes 0:aab1b8cb4c13 80 // HEAT SEAL OPERATION
alejandromontes 0:aab1b8cb4c13 81 int main(){
alejandromontes 0:aab1b8cb4c13 82
alejandromontes 0:aab1b8cb4c13 83 k=1;
alejandromontes 0:aab1b8cb4c13 84 v=1;
alejandromontes 0:aab1b8cb4c13 85 HMI();
alejandromontes 0:aab1b8cb4c13 86 joystickcenter.rise(&flip);
alejandromontes 0:aab1b8cb4c13 87 button.mode(PullUp);
alejandromontes 0:aab1b8cb4c13 88 button.rise(&flip);
alejandromontes 0:aab1b8cb4c13 89
alejandromontes 0:aab1b8cb4c13 90 while(1){
alejandromontes 0:aab1b8cb4c13 91
alejandromontes 0:aab1b8cb4c13 92 r=b=1;
alejandromontes 0:aab1b8cb4c13 93 force=Pot1*5500;
alejandromontes 0:aab1b8cb4c13 94 temperature=Pot2*300+30;
alejandromontes 0:aab1b8cb4c13 95 lcd.locate(0,12);
alejandromontes 0:aab1b8cb4c13 96 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 97 lcd.printf("Force=%.1fN\n",force);
alejandromontes 0:aab1b8cb4c13 98 lcd.locate(70,12);
alejandromontes 0:aab1b8cb4c13 99 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 100 lcd.printf("Temp=%.1fC\n",temperature);
alejandromontes 0:aab1b8cb4c13 101
alejandromontes 1:fac1f476e7d4 102 if(force>=Process_Force && temperature>=Process_Temperature && timer1.read()>=Cycle_time){
alejandromontes 0:aab1b8cb4c13 103 good();
alejandromontes 0:aab1b8cb4c13 104 lcd.locate(15,24);
alejandromontes 0:aab1b8cb4c13 105 lcd.set_font((unsigned char*)Small_6);
alejandromontes 0:aab1b8cb4c13 106 lcd.printf("Pass=%d\n",k);
alejandromontes 0:aab1b8cb4c13 107 k++;
alejandromontes 0:aab1b8cb4c13 108 timer1.reset();
alejandromontes 0:aab1b8cb4c13 109 }
alejandromontes 0:aab1b8cb4c13 110 else if(timer1.read()>=5.0){
alejandromontes 0:aab1b8cb4c13 111 bad();
alejandromontes 0:aab1b8cb4c13 112 lcd.locate(70,24);
alejandromontes 0:aab1b8cb4c13 113 lcd.set_font((unsigned char*)Small_6);
alejandromontes 0:aab1b8cb4c13 114 lcd.printf("Fail=%d\n",v);
alejandromontes 0:aab1b8cb4c13 115 v++;
alejandromontes 0:aab1b8cb4c13 116 timer1.reset();
alejandromontes 0:aab1b8cb4c13 117 }
alejandromontes 0:aab1b8cb4c13 118 }
alejandromontes 0:aab1b8cb4c13 119 }