Kimio Kosaka
制御マイコンの「Hello world」 LEDピカピカ。 プログラムはExamples\Digital\Loopを使用。
秋月の安いラジコン・サーボ を動かす。
最近リリースされた開発環境 Arduino-0012 には Servo ライブラリが標準で組み込まれているのでこれを使う。
サーボ駆動用の電源は別電源を用意し GND を Diecimila と共通にする。+5V電源を Diecimila から取るとサーボへの突入電流で Diecimila 搭載のポリスイッチが切れ電源が遮断されるのでうまく動作しない。サーボに限らず制御系と動力系は別電源にした方が良い。
MAX7221を利用して8X8 LED Matrixを簡単に点滅制御できた。
8X8 LED MatrixをArduinoで点滅制御するときはMaximのMAX7219やMAX7221 を使うと便利ということがWebを検索して分かった。
参考にしたサイト
Arduino playground - LEDMatrix(ここの回路を使う)
Arduino with 8×8 LED Matrix(ここのプログラムを使う)
LedControl for Arduino(MAX7221他の使い方を学ぶ)
最近リリースされた開発環境 Arduino-0012 には LED Matrix ライブラリが標準で組み込まれたので近々実験をしたい。
秋月の8X8 LED Matri(38x38mm)をArduinoで直接ドライブしてみた。
秋月の加速度センサ を接続する。
秋月のLCDキャラクタディスプレイモジュールを接続する。
キャラクタLCDをDiecimilaに接続して見た。LCDにスケッチの進行状態などを表示させるとデバッグのとき非常に便利。
Arduino開発環境 には LiquidCrystal ライブラリが標準で組み込まれているのでこれを使う。
接続図中 Vo は LCD の濃度調整用。
SSR(ソリッド・ステート・リレー)を使って,AC100V100Wの白熱電球を点滅させた。
SSRには 松下電工のAQG22205(出力2A・非ゼロクロス)を用いる。このSSRは制御電圧がDC4〜6V電流が20mA程度なので Diecimilaのデジタル端子に直結できる。価格は定価235円で以外と安い。秋葉原では千石電商で入手可能。
AC100Vデバイスをブレッド・ボードに配置してテストするのは危険。特にDiecimilaのロジック系回路とAC100V回路を 同一ブレッドボード上に混在させ,誤ってAC100V系の回路をロジック系回路に短絡させると十中八九 Diecimila が壊れる。 AC100V系回路は別基板にはんだ付けで作成し,かつ,はんだ面をアクリル板などで絶縁して短絡防止するのが鉄則。 AC100V電源の破壊力を侮ってはいけない。
Diecimila の PWM 端子にSSR を接続して PWM によるACのパワーコントロールは安定しない。 AC100V の PWM を行うには AC波の周期と PWM制御信号を同期させる必要がある。
サンプル・スケッチのBlinkで制御すると白熱電球が1秒間隔で点滅する。
点滅周期を色々に変えて遊んでいたら 燈台の灯質を思い出した。Gp Fl w (3) 10sec (群閃白光:10秒毎に3閃光)なんてのを簡単に作れて面白い。
秋月のリアルタイムクロックモジュールを制御する。
秋月のGPSモジュールGT-720Fを接続する。
データシートをそのまま読めばGT-720Fの信号ラインはRS232-CレベルなのでArduinoに接続する場合はレベルコンバータが必要になる。「TTLレベルで出ていたらArduinoに直結できるのに…」と思って色々調べたらTTLレベルの信号が データシートではNCと表示されている5・6番ピンに出ていることがわかった。下のように接続してGPSモジュールからNMEAフォーマットのデータを読んで緯度・経度を切り出しLCDに表示するスケッチを書いてテストしたらあっけなく動いた。
時刻データを切り出してGPS時(UTC)を日本標準時(JST)に変換して表示すれば超高精度な時計にもなる。
SparkFunのデジタルコンパスモジュール(データシート)をArduinoに接続する。
すでにArduinoに接続して実験している人がいるだろうとググッてみたら,やはり「建築発明工作ゼミ」に先行事例がありました。
分解能は0.5度,精度は1度で,しかも,インターフェースがI2Cで簡単に使えます。
今,ArduinoとGPSを組合わせたロボットカーのナビゲーションシステムの基礎実験をやっています。
Wiiリモコンに付加する3軸ジャイロWiiモーションプラスをArduinoに接続します。
先行事例がRandom Hacks Of Boredom/Geniusにありました。このWiiモーションプラスのインターフェースもI2Cなので簡単にArduinoに接続することができます。
Arduinoに接続したらサンプル・スケッチを動かします。 Wiiモーションプラスの3軸ジャイロの値をLCDで見ることができます。
WiiモーションプラスのデータフォーマットはWiiBrew-WikiのWiimote/Extension Controllersに詳しく解説されています。
PSD測距モジュールは,物体までの距離に相関した電圧を出力する距離センサーです。ArduinoでPSD測距モジュールの出力電圧を読み取り,電圧−距離換算して物体までの距離を測ることができます。測距範囲はSHARP GP2Y0A21YKで7cm〜80cmです。
付属リード線は赤:GND,黒:Vccとなっており誤配線の危険性が大なので,赤:Vcc,黒:GNDとリード線を組替えます。
PSD測距モジュールの出力を安定させるため,モジュールに近い側のVcc-GND間に100uFの電解コンデンサをArduinoのアナログ入力端に0.1uFのコンデンサを挿入しておきます。
加速度センサであろうがPSD測距センサであろうがアナログ出力を持つセンサはアナログポートにつないで analogRead()すれば良い訳で,出力電圧が小さい場合はLM358などの単一電源のオペアンプで増幅してつなげば良い。 出力が抵抗変化のものは電圧変化に変えてやれば良い。センサをつなぐのが目的になってはダメ。 自分のやりたい「目的」を成し遂げるためにセンサをつなぐ。出力デバイスもしかり。
0〜数ボルト程度のアナログ出力センサはアナログポートに直結
出力が微小電圧のセンサ(例えば熱伝対)オペアンプで増幅してつなぐ
抵抗変化のセンサ(例えばCdS)は電圧変化にしてつなぐ
抵抗変化のセンサで変化率が小さいモノ(例えばストレン・ゲージ)は電圧変化にしてオペアンプで増幅してつなぐ
余談:アナログ回路系では こんなこともやっています。
last update 2011.08.07