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:18:36 2020 +0000
Revision:
0:aab1b8cb4c13
Child:
1:fac1f476e7d4
Alejandro Montes Instrumentation, Monitoring and Control  PROJECT

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 0:aab1b8cb4c13 21 int k,v;
alejandromontes 0:aab1b8cb4c13 22
alejandromontes 0:aab1b8cb4c13 23 // HMI function. Interface to control and initiate the system
alejandromontes 0:aab1b8cb4c13 24 void HMI(){
alejandromontes 0:aab1b8cb4c13 25
alejandromontes 0:aab1b8cb4c13 26 pc.printf("HEAT SEAL OPERATION\n TO START OPERATION PRESS 's'\n FOR SET UP PRESS 'p'");
alejandromontes 0:aab1b8cb4c13 27 lcd.locate(10,0);
alejandromontes 0:aab1b8cb4c13 28 lcd.set_font((unsigned char*)Arial12x12);
alejandromontes 0:aab1b8cb4c13 29 lcd.printf("HEAT SEAL\n");
alejandromontes 0:aab1b8cb4c13 30 char c = pc.getc();
alejandromontes 0:aab1b8cb4c13 31
alejandromontes 0:aab1b8cb4c13 32 if(c=='s'){
alejandromontes 0:aab1b8cb4c13 33 timer1.start(); // start timer1 counting
alejandromontes 0:aab1b8cb4c13 34 pc.printf("CYLCE STARTED\n");
alejandromontes 0:aab1b8cb4c13 35 lcd.locate(85,0);
alejandromontes 0:aab1b8cb4c13 36 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 37 lcd.printf("STARTED\n");
alejandromontes 0:aab1b8cb4c13 38 }
alejandromontes 0:aab1b8cb4c13 39 if(c=='p') {
alejandromontes 0:aab1b8cb4c13 40 pc.printf("SYSTEM READY\n");
alejandromontes 0:aab1b8cb4c13 41 lcd.locate(85,0);
alejandromontes 0:aab1b8cb4c13 42 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 43 lcd.printf("READY!!\n");
alejandromontes 0:aab1b8cb4c13 44 }
alejandromontes 0:aab1b8cb4c13 45 }
alejandromontes 0:aab1b8cb4c13 46
alejandromontes 0:aab1b8cb4c13 47 //Cycle within specs
alejandromontes 0:aab1b8cb4c13 48 void good(){
alejandromontes 0:aab1b8cb4c13 49 leds=0xf;
alejandromontes 0:aab1b8cb4c13 50 wait(0.5);
alejandromontes 0:aab1b8cb4c13 51 leds=!leds;
alejandromontes 0:aab1b8cb4c13 52 }
alejandromontes 0:aab1b8cb4c13 53
alejandromontes 0:aab1b8cb4c13 54 //Cycle out of Specs
alejandromontes 0:aab1b8cb4c13 55 void bad(){
alejandromontes 0:aab1b8cb4c13 56 spkr.period(5.0/2000);
alejandromontes 0:aab1b8cb4c13 57 spkr=(0.5);
alejandromontes 0:aab1b8cb4c13 58 wait(0.5);
alejandromontes 0:aab1b8cb4c13 59 spkr=0.0;
alejandromontes 0:aab1b8cb4c13 60 }
alejandromontes 0:aab1b8cb4c13 61
alejandromontes 0:aab1b8cb4c13 62 // Joystick centre button. Activates the Emergency stop. System require Reset after E-stop activated.
alejandromontes 0:aab1b8cb4c13 63 void flip() {
alejandromontes 0:aab1b8cb4c13 64 timer1.stop();
alejandromontes 0:aab1b8cb4c13 65 pc.printf("CYLCE STOPPED\n");
alejandromontes 0:aab1b8cb4c13 66 lcd.locate(85,0);
alejandromontes 0:aab1b8cb4c13 67 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 68 lcd.printf("STOPPED\n");
alejandromontes 0:aab1b8cb4c13 69 r.period(0.001);
alejandromontes 0:aab1b8cb4c13 70 g=1;
alejandromontes 0:aab1b8cb4c13 71 r=0;
alejandromontes 0:aab1b8cb4c13 72 wait(2);
alejandromontes 0:aab1b8cb4c13 73 timer1.reset();
alejandromontes 0:aab1b8cb4c13 74 }
alejandromontes 0:aab1b8cb4c13 75
alejandromontes 0:aab1b8cb4c13 76
alejandromontes 0:aab1b8cb4c13 77 // HEAT SEAL OPERATION
alejandromontes 0:aab1b8cb4c13 78 int main(){
alejandromontes 0:aab1b8cb4c13 79
alejandromontes 0:aab1b8cb4c13 80 k=1;
alejandromontes 0:aab1b8cb4c13 81 v=1;
alejandromontes 0:aab1b8cb4c13 82 HMI();
alejandromontes 0:aab1b8cb4c13 83 joystickcenter.rise(&flip);
alejandromontes 0:aab1b8cb4c13 84 button.mode(PullUp);
alejandromontes 0:aab1b8cb4c13 85 button.rise(&flip);
alejandromontes 0:aab1b8cb4c13 86
alejandromontes 0:aab1b8cb4c13 87 while(1){
alejandromontes 0:aab1b8cb4c13 88
alejandromontes 0:aab1b8cb4c13 89 r=b=1;
alejandromontes 0:aab1b8cb4c13 90 force=Pot1*5500;
alejandromontes 0:aab1b8cb4c13 91 temperature=Pot2*300+30;
alejandromontes 0:aab1b8cb4c13 92 lcd.locate(0,12);
alejandromontes 0:aab1b8cb4c13 93 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 94 lcd.printf("Force=%.1fN\n",force);
alejandromontes 0:aab1b8cb4c13 95 lcd.locate(70,12);
alejandromontes 0:aab1b8cb4c13 96 lcd.set_font((unsigned char*)Small_7);
alejandromontes 0:aab1b8cb4c13 97 lcd.printf("Temp=%.1fC\n",temperature);
alejandromontes 0:aab1b8cb4c13 98
alejandromontes 0:aab1b8cb4c13 99 if(force>=4700.0 && temperature>=230.0 && timer1.read()>=5.0){
alejandromontes 0:aab1b8cb4c13 100 good();
alejandromontes 0:aab1b8cb4c13 101 lcd.locate(15,24);
alejandromontes 0:aab1b8cb4c13 102 lcd.set_font((unsigned char*)Small_6);
alejandromontes 0:aab1b8cb4c13 103 lcd.printf("Pass=%d\n",k);
alejandromontes 0:aab1b8cb4c13 104 k++;
alejandromontes 0:aab1b8cb4c13 105 timer1.reset();
alejandromontes 0:aab1b8cb4c13 106 }
alejandromontes 0:aab1b8cb4c13 107 else if(timer1.read()>=5.0){
alejandromontes 0:aab1b8cb4c13 108 bad();
alejandromontes 0:aab1b8cb4c13 109 lcd.locate(70,24);
alejandromontes 0:aab1b8cb4c13 110 lcd.set_font((unsigned char*)Small_6);
alejandromontes 0:aab1b8cb4c13 111 lcd.printf("Fail=%d\n",v);
alejandromontes 0:aab1b8cb4c13 112 v++;
alejandromontes 0:aab1b8cb4c13 113 timer1.reset();
alejandromontes 0:aab1b8cb4c13 114 }
alejandromontes 0:aab1b8cb4c13 115 }
alejandromontes 0:aab1b8cb4c13 116 }