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

Arduino 用微控制器计算编码器脉冲的简单方法是什么?,arduino,raspberry-pi,counter,microcontroller,encoder,Arduino,Raspberry Pi,Counter,Microcontroller,Encoder,早上好 对不起,如果我的问题是世界上被问得最多的问题,但我希望你能让我头脑清醒 我有一个项目要做:以某种方式计算来自编码器的脉冲。程序将保留一个“限制”值作为输入,用户可以在“运行时”更改该值(例如,程序读取线程中的输入,并为线程“计数器”的下一个周期存储变量)。频率应该达到100KHz,50Khz就足够了,但你永远不知道。。。最好有更高的表现。。。每次线程计数器达到极限时,在输出中给出一个数字 微控制器上的程序应为C语言;计数器不应丢失任何脉冲(可靠性是必须的) 这是我目前所知道的关于这个项目

早上好

对不起,如果我的问题是世界上被问得最多的问题,但我希望你能让我头脑清醒

我有一个项目要做:以某种方式计算来自编码器的脉冲。程序将保留一个“限制”值作为输入,用户可以在“运行时”更改该值(例如,程序读取线程中的输入,并为线程“计数器”的下一个周期存储变量)。频率应该达到100KHz,50Khz就足够了,但你永远不知道。。。最好有更高的表现。。。每次线程计数器达到极限时,在输出中给出一个数字

微控制器上的程序应为C语言;计数器不应丢失任何脉冲(可靠性是必须的)

这是我目前所知道的关于这个项目的所有信息,但我想我不会有太多其他具体的

真正的问题是: 广告中我应该使用什么微控制器?阿杜伊诺?覆盆子?如果我用覆盆子,我会冒险在后台做一些事情吗?那小猎犬骨呢? 关于这个问题有什么老生常谈吗(关于某个微控制器的一些文档和教程)

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


谢谢你们的好意

在Arduino到期时,有两个正交Enoders(QDEC)通道,但原来的一个“缺货”。关于它的一些问题在Arduino SE:和

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

一些东西:


例如,双向计数器…

在Arduino Due中,有两个用于正交编码器(QDEC)的通道,但原来的一个“缺货”。关于它的一些问题在Arduino SE:和

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

一些东西:


例如,双向计数器…

您肯定不想使用任何具有Linux或Windows操作系统的设备(如Raspberry、Beaglebone等),因为它们不是实时的,您无法确保不会错过任何脉冲

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

  • 编译后分析代码(程序集)。您将看到在中断服务例程中有多少指令。然后使用微控制器数据表,您可以计算它所需的详细周期数
  • 连接信号发生器,将其设置为方波,然后查看开始释放脉冲的频率。如果你的目标频率是2-3倍,你在安全范围内

  • 完成部分计数后,您可以将脉冲数(例如每秒)发送到一些高级计算机/软件,例如使用UART或SPI。但这当然取决于您的设计要求。

    您肯定不想使用任何具有Linux或Windows操作系统的设备(如Raspberry、Beaglebone等),因为它们不是实时的,您无法确保不会错过任何脉冲

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

  • 编译后分析代码(程序集)。您将看到在中断服务例程中有多少指令。然后使用微控制器数据表,您可以计算它所需的详细周期数
  • 连接信号发生器,将其设置为方波,然后查看开始释放脉冲的频率。如果你的目标频率是2-3倍,你在安全范围内

  • 完成部分计数后,您可以将脉冲数(例如每秒)发送到一些高级计算机/软件,例如使用UART或SPI。但这当然取决于您的设计要求。

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

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

    是的,绝对可以,许多完全有效的解决方案,因此这是一个有点宽泛的问题。可以是基于软件的,或者一些芯片有定时器或其他外围设备,你可以从外部来源刺激它们来为你计数。是的,你绝对可以,许多非常有效的解决方案,所以这是一个有点宽泛的问题。可以是基于软件的,或者某些芯片有定时器或其他外围设备,您可以从外部来源刺激它们来为您计数。