어떤 마이크로 컨트롤러를 사용해야합니까?


10

컴퓨터 프로그램이 실제 세계와 통신 할 수있는 최상의 마이크로 컨트롤러 패키지를 찾으려고 노력 중입니다. CPU에서 실행되는 프로그램에서 함수를 호출하여 직접 읽고 쓸 수있는 많은 수의 I / O 핀 (지금까지 64 디지털은 아날로그 및 PWM과 같은 멋진 것은 아닙니다)을 기대하고 있습니다.

실행하기 위해 마이크로 컨트롤러 자체에 프로그램을 다운로드하고 싶지 않습니다. 오히려 단순히 USB에 연결하고 C ++ 프로그램에서 제어 할 수있는 많은 CPU 제어 I / O 핀을 제공하는 것을 원합니다.

나에게 가장 적합한 마이크로 컨트롤러 패키지는 무엇입니까? USB를 사용하고 Windows 7과 같은 최신 OS 용 64 비트 드라이버가 있기 때문에 상당히 저렴하지만 미래의 증거가되기를 바랍니다. 동일한 컴퓨터 프로그램으로 하나 이상의 마이크로 컨트롤러를 인터페이스 할 수 있다면 큰 보너스 (미래 확장).

편집 : 높은 샘플링 속도 (입력 읽기의 경우 10Hz, 출력 신호의 경우 1kHz)가 필요하지 않으며 대부분의 핀은 출력에만 사용됩니다. 나는 새로운 컴퓨터 (코어 i7 860)와 함께 일하고 있으므로 샘플링이 약간 비효율적이거나 느리더라도 여전히 괜찮습니다 (I / O 전용 스레드 하나만 있고 주 프로그램과 통신하도록하십시오).

또한 단일 마이크로 컨트롤러 패키지에 64 개의 I / O 핀이 모두 필요하지는 않습니다. 많은 마이크로 컨트롤러 패키지를 동시에 인터페이스 할 수 있다면 작동합니다 (실제로 많은 작은 마이크로 컨트롤러 패키지를 인터페이스하는 것이 이상적이므로 확장하기 쉽습니다).

나는 이것을 보았다 : http://www.schmalzhaus.com/UBW32/index.html

누구든지 이와 같은 경험이 있습니까? 그것이 작동하는지 아닌지 알 수 있습니까? 주요 관심사는 내 CPU가 아닌 프로그램을 실행하는 것이 마이크로 컨트롤러라는 것입니다.


1
어떤 데이터 속도가 필요합니까?
케빈 베르메르

@ reemrevnivek : 나는 입력에 약 10Hz 샘플링 레이트, 출력에 1kHz, 매우 느린 I / O가 필요할 것으로 추정합니다.
Faken

귀하의 경우 발견 한 프로젝트는 아마도 잘 작동 할 것입니다. 그것은 이미 결합 된 시스템이며 (납땜이 항상 좋은 것은 아닙니다) 필요한 모든 포트에 액세스 할 수있는 매우 기본적인 펌웨어가있는 것 같습니다. 샘플링 속도가 낮 으면 직렬 연결이 충분히 잘 작동한다는 의미입니다. 40 $는 당신을 파산하지 않을 것입니다. 그렇다면 더 비싼 솔루션을보기 전에 시도해보십시오.
Wouter Simons

답변:


4

화려 함,

UBW32는 내가 당신의 요구 사항을 알 수있는 것으로부터 아주 좋은 방법입니다. 3.3VI / O (일부는 5V에 견딜 수 있지만 전부는 아님)로는 괜찮다면 필요한 것을 정확하게 지원할 것입니다. 직렬 포트 (기본, C, C #, 처리 등 거의 모든 포트)

76 I / O 핀 중 하나를 입력 또는 출력으로 사용할 수 있습니다. 기본 제공 펌웨어를 사용하면 임베디드 측에서 프로그래밍 할 필요없이 원하는 작업을 수행 할 수 있습니다. USB를 통해 PC로 데이터를 가져 오는 것은 문제가되지 않습니다. 1KHz로 출력을 얻는 것은 아마 잘 작동합니다.

궁금한 점이 있으면 알려주세요. 기꺼이 도와 드리겠습니다.

* Brian Schmalz UBW32 제작자


멋진 보드 씨 Schmalz
Wouter Simons

글쎄, 이것은 도전적으로 위안이됩니다. 프로그래밍에 대해 거의 알지 못하고 전자에 대해서는 거의 알지 못하는 기계 엔지니어입니다. C / C ++와 인터페이스하는 사전 구축 된 플랫폼은 전자 및 마이크로 컨트롤러 프로그래밍 측면을 보완하기 위해 필요한 것입니다. 당신의 도움을 주셔서 감사합니다!
Faken

9

나는 추천 얼른 ++ 2.0 (또는 다른 AT90USB1286 개발 보드)

128KB 플래시, 8KB RAM, 46 개의 I / O 핀, 8 개의 아날로그 입력

24 달러

Teensy 보드는 USB 전원을 사용하며 가상 COM 포트 (USB 통신 장치 클래스)를 제공 할 수 있습니다. 핀 제어 프로토콜에이 직렬 링크를 사용할 수 있습니다. 이것은 Windows, OSX 및 Linux에서 사용자 정의 드라이버없이 작동합니다.

핀 제어 펌웨어를 만들려면 TeensyDuino 또는 일반 C가 있습니다.

비트 뱅킹시 병목 현상은 마이크로 컨트롤러의 USB 인터페이스가됩니다. 따라서 I2C 및 SPI와 같은 프로토콜을 마이크로 컨트롤러로 전환 할 수 있습니다. 이를 위해 내 버스 닌자를 사용할 수 있습니다 .

설정에 Teensies를 추가하는 것은 간단합니다. 장치 당 하나의 USB 포트만 있으면 장치 당 하나의 가상 COM 포트가 나타납니다.

(참고.이 방법은 모든 ARM 프로세서 및 다른 프로세서와 동일하게 작동합니다. 사용 가능한 소프트웨어가있는 저렴한 개발 보드는 알 수 없습니다).

또 다른 방법은 Arduino와 Caterpillar Shield 를 사용하여 I / O를 확장하는 것입니다. 사용자 정의 보드에서 동일한 I / O 확장기를 중심으로 구축하여 1KHz 이상에서 256 출력을 업데이트 할 수있었습니다.


4

나는 당신이 원하는 것이 마이크로 컨트롤러가 아니라 National Instruments PCI-6509 I / O 카드 와 같은 것이라고 생각 합니다 . USB 버전도 얻을 수 있지만 PCI-6509보다 I / O가 훨씬 적습니다. 내쇼날 인스트루먼트는 C ++ 드라이버도 판매합니다.

너무 비싸 보인다면 Labjack U3 과 같은 것을 시도해보십시오 .


Labjack을 사용했는데, 더 심각한 작업 (더 높은 샘플링 속도)을 수행하면 컴퓨터 속도가 느려지지만 샘플링 속도가 느린 간단한 로직에는 좋습니다. NI 시스템은 훌륭하지만 소프트웨어 패키지는 가정에서 사용하기에는 너무 비쌉니다. (적어도 내 집에서는 사용하십시오.)
Wouter Simons

4

귀하가 설명하는 솔루션은 저렴한 가격에 존재하지 않습니다. 문제는 제어 소프트웨어를 설계하지 않은 시스템에서 실행하려는 것입니다. 64 개의 포트를 직렬화하고 높은 샘플링 속도로 USB를 통해 밀어 넣으면 호스트 컴퓨터의 속도가 크게 느려집니다.

언급 된 labjack과 같은 저 성능 애플리케이션에 적합한 솔루션이 있습니다. 그러나 높은 IO 속도를 처리하는 데 필요한 실제 솔루션에는 프로그래밍 된 시스템이 포함됩니다. 문제는 시스템을 구현하기 위해 어떤 프로그래밍을 사용해야 하는가입니다.

LabView는 비용이 많이 드는 소프트웨어입니다 (잘 작동하지만 실수하지 않습니다). 그래픽 언어를 사용하여 소프트웨어를 설계하고 FPGA 또는 ARM 시스템에서 실행되는 코드로 컴파일합니다. 모든 구성 요소는 대용량 임베디드 앱에 비해 너무 비싸지 만 빠른 개발과 고성능 제공으로 인해 테스트 환경에서는 절대적으로 훌륭합니다.

저렴한 솔루션은 많은 I / O로 리눅스를 실행하는 시스템을 찾는 것입니다. EmbeddedARM.com 은 다양한 유형의 제품을 제공하는 사이트입니다. 작성할 수있는 코드는 쉘 스크립트, java, C 등일 수 있습니다.

아두 이노 시스템은 간단한 개발 환경으로 개발 될 수 마이크로 컨트롤러를 제공한다. 그들의 오픈 소스 특성은 이미 배울 많은 프로젝트 가 있다는 것을 의미 합니다.


3

64 GPIO 핀이 무엇인지 잘 모르겠습니다. 많은 부분을 직접 작성해야 할 수도 있습니다.

직렬 인터페이스를 벤치 테스트 하기 위해 이것을 사용 하지만 23 GPIO 핀도 있습니다.

'USB to GPIO'에 대해 Google을 검색하면이 작업을 수행 한 많은 프로젝트가 있습니다 .64 GPIO가있는 첫 번째 페이지 에는 32 핀이있는 가장 가까운 페이지가 없습니다 .

하나를 만드는 것은 그리 어렵지 않을 것입니다 .USB PHY가 내장 된 100pin pic18을 사용하고있을 것입니다 (속도 요구 사항에 따라 더 강력한 CPU가 주문 될 수 있음)

uC 벤더가 USB 드라이버 스켈레톤을 제공하는 한, 코딩 작업을 너무 많이하지 않아도됩니다.

일반적으로 64 GPIO 핀을 가질만큼 큰 칩이 일반적으로 스루 홀 패키지로 제공되지 않으므로 PCB를 만들어야합니다. 더 작은 마이크로 컨트롤러를 사용하고 GPIO를 위해 외부 포트 익스팬더 IC를 사용할 수도 있지만, 이는보다 복잡한 설계 및 프로그래밍이 더 복잡합니다.

모든 I / O 핀을 헤더로 라우팅하고 USB가있는 개발 보드를 볼 수도 있습니다. 그것들은 당신이 필요로하지 않는 많은 것들을 가지고 있기 때문에 훨씬 비쌀 것입니다.

마지막 팁으로, RS232는 있지만 64 개의 GPIO 핀이있는 보드를 찾으면 RS232-USB 어댑터를 사용할 수 있습니다. 이 중 일부는 저에게 효과적이었습니다. 그러나 이것은 RS232 인터페이스의 속도로 제한됩니다.


3

NI Labview 환경은 비싸지 만 필요한 것을 수행 할 수 있습니다 (필요에 따라 USB, 이더넷 또는 PCI를 통해).

Arduino Mega에는 54 개의 핀이있어 60 달러에 가깝습니다. 그러나 이것은 기본적으로 로직 분석기가 아닙니다. 이렇게하려면 스케치를 작성하거나 찾아야합니다. 사용할 수있는 것이있을 수 있습니다. 낮은 버스 요금에서는 매우 간단해야합니다. Mega의 각 명령은 16MHz에서 발생하므로 전송 속도가 상당히 느리므로 115200 전송 신호를 얻을 수 있다면 운이 좋거나 매우 영리합니다.

결국 9600 보드 또는 50MHz에서 샘플링하는 경우 매우 다른 프로젝트입니다. USB는 480MHz에서 작동합니다 (이론상 대기 시간과 오버 헤드로 인해 실제 데이터 전송 속도가 느려질 것입니다). 버퍼링과 음란 한 돈 (차량 이상)으로 로직 분석기는 기가 헤르츠 데이터 속도에서 68, 102 또는 136 개의 채널을 얻을 수 있습니다.

8 채널 정도의 툴을 사용할 수 있는지 알아 내고 따로 분석해 보도록하자.

편집 : 아아, 내가 무엇을 생각하고 있었습니까? 그렇게 느린 속도로 가고 있다면 직렬 링크를 통해 작업하는 것이 확실합니다. 나는 직장에서 항상 Advantech 의 ADAM 4000 모듈 시스템을 사용합니다 . 견고하고 사용하기 쉬우 며 (COM 포트를 통해 ASCII 프로토콜로 쉽게 인터페이스하거나 포함 된 GUI 소프트웨어를 사용) 확장 가능하며 잘 지원됩니다. 4500 (RS-232, 컴퓨터에 USB 변환기 또는 COM 포트 (있는 경우)가 있음) 또는 4501 (내장 웹 서버가있는 이더넷) 컨트롤러를 설치하고 4053, 4055 및 4056 모듈을 연결하십시오. 그리고 당신은 잘 지내요.


오. 그러나 그들은 16 개의 채널을 위해 $ 100에서 $ 150와 같이 꽤 비싸다.…
케빈 베르메르

소프트웨어를 테스트 할 수있는 intronix 34 포트 로직 분석기가 있습니다 (예 : 입력을 마이크로 컨트롤러 제어 핀의 출력에 연결). 내 생각에 약 500 달러이지만 실제로 디지털 I / O도 아니십니까? 채널을 분석하기 위해 맞춤형 로직을 프로그래밍하는 것이 아닙니다. 광산은 500Mhz 샘플링 속도로 작동 할 수 있지만 주변 장치가 마이크로 컨트롤러가 최대 200Mhz 정도의 지원 속도를 제어하기를 원하지 않는 한 일반적으로 그 속도가 필요하지 않습니다 (보통 그렇지 않습니다). -어쨌든 짧은 이야기입니다. 나는 논리 분석기가 질문을하는 사람이 필요로하는 것이 아니라고 생각합니다.
Wouter Simons

확실히 나이지만 O는 아닙니다. 아니요, 새로운 정보가 주어지면 로직 분석기가 사람이 필요로하는 것이 아니라는 데 동의합니다.
케빈 베르메르

2

이 제품 에는 70 개의 GPIO와 50 달러에 USB 인터페이스가 있습니다.


호출 함수를 사용하여 CPU에서 실행되는 C ++ 프로그램에서 직접 핀 데이터를 읽고 쓸 수 있습니까?
Faken

나는 NXP가 일부 I / O를 기반으로 한 ARM을 가지고 있다고 제안하려고했지만 I2C IO 확장기에서 충분히 뛰어들 수 없다면 충분하지 않을 것입니다. 그 가격을 이길 수 없으며 플러그 앤 플레이입니다. 잘했습니다.
akohlsmith

나도 몰라 Sparkfun의 신제품 포스트에서 방금 봤습니다.
endolith

2

예, UBW32가 잘 작동하는 것 같습니다. 기본 펌웨어를 사용하면 PC의 소프트웨어에서 I / O 핀을 제어 할 수 있습니다.

"FT232R에서 SPI 및 병렬 인터페이스를 비트 뱅하는 방법" 에 따르면 PC의 소프트웨어로 제어되는 FT232R에서 8 개의 디지털 핀 (아마도 더 많은 것)을 비트 뱅할 수 있습니다.

FT232RL을위한 $ 15 브레이크 아웃 보드

실제로 원하는 것은 디지털 I / O 인터페이스입니다. 프로그래밍 가능한 마이크로 컨트롤러가 필요하지도 않습니다. 16 비트 만 원한다면 몇 개의 FT232RL 보드를 사용합니다. 그러나 단일 40 달러짜리 UBW32는 64 I / O를 얻는 데 필요한 FT232RL 보드 중 8 개보다 적은 비용으로 원하는 64 I / O를 제공하는 것처럼 보입니다.

점점 일반화되고 있음을 발견하고 있습니다. 하드 와이어 솔루션을 사용하는 것보다 절대 사용하지 않을 백만 개의 "추가"트랜지스터가 있어도 문제에 대해 전체 마이크로 컨트롤러를 처리하는 데 비용이 덜 드는 경우가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.