« 2013年7月 | トップページ | 2013年9月 »

2013年8月の2件の記事

2013年8月23日 (金)

ライブカメラ可動部はタクトスイッチで動くようになった

 RaspberryPiで動かすライブカメラプロジェクトは完成が近づくにつれて進捗が極端に遅くなった。今年の猛暑で、全体にやる気が失われているのも原因だが、同じようなモータードライバーを2つも作るという安易な実装が気に入らなくて、先に進む意欲がどうも湧かない。

S_p8206040  しかし、ここまできて今さら方針を変えるわけには行かない。気の進まない作業をやりたくないという潜在意識があるのだろう、何故かやたらと他のことに関心が行ってしまう。それでも、カメラの可動部は、とりあえずタクトスイッチで上下左右が操作できるようになった。前回のブログからもう20日も経っている。どんなことに脱線していたか、以下時系列で報告する。

耐熱と難燃は何処が違う?耐熱ケーブルを買ってくる(8/5/2013)

チルト部のモータードライバー基板が完成したので、ゆるゆると次のパン部のモーター基板の制作にとりかかった。構成は全く同じだが、ここには、電源アダプターのコネクターやレギュレーター回路、それにRaspberryPi(以下RasPi)への制御線のコネクターが載る。チルト部の基板よりもう少し大きいスペースが必要だ。

 チルト部では、モーターの動力線の配線にありあわせのビニール線を使ったため、ビニール被覆がハンダ付けですぐ変形し、見映え良く作るのに難儀した。今度は意を決して、耐熱ケーブルで配線することにする。仕事の帰り耐熱ケーブルを買うだけのために秋葉原に寄る。

 ウェブで下調べしたところでは、ケーブルにはULXXXX(Xは数字)という業界の国際規格があり、これが材質と耐熱性を細かく規定しているようだ。ところが内容が専門的過ぎて、素人にはどれがハンダ付けに強いケーブルなのかさっぱり見当がつかない。

S_p8156032  だいたい、耐熱性と難燃性というのがどう違うのか説明してくれるところがない。そのうえ、架橋ポリエチレンとか、照射ビニールなどとわけのわからない言葉が乱立する。千石電商だけでも、売っている耐熱ケーブルのUL規格の種類は6種類もある。

 最初は、単価の一番高いものを買おうと思っていたが(自分が使う量ぐらいならたかが知れている)、千石のネットショップには耐熱温度が表記されていることを見つけ、一気に選びやすくなった。

 これによると単価の高さと耐熱温度は素直に比例しているようだ。判断は間違っていなかった。結局、秋月でも売っているUL3265というポリエチレンの耐熱ケーブル(125℃) AWG22の7色セット(2m)を、千石で買った(¥550 秋月も同価格)。

 本当は、取り回しが楽な柔らかいビニール線で、UL1015という耐熱温度が105℃のものが良さそうに見えたのだが、店で手にとって見ると被覆が倍くらい太いので諦め、少し硬いが細いUL3265になった。

 家に帰って、以前買ったAWG32の細い耐熱ケーブルのUL規格を調べてみた。こいつはUL1429で、耐熱温度は85℃だった。このケーブルもハンダ付けにはけっこう強いので、今度のケーブルは期待が持てる。

ミニヘリを触っているうち深みにはまり電池交換(8/8/2013)

 部材が揃ったので、さあ、工作というところだが、いまひとつやる気が起こらない。そのうち部屋を片付けていて、大分以前に凝った赤外線リモコンの室内用ミニヘリを触るともなく触っているうち、この修理にはまってしまった。

S_p8236044  こいつは、何年か前、千石の2号店の店頭で、誰でも容易にホバリングができるトイヘリというキャッチにつられ、衝動買いで買ったのだが、宣伝どおり、あまりにも簡単にホバリングが出来たもので逆にすっかり興味を失ってそのままになっているものである。

 これにつられてこのあと、少し難しいシングルローターのミニヘリ含めて、2台も購入し、暫く遊んでいた。しかし、今度は操縦が逆に難しくて、2機とも飛行中にものにあてて部品を壊し、そのうち興味を失って部屋の飾りになっている。

S_p8236050  最初の機体も、大分前、親戚の若い人が訪ねてきて、自慢に動かしたら、久しぶりの操縦でへまをやり、スタビライザーを折ってしまっている。これの修復がやりたくなった。このところ手に入れた工具が作業を楽にしてくれる期待がある。

 実は、このスタビライザーは買ってすぐ折ってしまい、0.5ミリの燐青銅線を径2ミリのスタビライザーの中心に通して補強し、ボンドで固定した。このときはスタビライザーのシャフトの中心に錐で穴を開けるのに大苦労したのだが、今度はあの自在万力と、ドリルスタンドがある。簡単に穴が開けられそうだ。

 何を隠そう、所長は年期の入った模型マニアでもある。50年以上前の高校生時代、文化祭で先輩が作ったが動かなかった無線操縦バス(超短波のエーコン管使用)を、独力で作り直し動かしたのに自信を得て、大学浪人時代に、グローエンジンを使ったR/C飛行機を近くの大学の校庭で飛ばし、大目玉を食らった(見事に飛んだが、エンジン不調で野球練習中のダイヤモンドに不時着した)。

 このころの操舵は、サーボモーターではなく、ゴム動力を使った原始的なエスケープメントという機構をリレーで動かす方法で、-が右旋回、・-が左旋回という悠長な操縦法である。エンジンコントロールは、・・-で、低速、高速と切り替わる。

 始めは送受信機とも自作するつもりだったが、模型店から「頼むから受信機だけは完成品を買ってくれ」といわれ、送信機だけ自作した。当時、受信機は既にトランジスターだったが、送信機はまだ真空管だった。電池駆動のミニチュア管2本で27Mhz帯のA2送信機を作った。B電源は、67.5Vの積層乾電池である。

 フライトシミュレーターは、AppleⅡの時代から、かかさず入手し、いやいや、やめておこう。これを語りだすと止まらなくなる。模型ではそのほかに、会社を定年で辞めたときに電動ヘリコプターを一式買い揃えた。しかし東京都23区内では自由に飛ばせるところがなく、一式は物置のこやしになっている。

S_p8236062  で、ミニヘリである。予想通りスタビライザーのシャフトの中心に0.5ミリの穴をドリルで開けるのはいとも簡単に出来た。工具は揃えるものである。ボンドで2日固めた後、試運転する。うーむ、スタビライザーは全く問題ないが、電池が寿命のようだ。離陸できるほどの出力が得られない。充電が満足に出来ていない。

 キャノピーに入っているリポ電池を良く見ると見事に膨れている。おおーこれは危険だ。替えのリポ電池は、こういうこともあろうかと、以前、006Pの充電池化を試みた時に入手した350mAhの電池の他に、少し小さな240mAhの電池を買ってある。早速取り出してみる。

 ふむ、元の電池より僅か大きい程度で、殆ど同じくらいの大きさだ。キャノピーにもきれいに入る。ライブカメラそっちのけで、この電池換装に夢中になってしまった。元の電池には、ちゃんと過放電防止(らしい)IC基板が内蔵されていた。

 IC基板を残してふくれた電池をはずし、新しい電池を傷めないように、ピンセットで端子の電池側をはさんで手早くはんだ付けする。うまく交換できた。

 電池が大きくなったので、重量軽減のため無用なイルミネーションのLED2つをはずして試運転する。うむ、やはり電池が重くなったため前に重心が移動し前進が止まらない。テールにカウンターウエイト(糸ハンダ)をつけて調整する。よーし、問題なくミニヘリは部屋の中で真上に飛び上がった。ホバリングも問題ない。前から気になっていた懸案がひとつ片付いてすこぶる気分が良い。

モーターとディジタル系の電源を共通にするのは難しい(8/9/2013)

 気を良くしたところで、パン部のモータードライバー基板の工作を開始した。これまでのドライバーに、RasPiとのインターフェース、電源レギュレーターなどが載る。制御はすべてGPIOにしたので、スイッチ4つでとりあえずはRasPiまで行かずにスタンドアロンで操作がテストできる。

 問題は、モーター電源である。チルト部のモーターはマイクロステッピング制御のせいか、力が足らず、とりあえずは6VのACアダプターの出力をそのまま、モーターにかけることにしている。しかし、カメラを左右に振るパン部のモーターの定格は5Vなので、レギュレーターを通さなければならない。

 この5Vをモーターと制御系のマイコンで共用するのは不安だ。試しにブレッドボードに1Aのレギュレーターを通して電源部を作り、モーター(定格0.5A)を回してみた。オシロでみるとモーター動作時には大きなディップが入りマイコンは暴走する。やはりだめだ。

 マイコン側に、インダクターとデカップリングコンデンサーを入れて様子を見る。波形的には余り改善されないが、鋭いディップが減ったのだろう、誤動作はしなくなった(少なくとも暴走はしなくなった)。とりあえず、1Aの大きいレギュレーターを使って、パン部のモーターの電源はレギュレーターを通すことにする。

S_p8236055  少し大きめに基板をとり、アダプターのソケットなどを取り付け始める。基板の固定場所は、パン部のモーターをとりつけたメインのフレームに縦置きである。1Aレギュレーターの実装は最後まで迷った。そもそもACアダプターからの出力自体が、オシロで見ればモーターの動作で明らかに変動し、レギュレーションは余り良いとはいえない。

 レギュレーターを通せば、もっと変動する。インダクターと大容量のコンデンサーで何とか、マイコンの動作は暴走をさけられてはいるが、何もわざわざ悪くなる要因をリソースをかけて(大容量のレギュレーター)増やすことは理に合わない話である。

 迷った挙句、レギュレーターを経由せず、パン部のモーターも直接ACアダプターから給電することにする。パン部のステッピングモーター(ST-42BYG0506H)の定格電圧は5Vだが、規格外の6Vで動かすことになる。

 まあ、自動巻き機のように連続運転するわけでもなく、この程度(5V->6V)なら、まず大丈夫だろうと判断した。壊れて悔しくなる値段のモーターでもない。結果として、レギュレーターは電子回路専用の小さいレギュレーター(0.5A)で済んだ。

S_p8236054

夏ばてか、意欲が上がらない。電気蚊取り器の修理(8/14/2013)
 完成まであと一歩なのだが、どうも意欲が続かない。半田付けを集中して進める気力が失われている。前と全く同じ配線なので面白くないということもある。ただ耐熱ケーブルのおかげで、動力線の配線は全く安心してハンダ付けが出来るようになった。

S_p8236057_2  そのうち、今度は携帯電気蚊取り線香の故障修理という、およそ下らない細かい作業にはまってしまった。ミニヘリの電池交換に続く脱線である。

 腰にぶらさげ単4電池で蚊取りマットに風を送って、屋外や車の中の蚊を避ける年代物の電気蚊取り器である。車の中に蚊を入れると大変なので結構重宝している。電池を取り替えたのにモーターが回らない。電池ホルダーの接点を見ると、電解液で錆びたあとがある。しかし接点は磨かれて光沢が出ており接触不良ではない。

 電池を新しくしたのに動かないので意地になった。分解してテスターで調べると、モーターが動かない原因は、スイッチ不良だった。ケースに電解液が漏れたあとがあり、スイッチも分解すると内部に電解液が入ったらしく接触板が真っ黒になっていた。

S_p8136018  この手の超小型スライドスイッチは、以前、千石本店の2Fで面白がって買ってある。基板に当ててみると大きさもピッタリで端子もパタンと合致した。よし、これに取り替えればOKだ。

 でも、これまでのスイッチの接触板をフラックスクリーナーできれいにし、スイッチをもういちど組み立ててみると、これが何事もなかったように動くのである。こういう正常に動く部品を捨てるということが出来ない性格である(地球や物にやさしいというより、究極のケチともいえる)。

S_p8136028  直したスイッチで再組み立てする。おやあ、スイッチが渋い。ハンダ付けのフラックスが中に入ったのか。何とか動くが、スイッチをかなり強く押さないと入れたり切ったり出来ない。そのうち、スイッチのポッチが折れて動かせなくなった。万事窮す。これであきらめがついた(やれやれ)。

 千石で買ってあったさきほどのミニスイッチに換装する。取り付け位置はピッタリだったが、スイッチが少し長くケースにあたる。ケースの樹脂をナイフで削って収容する。再組み立て。問題なく動く。いやあ、くだらない修理だったけれど何故か嬉しい。

S_p8206041  ひとつひとつの部品に命はないのだが、それぞれが集まると命あるかのような動きを見せてくれる。今まで動かなかったものが生命を吹き込まれたように蘇る。創造主は自分である。ものを作る喜び。こんなささやかなことでも人生は明るくなる(おおげさな)。

ディジタル入力線にパスコン(?)をいれると直った(8/17/2013)

 ライブカメラの可動部がやっと完成に近づいてきた。チルト部とパン部を結ぶケーブルやディジタル入力4本を引き出してRasPiに送るケーブルを圧着ペンチで作る。 これ以外にモーターや、センサーにつなぐケーブルが2本づづあり、ケーブル量が多くて取り回しは結構面倒だ。

 ミニブレッドボードにタクトスイッチを4つ集めてスイッチ基板を作る。いよいよテストである。とりあえずは、パン部もチルト部も分割しバラックでテストする。

S_p8186036  まず、パン部のテスト。ここはセンサーの部分が裸になっているので片側だけが動けば良い。よし、これは問題なく動いた。次はチルト部のテストだ。タクトスイッチを押す。動かない。2つのスイッチとも全く反応がない。

 ブレッドボードに戻して動かしてみる。何の問題もなく動く。えー、何故だ。変わったところは、GPIOのデジタル入力をパン部の基板を通して長く引き回しているところだけだ。そのうち片側だけは、何かモーターの音がして動いていることがわかった。

 うーむ、暴走している感じである。スイッチを押すと音が出始め、UARTも受け付けなくなる。試しにデジタル入力の引き回しをはずしてみた。直った!もう一方のスイッチは、ブレッドボードでの差し間違い(縦と横)でもとより動いていないことがわかった。ただし、正しい接続にしても同じ症状になる。

 デジタル入力は、電源線と同じコネクターを経由している。何かわからないが、この引き回しが原因であることは明らかだ。ブレッドボードでも線をつないで見ると同じ症状になる。間違いない。訳がわからないが、こういうときのおまじない、0.1μFのパスコンをデジタル入力に入れてみた。

 驚くことに、これで直ったのである。ウェブで調べるがこんなことは何処にも書いていない。しかし、見事にディジタル入力が生き返った。ミニブレッドボード上のスイッチでモーターが軽々と動く。一体これはどうしたことだろう。

ライブカメラ可動部は2系統ともスイッチで動いた。チルトは力不足(8/21/2013)

 かくしてRaspberryPiのライブカメラプロジェクトは、可動部の制作はほぼ終了し、タクトスイッチ4つで、左右、上下にカメラを動かすことに成功した。どんな動きをするのかは、あまり上手く撮れなかったが、動画を掲載したのでご覧になっていただきたい。

 完成が遅れたのは、道草が多かったこともあるが、実は、ここに書くのもためらわれる、ドジな失敗を重ねていたことも原因の一つである。このブログは、どんな失敗も隠さず、すべてご披露することをモットーにしているが、今度のは迷走ぶりが話の前後の脈絡がとれないくらいひどかったので、最後にかいつまんでご紹介しておくことにする(2~3日はまっていた)。

 レギュレーターは、結局3度にわたってハンダ付けをやり直した。最初、コネクターを誤接続してVccをショートさせ、あわててチェックしたらレギュレーターの出力が5.7Vを指しており、てっきりレギュレーターを壊したと勘違いして取り替えた。

 ところが、レギュレーターを取り替えても同じ。そのうちTiny2313の動きまでがおかしくなった。過電圧かショートでチップも壊したかと、Dragonを出動させたのは良いが、DragonのISP接続が動かない(パラレルは動く)。Dragonのトラブルシューティングまで店を広げると収拾がつかなくなるので、Dragonは早々に部品庫へお引取り頂き、新しいチップでとりあえず対応する。

 で、結局、ブレッドボードにまで戻ってレギュレーター回路の再点検をした。原因は何と何とレギュレーター出力側につける大容量コンデンサーの断線であった。リード線が内部で切れたらしく、容量がゼロであった。5.7Vを指したのは、リップルがとれていなかっただけというオチである。

S_p8176034  正確な5Vになったら、CPUチップもすべて正常に戻った。元からCPUなど壊れていなかったのである。Dragon?いやあれはもう少しそっとしておこう。

 残るは、このディジタル入力をウェブを通してRasPiで動かすソフトの開発である。ただ、可動部は動いたとはいえ、まだいくつか課題を残している。動画をご覧になればわかるように、チルト部のモーターのパワーが少なく、USBカメラのコードの抵抗で途中で脱調してしまう。パン部は逆に動きが強すぎ、スムーズなパンに程遠い動きである。

 ケーブル類の抵抗が意外に大きく、ちょっとした電圧のアップ位で、この脱調を改善するのは無理なようだ。試しにこのあいだのDC-DCコンバーターで9Vに昇圧してみたが、DC-DCコンバーターではモーターの瞬間的な大電力を補うことは殆ど出来ないことを学ぶ。

 チルトモーターの制御はマイクロステッピング制御だが、これは1相励磁と同じでトルクが一番小さい。2相励磁にすれば音は大きくなるがトルクは、1.4倍になるはずだ。それ以外にも1-2相的なマイクロステッピング制御もある。ソフトや回路図の公開は、この改修を待って行うことにしたい。

| | コメント (3) | トラックバック (0)

2013年8月 2日 (金)

RaspberryPiのライブカメラ制御系と基板工作

 ライブカメラの可動部のメカは、ほぼ想定どおりに出来上がった。チルトもパンのモーターも順調に回る。次は、ブレッドボードにあるモーター駆動部の基板化や、カメラの動きを制御する系の開発である。

 やることが沢山ある。例によって、メモにDoitリストを書き上げてこれからの作業工程を確認する。まずは、カメラの可動の始点・終点制御の具体化である。

S_p8026005

始点・終点処理の実装にはフォトインタラプター(7/18/2013)
 今度の機械は、これまでの自動巻き機と違って回転の範囲を制限しなければならない。ステッピングモーターなので、回した角度を厳密に覚えておけば、始点・終点は考えなくても良い理屈だが、ステッピングモーターはパルスをかけても廻らない、脱調という現象は避けられないので、何らかの対応策は必須である。

 色々な方法が考えられる。マイクロスイッチなどを使った物理的なストッパーが一番わかりやすいが、今回は、以前ライントレーサーを作ろうと沢山買ったフォトインタラプターを使ってみることにする。ここでマスターしておけば、今後のライントレーサー制作にも役立つ。

 しかし、ライントレーサーのような精密なセンシング手法はともかく、こんど実装しようとしている単にカメラの移動を制限するだけの簡単なセンシングは、解説しているサイトが見つからない。どこかに定番の方法があるのかもしれない。車輪の再発明のようなことは避けたいが、参考になる資料がないので自分で考えるしかない。

S_p8026013  まず、ブレッドボードに、むかし脈拍計の実験に使った反射型フォトインタラプターTPR-105をつけてテストを始める。このインタラプターは、かなり近距離(1ミリ以下)でないと出力が出ない。買った当初は、こいつは低性能だと馬鹿にしていたが、ネットから落としたデータシートにはちゃんと明記してあった。そういうためのディバイスなのだ(失礼しました)。

 それはともかく、データシートに従い、LEDに330Ω、集光側のエミッタに10KΩの負荷抵抗をつなぎ、Vccに5Vをかけて出力をオシロで見る。スイープを1秒以上に上げておくと、様子が良く見える。

 予定している反射面は乳白色のプラスティック(ABS樹脂)のギアである。このギアの生地の反射率は、低いのか高いのか、いまひとつはっきりしない。別の白い紙をあてると出力は高まるが、少し離れると一気に下がり、白黒の差がわからなくなる。うーむ、こんなものでも難しいものだ。

 もうひとつのフォトインタラプター(LBR-127HLD)は感度が高く、1センチくらい反射面(紙)を離しても白と黒(マジックで塗りつぶす)の差がはっきり出る。ライントレーサーのセンサーにはこれを使う予定をしているが、これをカメラの始点終点検知に使うには少し大げさすぎる。

 さて、困った。こうなったらギアに反射用の紙をつけて、センサー部を取り付け、実際にギアを回して見て実用になるか判断するのが早そうだ。まずはこの小さい方のフォトインタラプター(TPR-105)を実装してみることにした。

チルトとパンのセンサーが完成。ロジックはこれから(7/20/2013)
 センサー基板の工作を始める。小基板を切り出し、久しぶりのハンダ付けである。まずはチルト部から制作する。モーターの取り付け穴に汎用基板小片を固定し、ここにインタラプターと抵抗2つを載せる。小さいものほど作るのが面白い。簡単に出来た。

S_p7235998  反射型のセンサーなので、反射面を紙で同心円状に作り、ギアの裏側に張ることにする。ここにセンサー部が近接して回るしかけだ。しかし、ギアと軸が正確に垂直に取り付けられていないので、回転させると、センサーの送受光面とギアの間の間隔が一定にならない。それにギア自体が軸上で平行にぶれる。

 まずは、単体で色々な反射面を試しに作ってテストする。センサーに5Vをかけ、オシロで出力電圧を観測する。おお、変化が見える。おやあ、センサーの電位は複雑な変化をする。紙を貼ったところと、マジックで黒にしたところ、紙の黒、何もやっていない素のプラスティック面、それぞればらばらの値で、センサーとの間隔でも大きく変わる。白い紙が一番反射する(Vccに近くなる)ようだが、ぴったりあててしまうと突然0になる。

S_p7215989  どんな反射面にするかは別として、出力がHigh(白のとき)では、その部分の反射率というより、送受光面と反射面との間隔で出力が決まってしまうのが問題だ。一方、反射面がないときや、黒のときの出力は殆ど0で安定している。

 ギアと軸の垂直歪みは、軸にギアを固定するとき調整しておけば減らすことが出来るが、ギア軸が平行に動いて間隔が変化することは、機構上避けられない。そのため安定したHighを作ることが出来ない。受光面と反射面の間隔を一定にする方策を考えなければいけない。

S_p7215992  ギア軸の平行ブレは、ギアの取り付け部と軸の取り付け部との間を狭めれば少なくなるが、余りきつくすると摩擦で回らなくなる。試行錯誤の結果、ワッシャーを1枚でなく、2枚を挟むと、間隔が狭くても軽く回ることがわかった。とりあえずはこれでOKだ。テストに入る。

 心配したが、結果は上々であった。ギアのカメラ支持部をフリーにして回転させると、綺麗なパルス(オシロ画面)が出た。これだけ明解にセンシング出来るなら、マイコンのロジックはChaNさん方式(光照射をパルス状にして、明部と暗部をダイナミックに調整する)を真似るまでもないか。ライントレーサーほどシビアではない。動かないので外光を運転中調整する必要もない。S_p7215987

 チルト部が出来たので、パン部もついでに作ってしまう。パン部はモーター取り付けビスでセンサー部を固定することは出来ない(干渉する)ので、新たに1つ穴を明けて、お遊びでこのあいだ買ったタッピングツールでアクリルにネジを切ってみた。このタッピングツールは、プラスティック歯車の締め付け穴のために買ってあったものである。

S_p7235996  ネジは用心してプラスティックネジを使う。よしよし、うまく固定された。モーター軸を手で回してみる。うーむ、ここも軸がぶれて、インタラプターと受光面の間隔が一定にならない。このままでは出力電圧が振れてまともなセンシングが出来ない。

 モーター軸とカメラ可動部を固定する自家製シャフトマウントのイモネジを緩めて調整する。しかし解消できない。どうも軸ごと歪んでいるような気がする。シャフトマウントの内径は6ミリで、モーター軸の1/4インチ(6.35ミリ)に入るよう、やすりで広げた。

S_p7235995 やすりがけが均等に出来ていないので、イモネジを強く締めれば締めるほど歪んでいくようだ。部品をばらして、この補正をすることにする。下手をすると穴を広げすぎ、収拾がつかなくなりそうなので慎重に少しづつ金やすりで歪んでいる方向を是正する。

 人間の眼というのは結構正確なもので、見た目もはっきり歪みが取れたことがわかる。何とか許容範囲内の歪みに押さえることが出来た。これもぐるぐるまわしてオシロのスイープ波形をとる。よーし、これだけデジタル的に明確な差があればセンサーとしては及第だ。

総合設計が大変だ(7/23/2013)

 センサー部が動いたところで、また進捗が止まった。実は、全体の構成がまだまとまっていないのだ。RaspberreyPi (以下RasPi)を含めたライブカメラの具体的な仕様が決まらない。モーター制御は今のところTiny2313を2つ使うことにしているが、何か無駄のような気もする。

 MegaクラスのAVRなら、1台でPWMチャネルは8つくらいとれそうだし、STM32なら、恐らく楽勝だろう。それにマイクロステッピング制御にする必然性もない。それならTiny861あたりの単体で出来そうな気もする。しかし、どうも調べる気力が湧かない。

 制御の方法も、今のような簡便なスイッチひと押しで一定量だけ動くという制御だけで果たしてうまくカメラを操作できるのか自信がない。RasPiへの接続も問題だ。RaspiとはUARTで良いのか。そのときは、どちらかのTiny2313をマスターとしUART、もうひとつはGPIOでマスターとつなぐことになるが、いっそのことGPIOだけにしてしまった方が、簡便かもしれない。

 RasPiのソフト構成も問題だ。映像データと制御系データとの関係はどうする。Apacheが必要か。motionの制御系が使えるか。ちらっと見た範囲では、motionそのもののパラメーターにこうした制御系のものがあったような。

 迷うことが沢山あって、ぐずぐず先に進まない。暫く、あれこれ考えていたが、不確定要素の多いこういうものにいくら時間をかけても最善策は生まれないということに今さらのように気づき(昔から繰り返している)、何でも良いからとりあえず以下の仕様を決めて先に進むことにした。

(1)チルトとパンのモーターは、別々のTiny2313を使ってマイクロステッピング制御し、2台のスイッチ割り込み入力4本(上下、左右)をRasPiのGPIOで制御する。

(2)始点・終点処理は、センサーがポイントを通過したら、ひとつ前の動作を覚えておいて、同方向の指示を無視する。これにより、RasPi側には始点終点処理を見せない。

(3)スイッチ入力は、立ち上がり(または立下り)エッジのみ有効。

(4)連続入力は、キーボード入力と同じように、一定量受け付ける。これは、信号を送ってから実際に動き出すまで時間差があるためで、そのためのキューをTiny2313に設ける。

(5)電源は、既存の6Vアダプターで、モーターは直接駆動、AVRはレギュレーターを入れて5Vにする。基板は、チルト部は回転雲台に固定し、パン部はベースフレームに置く。

モーター動力部の配線は難しい。ブリッジしていた(7/25/2013)
 暫定的とは言え、とりあえず進むべき方向が決まったので作業にとりかかった。マイクロステッピング制御にこだわっているわけでもない。ただ、既に動いているものを利用するのが一番楽だというだけのことである。これまでのTiny2313のモータードライバーの部分をそっくり2つ作れば良い。

 RasPiからの入力をUARTでなくGPIOにしたのも、GPIOならスイッチで動作確認できるという理由である。手持ちの汎用基板を取り出し、ブレッドボードに作ったモータードライバー一式を基板に移す作業を開始した。

S_p8026014  久しぶりの基板工作である。まずアートワークをやって基板の大きさを決める。こういう何も考えなくて作業できる時間は実に楽しい。時間の経つのを忘れる。

 たいした規模の配線ではないが、TopViewのアートワークをスキャナーで取り込んで反転させ、ハンダ面の図を作る。珍しく周到な準備である。配線部材は、少しこだわって、FETアレイからモーターへの配線は、いつもの0.3ミリのUEW線でなく、太い撚り線を使った。そのせいで半田付けは難儀した。

 こうした動力線に使う適当な太さの耐熱ビニールケーブルを揃えるべきなのだろうが、いつも買ってくるのを忘れる。昔のビニール線が沢山残っているので、これを消化しなければと言う潜在意識があるのかもしれない(究極のケチである)。しかし、こいつらはみな熱に弱い。

 1台目のモーター基板は、半日くらいの作業で全部の接続を終了し、勇んでテストに入る。ところが、これが動かない。UARTが動き、コマンドを送るとモーターが少し動くので、デジタル部はまず間違いはない。しかし、モーターの配線は何度チェックしても間違っていない。顔が段々青ざめてきた。

 これはオシロかロジアナでモーター部の動きを見るしかないかと目検を諦めかけた時、何度目かのテスターによる導通テストで、全く関係のない部分で導通が見つかった。FETのゲート部がVccと導通している!これだ。

 太い接続ケーブルをピンセットで上げてみると、その陰から、パッドのハンダが隣のランドまで流れてブリッジしているところが見つかった!いやあ、線が太いために、その裏でハンダが流れていたのが見えなかったのである。ハンダ吸い取り線でブリッジをはずし、モーター基板は完動した.

S_p8026016  撚り線のハンダ付けは難しい。特に短い部分は熱で被覆が傷むので手早くすませないとみっともない形になってしまう。今度の失敗も見栄えばかりに気を取られ、ハンダがうまく盛り上がったことに満足して、ちゃんとしたチェックを怠ったことにある。今度こそまともな耐熱ケーブルを買ってこよう。

炎暑の中テニスをする(7/27/2013)
 ところで、電子工作とは関係のない話題をちょっとご紹介。今年の夏は、梅雨明けから猛烈な暑さが続き、辟易していたのだが、少し過ごしやすくなったこともあって、今日は2時間、久しぶりのテニスを楽しんできた。

 今日のメンバーは何故か所長と同じ70近い高齢者が多い。しかし、誰も熱中症にかかることなく、かんかん照りのコートの上を元気に走り回った。ちょっと心配だったのだが、テニスが終わったあと、自転車で9キロ近い道のりを何事もなく帰ることが出来た。家に着いて冷えたビールを一気飲み。至福の時間である(ただし、そのあとは使い物にならない)。

 そう、所長は昔から、根暗なプログラマーという職業の割にはアウトドア志向である。カナダの人里離れた湖沼地帯でプログラムを書き、パラボラアンテナで通信衛星に送っていたアップルの天才プログラマー、ビルアトキンソンに憧れていた。

 それはそうと、昨日は、家内とこれまた久しぶりの映画鑑賞を楽しんだ。見た映画は、ご想像どおり前評判の高い「風立ちぬ」である。宮崎駿のアニメはたいてい封切りで見ているが、まあ、今度の作品は宣伝の割には今ひとつ中途半端な作品のように感じた。

 宮崎監督が試写のとき初めて泣いたというけれど、こうあれかしと自分であこがれていた創作自叙伝に泣いたのではないか。あくまでも美しいばかりで、大事なところはみな夢のシーンだ。ゼロ戦が開発された現実の日本の歴史に向き合おうという迫力が感じられない(関東大震災の場面は迫力があった)。

 これまで「もののけ」とか、「千と千尋」、「ハウルの城」などの作品の中に流れる、彼の隠れた強いメッセージ(重低音のような)が不足しているように感じる。宮崎作品の魅力は、ファンタジーという形をとりながらも、「この世の不条理性」を観る人に訴えていたと思うのだが。

モーターの始点・終点処理で良いアイデアのつもりが(7/29/2013)

 電子工作の話に戻ろう。ハードは出来たが、ソフトの部分は、この前の自動巻き機のソースから、不要なコードを削っただけのやっつけで、良い加減なソフトのままである。いくらなんでもこのままではまずい。基本的なプログラムの構造から検討する擬似コーディングをメモに書いてやり直した。

S_p8026003  まず、UARTでの進行指示と、スイッチ割り込み(タクトスイッチ)を共通化し、連続した指示を失わないためのキューリストを新設してリングバッファーにする。実際のモーターの動作指示は、このリングバッファーのポインターが違うときのみ動くようイベントドリブン化する。

 次は、始点・終点処理である。白い部分(光沢紙をリング状に切り抜いて貼り付ける)が運転範囲で、黒(マジックで黒く塗る)が運転停止期間である。光センサーの入力ピンは割り込みを使わず、モーターの動作リクエストが来ると、そのときレベルを調べて動作範囲にあるかをチェックする。

 動作範囲をはずれており、次のリクエストが同一方向だったら、そのリクエストを無視し、逆方向だったら、その動作を行って、そこから脱出するという、まず至極単純なロジックを考えた。

 しかし、もし、逆方向に戻っても動作範囲に帰って来れなかったら、このロジックでは、ここで全く動きがとれなくなる。それに、同一方向リクエストか、逆なのかは、前の動きを記憶しておくロジックが必要でプログラムが複雑になる。どうしたものかと思案していて、ふと気がついだ。

 リクエストが来る前、つまり、動作したあとに動作範囲をチェックすれば、前の動作を覚えておかなくても始点・終点処理が出来るのではないか。動作し終わって範囲を越えていたら戻る動作を加えるだけで良い。動いた分だけ戻るので、はずれることもない。おお、これは良いアイデアだ。

もっと良い方法があった。こいつは素晴らしい(7/31/2013)
 意気揚々とプログラムを書き上げ、テストに入った。確かに動いた。限界点まで来ると、モーターはちゃんと逆回転して範囲内にもどってくる。しかし動きが騒がしい。ステッピングモーターの短時間の逆動作は、モーターに無用な振動を与えて動きがぎくしゃくする。下手をすると前進と後進を繰り返す異常動作に入ってしまう。

 ソースコード上で思いつきの策(元へ戻る時は倍の長さ動く)を入れてやってみても、モーターはさらに不自然に無駄な動きが大きくなるだけで、どうみてもエレガントではない。

 結局、紙に戻って擬似コーディングで検討をやり直し、最初放棄した「限界を越えた時は、それ以上の進行を止め、逆進だけを許可する」というロジックに戻った。このロジックは、逆進してもセンサーの範囲内に戻ってくる保証がないので、そのためには追加のロジックを加える必要があり複雑になるので止めた案である。

 新たに加えた追加ロジックは、「センサーが範囲外にあるときは、前回の動作方向を記憶しない」で、これだけですべて解決したのである。これにより、どんなに逸脱しても、最初この範囲を超えた方向を頼りに、元へ戻ってこれる。

 実際にテストしてみる。実にうまくストップする。暴れることもない。何度やっても素直に戻ってくる。コードからいえば返って最初より少なくなったくらいだ。こういうのが一番気分の良い解決である。

 ささやかな成功だが、無性に嬉しい。久しぶりの茂木健一郎の言う「AHA」体験である。それにしても擬似コーディングというか、徹底的なロジックの検証が結局一番の近道であることを悟る。

2313motrdrvr  余り嬉しいので、まだ、はんかけだけれど回路図とソースリストを公開してしまうことにする。チルト部の基板で、タクトスイッチと、UARTのコマンドで、モーターを少しづつ動かし(デフォルトは4ステップ。コマンドで変更可能)、カメラを上下に動かすだけの機能である。上記の始点終点処理のコードは、リストの最後部にある。

ここに例によってAVRStudioのフォルダーを固めたソースファイル一式を置きます。回路図ファイルも入っています。

「CAM2313.zip」をダウンロード

| | コメント (10) | トラックバック (0)

« 2013年7月 | トップページ | 2013年9月 »