电机AB相编码器测速
控制任务
检测编码器的脉冲并测速
电路设计

图1 直流电机带减速器和编码器

图2 编码器接线定义
编码器接线定义如下
M1:电机电源接口,绿色的
GND:编码器电源负极输入口,橙色的
C1:编码器A相输出,黄色的,接Arduino控制板2号引脚
C2:编码器B相输出,白色的,接Arduino控制板3号引脚
3.3V:编码器电源正极输入口(兼容3.3V、5V),红色的
M2:电机电源接口,黑色的,
程序设计
1 int motor_c_ENA=6; //控制板与驱动板的引脚连接
2 int motor_c_IN1=8;
3 int motor_c_IN2=7;
4
5 #define ENCODER_A_PIN 2 //编码器A相接控制板2号引脚,对应0号外部中断
6 #define ENCODER_B_PIN 3 //编码器B相接控制板3号引脚,
7 long pulse_number=0; // 脉冲计数
8 int rpm;
9
10 #include <MsTimer2.h> //定时器库的头文件
11
12 void setup()
13 {
14 pinMode(motor_c_ENA,OUTPUT); //电机C使能和PWM调速口
15 pinMode(motor_c_IN1,OUTPUT); //电机C控制口
16 pinMode(motor_c_IN2,OUTPUT); //电机C控制口
17
18 MsTimer2::set(500, send); // 中断设置函数,每 500ms 进入一次中断
19 MsTimer2::start(); //开始计时
20
21 pinMode(ENCODER_A_PIN, INPUT);
22 pinMode(ENCODER_B_PIN, INPUT);
23 attachInterrupt(0, read_quadrature, FALLING); //EN_A脚下降沿触发中断
24 Serial.begin(9600); //初始化Arduino串口
25 }
26
27 void loop()
28 {
29 //C加速正转
30 digitalWrite(motor_c_IN1,0);
31 digitalWrite(motor_c_IN2,1);
32 for (int a=100;a<=255;a++)
33 {
34 analogWrite(motor_c_ENA,a);
35 delay(200);
36 }
37
38 //C减速正转
39 digitalWrite(motor_c_IN1,0);
40 digitalWrite(motor_c_IN2,1);
41 for (int a=255;a>0;a--)
42 {
43 analogWrite(motor_c_ENA,a);
44 delay(200);
45 }
46 }
47
48 void send() //速度串行传送
49 {
50 rpm=int(pulse_number/37.4);
51 //编码器精度为224线,减速器减速比为1:20,故系数=(224/(60/0.5))*20=37.4
52 Serial.print("rpm: ");
53 Serial.println(rpm, DEC);
54 pulse_number = 0;
55 }
56
57 void read_quadrature() //编码器脉冲计数中断函数
58 {
59 if (digitalRead(ENCODER_A_PIN) == LOW)
60 {
61 if (digitalRead(ENCODER_B_PIN) == LOW) // 查询EN_B的电平以确认正转
62 { pulse_number ++; }
63 if (digitalRead(ENCODER_B_PIN) == HIGH) // 查询EN_B的电平以确认反转
64 { pulse_number --; }
65 }
66 }
电机AB相编码器测速的更多相关文章
- 通过电机编码器AB相输出确定电机转向
AB相输出相差90度,即当A相"正跳变"时如果B相是高电平那么是"正转",反之是"反转" 图片: 正转 反转 #include <Ti ...
- 伺服驱动器UVW电机电源线相序错误
我们有必要先了解此讨论的前提:编码器初始安装相位正确.伺服驱动器将全然"採信"电机编码器的初始安装相位所表征的电机电角度相位,无需在伺服电机 的UVW动力线接线连接后进行额外 ...
- stm32直流电机驱动与测速代码配套视频资料
说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了这些大家都懂要不然也不会学习s ...
- 不可错过的stm32单片机直流电机驱动与测速详解
stm32直流电机驱动与测速 说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了 ...
- 轻松掌握stm32直流电机驱动与测速
说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了这些大家都懂要不然也不会学习s ...
- stm32直流电机驱动与测速
stm32直流电机驱动与测速 说实话就现在的市场应用中stm32已经占到了绝对住到的地位,51已经成为过去式,32的功能更加强大,虽然相应的难度有所增加,但是依然阻止不了大家学习32的脚步,不说大话了 ...
- [ Arch Linux ] Arch更新源高速源整理之测速并自动排序高速源 加快更新效率
方法一: 工具:rankmirrors 0x01 备份原来的源,并创建一个测试源 cd /etc/pacman.d cp mirrorlist mirrorlist.bakcp mirrorlist ...
- C# Ping的例子,可用于测试网络,延迟xx毫秒 C#编写网站测速
C#编写网站测速 WebClient wcl = new WebClient(); Stopwatch spwatch = new Stopwatch(); spwatch.Start(); byte ...
- linux测速软件speedtest-cli
linux测速软件: https://github.com/sivel/speedtest-cli 以下是我在gentoo上测的
随机推荐
- MinGW-w64安装过程中出现ERROR res错误的问题
使用 mingw-get-setup.exe 安装.在官网http://www.mingw.org/上搜索download/installer,点击下载. 如果使用 mingw-w64-install ...
- Photon PUN 二 大厅 & 房间
一, 简介 玩过 LOL , dota2, 王者荣耀 等MOBA类的游戏,就很容易理解大厅和房间了. LOL中一个服务器就相当与一个大厅; 什么电一,电二 ,,, 联通一区等 每一个区就相当于一个大厅 ...
- oracle无法通过ip地址连接
问题描述:使用plsql可以连接本地oracle实例,但telnet 192.168.130.71 (内网ip)不通. 其实在11g安装完成后,默认网络配置 listener.ora中 host = ...
- List集合对象去重及按属性去重的8种方法-java基础总结系列第六篇
最近在写一些关于java基础的文章,但是我又不想按照教科书的方式去写知识点的文章,因为意义不大.基础知识太多了,如何将这些知识归纳总结,总结出优缺点或者是使用场景才是对知识的升华.所以我更想把java ...
- 20190923-02Linux文件目录类 000 010
pwd 显示当前工作目录的绝对路径 pwd:print working directory 打印工作目录 1.基本语法 pwd (功能描述:显示当前工作目录的绝对路径) 2.案例实操 (1)显示当前工 ...
- java 将map转为实体类
使用反射将map转为对象,如果不使用反射的话需要一个get一个set写起来麻烦,并且不通用,所以写了一个通用的方法将map集合转为对象,直接看代码,注释也都挺清楚的 public static < ...
- ubuntu安装docker-ce 、docker-ce-cli、containerd.io
问题 ubuntu安装docker的时候特别慢,百度搜了一大堆都没讲到点子上,最后请教了大佬才知道是源的问题 安装 修改源 sudo gedit /etc/apt/sources.list 添加源 阿 ...
- 一起来读官方文档-----SpringIOC(04)
1.4.2.依赖性和详细配置 如上一节所述,您可以将bean属性和构造函数参数定义为对其他托管bean(协作者)的引用或内联定义的值.Spring的基于XML的配置元数据为此目的在其和元素中支持子元素 ...
- Git进阶之路:配置git同时推送github和gitee仓库
1. 进入工程根目录打开.git文件夹(需要显示隐藏文件夹) 2. 打开.git文件夹下的config文件进行编辑添加github和gitee仓库地址 3. 推送验证 github提交记录 gitee ...
- zepto | 用事件委托去解决无法给新增添的DOM添加事件的问题
前段时间在做一个任务的时候,碰见了一个问题:zepto无法用on事件去监听新增加的dom事件.这个问题用live可解决, 但是live在ios下失效,为了解决这个问题,我采用了暴力的方法去解决,每次添 ...