使用微控制器计算编码器脉冲的简单方法是什么?

时间:2016-12-13 10:07:27

标签: arduino raspberry-pi counter microcontroller encoder

早上好!

很抱歉,如果我的问题最多,请问"在这个世界上,但我希望你能清醒一下!

我有这个项目要做:以某种方式计算来自编码器的脉冲。该程序将保留一个值"限制"用户可以更改"运行" (例如,程序读取线程中的输入并存储该线程的下一个循环的变量" counter")。频率应该高达100KHz,50Khz足够好,但你永远不知道......拥有更高的性能会更好......每次线程计数器达到极限时输出数字。

微控制器上的程序应该是C;计数器永远不会失去任何脉冲(可靠性是必须的)。

这就是我现在所知道的这个项目,但我不认为我还有很多具体的......

真正的问题是: 我应该使用什么微控制器的广告? Arduino的?覆盆子?如果我使用Raspberry,我会冒险在背景中丢失脉冲吗?那么Beaglebone呢? 关于这个问题是否存在任何问题(关于特定微控制器的一些文档和教程)?

我再说一遍,除了可靠性,我没有令人难以置信的细节! 对不起,如果我问过一些问题已经讨论过了,但我对最好最简单的解决方案感到很困惑!请把我当成最坏的新手,因为可能是我!

非常感谢你的善意!

3 个答案:

答案 0 :(得分:2)

你绝对不想使用任何具有Linux或Windows操作系统的东西(例如Raspberry,Beaglebone等),因为它们不是实时的,你不能确定你不会错过任何脉搏。

几乎所有用裸C编程的现代微控制器都应该足够了。如果您采用时钟频率为8MHz的AVR(例如Atmega8或Atmega16或甚至Attiny2313),并且您的目标分辨率为100kHz,则一个脉冲将有80个CPU周期。如果您使用硬件中断来检测脉冲,这肯定应该足够了。可以肯定 - 有两种方式:

  1. 编译后分析代码(程序集)。您将看到中断服务程序中有多少指令。然后,使用微控制器数据表,您可以计算详细的循环次数
  2. 连接信号发生器,将其设置为方波,并查看开始松散脉冲的频率。如果您的目标频率小2-3倍,则您处于安全范围内。
  3. 完成计数后,您可以发送例如脉冲数。每秒一些高级计算机/软件,例如使用UART或SPI。但这当然取决于您的设计要求。

答案 1 :(得分:1)

您可以使用微控制器(如AVR)或Arduino(其中大部分也使用avr微控制器)。要读取脉冲,可以使用外部中断功能和定时器功能。外部中断用于提高由编码器触发的rps计数,并且计时器功能用于在计算" x" -time(即:1秒)的总旋转后重置rps计数

答案 2 :(得分:0)

Arduino Due中有两个用于正交编码器(QDEC)的通道,但是原始的一个是#34;缺货"。有关它的一些问题出现在Arduino SE中:How to configure 2nd Quadrature Decoder IO pins in Arduino IDEReading Two Quadrature Encoder using a single Arduino Due

没有它你必须使用中断。但是对于大约100kHz的频率,您可能需要一些更快的arduinos(基于ARM)或外部硬件解码器。

某事like

enter image description here

和双向计数器例如...