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

51单片机直流电机PID调速系统 protues仿真,keil仿真,器件清单和ad原理图 功能: 1

51单片机直流电机PID调速系统 protues仿真,keil仿真,器件清单和ad原理图 功能: 1.直流电机目标速度设定 2.直流电机当前转速检测 3.通过独立按键控制 4.通过PID算法进行电力调速 5.数码管显示速度

最近在搞一个51单片机的直流电机PID调速系统,感觉挺有意思的,顺便记录一下整个过程。这个系统的主要功能是通过PID算法来调节电机的转速,并且还能通过数码管显示当前的速度。整个过程用到了Protues仿真和Keil仿真,最后还整理了一份器件清单和AD原理图。废话不多说,直接上干货。

1. 直流电机目标速度设定

首先,我们得让系统能够设定一个目标速度。这个目标速度可以通过按键来调整,比如按下“+”键增加速度,按下“-”键减少速度。这部分代码其实挺简单的,主要就是通过按键扫描来实现。

void Key_Scan() { if (KEY_ADD == 0) { delay_ms(10); // 消抖 if (KEY_ADD == 0) { TargetSpeed += 10; // 每次增加10 if (TargetSpeed > MAX_SPEED) TargetSpeed = MAX_SPEED; } } if (KEY_SUB == 0) { delay_ms(10); // 消抖 if (KEY_SUB == 0) { TargetSpeed -= 10; // 每次减少10 if (TargetSpeed < MIN_SPEED) TargetSpeed = MIN_SPEED; } } }

2. 直流电机当前转速检测

接下来就是检测电机的当前转速了。这里我用了一个光电编码器来检测电机的转速。光电编码器会输出脉冲信号,我们可以通过计算脉冲的频率来得到电机的转速。

void Timer0_ISR() interrupt 1 { PulseCount++; // 脉冲计数 } void GetCurrentSpeed() { CurrentSpeed = (PulseCount * 60) / PULSE_PER_REV; // 计算转速 PulseCount = 0; // 清零计数器 }

3. 通过独立按键控制

按键控制部分已经在前面提到了,主要是通过按键来调整目标速度。这里就不再赘述了。

4. 通过PID算法进行电力调速

PID算法是这个系统的核心部分。PID控制器通过比较目标速度和当前速度的误差,来调整电机的PWM输出,从而控制电机的转速。PID算法的公式大家应该都熟悉:

Output = Kp * Error + Ki * Integral + Kd * Derivative

代码实现如下:

void PID_Control() { Error = TargetSpeed - CurrentSpeed; Integral += Error; Derivative = Error - LastError; Output = Kp * Error + Ki * Integral + Kd * Derivative; LastError = Error; if (Output > MAX_PWM) Output = MAX_PWM; if (Output < MIN_PWM) Output = MIN_PWM; PWM_SetDuty(Output); // 设置PWM占空比 }

5. 数码管显示速度

最后,我们得把当前速度显示在数码管上。这里我用了一个简单的数码管驱动函数,把当前速度的数值分解成个位和十位,然后分别显示在数码管上。

void DisplaySpeed() { uint8_t tens = CurrentSpeed / 10; uint8_t units = CurrentSpeed % 10; DigitalTube_Display(tens, units); }

Protues仿真和Keil仿真

在Protues中,我搭建了一个简单的电路模型,包括51单片机、直流电机、光电编码器、按键和数码管。在Keil中编写好代码后,直接加载到Protues中进行仿真,效果还不错。

器件清单和AD原理图

最后,整理了一份器件清单和AD原理图,方便后续的硬件搭建。器件清单包括51单片机、直流电机、光电编码器、按键、数码管、电阻、电容等。AD原理图则是整个电路的详细连接图,这里就不贴出来了。

总结

整个系统其实并不复杂,主要是通过PID算法来实现电机的调速。通过按键设定目标速度,光电编码器检测当前速度,PID控制器调整PWM输出,最后把速度显示在数码管上。整个过程用到了Protues和Keil进行仿真,效果还不错。如果你也对51单片机感兴趣,不妨试试这个项目,挺有成就感的。

http://www.cnnetsun.cn/news/181047.html

相关文章:

  • 揭秘Open-AutoGLM如何拯救非遗文化:5大核心技术首次公开
  • 揭秘Open-AutoGLM底层架构:如何实现高质量文创内容自动生成
  • 收藏!大模型学习实战指南:从入门到进阶,小白/程序员少走90%弯路
  • 收藏!2025年AI行业风口:应用层人才成企业争抢核心,程序员/小白入门指南
  • 你不知道的Open-AutoGLM黑科技(5个隐藏功能让城市管理效率提升300%)
  • 传奇手游快速挂机 巨 椰 云手机
  • AbMole小课堂:类器官培养中决定成败的抑制剂、细胞因子
  • Vue基础入门08,详解 Vue watch 侦听器:基础用法、深度监听与立即执行场景
  • 怎样选择品牌代工厂?不要只关注价格,这5点才是关键
  • 一键群控多台电脑,狂揽 2.2 万 GitHub Star!
  • Open-AutoGLM模型压缩技术揭秘:在边缘设备上实现毫秒级推理的6种方法
  • Open-AutoGLM部署避坑指南,20年架构师亲授高可用场景适配秘诀
  • 为什么说Open-AutoGLM是首个真正具备自主学习能力的开源框架?
  • 一篇文章熟悉Java打包到部署
  • 数据结构 —— 顺序表
  • 基于springboot的大创管理系统(11549)
  • springboot基于安卓的老年养护与智能服务系统
  • EasyGBS助力智慧医院打造全方位视频监控联网服务体系
  • 【收藏级】全面拆解GraphRAG:从原理到实践,大模型知识库升级必备
  • Java多态——Java的三大特性之一,零基础小白到精通,收藏这篇就够了
  • 【Open-AutoGLM元宇宙适配终极指南】:揭秘三大核心技术突破与落地实践
  • Open-AutoGLM如何实现自主学习?:深度剖析其进化机制与训练闭环设计
  • [驱动之路——GPIO子系统]学习总结,万字长篇,一文彻底搞懂GPIO子系统(含GPIO控制器驱动框架解析)
  • Open-AutoGLM如何重塑城市治理?:3个真实案例揭示AI协同调度的颠覆性力量
  • 智能体式AI实战指南:从零构建IT自动化系统,程序员必学收藏教程
  • 家长用Realme手机,怎样远程管理孩子iPhone的屏幕使用时长?
  • 【Open-AutoGLM智慧城市协同调度】:揭秘未来城市交通智能调度的5大核心技术
  • Java SpringBoot+Vue3+MyBatis 宠物爱心组织管理系统系统源码|前后端分离+MySQL数据库
  • 【Open-AutoGLM自动驾驶交互核心技术】:揭秘AI驱动的车载人机协同新范式
  • 揭秘Open-AutoGLM如何重构电子病历管理:医生工作效率翻倍的底层逻辑