目次
|
今回はファームウェア(マイコンのソフトウェア)作成です。また、動作確認のためのプログラムをパソコン側に作成しました。
■ファームウェアの仕様
(1)初期化処理
マイコンに電源が投入された直後に各軸の位置を中立の位置に戻します。また、LEDは消灯します。
(2)制御パルスを生成
2軸機構部を制御するための制御パルスを生成します。ラジコン用サーボの仕様に従って、20mS周期で1mS-2mS幅のパルスです。
(3)制御コマンド処理
パソコンから送信される制御コマンドを受信しそれに応じた処理を実行します。制御コマンドは本装置独自のもので、すべて次の形式です。
コマンド文字<改行文字>
| コマンド文字 | 処理内容 |
|---|---|
| Q | このコマンドを受信すると本装置は次の一行をパソコンへ送信します。 Homebrew<改行文字> |
| P# | パン(首を左右に振る)。#は0から127までの値。 |
| T# | チルト(首を上下に振る)。#は0から127までの値。 |
| H | 初期位置へ戻す。P63 T63 と同じ。 |
| S | このコマンドを受信すると本装置は次の一行をパソコンへ送信します。 装置番号(0-7) 現在のパン位置(0-127) 現在のチルト位置(0-127)<改行文字> |
| E | LEDを点灯します。 |
| D | LEDを消灯します。 |
(4)可動範囲制限
ラジコン用サーボの仕様上各軸は機構や電気的に可動範囲が制限されていないために過度な角度指令をすると壊れます。そこで、ソフトウェアで可動範囲を±60度程度に制限しています。制御指令は0から127の範囲なので制御の分解能は120度/127≒1度ということになります。
■開発環境
|
開発したファームウェア(アセンブラ)
■動作確認

- 本装置を自動的に発見し装置番号を表示します。
- 現在の首の位置を表示します。
- ▼や▲で首をフルスイングします。
- ■で初期位置に戻ります。
- 縦横のスライダーを動かすと上下左右に首を振ります。
- LEDボタンを押すとLED点灯/消灯します。
■結果
パルス周期を15mS以下にすると電源投入時つまりUSBプラグを差し込んだ時サーボが発振してしまうので微調整しましたが、後は何のトラブルも無くこのとおり首を振るようになりました。
|
|
さて、次回はいよいよHomebrewのソフトウェア部分を作成します。Ajaxで行くか?それともAppletの改造で済ませるか?アイデアはいろいろです。
目次
|
