查看: 1313|回复: 0
收起左侧

第一百章:CH32V103应用教程——红外测距

[复制链接]

  离线 

  • TA的每日心情
    慵懒
    2021-7-23 17:16
  • 签到天数: 17 天

    [LV.4]

    发表于 2021-7-31 18:50:27 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    在日常使用时,我们常用的测距传感器有超声波测距和红外测距两种方式。关于超声波测距,在前面章节我们已经有过介绍,本章教程主要进行红外测距实验,本章教程所用红外测距传感器型号为SHARP-2Y0A02,关于该传感器参数,可自行上网查阅相关资料,本章主要进行红外测距简单例程介绍。

    1、ADC简介本章教程所用传感器主要通过ADC进行数据采集,根据采集得到ADC值进行一系列数据转换即可。
    关于ADC,在前面章节已经进行过介绍,在此不再赘述。
    本章教程所用红外测距传感器模块共有3个引脚可与开发板连接:VCC、GND、Aout。其中,VCC支持4.5V-5.5V供电;Aout引脚与对应ADC引脚连接。
    关于ADC具体介绍,可参考前面章节及CH32V103应用手册。

    2、硬件设计


    本章教程使用红外测距模块进行测距。CH32V103开发板与红外测距模块的连接方式如下:
    • CH32V103开发板的VCC引脚与红外测距模块的VCC(5V)引脚连接
    • CH32V103开发板的GND引脚与红外测距模块的GND引脚连接
    • CH32V103开发板的PA1引脚与红外测距模块的Aout引脚连接

    3、软件设计


    本章教程主要进行红外测距实验,在前面ADC教程基础上进行,其中ADC配置程序与前面ADC介绍一致,在此不再介绍,主要在main函数中ADC转换有所区别,main函数具体程序如下:

    main.c文件
    1. int main(void)

    2. {

    3.     u8 i = 0;

    4.     u16 adc;

    5.     float temp;     //电压

    6.     float Distance; //距离

    7.     float SUMDistance = 0.0; //距离



    8.     Delay_Init();

    9.         USART_Printf_Init(115200);

    10.         adc_Init();



    11.         printf("SystemClk:%d\r\n",SystemCoreClock);



    12.         while(1)

    13.     {

    14.         adc=Get_Adc_Average(ADC_Channel_1,10);

    15.         temp=(float)adc*(3.3/4096);

    16.         Distance = 1941-2094.1*temp+941.5*temp*temp-152.3*temp*temp*temp;

    17.         SUMDistance += Distance;

    18.         if(i==10)

    19.         {

    20.             Distance = SUMDistance/10;

    21.             printf(" 测量距离= %3.2f mm \n",Distance );

    22.             SUMDistance = 0;

    23.             i = 0;

    24.         }

    25. //        printf("adc:%d\r\n",adc);

    26. //        printf("volate:%0.2f\r\n",temp);

    27.         i++;

    28.         Delay_Ms(250);

    29.         }

    30. }
    复制代码
    main.c文件主要进行函数初始化并将所得ADC值转换成电压值之后再转换为距离,并打印输出。在本函数中所用距离计算函数并不准确,在此只是提供一个参考说明,在真正使用时需要根据ADC值和距离关系进行算法分析和校准。

    4、下载验证
    将编译好的程序下载到开发版并复位,与红外测距模块接好之后串口打印如下:
    CH32V CH573单片机芯片-第一百章:CH32V103应用教程——红外测距risc-v单片机中文社区(1)

    CH32V CH573单片机芯片-第一百章:CH32V103应用教程——红外测距risc-v单片机中文社区(2) 99、红外测距.rar (552.19 KB, 下载次数: 14)







    上一篇:第九十九章:CH32V103应用教程——IIC-主发从收持续收发
    下一篇:第一百零一章:CH32V103应用教程——旋转编码器
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-4-25 11:42 , Processed in 1.668100 second(s), 48 queries .

    快速回复 返回顶部 返回列表