利用MAXQ7667確定超聲傳感器的諧振頻率和阻尼特性
詳細(xì)圖片(PDF, 325kB)
圖5. 輸出曲線圖示例
附錄A. 軟件例程
MAXQ7667傳感器校準(zhǔn)文件
// This routine measures the transducer damping at the specified frequency (PLLfreq).
// The system timer is used to measure when the LPF output (LPFD) has dropped to 1/2 the peak value.
// This is the settling time that will be used later when doing the frequency sweep.
unsigned damping_half_time (unsigned PLLfreq, unsigned pulse_width)
{
unsigned short i;
unsigned short peak = 0;
unsigned short half_peak = 0;
unsigned short temp = 0;
SCNT_bit.STIME = 0; // Make sure system timer is off.
STIM = 0; // Clear the system timer.
SCNT_bit.STDIV = 4; // Set system timer prescale divider to 16 (1μs per cycle).
PLLF_bit.PLLF = PLLfreq; // Set the PLL frequency.
BPH = pulse_width; // Pulse width = BPH/(receive frequency * 400) when BDIV = 0xC.
usWaitTimer2(10000); // Let the PLL settle for 10ms.
SCNT_bit.STIME = 1; // Start the system timer.
BPH_bit .BSTT = 1; // Send a burst.
usWaitTimer2(50); // Wait for LPF to partially settle.
RunTimer0_us(20); // Start timer # 1 with a reload time of every 20μs.
for (i = 0; i 200; i++)
{
temp = LPFD; // Read the output of the lowpass filter.
if (temp > 0x2000 temp > peak) {peak = temp;} // Save the peak value if it is greater than 2000.
if (temp peak/2 half_peak == 0) // If LPFD is less than half the peak value and the half peak time
評(píng)論