示波器使用PIC单片机项目
Oscilloscope using PIC MCU project
我对微控制器还很陌生。所以我对他们的潜力一无所知。
我想用单片机做一个示波器,通过ADC采集数据,通过usb传输给电脑处理显示。
我想讨论这个项目。我拥有的资源如下:
1) 我的 dsPIC MCU 的 ADC 能够提供 1.1 Msps,其中每个样本具有 10 位分辨率。它能够同时对多达 4 个通道进行同步采样。
2) MCU 具有 USB 支持和 DMA 通道,可将数据从 ADC 直接传输到 USB。
我的问题是:
1) 使用这些规格我可以达到的最快采样率是多少?
2) 这个项目可行吗?它的速度是否足以与标准示波器竞争?
3) 如何优化 MCU 以获得最佳性能?
4) 你会如何制作这个项目? (你的方法)
5) 我将使用 JavaFx 使计算机应用程序能够显示此示波器的结果。这是正确的方法吗?
我使用 dsPIC 系列 MCU 做了很多工作。我会尽量按顺序回答你的问题。
1) What is the fastest sampling rate I can acheive using these specs?
你的采样率就像你说的那样,1.1 Msps(每秒百万样本),假设你只想从一个通道读取。如果您想从多个通道读取,则每个通道的最大采样率将降低。
2) Is this project feasible? Will it be fast enough to compete against a standard Oscilloscope?
如果您对单片机编程和基本电路原理有基本的了解,这绝对是一个可行的项目。您的示波器应该可以与提供 1.1 Msps 采样率的任何其他示波器相媲美,减去一些功能,例如支持 10x 探头(除非您为该功能构建电路)。该项目的大部分高级功能将内置到您的 Java 程序中,而不是微控制器本身。
3) How can I optimize for the MCU to give best possible performance?
为了尽可能让您的 MCU 发挥最快的性能,运行 时钟的速度要达到规范支持的速度,并尝试找到用最少的指令在您的程序中实现相同结果的方法.这可能意味着避免在 MCU 端进行数据格式化,以允许客户端程序进行这些计算。
4) How would you make this project? (your approach)
这些 MCU 上的 ADC 操作并不是特别复杂。内置模块使项目非常易于管理。这个项目中编程上最困难的部分(在我看来)是通过 USB 传输和接收数据。我会首先处理项目的这一部分(即使 USB 在 PIC 上工作并能够从 Java 中实时接收和处理该数据)。如果您使用 PIC24 或 dsPIC33 系列或类似的带有 Microchip 编译器的 16 位 MCU,我建议使用 C 库,例如这个:http://www.reesemicro.com/Home/pic24-software-library-collection
5) I will be using JavaFx for making the Computer application capable of showing the results of this oscilloscope. Is this the right approach?
我从未使用过 JavaFx,所以我不确定它的功能,但我确信某些 Java 用户界面库能够做到这一点。也许更了解 JavaFx 的人可以回答这部分问题?
我对微控制器还很陌生。所以我对他们的潜力一无所知。
我想用单片机做一个示波器,通过ADC采集数据,通过usb传输给电脑处理显示。
我想讨论这个项目。我拥有的资源如下:
1) 我的 dsPIC MCU 的 ADC 能够提供 1.1 Msps,其中每个样本具有 10 位分辨率。它能够同时对多达 4 个通道进行同步采样。
2) MCU 具有 USB 支持和 DMA 通道,可将数据从 ADC 直接传输到 USB。
我的问题是:
1) 使用这些规格我可以达到的最快采样率是多少?
2) 这个项目可行吗?它的速度是否足以与标准示波器竞争?
3) 如何优化 MCU 以获得最佳性能?
4) 你会如何制作这个项目? (你的方法)
5) 我将使用 JavaFx 使计算机应用程序能够显示此示波器的结果。这是正确的方法吗?
我使用 dsPIC 系列 MCU 做了很多工作。我会尽量按顺序回答你的问题。
1) What is the fastest sampling rate I can acheive using these specs?
你的采样率就像你说的那样,1.1 Msps(每秒百万样本),假设你只想从一个通道读取。如果您想从多个通道读取,则每个通道的最大采样率将降低。
2) Is this project feasible? Will it be fast enough to compete against a standard Oscilloscope?
如果您对单片机编程和基本电路原理有基本的了解,这绝对是一个可行的项目。您的示波器应该可以与提供 1.1 Msps 采样率的任何其他示波器相媲美,减去一些功能,例如支持 10x 探头(除非您为该功能构建电路)。该项目的大部分高级功能将内置到您的 Java 程序中,而不是微控制器本身。
3) How can I optimize for the MCU to give best possible performance?
为了尽可能让您的 MCU 发挥最快的性能,运行 时钟的速度要达到规范支持的速度,并尝试找到用最少的指令在您的程序中实现相同结果的方法.这可能意味着避免在 MCU 端进行数据格式化,以允许客户端程序进行这些计算。
4) How would you make this project? (your approach)
这些 MCU 上的 ADC 操作并不是特别复杂。内置模块使项目非常易于管理。这个项目中编程上最困难的部分(在我看来)是通过 USB 传输和接收数据。我会首先处理项目的这一部分(即使 USB 在 PIC 上工作并能够从 Java 中实时接收和处理该数据)。如果您使用 PIC24 或 dsPIC33 系列或类似的带有 Microchip 编译器的 16 位 MCU,我建议使用 C 库,例如这个:http://www.reesemicro.com/Home/pic24-software-library-collection
5) I will be using JavaFx for making the Computer application capable of showing the results of this oscilloscope. Is this the right approach?
我从未使用过 JavaFx,所以我不确定它的功能,但我确信某些 Java 用户界面库能够做到这一点。也许更了解 JavaFx 的人可以回答这部分问题?