Arduino用PID控制直流电机定位旋转 - 【单片机教程-Arduino-PID】

 

 

 

在这篇文章中,我们将看到如何实现直流电机的非常精确的位置控制。我们使用Arduino和PID计算来实现简单直流电机的精确位置控制。

这样的小项目非常有趣,您可以通过构建该项目来学习许多概念,例如PID,闭环系统和编码器基础。

首先,我想向您简要介绍什么是PID,因为这将帮助您进一步了解这些内容。

PID代表比例微分和积分计算

PID是编程的一部分,在该部分上,控制器将执行复杂的计算,并根据过程的反馈来操纵输出。

PID有4个关键值:
1. PV(过程值)或反馈
2. SV(设定值)
3.错误
4.输出

 

PID图

 

PID的基本工作如下,我不想进行复杂的算术公式,因为我想保持简单。

PID尝试使PV尽可能接近SV。
误差= SV-PV误差是设定值与过程值之间的差值,
而输出直接是误差的先决条件,换句话说,如果误差为正,则误差为正,如果误差为负,则输出与正的差越大,输出就越大。输出为负。随着PV越来越接近SV,误差变得越来越小,因此输出也越来越小,因此,我们获得了干净而精确的输出。

这是一个真实的例子。

假设我告诉您,在直路上行驶1公里以下的不中断汽车,因为您没有间断,因此油门就可以用来控制汽车,因此您上车时按住油门并加速一会儿,然后释放油门减速并逐渐停在1公里处。
这就是您所做的全部,我们可以称其为PID控制。PID知道如何在到达SP之前操纵输出。

Kp,Ki,Kd是可以微调PID控制器的参数,这些参数可以控制过冲下冲振荡。

假设一个微控制器在没有PID的情况下驱动汽车,它将启动汽车并继续加速直至到达1公里。

然后放开油门,使动车继续行驶并逐渐停止,直至超过我们设定的1公里。

然后,微控制器再次使汽车反转,并在他回到1公里点时加速,再次释放油门,同样的事情由于动量而继续向后移动,这样的循环一次又一次地重复。

您可以想像,现在几乎没有控制器可以在没有PID的情况下将汽车停在固定点

以下是了解PID平滑运动外观的视觉效果。

 

视频

 

 

 

这个怎么运作?

 

 

双轴简单直流齿轮电动机的一侧与编码器的轴连接,另一侧与指针连接,该指针指向量角器上标记的角度,编码器与中断引脚上的arduino连接,并通过L293D电动机IC驱动直流电动机, HC-05模块用于将我们的系统与android设备连接

当我们从android设备arduino发送角度设定值接收数据并运行电机时,编码器将脉冲与要求匹配时,编码器会按照预定义的计算将实时位置反馈发送到arduino,这意味着指针到达所需位置arduinuo在这种情况下停止直流电机。所有过程均由PID控制,以实现平稳,干净的运动。

例如,在这里我们使用了一个光学编码器,该编码器可以提供1600跃迁脉冲以进行360度旋转,因此,如果我们想将指针旋转到90度,那么来自编码器的1600/360 x 90 = 400脉冲将告诉我们它移动了90度。

组件

 

 

我使用了一个简单的BO电机,将光编码器连接到其轴上,将360度量角器用作秤HC-05 bt模块,用于连接arduino和android设备,并使用android手机运行android app发送角度设置指向arduino

以下是产品链接,以防万一您需要购买

  1. Arduino的
  2. 直流电动机

    (1)软件设置方面,由于单片机可以通过编程的方式,处理一些业务逻辑,因此就能对智能语音处理过程进行操作。例如,在导航智能电子设备中,可以将其中的一些道路名称、距离等进行提取,然后进行播报,同时,还可以选择不同的名人口吻进行播报,真正实现智能化的定制操作,更好地满足用户的需求;

  3. 量角器
  4. L293d IC
  5. 光学编码器

我3d打印了一些土墩电机和编码器零件,我也3d打印了指针,您可以在下面的链接中找到3D文件。
https://www.thingiverse.com/thing:3221695

光学编码器

 

 

 

 

我在这里使用了一个400 ppr 2相增量式光学编码器,该编码器可以为每个演进提供1600平移的参考,意味着每个相位800个过渡,我们需要连接连接到A相和B相的上拉电阻,因为我们不能使引脚悬空以避免任何问题。干扰,在我们的案例中,我们使用的是arduino,它具有内置的上拉电阻器功能,只需要从代码中激活即可。

  1. pinMode encoderPin1,INPUT_PULLUP ;
  2. pinMode encoderPin2,INPUT_PULLUP ;

要了解有关编码器的更多信息,请阅读上期推文

电路图

 

进行上图所示的接线,编码器绿色和白色导线必须连接到arduino的中断引脚,即数字引脚2和3。

在这里,我使用了L293D H桥式电动机控制IC,它可以控制直流电动机。工作在5V至36V的电压范围内,它可以处理每个通道1A的电流,每个通道2A的峰值,必须将HC-05 BT模块连接到arduino的串行引脚(TX,RX)引脚0和1。
我用了9V电池为电动机供电。

源代码

 

 

在开始编码之前,您必须先安装一个PID库(https://github.com/br3ttb/Arduino-PID-Library/archive/master.zip ),
该库由br3ttb提供(https://github.com/br3ttb/Arduino-PID-Library),是一个出色的库,它非常易于使用,并且可以使用。



 

如上面的视频和图像所示,首先我借助3D打印的联轴器和3D打印的安装支架连接编码器和直流电动机,然后借助M3 X 10螺栓将安装支架固定在编码器上。

在支架I的另一侧上,通过这种方式将直流电动机粘到直流编码器轴上,直流编码器轴与直流编码器轴一起移动,并继续向arduino提供位置参考

现在,我带了一个大的360度保护器,并在中心钻了一个孔,以便可以将其安装在直流电动机轴上。现在,我在电动机的另一轴上连接了3D打印指针,该指针指出了直流电动机轴的运动角度。

我有一块可用的PCB,可以连接直流电动机,L293d IC和HC-05模块,该PCB可以用作arduino uno屏蔽,可以直接安装在Arduino UNO上。

一旦我们完成了所有组件的组装,就可以运行该项目,因此我们需要一个android设备和android应用,您可以从下面的链接下载android应用和可编辑的.aia文件

Android APP:https://www.mediafire.com/file/uz95pmbl58fg3bo/StepperMotorApp+%281%29.apk

Editable file:https://www.mediafire.com/file/4gz6wcw19acxuvf/StepperMotorApp.aia/file

下载:https://51qudong.lanzous.com/ibqglnc ,或长按二维码直接下载

 


PID位置控制android应用

 

下载该应用程序,然后执行以下弹出的Android操作,即可从未经授权的来源进行安装。

设置>安全。
检查选项“未知来源”。
在提示信息上点击确定。
选择“信任”。

下载完成后,项目准备就绪打开应用程序发送所需角度或移动刻度盘以相应地移动指针

 

点击阅读原文进入来源页面

机器周期不仅对于指令执打有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12MHZ晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。

生成海报
点赞 0

sandeep

我还没有学会写个人说明!

相关推荐

让你的植物说话

简介:让植物说话在今天的教程中,我们将学习如何使用带有MP3播放器模块的Arduinonano进行工厂对话。基本上,我们将3个传感器连接到Arduino模块:LDR传感器。电容式湿度传感器。DHT22温湿度传感器。我们将在Arduino中读取传感器值并定义每个传感器的限制,然后基于这些限制,Arduino将向MP3模块发送命令以播放特定警报。在本教程中,我们不会编写任何代码脚本,而是使用XODide软件。如果您不熟悉XOD,则XOD是免费的开放源代码且功能强大的微控制器可视化编程软件。它使用图形界面将硬件和计算元素表示为节点,这些节点可以连接在一起以允许数据在对象之间流动。您可以从下面的链接下

自制一辆arduino主控的小型铲车

简介:JCB机器JCB机械非常受欢迎,因为它是民用工业中的重型建筑设备。JCB也被称为反铲装载机。它可用于非常快速地装卸卡车。它用于道路建设,卡车装卸以及更多其他用途。每个建筑公司都使用它,因为它足够快并且可以举起沉重的重量。步骤1:视频步骤2:使用的材料1,ArduinoNano-1个2.游戏杆模块-2个3.伺服电机(180度)-4号4.公对母跳线-根据要求5.公对公跳线-根据要求6.直流轴电机-2个7.按钮-2个8.迷你面包板9.电源-5V1Amps步骤3:3D零件这些是JCB的3D装配零件。步骤4:从物理建筑开始-伺服电机1首先使用Fevikwik将带有附接部件的臂固定在相应的插槽中。然

从点亮小夜灯开始-Arduino基础入门

https://www.instructables.com/Arduino-Basics-With-Night-Light/简介:带小夜灯的Arduino基础知识最近,我一直在玩Arduino。Arduino非常酷,是学习电子学的好方法。在本教程中,我将教您Arduino的基础知识,包括:LED的纽扣电位器电阻器廷克卡德和一个具有这种知识的项目。步骤1:董事会控制器可以分为几个简单的部分。颜色与图像相对应。绿色框为Arduino提供电源,并且已插入USB电缆。橙色为面包板和地面提供5v或3.3v的电源。红色端口是用于在没有USB且电压为7-12v的情况下为Arduino供电的端口。紫色是微控制

DIY-制造一个随机提问的闹钟

简介:制作一个随机询问问题的闹钟您平时起床有困难吗?早上设置十多个闹钟,但仍然无法唤醒并发呆时将其关闭。当您醒来并发现自己迟到时,便怪闹钟没有发出任何声音。为了帮助我更好地完成996个工作日,特制了一个简单的小型闹钟-随机问问题的闹钟。令人不愉快的哭声使您无法入睡。另外,在回答过程中,您必须专心听问题,否则,您将无法判断是在问“一加一是多少”还是“多少个单词中有多少个单词”是一个加一个。”“它是家庭必备产品,是将您逼入生活顶峰的发起者。材料清单:ArduinoUNO×1IO扩展板×1语音识别×1语音合成模块×1DS3231MMEMS精密RTC×17.4VLipo2500mAh电池×1数字按钮(

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

Arduino用PID控制直流电机定位旋转 - 【单片机教程-Arduino-PID】