| New file |
| | |
| | | #include "check_out.h" |
| | | #include "gpio.h" |
| | | |
| | | #define LOW_FLOW_CNT 3 |
| | | #define CHECK_PERIOD 250 |
| | | #define WORK_FLOW_PARA 14400 |
| | | |
| | | CHECK_CAL_INF check_cal_g = { |
| | | .device_type = G10 |
| | | }; |
| | | |
| | | uint8_t get_led_para_output_flag(void) |
| | | { |
| | | return check_cal_g.pluse_flag; |
| | | } |
| | | |
| | | |
| | | void set_led_para_output_flag(uint8_t flag) |
| | | { |
| | | check_cal_g.pluse_flag = flag; |
| | | } |
| | | /*½øÈëϵͳ±ê¶¨Ö®Ç°µÄ³õʼ»¯¹¤×÷*/ |
| | | void led_para_output_init(void) |
| | | { |
| | | |
| | | switch (check_cal_g.device_type) |
| | | { |
| | | case G6: check_cal_g.check_fre = 0.005; |
| | | check_cal_g.check_fre_low = 0.001; |
| | | check_cal_g.check_fre_flow = 0.9; |
| | | break; |
| | | case G10: check_cal_g.check_fre = 0.01; |
| | | check_cal_g.check_fre_low = 0.005; |
| | | check_cal_g.check_fre_flow = 1.45; |
| | | break; |
| | | case G16: check_cal_g.check_fre = 0.01; |
| | | check_cal_g.check_fre_low = 0.005; |
| | | check_cal_g.check_fre_flow = 2.3; |
| | | break; |
| | | case G25: check_cal_g.check_fre = 0.01; |
| | | check_cal_g.check_fre_low = 0.005; |
| | | check_cal_g.check_fre_flow = 3.70; |
| | | break; |
| | | |
| | | default: break; |
| | | |
| | | } |
| | | |
| | | |
| | | check_cal_g.check_utotal = 0.1; |
| | | check_cal_g.low_pluse_out = check_cal_g.check_utotal; |
| | | check_cal_g.pluse_flag = 0; |
| | | check_cal_g.low_pluse_cnt = 0; |
| | | check_cal_g.work_period = CHECK_PERIOD; |
| | | LED_LOW; |
| | | //LOWER_PLUSE_LOW |
| | | |
| | | } |
| | | |
| | | |
| | | uint16_t led_pluse_out(double flow) |
| | | { |
| | | uint8_t new_pluse; |
| | | double data_differ; |
| | | double led_data_delay; |
| | | uint16_t time; |
| | | /*µÍƵÂö³åͨ¹ýÒ»¸ö¾ÃµÄÀۼƼǼÔÏȵÄÀÛ¼ÆÁ¿*/ |
| | | |
| | | check_cal_g.uvol = flow; |
| | | check_cal_g.check_utotal = check_cal_g.check_utotal + check_cal_g.uvol;//ÀÛ¼ÆÁ÷Á¿ |
| | | check_cal_g.workConInstantFlow = check_cal_g.uvol * WORK_FLOW_PARA; |
| | | |
| | | /*ÅжÏÁ÷Á¿ÓÃÓÚÉ趨µÆÉÁƵÂÊ,СÁ÷Á¿Çл»*/ |
| | | if(check_cal_g.workConInstantFlow < check_cal_g.check_fre_flow) |
| | | { |
| | | /*Ï໥»º³åÉèÖÃ*/ |
| | | if(check_cal_g.low_pluse_cnt == LOW_FLOW_CNT) |
| | | { |
| | | data_differ = check_cal_g.check_fre_low; |
| | | }else |
| | | { |
| | | check_cal_g.low_pluse_cnt ++; |
| | | } |
| | | }else |
| | | { |
| | | /*Ï໥»º³åÉèÖÃ*/ |
| | | if(check_cal_g.low_pluse_cnt == 0) |
| | | { |
| | | data_differ = check_cal_g.check_fre; |
| | | }else |
| | | { |
| | | check_cal_g.low_pluse_cnt --; |
| | | } |
| | | } |
| | | |
| | | //data_differ = cal_gas_struct_g.check_fre; |
| | | if(check_cal_g.low_pluse_out <= 0) |
| | | { |
| | | check_cal_g.low_pluse_out = check_cal_g.check_utotal; |
| | | } |
| | | |
| | | //Èç¹û¼ÓÆðÀ´ ±ÈËü´ó£¬ÄÇôÌáǰԤ²âÊä³öledµÄÐźš£ |
| | | if((check_cal_g.check_utotal) >= (check_cal_g.low_pluse_out + data_differ)) |
| | | { |
| | | |
| | | if(check_cal_g.uvol > data_differ) //Òì³£Çé¿öÏ·µ»Ø,²»¼Æ±ê¶¨ |
| | | { |
| | | check_cal_g.pluse_flag = 0; |
| | | return 0; |
| | | } |
| | | //Test_101_P |
| | | // if(check_cal_g.pluse_flag == 0) |
| | | { |
| | | led_data_delay = check_cal_g.check_utotal - (check_cal_g.low_pluse_out + data_differ) ; |
| | | led_data_delay = 1 - (led_data_delay / check_cal_g.uvol); |
| | | led_data_delay = check_cal_g.work_period * led_data_delay;//Ô¤²âʱ¼ä¡£ÔÚ´ïµ½¼ÆËãʱ¼äʱÁÁµÆ¡£ |
| | | /*Ô¤²âʱ¼äÊÇ·ñ´ïµ½ÉÁµÆµÄÁ÷Á¿µã¡£*/ |
| | | //Test_001_P |
| | | if(led_data_delay <= 0) |
| | | { |
| | | // Test_011_P |
| | | LED_HIGH; |
| | | delay_ms(35); |
| | | LED_LOW; |
| | | time = 0; |
| | | //Test_011_P |
| | | }else if(led_data_delay < (double) (check_cal_g.work_period - 60)) |
| | | { |
| | | |
| | | |
| | | //Test_111_P |
| | | if(led_data_delay < 2) |
| | | time = 1; |
| | | else |
| | | time = (uint16_t)led_data_delay; |
| | | |
| | | delay_ms(time); |
| | | //Test_100_P |
| | | LED_HIGH; |
| | | delay_ms(35); |
| | | LED_LOW; |
| | | |
| | | }else |
| | | { |
| | | //Test_100_P |
| | | delay_ms(check_cal_g.work_period - 60); |
| | | LED_HIGH; |
| | | delay_ms(35); |
| | | LED_LOW; |
| | | time = check_cal_g.work_period - 60; |
| | | |
| | | } |
| | | //Test_110_P |
| | | check_cal_g.low_pluse_out = check_cal_g.low_pluse_out + data_differ; |
| | | check_cal_g.pluse_flag = 1;//Èç¹ûÕâÒ»¸öÖÜÆÚ´ïµ½ÒªÇóÁË»òÕß³öÏÖ³¬¹ý10L/sÕâÖÖÇé¿öÏȲ»¿¼ÂÇ¡£ |
| | | |
| | | |
| | | } |
| | | |
| | | return (36 + time); |
| | | } |
| | | return 1; |
| | | |
| | | } |
| | | |
| | | |