应广科技单片机PS173微控制器作为编码器计数器的实例应用成功案例,过读取每个信号何时发生变化并跟踪哪个信号首先发生变化,编码器上的计数可以准确地递增或递减
即使在微控制器领域,单个单元 0.03 美元的微控制器也是很奇怪的。 它非常便宜。 您可以在 Digikey 或 Mouser 等在线分销商中找到的***的单件微控制器在 1.Topushit 低于 1 标记的区域,您的订单通常必须达到数千个。 从角度来看,它是 6inaworldof 的一款无名智能手机
几年前,作者研究过这些 IC,并进行了一些探索,探索它们的用途。 从那时起,IDE 中有了更好的文档,IC 的成本增加了 4 倍(!),并且开源工具链(SDCC)变得更加成熟。
这次作者想用这个IC作为编码计数器。
应广科技单片机PS173计数信号
跟踪编码器计数是一项重要的活动。 编码器经常用于跟踪角位置,并且该信息用于跟踪轮子旋转的速度或打印机的打印头前进的距离等信息。
然而,编码器计数也非常繁忙。 想象一下,您必须盯着显示两个变量 1 或 0 的屏幕。 通过跟踪 1 或 0 出现的频率以及顺序,您可以得知编码器的位置及其转动方向。 你可以整天盯着屏幕,这意味着你不能做任何其他事情......或者你可以设置一个通知来告诉你每个变量何时发生变化。
微控制器不使用通知,而是使用中断来确保它们不会错过计数。 但是,每秒计数数百次,除了服务中断之外,您可能无法执行任何其他操作,这就是为什么某些(读取:昂贵)芯片具有专用编码器模块的原因,这可以释放主控制器来执行其他操作,例如 读取控制信号或发送数据。
并非所有微控制器都有此模块,这就是 Padauk 微控制器的用武之地。
应广科技单片机PS173输入/输出
概念
这个概念非常简单:使用 Padauk 微控制器完成读取编码器的繁琐工作,然后为另一个微控制器提供访问计数的简单方法。
作者决定采用两种方法来读取计数。 SPI 从微控制器获取精确计数,以及适用于位置要求较低的应用的 2 引脚计数/方向控制方案:Padauk 微控制器在检测到编码器转动时将通过一个引脚输出脉冲,并指示编码器旋转的方向 使用另一个引脚的编码器。
应广科技单片机PS173旋转编码器的工作原理
旋转编码器通过输出格雷码来工作。 它是一对信号,指示旋钮的圈数以及方向。
通过读取每个信号何时发生变化并跟踪哪个信号首先发生变化,编码器上的计数可以准确地递增或递减。
编码器的接线也相当简单,每个通道上都有上拉电阻。
应广科技单片机PS173编码仿真IC
作者在 Padauk 模拟器上测试了代码。 作者发现调试经验对于修复逻辑中的一些错误非常有用。 当您逐步执行时,Padauk IDE 会自动显示所有寄存器及其当前状态以及代码每个部分中的变量值。
由于 Padauk IC 的指令集非常小,因此可以在 IDE 上显示所有内容。 作者不喜欢的一件事是,Mini-C 的文档分散在 IDE 中的应用说明和 IC 的数据表中。
在代码中,作者设置了两个中断来从编码器读取格雷码并将其存储到全局变量中。 该全局变量可以递增和递减。
二进制补码
应广科技单片机PS173Mini-C 没有负数的概念,负数通常以二进制补码的形式实现。
这种方法与二进制和算术运算的逻辑一致,因此它是一种非常有用的表示负数的方法。 然而,由于作者对编码器的相对位置更感兴趣,因此不需要负值,实现此目的的另一种方法是初始化范围中间的值。
如果作者们从零开始并且不实现二进制补码,则该值将从 0 滚回到 100,这是不可取的。 相反,作者从范围的中间开始值,这允许它正常递减和递增。 作者所要做的就是跟踪初始值并在其翻转之前重置它。
对 IC 进行编程
当您点击“编程”时,Padauk 的编程器会将二进制文件保存到编程器的内存中,以便您可以将其用作独立设备或触发从计算机的下载过程。
作者使用的 PFS173 支持多次编程 (MTP),它按照盖子上的说明执行操作,允许多次编程。 还有其他 Padauk IC 只能编程一次,例如 PMC150。
将所有内容放在一起
在此过程中,作者添加了一些其他功能,例如该板能够充当主控制器,而不仅仅是解释编码器信号,以及能够在关闭或打开时保存最后设置的 PWM 值。 当作者对结果相当满意时,作者将其移至作者的主要项目的专用板上。
审核编辑 黄宇
-
微控制器
+关注
关注
48文章
7422浏览量
150776 -
单片机
+关注
关注
6030文章
44482浏览量
631710 -
编码器
+关注
关注
45文章
3563浏览量
133928
发布评论请先 登录
相关推荐
评论