■ AVR & BASCOM トレーニング・ボード 応用回路の製作 ■


サーボ・モーター 制御 プログラム
プログラム: ATBservomot101.bas 作者: O-Family 作成日: 2009. 8.12
ラジコン等に使用される、サーボ・モーターを制御するプログラムです。
モーターの仕様  5V(4.8V)用 : パルス周期 = 20mS : パルス幅 = 0.8mS〜2.2mS (変更可能)
スイッチによりパルス幅を変えて、2台のモーターの回転角を別々に制御できます。
モーターの動作確認や調整用に利用して下さい。


 

トレーニング・ボードの「拡張端子1」に、拡張基板を取り付けて、モーターのコネクターに合わせた3ピンのピンヘッダを用意します。 (ジャンパー線などでの配線も可能です)
 
拡張基板の回路図 ATBservomPcb.gif

リセットスイッチを押すと、2つのモーターが中心位置(パルス幅1.5mS)に動きます。
 
SW1[赤]を押すと、モータ[1]のパルス幅が狭くなります。
SW2[緑]を押すと、モータ[1]のパルス幅が広くなります。
SW3[黄]を押すと、モータ[2]のパルス幅が狭くなります。
SW4[青]を押すと、モータ[2]のパルス幅が広くなります。
 
LCDには、±のステップ位置と、パルス幅の時間が表示されます。
 
制御出力は、LED1[赤] と LED3[黄] のポートと兼用しているので、モーター動作中は、この2つのLEDもパルス点灯します。
 
モーターの回転角度(パルス幅)の範囲は、プログラム冒頭の「Const」命令の値を変更して下さい。
AVR内蔵TimerのPWM出力を使用していないため、制御出力は、どのポートにでも割り当てできます。



RC5 赤外線リモコン プログラム
プログラム: ATBIRreceiver102.bas 作者: O-Family
協力: くらのす
作成日: 2009. 8.19
BASCOM-AVRに用意されている、RC5規格の赤外線リモコン用、テストプログラムです。
RC5リモコンはフィリップス社の規格で、日本国内のリモコンとは別のフォーマットです。



トレーニング・ボードの「拡張端子1」に、赤外線受信モジュールを搭載した、拡張基板を取り付けます。
 
拡張基板の回路図 ATBIRreceiverCir.gif

リモコンのコードを受信すると、LCDにアドレスとコマンドが表示されます。
 
受信したアドレスの機器番号が、プログラムの設定と一致した場合は、1KHzのブザー音が鳴ります。
ブザー音は、リモコンボタンを離した状態から押す動作をした時にだけ鳴ります。
また、受信したコマンドのbit0〜3の状態を、LEDで表示します。
 
トグルビットもチェックしていますので、リモコンボタンを押し続けている間、LEDも点灯し続けます。

送信機は、現在ブレッドボードでの仮組状態です。
 
送信機のプログラム RC5TX101.bas

 
トレーニング・ボードからの送信は、まだ搭載されていません。



NECフォーマット 赤外線リモコン 受信テスト プログラム
プログラム: ATBIRrecvNEC201.bas 作者: O-Family 改訂日: 2013. 5. 1
「NECフォーマット」と呼ばれる、赤外線リモコン信号を受信するプログラムです。
このフォーマットは、私の確認できる範囲で、NEC、日立、東芝、三洋、パイオニア、富士通ゼネラル、LG、オリオンのテレビに採用されていました。 (コード表を参照)





トレーニング・ボードの「拡張端子2」に、赤外線受信モジュールを搭載した、拡張基板を取り付けます。
「Arduino トレーニング・シールド」には搭載済みです。
 
拡張基板の回路図 ATBIRreceiver2Cir.gif

リモコンのコードを正常に受信すると、LCDに16ビットのカスタム・コード(メーカー機器番号)と8ビットのデータ・コード(コマンド)、及びそれぞれを16進表記した値が表示されます。
同時に、[緑] LEDが点灯し、1KHzのブザー音が鳴ります。
 
リモコンのボタンを押し続けると、リピートコードが送られてくるので、それを受信した場合は、LCDに「Repeat」の文字と、[黄] LEDが点灯します。
 
受信したコードが未対応の場合や、エラーがあった場合は、[赤] LEDが点灯し、349.2Hzのブザー音が鳴ります。

受信動作のプログラムは、サブルーチンとしてモジュール化してありますので、ユーザープログラムに組み込めます。 (サブルーチン内で、Timer0を使用します)
 
「NECフォーマット」の詳細については、「NEC赤外線リモコン・フォーマット」を参照して下さい。

エラーコード表 *Error-1 : リーダーコード・エラー
*Error-2 : カスタムコード・エラー
*Error-3 : データコード・エラー
*Error-4 : 反転データコード・エラー
*Error-5 : データチェック・エラー
 
・ビクターのVTRリモコンで、カスタムコードのみの送信がありました。
 この場合、カスタムコードがコマンドとなり、*Error-3が表示されます。
・パイオニアのDVDリモコンで、NECフォーマットが2つ送られてくるキーがあります。
 [5CA3 99] + 2つめがコマンドのようです。

◎ お手持ちのリモコンで、このフォーマットに対応する機器やコマンドが判明しましたら、コマンド・リストの完成度向上にご協力下さい!



家電製品協会(AEHA)フォーマット 赤外線リモコン 受信テスト プログラム
プログラム: ATBIRrecvAEHA201.bas 作者: O-Family 改訂日: 2013. 5. 1
「家電製品協会(AEHA)フォーマット」と呼ばれる、赤外線リモコン信号を受信するプログラムです。
このフォーマットは、私の確認できる範囲で、松下、シャープのテレビに採用されていました。
 (コード表を参照)





トレーニング・ボードの「拡張端子2」に、赤外線受信モジュールを搭載した、拡張基板を取り付けます。
「Arduino トレーニング・シールド」には搭載済みです。
 
拡張基板の回路図 ATBIRreceiver2Cir.gif

このフォーマットは、送信するバイト数に規定がないため、受信したデータを、バイト単位で扱っています。
 
リモコンのコードを正常に受信すると、LCDに受信した個数分のバイトデータが表示されます。
同時に、[緑] LEDが点灯し、1KHzのブザー音が鳴ります。
 
リピートコードが送られてきた場合は、LCDに「Repeat」の文字と、[黄] LEDが点灯します。
 
受信したコードが未対応の場合や、エラーがあった場合は、[赤] LEDが点灯し、349.2Hzのブザー音が鳴ります。
 
このフォーマットの詳細な仕様や、メーカーごとの機器コード情報が少ないため、パリティ等のエラーチェックは行っておりません。
(受信したデータを、そのまま表示しています)



FT232RL USBシリアル変換モジュール[AE-UM232R]使用 パソコン通信 テスト・プログラム
プログラム: ATBAEUM232R101.bas 作者: O-Family 作成日: 2009. 8.28
「秋月電子製 FT232RL USBシリアル変換モジュール [AE-UM232R] を使用して、トレーニング・ボードとパソコンのUSB端子とで、シリアル通信を行うプログラムです。
BASCOM-AVR付属の「Terminal emulator」や、Windows付属の「ハイパーターミナル」が使用できます。
 
テストプログラムでは、トレーニング・ボードの時計と温度センサーの値を、1秒おきにパソコンのターミナルへ送信してきます。
また、パソコンのキーボードからは、日付と時刻を設定できます。


 

 

 
[AE-UM232R] は、ICソケットに装着する設計になっているので、ケースへの固定と配線の取り出しのために、ユニバーサル基板上で組み立てます。
トレーニング・ボードとは、3本のワイヤーのみで接続できるので、「拡張端子1」に配線接続用の小基板を取り付けます。
 (ピンヘッダーでの直接配線も可能です)
 
「Arduino」にはこの機能が標準で搭載されています。
 
AE-UM232R基板の回路図 ATBAEUM232RCir.gif

トレーニング・ボードでは、BASCOMの下記命令だけでも簡単に動作します。 (シリアル通信関連の命令を参照)
 [$baud = 9600(任意)]、[Print]、[Input] など。

パソコン側の設定は、下記のように行って下さい。
 
1. [AE-UM232R] の説明書により、Windows用のUSBドライバーをインストールする。
2. デバイスマネージャー画面で表示される、「USB Serial Port (COMx)」の、COM番号を控えておく。
 
3. BASCOM-AVRを起動し、メニューバーから、[ Tools ]→[ Terminal emulator ]と進み、ターミナル画面のメニューバーから、[ Terminal ]→[ Settings ]と進みます。
 
COM port」に、控えたCOM番号を設定します。
Baudrate」に、9600(任意)を設定します。
これ以外は、デフォルトのままでOKです。
 
「ハイパーターミナル」の場合は、ヘルプファイルから、同様にCOM番号とボーレートを設定して下さい。
 
時刻設定コマンド。 (パソコンのキーボードから入力)
・日付の設定 [d09/08/28 +Enter] 年/月/日を設定。
・時間の設定 [t12/34/56 +Enter] 時/分/秒を設定。
BSキー等による修正機能はプログラムしてありませんので、修正はEnterを押した後に、再度入力し直して下さい。

◎この[AE-UM232R] ユニットは、トレーニング・ボード以外にも、試作基板やブレッドボード等にも接続できますから、1台用意しておくと便利です。



電子オルガン プログラム
プログラム: ATBe_organ101.bas 作者: O-Family 作成日: 2010. 11.19
キーボード(鍵盤)に見立てたタクトスイッチで、オルガンを演奏します。
音色は、方形波だけの出力です。


 
回路は、下のギター・チューナーと同じ基板に製作してあります。(鍵盤スイッチ部のみでも動作可能)
 
回 路 図 ATBe_organCir.gif 動 画 YouTube
部品配置図 ATBe_organPcb.gif    

鍵盤スイッチを押すと、現在のオクターブ値(Oct:)に合わせた音階で発音します。
2つ以上のスイッチが同時に押された場合、高い音のスイッチが優先されます。
LCDには、英語表記と日本語表記で音階名が表示されます。
LCDの2段目には、音階に値する周波数が表示されます。
 
オクターブ・スイッチは、+と−で1〜8オクターブまで選択ができます。
鍵盤スイッチが押された状態でも、オクターブ・スイッチは有効です。

圧電スピーカーが、オクターブ3以下の周波数で倍音を多く含んでしまうため、音程がきれいに聞こえない場合があります。
 
発音の演算と、Timer値用の四捨五入のため、高い音程で誤差が大きくなっています。
 
○発音のプログラム
・鍵盤スイッチをキーマトリクスで走査し、発音開始を検出します。
・オクターブと周波数の関係は、1オクターブ上がると周波数が2倍になることから、各鍵盤に相当する8オクターブ目の周波数をテーブルで持ち、オクターブ値に合わせて割り算を行っています。
・周波数が決定されると、AVRのTimer1に発音周波数の2倍の速度で割り込みを発生させます。
・割り込み処理では、圧電スピーカーが接続されているポートを割り込み毎に反転し、方形波を発生させています。



ストロボ式 ギター・チューナー プログラム
プログラム: ATBg_tuner101.bas 作者: O-Family 作成日: 2010. 11.19
ギターのチューニング(調弦)を、LCDに表示される丸印の点灯で行います。 (誤差±1セント以内)


 
回路は、上の電子オルガンと同じ基板に製作してあります。
(マイクアンプ部のみでも動作可能)
 
回 路 図 ATBe_organCir.gif 動 画 YouTube
部品配置図 ATBe_organPcb.gif    

アンプ基板上の感度調整ボリュームを、トレーニング・ボードの青LEDが、点灯状態から無音で消灯する位置に合わせます。
(音に反応して、青LEDが点灯する状態)

SW1[赤] を押すと、弦番号が上がります。
SW2[緑] を押すと、弦番号が下がります。
 
SW3[黄] で、動作モードを選択します。
・通常 (チューニングを行う状態)
・発音 (スピーカーから、チューニング音が出ます)
・キャリブレーション (基準値を410Hz〜480Hzに設定)
 
○キャリブレーション
・5弦の4倍音(440Hz)を、1Hzおきに微調整できます。(410Hz〜480Hz)
・SW3[黄] で、「Calibration ↓」を選択します。
・SW1[赤] で基準値をマイナス、SW2[緑] で基準値をプラス。
・キャリブレーション値は、AVR内蔵のEEPROMに記憶されます。

○測定の解説
・ギターの音をコンデンサーマイクで拾い、オペアンプで増幅した後に、ギター波形をコンパレータで[1]と[0]の方形波に変換します。
・AVRのTimerで、チューニングする弦の16倍の周波数で割り込みを発生し、割り込み内で方形波に変換したギター波形をサンプリングします。
・サンプリングしたデータを16ビットに並べる動作を繰り返すことにより、基準となる周波数とギター波形の周波数差がビットの並び方に表れます。
・基準周波数よりも低い場合は、LCDの●が右に流れて見え、高い場合は左に流れて見えます。
・基準周波数に近づくと流れが遅くなり、一致した時点で流れが止まります。
・ギターの音が倍音を含んでいる関係上、●の長さと個数に違いが表れます。



シャープ測距モジュール GP2Y0A710K 距離計測 & 近接アラーム
プログラム: AtbGP2Y0A710K.bas 作者: O-Family 作成日: 2011. 3. 3
赤外線の反射光を使用して、1m〜5.5mの距離を計測するセンサーです。
距離の測定と、設定距離以内で作動する近接アラームを搭載しました。
 
回 路 図 AtbGP2Y0A710Kcir.gif  [拡張端子2] へ、5ピンのピンヘッダで接続します。
 
このセンサーは、距離に対する電圧が出力されます。
マニュアルに記載のグラフから、下記の計算式で距離を求めます。
1次関数なので、y = ax + b
aはyの増加量 ÷ xの増加量 で、
 (2.5-1.4) / (0.01-0.002) = 1.1 / 0.008 = 137.5
bは、1.4 = 137.5 * 0.002 + b なので、
 b = 1.4 - 137.5 * 0.002 = 1.125
 
y = ax + bを、電圧(V)と長さ(L)に置き換えると、
V = 137.5 * L + 1.125 → L = (V - 1.125) / 137.5
グラフは[1/L]なので逆数にして、L = 137.5 / (V - 1.125)
センサーの個体差(誤差)とA/Dコンバータの基準電圧の相違から、キャリブレーションを行うと計測誤差が小さくなります。
 
SW1[赤] を押しながら[RESET]スイッチを押すと、キャリブレーション・モードに入ります。
センサーから2m(任意)の距離に反射物を置き、測定値を校正して下さい。
 SW3[黄]:校正値[−] SW4[青]:校正値[+]
 
校正値はAVRに記憶され、電源を切っても残ります。
再度[RESET]スイッチを押すと、通常動作に入ります。
LCDの1行目、左は測定距離、右はアラームの発生回数。
2行目は左から、アラームモード、アラーム設定距離、アラーム検出後の遅延時間。

SW1[赤] アラームモード(ブザー音)の選択。
 OFF: ブザー無し。
 BZ: アラーム発生中にブザー音。
 BZ1: アラーム発生中に1秒間のブザー音。
SW2[緑] 設定項目の選択。 (三角のマークが移動)
 左側: 近接アラームの発生距離 (80cm〜500cm)
 右側: アラーム検出後の遅延時間 (0.0s〜5.0s)
SW3[黄] 設定値をマイナス。
SW4[青] 設定値をプラス。
 
設定距離以下になると、アラームが発生します。 (赤LEDと任意のブザー音)
アラームの発生回数がカウントされ、[RESET]スイッチを押すと0に戻ります。
人間などの腕と胴体の二重検出を防ぐため、検出後の遅延時間が設定できます。 (青LEDで遅延中)
 
センサーの出力は16.5ms間隔で測定値にふらつきがあるため、これを10ms間隔でサンプリングし、16回の移動平均を行っています。






   電子工作の部屋 Top へ 前のページへ戻る