<<トップへ戻る>>
 ◇2009年1月20日 初めてのパソコン
 写真のパソコンが高校時代に初めて購入したパソコン「MZ-721」です。
 今でもはっきり覚えているのですが、友人家に遊びに行った時、そこに「コモドールVIC-1001」と言うパソコンがあり、友人は一生懸命に雑誌のプログラムを打ち込んでいました。パソコンとは何か、勿論プログラムなど判る訳も無いのですが、夢の機械に見え興味を持ちました。

 すぐに、パソコン雑誌を購入し、分けも判らずに雑誌を読み、両親にパソコン購入を、お願いしましが、父に値段を聞かれ「30万円ぐらい」と言うと速攻で「そんな高い物買えるか!」と怒られてしまいました。無理な願いだとは思ったのですが、やはり無理なお願いでした。

 しかし、如何してもパソコンが欲しい私は、ある時、新製品で89,800円のパソコンを見つけました。ディスプレイは普通のテレビを利用し本体だけで使用できるパソコンです。これであれば、小遣いとアルバイトで何とか購入できると思い、一生懸命、お金を貯めて購入しました。

 この頃、パソコンで毎日プログラムを作って遊んでいた私に、母は「あんた、このぐらい勉強をしたらどこの大学でもいけるで〜」と言われ、私は「このぐらい勉強が、面白かったら勉強すら〜」と言って、「屁理屈ばかり言うな!」と、よく母に怒られていました。


 
 ◇2009年1月29日 倒立2輪に再挑戦
 正月休みに、倒立2輪に再挑戦をしたいと思っていたのですが、気付くと1月の終わりになっていました。
 先日Vstoneから格安の倒立2輪「Beauto Balancer」が発売される記事を目にし、一瞬購入も考えたのですが、もう少し判らないなりに頑張って見ようと思い何とか購入を思い止まりました。(多分購入することに、成ると思いますが・・・)

 まずは、ジャイロセンサを利用した、車体角度の取得に挑戦です。PIC16F88のAD変換(10Bit)を利用しジャイロセンサの値を約10ms間隔で求めます。求めた値はシリアル通信を利用しパソコンに送信します。
 パソコンでこの値から10ms間の移動角度求め、さらに積分することにより、傾斜角度をラジアン角で求めます。と、簡単に書いていますが、Web上の情報を参考にし、四苦八苦して何とかここまで出来ました。たとえば「ラジアン」ですが、どこの説明も角度はラジアンで説明して有るのですが、20年以上前に高校の授業で聞いた気はするのですが、全く覚えていません。(多分、当時は全く理解できなかった思います。)

 まだまだ問題は残っているのですが、こんな物が出来ました。ジャイロセンサの値が安定するまでに3〜5分間は掛かります。これがドリフト現象なのでしょうか?
それと、何回か振っているうちにセンターがずれてきます。何とかできるのか?

あと、何時かは、2足歩行ロボットの安定歩行にも役立てたいと思っています。 
 
 ◇2009年2月11日 1秒倒立?
 前回の回路とプログラムにDCモータ関連の仕組みを組み込んで見ました。パソコンからモータの速度・回転方向を指示できます。あと、モータの電流値を求める仕組みも作りたかったのですが、作り方がわかりません・・・・
 気分転換(現実逃避?)で、写真の物を作って見ました。ジャイロセンサの値をシリアル回線でパソコンに送信し、パソコンで適当にモータの速度・方向を計算し、2輪車に送信する仕組みです。
 ギヤーボックスは1モータで動くようにタイヤの軸を長い物に変更しています。回路の電源はモータの裏辺りに角型電池を配置し、モータの電源は外付けです。

 結果はこんな物です・・・・・・・???????

 モータの電流値は色々と調べて、モータに電流検出用抵抗を付けて両端の電圧差を調べれば良いと言うのは何となく理解できたのですが、今回のモータは逆回転もするので、如何なる回路を組めばよいのか今のところサッパリ解かりません。
 まだ他に、運動方程式等、解からないことは沢山ありますが、もう少し諦めずに頑張って見ようと思います。
 
 
 ◇2009年2月21日 倒立成功?
 Vstonの倒立2輪は写真を見る限り、ジャイロセンサと、タイヤのエンコーダだけで倒立を行っているようなので(間違いかも知れません)、電流の測定は後回しにしました。
 倒立2輪で色々なHPを見ている時に「Ichiro Maruta Homepage」さんの「倒立振り子」のページが目に付きました。ここの倒立2輪車は角速度のみの制御で倒立を行っていると書いてあります。角速度のみの制御でもこれだけ綺麗に倒立を行うことが出来るとは驚きました。このHPに刺激を受け、ギヤ比・タイヤ・プログラムを変えて色々と頑張って見ました。
 <<結果はここまで出来ました。>>
これに、タイヤの回転数を取得し制御に加えれば、 素晴らしい物に成るかな?

 何時の日にか、この技術をマスタして、ROBO-ONEの参加資格審査であるスロープを攻略したいな〜と夢見ています。
 
 ◇2009年3月1日 タイヤのエンコードに挑戦
 モータの回転数を測る方法は、PUPPYUのマネをしています。タミヤのトルクチューンモーターPROにCNCフライスで作ったアクリル製のエンコーダディスクを取り付け、秋月電子で購入したフォトインタラプタを利用し回転数を求めています。
 倒立プログラムは、ネット上の情報を、色々と参考にさせてもらい、何とか前進・後進の指示も行える様になりました。

 ここまで出来ると、色々と欲が出てきました。もう少し、倒立2輪で遊んで見ようと思います。
<<不安定ながらここまで出来ました。>>
 
 ◇2009年3月12日 制御方法の追加
 今までの倒立制御は、ジャイロセンサ値とモータの回転数を、2輪車本体のPIC16F88で10ms間隔で求め、シリアル通信でパソコンに送り、パソコンでモータのPWM制御のデューティ比を求め、2輪車に送信していました。
 2足ロボットでも利用しているBluetoothボードで、シリアル回線を無線化して見たのですが、Bluetoothボードの遅延と思われるタイムラグで上手く動きません。配線を引きずる事無く、動かす事が出来れば良いな〜と思っていたのですが、残念な結果でした。

 後日、PIC16F88(20MHz)でも10ms間に単純計算で5万命令動くので、割り込み処理等の余分の処理を考えても、PIC16F88単体で倒立制御の計算をして動かせないかな〜と考えるように成りました。
 パソコンで作成しているプログラムをPICに移植するのですが、パソコン側のプログラムはActiveBASICを利用し、浮動小数点型の変数を利用したプログラムです。PICのアセンブラで浮動小数点を計算するプログラムを作る自信がないので今回はC言語を利用して見ました。
 結果は、色々と苦労はしましたが、モータが1つであれば、パソコンでの制御と同等の動きがPIC16F88でも出来ました。

 気分を良くしたので、ユニバーサル基板で回路を作り、車体をアクリル板で作り直し、電源も全て本体に配置して見ました。心配事は、今までモータ用の電源は秋月電子で購入していた5VのAC電源を利用していたので、電池2本で動くかなと思っていたのですが、何とか動いています。 
Bluetoothボードは乗せていません。 モータのエンコーダ 秋月で購入のジャイロ(下)
旧型との違いは感じられず。
 
 ◇2009年3月19日 次なる挑戦
重さ 320g(電池含む)
高さ 205mm
105mm
マイコン PIC16F88
モータ タミヤ トルクチューンモータPRO
ギヤー タミヤ ツインモーターギヤーボックス
(1モータで動くようにタイヤ軸を延長)
センサ ジャイロセンサENC-03R
エンコーダ GP1A53HRJ00F
フレーム 3mmアクリル板
<<ここまで動くようになりました。(携帯電話を乗せています)>>

 ここまで動くと、モータを2つにして方向転換も出来るようにしたいなと、またまた無謀な夢を見ています。
 まづ、マイコンですがPIC内蔵のPWM機能を利用してモータを動かしているのですが、PIC16F88では内蔵PWMが1つしかないので、PIC16F886を利用しようと思っています。本当は、もっと高機能なマイコンを利用すればよいのでしょうが、電子工作初心者の私には初めて使うPIC16F886でも、大いなる兆戦なのです。
 ギヤボックスはPUFFYUを真似てタミヤのダブルギヤボックスを利用します。組み立てて見たのですが、今のギヤボックスに比べてギヤの遊びが少なく感じます。
タミヤ
ダブルギヤボックス
上 PIC16F88
下 PIC16F886
 
 ◇2009年3月28日 自己満足!
重さ 385g(電池含む)
高さ 240mm
105mm
マイコン PIC16F886
モータ タミヤ トルクチューンモータPRO
ギヤー タミヤ ダブルギヤボックス
センサ ジャイロセンサENC-03M
エンコーダ GP1A53HRJ00F
フレーム 3mmアクリル板
 2モータ仕様の倒立2輪車が、何とかここまで出来ました。
 倒立制御は全てPIC16F886で行い、倒立開始・終了及び移動指示はパソコンからBluetooth通信で行っています。
(ここで運動方程式等を絡めて説明できれば、かっこよいのですが・・・・恥かしながら行列式が出た時点で、何のことやら?でして、根性で動いているだけです。)

 今回のギヤボックスは遊びが少なく、2モータでトルクもあり、思ったいた以上に安定していると思います。


<<まだ倒れることも多々ありますが、こんな動きです。>>
モータエンコーダ部品 1mmエンドミルで作成
Bluetoothボード 2個のモータを使用
 
 ◇2009年4月10日 感想色々
 先日、両親に2輪車を見せたのですが反応は・・・・
○母(昭和17年生まれ)
 「ふ〜ん、それが何の役にたつんな〜〜。ピエロの服でも着てれば少しは面白いのに〜」
○父(昭和13年生まれ)
 「何年か前に小泉さんが乗っていた、あの仕組みだな〜〜」(多分セグウェイの事だと思われます。)

 他にも何人かに見せたのですが、女性は年齢が上になるほど、冷めた反応です。簡単に言うと「そんな事より仕事を頑張れ!」と言う目で私を見ます。男性は年齢に関係なく驚いてくれる確立が高いです。

 今回の2輪車は、回路図を書かずに直にブレッドボードにテスト回路を組み、それをユニバーサル基板に置き換えました。この年になると、やはり物覚えが悪くなり、プログラムを組んでいると、あの配線はPICの何番ピンに繋いだかな〜と言うことになるので、我流では有りますが、簡単な回路図を書いてみました。決して人様にお見せ出来る様な物では無いのは判っていますが、もし宜しければ以下において置きます。

○モータ1個の1軸バージョン回路図(PDF)(2009/4/21差し替え)
○モータ2個の2軸バージョン回路図(PDF)(2009/4/21差し替え)

素人の書いたものですので、暖かい目で見てください。
 
 ◇2009年4月21日 YouTubeを利用して見ました。
 ホームページに動画を載せると、あっと言う間に、ファイル容量が上限近くに成って来たので、YouTubeに最近の動画3本を入れて見ました。(画像が鮮明に見える分、机の上の散らかり具合がよく分かり恥ずかしいですね〜)
 あと、先ほど気付いたのですが”Balancing Robot”で検索すると沢山の倒立2輪動画を見つけることが出来ました。

 前回の更新からの変更点は、モータ用電池の電圧を監視し、モータのデューティ比に反映する様にしてみました。回路図も変更したものに差し替えています。あと、ジョイパッドで操作できるようにPC側のソフトも機能追加しました。
(動画を撮影しているデジカメを、両親が旅行に持っていっているので、後日最新の動画をYouTubeにアップしたいと思います。)
 
 
 ◇2009年4月23日 YouTubeは面白いですね〜 
 ちょっと長めの動画を追加しました。あとYouTubeのアノテーション機能も利用して見ました。なかなか面白い機能ですね。皆さんが便利に利用する気持ちが分かりました。
 もし、この動画を私の利用しているサーバに入れると、これだけで容量オーバになってしまいます。
 
 ◇2009年5月4日 スピードアップ
 使用しているタミヤのダブルギヤボックスは、ギヤ比を4種類から選択でき、今までは114.7:1のギヤ比を利用していました。何度か38.2:1のギヤ比に変更し速度アップを試みたのですが、低速時のモータトルクが不足している感じで、いまいち満足できる走行が出来ずに諦めていました。
 今回、モータのPWM周期を変更して見ました。今まではPICのPWM機能を利用し、一番遅い1220Hzで駆動していました。もう少し遅いPWM周期にして見ようと思い、ソフトでPWM周期を作って見ました。まずは簡単に出来る100Hzでモータを動かして見たところ、モータの低速時のトルクアップが出来た気がしたので再度38.2:1のギヤ比挑戦してみました。
 変更前は秒速17cm/sより速くすると停止時に、体制を崩して倒れていたのですが、今回は秒速30cm/sでも何とか倒れずに動きました。
 あと、PWM周期を遅くする前はモータから”キーン”と高い音が出ていたのですが、PWM周期を遅くすると、音が出なくなりました。
 
 ◇2009年7月5日 久々の電子工作
 久々に半田ごてを握りました。今回も、倒立2輪ネタです。
 今まではマイコン用の電源は角型電池を、3端子レギュレータで5Vに減圧して使用していました。今回、ストロベリー・リナックスDC-DCコンバータを利用し、モータ用の単三電池2本から昇圧し使用して見ました。本当はDC-DCコンバータも自作したいと思い、色々とネットの情報を検索したのですが、私の知力では難しかったので、敗北感を持ちつつ購入しました。しかし、やはりプロが作った物は当り前ですが、使い勝手が良いです。今後、色々とテストして行く中で問題が発生するかもしれませんが、今のところ非常に満足しています。
 あと、これは5月中旬に変更していたのですが、1軸(1モータ)バージョンのギヤボックスをツインモーターギヤーボックスの改造版から、タミヤのシングルギヤボックスに変更しています。此方の方がギヤの遊びが少ないようで、より安定しています。
 
 ◇2009年7月11日 連続稼働テスト
 前回ハードの変更後、1軸バージョンのソフトウエアを主に何点か変更を加えています。
 今回は単3ニッケル水素電池2本で連続稼働テストを行って見ました。最初は1軸バージョンだけのテストを考えていたのですが、ついでなので2軸バージョンも合わせてテストを行いました。

○1軸バージョンは単体で動かし、位置がずれた時は、タイヤを突っつき、机から落ちない様に位置を補正しました。(30分で約10〜20cm後ろに下がりました。)
○2軸バージョンの位置修正は、パソコンから修正指示をBluetooth無線で行いました。

 電池は、左写真の充電器を使い、実際の充電容量が1700mA〜1800mAの電池を使用しました。予想では1軸バージョンは、2時間は動くと思っていたのですが、予想を上回る結果が出ました。

 19:45 テスト開始
 22:25 2軸バージョン停止
  0:25 1軸バージョン停止

 結果は2軸バージョンは2時間40分、1軸バージョンは4時間40分も倒立を続けました。4時間以上も動くとは思ってもいなかったので、入浴時間が非常に遅くなってしまいました。
22:45 2軸バージョン停止 0:25 1軸バージョン停止
 
 ◇2009年8月28日 諦めずに頑張っています
 前回の更新後、モータの回転数を求めるプログラムの一部を変更しました。その結果、少しずつ後ろに下がっていた動作が無くなりました。
 あと、動作中でも一部パラメータの値をパソコンから変更できるようにしました。合わせて計算上の傾き、角速度、速度、移動距離、モータのPWM値等を2輪車からパソコンに送信する仕組みを組み込んで見ました。送信されたデータはリアルタイムにグラフ表示できる様にして見ました。
 ハードの変更は、2軸バージョンに単三電池2本を並列に追加しました。結果、電圧の変化が小さくなり、動きが安定したように思います。(並列接続なので電池2本でも動きます。)

    
 
 ◇2009年9月13日 コントローラを作りました。
 今まで、2軸版の倒立2輪車を動かす場合、Bluetooth接続でパソコン上のコントロールプログラムを使用していました。2輪車で、ちょっと遊ぶには少し面倒でしたので、コントローラを作成して見ました。
 コントローラ側にも、週刊マイロボットに付属のBluetoothボード(RBT-001)を使用しました。参考にさせてもらったのは「yonekenのblog」さんの「Bluetoothモジュール完全解析」のページです。あとPIC16F88を使用しています。
 Bluetoothボード同士の接続は決め打ちで行っていますので、コントローラ側のプログラムは至って単純で、移動指示の電文送信のみです。
 操作方法は、ジョイスティックか、コントローラを傾けて移動指示を出す方法です。傾きの検出は加速度センサを利用しています。

 それとRBT-001ですが保障は出来ませんが多分、マイクロテクニカで販売されているBT-MOD100Rと同じ物の様な気がします。

    
 
 ◇2009年10月4日 ミニノートPCを購入
 ロボット工作にはあまり関係ない話ですが、先月のシルバーウイーク中にリフレッシュPC(簡単に言うと中古品)のミニノートPCを購入しました。購入先はNTT-X Storeで、購入したPCはAspire one AOD150 です。送料込みで23,800円でした。
 最初、販売先のHPで見たときは、”安いな〜”と思ったぐらいで、購入の意思は無かったのですが、何となくスペック一覧を見ていると”Bluetooth内蔵”が目に留まりました。一つ前の型のAspire oneも19,800円で販売されていたのですがこれには”bluetooth”は内蔵されていません。
 何故か急に、最近は何も買っていないし、少し位贅沢をしてもいいかな〜と思い、購入意欲が出てきました。もし買うなら、どの色が好いかなと見ると、4色(黒・赤・白・青)の内、既に赤色は完売でした。残念。

 話はそれますが、私は赤色好きで、どうも子供時代の「赤胴鈴乃助」「レッドバロン」「ライオン丸」「ロボコン」「赤レンジャー」「ゲッターロボ」等々のテレビ漫画の影響が強かったと思います。ダメ押しは「赤い彗星」でしょう。
 あと、これも関係ない話ですが、テレビ漫画つながりで、小中学校時代の「宇宙戦艦ヤマト」の「森雪」・「銀河鉄道999」の「メーテル」辺りで私の中の美人の定義が出来上がったように思います・・・・・・。

 話は戻って、最初は白の購入を考えていました。しかし白は膨張色です。せっかく小さいパソコンを買うのだから、少しでも小さく感じられる濃い色と言うことで、青色を購入しました。あとマウスもblutooth対応のM-BT2BRBUを購入しました。
 
 ◇2009年10月10日 CNCフライスの精度
 私の使用しているCNCフライスは、オリジナルマインドmini-CNC BLACK1520です。今日、2mm厚のアクリル板から2輪車の電池ボックス補助部品を作りました。設計図上では57mm×64mmの大きさです。
 実際に計測して見ると写真の様に、0.1mm以下の誤差で出来上がっています。この誤差を大きいと見るか小さいと見るかは作るものによって違ってくるとは思いますが、私の趣味の世界では十分過ぎる精度です。
(作るものの大きさによっては、もう少し大きな誤差が出る場合もあります。)

 1ヶ月以上購入を悩んだCNCフライスですが、今は買って本当に良かったと思っています。もし購入していなければ、ロボット作成・電子工作の世界に踏み込む事はなっかたでしょう。
横57mm縦64mmで設計
 
 ◇2009年10月16日 進んでは戻っています
 現状の倒立2輪車ですが、色々と変更をした事を、書いてきたのですが、一部変更前に戻しているので書いておきます。
○ギヤ比を38.2:1から114.7:1に戻しました。理由は、静止時の安定が悪い為です。
○モータのPWM周期を100Hzから、PICの内蔵機能で作成できる1220Hzに戻しました。理由は、思ったほどもトルク差を感じなくなった為です。
○単三電池を4本から2本に戻しています。理由は、利用していた一部の充電電池が劣化していたのを気付かずにいた為です。
 殆んど元に戻した様な気もしますが、失敗だったとは思っていません。よい経験になったと思います。

 写真の基板は、3.3Vの電源で動く予定のボードです。今までは5VでPICを動かしていました。bluetoothボードは3.3Vで利用しているので、電源が1つで済む予定です。(bluetoothボードは3.0Vが理想らしいです。)
 それと今後、秋月電子で扱っているPIC24Fも利用したいと思い、低電圧での作成にも慣れていたいと考えています。
 この新しい3.3V基板で、少し背の低い倒立2輪車に、挑戦予定です。あと、出来れば外装も作って見たいと思っています。
メインボード(PIC・ジャイロ)
モータ制御ボード
 
 ◇2009年10月20日 LowType倒立2輪車の進捗具合
ジャイロ(上)エンコーダ(下)用基板
1mmエンドミルで作成
本体フレーム 2mmアクリル板で作成
エンコーダ部の組立 赤丸部分がモータの軸部品
の一部にあたる為、少し削っています。
エンコーダ部の裏側
電池取付け部 単4型電池を使用
2足ロボットで使用予定の電池が
大量に未使用な為、利用を決定。
タイヤ 2mmアクリル板で作成
2枚を合わせて1つのタイヤにします。
最後にOリングを、はめて完成。
黒の2mmアクリル板で
エンコーダ用円盤を作成。
1mmエンドミルをを使用。
フレームにエンコーダ部の取付け ギヤボックスの取付け 前面フレームの取付け
 タイヤを取り付けて、大まかな形は見えてきました。予定では本体フレームの前後に基板、bluetoothボードを載せる予定です。電池は最上部に載せます。

 
 ◇2009年10月26日 予定道理には行きません
 やはり電子工作素人の考え通りには行きませんね〜
 最初は予定道理に3.3V基板で組み立てて動かしました。プログラムを3.3V用に変更し、動くには動いたのですが、モータのトルクが弱い気がしてモータの電圧を測ってみたら約1.6V程度しか出ていません。
 今回使用したFETは2SK2415で4V駆動です。無理な相談だったのかもしれません。
 ただ、前もってブレットボード上で簡単なテストをしたときは、2.2V以上の電圧を得る事が出来た気がしたのですが・・・もう一度、同様なテストをしたら、1.6V程度しか出ていません。
 このまま3.3Vで行こうかとも思ったのですが、今後、外装も考えていたので少しでもパワーがあった方が好いだろうと思い、5V用に基板を変更しました。変更といってもLED用の抵抗を溶け直した程度です。それと、bluetoothボードの電源用に3.3Vの電源基板を作成しました。
 あと、コントローラのプログラムを一部変更し、赤ボタンを押しながら電源を入れると新型機とリンクするように修正しました。


    
 
 ◇2009年11月14日 外装を作りました
 趣味を同じくしている人には分かって貰えると思いまが、個人的には、外装でなく中身を見て貰いたいのです。しかし私の周りの大半は基板が見えていると、未完成に感じるようです。
 そこで今回、1.2mmと0.5mmのタミヤのプラ板を使用し、外装を作ってみました。本体のオレンジ色はアクリルカラーで塗装、模様はカッティングシートで作成しました。
(本当はラッカー系の塗料の方が、塗装が強くて良いのですが手持ちに無かった為、アクリル系になりました。)
 中身が見えなくなっただけで、面白みは無いのですが、センスの欠片も無い私ですから仕方ないです。

 あと、目には見えない部分で、一部プログラムの追加を行いました。今までは各種パラメータの値を稼働中に変更は出来たのですが、電源を切ると初期状態に戻っていました。これはと言うパラメータが出来た時は、プログラムの初期値を変更後、コンパイルしPICに書き込みを行っていました。
 今回の機能追加でパラメータの初期値を、PIC内蔵のEPPROMから読込むようにしました。合わせてパソコン側のソフトも、EPPROMからの読込みと書出しが出来るように機能追加を行いました。

メモ
 重さ:313g(内外装:48g)(電池含む)
 高さ:135mm
 幅 :105mm
 奥行:72mm
 
 
 ◇2009年11月29日 倒立2輪車 全員集合!
 倒立2輪車を作り出した当初は、素人工作でここまでの物が出来るとは考えてもいませんでした。ここまで出来ると欲が出るもので、もう少し安定できないものかと思い出すようになりました。
 そこで、加速度センサも利用し、ジャイロセンサで求めている傾きを、より精度よく取得出来ないかと考え、テスト的に加速度センサを取付けてみました。センサの値をグラフ表示して見、色々と考えたのですが、私には加速度センサの活用は無理そうです。
 しかし、ここで考察中に、ジャイロセンサのドリフト現象を補正しているプログラムの、別の方法を考つきました。色々と試行錯誤はあったのですが、一台目はそこそこ上手く機能しているように見えたので、残り2台にも同様な処理を追加しテストしてみました。
 今までは静止時に、ドリフト現象の補正が上手く行かなくなると、前後の動きが大きくなったのですが、今回の変更で、その辺りも上手く対処出来たように思います。

 あと、VstoneからBeauto Balancer Duoが発売されたのをHPで見たのですが、小さいですね〜エンコーダ部分も参考になりました。似た事は、NCフライスの回転数を求める時に作っていたのですが、反射板を2段にする方法は思いもつきませんでした。

 
 ◇2009年12月8日 うれしい出来事
 私のHPを見た広島市の人が、仕事で岡山に来る用事があるので、寄って見たいとメールで連絡を頂き、ちょうど一週間前に、倒立2輪・2足ロボットを見に来られました。この方も2足ロボットと倒立2輪に挑戦中のとの事で、私のHPの内容に興味を持たれたようでした。
 お話を聞くと、2足ロボットは組込み用LINUXボードで挑戦中で、倒立2輪はR8を使用との事でした。かつ自作のCNCフライスまで作っておられて、私が見学に伺いたい様な方でした。
(写真は、頂いた倒立2輪用基板です。外注で作成されたそうです。両面実装になっています。)


 こんな事もあり、先週末はもう少しプログラムの完成度を上げようと頑張っていました。内容は割込み処理に関する部分です。
○エンコーダ処理・・・今までは約0.055ms間隔でタイマー0割込みを掛けてエンコーダの変化を監視していました。今回の変更はこれを、PICのRBポートの割込み処理に変更しました。この処理の変更には嵌りました。当初は他のPIC16F系の処理と同様に考えRB4〜RB7ポートが割込み処理可能のポートと思い配線を変更しプログラムして見ました。しかし如何も割込み処理が発生しません。最初はハードを疑い色々調べて見たのですが判りません。PIC16F886のデータシートを見ても正しい気がします。初日は諦めました。次の日、再度データシートを見て見ると、全てのRBポートの説明に”Individually controlled interrupt-on-change.”と書いてあります。ここで、PIC16F886は全てのRBポートで割込み可能だと気付きました。次に割込み制御レジスタ(INTCON)のRBポートに関する説明を見ると補足説明にIOCBレジスタを設定しろと書いてあります。このレジスタは今までのPIC16F系には無かったのでこの処理が抜けていました。このレジスタの処理を入れる事により無事に割込みは発生しました。英語が解からない私は2日間悩みました。(配線は元に戻しました)

○10ms処理・・・10ms間隔で倒立制御を行っているのですが、この10msを今まではエンコーダ処理を182回行ったら10msとして処理に利用していました。今回はタイマー1を利用し10msで割込みを掛けるように変更しました。

○シリアル受信処理・・・2足ロボット作成時は受信処理もポーリング処理でデータの取りこぼしも無く出来ていたのですが、倒立2輪では1処理の計算時間が長くなりデータの取りこぼしがあるので、受信割込み処理を利用しています。倒立2輪では1データを3バイトで作っているのですが、受信割込み後、3バイトデータを受信するかフレーミング・オーバーランエラーが発生しないと処理が終わらなくなっていました。これを修正し、受信割込み処理では来ているデータだけを取込み、1データを組上げる処理に変更しました。合わせてタイムアウトの処理も追加し、データが短い場合は無視できるようにしました。

これ等の処理のおかげで、1回の計算に5ms前後掛かっていたものが、2ms前後と速くなりました。
 
 
<<トップへ戻る>>