传感器主要分为两大类型,即一种是数字式,多采用I2C接口方式工作,其特点是省出了检测值标定的处理;另一种则是模拟信号型,需要使用A/D转换器来采集信号,并转换成数据值,其特点是有了A/D转换器就能采集传感器输出的信号,麻烦的是需要进行数值标度处理。
航顺HK32F103A是配有A/D转换器的,因此配上相应的传感器就能进行检测。
1. A/D数据采集
以PA0进行数据采集的配置函数为:
void ADC1_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}实现数据采集的主程序为:
int main(void)
{
u32 AD_value;
SystemInit();
USART1_Config();
ADC1_Init();
printf("\\r\\n ADC test: (PA0)\\r\\n");
while (1)
{
Delay(500);
AD_value = 3300000/4096\*ADC_ConvertedValue/1000;
printf("AD value = %d mV \\r\\n", AD_value);
}
}经程序的编译和下载,对VCC和GND的测试结果见图1所示。

图1 极值检测
2. 传感器检测
有了A/D采集的基础,配上相应的传感器就能感知外部的环境变化。以光照强度和温度检测为例,可通过光敏和热敏器件来感知其强度上的变化,其检测模块与开发板的连接见图2所示。

图2 器件连接
通过光照强度的变化,其检测结果见图3所示。

图3 光强变换结果
3. 数据曲线绘制
在进行A/D采集过程中,往往数字是不够直观的,为此可将数据绘制成波形曲线来反应其变化过程。
对VCC和GND的检测,其波形曲线见图4和图5所示。

图4 VCC曲线

图5 GND曲线
对光强和温度的检测波形见图6和图7所示,别看波形波动比较明显,其实其变化幅度却有限。

图6 光强曲线

图7 温度曲线
当然,我们也可接入其它功能的A/D型传感器,来获得检测结果并绘制出其波形曲线。
