当前位置: 首页 > wzjs >正文

东莞市环保局网站如何做登记表衡阳网站页面设计公司

东莞市环保局网站如何做登记表,衡阳网站页面设计公司,网站开发阶段流程,福田做网站价格文章目录 前言1. 硬件准备主控芯片超声波模块执行机构其他 2. 硬件连接3. 超声波测距原理触发信号回波检测中断捕获 4. 代码实现(基于HAL库)(1) 初始化定时器(用于测量Echo高电平时间)(2) 超声波触发与距离计算 5. PID算法实现(1)…

文章目录

  • 前言
  • 1. 硬件准备
    • 主控芯片
    • 超声波模块
    • 执行机构
    • 其他
  • 2. 硬件连接
  • 3. 超声波测距原理
    • 触发信号
    • 回波检测
    • 中断捕获
  • 4. 代码实现(基于HAL库)
    • (1) 初始化定时器(用于测量Echo高电平时间)
    • (2) 超声波触发与距离计算
  • 5. PID算法实现
    • (1) PID结构体定义
    • (2) PID计算函数
  • 6. 控制执行机构
    • (1) 电机控制(PWM调速)
    • (2) 舵机控制(角度调整)
  • 7. 主循环逻辑
  • 8. PID参数整定技巧
    • 先调P
    • 再调D
    • 最后调I
    • 测试
  • 9. 关键问题与优化
    • 超声波噪声
    • 死区处理
    • 动态目标


前言

STM32F103RCT6上使用超声波传感器(如HC-SR04)结合PID算法实现稳定距离控制,通常用于避障、跟随或定位等场景。以下是详细实现步骤:


1. 硬件准备

主控芯片

主控芯片:STM32F103RCT6(72MHz Cortex-M3,足够处理超声波数据与PID运算)。

超声波模块

超声波模块:HC-SR04(测距范围2cm~400cm,精度±3mm)。

执行机构

执行机构:电机(如直流电机+编码器)或舵机(用于调整方向)。

其他

其他:电源、驱动电路(如L298N)、OLED/LCD(可选,用于显示距离)。

2. 硬件连接

HC-SR04引脚 STM32引脚 说明
VCC 5V 模块供电
Trig PA1 触发信号(输出)
Echo PA0 回波信号(输入,需EXTI中断)
GND GND 共地
注意:Echo信号为5V电平,需通过**电阻分压(如1kΩ+2kΩ)**转换为3.3V,避免损坏STM32。

3. 超声波测距原理

触发信号

触发信号:STM32发送10μs的高电平脉冲到Trig引脚。

回波检测

回波检测:HC-SR04发射超声波并接收回波,Echo引脚输出高电平,
持续时间与距离成正比(公式:距离(cm) = 高电平时间(μs) / 58)。

中断捕获

中断捕获:使用定时器输入捕获模式或EXTI中断+普通定时器测量Echo高电平时间。

4. 代码实现(基于HAL库)

(1) 初始化定时器(用于测量Echo高电平时间)

// 定时器2初始化(1MHz计数频率,72MHz/72分频)
TIM_HandleTypeDef htim2;
void MX_TIM2_Init(void) {htim2.Instance = TIM2;htim2.Init.Prescaler = 71;          // 72分频htim2.Init.CounterMode = TIM_COUNTERMODE_UP;htim2.Init.Period = 0xFFFF;         // 最大计数值HAL_TIM_IC_Init(&htim2);
}// 输入捕获配置(通道1,PA0)
TIM_IC_InitTypeDef sConfigIC;
sConfigIC.ICPolarity = TIM_ICPOLARITY_RISING; // 上升沿触发
sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
sConfigIC.ICFilter = 0;
HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1);

(2) 超声波触发与距离计算

float Get_Distance(void) {uint32_t start_time = 0, end_time = 0;float distance_cm = 0;// 发送10us触发脉冲HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);delay_us(10);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);// 等待Echo上升沿(启动定时器)while (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET);HAL_TIM_IC_Start(&htim2, TIM_CHANNEL_1);start_time = htim2.Instance->CCR1;// 等待Echo下降沿(停止定时器)while (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET);end_time = htim2.Instance->CCR1;HAL_TIM_IC_Stop(&htim2, TIM_CHANNEL_1);// 计算距离(单位:cm)distance_cm = (end_time - start_time) / 58.0f;return distance_cm;
}

5. PID算法实现

PID控制器通过调节输出使当前距离(反馈值)趋近目标距离(设定值)。

(1) PID结构体定义

typedef struct {float Kp, Ki, Kd;      // PID参数float target;          // 目标距离(cm)float error, last_error, integral;
} PID_Controller;PID_Controller pid = {0.5, 0.01, 0.2, 10.0, 0, 0, 0}; // 示例参数

(2) PID计算函数

float PID_Update(PID_Controller *pid, float current) {pid->error = pid->target - current;  // 误差=目标值-当前值// 积分项(防饱和)pid->integral += pid->error;if (pid->integral > 100) pid->integral = 100;else if (pid->integral < -100) pid->integral = -100;// 微分项float derivative = pid->error - pid->last_error;pid->last_error = pid->error;// PID输出float output = pid->Kp * pid->error + pid->Ki * pid->integral + pid->Kd * derivative;return output;
}

6. 控制执行机构

根据PID输出调整电机或舵机:

(1) 电机控制(PWM调速)

// 初始化PWM(TIM3通道1,PA6)
void MX_TIM3_Init(void) {TIM_OC_InitTypeDef sConfigOC = {0};htim3.Instance = TIM3;htim3.Init.Prescaler = 71;          // 1MHz频率htim3.Init.Period = 999;             // 1kHz PWMHAL_TIM_PWM_Init(&htim3);sConfigOC.Pulse = 0;                // 初始占空比0sConfigOC.OCMode = TIM_OCMODE_PWM1;HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1);HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
}// 更新电机速度(PID输出映射到PWM占空比)
void Set_Motor_Speed(float pid_output) {uint16_t pwm = (uint16_t)fabs(pid_output * 10); // 比例缩放if (pwm > 999) pwm = 999;__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pwm);// 根据输出正负设置电机方向if (pid_output > 0) {HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);   // 正转} else {HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 反转}
}

(2) 舵机控制(角度调整)

// 设置舵机角度(PID输出映射到0~180°)
void Set_Servo_Angle(float pid_output) {uint16_t angle = 90 + (uint16_t)(pid_output * 10); // 示例映射uint16_t pwm = 500 + angle * 2000 / 180;           // 0.5ms~2.5ms__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pwm);
}

7. 主循环逻辑

int main(void) {HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_TIM2_Init();MX_TIM3_Init();float current_distance = 0;float pid_output = 0;while (1) {current_distance = Get_Distance();      // 获取当前距离pid_output = PID_Update(&pid, current_distance);Set_Motor_Speed(pid_output);           // 调整电机速度// 或 Set_Servo_Angle(pid_output);     // 调整舵机角度HAL_Delay(50); // 控制周期50ms(20Hz)}
}

8. PID参数整定技巧

先调P

先调P:增大Kp直到系统快速响应但出现振荡。

再调D

再调D:加入Kd抑制振荡。

最后调I

最后调I:小幅增加Ki消除静态误差。

测试

测试场景:目标距离从远到近阶跃变化,观察响应曲线。

9. 关键问题与优化

超声波噪声

超声波噪声:多次采样取中值滤波

死区处理

死区处理:当误差小于阈值关闭PID输出,避免抖动。

动态目标

动态目标:若目标距离变化,需重新整定PID参数
通过上述步骤,STM32F103RCT6可稳定控制物体与超声波传感器间的距离。实际应用中需根据机械特性(如电机惯性)调整PID参数。



文章转载自:

http://cIeR0aLX.bxrqf.cn
http://kkW5pGPr.bxrqf.cn
http://ygtPnFNh.bxrqf.cn
http://3npFVPQV.bxrqf.cn
http://GPtAYele.bxrqf.cn
http://fxLVndFi.bxrqf.cn
http://VvmDpWxZ.bxrqf.cn
http://Ytdo4DSn.bxrqf.cn
http://rzkn5UYI.bxrqf.cn
http://aBbhwckR.bxrqf.cn
http://8mzFuTaE.bxrqf.cn
http://gylFToUP.bxrqf.cn
http://dCfIsiKG.bxrqf.cn
http://GR8xLN7T.bxrqf.cn
http://xaorUu38.bxrqf.cn
http://uh0K5tCQ.bxrqf.cn
http://tuoXyzSV.bxrqf.cn
http://KEskodgE.bxrqf.cn
http://gWNrOC64.bxrqf.cn
http://Vb7mAWcQ.bxrqf.cn
http://tNJWwIKH.bxrqf.cn
http://1hxcyn5J.bxrqf.cn
http://DLLWLJSM.bxrqf.cn
http://F7jpW8wF.bxrqf.cn
http://FPGeaH0r.bxrqf.cn
http://W2jG6CtE.bxrqf.cn
http://x2HwNFK7.bxrqf.cn
http://12dw57pC.bxrqf.cn
http://EbKQlVWR.bxrqf.cn
http://JfTy9uzz.bxrqf.cn
http://www.dtcms.com/wzjs/758280.html

相关文章:

  • 深喉咙企业网站系统广西建筑模板
  • 高清网站seo网站建设与管理教学方案
  • 怎么样自己做一个网站精准客户截流软件
  • 做我女朋友套路网站网易企业邮箱满了怎么办
  • 海外网站服务器租用2022中国进入一级战备了吗
  • 东莞专业网站建设价钱网站建设与管理实践收获
  • 青岛公路建设集团网站网线制作标准
  • 医院诊所网站源码WordPress不收录首页
  • 娄底市住房和城乡建设局网站网站代码的重点内容是什么
  • 网站左侧图片悬浮代码国际新闻最新消息今天新闻大事件视频
  • 网站调优做网站界面
  • 长沙网站自己制作网站备案哪个局管
  • 充值网站制作网上销售平台有哪些
  • 西宁做网站_君博示范宁波建设网站公司推荐
  • 温州做网站哪家好阳江房地产信息网
  • 化妆品网站建设推广方案企业站模板
  • 做ppt音乐模板下载网站深圳约的网站设计
  • 为什么要推行政务公开网站建设采集文章留在网站
  • 网站推广与品牌建设上海到北京多远
  • 关于网站建设的网站wordpress音乐盒
  • 沼气服务网站建设管理网络整合营销六大模型
  • 东莞营销型网站vfp网站开发
  • 毕业设计做网站论文交换友链要注意什么
  • 网站建设项目售后服务承诺医疗类网站
  • 广西南宁网站设计如何注册公司抖音号
  • 容城县建设银行网站东营最新通知
  • 淘宝搜索词排名查询网站建设和seo讲师要求
  • php网站开发 实战教程即墨网站建设哪里有
  • 设计素材网站名称株洲在线网站的目标客户
  • 灯箱网站开发大航母网站建设流程