どのマイクロコントローラを使用すればよいですか?


10

コンピュータープログラムが現実の世界と通信するための最適なマイクロコントローラーパッケージを見つけようとしています。私はCPUで実行しているプログラムから関数を呼び出して直接読み書きできる多数のI / Oピン(これまでのところ64デジタルで十分ですが、アナログやPWMのような特別なものはありません)を望んでいます。

実行するためにマイクロコントローラー自体にプログラムをダウンロードするのではなく、USBに接続するだけで、C ++プログラムから制御できるCPU制御のI / Oピンをたくさん提供したいのですが。

私にとって最高のマイクロコントローラーパッケージは何でしょうか?USBで動作し、Windows 7のような最新のOS用の64ビットドライバーを備えているため、かなり安価で将来性のあるものを望んでいます。これらのマイクロコントローラーの複数を同じコンピュータープログラムに接続できると、素晴らしいボーナスも(将来の拡張)。

編集:高いサンプリングレート(読み取り入力に10 Hz、出力信号に1 kHz)は必要ありません。ほとんどのピンは出力専用です。私は新しいコンピューター(コアi7 860)を使用しているので、サンプリングが少し非効率的または遅い場合でも、問題ありません(I / O専用のスレッドを1つ用意し、メインプログラムと通信させるだけです)。

また、単一のマイクロコントローラーパッケージにすべての64 I / Oピンを必要としません。同時に多くのマイクロコントローラーパッケージをインターフェイスできれば、それも機能します(実際には、多くの小さなマイクロコントローラーパッケージをインターフェイスできることが理想的です。つまり、拡張が簡単です)。

私はこれを見てきました:http : //www.schmalzhaus.com/UBW32/index.html

誰かがこのようなことを経験したことがありますか?それがうまくいくかどうかの考えはありますか?主な関心事は、プログラムを実行しているのがマイクロコントローラーであり、CPUではないということです。


1
どのデータレートが必要ですか?
ケビンフェルメール

@reemrevnivek:入力には約10 Hzのサンプリングレート、出力には約1 kHzが必要で、I / Oが非常に遅いと思います。
Faken、

あなたの場合、あなたが見つけたプロジェクトはおそらくかなりうまくいくでしょう。これはすでに組み立てられたシステムであり(はんだ付けは不要です。常に便利です)、必要なすべてのポートにアクセスできる非常に基本的なファームウェアを備えているようです。低いサンプリングレートは、シリアル接続が十分に機能することを意味します。40 $はあなたを破産させませんよね?その場合は、より高価なソリューションを検討する前に試してください。
Wouter Simons

回答:


4

フェイケン、

UBW32は、私があなたの要件について伝えることができることから、非常に良い方法です。3.3VI / Oで問題がなければ、必要なものを正確にサポートします(5Vに対応しているものもありますが、すべてではありません)。シリアルポート(これはほとんどすべてです-基本、C、C#、処理など)

入力または出力として、76個のI / Oピンのいずれかを使用できます。出荷時のストックファームウェアを使用すると、組み込み側でプログラミングを行う必要なく、やりたいことを実行できます。そのデータをUSB経由でPCに(わずか10Hzで)取得しても問題ありません。1KHzで出力を取得しても、おそらく問題なく動作します。

ご不明な点がございましたら、お気軽にお問い合わせください。お手伝いさせていただきます。

* Brian Schmalz UBW32クリエーター


いいボードさん シュマルツ
Wouter Simons

まあこれは挑戦的に慰めです。機械工学者であり、プログラミングについてほとんど知らず、電子工学についてさえ知らない; C / C ++とインターフェイスするビルド済みのプラットフォームは、電子工学とマイクロコントローラーのプログラミングの側面を理解するために必要なものです。ご協力いただきありがとうございます!
Faken、

9

Teensy ++ 2.0(または他のAT90USB1286開発ボード)をお勧めします

128KBフラッシュ、8KB RAM、46 I / Oピン、8アナログ入力

24ドル

TeensyボードはUSB電源で動作し、仮想COMポート(USB通信デバイスクラス)を提供できます。このシリアルリンクをピン制御プロトコルに使用できます。これは、Windows、OSX、Linuxのカスタムドライバーがなくても機能します。

ピン制御ファームウェアを作成するために、TeensyDuinoまたはプレーンオールドC があります。

ビットバンギングの場合、ボトルネックはマイクロコントローラーのUSBインターフェースになります。そのため、I2CやSPIなどのプロトコルをマイクロコントローラーにシフトすることができます。このために私のバス忍者を使用できます。

ティーンジーをセットアップに追加するのは簡単です。デバイスごとに1つのUSBポートが必要であり、デバイスごとに1つの仮想COMポートが表示されます。

(注:このアプローチは、ARMプロセッサなどのすべての範囲で同様に機能します。利用可能なソフトウェアを備えた安価な開発ボードについては知りません)。

もう1つの方法は、ArduinoとCaterpillarシールドを使用してI / Oを拡張することです。同じI / Oエクスパンダを中心に構築したカスタムボードで、1KHz以上で256出力を更新することができました。


4

あなたが欲しいのはマイクロコントローラーではなく、ナショナルインスツルメンツのPCI-6509 I / Oカードのようなものだと思います。USBバージョンも入手できますが、PCI-6509よりもI / Oがはるかに少なくなっています。ナショナルインスツルメンツはC ++ドライバも販売します。

それが高すぎるように見える場合は、Labjack U3のようなものを試すことができます。


私はラボジャックを使用しましたが、もっと深刻なこと(サンプリングレートが高い)を行うと、コンピューターの速度が本当に低下しますが、サンプルレートが遅い単純なロジックには最適です。NIシステムはすばらしいですが、ソフトウェアパッケージは家庭で使用するには高すぎます。(少なくとも自宅で使用する場合)
Wouter Simons

4

あなたが説明する解決策は、より低い価格では存在しません。問題は、それ用に設計されていないシステムで制御ソフトウェアを実行したいということです。64個のポートをシリアル化し、高いサンプリングレートでUSB経由でプッシュすると、ホストコンピューターの速度が大幅に低下します。

前述のラボジャックのような低パフォーマンスのアプリケーションで機能するソリューションがあります。ただし、高IOレートを処理するために必要な実際のソリューションには、プログラムされたシステムが含まれます。問題は、システムの実装に使用する必要があるプログラミングです。

LabViewは非常に高価なソフトウェアです(うまく機能しますが、誤解しないでください)。グラフィカル言語を使用してソフトウェアを設計し、FPGAまたはARMシステムで実行されるコードにコンパイルします。すべてのコンポーネントは大量の組み込みアプリには高すぎますが、迅速な開発と高いパフォーマンスが提供されるため、テスト環境では絶対に素晴らしいものです。

より安価なソリューションは、多くのI / OでLinuxを実行するシステムを見つけることです。EmbeddedARM.comは、このためのさまざまなタイプの製品を提供するサイトです。記述できるコードは、シェルスクリプト、java、Cなどです。

Arduinoのシステムは、シンプルな開発環境で開発することができますマイクロコントローラを提供しています。彼らのオープンソースの性質は、学ぶべきプロジェクトがすでにたくさんあることを意味します。


3

私は64 GPIOピンを使ったものを知りません、それはたくさんです、あなたはそれを自分で構築しなければならないかもしれません。

私はこれをシリアルインターフェイスのベンチテストに使用しますが、23本のGPIOピンもあります。

「USB to GPIO」をググったら、これを行ったプロジェクトがたくさんあります。最初の数ページに64個のGPIOが表示されていませんでした。これは、32ピンで見つけた中で最も近いものです。

1つを構築することはそれほど難しくありません。おそらく、USB PHYが組み込まれた100ピン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は480 MHzで動作します(理論上、レイテンシとオーバーヘッドのために実際のデータレートは低くなります)。したがって、バッファリングなしでは480/64 = 7.5MHzを超えることはできません。バッファリングとわいせつな金額(車より多い)の場合、ロジックアナライザーはギガヘルツデータレートで68、102、または136チャネルを取得できます。

8チャネル程度のツールを使用できるかどうかを真剣に考え、個別に分析することをお勧めします。

編集: アーグ、私は何を考えていましたか?あなたがそのような遅い速度で行くなら、シリアルリンクを介して作業することは間違いなく行く方法です。私は、常にAdvantechのADAM 4000モジュールシステムを使用しています。これらは堅牢で、使いやすく(COMポートを介してASCIIプロトコルと簡単にインターフェイスするか、付属のGUIソフトウェアを使用)、拡張可能で、十分にサポートされています。4500(RS-232、コンピューターのUSBコンバーターまたはCOMポートを使用する(まだ搭載されている場合))または4501(組み込みのWebサーバーを備えたイーサネット)コントローラーを入手し、4053、4055、および4056モジュールの束でリンクします。そして、あなたは行ってもいいです。


ああ。しかし、それらはかなり高価です... 16チャンネルで$ 100から$ 150のようです。
ケビンフェルメール

ソフトウェアをテストするためのIntronix 34ポートロジックアナライザーがあります(つまり、マイクロコントローラーで制御されるピンの出力に入力を接続します)。約500ドルだと思いますが、実際にはデジタルI / Oでもありません。チャネルを分析するだけで、カスタムロジックをプログラムするためのものではありません。鉱山は500Mhzのサンプリングレートで動作しますが、マイクロコントローラに最大200Mhzまでのサポート速度を制御させたい周辺機器(通常はそうではない)を除いて、通常はその速度は必要ありません。とにかく、短い話です。ロジックアナライザーは、質問をする人が必要とするものではないと思います。
Wouter Simons、2010

それは間違いなく私ですが、Oではありません。いいえ、新しい情報を考えると、ロジックアナライザーは人が必要とするものではないことに同意します。
ケビンフェルメール

2

これには50ドルで70のGPIOとUSBインターフェイスがあります。


呼び出し関数を使用して、CPUで実行されているC ++プログラムから直接ピンデータを読み書きできますか?
10

NXPにはARMベースのI / Oがあり、I2C IOエクスパンダーを使用するだけでは十分でない場合は、提案するつもりでした。あなたはそのことの価格を打ち負かすことができません、そしてそれはプラグアンドプレイです。素晴らしい仕事。
akohlsmith、

何も思いつきません。Sparkfunの新製品の投稿で見たところです。
エンドリス

2

はい、UBW32で問題なく動作するようです。デフォルトのファームウェアでは、PCのソフトウェアからI / Oピンを制御できます。

「FT232RのSPIとパラレルインターフェースをビットバンする方法」によると 、PCのソフトウェアによって制御されるFT232Rの8つのデジタルピン(おそらくそれ以上)をビットバンすることができます。

$ 15 FT232RL用ブレークアウトボード

デジタルI / Oインターフェイスが本当に必要なようです。プログラマブルマイクロコントローラーは必要も、必要もありません。16ビットしか必要ない場合は、いくつかのFT232RLボードを使用します。ただし、1つの40ドルのUBW32は、64 I / Oを取得するために必要な8個のFT232RLボードよりも少ないコストで必要な64 I / Oを提供するように見えます。

私はそれがますます一般的になっていることに気づきます。ハードワイヤードソリューションを使用するよりも、使用しない100万の「余分な」トランジスターがあっても、問題でマイクロコントローラー全体をスローする方が時々コストが安くなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.