Làm thế nào để tôi đưa ra một danh sách các yêu cầu cho một vi điều khiển cho dự án của tôi? Làm thế nào tôi có thể tìm thấy vi điều khiển phù hợp?


20

Tôi đã làm việc trong một dự án điều khiển eBike trên Arduino MEGA2560. Chương trình chạy các vòng điều khiển PID 3x, một vòng điều khiển dung lượng pin (nội suy dựa trên bảng tra cứu), đồng hồ tốc độ (mẫu dựa trên công tắc sậy) cũng như màn hình LCD để hiển thị thông tin. Đầu vào của nó là 3 tín hiệu tương tự: điện áp pin, đầu vào ga và dòng người dùng cũng như đầu vào kỹ thuật số: tín hiệu bật / tắt công tắc tốc độ (công tắc sậy). Hiện tại, với tất cả điều này chạy trên số học "dài", Arduino quản lý để hoàn thành 10 vòng mỗi giây. Vì màn hình LCD LCD có sức mạnh tính toán rất lớn, tôi nghĩ đến việc thay thế nó bằng màn hình chữ và số.

Các đầu ra bao gồm tín hiệu bướm ga tương tự đi đến bộ điều khiển động cơ, màn hình LCD và có khả năng một vài thiết bị khác yêu cầu tín hiệu tương tự. Do đó, bộ chuyển đổi ADC là thiết yếu và DAC sẽ rất hữu ích mặc dù tôi hiện đang sử dụng đầu ra Arduino Arduino với bộ lọc thông thấp RC. Tương tự, khả năng đọc tín hiệu số và tín hiệu tương tự mà không làm gián đoạn bộ xử lý sẽ rất tuyệt.

Tôi muốn tạo ra một sản phẩm tiêu dùng từ điều này, do đó tôi muốn xây dựng nền tảng của riêng mình từ một bộ vi điều khiển khác có thể cung cấp cho tôi ít nhất 100 mẫu mỗi giây (gấp 10 lần những gì Arduino đạt được). Ngoài ra, để tránh các dấu chấm động, các tính toán của tôi sử dụng các biến dài và do đó các số lớn hơn 16 bit, vì vậy tôi giả sử MCU 32 bit sẽ là một ý tưởng hay. Ngoài ra, một MCU có thể thực hiện các phép tính dấu phẩy động có thể rất thú vị để đơn giản hóa các phép toán trong mã.

Cuối cùng, tôi không chắc chắn làm thế nào để bắt đầu tìm kiếm MCU đáp ứng các yêu cầu này và cho phép chuyển đổi nhanh chóng từ môi trường Arduino. Bất kỳ hướng dẫn nào về cách tìm kiếm MCU như vậy sẽ được đánh giá rất cao!


1
Tôi không nhất thiết muốn được đề xuất các bộ phận mà chỉ là một phương pháp hoặc nền tảng hoặc bất kỳ hướng dẫn nào về cách tìm nền tảng tôi cần.
Eliott W

5
Điều này tốt hơn nhiều so với câu hỏi trước đây của bạn, nhưng nó vẫn rất rộng và một số điểm trong yêu cầu của bạn không rõ ràng. Ví dụ, ý bạn là gì, "không làm gián đoạn bộ xử lý"? Tôi đoán rằng bạn cũng không thực sự muốn thực hiện I / O được thăm dò ý kiến. Bạn cũng cần có cách xử lý tốt hơn về chính xác số lượng máy tính cần thực hiện trên mỗi bộ mẫu.
Dave Tweed

1
Bạn nên xem xét sử dụng toán học số nguyên. Đó là điều đúng đắn.
Scott Seidman


4
Toán nguyên, dài hay ngắn, nhanh hơn nhiều so với dấu phẩy động; và toán học số nguyên dài hơn độ sâu bit "gốc" của bộ xử lý cũng sẽ chậm. Vì vậy, âm thanh 32 bit có vẻ là một ý tưởng rất tốt, có thể là một trong những thiết bị loại "DSP".
pjc50

Câu trả lời:


18

(Đây là một hướng dẫn chung. Tôi nghi ngờ bạn cũng có thể hưởng lợi từ việc tối ưu hóa mã, nhưng điều đó nằm ngoài phạm vi của trang web này.)

Bước 1: Định cỡ thô, ngân sách, nhà cung cấp

Chọn một trong số:

  • Máy tính (Raspberry Pi, Beagleboard, bảng PC104, Intel Edison, v.v.). Khởi động một hệ điều hành đa năng và có nhiều sức mạnh xử lý. Đắt hơn và đói điện. $ 10- $ 100.

  • MCU lớn. ARM Cortex-A / PIC32 / dsPIC / AVR32 / TI C series DSP, vv Sức mạnh tính toán, hệ điều hành tùy chọn. ~ 5 đô la.

  • MCU nhỏ. Cortex-M / PIC16. Không thực sự đủ không gian cho một hệ điều hành thực sự, có thể chỉ là một trình lập lịch tác vụ nhẹ. ~ 2 đô la.

  • MCU nhỏ bé. Chỉ thực sự cho các ứng dụng mà bạn quan tâm về mọi mức tiêu thụ điện năng cuối cùng. ~ $ 1 trở xuống.

Bạn cũng nên xem xét ở giai đoạn này nhà cung cấp và dụng cụ nào bạn thích và không thích. Có một cái nhìn về chi phí của những thứ như các thiết bị gỡ lỗi trong mạch và IDE.

Bước 2: Thiết bị ngoại vi tối thiểu

Bạn có cần những thứ như USB không? PCI? HDMI? SATA? ADC hay DAC nhanh bất thường? Hầu như tất cả các loại "nhỏ" hoặc "nhỏ" không có những thứ này, mặc dù USB khá phổ biến.

Bước 3: Nguyên mẫu

Chọn một cái gì đó đáp ứng các tiêu chí trên, một cách ngẫu nhiên nếu cần thiết, bắt đầu, tìm hiểu mức độ khả thi của nó và bao nhiêu không gian / sức mạnh xử lý mà bạn cần. Bạn đã thực hiện một số điều này. Viết bằng C sẽ làm cho nhiều logic di động.

Khi bạn có nguyên mẫu, bạn có thể tự nói với mình: "Tôi cần một cái như thế này, nhưng với nhiều X hơn" và để điều đó dẫn dắt quyết định của bạn.

Bước 4: Thu nhỏ

Nói chung, dễ dàng hơn để bắt đầu với thành viên lớn nhất (hầu hết Flash và RAM) trong họ CPU, viết v1 ứng dụng của bạn và sau đó chọn một ứng dụng nhỏ hơn, rẻ hơn để phù hợp. Bạn cũng có thể dành thời gian cho nghệ thuật lắp phần mềm vào ít tài nguyên hơn. Những gì đáng giá phụ thuộc vào số lượng đơn vị bạn sẽ thực hiện.


14
Bước 0: Chuỗi công cụ (môi trường phát triển phần sụn). Tìm (các) môi trường phát triển mà bạn có thể tạo ra công việc cho bạn. Đây là nơi nó thắng hoặc thua. Ngay cả khi bạn có silicon phù hợp hoàn hảo, nhưng bạn không thể làm cho môi trường phát triển phần sụn hoạt động (vì bất kỳ lý do nào), thì dự án của bạn sẽ không khởi đầu. (Trường hợp cụ thể: Arduino IDE đã đưa nguyên mẫu dựa trên Arduino của bạn lên khỏi mặt đất.)
Nick Alexeev

8
Việc phân loại Cortex-M là "MCU nhỏ" và PIC32 / AVR32 là "MCU lớn" có vẻ hơi đáng tiếc. Cá nhân tôi chưa sử dụng PIC32 / AVR32, nhưng dựa trên một cái nhìn nhanh về phạm vi của thông số kỹ thuật, tôi muốn nói rằng tất cả chúng nên nằm trong cùng một khung. (Có MCU Cortex-M chạy ở tốc độ> 200 MHz, có nhiều megabyte flash và hơn nửa megabyte RAM)
Aleksi Torhamo

13

Dự án đẹp. Dưới đây là một vài gợi ý, tuy nhiên sẽ rất khó để khái quát hóa điều này cho mọi dự án.

Bắt đầu với các yêu cầu tính toán

Đây là những gì sẽ cho bạn biết loại cốt lõi bạn cần và các màn trình diễn chung của MCU. Tôi khuyên bạn nên bắt đầu với điều này, vì rõ ràng nó không thể được mở rộng bằng cách sử dụng các thành phần bên ngoài, không giống như các thiết bị ngoại vi.

Đầu tiên, có vẻ như bạn sử dụng các phép toán nặng với các số nguyên lớn trong vòng lặp. Vì vậy, như bạn đã đề xuất, 32 bit sẽ hữu ích ở đây, do đó ARM là một ứng cử viên lý tưởng. Đối với tần suất hoạt động: hiện tại, bạn đang sử dụng Arduino MEGA2560 (chạy ở tốc độ 16 MHz, tôi giả sử) và bạn có thể thực hiện 10 vòng / s. Nếu bạn muốn đạt được 100 vòng / giây, bạn sẽ ổn với Cortex-M3 / M4 trong phạm vi 100 MHz trở lên (ước tính sơ bộ). Lưu ý rằng Cortex-M4F có đơn vị điểm nổi.

Chúng tôi đã thu hẹp lựa chọn.

Yêu cầu bộ nhớ

Điều này thật dễ dàng: chọn MCU có nhiều RAM / Flash nhất trong phạm vi của nó cho nguyên mẫu. Khi bạn xác thực nguyên mẫu, hãy chuyển sang MCU từ cùng phạm vi có đủ RAM / Flash, bây giờ bạn đã biết các yêu cầu chính xác của mình.

Lưu ý rằng tôi không nghĩ rằng ứng dụng của bạn cần số lượng bộ nhớ đáng kinh ngạc.

Bây giờ, các thiết bị ngoại vi

Bạn hoàn toàn cần một số ADC. Tất cả các MCU của phạm vi chúng tôi đang xem có một số, vì vậy đó không phải là một tiêu chí hữu ích. Không phải là đầu vào / đầu ra kỹ thuật số, ngoại trừ nếu bạn cần một số lượng rất lớn trong số họ (dường như không phải là trường hợp của bạn).

Bạn dường như cần một bộ xử lý. Tuy nhiên, đây là thứ bạn thực sự sẽ không dễ dàng tìm thấy và sẽ thu hẹp các ứng cử viên quá nhiều. Vì vậy, chúng tôi không giữ yêu cầu đó và chúng tôi sẽ ở lại với một PWM và đường thông thấp (thực sự có thể chấp nhận được).

Bạn không đề cập đến bất kỳ giao diện giao tiếp nào, ngoại trừ LCD (sau này). Dù sao, tất cả các MCU đều có I2C / SPI / UART / ... nếu bạn cần.

Màn hình LCD

Đây là một trong những khó khăn hơn, bởi vì có rất nhiều giải pháp khác nhau đặt ra các yêu cầu hoàn toàn khác nhau về MCU. Nhưng đừng chọn LCD tùy thuộc vào MCU. Chọn màn hình LCD bạn muốn cho sản phẩm của mình và sau đó chọn MCU sẽ điều khiển nó hiệu quả.

  • Nếu bạn muốn có màn hình LCD ký tự: thì MCU dễ nhất và ít ràng buộc nhất là nói chuyện với nó thông qua một số giao diện nối tiếp (thường là SPI). Bằng cách này, nó sẽ không sử dụng quá nhiều mã PIN, bạn có thể sử dụng MCU nhỏ hơn / rẻ hơn và tốc độ không phải là vấn đề.
  • Nếu bạn muốn có màn hình LCD LCD đồ họa: nếu là màn hình nhỏ, liên kết nối tiếp vẫn có thể phù hợp. Tuy nhiên, đối với 320x200 hoặc lớn hơn và nếu bạn muốn có một giao diện đồ họa đẹp, bạn sẽ bắt đầu muốn giao tiếp với giao diện song song. Trong trường hợp này, bạn sử dụng một số GPIO (nhưng điều đó sẽ gây thêm tải cho MCU vì bạn sẽ phải đập các dòng điều khiển) hoặc bạn chọn MCU có giao diện LCD chuyên dụng (thường giống với giao diện bộ nhớ ngoài). Điều cuối cùng này đặt ra một ràng buộc mạnh mẽ đối với lựa chọn MCU, nhưng bạn không có những ràng buộc mạnh mẽ khác, vì vậy ...

Bây giờ, bạn chọn

Truy cập trang web ST Micro / NXP / Atmel và sử dụng các công cụ lựa chọn MCU của họ. Bạn cũng sẽ dành nhiều thời gian để đọc datasheets. Hãy dành thời gian này. Nó không lãng phí. Bất cứ điều gì bạn sẽ học ở đây, ngay cả khi bạn không sử dụng nó cụ thể cho dự án này, đều có thể hữu ích.

Tại thời điểm này, bạn cũng cần xem số lượng mã PIN bạn thực sự cần và kiểm tra sơ đồ ghép kênh của các ứng cử viên MCU đã chọn để xác minh bạn có thể sử dụng tất cả các chức năng mã PIN bạn cần. Bởi vì rõ ràng, bạn sẽ muốn lấy MCU với số lượng chân thấp nhất đáp ứng yêu cầu của bạn (vì lý do chi phí / PCB bất động sản).

Kiểm tra giá / phòng trống trên Mouser / Digikey. Nhưng bạn không cần một cái gì đó đặc biệt đắt tiền ở đây. Có thể 5 € hoặc hơn.

Điều cuối cùng liên quan đến điều khiển LCD

Có vẻ như bản cập nhật của LCD là một phần của vòng lặp chính của bạn. Nó không nên. Đặc biệt nếu bạn lặp 100 lần một giây, điều đó là vô ích. Tạo vòng điều khiển tính toán mọi thứ và điều chỉnh lệnh động cơ trên mỗi lần lặp, nhưng chỉ cần cập nhật các giá trị để hiển thị ở đâu đó trong bộ nhớ. Sau đó, có một vòng lặp khác có mức độ ưu tiên thấp hơn hiển thị thông tin này cho người dùng khi không có gì quan trọng hơn để làm.

Vâng, lý tưởng, nó đòi hỏi một số chuyển đổi nhiệm vụ và công cụ. Một hệ điều hành thực sự, thực sự (tra cứu FreeRTOS, Coocox OS, Nuttx, ... những thứ rất nhỏ, phần lớn được sử dụng trên Cortex-M và cung cấp các cơ chế đa nhiệm cần thiết).


Cảm ơn bạn rất nhiều vì câu trả lời toàn diện của bạn! Tôi nhận thấy rằng tất cả các MCU ARM Cortex đều hoạt động trên 3.3V. Tín hiệu bướm ga của tôi cần phải mở rộng giữa 1 và 5V. Tôi đoán rằng nếu tôi muốn sử dụng bộ điều khiển ARM, tôi sẽ phải tìm cách tăng cường điện áp vì nó sẽ được giới hạn ở mức 3,3V từ MCU?
Eliott W

Vâng. Tín hiệu bướm ga là đầu ra tương tự, phải không? Trong trường hợp đó, bạn có thể sử dụng opamp để khuếch đại nó.
mờ

Tôi không chắc chắn tôi đồng ý với câu cuối cùng về việc yêu cầu "một hệ điều hành thực sự". Tôi cho rằng nó phụ thuộc vào mức độ các giải pháp làm sẵn mà bạn muốn. Nếu bạn muốn một cái gì đó mà bạn có thể bỏ logic kinh doanh của mình và bắt đầu đập bỏ các đơn vị, vâng, một hệ điều hành toàn diện (lưu ý rằng điều này không có nghĩa là một cái gì đó như Windows hoặc thậm chí Linux!) Chắc chắn hữu ích.
một CVn

1
@ MichaelKjorling tất nhiên, tôi không có ý gì đó thậm chí từ xa như Linux. Nhưng đúng hơn là một cái gì đó như FreeRTOS, Coocox OS hoặc Nuttx chẳng hạn. Đây là những gì tôi coi hệ điều hành thực sự , mặc dù rất nhỏ. Tôi đã viết rằng bởi vì thực sự, làm điều này trên kim loại trần sẽ mất nhiều thời gian hơn, là một nỗi đau để gỡ lỗi và kém linh hoạt. Và môi trường Arduino (mặc dù tôi không phải là một chuyên gia về vấn đề này) dường như không cung cấp các cơ chế tác vụ (và, do đó, tôi không coi đó là một hệ điều hành thực sự ).
mờ

1
À. Chà, tôi đã đọc sai phần "thực" rồi. Chỉ vì lợi ích của chúng tôi những người hướng ngoại đôi khi kết thúc ở đây, bạn có thể muốn xem xét làm rõ phần đó trong câu trả lời của bạn.
một CVn

4

Lưu ý rằng đây là một chủ đề rộng có thể được trả lời chính xác bằng nhiều cách tiếp cận (chủ quan).

Ngoài ra, định dạng stackexchange không tốt trong việc thiết kế các giải pháp cho các vấn đề. Ví dụ, bạn hiếm khi khiến mọi người thiết kế phần cứng cho bạn. Thay vào đó bạn đề xuất một thiết kế phần cứng và đặt câu hỏi về nó.

Mà nói...

Bắt đầu với các tính năng của bộ xử lý bạn không thể thay đổi. Chẳng hạn như tốc độ và bộ nhớ (nếu có) kích thước. Điều tra nếu bạn cần ngắt và mức độ phức tạp của việc xử lý ngắt.

Nếu bạn cần hỗ trợ ngoại vi như ADC hoặc DAC, tình hình phức tạp hơn. Các tính năng này nên được tích hợp vào bộ xử lý hoặc nằm ngoài bộ xử lý. Giá cả, độ chính xác và thậm chí tiếng ồn là những yếu tố trong quyết định này.

Nếu các thiết bị ngoại vi bên ngoài được hỗ trợ, hãy xem xét loại truyền thông nối tiếp cần thiết. Phần cứng bên ngoài có thể cần SPI, I2C hoặc loại UART khác. Nếu tốc độ dữ liệu cao, tốt nhất nên tìm bộ xử lý có các tính năng DMA được liên kết với các cổng giao tiếp nối tiếp của nó.

Cuối cùng, nếu đây là một ứng dụng bộ xử lý nhúng (thường có nghĩa là bộ xử lý dành riêng cho một tác vụ), hãy xem xét chia các yêu cầu thành nhiều nhóm và gán bộ xử lý cho mỗi nhóm. Ví dụ, bộ xử lý hiển thị GUI có thể không cần tính năng ADC. Cách tiếp cận khách quan này để giải quyết vấn đề đã được chứng minh là thành công trong phần mềm và với việc giảm giá bộ xử lý cũng có thể được áp dụng cho phần cứng.

Trong thế giới thực, cách tiếp cận này là lặp đi lặp lại. Đó là, nhiều dự án bắt đầu với một bộ xử lý và trao đổi các bộ xử lý khác nhau khi xảy ra sự cố phần cứng và / hoặc phần mềm hoặc phạm vi của dự án thay đổi.


Bạn là một thẩm phán tốt hơn về loại số để mong đợi hơn trình biên dịch. Tôi sẽ tránh cách tiếp cận chung của việc sử dụng phao. Ví dụ, có thể các kết quả nổi không giống nhau trên các nền tảng khác nhau! Tôi sẽ sử dụng số học số nguyên và điều chỉnh giải pháp cho nhu cầu của bạn.
st2000

3

Tôi không thấy ai đề cập đến chi phí của các công cụ. Công ty của tôi chọn TI CC2541 và phát hiện ra nó chỉ được biên dịch với trình biên dịch IAR $ 4k, chắc chắn là một điểm dừng hiển thị cho một người có sở thích. Cũng là lập trình viên. Nó có thể là $ 20 hoặc nhiều hơn nữa. Các công cụ rẻ hơn dường như là chuẩn mực hơn bây giờ, vì vậy có lẽ đây sẽ là một điều của quá khứ sớm.

Ngoài ra, nếu bạn tự chỉnh lại nó, các gói như TQFP sẽ dễ dàng hơn, giả sử, BGA. Một BGA lớn là khó để có được đúng, dựa trên kinh nghiệm cá nhân.


2

Nếu sản phẩm tương đối nhạy cảm về giá và bạn có kinh phí phát triển khá, bạn có thể mua một loạt các bảng đánh giá và lập hồ sơ mã trên mỗi bảng để có ý tưởng. Điều đó khá đơn giản nếu mã của bạn được viết bằng xách tay C. Ngoài vi mô, bạn sẽ đánh giá các bộ công cụ với các phiên bản demo trước khi loại bỏ chi phí của một IDE toàn diện như IAR hoặc Keil. Trong một số trường hợp, bạn có thể cấu hình mã tắc nghẽn trực tiếp trên IDE mà không cần phần cứng.

Nếu bạn bị ràng buộc chặt chẽ về chi phí phát triển, bạn có thể phải thỏa hiệp để tìm thứ gì đó không tốn quá nhiều chi phí cho việc thiết lập phát triển.

Ví dụ: ST có bảng eval ARM Cortex M7 với màn hình màu đẹp với giá <$ 100. Nó có một FPU với các tính năng DSP để bạn có thể làm bất cứ điều gì bạn đã nói một cách dễ dàng - có thể chạy vòng lặp PID ở 100kHZ thay vì chỉ 100Hz. Nó có thể là quá mức trừ khi màn hình đó là một ưu tiên.

Nếu bạn đang nhắm đến một bộ xử lý rẻ hơn mà không có FPU thì có lẽ bạn sẽ muốn cấu hình mã PID ở dạng hoàn thành. Hãy chắc chắn rằng tất cả các yếu tố tỷ lệ và tuyến tính hóa và hiệu chuẩn được bao gồm, vì chúng có thể cộng lại về thời gian xử lý.

Thông thường các thiết bị ngoại vi và chất lượng phần mềm trung gian có liên quan và có sẵn (và các điều khoản cấp phép) sẽ ảnh hưởng mạnh đến sự lựa chọn của bạn. Nếu bạn cần chế độ máy chủ BT hoặc Wifi hoặc USB và các tệp FAT để lưu trữ trên ổ USB hoặc giao diện SD nhanh, đây sẽ là những yếu tố quan trọng. Một số chip có bộ điều khiển LCD trên bo mạch và bộ điều khiển số hóa có thể cho phép sử dụng bảng điều khiển màn hình LCD tương đối rẻ tiền. Đừng bỏ qua phí bản quyền đôi khi cao.

Nếu bạn có một số ý tưởng về bộ nhớ chương trình cần thiết, tốc độ xử lý và các thiết bị ngoại vi (bao gồm cả FPU trong phần này), bạn có thể thực hiện tìm kiếm tham số tại nhà phân phối trước khi đi sâu vào bảng dữ liệu. Một số thứ quá hạn chế có thể là - gói xuyên lỗ, bộ xử lý nội bộ, Ethernet PHY, FPU bên trong. Không ai trong số này có thể là cần thiết và chúng có thể hạn chế quá mức các lựa chọn của bạn sớm.

Chúc may mắn với nó, đó là rất nhiều công việc để làm điều này đúng. Theo kinh nghiệm của tôi, đó là một nền kinh tế sai lầm khi cắt nó quá gần với một sản phẩm mới bởi vì khách hàng chắc chắn sẽ yêu cầu những thứ bạn không lường trước được và bạn muốn có một số khả năng dự phòng để cung cấp mà không cần bắt đầu lại. Mặt khác, nếu sản phẩm quá đắt, bạn sẽ không thể bán đủ với mức lợi nhuận đủ để duy trì hoạt động kinh doanh.


1

Có nhiều nền tảng khác nhau mà bạn có thể bắt đầu xem xét như Arduinos, vi điều khiển PIC, FPGA và nhiều hơn nữa. Tôi đã làm việc với Arduinos trong quá khứ và nó có một cổng ADC có khả năng đạt 74kS / s. 100 mẫu mỗi giây là cực kỳ chậm và tôi tự hỏi làm thế nào bạn tìm ra nó? Mặt khác, bạn muốn tự hỏi mình nếu bạn sẽ cần bất kỳ loại giao diện nào như SPI, CAN, I2C hoặc UARTs. Tất cả họ đều có thể có lợi ích riêng của họ và bạn nên cân nhắc nếu bạn sẽ nói chuyện với một hoặc nhiều nô lệ. Bước cuối cùng nhưng có lẽ là quan trọng nhất sẽ là đoán xem bạn cần sử dụng bao nhiêu chân trên vi điều khiển.

"Khả năng đọc tín hiệu tương tự với tín hiệu số mà không làm gián đoạn bộ xử lý sẽ rất tuyệt." Tôi có thể đoán mò bằng cách nói rằng bạn không muốn đối phó với bộ đệm bên ngoài hoặc bên trong sẽ lưu thông dữ liệu của bạn và có khả năng làm chậm quá trình xử lý dữ liệu của bạn. Có đúng không? Nếu vậy, đó là lập trình nhiều hơn để bạn làm nhưng bộ xử lý thường có khả năng xử lý tốc độ 100 mẫu mỗi giây. Nó sẽ tùy thuộc vào bạn để lập trình đồng hồ, tốc độ lấy mẫu và phần còn lại.

Ngoài ra, hãy xem xét các ngắt trong chương trình của bạn nếu bạn muốn tiếp tục lấy mẫu dữ liệu và thực hiện các tác vụ khác khi cờ được nâng lên.


2
Tôi nghĩ rằng bạn đã bỏ lỡ điểm. Ông có một nguyên mẫu được xây dựng trên Arduino. Việc lấy mẫu không chậm. Các vòng điều khiển bị chậm. Anh ta có ba bộ điều khiển PID được tính toán bằng cách sử dụng điểm nổi trên Arduino, vì vậy chúng chậm hơn so với mật rỉ trong một mùa đông ở Nam Cực. Vì vậy, lấy mẫu không phải là vấn đề. Mã không hiệu quả là.
JRE

Bạn nói đúng về điều đó.
12Lappie

Có, vấn đề là mặc dù các vòng lặp của tôi ở trạng thái dài và không nổi, nhưng có rất nhiều phép tính được thực hiện khi Arduino lấy mẫu một lần trên mỗi vòng lặp, tốc độ mẫu của tôi rất nhỏ (hiện tại là 20 mẫu mỗi giây) .
Eliott W
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.