推荐产品
联系我们

地址:上海市长宁区仙霞路350号10幢3楼3034室

电话:021-62378659

传真:021-62378659

邮箱:0350zp@163.com

业内新闻

AVR单片机教程——挽回编码器

来源:博天堂ag,博天堂AG手机版,博天堂ag旗舰时间: 2020-01-01浏览次数:作者:澳门皇冠
旋转编码器好像不是单片机玩家很常用的器件,但是我们的开发板上有,原因如下: 旋转编码器挺好用的。电位器能旋转的角度有限,旋转编码器可以无限圈旋转;旋转时不连续,有卡

  旋转编码器好像不是单片机玩家很常用的器件,但是我们的开发板上有,原因如下:

  旋转编码器挺好用的。电位器能旋转的角度有限,旋转编码器可以无限圈旋转;旋转时不连续,有卡点,适合对应离散数据。

  本来旁边的电位器(旋钮,以后会讲)一枝独秀,挺孤单的,我就配一个高度大致相同的旋转编码器陪伴它。

  今天我想写旋转编码器,于是在网络上搜索了一下,相关资料很少。最基本地,旋转编码器的作用是将角位移、角速度等机械量转换为电信号。本文不求成为旋转编码器的百科全书,但会把触点电刷式增量式旋转编码器的原理讲清楚。这里出现了两个定语,是对类别的限定;关于旋转编码器的分类,请自行百度。

  开发板上的旋转编码器是从淘宝买的,淘宝商家提供了资料,这是本讲的主题。为避免广告嫌疑,我不能放链接上来,所以我就把它转换成图片放在文章里(请在新页面中查看):

  我们从旋转编码器的原理开始。旋转编码器的内部是触点与电刷,可以看作按键:当两者接触时,开关闭合;反之断开。实际上它们的本质是一样的。在旋转时,按键会周期性地闭合、断开;如果一端接地,另一端接上拉电阻,就会有周期性高、低电平的脉冲信号产生。我们使用的旋转编码器每转过一圈会输出24个脉冲。

  通过对脉冲进行计数,可以知道编码器转过的角度。如果不管方向,测量角度或角加速度等,用一个输出就够了。但是如果考虑方向,无论是顺时针还是逆时针转动,电平都是“高低高低高……”。为了获得方向的信息,需要使用两个输出,它们的相位相差90°,如图所示:

  A和B是两个输出端,C端接地。当程序检测到A端由高电平变为低电平时(方法在按键那里讲过了),如果检测到B端是高电平(这就更简单了),那就是顺时针旋转;如果是低电平,那就是逆时针旋转。实际上不一定要检测A端的下降沿,只要按照这张图来,怎么都对。

  库函数使用的检测方法是:A、B端由低低变为高低时,判为顺时针转过一格;由低低变为低高时,判为逆时针转过一格。这不是最好的方法(你可以想一下怎样改进,但是不要低估它的难度),但从实际使用上来看,只要用户不故意在两个卡点之间扭来扭去,这种方法是可以胜任的。

  我们写一个用旋转编码器控制数码管显示数字的程序,也可以理解为对旋转编码器进行计数并用数码管显示。旋转编码器A和B端分别连接端口4和5,数码管连接6和7。程序的思路是:每隔一毫秒调用rotary_rotated(它和button_pressed函数类似——如果你还记得的话)检测编码器是否被转动以及转动的方向,并根据方向对计数器变量num进行增减。(为什么让num为uint8_t类型?)为了凸显旋转编码器的主题,数码管就用segment_auto来解决了。

  注意相邻卡点之间挤了4个AB端口的状态,因此延时不能过长。你可以试试更长的间隔。

  本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

  下一篇:LCD1602液晶显示模块的单片机驱动深入详解之软件篇(AVR)

  一、什么是熔丝位熔丝是一个保护知识产权的设计。简单的说,你在特定的引脚上加电压,足够的电流,就可以烧断里边的这根熔丝,烧断以后,片里的程序就不可以被读出来也不能改写了,只能用来运行。一般成品出售时都这样做。专用的写片机支持这个功能。自己也可以根据芯片的官方文档来操作。熔丝位是在一个特定的地址上可以读到熔丝状态的一个位。0表示已熔断,1表示未熔断。二、avr熔丝位介绍AVR Studio 中 STK500 处理熔丝位有巨大的优势:它是以功能组合让用户配置。 这种方式与小马(PonyProg2000,SL-ISP)相比,具有以下的优势(优势是如此明显,可以用“巨大优势”来形容):有效避免因不熟悉熔丝位让芯片锁死 (这是

  这个任务,就交给软件吧~ 接着需要考虑负压拓扑。负压生成有电感和电容两种范式;其中,电感模式的有变压器式,和电感自激这么两种。 显然,我还没打算自己绕变压器,那还不如用双绕组市电变压器了;电感和电容选那种呢? 其实电感式的我做过,要想达到高效率,还真有点麻烦,最终选定电容式的了!在baidu上一搜“负压”,就有好多链接,从其中挑了一个简单的:当然,我用AVR代替了555,随便找个IO,在LED扫描中断里面反转一下IO,产生了3K左右的方波波形,套用上面这个电路,一下子就生成了-4V的电压(5V供电),OK~接上100欧负载,顿时电压跌落为-1.6V,改了改电容容量,没效果(可能和我只改了1个电容有关系)!改了改驱动能力(多个IO口并联驱动

  AVR端口是线伪双向。这也是AVR的一项优势,只是操作时大家注意DDRn就可以了。真正双向端口在模拟时序方面不如伪双向的方便。DDRnPORTnPINn解释:n为端口号:ABCDEDDRn:控制端口是输入还是输出,0为输入,1为输出。个人记忆方法:一比零大所以往外挤,即1为输出,0为输入。PORTn:从引脚输出信号,当DDRn为1时,可以通过PORTn=x等端口操作语句给引脚输出赋值。PINn:从引脚读输入信号,无论DDRn为何值,都可以通过x=PINn获得端口n的外部电平。当引脚配置为输入时,若PORTxn为“1“,上拉电阻将使能。内部上拉电阻的使用在键盘扫描的时候还要说到。端口更详细功能及介绍

  引 言随着人们生活水平的提高, 各种热水器的使用已相当普及, 与之相配套的控制仪也相继问世。然而, 目前市场上的各种热水器控制电路还与理想要求相差甚远。消费者需要真正的全自动 控制, 以实现使用的最简单化, 就像家用电视机、电冰箱一样, 接通电源、设定完毕就不用再操心了。鉴于国内太阳能热水器市场不断扩大, 而与其相配套的控制器却急需改进的情况, 研制了这套太阳能热水器控制器。本文设计的太阳能热水器是以AVR Meg a 32单片机为检测控制核心,不仅实现了温度、水位两种参数的实时显示功能, 而且具有温度设定与控制功能。控制器可以根据天气情况利用辅助加热装置使蓄水箱内的水温达到预先设定的温。


关于我们 简介 企业文化
联系我们

地址:上海市长宁区仙霞路350号10幢3楼3034室

电话:021-62378659

传真:021-62378659

邮箱:0350zp@163.com

扫一扫
Copyright ©  2015-2025 博天堂AG手机版  版权所有
html地图|xml地图