Nên sử dụng vi điều khiển nào?


10

Tôi đang cố gắng tìm gói điều khiển vi mô tốt nhất cho các chương trình máy tính của mình để giao tiếp với thế giới thực. Tôi hy vọng có một số lượng lớn các chân I / O (cho đến nay là 64 kỹ thuật số là tất cả những gì tôi cần, không có gì lạ mắt như analog và PWM) mà tôi có thể đọc và viết trực tiếp bằng cách gọi các chức năng từ chương trình của mình chạy trên CPU.

Tôi không muốn tải xuống các chương trình trên bộ điều khiển vi mô để chạy, thay vào đó tôi muốn một cái gì đó chỉ cần cắm vào USB của tôi và cung cấp cho tôi một loạt các chân I / O do CPU kiểm soát mà tôi có thể điều khiển từ các chương trình C ++ của mình.

Điều gì sẽ là gói điều khiển vi tốt nhất cho tôi? Tôi hy vọng một cái gì đó khá rẻ nhưng bằng chứng trong tương lai, vì nó chạy USB và có trình điều khiển 64 bit cho HĐH hiện đại như Windows 7. Có thể giao tiếp nhiều hơn một trong những bộ điều khiển vi mô này với cùng một chương trình máy tính sẽ là một tiền thưởng lớn là tốt (mở rộng trong tương lai).

Chỉnh sửa: Tôi không cần tốc độ lấy mẫu cao (có thể là 10 Hz để đọc đầu vào, 1 kHz cho tín hiệu đầu ra) và hầu hết các chân chỉ được sử dụng cho đầu ra. Tôi đang làm việc với các máy tính hoàn toàn mới (lõi i7 860) vì vậy ngay cả khi việc lấy mẫu hơi kém hiệu quả hoặc chậm, nó vẫn ổn (chỉ cần có một luồng dành riêng cho I / O và có chương trình chính giao tiếp với nó).

Tôi cũng không cần tất cả 64 chân I / O trên một gói bộ điều khiển vi mô. Nếu tôi có thể giao tiếp nhiều gói bộ điều khiển vi mô cùng một lúc, thì nó cũng hoạt động (thực sự sẽ rất lý tưởng để có thể giao tiếp với nhiều gói bộ điều khiển vi mô nhỏ hơn, điều đó có nghĩa là nó dễ dàng mở rộng).

Tôi đã xem cái này: http://www.schmalzhaus.com/UBW32/index.html

Có ai có bất kỳ kinh nghiệm với một cái gì đó như thế này? Bất kỳ ý tưởng nếu nó sẽ làm việc hay không? Mối quan tâm chính là nó là bộ điều khiển vi mô đang chạy chương trình chứ không phải CPU của tôi.


1
Tốc độ dữ liệu nào bạn cần?
Kevin Vermeer

@reemrevnivek: Tôi ước tính tôi sẽ cần khoảng 10 Hz tốc độ lấy mẫu cho đầu vào và 1 kHz cho đầu ra, I / O rất chậm.
Thực hiện

Trong trường hợp của bạn, dự án bạn đã tìm thấy có thể sẽ hoạt động khá tốt. Đây là một hệ thống đã được kết hợp với nhau (không cần hàn luôn luôn tốt) và dường như có phần sụn rất cơ bản để cung cấp cho bạn quyền truy cập vào tất cả các cổng bạn cần. Tỷ lệ lấy mẫu thấp có nghĩa là kết nối nối tiếp sẽ hoạt động đủ tốt. 40 $ sẽ không phá sản bạn, phải không? Nếu vậy, chỉ cần thử nó trước khi bạn nhìn vào một giải pháp đắt tiền hơn.
Simons Wons

Câu trả lời:


4

Đã làm

UBW32 là một cách rất tốt để đi, từ những gì tôi có thể nói về yêu cầu của bạn. Nó sẽ hỗ trợ chính xác những gì bạn cần, miễn là bạn ổn với 3.3VI / O (một số dung sai 5V, nhưng không phải tất cả.) Nó không tốn kém ($ 40) và rất dễ nói chuyện với bất kỳ ngôn ngữ nào có thể hỗ trợ các cổng nối tiếp (có khá nhiều trong số chúng - Cơ bản, C, C #, Đang xử lý, v.v.)

Bạn có thể sử dụng bất kỳ chân nào trong số 76 chân I / O làm đầu vào hoặc đầu ra. Chương trình cơ sở chứng khoán như được vận chuyển sẽ cho phép bạn làm những gì bạn muốn làm, không yêu cầu lập trình ở phía nhúng. Nhận dữ liệu đó lên PC qua USB (chỉ 10Hz) sẽ không có vấn đề gì. Bắt đầu ra ở mức 1KHz có thể cũng sẽ hoạt động tốt.

Nếu có thắc mắc gì xin cứ hỏi tôi. Tôi rất vui khi được giúp bạn.

* Brian Schmalz người tạo UBW32


Ban tốt đẹp, ông Schmalz
Wouter Simons

Vâng, đây là thách thức an ủi. Là một kỹ sư cơ khí để bắt đầu và biết rất ít về lập trình và thậm chí ít hơn về điện tử; một nền tảng dựng sẵn có giao diện với C / C ++ chính xác là những gì tôi cần để khắc phục khía cạnh lập trình điện tử và vi điều khiển. Cảm ơn bạn đã giúp đỡ!
Được thực hiện vào

9

Tôi khuyên dùng Teensy ++ 2.0 (hoặc bất kỳ bảng phát triển AT90USB1286 nào khác)

Flash 128KB, RAM 8KB, 46 chân I / O, 8 đầu vào tương tự

$ 24

Các bảng Teensy được hỗ trợ USB và có thể cung cấp cổng COM ảo (Lớp thiết bị truyền thông USB). Bạn có thể sử dụng liên kết nối tiếp này cho giao thức điều khiển pin của bạn. Điều này hoạt động mà không có bất kỳ trình điều khiển tùy chỉnh trên Windows, OSX và Linux.

Để tạo chương trình cơ sở điều khiển pin, có TeensyDuino hoặc C. cũ đơn giản

Khi đập bit, nút cổ chai sẽ là giao diện USB của vi điều khiển. Vì vậy, bạn có thể muốn chuyển các giao thức như I2C và SPI xuống vi điều khiển. Đối với điều này, bạn có thể sử dụng Bus Ninja của tôi .

Thêm thanh thiếu niên bổ sung vào thiết lập của bạn rất đơn giản, bạn chỉ cần một cổng USB cho mỗi thiết bị, hiển thị một cổng COM ảo cho mỗi thiết bị.

(Lưu ý. Cách tiếp cận này sẽ hoạt động tốt như nhau với toàn bộ bộ xử lý ARM và các bộ xử lý khác, tôi chỉ không biết về bất kỳ bảng phát triển giá rẻ nào có phần mềm có sẵn).

Một cách khác có thể là sử dụng Arduino và Tấm chắn con sâu để mở rộng I / O. Trên một bảng tùy chỉnh tôi xây dựng xung quanh cùng một bộ mở rộng I / O, tôi có thể cập nhật 256 đầu ra với tốc độ hơn 1KHz.


4

Tôi nghĩ rằng những gì bạn muốn không phải là một vi điều khiển, mà là một cái gì đó giống như thẻ I / O National-PCI-6509 . Bạn cũng có thể nhận phiên bản USB, nhưng chúng có ít I / O hơn so với PCI-6509. National Cụ sẽ bán cho bạn trình điều khiển C ++.

Nếu nó trông quá đắt, bạn có thể thử một cái gì đó như Labjack U3 .


Tôi đã sử dụng labjack, nó thực sự làm chậm máy tính của bạn nếu bạn làm bất cứ điều gì nghiêm trọng hơn (tốc độ lấy mẫu cao hơn), nhưng thật tuyệt vời cho logic đơn giản tốc độ mẫu chậm. Các hệ thống NI là tuyệt vời, nhưng gói phần mềm quá đắt để sử dụng tại nhà. (Ít nhất là cho việc sử dụng nhà của tôi.)
Wouter Simons

4

Giải pháp bạn mô tả không tồn tại với giá thấp hơn. Vấn đề là bạn muốn chạy phần mềm điều khiển trên một hệ thống không được thiết kế cho nó. Nối tiếp 64 cổng và đẩy nó qua USB với tốc độ lấy mẫu cao làm chậm máy tính chủ rất nhiều.

Có những giải pháp hoạt động cho các ứng dụng hiệu suất thấp như labjack đã đề cập. Nhưng giải pháp thực sự bạn cần để xử lý tỷ lệ IO cao sẽ liên quan đến một hệ thống được lập trình. Câu hỏi là bạn phải sử dụng chương trình nào để thực hiện hệ thống.

LabView là phần mềm rất đắt tiền (hoạt động rất tốt, đừng hiểu sai ý tôi). Nó sử dụng ngôn ngữ đồ họa để thiết kế phần mềm và biên dịch thành mã chạy trên hệ thống FPGA hoặc ARM. Tất cả các thành phần đều quá đắt đối với một ứng dụng nhúng khối lượng lớn, nhưng hoàn toàn tuyệt vời trong môi trường thử nghiệm vì sự phát triển nhanh chóng, hiệu suất cao được cung cấp.

Một giải pháp ít tốn kém hơn là tìm một hệ thống chạy linux với nhiều I / O. EmbeddedARM.com là một trang web cung cấp nhiều loại sản phẩm cho việc này. Mã bạn có thể viết có thể ở dạng shell script, java, C, v.v.

Các hệ thống Arduino cung cấp các bộ vi điều khiển có thể được phát triển với môi trường phát triển đơn giản hơn. Bản chất nguồn mở của họ có nghĩa là đã có nhiều dự án để học hỏi.


3

Tôi không biết bất kỳ với 64 chân GPIO, đó là rất nhiều, bạn có thể phải tự xây dựng nó.

Tôi sử dụng điều này để thử nghiệm giao diện nối tiếp nhưng nó cũng có 23 chân GPIO.

Nếu bạn chỉ cần google cho 'USB to GPIO', có một loạt các dự án đã thực hiện điều này, tôi đã không thấy bất kỳ trang nào trong vài trang đầu tiên với 64 GPIO, đây là trang gần nhất tôi tìm thấy, với 32 chân.

Xây dựng một thứ sẽ không quá khó, có lẽ tôi chỉ cần sử dụng một pic18 100 pin tích hợp USB PHY (tùy thuộc vào yêu cầu tốc độ của bạn, một cpu mạnh hơn có thể theo thứ tự)

bạn sẽ không phải thực hiện quá nhiều mã hóa để nó hoạt động miễn là nhà cung cấp uC của bạn cung cấp bộ xương trình điều khiển USB.

Bạn sẽ phải xây dựng một PCB cho nó rất có thể vì các chip đủ lớn để có 64 chân GPIO thường không có trong các gói thông qua lỗ. Bạn cũng có thể sử dụng một bộ vi điều khiển nhỏ hơn và sử dụng IC mở rộng cổng ngoài cho GPIO của mình nhưng đó sẽ là một thiết kế phức tạp hơn và phức tạp hơn để lập trình.

Bạn cũng có thể nhìn vào bảng dev định tuyến tất cả các chân I / O đến các tiêu đề và có USB. Những thứ này có thể sẽ đắt hơn rất nhiều vì chúng có thể sẽ có một loạt những thứ bạn không cần.

Một mẹo cuối cùng, nếu bạn tìm thấy một bo mạch có RS232 nhưng có sẵn 64 chân GPIO, bạn có thể sử dụng bộ chuyển đổi từ USB sang USB, tôi có một vài trong số này hoạt động tốt với tôi. Tuy nhiên, điều này giới hạn tốc độ của giao diện RS232.


3

Môi trường NI Labview đắt tiền, nhưng nó sẽ làm những gì bạn cần (Qua USB, Ethernet hoặc PCI tùy thuộc vào những gì bạn nhận được.)

Arduino Mega có 54 chân, giúp bạn đóng, với giá 60 đô la. Tuy nhiên, nó không phải là một bộ phân tích logic ra khỏi hộp; bạn phải viết hoặc tìm một bản phác thảo để làm điều này. Có thể có sẵn một cái, tôi không biết. Điều này khá đơn giản với giá vé xe buýt thấp. Mỗi hướng dẫn trên Mega xảy ra ở 16 MHz, vì vậy bạn sẽ có tốc độ truyền khá chậm, bạn sẽ may mắn hoặc rất thông minh nếu bạn có thể nhận được tín hiệu 115200 baud.

Cuối cùng, đây là một dự án rất khác nếu bạn lấy mẫu ở mức 9600 baud hoặc ở tốc độ 50 MHz. Hãy nhớ rằng, USB chạy ở 480 MHz (về lý thuyết, tốc độ dữ liệu thực tế của bạn sẽ thấp hơn do độ trễ và chi phí hoạt động), do đó bạn không thể làm tốt hơn 480/64 = 7.5 MHz mà không cần đệm. Với số tiền đệm và tục tĩu (Hơn cả xe của bạn), các máy phân tích logic có thể giúp bạn có được 68, 102 hoặc 136 kênh với tốc độ dữ liệu gigahertz.

Tôi sẽ đề nghị bạn rất nghiêm túc cố gắng tìm hiểu xem bạn có thể sử dụng một công cụ cung cấp cho bạn 8 kênh hay không và cố gắng phân tích chúng một cách riêng biệt.

EDIT: Aargh, tôi đã nghĩ gì? Nếu bạn đang đi với tốc độ chậm như thế, thì làm việc qua một liên kết nối tiếp chắc chắn là cách tốt nhất. Tôi sử dụng hệ thống mô-đun ADAM 4000 từ Eclech mọi lúc tại nơi làm việc; chúng mạnh mẽ, dễ sử dụng (dễ dàng giao tiếp với giao thức ASCII qua cổng COM hoặc sử dụng phần mềm GUI đi kèm), có thể mở rộng và được hỗ trợ tốt. Nhận cho mình một bộ điều khiển 4500 (RS-232, sử dụng bộ chuyển đổi USB hoặc cổng COM trên máy tính của bạn (nếu vẫn có)) hoặc bộ điều khiển 4501 (Ethernet với máy chủ web nhúng), liên kết trong một loạt các mô-đun 4053, 4055 và 4056, và bạn tốt để đi.


Oh. nhưng chúng khá tốn kém .... như $ 100 đến $ 150 cho 16 kênh.
Kevin Vermeer

Tôi có một bộ phân tích logic cổng intronix 34 để kiểm tra phần mềm của tôi (tức là kết nối các đầu vào với đầu ra của các chân điều khiển vi điều khiển). Tôi nghĩ khoảng 500 đô la, nhưng nó cũng không thực sự là I / O kỹ thuật số phải không? Nó không có nghĩa là để lập trình logic tùy chỉnh với, chỉ để phân tích các kênh. Của tôi có thể hoạt động ở tốc độ lấy mẫu 500Mhz, nhưng tôi thường không cần tốc độ đó, trừ khi các thiết bị ngoại vi tôi muốn vi điều khiển kiểm soát tốc độ lên tới 200Mhz hoặc hơn (mà chúng thường không làm được). - Dù sao, truyện dài ngắn. Tôi tin rằng một bộ phân tích logic không phải là những gì người hỏi câu hỏi cần.
Wons Simons

Đó chắc chắn là tôi, nhưng không phải O. Không, tôi đồng ý rằng bộ phân tích logic không phải là thứ mà người đó cần, được cung cấp thông tin mới.
Kevin Vermeer

2

Thứ này có 70 GPIO và giao diện USB với giá 50 đô la.


Bạn có thể sử dụng các chức năng gọi để đọc và ghi dữ liệu pin trực tiếp từ các chương trình C ++ đang chạy trên CPU của bạn không?
Thực hiện

Tôi sẽ đề xuất rằng NXP sẽ có một cái gì đó dựa trên ARM với một số I / O và nếu bạn không thể có đủ chúng để tát vào các bộ mở rộng I2C IO. Bạn không thể đánh bại giá của thứ đó, và nó đang chơi. Công việc tuyệt vời
akohlsmith

Tôi không có ý kiến. Tôi chỉ thấy nó trên bài đăng sản phẩm mới của Sparkfun.
endolith

2

Có, có vẻ như UBW32 sẽ hoạt động tốt với bạn và phần sụn mặc định cho phép bạn điều khiển các chân I / O từ phần mềm của mình trên PC.

Theo "cách bẻ khóa SPI và giao diện song song trên FT232R" , rõ ràng bạn có thể bit 8 bit kỹ thuật số (có thể nhiều hơn?) Trên FT 232R được điều khiển bởi phần mềm trên PC của bạn.

Bảng đột phá $ 15 cho FT 232RL

Nghe có vẻ như những gì bạn thực sự muốn là một giao diện I / O kỹ thuật số; bạn không cần cũng không muốn một vi điều khiển khả trình. Nếu bạn chỉ muốn 16 bit, tôi sẽ đi với một vài bảng FT 232RL. Tuy nhiên, có vẻ như một UBW32 $ 40 duy nhất có vẻ như nó sẽ cung cấp cho bạn 64 I / O mà bạn muốn với chi phí thấp hơn 8 bảng FT 232RL mà nó sẽ cần để có 64 I / O.

Tôi thấy điều đó ngày càng trở nên phổ biến - đôi khi tốn ít chi phí hơn khi ném toàn bộ vi điều khiển vào một vấn đề, mặc dù nó có một triệu bóng bán dẫn "phụ" mà tôi sẽ không bao giờ sử dụng trên nó, hơn là sử dụng giải pháp có dây cứng.

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.