Tốc độ lấy mẫu của Arduino

Chào các bạn, mình xem trên web của Arduino thì họ viết “for boards such as UNO, Nano, Mini, Mega, it takes about 100 microseconds (0.0001 s) to read an analog input, so the maximum reading rate is about 10,000 times a second.”
Tức là tốc độ lấy mẫu tối đa của hầu hết các bản Arduino là 10kHz. Nhưng đó là tốc độ khi đọc 1 đầu vào analog. Vậy nếu mình muốn đọc đồng thời cả 6 analog input thì tốc độ lấy mẫu tối đa có phải vẫn là 10kHz ko hay là (10/6)kHz? Mình ko thấy thông tin Arduino đọc analog theo kiểu simultaneous hay sequential.

Ngoài ra, nếu muốn nối nhiều board Arduino qua I2C/SPI thì tốc độ lấy mẫu có ảnh hưởng gì từ 2 giao thức đó ko? Nếu có thì cụ thể ra sao?

Mong các bạn chia sẻ kinh nghiệm.

1 Like

Thì tốc độ lấy mẫu của nó là 10ksps.
Bạn không thể đọc đồng thời 6 analog input bởi bản chất chỉ có 1 ADC. Bạn chỉ có thể đọc từng input một. Khi đọc trên nhiều input thì đương nhiên tốc độ nó bị chia ra.

Các MCU làm việc đơn luồng nên làm cái gì khác đều ảnh hưởng tới tốc độ lấy mẫu.

Cho bạn thêm một số tốc độ của MCU:
PIC18F4431 : 400ksps.
STM32F104 : 1000kpsp.

5 Likes

Cảm ơn lời giải đáp của bạn.
Cho mình hỏi thêm là baud rate có liên quan gì tới sample rate ko? Ngoài ra, nếu muốn cài đặt sample rate và tùy chỉnh sau này thì phương pháp ra sao. Nếu có thể chia sẻ mình code mẫu thì tốt. Mình tìm ra vài nguồn nhưng thông tin nhiều, hơi rối. Mong nhận được sự hỗ trợ thêm từ bạn.

Baudrate là tốc độ truyền dữ liệu của RS232, không liên quan đến sample rate (tốc độ lấy mẫu) mặc dù baudrate có hơi tý ảnh hưởng đến sample rate tối đa.

Sample rate tối đa do phần cứng quy định. Còn sample rate thực tế là do bạn đặt. Đơn giản thì do bạn quy định thời gian trễ giữa các lần lấy mẫu thì sẽ có sample rate nào đó.

3 Likes

Cảm ơn bạn. Về việc mình muốn làm thì cần đo tín hiệu từ 30 cảm biến. Theo mình xem thì có Arduino Mega 15 analog inputs, Arduino UNO tuy có vẻ phổ biến hơn nhưng chỉ có 6 pins. Nếu dùng ADC mở rộng để chỉ dùng 1 bộ Arduino Mega thì việc code hẳn là dễ hơn là dùng 2 bộ Mega nối qua I2C.
Vậy nên dùng Mega và 1 external ADC chip. Bạn có thể giới thiệu mình vài chip ADC mở rộng phù hợp với số đầu vào như trên ko?

Chào bác Lão Hạc. Em có bải toán muốn hỏi bác mà không biết liên lạc với bác thế nào ạ?

Có việc gì đấy bạn ?

Bác cho hỏi tốc độ lấy mẫu của các chân digital trên con stm32f103 max là bao nhiêu vậy ạ?

image

Khi một GPIO pin được đặt là chế độ input, dữ liệu xuất hiện trên I/O pin được lấy mẫu vào thanh ghi Input Data với mỗi chu kỳ xung nhịp của APB2. Điều đó có nghĩa là tốc độ bus của APB2 xác định tốc độ lấy mẫu của GPIO pin.

Và APB2 có thể được cấu hình xung nhịp tối đa là 72MHz.

=> Cũng có thể suy ra tốc độ lấy mẫu digital lớn nhất là 72MHz.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?