« 2007年04月 | メイン | 2007年06月 »

2007年05月21日

インターフェース付録基板、115200BPSで通信できた

インターフェース付録基板は、発信器として12MHzを使っているので、115200BPSの調歩同期通信が出来ません。
そこで、SCK0端子に、115200Hzの16倍の1.8432MHzを入力して、外部クロックモードにすることで、115200BPSの通信が出来るように先日回路を組んでいましたので、今日はソフトを作成して通信テストを行いました。いろいろミスがありましたが、チェックして修正して、無事動きました。

SH2/7144のデータシートの13-29ページのフローチャートに従って書いた初期化コードが下記。

SDCR0 = 0xF2; // 通常のシリアル設定
SCR0 = 0x00; // TE,REを0にして初期化開始
SCR0 |= 0x02; // SCK0にx16のクロックを入力
SMR0 = ASYNC_8BIT | PARITY_NONE | STOP_1BIT;
// 通信条件を設定(調歩同期,8N1,Clock分周1/1)
wait_1bit(); // 1bit分の時間のウェイト
SCR0 |= 0x40; // 受信割込みを有効
PAIORL = 0xA3E0; // PA5,6,7,8,9,13,15 出力
PACRL1 = 0x1140; // PA8,9,10,13,15 がI/O, CS1, WRL, RD 8bit RAM用
PACRL2 = 0x0155; // PA5,6,7 がI/O, TXD1, RXD1, TXD0, RXD0, SCK0
SCR0 |= 0x30; // 送信、受信を有効

投稿者 hiranoy : 23:50 | コメント (3)

2007年05月19日

飲み会

今日は、高専時代の同級生が上京してきたので、練習会への参加予定をキャンセルして、関東在住の同級生を集めて飲み会。

自分が、相変わらずロボットをやってるといったところ、
同級生の一人が、高専ロボコン観戦にはまっていて、去年は水戸まで行ったとのこと。
また別の同級生は、秋葉原の裏通りでロボットがサッカーの練習をしているところを見に行ったことがあるとこのと。しかも「夫婦で練習している人もいたよ」と。
ってそれ、くぱぱさんとくままさんですね、きっと。

投稿者 hiranoy : 23:50 | コメント (0)

2007年05月18日

ESEC(組み込みシステム技術展)に行ってきました

ビッグサイトで開催のESEC(組み込みシステム技術展)に行ってきました。

シリコンリナックスが立派なブースを構えていてびっくり。海老原さんの個人事業の時代から知っているので、感慨深い。Linux用GUI開発環境を海老原さんが説明してくださいました。仕事で使うのによさそうです。(QtやWideStudioよりデザインの自由度やライセンス体系などよさそう)

これまた小さい規模のころから知っているLCDコントローラのケニックシステムも立派なブースを構えていました。ケニックのコントローラは、私が担当じゃない製品への組込みを推薦したんだけど、LCDの入手性がもんだいだったらしく、不採用になったことがある。

トラストテクノロジーが、2足歩行ロボットの展示をしていました。

ESECの面積が、去年より大きくなっていて、ESECだけで5時間くらいかかってしまった。
SODECは、軽く見て終了。

その後、秋葉原に寄って、秋月で月曜日に買えなかったものを購入。
アールティによって、八杉さんと雑談。

投稿者 hiranoy : 23:50 | コメント (0)

2007年05月16日

電池駆動のアンプ内蔵スピーカを分解

先日、秋葉原のジャンク屋で購入した、電池駆動のアンプ内蔵スピーカ。
買ったのは、ロボスポットの割と近くの店だった。500円。
070516amp1.jpg

メカボンBに内蔵できないか分解してみた。基板は小型でいいかんじ。
070516amp2.jpg

スピーカは3W4Ωが2個。これも妥当なところか。
070516amp3.jpg

投稿者 hiranoy : 23:50 | コメント (0)

2007年05月14日

月曜の秋葉原はダメダメ...

今日は仕事で田町までいったので、帰りに秋葉原へ。

秋月電子へ。ICソケットとかクリスタルとか買いたかったのですが...。
→バーコードつきの商品のみ販売。(以前は休みだったので、ありがたいことではあるのですが...)

アールティーへ。
→月曜定休。(別に買うものがあったわけではないのですが...)

Optimizeの基板とかを売ってる、ITプラザへ。
→月曜定休。(miniSDスロットが入荷してないか見に行ったのですが...)

月曜の秋葉原はめったに来ないので、こんなにダメダメだとは思いませんでした。
木曜か金曜にESEC(組み込みシステム技術展)の見学にビッグサイトまで来るので、そのときにでもまた来ようと思いました。
もちろん、王国とかやってる店はもちろんあるのですが。

投稿者 hiranoy : 23:50 | コメント (0)

2007年05月13日

PICサーボのソフトだいぶ出来てきました

今週末に行った作業

・バグつぶし
・計算方法の見直し
・各種条件(パラメータ)を内蔵EEPROMに書き込んで設定するように修正
・パルスが来なくなったら脱力するように修正
・700us~2300usのパルス幅で、180度回転するように修正
・D制御の導入

まず、バグつぶしですが、先週末のソフトには結構ありました。
シリアル出力をPCで取り込んでデバッグしてみると、出てくる出てくる。結構単純なミスが多かったです。

次に計算方法の見直しなのですが、先週のソフトは、プラス方向の移動と-方向の移動を早い段階から分けて記述していたのですが、D制御を取り入れる準備もあって、符号付16ビットの数値でプラスマイナス一括で処理するようにしました。

また、パラメータをEEPROMから読み出して処理することで、プログラム領域に何度も書き込まなくてもすむようにしました。

そして、そもそもの発端の「パルスが来なくなったら脱力するように修正」を行いました。とりあえず100msの間パルス来なければ、脱力するように出来ました。

それから、RB995(MG995)は、700us~2300usのパルスでは、160度くらいしか回転しないので、180度になるようにソフトを修正しました。

最後に、いよいよD制御を取り入れてみました。P制御のみでプルプル収束しなかったパラメータでも1,2回震えて収束するようになりました。

左が無改造のRB995。右が自作PICソフトとブレッドボードの回路で動いているRB995。
070506oreservo.jpg

動画(3GP形式)

右のサーボの角度が左のサーボより大きくなっていることが分かるかな?
見た目では、ほぼRB995(MG995)と同じような動きになってきました。ただ、保持力が本家より劣ってます。保持力を上げるパラメータにすると、プルプルがひどくなるので、このあたりが今後の課題です。

PICのプログラム(アセンブラ)も一応公開しておきます→Download file

試して見られる方は、CONFIGのOSC種別がECになってますので、HSに変更して書き込んでください。

利用可能なチップは、PIC の 12F675 または 12F683 です。表面実装タイプ(PIC12F675-I/SN)は、IPIで売ってます。

投稿者 hiranoy : 23:50 | コメント (5)

2007年05月10日

フリースケールのマイコンMC9S08QG8/QG4に日本語版データ・シートが

フリースケール・セミコンダクタから「第二回 電子工作キット製作コンテスト」の開催のメールが届きました。
去年は、評価キットプレゼントにも惹かれて、エントリーしたのですが、日本語のデータシートがまだ用意されておらず、PICを使えば1日で出来上がるソフトの作成に数週間かかってしまった苦い思い出があります。
今年は、日本語のデータシートくらい用意されているかな?とサイトを見てみたらありました。

MC9S08QG8/QG4日本語版データ・シート

うーん、ちょっとエントリーしてみたくなった。まあネタも無いのでやめておきます。
フリースケールもチップを普及させたいのなら、秋葉原で普通に買えるようにして欲しい。マルツや千石で1,2種類売られているだけなのは残念。

---------------
ところで、エントリーといえば、「芝浦工大ロボフェス2007」にエントリーしました。

---------------
制御理論の方は、たくさんコメントをいただき、さらに書物も読んで、D制御は、変化の抑制方向に効くというのがわかりました。実作業は週末に行います。

投稿者 hiranoy : 23:50 | コメント (0)

2007年05月08日

制御理論の勉強中...

制御理論は、20数年前に授業で習ったのですが、仕事ではパルスモータやACサーボモータなどを使っているので、制御理論を使うことはありませんでした。ですので、習っておきながら全く身についてません。
検索したところこんな資料が見つかったので、理解してみようと読み進めてます。

でも、やっぱり微分Dのところが感覚的に理解できないでいます。
PID制御に関して同様の解説があるPIC本で有名な後閑さんのページを見ると、Dの項は、目標位置に速く動かすための項とある。(ある意味オーバーシュートさせるための項ともいえるかもしれません)

でも、目標と現在位置の差というのは、目標に近づけば減っていくわけで、目標と現在位置の差の微分はマイナスの値を取ります。制御量にマイナスの値が入ると、目標に速く近づけたりオーバーシュートぎみにしたりなんかとは、逆の効果になるとしか思えません。

うーん。やっぱり杉浦登さんのロボマガの連載にもあるように octave を入れてシミュレーションで理解するしかないのでしょうか。

投稿者 hiranoy : 23:50 | コメント (4)

2007年05月07日

新型MG995が到着

5/4にヤフオクで\1500で落札した新型MG995が到着しました。
070507mg995.jpg

ヤフオクなので若干心配がありましたが、下の写真のように、PICが樹脂でモールドされていないタイプでした。
070507mg995kiban.jpg

今日は、バラしまでで終了。やっぱり平日はそうそう時間が取れません。

追伸:
近所のヨーカドーで\100で投売り処分されていた、「やわらか戦車」たちを捕獲してきました。(笑
070507yawaraka.jpg

投稿者 hiranoy : 23:50 | コメント (0)

2007年05月06日

サーボらしくなってきました

RB995の回路をブレッドボード上に作って、PIC12F675でソフトを書いていたのですが、だいぶサーボらしくなりました。まだまだ、RB995の制御には負けてますが...。

左がRB995ノーマル。右がRB995のモータとポテンショだけ残して、それをブレッドボードにつないで、独自のソフトで動かしたもの。
070506oreservo.jpg

動画(3GP形式)

明日あたりに、MG995の新型が届くので、少しずつソフトを改良していこうと思います。

連休中、インターフェース付録SH2基板でのサーボコントローラをやる予定でしたが、このRB995の解析とソフト作成もなかなか楽しいものになりました。

投稿者 hiranoy : 23:50 | コメント (3)

2007年05月05日

ブレッドボードでソフトの作成中

RB995用の制御ソフトを、ブレッドボード上で作成中です。
GP5に発信器の8MHzを供給しているので、空いたGP4からシリアル出力を行い、内部の状態を確認しながらデバッグしています。

・角度指定のPWMの幅を10bit精度で取り込む部分のデバッグ完了。
・ポテンショからの電圧を10bit精度で取り込む部分のデバッグ完了。

あとは、この差に応じて、FETをPWM駆動してあげれば、サーボモータが完成するはず。
ちなみに、RB995のFETのPWM周期は、約1.2msでした。
それから、P-D制御をやらないとうまくいかないのかな?と考えてロボコンマガジンの杉浦登さんの連載「制御は一日にしてならずぢゃ」を読み返していたところ、46号P87に「ラジコンサーボを改造する場合、まずはD制御なしで構わないと思います」との文章が。なので、P制御のみで作ってみようと思います。

投稿者 hiranoy : 23:50 | コメント (0)

2007年05月04日

RB995の回路をブレッドボードに作成

分解してドリルで掘った基板は、いったん元に戻したのですが、復活しませんでした。orz
そこで、基板をはずして、モータの線2本とポテンショの3本の線を引っ張り出した、5線式サーボに改造しました。

サーボの制御ソフトを作るには、DIPのPICでやった方がいいので、昨日解析した回路を元に、ブレッドボードに同様の回路を作成しました。FETやコンデンサの値は異なります。
070504breadbrd.jpg
PICの2つの線のをH、Lにすることで、モータが正逆転できるところまでは確認しました。

ブレッドボードと5線式サーボで、ソフトを作る準備はできたのですが、今日は家族サービスデーで、スーパー銭湯に行って、さらにカラオケに行ったりしてましたので、今日はここまで。

投稿者 hiranoy : 23:50 | コメント (0)

2007年05月03日

RB995をさらに調査

いずみかわさんから情報をいただいたりして、さらに調査をしてみました。
前回、PICのVDD端子に直接5Vを供給しても、うまく読み書きができなかったところまでだったので、3.3Vの3端子レギュレータも取り外してみました。(樹脂モールドを取り去るのが大変でした。)

で、いざ読み書きテストにチャレンジしたのですが、やはりNG。
そこで、物は試しで12C5xxのモードで読み出しをしてみたら、あっさりOKになりました。
12C5xxシリーズは、最高クロック4MHzだし、A/Dコンバータを内蔵していないので頭にありませんでした。
読み出しの通信は正常終了しましたが、当然コードはプロテクトされているので、ALLゼロで読み出されました。
でも、12C5xxはA/Dが無いので、12Cシリーズで、A/Dコンバータ内臓のチップを探してみたところ、以下の4種が見つかりました。

12C671 (プログラムメモリ1Kワード、EEPROMなし)
12C672 (プログラムメモリ2Kワード、EEPROMなし)
12CE673 (プログラムメモリ1Kワード、EEPROM128バイト)
12CE674 (プログラムメモリ2Kワード、EEPROM128バイト)

上記4種共通で、4chの8bitA/Dコンバータを内蔵しています。
それから、12Cシリーズは、ワンタイムのPICなので、再プログラムはできないことになります。

でも、いずみかわさんが予想された 12F675 とはピン配置が同じなので、プログラムを新規に組んで、チップを張り替えることは問題なくできそうです。さらに12F675に換装できたらA/Dが10bitになるのでグレードアップになるかもしれません。(ソフトの出来次第ですが)

FETの型番やチップコンデンサの値は不明ですが、制御ソフトを書くために、基板から回路も起こしてみました。

Eagleのschファイル→Download file

回路を見ると、Hブリッジの片側をPICの出力1本で制御しています。つまり、端子の状態HLで以下の2つのON/OFF状態が作れます。

・PICの出力がHになると、10kΩの先のFETがON、そのFETのDrainがGNDレベルになるので、ハイサイドのPchMOSFETがONになり、ローサイドのNchMOSFETがOFFになります。
・PICの出力がLになると、10kΩの先のFETがOFF、そのFETのDrainがプルアップでVccレベルになるので、ハイサイドのPchMOSFETがOFFになり、ローサイドのNchMOSFETがONになります。

この結線方法だと、PICから制御できる状態は、以下のようになります。

・GP1=H, GP2=L 回転(正転?)
・GP1=L, GP2=H 回転(逆転?)
・GP1=H, GP2=H ブレーキ
・GP1=L, GP2=L ブレーキ

つまり、HブリッジのFETをすべてOFFにしたフリー状態は作れないということになります。
ブレーキ状態というのは、KRS2350の脱力状態のようなものです。(電源OFF時より回転が重い)

それから、意外だったのは、デッドタイムに関して何も考慮されていないところです。ブリッジのFETの型番が分からないので、そこまできちんと設計されている可能性もあるのですが。

それからそれから、回路図に描き忘れたのですが、ポテンショメータの抵抗値は4.75KΩでした。

投稿者 hiranoy : 23:50 | コメント (2)

2007年05月02日

SH2のベースボード改造完了

SH2のベースボードの改造を完了しました。
あとは、連休中にソフトが完成するとうれしいのですが...。

ピンアサイン


070502sh2brd1.jpg


070502sh2brd2.jpg

SH2基板を載せた状態
070502sh2brd3.jpg

投稿者 hiranoy : 23:50 | コメント (0)

2007年05月01日

RB995を分解、でも玉砕

いずみかわさんのBlogを数日前までまとめて読んでいたら、MG995はPIC12F675で動かしてるようだ、という書き込みを発見。自称PIC使いとしては、確認してみたくなりました。(今日も仕事でPIC12F675のプログラムを書いてました)

早速、手持ちのRB995を分解...
070501before1.jpg
したのですが、残念ながらモールドされているタイプでした。配線の色も黒赤白タイプなので、旧型ですね。(写真は、ちょっとヤスリをかけてみた状態)

でもここでやめるとくやしいので、ヤスリで削ってみたのですが、結構硬いです。そこで、プログラミングに必要な端子だけをドリルで掘り出してみました。
12F675のプログラミングに必要な端子は、

1pin VDD
4pin *MCLR
6pin GP1
7pin GP0
8pin GND

なのですが VDD、GND、*MCLR(PWM)、GP0(ポテンショ)は、端子が基板の外部にそのままむき出し(正確にはVDDは3.3Vを作る前の端子)なので、GP1だけ不明です。FETの制御なので、基板の裏のどこかに出ているはずなのですが。
そこでGP1のあたりをドリルで掘ってテスターで基板の裏を導通チェックしてみたところ、チップ抵抗のところで導通がありましたので、そこに線を半田付け、他の端子も線を半田付けして、8ピンのICソケットに差し込んみました。
070501after2.jpg

そしてPICライタで読み書きのテストをしてみましたが、うまくいきません。基板上の3.3Vの3端子レギュレータが載っていますが、これがだめ?と思い、PICのデータシートを見てみたら、読み書きするときは5Vが必要みたいでした。そこで、VDD端子を掘り出して、また読み書きテスト。でもやっぱりうまくいきませんでした。その後、VDD端子は、ポテンショの端子にも出てきていることを思い出して orz。
チップ抵抗やチップコンデンサをはずしてもだめでした。

モールドされてない新型を入手後、再チャレンジしてみようと思います。

ところで、バラしていてひとつ疑問が生じました。
「RB995のPICは3.3V駆動なのに、PWM信号には5Vとか入力して大丈夫なの?」
というものです。
で、データシートを見てみたら、PWM端子にアサインされている、GP3端子は、12Vのプログラム電圧を加える端子でもあるため、16Vくらいまで入力できるようでした。(12V超えるとプログラム読み書きモードになってしまうと思うのですが)
PICを使って10年くらい経ちますが、こんな使い方ははじめて知りました。勉強になりました。

投稿者 hiranoy : 23:50 | コメント (5)