• 公司地址
    中国,湖北,武汉
  • 联系电话
    188-2431-5557

磁致伸缩位移传感器脉冲发送模块

  单片机按要求从IO端口产生一定频率和一定占空比的脉冲信号,此信号为TTL电平。此脉冲经过脉冲驱动电路后流向波导丝,进而产生一定强度的环形磁场。一般情况下,脉冲的高电平持续时间为2ms为佳。脉冲信号的频率一般和磁致伸缩位移传感器的测量范围相关,往往在0.2-2KHZ之间。此脉冲频率不仅和脉冲波在波导丝上的传输时间、单片机处理速度相关,还受到传感器更新时间的影响。以量程为1米的磁致伸缩位移传感器为例,一般更新时间会设置在1.Oms。由此可推算出此脉冲信号占空比为1:500,而单片机内部只具有8位PWM功能的定时器,不能直接满足要求,故我们采用单片机循环等待配合定时器计时来实现此特定要求脉冲的产生。

  软件中采用磁致伸缩位移传感器单片机内部定时器0来完成脉冲周期的计时。定时器0是单片机内部单通道8位定时器模块,具有10位的时钟预分频器。此外,定时器还能在比较匹配发生时自动清除定时器数据值。其通过寄存器TCCRO和 TCNTO即可完成对定时器的控制。其设置代码如下:

  void TimerO_Init(void)

  {

  TCCRO=0x00;//设置控制寄存器,无时钟源,停止定时器

  TCNTO=TCNTO Num;//对定时器0数据寄存器赋初值

  TIMSK}=(I +0);//允许TimerO溢出中断

  }

  此时启动定时器只需执行以下代码:

  TCCRO=0x04; //定时器256分频,开始发送起始脉冲

  其中,定时器0的时间周期计算公式为:

  T=(256-TCNT0_Num)*256/8000

  高电平持续时间采用空等待延时来实现,考虑到函数调用中压栈和出栈占用存储器的时间,应适量较少延时时间。代码如下:

  void HighLevalTime(void)//2}.s高电平延时

  {

  asm(“nop”);asm{“nop”);asm(“nop”);asm(“nop”);

  asm(“nop”);asm(“nop”);asm(“nop”);rim(“nop”);//空等待延时

  }