HRF−A05 Part4
本体
|
材質 | アルミ(A5052)、ABS、POM |
メイン制御基板 | KONDO KCB-1 | |
サブ基板 | R8C/29(感圧センサー入力用) | |
関節数 | 24 | |
使用モーター | KRS−4014HV | |
デカ指作成。
ここのところ、ロボットどころではない状況で、プロクソンCNCに加えて、新たに手に入れた鉄のおもちゃで、ロボット以外の加工などやってました。
まあ、先行きまだどうなるかわからないですが、加工の合間に、以前ロボット用の指を作ったものを構造をどのように変更したらよいか検証するために、倍のサイズでちまちま作ってました。
まだ、構造上、作り直す部品もありますが、今現状は写真のような状態です。
手前の小さいのが以前作ったもので奥のが今回作成中のものです。
KCB-2のFET破損。
KCB-2のプログラム開発をやりやすくするために、リセットSWと書き込み用のスイッチを付けました。
ついでに、KRG-3を1つ追加。
KCB-2は、もともとはばらばらになるようになっています。ちょっと気になる部分があったので、一旦、取り外しました。
で、組み立てなおして倒立振子の実験中、突然KCB-2から大量の煙が発生。
KCB-2をもう一度開けてみると、FETが破裂、熱でハンダが溶けてFETの位置がずれている状態でした。
モーターも手で回してみると、片側への回転は良いのですが、反対回しにすると、カチカチ音がするので、これも分解。
うっ!。ブラシが飛んでいる。これが原因で、モーター内でショートしたようです。
現在は、破損したFETを取り外して、モーターは新しいものに交換、使用するモーターのチャンネルを3と4に変更して組み立てなおしています。
ライントレース動画。
YouTubeにアップロードした動画が、やっと有効になりました。
センサーは1つで、スピードは控えめで動作させています。
A05から大分かけはなれているので、近いうちに別カテゴリ作ります。
ビュートチェイサーでライントレース。
RobotWaveで、ビュートチェイサーを動かしている人が増えてきました。
最近はライントレースをCでプログラムして動かしているようです。
で、ちょっと試しでプログラムしてみました。
こういうのは、昔から雑誌の記事で見かけてはいたのですが、自分でやったことがありませんでした。
まずは、ラインを検出するセンサーの取り付け変更。ビュートチェイサーの前側にはセンサーが付いていますが、前方向に向いて取り付けられているので、これを下向きに固定。
このセンサーのデータシートから焦点距離は3.81mmなので、この高さで固定しています。
YouTubeに動画をアップしたのですが、処理中からなかなか有効にならないので、動画のリンクは次の書き込みに載せます。
基板到着。
P板.comに発注していた基板が届きました。
仕上がり具合はどうなのかなと思っていたのですが、問題なしですね。
基板外周も、Vカットとかではないので、きれいに仕上がっています。
表面実装のLED以外の部品を取り付けてみました。
ちょっと気になったのは、シルク印刷で、R1などの部品番号が0.1mmくらい左にずれている。でも、問題なし。で、基板名称のところがEagleだと問題なかったのですが、ハイフンの横幅がEagleのデフォルトでは狭いのですが、シルク印刷では広くなっていて、最後の文字がビアホール上になってしまい、印刷が消えてしまっています。
ガーバービュアーでは表示に問題なかったかは気が付かなかった。今度発注する時は気をつけよう。
KONDO ROBOSPOTの利用規則改定。
KCB-2を使い始めてみて、これを使ったロボットは「KONDO ROBOSPOT」動かしてよいのだろうか?と言う疑問。
コントロールボードなどは、他社製品でもOKだがサーボはKONDO製ということだった。
で,KCB-2の場合、普通に使う人は、これにタミヤのギヤボックスなどを使用して何か作ると思うので、サーボはないものが殆どなのかな。
と言うことで、昨日の夜に問い合わせメールをしました。
本日、回答メールで、利用規則を改定する旨の返信があり、ROBOSPOTのHPでも改定内容が記載されましたね。良い感じに改定されています。
KONDOさん、対応早いです。
てなことで、KCB−2を使った2輪倒立ですが、そう簡単には立たないです。
ちゃんと、倒立振子用に関数作らないとだめそう・・・
KCB−2でこんなこと。
先週、KONDOのKCB−2をゲットしました。
こんなもの、作ってみました。
使ったもの
KCB−2 http://robot.tsukumo.co.jp/goods/4945984030055/
タミヤ ユニバーサルプレート http://robot.tsukumo.co.jp/goods/4950344700981/
タミヤ ダブルギヤボックス(左右独立4速タイプ) http://robot.tsukumo.co.jp/goods/4950344701681/
スタジオミュウ 50mmタイヤセット 3mm六角シャフト用(MYU-004) http://robot.tsukumo.co.jp/goods/4582193190042/702030099999900/
3軸加速度センサー http://akizukidenshi.com/catalog/items2.php?q=%22I-01425%22&s=popularity&p=1&r=1&page=0&cl=1
ギヤは、114.7:1で組み立てました。
3軸加速度センサーは、XYZ軸をそれぞれKCB−2のAD1、AD2、AD3に入力してます。
で、何をしたいかというと、2輪で倒立させえようとしています。
ちょっと、単純なプログラムで動かしてみたのですが、なかなか立たないですね。
Vカットデータ生成もOK。
おかださんのHPに、Vカットのガーバーデータも出力できるcamファイル公開されてますね。メールでも連絡いただきました。
当面は、Vカットする事はないと思うのですが、試してみました。
最初、どのようにするのか分からなかったのですが、Vカットしたい部分にWireで線を引きます。この線のレイヤは46 Millingで書きます。(おかださんのcamファイルで、このレイヤを使うように定義されてました)
私が使っているガーバーデータの表示ソフトは、DynaViewerというので、P板.comの推薦ビュアーの最初の方に書いてあるものです。これ、ダウンロードするのではなくCD−ROMを送ってきます。
何も指定しないと、レイヤーの色が適当に割り当てられるようで貼り付けた画像では見にくいかと思いますが、青の縦線がVカット部分です。
Eagleで面付けできました。
先日、「Eagleで面付けできるのかな?」と書いたのですが、、「HPの手順載せます」と言うことでおかださんよりメールがありました。
で、昨日のおかださんのHPに載りましたね。ついでに、ONO−ONEになってる。
おかださん、ありがとうございます。
早速、やってみました。
ばっちりです。
やってみて、「この操作、普段使ってるな」。新規に部品を作成する時に、すでにある部品からシンボルなどを流用する時に、これと同じ操作してました。
パターについても同じでよかったのですね。
なぜ、面付けをやりたいかというと、私が基板を作る時は、サンハヤトの感光基板を使用しています。
で、小さい基板でも75X100mmあります。
作る基板のサイズはこれよりもかなり小さい事がほとんどなので、マスク作成は数枚出力したものを切り取り、テープでつないで複数基板を作成していました。
この方法だと、片面基板の場合は良いのですが、両面基板で複数基板となると位置決めにかなr手間がかかります。
今回、面付け方法が分かったことで、また色々基板作ってみようと思います。
参考になるページ発見
OLEDパネル直に制御する為に、基板作ったはいいけど、コントロールチップSEPS525のデータシート見てても、具体的にどのように制御してよいか分からない。
で、ネットで色々検索していたら、参考になるページを発見しました。
http://www.omniboard.be/projects/kit2/kit2.htm
OmniBoard KIT2で、dsPICで動かしていますね。ついでに、C328と言うシリアルJPEGカメラもつながっています。
写真のOLEDパネルを見る限り私のものと同じのようです。Eagleのデータやソースコードも掲載されています。ソースは、CCS用なので読み替えないといけませんが・・・
SEPS525は、パラレルでは18ビットでのデータ受け渡しが出来るのですが、このOLEDパネルでは8ビットまたは9ビットとなっています。
OmniBoard KIT2では、9ビットで使用していますが、私の4D SYSTEMSの基板を流用して作った基板では8ビットの配線となっているため、ソースコードを参考に試してみます。
初めての基板発注
前から、Eagleでパターンを作っていた物を、今回初めて発注しました。
P板.comに発注ましたが、Eagleのデータからガーバーデータに変換する必要があります。
変換方法は、P板.comのHPに手順があるので見ながら作業しました。
で、実際には一部修正がありましたが、無事発注完了。
Eagleを使っていて、実験用に小さめの基板が色々あり、自分でエッチングをする場合、複数のパターンを1枚の基板で作りたいと思っています。が、Eagleで面付けって出来るのでしょうか?
JiGoRoのおかださんとこで作っていた基板、Eagleのように見えるのですが、どうやったのだろう?
OLEDパネル実験基板
早速、OLEDパネル実験用に基板を作成してました。
先日購入したAKI-7144で動かしたかったのですが、まだ理解できていないのでサンハヤトのMB-R8C29をつなぐことにしました。
一応、配線は出来たのですが、これで良いのかもう少し確認しようと思います。
このOLEDパネルに使用されているコントロールチップはSEPS525で、これから格闘になりそうです。
あけましておめでとうございます。
本年もよろしくお願いします。
年末からμOLEDの基板についているICを取り外そうと苦戦していました。
半田ごてに真鍮板で作ったアダプタを付けて加熱してもなかなか取れません。
で、ヒートガンの先にアルミ板で作ったアダプタを付けてやっと取れました。このヒートガン、温度がかなり上がるので、コネクタの一部を溶かしてしまいましたが、何とかなりました。
最初、プログラムの書き込みが出来ず、あれこれやってみて、結局、シリアルUSBアダプターがPC側でポートN0誤認識していたためで、ここを正常に認識できるようにして書き込みOK。
このCPU、今まで使っていたR8Cよりクロックが早く出来そうなのとI/Oが多く使えるので、色々と試してみようと思います。
取り外したICの裏を見たら、半田ごてで取れないのに納得しました。
結局、何をしたいのかというと、OLEDパネルを他のCPUで動かそうと考えています。で、基板にはOLEDと接続するコネクタと昇圧回路があるのでこれを使って試そうと言うことです。
現在、ICを取ったところから配線作業中です。
こんなことやってます
この前の日曜日に、小物パーツを購入したついでに、Vstoneのビュートチェイサーと秋月のAKI-7144のベースボード基板付きのものを購入。
秋月の秋葉原では、ビュートチェイサーとVS-WRC003がありました。ここで販売しているとは思ってなかったのでつい購入してしまいました。
一緒に入っていたコントロールソフトで動作させてみて、私ならCでプログラム作った方が良さそう。
AKI-7144のベースボード基板付きですが、動作確認に手こずったのですが、動作もOK。
最初、プログラムの書き込みが出来ず、あれこれやってみて、結局、シリアルUSBアダプターがPC側でポートN0誤認識していたためで、ここを正常に認識できるようにして書き込みOK。
このCPU、今まで使っていたR8Cよりクロックが早く出来そうなのとI/Oが多く使えるので、色々と試してみようと思います。
モーター制御基板。
最近、こんなこともしてました。
R8C/29を使って、ダイセンのギヤモーターを回すための基板を作って、PWM制御のプログラムで動かしていました。
そうこうしているうちに、KONDOからKCB−2が発売されますね。実験だったらKCB−2でやってみた方が手っ取り早いかな・・・。
いろいろ基板作成。
まずは、R8CやμOLEDに使用している秋月のUSB-シリアル変換基板の改造。大したことではないのですが、もともと下側に付いている24ピンの端子を取っ払って、基板の上側にピンヘッダを取り付け、ジャンパーピンのところも取り外して直にハンダ付け。
で、送受信LED、μOLED用のリセット回路、接続端子を付けた基板を作成しました。チップ部品を使ったので小さく出来ました。
もう一つは、スイッチサイエンスで購入してあったコイン型リチウムイオンポリマー電池用の充電基板作成。
この電池、CR2450サイズで3.7V、200mAh。ロボットの無線コントローラなどに使用できないかなと購入していました。
この電池は、一般のコイン型リチューム電池よりサイズが大きいので、CR2450用コイン電池ホルダを使用しました。
ただ、このホルダはプラス側のみで、マイナス側は基板側のパターンに接触させることになるのでどのように作ろうか考えていたのですが、結局、ユニバーサル基板で作りました。USB電源から充電します。
μOLEDの表示パネル到着。
μOLED-160-G1を購入した時、表示パネルにひびがあり、新しいものを送ってもらっていましたが、ひびの入ったものはコマンドの実験等に使用したいと言うことで頂いてありました。
で、交換用に表示パネルのみ注文できないかをすぐに確認したところ、仕入れルートがないのか注文できませんでした。そこで、他で扱っているところを探して取寄せてもらいました。注文から1ヶ月ちょっとかかりましたが手に入りました。
基本的には同じですが、端子部分がもともとのは金メッキでしたが、ここは銀色なのでハンダメッキ???
それはともかく、動かしてみてOKでした。
μOLEDのその後の作業状況です。
μOLED-160-G1は、4DGL Workshopというプログラム開発環境でオリジナルのプログラムを作ることができます。普通のキャラクタLCDディスプレイの延長上として使うにはちょっともったいない感じがするので、何か出来ないか考えていました。
で、前にKCB−1でTrevaの処理をしましたが、このμOLEDで出来ないだろうかと試しています。
KCB−1でやった時は、Trevaからの信号をKCB−1で取り込み、シリアル経由でPCに転送してPC側で表示するものでしたが、せっかく表示部分があるので、Trevaからの信号を直接表示できないか試行錯誤中です。
KCB−1でやったのと同じくシリアルで転送するプログラムなら何とかなるのですが、表示するとなるとYUVからRGBに変換しなくてはならない。色々調べていたのですが、このμOLEDのメモリはRAMが456バイト、コードサイズ(プログラム領域?)が8192バイトと少ない為、1フレーム分のデータを配列に入れて処理することが出来ません。処理方法を試行錯誤中です。
いろんな作業、停滞中。
ここのところ、A05に関することや、ロボット関連の実験、作業が停滞しています。
いろんな事をしているので、頭の中が混乱もしている。
で、自分の作業はあまり進んでいませんが、他の方の進捗も気になっています。
今、気になっているのは、おかださんの所のJiGoRoの足裏センサーとIPPEI さんの所のカメラ関係。
JiGoRoの足裏センサーは、どのように処理するのかが気になっているところ。A05の足裏につけた浅草ギ研の感圧センサーも中身はフォースセンサーでこれを上位CPUでADの入力出来ますが、ロボットの姿勢制御等にどのようにフィードバックさせていくかと言うところでが今後の課題です。
IPPEI さんの所のカメラ関係ですが、私はすでにTCM8230MDとTCM8240MDが手元にあるのですが、実際にこのCMOSカメラから画像を取り込むにはFPGAとかフレームバッファーは必要なんでしょうね。いきなりCPUで取り込むのは無謀でしょうか?
それとは別に、裏ではEagleを使って、ロボットとは関係ないですが基板のパターンを作成しています。で、Eagleからガーバーデータに変換まではしてみたのですが、これの確認が出来ずにいました。で、DYNAVIEWERというガーバービュアーを入手したので色々と試している最中です。
CMOSカメラ用電源のテスト。
以前購入していた、TCM8230MDとTCM8240MDと言うCMOSカメラ用の電源をテストしました。
TCM8230MDは、2.8V(or2.5V)と1.5V、TCM8240MDは、2.8V(or2.5V)と1.6Vの電源が必要です。
で、今回はTCM8240MD用に2.8Vと1.6Vを生成。前にHPに書いたのでは、LM380を使ってみようかとしていましたが、もっと小形のものを探していました。
東芝でいいのがあったのですが、個人で手に入れるのは難しいので、結局、MIC5205を使用しました。
2.8VはMIC5205の2.8Vタイプのもの、1.6VはMIC5205の可変出力タイプで抵抗2本で1.6Vにしています。
写真では、手前が2.8V、中央が1.6V、奥は部品の取り付け間違ったのでそのまま(未配線)です。
リセット回路。
現在、PCとμOLEDとの接続は、秋月で購入したFT232RL USBシリアル変換モジュールを使用しています。
通常のシリアルで制御する場合は、Vcc、GND、TXD、RXDの接続で動作させることが出来ます。
4DGL Workshopで作成したプログラムを動作させるには、PmmC-Loaderでファームウェアを書き換え、4DGL Workshopで作成したプログラムをダウンロードします。
で、PmmC-Loaderと4DGL Workshopですが、μOLEDモジュールをリセットするためにDTRを使用していました。
最初、秋月のUSBシリアル変換モジュールからμOLEDモジュールに直接接続したのですがうまくいかなかったので調べてみると、μOLEDモジュール側で3.3Vにプルアップしているようです。
そこで、コンデンサ、抵抗、トランジスタの部品3つで接続し、今のところ問題なく動作しています。手動でリセットしなくて良いのでらくちんです。
OLEDのサンプルプログラム。
昨日、お待ちかねのOLEDが届きました。
今までは、破損品で色々と動作させていたのですが、表示部分にひび割れがある状態ではコマンドは受け付けているのは分かるのですがどのように表示されているのかが分からない状態でした。
このOLED、購入時の状態では、4D-Serial-CommanderとかGraphicsComposer、PCからのシリアルコマンドで動作できます。
で、今回は、4DGL Workshopで作成したプログラムを動かしてみました。
これを使うためには、ファームウェアの書き換え、プログラムのダウンロードが必要になります。
ここでちょっと問題発生。と言うのは、購入時の状態では普通にシリアルからのコマンドで動作可能ですが、ファームウェアの書き換えとプログラムのダウンロードでは、リセット信号のタイミングが関係しているようです。
とりあえず、ダウンロードの時、手動でリセットをしてどうにかなってますが、追加の回路を考えないといけないですね。
4DGL Workshopにあったサンプルプログラムをコンパイルして動作させたのが以下の動画です。
色合いとか、ちらつきはカメラとの相性???。実際の表示は、かなりきれいです。
有機ELモジュールの分解。
分解といっても、有機ELのパネル部分とコントロール基板をはがしただけです。
結構強力な両面テープで張り付いていたので、はがすのが大変でした。
私が購入したものは、4D Systemsの?OLED-160-G1というもので、160x128の解像度があります。
私、勘違いしていたみたいで、パネル(写真の左側)部分だけでも使えるようです。パネルの表示部下の横長長方形のミラーみたいのがOLEDのコントロール用のICのようです。
で、基板の方は、GOLDELO-GFXというグラフィックプロセッサーで、点描画、線描画などなどのグラフィック関係の処理を行うもので、IOも2ピン付いています。シリアル通信やmicroSDなども使用できます。
4DGL Workshopという開発環境を使用することで、IOの制御とかグラフィック制御など出来るようです。IOの1チャンネルはADも出来るようです。
他のモデルのuOLED-32028-P1Tでは、解像度が320x240でグラフィック制御はPICASO-MD3となっています。で、IOもかなり多くなってますね。
これ単体で、ロボットのコントローラも出来てしまうのではないかな・・・
現状はまだひび割れ状態のままで、もうそろそろ1週間たつので今週中には届かないかな・・・
破損した有機ELの表示。
昨日、注文していた有機ELが届きました。が、パネル部分にひび割れ。
がっくりです。
で、注文したところと、メールでやり取りして、対応して頂くようになりました。
破損品は、送料着払いでで返送か差し上げるということで、頂くことにしました。
私が注文してすぐ、在庫切れの表示になっていたので、結局は取り寄せで1週間程度後になるようです。
親切な対応で、良かったです。
注文したところは、スイッチサイエンスで、SparkFun社の商品などなど色々と扱っています。
ストロベリー・リナックスでもSparkFun社の商品は扱っているのですが、ストロベリー・リナックスではない物があり、また何か購入しようかなと思います。
有機ELを注文してから、動作させる環境や、R8C/29で動作させるためのプログラムのヘッダファイル作成などしていたので、ちょっとへこんでますが、破損したこのパネルに通電してみました。
すごい!!
パネルが割れているので、めちゃくちゃな表示ですが、輝くような表示。きらきらしてる。
これ、かなり良いです。今後の高解像度化とか低価格化とか期待します。
ちゃんとした物が届くのが待ちどうしいですが、今パネルでコマンドのテストとかしようと思います。
KCB-1でLCD表示のファイル公開。
まずは配線ですが、前にも書いたようにDB7、DB6、DB5、DB4、RS、RW、Eの7本とバックライトのON・OFF用の1本です。
PIO7に接続しているのは手元にあったデジタルトランジスタで、バックライト用のLEDのON・OFFに使用しています。スイッチングとして使用しています。ここにつけている100オームの抵抗は、20〜100オーム程度でOKです。
プログラムですが、pio_lcd.hとKCB_1_LCD.cを作成しました。pio_lcd.hは、LCD表示用の関数を用意しましたが、すべてのコマンドを作ったわけではないので必要なものは追加してください。基本的には、座標指定の文字列表示は出来るようになっています。
KCB_1_LCD.cは、pio_lcd.hを使用したサンプルです。LCDのイニシャライズ後、バックライト点灯、文字列表示、表示クリア、文字列表示、バックライト消灯と動作します。
LCDの表示プログラム自体は、Webではいろんな方が公開されているので、不足分はそれらを参考に書き換えてください。
今回作成したプログラムです。 → pio_lcd.h KCB_1_LCD.c
KCB-1でLCD表示。
今、色々とやっていて、デバッグでの使用も兼ねて以前からやろうと思っていたのが、KCB-1のPIOにLCDを付けての表示。
使用したLCDは、秋月で発売している小型のものです。
KCB-1のPIOは、8端子分しかないので、LCDの接続は4ビットモードで使用します。DB7、DB6、DB5、DB4、RS、RW、Eの7本の配線が必要なのですが、1本余るので、これはLCDにトランジスタを1つ取り付けてバックライトのON・OFFが出来るようにしました。
まだヘッダファイルにLCD用の関数を書いているので、もうちょっとまともになったら公開しますのでお待ちください。
MB-R8C29をちょっとだけ改造。
MB-R8C29に付いているLEDは、CPUのP1_1に接続されていますが、この端子はAN9で使用したいのでちょっとだけ改造しました。
この基板は、LEDを切り離せるようパターンが作られていて、JP3のパターンカットします。で、LED側をCPUのP1_6に配線しました。
これで、AD4ch使用可能になります。AD部分と16進スイッチ、UART0の配線を完了してプログラム作成です。UART0はICS用に使用します。
前に作ったプログラムを元に、LEDはポートを変更し、AD部分と16進スイッチの部分は前に作ったものを使用で動作OKです。UART0をICSとして使用するのですが、ここはKCB-1のSDKからインクルードファイルを拝借してR8C/29で使用できるように修正。
で、前回は試していなかったUART1部分も動作させてみました。
UART1は、1端子で送受信する設定と送信と受信を別端子にする設定があります。後者の別端子で使用することにし、SFRを設定し動作確認OKです。関連するSFRが数箇所あり見つけるまでちょっと手こずりました。
具体的には、P3_7をTXD1としP4_5をRXD1として以下のように設定しました。
u1pinsel = 1; // TXD1端子切り替えビット(1:UART1を使用)
uart1sel1 = 0; // TXD1/RXD1端子選択ビット
uart1sel0 = 1; // TXD1/RXD1端子選択ビット
txd1sel = 1; // ポート/TXD1端子切り替えビット
テスト用のプログラムでは、スイッチの値とADの値をUART1から送信するようにしています。ターミナルソフトで確認できます。
ICSのところはどうやって確認しようかと考えたのですが、結局、サーボをつないで動作させてみました。実際には、ここをKCB-1と接続してAD値を送信しようと考えています。