使用 Arduino 和电位器控制直流电机速度
使用 Arduino 和电位器控制直流电机速度
查看原文
使用 Arduino 和电位器的直流电机速度控制
直流电机是机器人和电子项目中使用最多的电机。对于控制直流电机的速度,我们有多种方法,例如可以根据温度自动控制速度, 但在本项目中将使用PWM方法来控制直流电机的速度。在这个 Arduino 电机速度控制项目中,可以通过旋转电位器的旋钮来控制速度。
脉冲宽度调制:
什么是脉宽调制? PWM是一种可以控制电压或功率的技术。如果您使用 5 V来驱动电机,那么电机将以一定速度运动,现在如果我们将施加的电压降低 2 意味着我们将 3 伏施加到电机上,那么电机速度也会降低。该概念在项目中用于使用 PWM 控制电压。我们已经在本文中详细解释了 PWM。还要检查这个电路,其中 PWM 用于控制 LED 的亮度: 1 瓦 LED 调光器。
% Duty cycle = (TON/(TON + TOFF)) *100Where, TON = HIGH time of the square waveTOFF = LOW time of square wave
现在如果图中的开关在一段时间内连续闭合,那么电机将在这段时间内连续打开。如果开关在 10ms 的周期内闭合 8ms 并打开 2ms,则电机仅在 8ms 时间内开启。现在超过 10ms 的平均终端时间 = 开启时间/(开启时间 + 关闭时间),这称为 占空比 ,为 80% (8/ (8+2)),所以平均输出电压将是电池电压的 80%。现在人眼无法看到电机开启 8 毫秒和关闭 2 毫秒,因此看起来直流电机以 80% 的速度旋转。
在第二种情况下,开关在 10ms 的时间内关闭 5ms 并打开 5ms,因此输出端的平均端电压将为电池电压的 50%。假设电池电压为 5V,占空比为 50%,则平均端电压为 2.5V。
在第三种情况下,占空比为 20%,平均端电压为电池电压的 20%。
我们在许多项目中都使用了 Arduino 和 PWM :
- 使用 PWM 的基于 Arduino 的 LED 调光器
- 使用 Arduino 的温控风扇
- 使用 Arduino 进行直流电机控制
- 使用 Arduino 和 TRIAC 控制交流风扇速度
您可以通过浏览基于 PWM 的各种项目来了解有关 PWM 的更多信息。
所需材料
- Arduino UNO
- 直流电机
- 晶体管 2N2222
- 电位器 100k ohm
- 电容 0.1uF
- 面包板
- 跳线
电路原理图
使用 PWM进行 Arduino 直流电机速度控制 的电路图如下所示:
代码和解释
最后给出了使用电位器控制 Arduino 直流电机的完整代码。
在下面的代码中,我们初始化了变量 c1 和 c2,并为电位器输出分配了模拟引脚 A0,为“pwm”分配了第 12个引脚。
int pwmPin = 12;
int pot = A0;
int c1 = 0;
int c2 = 0;
现在,在下面的代码中,将引脚 A0 设置为输入,将 12(PWM 引脚)设置为输出。
void setup(){pinMode(pwmPin, OUTPUT); // declares pin 12 as outputpinMode(pot, INPUT); // declares pin A0 as input
}
现在,在*void loop() 中,我们正在使用AnalogRead(pot) 读取模拟值(来自 A0),*并将其保存到变量 c2。然后,从 1024 中减去 c2 值并将结果保存在 c1 中。然后将 PWM 引脚设为 Arduino HIGH 的第 12位,然后在 c1 值的延迟后将该引脚设为低电平。同样,在值 c2 的延迟之后,循环继续。
从 1024 中减去模拟值的原因是,Arduino Uno ADC 具有 10 位分辨率(因此整数值从 0 - 2^10 = 1024 值)。这意味着它将 0 到 5 伏特之间的输入电压映射为 0 到 1024 之间的整数值。因此,如果我们将输入 anlogValue乘以 (5/1024),则我们得到输入电压的数字值。在此处了解 如何在 Arduino 中使用 ADC 输入。
void loop()
{c2= analogRead(pot);c1= 1024-c2; digitalWrite(pwmPin, HIGH); // sets pin 12 HIGHdelayMicroseconds(c1); // waits for c1 uS (high time)digitalWrite(pwmPin, LOW); // sets pin 12 LOWdelayMicroseconds(c2); // waits for c2 uS (low time)
}
使用 Arduino 控制直流电机的速度
在这个电路中,为了控制直流电机的速度,我们使用了一个 100K 欧姆的电位器来改变 PWM 信号的占空比。100K欧姆电位器连接到Arduino UNO的模拟输入引脚A0,直流电机连接到Arduino的第12引脚(即PWM引脚)。Arduino程序的工作非常简单,因为它从模拟引脚A0读取电压。模拟引脚上的电压通过使用电位器来改变。在做了一些必要的计算之后,占空比会根据它进行调整。
例如,如果我们将 256 值输入模拟输入,那么 HIGH 时间将为 768ms (1024-256) 而 LOW 时间将为 256ms。因此,它仅表示占空比为 75%。我们的眼睛看不到如此高频的振荡,看起来电机以 75% 的速度持续开启。这就是我们如何 使用 Arduino 执行电机速度控制。
代码
int pwmPin = 12; // assigns pin 12 to variable pwm
int pot = A0; // assigns analog input A0 to variable pot
int c1 = 0; // declares variable c1
int c2 = 0; // declares variable c2void setup() // setup loop
{pinMode(pwmPin, OUTPUT); pinMode(pot, INPUT);
}void loop()
{c2= analogRead(pot); c1= 1024-c2; // subtracts c2 from 1000 ans saves the result in c1digitalWrite(pwmPin, HIGH); delayMicroseconds(c1); digitalWrite(pwmPin, LOW);delayMicroseconds(c2);
}
使用 Arduino 和电位器控制直流电机速度相关推荐
- Arduino驱动L298N控制直流电机的正反转和调速
Arduino驱动L298N控制直流电机的正反转和调速 一.前言 二.产品参数 三.驱动直流电机 三.接线图 四.程序 五.实验结果 总结 一.前言 本模块使用ST公司的L298N作为主驱动芯片,具有 ...
- Arduino开发板控制直流电机
在本篇文章中,我们将学习到如何使用Arduino开发板控制直流电机.我们将看看控制直流电机的一些基本技术,然后列举两个例子,通过例子我们将学习到如何使用L298N驱动器和Arduino开发板控制直流电 ...
- 可编程手机蓝牙App控制直流电机速度
我们将通过 Android 应用程序 (app) 介绍直流电机速度控制.对于该项目,该应用程序安装在智能手机设备中,该设备使用蓝牙向控制直流电机速度的电路发送命令. 此 Android 应用程序具有引 ...
- 直流电机 matlab,使用MATLAB和Arduino开发板进行直流电机控制
在本篇文章中,我们将主要介绍如何使用MATLB和Arduino开发板控制直流电机.如果您是初次使用MATLAB软件,建议您先学习如何使用MATLAB实现简单的LED闪烁. 创建用于控制直流电机的MAT ...
- 基于arduino控制带编码器直流电机速度
基于arduino控制带编码器直流电机速度 模块:带减速的直流电机(减速比1:120),霍尔编码器(每圈13个信号单相)arduino UNO,TB6612FNG,3.7V电源 编码器连接在直流电机输 ...
- 使用Arduino控制直流电机
使用Arduino控制直流电机 ARDUINO的 经过**迪利普·拉贾(Dilip Raja)** 2015年6月7日7 在本教程中,我们将使DC电动机与Arduino UNO相连,并使用PWM(脉冲 ...
- 【 使用 Arduino 和 L293D 电机驱动器 IC 控制直流电机】
使用 Arduino 和 L293D 电机驱动器 IC 控制直流电机 前言 用微控制器控制直流电机 L293D电机驱动IC L293D 电机驱动器 IC 引出线 L293D电机驱动IC常见问题解答 A ...
- Arduino教程-09.L298N控制直流电机(避障小车)
目录 3.1 电机 3.2 控制直流电机 PWM – 控制速度 H桥 – 控制转动方向 L298N 电机驱动芯片 技术规格 L298N 电机驱动器模块引脚排列 电源引脚 输出引脚 方向控制引脚 速度控 ...
- inovance变频器说明书参数设置_变频器控制电机速度时,面板调速如何切换为电位器调速...
若你我之间有缘,关注作者又何妨? 两情若是久长时,又岂在朝朝暮暮. 大家好!我是江郎,一个快要"才尽"的维修工. 引言 什么是数控? 说白了就是计算机数字技术控制机床工作. 那么, ...
最新文章
- 戴森要搞能爬楼梯的吸尘器,两项专利设计现已提交
- 搭建通用性多用户后台-思路
- Android SoundPool.play方法的音量与系统音量的关系
- 25.智能指针.rs
- Asp.Net Core 中IdentityServer4 授权流程及刷新Token
- ida调试linux程序,MAC使用IDA PRO远程调试LINUX程序
- multiprocessing python_一行 Python 代码实现并行
- SQL server 增删改查语句
- pytorch测试用例(查看tensor维度)
- 类构造函数(Constructor)单冒号:用法
- 【笔记】VUE学习笔记
- PHPObject v1.51(Flash Remoting for PHP developers)
- 网课查题接口 搜题公众号对接题库教程 (附赠题库接口)
- 大数据离线分析之企业实战分享
- 值得收藏的UmiJS 教程
- tornado、flask、c++zmq-req-rep记录
- Eureka自我保护模式——难点重点
- 5款宝藏浏览器插件推荐,每一个都真香,一定要看到最后
- cpu插槽类型 产品参数解释
- java实现给手机发短信验证码
热门文章
- 中北c语言程序设计,中北大学软件学2013届C语言程序设计实训题目.doc
- java annotation class,Java Class类 isAnnotation()方法及示例
- 关于CND与真实IP
- 测试环境搭建-5:设备的驱动程序未被安装解决方法
- 请假系统jsp mysql_[源码和文档分享]基于JSP和MYSQL数据库实现的请假管理系统
- 网工知识角|例行维护检查华为设备,这10个常用命令你必须掌握
- 傲慢与偏见 中英版
- 微信朋友圈输入框加发送测试用例总结
- 我所热衷的编程生涯 连载(11)
- 解决zeal文档下载不上的办法