一种基于压力波通讯的控制系统的制作方法

文档序号:33123190发布日期:2023-02-01 04:23阅读:36来源:国知局
一种基于压力波通讯的控制系统的制作方法

1.本发明涉及电子设备相关技术领域,具体为一种基于压力波通讯的控制系统。


背景技术:

2.根据油田钻井技术的发展,井上人员需要对井下设备进行调整控制,这就需要井下工具可以接收井上设备的指令并做出相应的动作。因此对井下工具的数据通讯提出了要求。
3.在油田开发过程中,一般井深多数会达到几百米,甚至会达到几千米,采用电缆方式进行数据通讯,所需电缆要几千米长,同时还要配备专用的电缆绞线车,在现场连接使用相对困难,借用井下循环泥浆进行通讯,极大的减少了现场设备数量,简化了井上与井下的通讯难度。
4.根据井下泥浆压力受干扰严重,钻杆振动造成杂波干扰等,采用了方波通讯,数学模糊算法处理方式滤除干扰。


技术实现要素:

5.为解决现有技术存在的缺陷,本发明提供一种基于压力波通讯的控制系统。
6.为了解决上述技术问题,本发明提供了如下的技术方案:一种基于压力波通讯的控制系统,所述系统包括液压传感器、压力波采集模块、滤波处理模块、信号解析模块、输出控制模块、电机驱动器a、电机a、丝杆、电机驱动器b、电机b、液压泵,液压传感器、压力波采集模块、滤波处理模块、信号解析模块依次电连接,且信号解析模块的输出端均与输出控制模块的输入端连接,所述输出控制模块分别通过电机驱动器a、电机驱动器b与电机a、电机b连接,其中;压力波采集模块用于实时对液压传感器的数据进行电压数据采集,此采集通过ad转换模式,将模拟量转换成数字量传输给滤波处理模块,滤波处理模块将波形数据发送给信号解析模块解析出电机a、电机b的控制命令,由输出控制模块通过电机驱动器a、电机驱动器b对电机a、电机b进行控制。
7.具体的,所述滤波处理模块包含短时间单组采样滤波和长时间多组采样滤波两种模式,其中:单组采样滤波使用数学期望求得均方根值,剔除掉偏差大于倍均方值的数据,取其他数据的平均值作为采集值;多组采样滤波采用多组数据从小到大排列后,去除最小的五组数据和最大的五组数据,其他数据进行差值计算,超过规定数值后认为取样成功,超过规定个数的差值后认为方波出现,从而认定采样成功。
8.具体的,所述液压传感器用于泥浆的压力检测。
9.具体的,所述滤波处理模块具体使用了滤波处理机制和信号编码机制。
10.具体的,所述的滤波处理机制为使用了数学模糊算法滤除数据中的干扰项。
11.具体的,所述的压力波采集模块使用了数学期望方式进行了ad采集校对,具体使用了数学期望滤波算法。
12.具体的,所述的输出控制模块还连接有电机电流采集模块a、电机电流采集模块b,所述的电机电流采集模块a、电机电流采集模块b分别与所述电机a、电机b所在的电路串联。
13.本发明的有益效果是:1、该种基于压力波通讯的控制系统,可以省略掉相应的通讯电缆,不再需要繁琐的现场电缆铺设过程,使井上井下通讯更加方便。
14.2、该种基于压力波通讯的控制系统,可以对脉冲编码进行编码波形控制,可增加或者减少脉冲周期,从而减慢或者加快通讯速率。
15.3、该种基于压力波通讯的控制系统,通过pcb板采用tg280材料耐高温玻璃纤维板制作而成,可以对pcb板和pcb板上的电子元件起到很好的散热作用,避免了pcb板和pcb板上的电子元件温度过高对pcb板和pcb板上的电子元件造成损坏的情况,提高了pcb板和pcb板上的电子元件的使用寿命。
附图说明
16.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:图1是本发明一种基于压力波通讯的控制系统的结构示意图;图2是本发明一种基于压力波通讯的控制系统的主控制芯片结构示意图;图中:1、液压传感器;2、压力波采集模块;3、滤波处理模块;4、信号解析模块;5、输出控制模块;6、电机驱动器a;7、电机a;8、电机电流采集模块a;9、丝杆;10、电机驱动器b;11、电机b;12、电机电流采集模块b;13、液压泵。
具体实施方式
17.以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
18.请参阅图1-图2,本发明提供一种技术方案:一种基于压力波通讯的控制系统,所述系统包括液压传感器1、压力波采集模块2、滤波处理模块3、信号解析模块4、输出控制模块5、电机驱动器a6、电机a7、丝杆9、电机驱动器b10、电机b11、液压泵13,液压传感器1、压力波采集模块2、滤波处理模块3、信号解析模块4依次电连接,且信号解析模块4的输出端与输出控制模块5的输入端连接,所述输出控制模块5分别通过电机驱动器a6、电机驱动器b10与电机a7、电机b11连接,其中;压力波采集模块2用于实时对液压传感器1的数据进行电压数据采集,此采集通过ad转换模式,将模拟量转换成数字量传输给滤波处理模块3,滤波处理模块3将波形数据发送给信号解析模块4解析出电机a7、电机b11的控制命令,由输出控制模块5通过电机驱动器a6、电机驱动器b10对电机a7、电机b11进行控制。
19.在本实施例中,控制系统中的处理模块均设置在pcb电路板上,pcb电路板如附图2所示,u1起到电压转换的作用,将+5v电压转换成芯片可接受的+3.3v电压,d1、d2为瞬间抑制二极管,可以有效防止电路中尖峰电流对系统的冲击,起到保护系统的作用;c1、c2为滤
波电容,可以滤除电源电路杂波,使电源更加干净减少杂波干扰;d3、d4、d5为稳压二极管,可以防止输入电压过高造成的mcu芯片损坏,起到保护mcu的作用;q1、q2和相应的电阻组成推挽输出模式,增大了输出能力的同时,隔离了mcu管脚与外设的直接接触,防止mcu管脚损坏;同理,q3和q4,q5和q6也是同样道理;u2为mcu主控芯片,是pcb板卡的核心元器件,压力波采集模块、滤波处理模块、信号解析模块都是在u2芯片上完成,是本系统的核心,决定着本系统的基本功能的实现。
20.pcb板采用tg280材料耐高温玻璃纤维板制作而成,可以对pcb板和pcb板上的电子元件起到很好的散热作用,避免了pcb板和pcb板上的电子元件温度过高对pcb板和pcb板上的电子元件造成损坏的情况,提高了pcb板和pcb板上的电子元件的使用寿命。
21.具体的,所述滤波处理模块3包含短时间单组采样滤波和长时间多组采样滤波两种模式,其中:单组采样滤波使用数学期望求得均方根值,剔除掉偏差大于3倍均方值的数据,取其他数据的平均值作为采集值;多组采样滤波采用多组数据从小到大排列后,去除最小的五组数据和最大的五组数据,其他数据进行差值计算,超过规定数值后认为取样成功,超过规定个数的差值后认为方波出现,从而认定采样成功。
22.具体的,所述液压传感器1用于泥浆的压力检测。
23.具体的,所述滤波处理模块3具体使用了滤波处理机制和信号编码机制。
24.具体的,所述的滤波处理机制为使用了数学模糊算法滤除数据中的干扰项。所述算法软件如下:void data_cmd_deal(void){
ꢀꢀꢀꢀ
char false = 0;
ꢀꢀꢀꢀ
unsigned int adreg = 0;
ꢀꢀꢀꢀ
float advoltage = 0;
ꢀꢀꢀꢀ
float adcmpa = 0;
ꢀꢀꢀꢀ
unsigned char uci = 0;
ꢀꢀꢀꢀ
adc_set_ra2();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//选择泥浆ad采集通道,与地面系统进行数据通信
ꢀꢀꢀꢀ
false = 1;
ꢀꢀꢀꢀ
while(false)
ꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀ
adreg = adc_filter(10,100);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//100ms间隔采集10次,取10次的平均值,1秒内的ad采样平均值
ꢀꢀꢀꢀꢀꢀꢀ
advoltage = (adreg * adcvref)/1024;
ꢀꢀꢀꢀꢀꢀꢀ
adcmpa = advoltage * cmdylconversiontatio;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//采集电压进行数值转换
ꢀꢀꢀꢀꢀꢀꢀ
cmddatabuf1[cmddatabuflen++] = (unsigned char)(adcmpa * 10);//数据转入cmddatabuf1中
ꢀꢀꢀꢀꢀꢀꢀ
if(cmddatabuflen == 240)//最多处理240个数据
ꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
cmddatabuflen = 0;
ꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀ
cmddatabuftimecnt ++;//轮训圈数累加器,每30个周期处理一次数据
ꢀꢀꢀꢀꢀꢀꢀ
if(cmddatabuftimecnt == 30)
ꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
cmddatabuftimecnt = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
memset(cmddatabuf2,0x00,240);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
memcpy(cmddatabuf2,cmddatabuf1,240);//将数据capy,buf1数据转入buf2
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
bubblingsort(cmddatabuf2,240);//排序数据,从低到高进行数据排列
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
for(uci = 5;uci 《 120;uci++)//大数-小数》阈值,数据有效
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
detectionresult = cmddatabuf2[239
ꢀ‑ꢀ
uci]
ꢀ‑ꢀ
cmddatabuf2[uci];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(detectionresult 》 xhdetectiondifferencevalue)//判断是否超过设置阈值
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
detectionresultcnt ++;//超过则计数自加
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(detectionresultcnt 》 xhvalidvalue)//超过连续阈值则信号有效
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
uci = 240;//跳出循环
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
detectionresultflag = 1;//信号有效
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
detectionresultcnt = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
detectionresult = 0;//复位信号运算过程中的过程垃圾
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(detectionresultflag == 1) //如果信号有效
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
correcttimecnt ++; //记录有效时间个数
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(correcttimecnt 》= 2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
correcttimecnt = correcttimecnt + errortimecnt;// 如果信号超过超时阈值则全部复位,没有超过则证明信号有效要加上未超时部分的时间
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
errortimecnt = 0; //
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
errorcntflag = 0; //信号有效复位超时计数
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
else
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
errortimecnt ++; //信号无效进行错误计数
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(errortimecnt 》= errorcntvalue)//超过错误计数阈值
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
errorcntflag = 1; //标记超时状态
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
errortimecnt = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(correcttimecnt 《 cmd1cntvalue)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
correcttimecnt = 0;//信号超时要及时清除正确计数,但命令有效后的超时不能清除
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
detectionresultflag = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(correcttimecnt 》 cmd3cntvalue)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(errorcntflag == 1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
errorcntflag = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
correcttimecnt = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
memset(cmddatabuf1,0x00,240);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
cmddatabuflen = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
down_cmd_deal();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
adc_set_ra2();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
else if(correcttimecnt 》 cmd2cntvalue)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(errorcntflag == 1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
errorcntflag = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
correcttimecnt = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
memset(cmddatabuf1,0x00,240);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
cmddatabuflen = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
stop_cmd_deal();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
adc_set_ra2();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
else if(correcttimecnt 》 cmd1cntvalue)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if(errorcntflag == 1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
errorcntflag = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
correcttimecnt = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
memset(cmddatabuf1,0x00,240);
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
cmddatabuflen = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
start_cmd_deal();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
adc_set_ra2();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}}void bubblingsort(unsigned char *arr, int n) {
ꢀꢀꢀꢀ
unsigned char i, j, temp;
ꢀꢀꢀꢀ
int flag = 0;
ꢀꢀꢀꢀ
for (i = 0; i 《 n; ++i) {
ꢀꢀꢀꢀꢀꢀꢀꢀ
flag = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀ
for (j = 0; j 《 n
ꢀ‑ꢀiꢀ‑ꢀ
1; ++j) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
if (arr[j] 》 arr[j + 1]) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
flag = 1;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
temp = arr[j];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
arr[j] = arr[j + 1];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
arr[j + 1] = temp;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀꢀꢀꢀꢀ
if (flag == 0) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
break;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}}此算法不需要知道所需数据的先后来源,在对所有数据进行从小到大排列后,去除相应的最小值和最大值,从而起到了滤除相应干扰项的作用,根据脉冲波形特征采集方式,使用了其大小差值需成组出现的特征进行波形采样。当滤除干扰项后的所有数据,其对应差值超过阀值的个数大于一定比例后,脉冲波形特征出现,从而认定出现一次脉冲。
[0025]
具体的,所述的压力波采集模块2使用了数学期望方式进行了ad采集校对,具体使用了数学期望滤波算法。算法软件如下:unsigned int adc_filter_sxqw(char cnt,char tim){
ꢀꢀꢀꢀ
int i = 0;
ꢀꢀꢀꢀ
int m=0;
ꢀꢀꢀꢀ
int s[100];
ꢀꢀꢀꢀ
int sxqw=0;
ꢀꢀꢀꢀ
int n=0;
ꢀꢀꢀꢀ
unsigned int sum = 0;
ꢀꢀꢀꢀ
for(i=0;i《cnt;i++)
ꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀ
sum[i] = adc_read();
ꢀꢀꢀꢀꢀꢀꢀꢀ
delay_ms(tim);
ꢀꢀꢀꢀ
} for(i=0;i《cnt;i++)
ꢀꢀꢀꢀ
m=m+sum[i];
ꢀꢀꢀꢀ
m=m/cnt;
ꢀꢀꢀꢀꢀꢀꢀꢀ
//取得平均值 for(i=0;i《cnt;i++)
ꢀꢀꢀꢀ
s[i]=sum[i]-m; //取得各个数据与平均值的偏差
ꢀꢀꢀꢀ
for(i=0;i《cnt;i++)
ꢀꢀꢀꢀ
sxqw=sxqw+s[i]*s[i];
ꢀꢀꢀꢀ
sxqw=sxqw/cnt;
ꢀꢀꢀꢀ
sxqw = sqrt(sxqw);
ꢀꢀꢀꢀ
sxqw=3*sxqw;
ꢀꢀꢀꢀ
for(i=0;i《cnt;i++)
ꢀꢀꢀꢀꢀꢀꢀꢀ
if((s[i]-sxqw)《0)
ꢀꢀꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
m=m+sum[i];
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
n++;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
m=m/n;
ꢀꢀꢀꢀ
return m;}此程序为采集cnt个ad数据,采集间隔为tim毫秒,对采集到的数据取得算术均方根值,去除数据中偏差大于三倍算术均方根值的数据后,取余下数据的平均值作为最终值。
[0026]
具体的,所述的输出控制模块5还连接有电机电流采集模块a8、电机电流采集模块b12,所述的电机电流采集模块a8、电机电流采集模块b12分别与所述电机a7、电机b11所在的电路串联工作原理:液压传感器1负责采集泥浆压力数值并将数据传输给压力波采集模块2,将模拟量转换成数字量传输给滤波处理模块3,滤波处理模块3将波形数据发送给信号解析模块4解析出电机a7、电机b11的控制命令,由输出控制模块5通过电机驱动器a6、电机驱动器b10对电机a7、电机b11进行控制。
[0027]
pcb电路板具体实施如附图2所示,主控芯片采用了pic16f1575芯片,此芯片可以在150度的环境下工作,通过对泥浆压力的ad采样值来得到压力波形,通过内部滤波和信号处理得到相应的控制命令,再通过输出控制模块驱动电机工作。
[0028]
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1