热水器用的水流传感器,程序怎么检测它开路和短路故障

热水器用的水流传感器,程序怎么检测它开路和短路故障,第1张

水流传感器本身就是个开关信号,要么通要么断,所以这种传感器本身没有”开路“和”短路“这种故障显示,也没有这种故障存在,程序不需要检测。

对于传感器来说,出现”开路“或”短路“情况的是水温度传感器一类的电阻型的传感器,而不是开关类的传感器。

温度传感器(temperature transducer)是指能感受温度并转换成可用输出信号的传感器。温度传感器是温度测量仪表的核心部分,品种繁多。按测量方式可分为接触式和非接触式两大类,按照传感器材料及电子元件特性分为热电阻和热电偶两类。

自己去看看吧,不要着急。

//

//名称:单片机串口输出ADXL335角度值

//使用单片机:stc12c5a60s2

//供电:电压5v

//晶振:110592m

//X轴->(ADC0)P10

//Y轴->(ADC1)P11

//Z轴->(ADC1)P12

//用pc串口助手显示时,选择字符显示

//参考宏晶网址例程

//

#include "reg51h"

#include "intrinsh"

#include <mathh> //Keil library

#include <stdioh> //Keil library

//#define FOSC 18432000L

#define FOSC 11059200L //晶振110592M

#define BAUD 9600

typedef unsigned char BYTE;

typedef unsigned int WORD;

#define uchar unsigned char

#define uint unsigned int

/Declare SFR associated with the ADC /

sfr AUXR1 = 0XA2;

sfr ADC_CONTR = 0xBC; //ADC control register

sfr ADC_RES = 0xBD; //ADC high 8-bit result register

sfr ADC_RESL = 0xBE;

sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register

sfr P1ASF = 0x9D; //P1 secondary function control register

/Define ADC operation const for ADC_CONTR/

#define ADC_POWER 0x80 //ADC power control bit

#define ADC_FLAG 0x10 //ADC complete flag

#define ADC_START 0x08 //ADC start control bit

#define ADC_SPEEDLL 0x00 //420 clocks

#define ADC_SPEEDL 0x20 //280 clocks

#define ADC_SPEEDH 0x40 //140 clocks

#define ADC_SPEEDHH 0x60 //70 clocks

void InitUart();

void InitADC();

void SendData(BYTE dat);

int GetADCResult(BYTE ch);

void Delay(WORD n);

uchar ge,shi,bai,qian,wan; //显示变量

void conversion(uint temp_data)

{

wan=temp_data/10000+0x30 ;

temp_data=temp_data%10000; //取余运算

qian=temp_data/1000+0x30 ;

temp_data=temp_data%1000; //取余运算

bai=temp_data/100+0x30 ;

temp_data=temp_data%100; //取余运算

shi=temp_data/10+0x30 ;

temp_data=temp_data%10; //取余运算

ge=temp_data+0x30;

}

/----------------------------

Get ADC result

----------------------------/

int GetADCResult(BYTE ch)

{ int AD10bitResult;

ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;

_nop_(); //Must wait before inquiry

_nop_();

_nop_();

_nop_();

while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag

ADC_CONTR &= ~ADC_FLAG; //Close ADC

AD10bitResult=ADC_RES;

AD10bitResult<<=8;

AD10bitResult|=ADC_RESL;

return AD10bitResult; //Return 10BIT ADC result

}

/----------------------------

Initial UART

----------------------------/

void InitUart()

{

SCON = 0x5a; //8 bit data ,no parity bit

TMOD = 0x20; //T1 as 8-bit auto reload

TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate

TR1 = 1; //T1 start running

}

/----------------------------

Initial ADC sfr

----------------------------/

void InitADC()

{

P1ASF = 0xff; //Open 8 channels ADC function

AUXR1=AUXR1|0X04; //ad值左对齐

ADC_RES = 0; //Clear previous result

ADC_CONTR = ADC_POWER | ADC_SPEEDLL;

Delay(2); //ADC power-on and delay

}

/----------------------------

Send one byte data to PC

Input: dat (UART data)

Output:-

----------------------------/

void SendData(BYTE dat)

{

while (!TI); //Wait for the previous data is sent

TI = 0; //Clear TI flag

SBUF = dat; //Send current data

}

/----------------------------

Software delay function

----------------------------/

void Delay(WORD n)

{

WORD x;

while (n--)

{

x = 5000;

while (x--);

}

}

//

void main()

{ int x,y,z;

float Q,T,K,Roll,Pitch;

InitUart(); //Init UART, use to show ADC result

InitADC(); //Init ADC sfr

while (1)

{

x=GetADCResult(0);

y=GetADCResult(1);

z=GetADCResult(2);

// 0-5v 对应 0-1024

// 33v/2 = 165v(0g时候值)

// 165v ->= 338 (AD值即0X0152)

x-=0X0152; //

y-=0X0152;

z-=0X0152;

Q=x;

T=y;

K=z;

Q=-Q;

Roll=(float)(((atan2(K,Q)180)/314159265)+180);

Pitch=(float)(((atan2(K,T)180)/314159265)+180);

conversion(Roll); //横滚角0-360度

//conversion(Pitch); //俯仰角0-360度

SendData(bai);

SendData(shi);

SendData(ge);

SendData(0x0d);

SendData(0);//换行,回车

Delay(30);

}

}

加盖拧盖单元PLC程序的编写需要考虑具体的硬件设备和工作流程,下面是一般的步骤和注意事项:

1 确定I/O点和信号接口:在编写加盖拧盖单元PLC程序之前,需要先确定连接的硬件设备和信号接口。根据设备的输入和输出点,编写相应的程序。

2 确定逻辑流程:在工作流程中,需要确定加盖和拧盖的顺序和步骤。可以通过流程控制语句,如LADDER语言中的IF、ELSE、END_IF、FOR、NEXT等,来控制程序的逻辑流程。

3 编写运动控制程序:对于加盖和拧盖的动作,需要编写相应的运动控制程序。可以使用LADDER语言中的MOV、CMP、INC、DEC、CALC等指令,控制电机的启动、停止、反转等动作。

4 编写传感器检测程序:在加盖和拧盖的过程中,需要检测传感器的信号,判断动作是否完成。可以使用LADDER语言中的LD、AND、OR、NOT等指令,来编写传感器检测的程序。

5 调试程序:在编写完PLC程序之后,需要进行程序的调试和测试。可以通过模拟输入信号和输出信号,来检测程序的正确性和稳定性。

需要注意的是,PLC程序的编写需要遵循一定的规范和标准,比如要保证程序的可读性和可维护性,避免死循环和资源浪费等问题。同时,在编写程序之前,需要对加盖拧盖单元的硬件设备和工作流程进行充分了解和分析,以确保程序的正确性和实用性。

以上就是关于热水器用的水流传感器,程序怎么检测它开路和短路故障全部的内容,包括:热水器用的水流传感器,程序怎么检测它开路和短路故障、Arduino中,温湿度传感器检测温湿度并控制继电器动作,的程序、求基于STC单片机ADXL335角度传感器测角度的C语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9509473.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存