ラベル DAコンバーター の投稿を表示しています。 すべての投稿を表示
ラベル DAコンバーター の投稿を表示しています。 すべての投稿を表示

2013年12月6日金曜日

MCU Gear と Arduino 互換機との接続成功

Arduino互換機Seeeduino の少ないメモリー(SRAM)でもMCU Gearを6つ動かすことに成功しました。
Arduino IDE のシリアル通信を使うと、メモリーが非常に消費することがわかりましたので、今回はシリアル通信を使っていません。

他にもメモリーをあまり気にせずに使うには、モジュールのインスタンスを一つだけ生成して、PCに配線情報を保持してシリアルのコマンドインスタンスの配線情報を書き換えながら動作させる方法が考えられますが、それは後日試そうかと思います。


また、プログラムの使い方によってもモジュールの積層数は変動しますので、いろいろ試してみてください。

また、その他のファイルも大幅に削除したため、機能が単純になりました。
(5V系ボードを使う場合は電圧レベル変換基板を必ず使ってください。)
レベル変換基板のテストは前回のブログで紹介しました。
http://mcugear.blogspot.jp/2013/10/mcu-gear-5v-16mhz.html

レベル変換基板の販売準備をしようと思います。 サンプルプログラム





後日プログラムの詳しい解説をします。

2013年10月19日土曜日

Raspberry Pi で多くのモジュールを接続してみる(LCDモジュールは対象外)

RSコンポーネンツさん等で市販されている Raspberry Pi がMCU Gearと接続できましたので報告です。

今回は2013年10月19日に用意できているモジュール類を複数個
接続して見ようと思います。
・12bit 2ch ADモジュール(距離センサー)
・12bit 8ch ADモジュール(ボリューム抵抗)
・12bit DAモジュール(黄色LED出力)
・ユニバーサルモジュール(スイッチ入力と赤LED出力)
・出力信号保持モジュール(モジュールを切り替えても出力信号を保持できます)
・マルチファンクションモジュール(PWMモード)

SPIのモジュールを複数接続していますが、CE0番ピンは一つしか使っていないのが特徴です。


サンプルプログラムはこちら


プログラムの基本動作はこちらの説明を参考にしてください。










2013年10月16日水曜日

Raspberry Pi でC言語 ADコンバーター(ADC) と DAコンバーター(DAC) を簡単に使ってみる

最新情報の目次はこれです
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO

                                        

以下、昔の記事です。

RaspberryPiで簡単にADC、DACを使ってみたいと思います。

MCU Gearを使うと、例えば8chADモジュールを10個積めば80chのAD変換基板になるお化けな拡張ボードです。

RaspberryPi用接続ボードとMCU Gearを使用します。

MCU Gear にはSPI通信による 12bit ADC、12bit DACを簡単に複数構成することができるモジュールが存在します。

サンプルプログラムではCE0 1つで、複数のSPIデバイスを動かしています





サンプルプログラムの説明です。
12bit 2ch ADの0chから距離センサーの信号を読み取り、それを12bit DAから出力しています。
またユニバーサルモジュールからスイッチの読み取り、LEDの出力(LOWでLEDがONになる)を行っています。

main.cファイルを見てください。
まず、wiringPiをセットアップしたりSPI通信のセットアップなどを行います。

1、initBase(); はMCU Gear の丸い基板、ベースボードを初期化しています。

2、拡張モジュール基板(扇形の基板)の設定をします。
MCUGear AD2chM = MCUGear(N_SCL_SCL_SCL, 4);

 AD2chM :モジュールに好みの名前を付けます
 N_SCL_SCL_SCL : 拡張モジュール裏面にあるアドレス設定回路の任意設定値を入れます。
 (AD2、AD1、AD0の順番に並んでいます。)
 4:はADモジュールの場合はSPIの4ピンを使いますという予告です。(MISO,MOSI,SCK,CE0)

3、IOSimpleSPI(&AD2chM);
 好みの名前を付けたADモジュールにSPIの端子を割り振ります。IOSimpleSPI関数はmain関数の下に記述しておきました。

中身は
unsigned char fio[12];
detect_module(fio);
これはモジュールの位置情報を取ってこいという命令です。
この情報により、モジュールをどの位置に取り付けても自動的に探し出すことができます。

savePinSetting(0, IO_13, IO_REG_IN_DIR, fio[0]);

これはwiringpi の設定で拡張モジュールの0番端子に、IOの13番をRaspberry Pi 側に入力する方向に割り振れ という命令を記録しています。

BOOST_MODE は追々説明しますが、配線の切り替え処理を高速化するためのものです。

4、main関数のwhile(1)ループ内では、拡張モジュールにアクセスするには

AD2chM.connectModule();
とすると回路が再構築されます。

AD2chM.disconnectModule();
とすると、回路が切断されます。

これを連続的に繰り返して、様々なデバイスを少ピンでもたくさん取り付けることができるようになります。

サンプルプログラムを動かすにはターミナルで
gpio load i2c 1000
gpio load spi
を事前に実行する必要があります。

コンパイルは作業ディレクトリに移動して

g++ Wall -o main main.c MCUGear.cpp MCUGearBase.cpp -lwiringPi
 コンパイルに成功したら

sudo ./main

で実行できます。