早上好!
很抱歉,如果我的问题最多,请问"在这个世界上,但我希望你能清醒一下!
我有这个项目要做:以某种方式计算来自编码器的脉冲。该程序将保留一个值"限制"用户可以更改"运行" (例如,程序读取线程中的输入并存储该线程的下一个循环的变量" counter")。频率应该高达100KHz,50Khz足够好,但你永远不知道......拥有更高的性能会更好......每次线程计数器达到极限时输出数字。
微控制器上的程序应该是C;计数器永远不会失去任何脉冲(可靠性是必须的)。
这就是我现在所知道的这个项目,但我不认为我还有很多具体的......
真正的问题是: 我应该使用什么微控制器的广告? Arduino的?覆盆子?如果我使用Raspberry,我会冒险在背景中丢失脉冲吗?那么Beaglebone呢? 关于这个问题是否存在任何问题(关于特定微控制器的一些文档和教程)?
我再说一遍,除了可靠性,我没有令人难以置信的细节! 对不起,如果我问过一些问题已经讨论过了,但我对最好最简单的解决方案感到很困惑!请把我当成最坏的新手,因为可能是我!
非常感谢你的善意!
答案 0 :(得分:2)
你绝对不想使用任何具有Linux或Windows操作系统的东西(例如Raspberry,Beaglebone等),因为它们不是实时的,你不能确定你不会错过任何脉搏。
几乎所有用裸C编程的现代微控制器都应该足够了。如果您采用时钟频率为8MHz的AVR(例如Atmega8或Atmega16或甚至Attiny2313),并且您的目标分辨率为100kHz,则一个脉冲将有80个CPU周期。如果您使用硬件中断来检测脉冲,这肯定应该足够了。可以肯定 - 有两种方式:
完成计数后,您可以发送例如脉冲数。每秒一些高级计算机/软件,例如使用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 IDE和Reading Two Quadrature Encoder using a single Arduino Due
没有它你必须使用中断。但是对于大约100kHz的频率,您可能需要一些更快的arduinos(基于ARM)或外部硬件解码器。
某事like:
和双向计数器例如...