模块学习(四)

您所在的位置:网站首页 汽车echo是什么 模块学习(四)

模块学习(四)

2024-07-17 11:38:58| 来源: 网络整理| 查看: 265

今天想着把测距模块全部一网打尽了,把点对点和点对面两种测距全部搞定,于是有了这篇关于超声波模块的博客分享,主要还是分享代码,原理啥的网上都有,这次是基于MSP430F5529的driverlib库,没有找到开源的代码就自己分享一下了!

1.基本原理

还是稍稍讲一下原理,不然等下可能代码看不懂。两个引脚,一个TRIG,一个ECHO,就是触发和回响,顾名思义,trig是用来触发启动超声波模块的,echo模块是用来回收超声波的。此次使用的是US-100超声波模块,其实和常见的HC-SR04/5系列是一样的,代码均可用。

基本原理 trig引脚给一个大于10us的高电平脉冲,即会启动超声波模块。

启动之后,模块内部会发送一段8个40KHZ的脉冲,随后,在echo引脚会接受到一段时长的高电平,这个高电平时长就是模块发出的脉冲出去之后,碰到障碍物返回的时间。

2.代码

废话不多说,直接上大家最喜欢的代码。

1.初始化配置 /* * ultrasonic.c * * Created on: 2022年7月19日 * Author: S10 */ #include "ultrasonic.h" void wave_Init(void) { GPIO_setAsOutputPin(Trig_Port,Trig_Pin);//设置触发引脚为输出模式 GPIO_setAsPeripheralModuleFunctionInputPin(Echo_Port,Echo_Pin);//设置接收引脚为输入模式 //Start timer in continuous mode sourced by SMCLK Timer_A_initContinuousModeParam initContParam = {0};//定义连续模式初始化结构体 initContParam.clockSource = TIMER_A_CLOCKSOURCE_SMCLK;//确定时钟源SMCLK initContParam.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_16;//16分频 initContParam.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_DISABLE;//禁用Tim A中断 initContParam.timerClear = TIMER_A_DO_CLEAR;//重置计数方向等..... initContParam.startTimer = false;//先不开启计数器 Timer_A_initContinuousMode(TIMER_A2_BASE, &initContParam); //清除比较模式中断(初始化比较模式) Timer_A_clearCaptureCompareInterrupt(TIMER_A2_BASE, TIMER_A_CAPTURECOMPARE_REGISTER_2 ); Timer_A_initCaptureModeParam initCapParam = {0};//定义比较模式初始化结构体 initCapParam.captureRegister = TIMER_A_CAPTURECOMPARE_REGISTER_2;//选择TIM_A2的捕获比较通道2 initCapParam.captureMode = TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE;//捕获上升沿 initCapParam.captureInputSelect = TIMER_A_CAPTURE_INPUTSELECT_CCIxA;//确定输入选择为CCIxA(这个不知道怎么看怎么确定) initCapParam.synchronizeCaptureSource = TIMER_A_CAPTURE_SYNCHRONOUS;//与时钟同步 initCapParam.captureInterruptEnable = TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE;//使能捕获中断 Timer_A_initCaptureMode(TIMER_A2_BASE, &initCapParam); Timer_A_startCounter( TIMER_A2_BASE,//开启计时 TIMER_A_CONTINUOUS_MODE ); //Enter LPM0, enable interrupts开启全局中断 __bis_SR_register(GIE); //For debugger __no_operation(); } void wave_star(void) { GPIO_setOutputHighOnPin(Trig_Port,Trig_Pin); delay_us(20);//10us高电平即可触发 GPIO_setOutputLowOnPin(Trig_Port,Trig_Pin); } /* * ultrasonic.h * * Created on: 2022年7月19日 * Author: S10 */ #ifndef ULTRASONIC_H_ #define ULTRASONIC_H_ #include "driverlib.h" #define Trig_Port GPIO_PORT_P2 #define Trig_Pin GPIO_PIN4 #define Echo_Port GPIO_PORT_P2 #define Echo_Pin GPIO_PIN5 #define CPU_CLOCK 16000000 #define delay_us(us) __delay_cycles(CPU_CLOCK/1000000*(us)) void wave_Init(void); void wave_star(void); #endif /* ULTRASONIC_H_ */

初始化代码大家根据自己所选引脚进行修改即可。

2.中断服务函数 switch(__even_in_range(TA2IV,14))//中断标志位——对应捕获通道 { case 2 :break;//如果是CCR1产生的中断 case 4 : //如果是CCR2产生的中断 if(GPIO_getInputPinValue(Echo_Port,Echo_Pin) == 1)//读取此时电平状态,高电平则为上升沿捕获 { Data_first = Timer_A_getCaptureCompareCount(TIMER_A2_BASE,TIMER_A_CAPTURECOMPARE_REGISTER_2); } else//读取此时电平状态,低电平为下降沿捕获 { Data_second = Timer_A_getCaptureCompareCount(TIMER_A2_BASE,TIMER_A_CAPTURECOMPARE_REGISTER_2); if(overflow_times == 0) HIGH_Time = (Data_second - Data_first); else HIGH_Time = ((Data_second - Data_first) + overflow_times * 65535); Distance = (((float)HIGH_Time/1000000)* 340)/2 ;//m } // Timer_A_clearCaptureCompareInterrupt(TIMER_A2_BASE,TIMER_A_CAPTURECOMPARE_REGISTER_2); break; case 10: break; case 14: if(GPIO_getInputPinValue(Echo_Port,Echo_Pin)) { overflow_times++; } else overflow_times = 0; // Timer_A_clearTimerInterrupt(TIMER_A2_BASE); break;//此时发生计数器溢出 default: break; } // Enable global interrupt _BIC_SR_IRQ(LPM0_bits);

大概就是这些了,还需要注意的一点是在主函数中要记得调用超声波启动函数。

在使用过程中,超声波模块和平面的法向量之间的角度需要注意,否则会造成测量不准确。

该模块测量精度在2cm-450cm,可谓是非常强大了.有任何疑问可以私信我或者评论区留言,看到一定回。有表述不好的地方或者可以优化的地方,也请各位点出来一下,共同进步!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭