Monthly Archives: May 2015

2015年新人研修 マイクロマウス編(24)

こんにちは。

本日はセンサの調整を行いました。

Tera Termで値をみてそれをグラフ化し、いいグラフに近づけるようにセンサの向きを調整します。

値をとっている間に電池が切れそうになってしまい充電をしていたので2回しか調整できませんでした。
調整せず1回、調整をして2回、計3回測定しグラフ化しました。

右のセンサの値をグラフ化したものがこちらです。

右センサ

左のセンサの値をグラフ化したものがこちらです。

左センサ

どちらもまだきれいなグラフになりません。
まだまだセンサの調整が必要なようです。

最後に本日のオフショットです。

IMG_0594_R

IMG_0597_R

IMG_0598_R

続きを読む ›

Posted in Pi:Co Classic2 製作記


2015年新人研修 マイクロマウス編(23)

こんにちは。

本日はまずPWMモードの設定をざっと読み複雑なんだなということを学びました。

次にStep.7をコンパイル、インストールして180mm前進するようにしました。
ちなみにPi:Co Classic2の車輪の直径は48mm、1-2相励磁のため1回転400パルスなので
180mm進むためには約478パルス必要になります。

次に90度右回転するようにしました。
右回転させるためには左の車輪は前進、右の車輪は後進するよう設定します。
きちんと90度回るようになりました!

次に壁にぶつからないように走行させます。
まずセンサーチェックをして閾値を入力しました。
その後走行させるとまっすぐではありませんが、壁にぶつからず走らせることができました。

明日はまっすぐ走行できるようにセンサーを調整をすることになりそうです。

最後に本日のオフショットはこの1枚です♪

IMG_0579_R

続きを読む ›

Posted in Pi:Co Classic2 製作記


マイクロマウスキット大会 Pi:Co杯(仮)プレ大会のレポート

マイクロマウスキット大会 Pi:Co杯プレ大会は、東日本支部の5月の月例会にお邪魔して開催しました。

前半は、宇都宮さん、平井さん、小島さんらによる技術交流会を行い、後半はPi:Co杯(仮)プレ大会を行いました。

 

技術交流会の前に春日名誉教授からライントレースのデモが行われました。

IMG_0561s
 

技術交流会はこんな感じ。
IMG_0562s

宇都宮さんの発表内容は
スケジュールを立てて本格的にPi:Coの開発をしてしました。
センサの角度は治具を作って左右を同じ角度に調整し、さらに、センサが壁の上をセンスしているため、車体を前傾姿勢になるように、そこに貼るテフロンシートを工夫されていました。
上級者が配置するような発光素子、受光素子の配置ではなく、ハードウェアの改善をしたいが、ルール上、改善ができないことになっているのでソフトウェアで改善してしまうところところがすごい。
また、SH7125にはEEPROMがないたいため、プログラム領域の一部をユーザープログラムで読み書きして疑似的EEPROM化していました。
ステッピングモーターはパルスを与えて位置制御するのが普通だ考えていたが、宇都宮さんのマウスは、DCモータであり、それからプログラムを移植するには加速度/トルク指令にする必要かあり、それにあう式を導いて、ステッピングモーターでありながら、トルク指令で動作するようにしていました。

 

平井さんの発表内容は
Pi:Coの組み立てマニュアルに対するありがたアドバイスでした。私が、入社してPi:Coを組み立てたとき、同じことを思ったので、早急に修正してアップしなければ。。。
また、センサの位置に関しても5mmでも下げた方が社内でもわかっており、Pi:Co Ver2.1として発売する予定です。
平井さんのみアルマイト加工した車輪を使用しており、モーターの軸に入らないとのこと。モーターの軸を紙やすりで削っていれたとのこと。

 

小島さんの発表内容は
コンパイラ、Flash書き込みをWindows環境ではなく、Linux環境の構築から始めたところがすごい。
小島さんも宇都宮さんと同じでセンサについていろいろ解析をして、ハードウェアの改善ができないため物理的にセンサの光軸をずらしてセンサの飽和を回避していました。

 

大会の方は、平井さん、小島さん、宇都宮さんの順番で走行してもらい、
平井さんのPi:Coは、いきなり後ろに走るというパフォーマンス?を見せていただきました(笑)。
その後何とか前進するようになりましたが、袋小路でぶつかってしまいリタイアとなりました。
それでも、両サイドの壁にぶつからずに走ったのはすごい。

 

小島さんのPi:Coは、スタートをスイッチ押さずに、Halfのように反射型距離センサを使ってスタートされていました。安定して走行を始めましたが、同じところで止まってしまうバグが発生。
重ね探索することで同じところで停止するは回避できたものの、旋回時に電池のケーブルにぶつかったみたいで回転不足でリタイアとなってしまいました。

 

宇都宮さんのPi:Coが唯一完走したPi:Coでした。探索は44秒683でGoalしましたが、第二走行で斜め走行をしましたが、段差とパラメータ調整不足により最短での完走はできませんでしたが、記録には残らないが、斜め走行でGoalしたいところを見たく、何回かトライして12秒という好タイムをたたき出しました。迷路は以下です。それにしても、優勝者クラスにPi:Coを渡す、横壁にぶつからずに制御するのは当たり前なのですね。

pico_pre

宇都宮さんの第二走行。

 

 

 

次回のPi:Co杯(仮)から本大会となり、第1回 Pi:Co杯(仮)が 7月26日、長井市地場産業復興センターにて行います。

 

続きを読む ›

Posted in 大会情報


2015年新人研修 マイクロマウス編(22)

こんにちは。

今日はほとんど進みませんでした。

ブザーできれいなドレミを流すのにMTU2というのを使います。
このMTU2というのは設定が必要なのですが複雑怪奇でして。。。
その設定をするために必要な知識(序論といったところでしょうか?)を勉強しました。
この序論も複雑怪奇で今日は脳が幾度もショートしてしまいました。

そして、その説明をうまく言葉にすることができないのですorz

一つの波(1周期)が1秒間に100回あれば100Hz(ヘルツ)で
1kHz=1msecは1秒当たり1000回数えるとき
1周期あたり1/1000秒であるということを指しています。
PWMを利用してきれいな周波数を流したいので
どこで1にするのか0にするのか指令を与えなければいけません。
CPUの下にflip flopというレジスタがぶら下がっていて
これは1bit収納できる引き出しのようなものです。
その指令をどこのレジスタに入れるのか、これが分かりにくいのです。

うーん
本当に説明するのが難しいです。

最後に本日のオフショットをどうぞ。

IMG_0486_R

IMG_0489_R

IMG_0491_R

IMG_0492_R

IMG_0493_R

IMG_0494_R

IMG_0495_R

IMG_0496_R

続きを読む ›

Posted in Pi:Co Classic2 製作記


2015年新人研修 マイクロマウス編(21)

こんにちは。

本日はまずStep.5をコンパイル、インストールしセンサーチェックを行いました。
真ん中の右側のLEDが付かず、一ヵ所半田を増すことになりました。
うーん残念。

半田付けをしたら直り、Tera Termでそれぞれのセンサが壁に近い時と遠い時の値を確認しセンサーチェックは終了。

IMG_0474_R

IMG_0475_R

IMG_0476_R

IMG_0477_R

次にStep.6とStep.7を飛ばして、ハードのチェックをするためにStep.8をコンパイル、インストールしました。
動きました!
1

2

3

4

とりあえず動いてよかったです♪
明日からはまたPCと向き合うことになりそうです。

それでは本日のオフショットです。

IMG_0451_R

IMG_0455_R

IMG_0459_R

IMG_0462_R

IMG_0469_R

IMG_0479_R

続きを読む ›

Posted in Pi:Co Classic2 製作記


2015年新人研修 マイクロマウス編(20)

こんにちは。
お久しぶりです。

本日はスイッチで音階を鳴らせるようにしました。
ただROBOMECHに持って行っていた私のPi:Co Classic2が午前中帰ってきていなかったため、青木のPi:Co Classic2で行いました。

音はそれぞれ周波数が違います。
以下例になります。

440 ラ
466 ラ♯
493 シ
523 ド
554 ド♯
587 レ
622 レ♯
659 ミ
698 ファ
739 ファ♯
783 ソ
830 ソ♯
880 ラ
923 ラ♯
987 シ

まずStep 4のサンプルプログラムをコンパイル、インストールしドレミの音がでることを確認しました。
次に音階を増やすようにプログラムを書き換えます。
完成したのが以下のものです↓

青色のスイッチを押して二進数が増えると音階も上がり
赤色のスイッチを押して二進数が減ると音階が下がるようになりました。

上記のbreakはcaseと対になっているように見えますがそうではなく切りたい場所にいれるだけなので、breakがないならその次にあるブログラムとつながって動くだけです。

最後に本日のオフショットです。

IMG_0435_R

IMG_0436_R

IMG_0441_R

2番目の写真はドレミファが鳴らせて喜んでるところです。

続きを読む ›

Posted in Pi:Co Classic2 製作記


2015年新人研修 マイクロマウス編(19)

こんにちは。

本日はまずStep3-2をコンパイル、インストールしました。
Pi:Co Classic2の先頭4つのLEDが2進数を表していて
赤色のスイッチで増加、青色のスイッチで減少させることができるようになりました。
また、黄色のスイッチを押すとLEDが表している数の回数、ブザーがなるようになりました。

次に赤色のスイッチ、青色のスイッチを押したときに
押したことが分かるようにブザーがなるようにしてみます。

は方形波のループの数を表しています。

は波形1つを作るfor文で、i < 0 × fff ;は条件を表していて
0 × fffを減らすと方形波のそれぞれの波形の長さが短くなり、高周波(高音)になります。
増やすと長くなり、低周波(低音)になります。
赤いスイッチの方を高音に、青いスイッチの方を低音にしました。
高音すぎて聞こえにくかったり、長い低音になってしまったので
赤いスイッチの方を長く、青いスイッチの方を短くしました。
できたのがこちらのプログラムです↓

このあとは付けてなかったフォトトランジスタとLEDを半田付けしました。
というわけでPi:Co Classic2本体完成しました!

IMG_0421_R

はじめは半田付けに恐怖心まで抱いていましたが、なんとか完成させることができました!
嬉しいですね♪

最後に本日のオフショットです。

IMG_0410_R

IMG_0412_R

IMG_0418_R

IMG_0420_R

次回は来週の水曜日になります。

続きを読む ›

Posted in Pi:Co Classic2 製作記


2015年新人研修 マイクロマウス編(18)

こんにちは。

本日からプログラミングの続きです。
Step.3

初めのほうにでてくる↑のintはunsignedが付いていないので+だけでなく-も含みます。
intは32bitの整数の型で、CPUによってbit数が変動する型なのは以前習いました。

intのあとに書かれているiやstate_r, state_c, state_lは変数です。

RAMは書き換え可能の記憶装置です。
ROMは書き換え不可の記憶装置です。

RAMには番号(アドレス)のついた引き出しがあり、番号に対して中身が書き換え可能になっています。

ヒトが変数を定義(好きな名前を付ける)とコンパイラーはCPUが分かるように割り当てをしてくれます。

CPUは訳すと中央演算処理装置といい、名前の通り計算をしその結果(データ)のやりとりをしています。
計算は+、-、×、÷をしています。いわゆる四則演算ですね。

CPUにはRAM、ROMやI/Oなどがぶら下がっています。
I/OとはInput/Outputのことで、ここにLEDやスイッチが繋がっています。

の0x004fは16進数なのでこれを2進数にすると0100_1111になります。
1になっているbitが出力設定となり、PED0~3(つながているのはLED)の端子が出力設定され、1の時にLEDが点灯します。
まずプログラムを何もいじらずコンパイルしPi:Co Classic2に転送します。
すると左(Pi:Co Classicの後ろを自分の方に向けたとき)の赤色のスイッチを1回押すと
左のLEDが点灯し、2回目押すと消えます。
真ん中の黄色のスイッチを1回押すと真ん中の2つLEDが点灯し、2回目押すと消えます。
右の青色のスイッチを1回押すと右のLEDが点灯し、2回目押すと消えます。

次にCPU横の二色発光のLEDを半田付けしました。
このLEDを黄色のスイッチで点灯、消灯するようにします。

を以下のように書き換えます。

黄色のスイッチを1回押すと真ん中二つのLEDと二色発光のLEDが点灯、2回押すとこれらのLEDが消灯するようになりました。

次に点灯は先ほどのまま、二色発光のLEDの青色を赤いスイッチを2回目押したとき
赤色を青いスイッチを2回押したとき消灯するように書き換えます。

を以下のように書き換え

次に

を以下のように書き換え

最後に

を以下のように書き換え

コンパイルし、転送します。

プログラム通り点けたり消したりすることができるようになりました。

IMG_0371_R

IMG_0372_R

IMG_0373_R

したいと思ったように動いてくれると嬉しいですね♪

最後に本日のオフショットです。

IMG_0367_R

IMG_0368_R

IMG_0369_R

IMG_0370_R

続きを読む ›

Posted in Pi:Co Classic2 製作記


2015年新人研修 マイクロマウス編(17)

こんにちは。

本日は昨日に引き続き「光反射型距離センサ」の後半戦です。

昨日は受光時の外乱光を除去するためにハイパスフィルターを使用し、それを使用すると
電圧が下がってしまうという欠点があってどうにかしたいというところで終わっていました。

そこで登場するのがオペアンプです。
オペアンプは+と-が同じ電位になるように、出力電圧を増幅するものです。

^81EEADE4DAD0CA123C02BAC3D74722D04E4EDEBF77B8345D21^pimgpsh_fullsize_distr

入力側が+、フィードバック側が-のとき非反転増幅回路といいます。
何が反転しないのかというと入力側の電圧の波形に対して、出力側の電圧の波形が反転しないということです。
増幅率は1+R1/R2で求められます。

反転増幅回路の場合は、増幅率は-(1+R1/R2)で求められます。

オペアンプの特徴としてoff set(オフセット)というのがあります。
入力側の波形で反応しない領域があるのです。
それをオフセット領域といいます。
オフセット領域があることでノイズに強いのです。

ただ、Pi:Co Classic2の場合は小さい値でも反応させたいのでbias化します。
biasとは電圧を常時付加することを指します。
オフセットの値は型番によって決まっているので、それ以上の電圧をかければ絶えず反応できます。
そのためbias化して電圧を上げます。
オペアンプに入力される信号はbias化された信号(0.5V)とフォトトランジスタからの信号(signal)が合わさったものです。
よってオペアンプから出力される電圧は(約0.5V + signal) × 増幅率(11) = 5.5V + signal × 11と
この段階ですでに5V超えてしまいます。
これではいけないのでなんとかしないといけません。

オペアンプの特徴として増幅率は1以上というのがあります。
1倍の回路をヴォルテージフォロワといいます。
先ほどの図のR2を∞にできたとしたら、増幅率は限りなく1に近くなります。
この∞の抵抗を実現したい!

そこでコンデンサの出番です。
コンデンサは交流だと抵抗として働き、直流だと電流を流しません。
直流だと流さない=大きな抵抗=∞の抵抗になるのです。

電源からの信号(バイアスの信号)は一定なので直流成分です。
コンデンサをつけて∞の抵抗に見立てて増幅率を1倍にします。
signalは変化するので交流成分です。
よってコンデンサで直流成分は1倍、交流成分はそれ以上増幅させます。
すると5Vを超えることなく、全ての値に反応できるようになるのです。

今日で回路はおしまい?みたいです。
次回からはソフトを本格的に勉強していきます。

本日のキーワード
・オペアンプ
・非反転型増幅回路
・反転型増幅回路
・増幅率
・オフセット
・bias

最後に本日のオフショットです。
わかって嬉しかった時の顔を激写されてます(笑)

IMG_0357_R

IMG_0361_R

続きを読む ›

Posted in Pi:Co Classic2 製作記


2015年新人研修 マイクロマウス編(16)

こんにちは。

本日のテーマは「光反射型距離センサ」でした。
Pi:Co Classic2はこのセンサを使って壁までの距離を見ています。
このセンサの特徴として光の量は距離の2乗に反比例の関係を利用して距離を測定しています。

発光する側にはNPNのトランジスタがついていて
トランジスタのBaseからGNDの間に抵抗が付けられています。
このようにBaseからGndに抵抗を挿入することをpull downと呼び
NPNの場合、CPUから不安定な信号がきても動かないので
必要のない時にLEDが光ることを防ぐことができます。

^8EDA9596ABC8C60A1829D0E3C267F4FC59EC329F86D4072FCF^pimgpsh_fullsize_distr

仕組みは図のように抵抗と抵抗の間の電圧が限りなく0Vなるため
不安定な信号がきても動かないようにしています。

これをpull up(電源側に抵抗を接続)すると不安定な信号がくると動いてしまいます。
逆に、PNPのときはpull upするとCPUから不安定な信号がきても動きませんが
pull downすると不安定な信号がくると動いてしまいます。

受光側はフォトトランジスタというのが付いています。
これはフォトダイオードとトランジスタが組み合わさったものです。
受ける光が強くなればなるほど、流れる電流量も多くなります。

ADCとはアナログデジタルコンバーターのことで
アナログデータからデジタルデータへの変換を行っています。
反対にDACはデジタルアナログコンバーターのことで
デジタルデータからアナログデータへの変換を行っています。

壁との距離が近いと受光する量が増え
フォトトランジタのエミッタにつながった抵抗の電位差が大きくなります。
その電位差の値をマイコンがキャッチし、距離を測定します(近いと認識)。
反対に壁が遠く受光する量が減ると電位差は小さくなります。
そしてその電位差の値をマイコンがキャッチし、距離を測定します(遠いと認識)。

回路を見るとフォトトランジスタの出力にコンデンサとそこからGNDを繋ぐ位置に抵抗が付いています。
コンデンサは高周波のとき抵抗値が小さくなり
低周波の抵抗値は∞になります。
この性質を利用したのがこのコンデンサと抵抗を合わせたHPF(High Pass Filter)です。
Pi:Co Classic2が発した光の反射光だけを受光するわけではありません。
蛍光灯や日光、所謂外乱光も受光してしまいます。
外乱光は大会では低周波の成分が多いためHPFで除去することで
Pi:Co Classic2が発した光の反射光だけを見れるようにしているのです。
逆に高周波はLPF(Low Pass Filter)で除去します。
特定の周波数が必要なときはHPFとLPFを組み合わせたBand Pass Filterを用います。

これらのフィルターは電圧が下がってしまうという欠点があります。
それをどう乗り越えるのかはまた明日の講義になりそうです。

本日のキーワード
・光反射型距離センサ
・pull down
・pull up
・フォトトランジスタ
・ADC
・DAC
・HPF(High Pass Filter)
・LPF(Low Pass Filter)
・Band Pass Filter

それでは最後に本日のオフショットです。

IMG_0329_R

IMG_0331_R

続きを読む ›

Posted in Pi:Co Classic2 製作記