news 2026/3/27 21:08:49

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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单片机感兴趣,不妨试试这个项目,挺有成就感的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 11:26:23

(独家揭秘)Open-AutoGLM数字孪生控制系统的5层安全防护机制

第一章&#xff1a;Open-AutoGLM 数字孪生联动控制Open-AutoGLM 是一个面向工业自动化与人工智能融合的开源框架&#xff0c;专注于实现数字孪生系统与大语言模型的深度协同。通过将物理设备的实时数据映射至虚拟模型&#xff0c;并结合自然语言指令解析能力&#xff0c;Open-A…

作者头像 李华
网站建设 2026/3/28 5:09:03

【文创AI新纪元】:Open-AutoGLM让内容创作效率提升10倍

第一章&#xff1a;【文创AI新纪元】&#xff1a;Open-AutoGLM让内容创作效率提升10倍在人工智能与文化创意深度融合的当下&#xff0c;Open-AutoGLM 正在重新定义内容生成的边界。作为一款开源的自动文本生成框架&#xff0c;它结合了 GLM 架构的强大语义理解能力与自动化流程…

作者头像 李华
网站建设 2026/3/27 11:13:54

Open-AutoGLM赋能非遗保护(AI驱动的文化复兴新范式)

第一章&#xff1a;Open-AutoGLM赋能非遗保护&#xff08;AI驱动的文化复兴新范式&#xff09;在数字化浪潮席卷全球的今天&#xff0c;非物质文化遗产的传承面临前所未有的挑战与机遇。Open-AutoGLM作为一种先进的开源大语言模型框架&#xff0c;正以其强大的语义理解与生成能…

作者头像 李华
网站建设 2026/3/27 12:27:15

【独家深度解读】Open-AutoGLM进化引擎:如何让模型越用越聪明?

第一章&#xff1a;Open-AutoGLM进化引擎的核心理念Open-AutoGLM进化引擎是一种面向下一代生成式语言模型训练与推理优化的开源架构&#xff0c;旨在通过动态自适应机制实现模型能力的持续进化。其核心不依赖于静态参数固化&#xff0c;而是强调在真实应用场景中实现模型行为的…

作者头像 李华
网站建设 2026/3/27 6:26:28

CVE-2022-21697_ Jupyter Server 代码问题漏洞

CVE-2022-21697_ Jupyter Server 代码问题漏洞1. 漏洞原理2. 漏洞危害3. 漏洞修复CVSS评分&#xff1a;6.3 1. 漏洞原理 CVE-2022-21697 是一个影响 Jupyter Server Proxy 的 服务器端请求伪造&#xff08;SSRF&#xff09;漏洞。该扩展常用于 Jupyter Server / Notebook 环境…

作者头像 李华