水流传感器本身就是个开关信号,要么通要么断,所以这种传感器本身没有”开路“和”短路“这种故障显示,也没有这种故障存在,程序不需要检测。
对于传感器来说,出现”开路“或”短路“情况的是水温度传感器一类的电阻型的传感器,而不是开关类的传感器。
温度传感器(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语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)