Nov11’s diary(自宅での開発環境作り )

3Dプリンタと切削加工機で工作した事をアップして行きます

ロボットアームを3Dプリンタと切削加工機で自作する(トルク不足対策)(その1)サーボモータ再選定

8チャンネルのロボットアーム用サーボコントローラが完成したので、トルク不足対策を行う事にした
まず最初に、ロボットアームの握力アップから行う事にした
手から作成して行く理由は、台座部分から作成して行くと、持ち上げられるトルクが決定してしまいトルク不足が判明したした時点で全てをやり直す事になってしまうので、全体像(2016年03月08日のブログ)をデザインして先端部分から作成し重量から必要なトルクを算出しながら必要に応じて修正を掛けて行く作戦をとる事にした。今度は上手く行く事を祈りつつ作成して行こう!
んで、今まで使っていたサーボモータE-Sky500をSG92Rへ変更する事に、SG92Rは、E-Sky500に比べ、値段は半額(500円)でトルクは2.5倍(2.5kg)で回転角は3倍(180度)と、とってもお得なサーボだ

2016年03月06日のデザインをSG92R様に修正して動作させた結果、重量は50gで、しっかりがっちり挟んでくれる様になった


[作成したロボットアームの手の部分の写真]

f:id:Nov11:20160511000155j:plain

一見以前作成した物と大差無い様に見えるけど、全部印刷する事になってしまった...

[ロボットアームの手の部分の3Dイメージ]

f:id:Nov11:20160510234224j:plain

なお、ブログの内容を参照して実行した結果に責任は負いかねますので、ご了承下さい

 

ロボットアームを3Dプリンタと切削加工機で自作する(サーボコントローラ作成)(その15)サーボコントローラ完成!

8チャンネルのロボットアーム用サーボコントローラが完成しました!
前回作成したサーボモータ制御ボード(2016年04月25日のブログ)液晶付きコントローラ(2016年01月30日のブログ)を使用し、液晶モジュールを電圧電流モニター用に作成したSC1602(2016年04月08日のブログ)に変更した物で構成し、接続はI2Cで行う事にした
しかし、これを作成するのに10日も掛かってしまった...MPLABで作成していたフレームワークをMPLAB Xに移植するのに悪戦苦闘して7日間も掛かってしまった...(とても疲れましたです)
MPLAB版のフレームワークを自作した際に、デバイス制御と通常処理を分離して作成していたつもりが、いつの間にか高速化を理由に分離されていない部分が多数存在していた為に時間が掛かってしまった
MPLAB XのCode Configuratorがデバイス制御を行う部分を自動生成してくれるので、今回のMPLAB X版フレームワークは、これを包括する様にし、デバイスとの分離を行える形で作成できたので、MPLAB版の時の様にレジスタ設定に時間が掛かる事も無くり自由にピンアサインを設定出来る様になった
その上で、MPLAB XのPin ManagerとCall Graphを使用した図的な資料を作成する事も可能となった

また、プログラムの方も、ガンチャートベースのアローダイアグラムから多次元マトリクスの生成を行い抽象化したオブジェクトをマトリクスにマッピングする形にしたので、プログラムデザインを作図すればコーディングは機械的に出来るので、ハードウェアやソフトウェア経験の無いエンドユーザーとの打ち合わせる時でもすべて図的な表現で細部まで意思疎通を行った上で作成でき、後々のメンテナンスが作成者以外でも容易に出来る環境が整った事になる

しかし、ガントさん(Henry Laurence Gantt)はやっぱり凄い!
100年前にガンチャートを作り出し、いまだに利用され続けているとは、凄いとしか言いようがない!
この発明のおかげで、工程管理からハードウェア、ソフトウェアデザインまで全て作成出来てしまう
本当に感謝ですね

[サーボコントローラの写真]

f:id:Nov11:20160504143653j:plain

[サーボコントローラの写真]

f:id:Nov11:20160504143741j:plain

8チャンネル分の制御角をHEXコードで表示し、アナログジョイステックの左右でチャンネルを選択し、上下で値を変更出来る様にしました
速度設定や台形制御の設定は後日対応する予定です

なお、ブログの内容を参照して実行した結果に責任は負いかねますので、ご了承下さい

 

 

ロボットアームを3Dプリンタと切削加工機で自作する(サーボコントローラ作成)(その14)駆動電力40W

サーボモータ制御ボード改40W(ワット)版が完成しました!
ロボットアームで使用するサーボモータの電力測定を行った結果40W(5V×8A)程度必要な事が判明したので、以前作成した制御ボード(2016年02月25日のブログ)の見直しを行った
最初は、スイッチング電源を自作するか購入して作成するつもりだったが、少し高くつくので、お手軽簡単なACアダプタを採用する事にしたが、購入できるACアダプタのDCジャックの定格は4Aだった為に、サーボモータへの供給を4つにまとめDCジャックを2つから供給する形にデザインする事にした
ただサーボモータ8個で4A以内で動作させる場合も考慮して、ACアダプタ1個でも対応出来る様にもデザインし、駆動電圧が5V以上でも動作出来る様にもデザインしてみた
これで、今回作成するロボットアームを自作する為のボードがほぼ揃った
後は、ロボットアームデザインとプログラムデザインを進めて行けば完成するが、思った以上に大きな物になり自分だけでは管理が難しそうなのでRedmineさんやjenkinsさん等の力を借りて進める事にしよう

しかし、最初のサーボモータ制御ボードを自作してから2ヵ月!すぐに、このボードを作成するつもりだったが、ロボットアームを作成する為のテストツール(電圧電流モニター)に夢中になり過ぎて本来の目的を忘れてしまうと言う筆者の悪く癖が出てしまった
仕事の時でもちょくちょくあったのだが、目的達成の為の手段に夢中になり過ぎ、手段を追い求め手段が上手く行った事で満足し、挙句に本来の目的をあっさりさっぱり忘れてしまう本末転倒的な悪い癖だ
ん~、いつになったらこの悪い癖は治るのだろうか..
だがこれで、通常のPWM出力ICと違い、このサーボコントローラは、MCUを使用しインテリジェンス化したので、複数のサーボモータの同期や連動を取らせる事も可能となった
[サーボモータ制御ボードの写真]

f:id:Nov11:20160425033758j:plain

   (上記の写真は、10Wと2.5Wのサーボモータを動作させている時の写真です)

なお、ブログの内容を参照して実行した結果に責任は負いかねますので、ご了承下さい

 

開発環境ツールを自作する(電圧電流モニター作成)(その7)電圧電流モニター完成!

BluetoothのUART送受信をI2C送受信に変換するボードが完成しました!
現時点では、電圧電流モニターとの通信速度は約400kbpsで通信出来て、パソコンには9600bpsで送受信しているけど、PIC24FのI2CとUARTの通信最大速度は、900kbps(921600bps)なので、上手くゆけば小さめの動画も伝送出来るかもですね
I2Cなので複数接続すればBluetooth間での通信を利用したネットワークの構築も出来そうです

[BluetoothでI2C接続写真]

f:id:Nov11:20160420114307j:plain

[電圧電流モニターの受信データ]

f:id:Nov11:20160420114355j:plain

こうなってくると本体でロギングする為のメモリーボードや時間管理出来るRTCボード(PIC24Fに内蔵されているけどバックアップが大変なので)も欲しくなってきますね
後、パソコン側も受信データをデータベースに格納したりグラフ表示も出来ると便利かも...
ん~、全部作るとなると1週間ぐらいはかかりそうだけど、ロボットアーム作りを再開するか、このまま進めるか悩むところだ

なお、ブログの内容を参照して実行した結果に責任は負いかねますので、ご了承下さい

 

開発環境ツールを自作する(電圧電流モニター作成)(その6)/PICを使用して開発する事にした(シリアル通信/I2C通信)(その4)

電圧電流モニター通信モジュールをBluetoothでI2C接続方式の形式で自作する事にした
最初は、UARTを2チャンネル使用してPICをマルチ接続する方式で考えていたのだけれど、このやり方だとPIC24Fのピンを4本使用する事になりI/Oの残りが15本(28本中9本はI/Oに使用できない)になってしまうし通信速度も最高で100kbps程度なのでI2C接続を選択する事にした
ただ、BluetoothドングルをPIC24Fで制御する訳ではなく、数年前に購入していたマイクロテクニカさまのBluetoothモジュール(RBT-001)を使用した簡単方式で行う事にした
RBT-001はUARTしか無いので、PIC24Fを経由してI2C変換する事になるが、PIC24FのI2Cスレーブデバイスが作れる様になっておきたかった事もあって、この方式にした
全体の接続は、PC<=>RBT-001<=>PIC24F<=>電圧電流モニターとなる
それにしても今回のI2Cのスレーブ側のプログラムには苦労してしまった
I2Cのマスター側が悪いのかスレーブ側が悪いのか判断が付かずに双方のプログラムをグルグルと確認しながらネットでググりながらの日々が数日続いて、ネットのプログラムを流用しようかと考えたがMPLAB X版のサンプルは見つからないし、MPLAB版はサンプルプログラムだけあって割込みの処理の中などで無限ループになる可能性がありそうな予感のする物ばかりに思えたので、流用する事は諦めマニュアル片手の手探りとなってしまった...が、分かってしまえば「えっ!たったこれだけの事!」と思わず叫んでしまうぐらい単純な事だった
んで、全体を以下の手順で構築し動作確認を行ったところ、おぉ~上手くゆきました
苦労はしたが、これでI2Cデバイスを自由に作成できる奴になれました!

[作成手順]
1)RBT-001のマニュアルを以下のURLからダウンロードする
  http://www.microtechnica.tv/support/manual/rbt-001_man.pdf
2)パソコンにRBT-001を認識させる
  RBT-001に80FG990アダプタをを接続し、ブレットボードに配置する
  マニュアルに従い、パソコンにドライバーをインストールする
3)RBT-001動作確認
  FTDI社のFT232RとRBT-001をブレットボード上に配置しTera Termで通信出来るか確認する
  FT232RとTera Termのインストールは、PICを使用して開発する事にした(UART通信)を参照する
4)PIC24FJ64GA002とのUART接続
  PICを使用して開発する事にした(UART通信)を参照しPICと接続する
5)I2Cスレーブを追加する
  PICを使用して開発する事にした(I2C通信)を参考してI2Cスレーブを追加する
  I2Cスレーブの設定は、全てにチェックを入れてスレーブアドレスを設定する
  Code Configuratorでプログラムが自動生成されるが、EEPROM仕様になっているので一部修正する
  修正する個所は、mcc_generated_filesフォルダーのi2c1.cファイル中の_SI2C1Interruptと
  I2C1_StatusCallbackを今回の仕様に合わせて修正する
  注意点は、データ受信時の処理に時間が掛かり過ぎるとマスターが異常と判断しNACKを返して
  処理を中断してしまう事だ
  なので、I2Cマスターからの受信割込み時に複雑な処理をせず、バッファーに格納しておいて
  定周期でバッファー監視を行い格納されていれば処理を行う様にコーディングする
6)I2Cマスターを作成する
  PICを使用して開発する事にした(I2C通信)を参考にして作成する
  使用する関数は、mcc_generated_filesフォルダーのi2c1.cファイル中のI2C1_MasterWriteと
  I2C1_MasterReadを使用して送受信する

[BluetoothでI2C接続写真]

f:id:Nov11:20160417184359j:plain

なお、ブログの内容を参照して実行した結果に責任は負いかねますので、ご了承下さい

 

開発環境ツールを自作する(電圧電流モニター作成)(その5)液晶表示用信号分配ボード完成

電圧電流値の液晶表示用信号分配ボードが完成しました!
前回作成した液晶表示(SC1602版)と信号分配ボードも組み込んで正常動作する事を確認したので、ブログにアップする写真を撮っていたら絵面が汚い事に気付いた
ケーブルだ!各基板を結ぶケーブルの色や長さがまちまちなので、とても汚く見えてしまうと思いケーブル作成を行いスッキリな感じになったので、良し!と思いブログにアップする写真を撮っていたらサーボモータの駆動電圧や電流は分かるけど、サーボモータ制御ボードの駆動電圧や電流が記録に残らないのは何だかなぁ~と、だからと言って同じのを作るのも微妙なので別の方式で作成する事にした
要求スペックは電圧や電流の変動が少ないと言う条件付きで、電圧や電流を測定してくれるICが無いかググるとお手頃なICがあったのでそれを採用してボードを作成する事にした結果、やっと出来ました!
現時点でのスペックは、1チャンネルは、電圧電流変動をレベルメータやオシロスコープでモニター出来る様になっていて、もう1チャンネルは、高速でモニターは出来ないけど、コンパクトに作成出来て数百ミリセコンド間での電圧電流値の平均を測定できるようになった
これでテスト状況などの写真を撮れば自動的に動作状況も記録に残す事が出来る
後は、無線モジュールを組み込めば良い感じのデータロガーになりそうだ
[電圧電流モニターの写真(上)]

f:id:Nov11:20160413091722j:plain

液晶の上段が、サーボモータ制御ボードの駆動値で、下段がサーボモータの駆動値が表示されています

[電圧電流モニターの写真(横)]

f:id:Nov11:20160413092131j:plain

液晶表示モジュール下側の白いユニバーサル基板に無線モジュールを搭載する予定

なお、ブログの内容を参照して実行した結果に責任は負いかねますので、ご了承下さい

開発環境ツールを自作する(電圧電流モニター作成)(その4)液晶表示部(SC1602版)完成

電圧電流モニターの液晶表示(SC1602版)が完成しました!
んで、レベルメータに引き込んでいる電圧電流信号をブレットボード経由で液晶表示モジュールにも渡すようにしてプログラムを作成して書込みを行うと、おぉ~!上手く表示してくれました
液晶表示モジュール経由にしたので、信号変動があるかもって思っていたけどテスターで測定した値と全く一緒の値を表示してくれたので安心して使えそうです
後は、ブレットボードで作成した横取り回路をPCB化すれば、モニター部分の完成となる
ん~、今回はMCUを使わずに作成しようとしたけど、結局使ってしまった...
[電圧電流モニターの液晶表示写真]

f:id:Nov11:20160408194306j:plain

ケーブルが凄い事になってますが、一応ちゃんと動いてます

なお、ブログの内容を参照して実行した結果に責任は負いかねますので、ご了承下さい