« 研究所活動は停滞したままでCCDカメラ顕微鏡導入など | トップページ | ほぼ一年ぶりの更新 »

2019年9月19日 (木)

半年ぶりのブログ更新に漕ぎつけた


 しばらく休んでいた研究所の報告を半年(正確には7ヵ月)ぶりに再開する。休んでいた理由は、電子工作が低調で報告するようなものがなかったということにつきる。電子工作を始めて10年以上が経ち自分で出来そうな工作はあらかたやってしまった。いわゆるネタ切れである。

 まあそれは表向きで、低調な理由は、やはり所長の高年齢化、いわゆる加齢(今年から後期高齢者)によるということは残念ながら否定できない。年は取りたくないがこればっかりは皆に平等に訪れるので文句を言ってみても始まらない。

 実はそれだけではない。2月に記事をアップしたあと、いくつか事件があってブログへの意欲がさらに落ちた。それは、恒例のスキー合宿のことである。年と共に年間の滑降日数が減っているが、昨シーズンはたまたま一回も行けず、今年3月始めの八方尾根のスキーは2年ぶりだった。

 これが、もうシーズンの終わりに近く、しかもウイークデイだったため、コースの整地が行き届いておらず、こぶだらけのバーンの急坂(八方リーゼンスラロームコースの薄葉のカベ)で、疲労で足が言うことを聞かなくなってしまったのである。

 いつもシーズン最初の滑りでは足の疲労で激しい痛みに見舞われることがあったのだが、今回は2シーズンぶりで、しかも、このコースは途中から緩斜面の初心者コースに逃げることができない。コース上で立ち往生し、生まれて初めてスノーボートのお世話になった。これまでちょっとした足自慢だったのだが、すっかり自信を失った。
Img_0548

  • Img_0544 Img_0546

 悪いことは重なるもので、次の日、大雨でスキーをやめスキー場近くの秘境集落(青鬼集落)に遊びに行く途中の山道で、ころがってきたコブシ大の石を跳ね上げ、ミッションオイルのタンクからの油漏れで車が運転不能になった。結局、一行はバスで帰る羽目に陥った。

 直接、電子工作とは関係ないが、度重なる不運である。幸い、修理代やレッカー代、帰りの交通費などは保険が効いたので、経済的な損失はだいぶ免れたが、立て続けの災難に、気持ちの上ですっかり落ちこんでしまい、まとまったことをする気がなくなってしまった。

旧友からブログ再開の催促(2019/6/20)
 それがどうして再開する気になったか、スキーのあと、電子工作を全くやらなかったわけではない。何度か記事を書くために作業メモをワープロに残してはいたが、たいした成果も生まれず記事にまとめるところまで行かなかった。

 こういうものは、一旦、流れの方向を失うと立ち直りが難しくなる。時間が経てば経つほどそうだ。このブログも、もうこれでおしまいかと考えていた矢先、旧友からメールが入った。楽しみにしているのに音沙汰がないが、どうかしたのかという問い合わせである。読者から、しかも知人からの意外な消息の問い合わせは嬉しいものだ。

 これでやっとブログを再開する意欲がわいた。ちょうど、ジャイロセンサーを応用した倒立振り子のウェブの試作記事が面白くて、自分も作りたくなり、少しづつ倒立振り子を作り始めた。完成したらブログを書こうと思っていたのだが、これがまた難儀したのである。

 ただ、うまく行かないとなると、猛烈に何とかしてやろうという気分に陥るいつもの性格が幸いした。結局のところ自作の倒立振り子は、今日現在、まだ立たせることに成功していないのだが、ブログ再開には十分な作業記録もまとまった。記事にするまで、さらにまた2ヵ月ほどかかったことになるが、その間の試行錯誤の記録を公開する(9/15/2019)。
 
名古屋での大学同期の同窓会(3/25/2019)
 電子工作の話の前に、それ以外のことを、書き留めてきたメモを元に少しご紹介。このブログは日記の代わりを兼ねているので、記録の糸を切らさないために暫くご辛抱いただきたい。まずは、3月に名古屋で行われた大学の同期会の話である。

 名古屋は、家族の関係で、このところ行く機会が増えており、また名古屋かと少し迷ったが、名古屋は京浜地区と阪神地区の中間にあたり、関西の連中が久しぶりにたくさん来るというので出席する気になった。

 大学の同期会というのは、若いうちは苦手だった。大学の同窓生は、高校と違い同業者が多いので、現役の頃は、何かと緊張して遠慮することが多い。自分がどうということではない。まわりに気を遣うのである。

  Dsc01730
Dsc01699Dsc01728Dsc01709

 大きな会社だと同期が何人も就職している。何十年か経つとおのずと身分に大きな差が生じる。当人たちはさほど気にしているようには見えないが、同級生同士で余りに違いすぎると、かえってまわりが緊張する。

 かたや重役クラスと、研究所の主任研究員あたりとは、話す内容も全く違ってくるし、学生の頃はどちらかというと主任研究員の方が羽振りが良かっただけに、余計に気を遣ってしまう。

 しかし、最近は、卒業してもう50年近くが経ち、殆どの者は、すっかり引退しているので気が楽である。ホテルでの飲み会では、それぞれ近況報告があった。数十年ぶりの再会もあり、話がはずむ。仕事の話はもう殆どなく趣味などの個人的な話が多い。結構面白くて時間を忘れる。

 次の日は、名古屋観光である。熱田神宮と、名古屋城、トヨタ博物館などをみんなで貸し切りバスを利用して訪問した。幸い、始めて行くところが多く、飽きなかった。昼食は名物の「ひつまぶし」。昔から同じというが20年前に食べたものとは少し違うような。

 印象に残ったのは、名古屋城のボランティアのガイドさんたちだった。バスガイドのOGや、会社を息子に譲って引退した旅行代理店の白髪の元社長が、嬉々として案内してくれる。同年代の頑張りについ感動してしまった。やはり人のお役に立つのがいちばん嬉しい。

タッチボタン式ベッドスタンドの改修(5/2/2019)
 工作の話である。家族が使っていた、筐体を触るだけで点灯するスタンドが時々誤動作するようになった。暗闇でも点けられ便利なのだが、勝手に電源が入ってしまうのは危険である。捨てるというので引き取った。Dsc01745

 台座の部分を分解して中身を取り出した。円盤型の台座の中にはタッチ機能一式の入った小さなプラスティックケースが固定もされずに入っているだけの極く簡単な構造である。タッチ機能は、台座、フレキシケーブル、笠などの金属部分を触るたびに、クリプトン球の照明が、小、中、大、オフに切り替わるという仕掛けだ。Dsc01753 Dsc01754 Dsc01757

 簡単なロジックなので、作り直すなら静電センサーと、SSR(ソリッドステートリレー)にTiny13あたりの極く小さな8ビットマイコンの組み合わせで作れる。しかし、何となく気が進まない。これが電子工作低調の原因なのだが、今までに同じようなことを沢山やってきたので、いわゆる「わくわく」感がないのだ。

 もともとタッチ機能は便利なようで、ちょっと触っただけで、切れたり点いたりするのは自分ではあまり便利だとは思っていなかった。たまに、家人から借りて使って、触れるたびに明るさが変わるので煩わしかった記憶がある。

 どうしたものかと思案していると、塗装された台座の表部分に、タッチを確実にするための金属面のメクラ蓋がつけられているのに気が付いた。タッチセンサーはここをセンサー部の入力としている。この穴に単なるオルタネートのプッシュスイッチをつけて電源スイッチにすればどうだろうか。もっとも簡単な修理法だ。

 久しぶりに秋葉原にでかけ、スイッチの種類の多い千石通商で、良さそうなタクトスイッチ(径6.5ミリ)を見つけてきた。工作は、造作もない。めくら蓋の穴をリーマーで少し広げ、スイッチを取り付けて数か所のハンダ付けをするだけである。

 組み上げてみる。見映えも悪くない。スイッチの押し心地は、台座に重量があるので安定感があり安物のタクトスイッチでも感触は悪くない。現用のベッドスタンドにすることにした。

 リハビリの電子工作としては、全く物足らない作業量だったが、それでも何かを自分の手で解決したという満足感は十分味わえた。

囲碁ソフトに翻弄される。何とか2段(6/15/2019)
 久しぶりに「天頂の囲碁7」という囲碁ソフトを買った。所長は10年近く前に、北朝鮮製の「銀星5」というソフトを試したことがある。これはアマ2段という触れ込みだったが、精々が2級程度で、所長は最後は3目置かせて良い勝負だった。

 今度のソフトはそれとは比べ物にならないほど強そうだ。このソフトを買うきっかけとなった碁仲間によると、全く歯が立たないという。彼はアマ6段の高段者でプライドがあるので最強のままでランクを落としていないそうだが、それにしても市販クラスの囲碁ソフトがそんなに強くなったとは信じがたい。

 注文してほどなくアマゾンから品物が届いた。19路盤は時間がかかるので、13路盤でやってみる。これが強いのである。コンピューターのレベルを初段にしたのだが、何度やっても勝てない。こちらにもプライドがあるので、暫く挑戦したが諦めた。ランクを段々下げていくと2級程度で何とか互角になった。

 そのうち、この囲碁ソフトには検討モードといって、お勧めの次の手を教えてくれる機能があることを知った。これを使うと、これが実に簡単に勝てるのだ。自分がいかにまずい手を打っていたかということをいやというほど味合わされる。

 これを暫く繰り返すうち、次第にこの検討モードを使わなくても勝てるようになった。2級クラスでは、打ってくる手は素人で、切れるところはすべて切ってきて、大抵の試合はねじり合いの混戦になり、読みあいに負けてしまう。2級と言えど、手数の計算はコンピューターにかなわない。

 なるべく挑発に乗らずに、じっくり模様を作っていき、ここぞというところで勝負すると相手が投げてくれるようになった。このソフトは先行き15目以上の負けになりそうなときは投了するようだ(投了を拒否して続けて行くと無茶苦茶な手を打ってきて負ける時があるので注意)。

 次第に勝率が上がり、最近は相手が2段でも、ちょうど良い相手になった。所長は自称、初段と言っているので順当な所か。そんなこんなで電子工作の方はさっぱり進まなかった。

ジャイロセンサーの応用、倒立振り子をつくることにする(7/19/2019)
 電子工作再開のきっかけとなったのは倒立振り子を制作する以下のブログサイトである。

  半日で作る倒立振り子

 実験の経過の逐一を、ステップバイステップで丁寧に解説されており、とても面白い(最後はProcessingによるPCでの画像シミュレートまである)。読んでいるうち、段々自分もやりたくなってきた。

 ただ、この記事のジャイロセンサーはアナログのもので、所長はこれを持っておらず、CPUもAVRを使った正規のArduinoで、こちらは、例のESP8266である。この記事をそのまま作っていくことは出来ない。移植が必要である。

 しかし、ウェブで「倒立振り子 MPU6050 ESP8266」のキーワードで探すと、これらを使った倒立振り子の記事が山ほど見つかった。 今度は多すぎて、何を選んでよいか迷ってしまうほどだ。

 MPU6050は、6軸の加速度、ジャイロセンサーで、I2Cがインターフェースになっている。3年程前、Processingを使った飛行モデルの実験に使った。記事が残っている。

 このときは実際のハードの姿勢制御ではなく、PC画面上の飛行機モデルを動かすのが目的だった。ソースコードは、そっくりひとさまの物を拝借し、PC画面に飛行機をだそうとしたがうまく行かない。

 つながらないのは、現用のビデオカードが、Proscessingのビデオエンジンをサポートしていないことが原因とわかり、新しいビデオカードを購入したりして大騒ぎして、やっとのことで動かした。結局、ジャイロセンサーの動きを確認するだけに精力を使い果たし、実際の応用まで行かなかった。

 実物の姿勢制御にジャイロセンサーを使うのは、今回が初めてである。モーターなどのメカ部分と、センサーからのデータで如何にモーターを制御するか、ソフトのロジックだけでなく、メカトロニクスとしてはかなり高度な技術が要求される。

 先ほどのサイトの写真を見ていると、モータードライバーは以前、Xbeeを使ったラジコンカーと同じTA7291を使っており、とりあえず、これは、そのまま流用して先に進むことにした。

TA7291Pはやはり4.5V以上が必要か(7/29/2019)
 件のラジコンカーを制作品を積み上げた資料棚から取り出した。このラジコンカーは。タミヤのツインモーターキットを使って、前進と後進だけでなく左右の回転も出来るようになっている。

基板には、今になっては思い出せないトランジスターが6ケも実装されていた。情けないことに、これが何のためにつけられたのか思い出せない。解析の結果、モーター電圧(4.5V)とXbeeのVcc、3.3Vの間のバッファーと断定した(自分で作ったものなのに確信がない。まあ、8年も前のことだけど)。

ところがテストしてみると、TA7291は、リチウム電池の4.1V近辺では動かないのである。データシートを見るとロジック電圧は4.5V以上とある。しかし、ネットのなかでは、Arduinoの3.3Vでも動かしている例がある。どうもおかしい。もう一度やってみたら、今度はちゃんと動いた。Dsc01770

ちょっとパワーが足らないような気がするが、まずは動けば良い(このトラブルは、その後、PWM制御入力ピンのハンダ付け不良が発見されて無事解決した。つまりゲイン最小になっていた)。もし、これで動かなければ、こちらにはDRV8835という強力なモータードライバーがある。

あらためて新しいハードを作るのでなく、このラジコンカーを立てて使い、上にジャイロセンサーや、ESP8266をつけるサブシャーシーをつけることにした。あれこれ実装の方法を考える。

18650電池フォルダーをホットボンドでつけて倒立振り子のハード完成(7/30/2019)
 結局、既存のリモコンカーのシャーシー(といっても秋月C基板)に、フロッピーケースのコーナーを切り取ったL字アングルをつける。このフロッピーケースを応用する方法は、これまでいろいろな所で使っているので手慣れたものである。Dsc01769

 電池は容量の大きい、リチウム充電池18650を使い、Aitendoで手に入れた18650用の電池ケースをホットボンドでメインシャーシーにつける。重心が問題だ。倒立振り子の安定は、重心が上にあればあるほど安定するはずだが、そのことはどの記事にも明記されていない(昔、雨傘を立てて遊んだ記憶にもとづく)。よくわからないが、とりあえず、電池はサブシャーシーとモーターの中間に
つけた。
 
 やっつけだが、一応、定番の倒立振り子風の形が完成した。タイヤが他のウェブサイトの作品のように大型のものにするか迷っている。 テストのため、簡単なスケッチを書いて、TA7291Pモーター基板とESP8266でモーターをリモコンで回すところまで確認した。

ESP8266基板にMPU6050を実装した。出てくる数値がおかしい(8/3/2019)
 駆動部のハードの目途が立ったので、MPU6050の実装に取り掛かる。これは結局ESP8266基板の空き地に単にピンヘッダーを立てるだけでつけてしまった。ジャイロなので本当はもっとしっかりつける必要があると思うが、まずはこれでいこう。

 次はいよいよソフトだ。これが実はくだらないところで大はまりした。 長期間、開発から離れているとどうもカンが働かないからだろうか。横道に何度もはまり込んで、ウンウンうなっていた。まあ、これが面白いということもあるが、全部を書き出しているときりがないので、はまった落とし穴の主なものだけ、以下にまとめておく。

 まず(1)、Arduinoのintって、unsigned なの? 
 MPU6050の出力データをテストのためUARTに連続して数値を出力していた時である。ジャイロの角度の数値がマイナスに振れないのである。MPU6050の各データは、符号付き16ビットで、8ビットづつのレジスターから値をシフトしてintで定義した変数に収容している。

 これが、マイナスになっていない。8ビットデータ(上位データ)は、符号なし(uint8_t)でとっても、intに入れると符号付でマイナスになるはずなのだが、そうなっていない。ひとつひとつ、データをSerial.print()でしらみつぶしに出力させて確かめた。

 その結果、intタイプの変数に入れたとき、MSBビットをマイナスにみなしていないということがはっきりした。そんな馬鹿な。 Arduinoでもデータタイプのintは、符号付(signed )のはずなのにおかしい。

 半信半疑で、データタイプのintを int16_tにしてみたら、何とちゃんとマイナスが出た。えー、そんなー、信じられない。Arduinoでは、intは符号なし(unsigned)なのか。何かの具合で、データタイプがおかしくなっている。この真相究明に数日を無駄にした。何か間違っているのだろうか(どこかで#defineされている?)。

 次は(2)、ビルドしたプログラムがsoft WDTエラーで先に行かない
 ソースコードは、ここを参考にさせてもらった。ここは、MPU6050とTA7291を使っており、姿勢制御の部分がそのまま使えそうだったからである。ただし、CPUはPICなので、ESP8266のArduinoに書き換える必要がある。

 このあたりの移植は所長にとっては難しい仕事ではない(何十年もやってきた)。タイマーの部分や、割り込みの処理をかえる必要があるが、これらは、すべて調査済みである。(ESP8266のタイマー割り込みは、通常のArduinoの
MsTimer2::set(mill-sec, TimeProc);
MsTimer2::start();

ではなく、
#define MSEC2CLOCK(ms) (ms * 80000L) //ESP8266内部クロック換算。
timer0_isr_init(); // 割り込みルーチンの初期化
timer0_attachInterrupt(timer0_ISR); //割り込みベクトルに登録
timer0_write(ESP.getCycleCount() + MSEC2CLOCK( 100 )); // 100msごと
などを使う。)

 意気揚々と、ESP8266用のコードに書き換え、コンパイルした。順当にコンパイルは通った。モータードライバーはつけずに、出力をデバッグUARTに出させて、まずはテストである。

 ところが、これが全く動かないのである。ウェブで原因を探すが、ハードがおかしいとか、ユーザーループが長すぎるとか、不安定な電源だとか、どうもピントがずれている。PICからの移植だが、機種依存になるようなものは何もやっていない。

 ただ、floatなどの4バイトデータが非常に多いので、SRAMあたりのヒープデータを食ってしまっている感じだ。ユーザープログラムがスタートする前に、メモリ破壊が起きている感じである。

 さらに(3)実行時エラーで、新版のArduinoIDEを試すも、今度はファームが書き込めない
 というので、Arduino IDEそのものを新しい版に換えてみることにした。今使っているIDEは、数年前におとした1.6.12で、最近は1.8.21まで上がっている。

 ところが悪いことは重なるもので、こいつは、ファームを書き込むesptoolがUARTを認識せず、プログラムそのものを焼くことすらできない。なにか散々な目にあっている。やれやれ、このあたりで原因を究明する気力を失った。

 仕方がないので、IDEは1.6.12まで戻り、別のソースコードで作り直すことにした。

 ここは、MPU6050からのデータを取り出して、相補フィルターで出てきたデータの補正をしているところまであったのでこれを参考にすることにした。

 不思議なことに、最初のソースコードに、このコードを組み込んでみると、WDTのエラーは解消したのである。モーターにはつないでいないが、MPU6050の測定値がシリアルコンソールに派手に出始めたのである。いやいや、理屈はわからないが、プロジェクトは一歩前進した。このあと実際にESP8266の出力ピンからモーターをドライブする段階に入れる。Dsc01772

やっと動く所まで漕ぎつけたが、暴れるだけ(9/19/2019)
 倒立振り子が出来たら、ブログを半年ぶりに更新しようと目論んでいたが、いつまでたっても倒立がうまくいかないのであせっている。タイヤをかえたり、PID制御のパラメーターを変えても、細かいモーターの動きが実現せず、暴れるだけである。

 モーターが「ミー」と弱い音を立てるだけで動かないので、PWM値を上げて、モーターの出力を増やすと、今度は、回りすぎて車体が激しく振動し、倒立するどころではない。

 そのうち、頼まれた研修講師の期日がせまり、その準備でそれどころではなくなった。暫く、工作室に降りない日が続く。それでも日を置くと、物事を外から見ることになり、トラブルがわかってくることがある。それなりの解決法は何となく見えてきたが、ブログの記事もかなり多くなったのでこのあたりで一区切りつけることにする。

|

« 研究所活動は停滞したままでCCDカメラ顕微鏡導入など | トップページ | ほぼ一年ぶりの更新 »

電子工作」カテゴリの記事

esp8266」カテゴリの記事

Arduino」カテゴリの記事

コメント

きゅうる村さん  お久しぶりです。 
コメントが来ているのにきづかず、公開が遅れて申し訳ありませんでした。

>その私も、電子工作熱はしぼんでいます。
>今は、少年時代のプラモ製作に関心が移ってしまいました。

 時々、そちらのブログを見させていただいています。
 私も、プラモ、R/C、模型鉄道、帆船模型などひととおりすべてやりましたが、
 どうも、「わくわく」することが少なくなってしまい手が出ないでいます。

>でも、いつでも続きができるように、いわゆるプロジェクト箱や道具は、棚に最低限のものが並んでいます。

 はい、道具ばかりは、こちらもかなり揃っています。そういえばCNCマシンも遊んでいますね。
 昔は、ライブスティームを自作しようと、小型旋盤を調べていました(蒸気機関は、アマチュアが
 作れる限界のマシンだそうです。内燃機関はプロでないとだめとか)

>やる気というか、興味は、趣味である以上、自然に任せるしかありませんね。

 おっしゃるとおりです。これが何といっても一番贅沢ではないでしょうか。

投稿: gataro-ken | 2020年2月 1日 (土) 01時40分

後期高齢者に突入ですか。新米前期高齢者の私には大先輩。
その私も、電子工作熱はしぼんでいます。
今は、少年時代のプラモ製作に関心が移ってしまいました。
でも、いつでも続きができるように、いわゆるプロジェクト箱や道具は、棚に最低限のものが並んでいます。
やる気というか、興味は、趣味である以上、自然に任せるしかありませんね。

投稿: きゅうる村 | 2020年1月27日 (月) 09時31分

Shuji009さん お便りありがとうございます。
申し訳ありません。このところ電子工作を殆ど
やっていないのでなかなか更新ができません。

道具はデジタル顕微鏡や、CNCマシンまで揃っているの
ですがね。やる気がでるのをじっと待っている状況です。

投稿: がた老 | 2020年1月 4日 (土) 21時59分

旧年はお世話になりました。

今年もよろしくお願いします。
更新楽しみにしています。

投稿: Shuji009 | 2020年1月 3日 (金) 16時07分

justplatyさん、初めてのコメントありがとうございました。
アクエストークは、5年程前に、マルチメーターの測定値読み上げ機の開発で使いましたね。
AquesTalkでお見つけになったのでしょうか。お役に立ったことを願っています。

 

投稿: がた老 | 2019年9月22日 (日) 22時48分

初めて投稿いたします。電子工作で大変参考になることはもとより説明や文章も面白く、たびたび読ませていただきました。今日はアクエストークの調査で訪問しました。長期に渡り更新が無かったので、どうされたかと思いましたが、新しい投稿を拝見し嬉しく思いました。ブログ運営はなかなか大変かと思います。電子工作はやりつくされた、という言葉にもうなずけます。がた老様の今後のご健勝をお祈りいたします。

投稿: justplaty | 2019年9月22日 (日) 11時12分

Mori99さん、早速のコメントありがとうございました。
こういうお便りをいただくと、やっぱりブログやってて
良かったと思います。

 おっしゃるとおり、急には立ち上がれないので、少しづつやっていきます。
 ありがとうございました。

投稿: がた老 | 2019年9月20日 (金) 15時08分

いつも楽しく拝見しております。
普段のスランプとは違う長期のお休みでしたので、心配しておりました。無事に復活されて良かったです。
他の皆さんのブログだと全てがすんなり進んでいるように見えますが、全ての落とし穴にハマるのは自分だけではないのだとほっとしますよ!
でも最後はなんとかしてしまうのが凄いところですよね。
倒立振子も期待しています。ぼちぼちで頑張って下さいね。

投稿: Mori99 | 2019年9月20日 (金) 00時13分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« 研究所活動は停滞したままでCCDカメラ顕微鏡導入など | トップページ | ほぼ一年ぶりの更新 »