bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

XMOS (イベント駆動・並列スレッド)プログラミング(3)

1.簡単なライン・トレース・カーを作成する

1.1 仕様

模造紙の上に黒い線を描き、この線に沿って車が動くようにする。原理は、

1)左右に反射型フォトセンサーを用意する。

2)両方の反射型フォトセンサーとも白い面を検出している場合には、車はそのまま進める。

3)左側(右側)の反射型フォトセンサーが黒い線を検出した場合には、右側にずれているので左側(右側)の車輪を止める。

1.2 製作

エレキジャック(福山洋)のhttp://www.eleki-jack.com/KitsandKids2/2008/10/1_7.htmlには、次のような回路図が載っている。これは、片側の回路を示したもので、反対側も同じように作れば完成したものとなる。(動画は、http://www.youtube.com/watch?v=i-T8G5SUz5c&feature=player_embedded
f:id:bitterharvest:20140721115559j:plain
この回路図で、74HC00とTA7291Pの線を切断し、それぞれをXMOSのポートに接続すれば、XMOSが、反射型フォト・センサーからの情報を得て、車輪の回転の制御をX行うことができる。XMOSを用いて、ライン・トレース・カーを実現しなさい。

1.3 課題1

反射型フォトセンサーを車の前につけ、障害物があるときは停止するようにしなさい。

1.4 課題2

TA7291Pに与える信号をパルスとすることで、いわゆる、パルス制御を行うことができる。これは、電力消費を低減化することに役立つ。ライン・トレース・カーをパルス制御で実現しなさい。また、http://www.arakin.dyndns.org/ec_lt3.phpを参照して、速度やトルクを計算しなさい。

参考

#define DELAY 500

void pwm_server (chanend pls) {

 unsigned pt, duty_cycle=T50MSEC, period=T100MSEC;

 timer ptmr;

 int state = ON;

 ptmr :> pt;

 pt += DELAY;

 while(1) {

  ptmr when timeafter(pt) :> int ;

  if(state) pt += duty_cycle;

  else pt += period - duty_cycle;

  state = !state;

  pls

1.5 課題3

エレキジャック(福山洋)のホームページには、さらに、音感知センサーについて書いてある。

http://www.eleki-jack.com/KitsandKids2/2008/12/5_5.html

これを応用して、音感知センサーが音を検出した時に、XMOSにイベントを発生させ、ライン・トレース・カーを発信したり、停止させたりしなさい。なお、音感知センサーの回路図は以下のとおりである。
f:id:bitterharvest:20140721115626j:plain
必要な部品

RPR220x2(ローム

74HC00(各社)

TA7291Px2(東芝

抵抗

 50Ωx2

 2KΩx2

 20KΩx2 (可変)

線材

乾電池x2

基板

 ICB-91(サンハヤト) x 2

 ユニバーサル基板 要切断

ユニバーサルプレートセット(タミヤ

ダブルギアボックス左右独立4速(タミヤ

ナロータイヤセット(58mm径)(タミヤ

ボールキャスタ(2セット入)(タミヤ

エレクトレット・コンデンサ・マイク

オペアンプ LM358

ロジックIC 74HC390A

2.改造版

改造版が出来上がりました。久々の工作で3時間ほど費やしましたが、見ての通りです。上にちょこんとXMOSのXC-5が乗っています。
f:id:bitterharvest:20140721120244j:plainf:id:bitterharvest:20140721120257j:plainf:id:bitterharvest:20140721120310j:plainf:id:bitterharvest:20140721120318j:plain