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

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

開発環境ツールを自作する(電圧電流モニター作成)(その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

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

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

 

開発環境ツールを自作する(電圧電流モニター作成)(その3)液晶表示(SC1602版)3Dイメージ

電圧電流モニターで電圧と電流の数値表示が出来る様にする為にLCDを追加する事にしたけど、以前作成したL2034D(2016年01月29日のブログ)では、大きすぎる上にお値段高めなので、表示できる文字数は減るが安価なSC1602を使用してLCDモジュールを自作する事にした
SC1602は、16桁×2行なのだが、電圧と電流値を表示するだけなので表示文字数も問題ないし、価格も700円(バックライト無しは500円)と安い上に、制御手順もL2034Dと同じなのでプログラムがそのまま流用出来ると言うソフトウェア的にもハードウェア的にもとても嬉しい製品だ
んで、いつも通りにDesignSpark mechanicalを使ってデザインしてみたがLCDが基板から10mm浮いてしまうので、固定部品を3Dプリンタで作成する事にしようと思う
スペックは、16文字×2行表示、A/Dが6チャンネル、通信がUART/I2C、ブザー出力になった
後は、電圧電流モニターの出力信号を取り込むボードを作成すれば、電圧と電流値が表示できる事になる

[完成予想3Dイメージ]

f:id:Nov11:20160407133737j:plain

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

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

調整とかで時間が掛かってしまったけど、電圧電流モニター&サーボモータ制御ボードが出来ました!
時間が掛かってしまった理由は、ボードを機能単位で分割したので接続ケーブルの接触不良などで不思議な現象が起きてケーブルによるものだとは判断出来なかった為だった
やはり枚数を減らすべきかと思ったが、機能分割している事による機能変更に対応しやすい利点が大きいし、データ化しているのでPCB化の際に必要機能を合体出来るので当面はこのスタイルで行こうと思う
と反省は置いといて、このボードにより瞬間的な電圧電流変動も確認出来る様になったのが嬉しい
スペック的には、電圧は0~10V、電流は0~5Aの範囲で測定出来て、レベルメータレンジは、最大値を調整可能にデザインしたので、一目盛りを0.5V単位や0.1A等にも出来るし、オシロスコープに接続すれば画面でモニターする事も出来る
またサーボモータ制御ボード(2016年03月21日のブログ上の回路図を基板化した物)と併用すればサーボの挙動(異常時含む)時の電圧電流変動をモニター出来る
その上に、電源コネクタを変更すれば、電圧100V電流10Aまでの測定も可能になる
ん~、なかなか良いものが出来たのではないかと思ってみたりしてみる
だが、やはり数値表示が無いのが残念なので、表示機能と遠隔でモニタ出来る通信機能も追加すれば、ちょっと自慢できる物になるんじゃないかなぁ~と思うので機能追加を行おうと思う

[電圧電流モニター写真]

f:id:Nov11:20160406093429j:plain

上記写真は、サーボモータを5Vで駆動している時の写真で、電圧レンジは1V、電流レンジは0.25Aとなりますが、サーボモータが動作していないので、電流モニタの表示が消えています

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

 

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

ロボットアームを自作する為に、オシロスコープ用電流プローブ(2016年03月16日のブログ)をブレットボード上に作成したままで、ロボットアームのデザインを進めていたのだが他のテストを行わなければならなくなったので、ブレットボードをあける為にPCBを自作する事にした
電圧電流モニターのボードは、電流電圧変換→信号増幅→フィルタ→ピークホールド→レベルメータの5種類で構成する事にしてPCBデザインを行ったが意外と苦労して1週間近くかかってしまった
が完成すれば、フィルタボードの出力にオシロスコープを接続するとオシロスコープ用電流プローブとしても使用できるし、ピークホールドの出力を電圧電流値を共に最大5V出力に調整する事も可能にデザインしたので、MCUを接続すればロギングする事も可能になるので、これからの季節に重宝する太陽電池パネルのデータロガーとしても使えそうな便利ツールになりそうだ
取りあえず電流電圧変換と信号増幅増幅を組み上げてテストした結果、なかなか良い感じで動いてくれた
後は、フィルタボード、ピークホールドボードとレベルメータボードの3枚組み上げれば完成となる

[作成途中の電圧電流モニター写真]

f:id:Nov11:20160402144527j:plain

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