FrontPage

目次


コメント

コメントはありません。 Comments/tsujino

お名前:


6/13(金)- Eagleでの基板設計関連

無視できるエラー

パターン設計を終えた後にDRCでエラーがないか確認すると多数のエラーが発生した。
先生にいくつかのエラーに関して教わったのでメモ。

  • Keep out - 部品?同士が近すぎると発生する。
  • Overlap - 配線や穴が重なったりすると発生する。
  • Stopmask - シルク印刷部分が穴や等に重なっていると発生する。
  • Dimension - 配線等が基板の境界線に近すぎると発生する。
    これらのエラーは原因が自分でわかっていて大丈夫な場合は無視してもよい。

設計時に知ったこと教わったこと

  • 今回コイン電池を使用するが、設置部分に銅を露出させ、その上に載せる形をとった。
    銅を露出したい部分にTopとtStopを使えばよい。
  • Addで探している部品が見つからない場合、検索しても一致していないと出てこなかったりする。
    検索キーワードの前後に*をつけるとそれを含む結果を表示できる。
  • チップ抵抗を並列接続するのに、回路図も並列で作成する必要はない。
    重ねてはんだづけすればよい。
  • 使いたいリードスイッチがライブラリになかった。
    電源とGNDにそれぞれつないだViaをリードスイッチの長さに合わせて設置してそこにはんだづけ。

6/27(金)

不要な基板を

昨日フリスクケースに収めるためにに基板をカットしていたが、プラゴミに基板が捨てられているのを見て思考停止で自分も捨ててしまい、基板は埋め立てゴミだと先生に指摘をいただきました。
以後注意します。

7/4(金)

基板設計とマイコンの書き込み

山村君も作業日誌で触れていますが、基板設計時にはマイコンの書き込みに必要なピンをあらかじめヘッダピンにつないでおくべきです。
今回使うマイコンはPSoCのCY8C27443、SSOPパッケージですがPSoCの書き込みに必要なピンはVDD、GND、XRES、SCLK(P1[1])、SDATA(P1[0])の5つです(XRES無しの4ピンでもなんとかなるようです)。これに関してはマイコンブの共有情報のページにもまとめられています。

基板設計で書き込みピンを

自分はそれをしていなかったことが反省点です。この状況でどのように書き込みをするかという話を先生からいただきました。XRESが何もつながれていないので4ピンですが、VDDとGNDに関しては2ピンヘッダに繋いであったのでそれを使えばよい。P1[0]、P1[1]に関しては7セグに繋いであったのでそこを書き込み段階だけ繋がずチップ抵抗部分から線を繋いで書き込みを行う。

7/11(金)

電源と動作確認

設計した基板に実装してみたが、LEDがたまにしか点灯しない現象が。コイン電池の内部抵抗で必要な電力が得られていないのではないかとの指摘で電源装置を使って3Vで動作確認したところしっかり点灯しました。2.8Vくらいに下げると点灯しなくなったので、コイン電池がそれを下回っていたようです。
電源装置での動作確認は事前にしましょう。

電源装置による電流リミッタ

電源装置のリミッタボタンを押しながら電流を調整するとそれがリミッタとなってそれ以上電流が流れることを阻止してくれます。もしそれ以上に電流が流れる場合は自動で電圧を下げるようです。

11/17(月)- カメラシステム関連

カメラ映像調整

  • レンズから本体に向かって、ズーム、しぼり、ピント。
  • ディップスイッチの4で2値切り替え。
  • ズームとピントを合わせてから2値に切り替えるとよい。

重心座標のシリアルデータ

1フレーム辺り16進数で8byte分のデータが115200bpsのシリアル通信で送られてくる。

0x80, X1, X2, X3, 0xC0, Y1, Y2, Y3

といった感じで、X = X1*128 + X2 + X3/128
Y座標も同様であり、数値部分は最上位bitが0となるので0x80、0xC0をとり得ることはない。ストレージの川上さんのフォルダにこのデータあり。

カメラシステムとのシリアル通信

  • カメラシステムの4ピンには重心座標データを送信するものとカメラ設定データを受信するものがあるので注意。それぞれDout、CAMと印字されている。
  • PCで受信したシリアルをとる際にAcknowrichを使ってログを保存すると、拡張子が.000といった風にナンバリングになり、txtに変えると文字化けしたが、SerialDebugでログを保存するとtxtファイルになる。
  • 4ピンはGND、VDD、送信、受信と並んでいる。GNDと送信だけ繋いでPSoCで受信できた。(マイコンブのチュートリアル、PCと通信参照)
  • PSoC(CY8C27443)だと115200bpsは割とギリギリ…?
    参考になるかも↓
    http://www.ikko.k.hosei.ac.jp/~matlab/psoc/psoc_uart_clock2.pdf#search='psoc+%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E9%80%9A%E4%BF%A1'

11/18(火)

シリアルの文字化けの原因

  • カメラシステムとPSoCとPCを繋ぎ、カメラから送られてきたシリアルデータをそのままPCに送信し、PSoC1Terminalでデータを確認しても文字化け状態になってしまった。
    原因はTerminalでBinaryにチェックが入っていなかっただけで、正しいデータを受信していることが確認できた。
  • Terminalが動作を停止してしまう。高速でデータが送られつづけるからだろうか?

11/20(木)

PSoCの駆動電圧によるCPUCLK制限

  • ほとんどのデバイスで、PSoCのM8Cプロセッサのクロックにおける最大速度は、以下のようになる。
    VDD ≧ 4.75V → 24MHz
    VDD ≧ 3.0V → 12MHz
    VDD ≧ 2.4V → 3MHz
  • 逆にCPUCLKが12MHzを越えることがあるのならば駆動電圧は4.75V以上でなければならない。
  • 3ページ参照↓
    http://www.cypress.com/?docID=50761
    秋田先生の作業日誌(11/10/14)も参照。

シリアル通信がうまくいかなかった要因

  • Binary表示ができていないことに気づく前に、シリアルデータがCONNECTと表示され続ける状態になってしまい原因を見つけるのに手間取ったが、文字化けを直そうとCPUCLKを変更していて24MHzになっていたのが原因だった(12MHzにしたところ元に戻ったので)。
  • PSoC1duinoはショートピンで駆動電圧を3.3Vか5Vに指定できるが、3.3Vとなっていた。24MHzが前述の制限から外れているのでそのような事態になったとみた。PSoC1duinoのショートピン等に関しては↓
    http://shop.cqpub.co.jp/hanbai/books/I/I000070/PSoC1duino_man.pdf

11/22(土)

Terminalが停止する件

その後、PSoCから送られてくるデータを16byte(2フレーム分)だけにしてみるとTerminalが動作を停止することはなかった。Terminalで動作確認する時は送るデータを程々にする。

11/25(火)

ASCⅡ関係

  • 動作確認のために0x80を受信したら'X'を送信してくるように記述したが、'X'が見当たらないということがあった。バイナリ表示なので当たり前。0x80の後に毎回0x58が来ていたのでASCⅡコード表で確認してみたら'X'は16進数で0x58となっていた。
  • 忘れていたがC言語では'文字'、"文字列"なので使い分けを。
  • 毎回カメラシステムに接続するのも手間なので簡単な動作確認はPCから座標データを打ち込めばいいと思ったが、cGetCharで1文字をとるなら0x80にあたる文字を送信しなくてはならないのでASCⅡコード表を確認、だがそんな文字は存在しなかった。
    ASCⅡは、数字・アルファベット・制御符号を7ビットで表している、データ通信用の符号体系。

12/9(火)

mbedで困ったら

参考になりそうなページ↓
https://developer.mbed.org/users/okini3939/notebook/mbed256/

fpsの話

  • 1フレームにつきデータは8byte、シリアル通信を115200bpsで行っているので14400byte/s、1800fpsと計算したがそれはシリアル通信速度の話でカメラのフレームレートとは違う。
  • 高速視線検出カメラシステムに使われているLynx社のIPX-VGA210-Lは垂直方向の読み出し解像度によってフレームレートが変化する(過去の外部発表データに記述あり)。
    640*480[pixel] → 210fps
    640*175[pixel] → 500fps
    640*64[pixel] → 1000fps

12/11(木)

速度の壁につまずく

PSoCでサッケード中のみLEDを点灯させるのがどうにもうまくいっていない。
LEDは点滅し、カメラ全体を白か黒で1値にしてやると消灯する。サッケード測定中でも点滅が見えてしまうため閾値を再調整したがやはりおかしい。
PSoCシリアルデータを送って確認してみたところ1フレームに8byte分のデータが送られていない。一応カメラシステムから直接シリアルデータをもらって確認したが正常。
その後main.cの記述を大幅にコメントアウトしたところPSoCからのシリアルデータも正常になり、コメントアウトを減らしていったところ徐々に1フレームに送られるシリアルデータが減っていく状態を確認できた。
→PSoCの処理が追いついていないためGetが遅れシリアルデータの取り逃しが発生しているのか。

12/12(金)

CPUCLKで解決を図る

しばらく前に駆動電圧によるCPUCLK制限についてメモしたが、駆動電圧を5Vに変更してCPUCLKを12から24MHzに変更した。
だがそれでもシリアルデータの取りもらしが発生した。しかし、12MHzの時と比べるとほとんどコメントアウトしなくても発生しなかったので改善になったとみえる。
ちなみにmbed NXP LPC1768は96MHzで動作するようだ。

12/15(月)

案外気づかないこと

シリアルデータが受信できない事案が発生。PSoCを介さずに接続しても同様。カメラの電源は入っていたので配線を確認したが解決せず。原因はFPGAの2枚の基盤の接続が緩んでいたため。

その処理は必要か

main.cの、今までは0x80を受信した時に処理していた座標計算などを0xC0を受信した時に処理するようにし、y座標の計算をオミットした。
y座標のデータをとっている間はGetが追いつかず、y座標は1byteしかとれなくなったがx座標は3byte分とることができたのでx座標に関してはこれで処理は追いついているはず。
y座標も計算したい場合など記述が増えれば動作が危うくなるので、CY8C27443ではかなり厳しいか。

12/25(木)

中間発表記録

16日17日に練習、22日に本発表があった。
発表時間は7分だが練習では8分20秒、本番では5分24秒と大幅な発表時間差が出てしまった。練習では説明を丁寧にしすぎ、本番では説明を簡略化し焦りすぎた差が出た。
はじめにサッケードとサッケード抑制、サッケードディスプレイについて簡潔に説明するのがうまくいかなかった。特にディスプレイに関してはディスプレイの定義、環境による抑制の働き、環境の定義、利点などを程よくまとめなければ。

本発表での意見諸々

  • サッケードディスプレイの図がわかりにくい
  • サッケードディスプレイの定義があやふや
  • 明環境とはどのくらいか
  • サッケード抑制測定の目的は
  • サッケード抑制の説明を詳しく
  • 視野を抑制ではなく視野の知覚を抑制
  • サッケード抑制に個人差は

  • 予稿の章分けが多い
  • 参考文献は著者、タイトル、出展の順で   

サッケードディスプレイの試作

12/15にx座標はとることができたとしたが、x座標でサッケード中のみ点灯させるよう実際にディスプレイの動作を試してみた。LEDが点灯している状態を知覚できなかったが撮影した動画では点灯していたので意図通りに動作した。

1/5(月)

A happy new mbed

mbed NXP LPC1768を使ってLチカとか簡単なプログラムで遊んでみた。使い勝手がいいのかどうかはまだよくわからない。

1/8(木)

mbedとPCでのシリアル通信

  • プログラム書き込み用のUSBをPCとのシリアル通信に使うことができ、その場合のピン名はUSBTX, USBRX。デバッグに便利。
    例:Serial PC(USBTX, USBRX);

通信速度の設定を忘れずに!

  • クロックレートの設定は
    name.baud(baudrate);
    とできるが、これを省略するとbaudrate = 9600になってしまう。
  • PSoCの場合モジュールで設定していたため忘れやすい。通信速度が違っていてもコンパイルは通るので注意!

BusOutの使い方+

  • デジタル出力をまとめて扱う(参考→) https://developer.mbed.org/users/okini3939/notebook/BusOut_jp/
  • このページのサンプルプログラムで
    BusOut myleds(LED1, LED2, LED3, LED4);
    for(int i=0; i<4; i++) {
       myleds = 1 << i;
    とあり、"<<i" はバスのビット(0~3)を指定しているのだろう。"<<i - 1" としてやればLED1~3が点灯し、"<<i + 1" としてやればLED2~4が点灯した。

PortOutの使い方+

  • デジタル出力をGPIOとして扱う。高速(参考→) https://developer.mbed.org/users/okini3939/notebook/PortOut_jp/
  • このページによると
    LED1 = P1.18  LED2 = P1.20  LED3 = P1.21  LED4 = P1.23
    であり、これらを指定するには
    #define LED_MASK 0x00B40000
    PortOut ledport(Port1, LED_MASK);
    といったように使用するピンと同じポートを指定し、同じビット目を1にすればよい。 p21~p26を指定したい場合は
    PortOut ledport(Port2, 0x0000003F);

1/13(火)

mbedでのディスプレイ試作

  • 一度動作しなかったが原因は先述の通信速度の設定がされていなかったため。
  • 動作確認用にmbedで受信したシリアルデータをそのままPCに送信しようとしたが送られてこない。
    Windows環境でmbedとシリアルデータのやり取りをするにはドライバをダウンロードする必要がある。

1/14(水)

論文検索の落とし穴

「眼球運動の実験心理学」の引用文献p119から論文を検索していた。

  • p105に(Riggs, Merton & Morton, 1983)とあるがp119にこの著者のものは1974しかない。1974の方はp103,p108で用いられている
  • ちなみにこの1974の方のタイトルは「Suppression of visual phoshenes during saccadic eye movements」となっておりCiNiiでもそれが検索結果に出てくる。しかしタイトル中、正しくはphosheneではなくphosphene。
  • (Brooks, Impelman & Lum, 1980 ; Influence of background luminance on visual selectivity during saccadic eye movements)がどのページで検索しても見つからず、収録誌のページから検索すると見つかった。タイトル中のselectivityは正しくはsensitivityであった。

1/21(水)

測定で不適切だった点等

プログラムは問題なく動作したが気になった点が。
まずサッケードと判断する速度を測定し、点灯期間を設定した。

  • mbedの青色LEDを使ったためか検出率が全体的に高く、サッケード中にわずかに点灯しても認知されてしまう。試作時に同じ閾値で認知されなかった要因は、LEDを眼球位置に向けておらず刺激が弱かったためかと思われる。X軸方向のみで判断していた点で違いもあるが、主な要因ではなさそうだ。
  • テスト刺激の位置が低すぎたため視線が全体的に下向きになっていた。設定がずれやすくなってしまうので刺激はできるだけ正面にする。
  • 点滅していると錯覚してしまうので指標の近くに別の光源は置かない。
  • 連続して点灯すると回数を目視で判別しかねる場合があるので検出率を測る時は1回の点灯を繰り返し、点灯回数を正確に把握できるようにする。

1/26(月)

測定内容

  • サッケード開始点から点灯させ一定期間で消灯させるのは(速度と期間に相関があるのは分かっている、一定であるはずはないので)意義がないので必要はない。
  • 点灯開始は同様で、サッケード終了点から一定期間で消灯させて検出率を測定する。(この場合ならばサッケードの大きさに応じて点灯期間が変化する)
  • サッケード検出の閾値は一定に定める。(位置関係が同様であれば変更する必要はない)

1/29(木)

サッケード中に消灯した場合の測定

前述の内容で、点灯と消灯を逆にした測定を行った。

  • 3人分のデータをとったが推移は似ている。
  • おおよそ20msまでは低い検出率、60msからは高い検出率が得られた。

2/2(月)

終了判定の閾値に関して

  • 自分で簡単に確認しただけだが、終了判定の閾値が1.0を越えると(0.99なら大丈夫だった)サッケード中のみ点灯するはずのLEDが常時点灯する。おそらく閾値が高すぎて終了判定がされないため(閾値より上から閾値より下にいかなければならない)。
  • ちょうど1.0が境界になっているのが気がかりではあるが、以前にとったサッケードのデータで最高速度が0.996…だったので大体そんなものなのかもしれない。
  • 視線ではなく、カメラの前で軽く手を振って見た場合でも1.0を越えると常時点灯に陥ることがあった。

2/3(火)

サッケード中に点灯した場合の測定

LEDを眼球方向に向けずに(眼球に向けると光が強すぎるのか閾値を上げても知覚されてしまう)、消灯の時と同じ条件で測定を行った。

  • 同じ3人でデータをとったが推移があまり近くはない。
  • おおよそ20msまでは前回と同様に低い検出率にまとまったが、その後は三者三様に推移した。