- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Arduino关于旋转编码器程序的介绍分析
Arduino关于旋转编码器程序的介绍
介绍
旋转或编码器是一个角度测量装置. 他用作精确测量电机的旋转角度或者用来控制控制轮子(可以无限旋转,而电位器只能旋转到特定位置)。其中有一些还安装了一个可以在轴上按的按钮,就像音乐播放器的控制按钮。Some of them are also equipped with a pushbutton when you press on the axis (like the ones used for navigation on many music controllers). 它们的精度多种多样,有每圈16步到1024步的各种,价格也从2到200欧元不等。
我写了一个小例子去读旋转编码器,并且使将读数通过RS232显示。我们很容易实现当编码器每走一步更新一下计数,并且将它通过串口显示在电脑上(通过串口监视器)。这个程序在ALPS STEC12E08编码器(每圈有24步)上运行良好。但是我认为当它使用在一个有更高精度的编码器上时有可能就会失效或者当电机旋转很快,或者你拓展这个程序以适应多个编码器。请先试试他吧。
我在Arduino distribution(AVRLib的一部分)的encoder.h中学会了怎样操作编码器。谢谢作者:Pascal Stang,感谢他对每一个函数友好而详细的解释。如下:
Example 1
/* Read Quadrature Encoder
* Connect Encoder to Pins encoder0PinA, encoder0PinB, and +5V.
*
* Sketch by max wolf /
* v. 0.1 - very basic functions - mw *
*/
int val;
int encoder0PinA = 3;
int encoder0PinB = 4;
int encoder0Pos = 0;
int encoder0PinALast = LOW;
int n = LOW;
void setup() {
pinMode (encoder0PinA,INPUT);
pinMode (encoder0PinB,INPUT);
Serial.begin (9600);
}
void loop() {
n = digitalRead(encoder0PinA);
if ((encoder0PinALast == LOW) (n == HIGH)) {//上升沿
if (digitalRead(encoder0PinB) == LOW) {
encoder0Pos--;
} else {
encoder0Pos++;
}
Serial.print (encoder0Pos);
Serial.print (/);
}
encoder0PinALast = n;
}
要注意的几点:
encoder0Pos会一直记数,那也就意味着如果电机一直向一个方向进行旋转,那么串口消息会变的很长(最多6个字符),这样的话就会画更多的时间去转换。你需要保证当encoder0Pos溢出的时候,在你的PC端不会发生bugs-如果它的值大于INT的最大值(32,767)时,它会突变为-32,768!反之亦然。改进建议: 仅当上位机需要读数的时候,将计数相加,即只计数发送周期之间的数据。当然,如果你在loop()中添加更多的代码,或者使用更高精度的编码器,就有可能丢失某一步(少计数)。更好的解决办法是使用中断(当检测到信号的突变时)。我上面提到库文件就是这么去做的,但是现在(2006-12) 无法再Arduino环境下编译,或者我不知道怎么去做…… 。
更深的解释, 包括编码器时序图
我对于编码器的时序的原理不怎么确定,但是还是将这些内容添加到这里吧. Paul Badger
下图,是 编码器A B两通道的时序图。
下面的描述会更好的解释编码器是怎么运行的。当代码检测到A通道一个上升沿的时候,他会接着去检查B通道是高电平或者是低电平,因为方向不同,接着它会将计数增加或者减少。为了检测到波形,编码器必须旋转。
上面代码的优势是,他只检测了关于编码器的一种可能性(共4种分别是检测A(上升沿,下降沿)(B+,B-),检测B(上升沿,下降沿)(A+,A-))。为了方便解释,不管红色还是绿色虚线标注的变换,都是根据编码器的旋转方向变化而变化的。
中断的例子
使用一个中断的例子
下面是使用中断的代码. 当Arduino检测到A通道有变化(上升沿或下降沿
您可能关注的文档
- 音频设备专业词汇1剖析.doc
- 音频处理技术PPT版剖析.ppt
- AO螺钉固定技术分析.ppt
- 韵母的发音和训练剖析.ppt
- Applepay分析.ppt
- APP界面设计元素与页面布局分析.ppt
- AOS导热产品介绍分析.ppt
- APQP学习教程(详细版)分析.ppt
- APQP讲义A(Cn)分析.ppt
- APP共享分析.pptx
- 《保护我们的五官》课件.pptx
- 专题01 指、对、幂数的大小比较必考七类问题(举一反三专项训练)高一数学人教A版必修第一册(解析版).pdf
- 电网安全知识大培训课件.pptx
- 作文梗概教学详细设计方案.docx
- 企业安全教育记录表标准样本.docx
- 专题01 指、对、幂数的大小比较必考七类问题(举一反三专项训练)高一数学人教A版必修第一册(原卷版).pdf
- 国家公务员考试公共基础知识部分真题库推荐.docx
- 高校教学工作质量监控方案.docx
- 专题1.1 集合的概念(举一反三讲义)高一数学人教A版2019必修第一册(解析版).pdf
- 专题1.1 集合的概念(举一反三讲义)高一数学人教A版2019必修第一册(原卷版).pdf
最近下载
- 标准图集-09J202-1坡屋面建筑构造(一)图集.pdf VIP
- 术中获得性压力性损伤手术室全程管理专家共识解读.docx VIP
- 2025北京京水建设集团有限公司招聘4人笔试历年参考题库附带答案详解.docx VIP
- 1大数据与会计专业-大学生职业生涯规划书.pptx VIP
- 50118马工程行政法与行政诉讼法(第二版)全套PPT课件.ppt
- 宠物鲜粮自制商业计划书.docx VIP
- 基于室内定位导航技术的停车场寻车解决方案[共8页].docx VIP
- Bohemian Rhapsody钢琴谱五线谱 完整版原版.pdf
- 小学五年级语文第三单元教案.docx VIP
- 消防喷淋系统安装检验批质量验收记录.docx VIP
原创力文档


文档评论(0)