PICkit3で書き込みできない
(2016.07.14)
Code Configuratorが生成したコードをコンパイルしてPICkit3で書き込もうとしたのですが、Vddのオーバーカレントで書き込みシーケンスが進みません。orz
Heater_ControlerとSolder_Controlerを組み立てたときは、問題無かったのに何故だ?(<==実はたまたま上手くいっていただけだった)
組み立てている3セットのうち、1セットだけは書き込み出来ました。
???
Solder_Supporterの回路はこんな感じです。
5V電源を外付けしてみた(<==これが良くなかった)のですが、回路に異常な電流が(500mAくらい)流れます。シリーズ抵抗を入れてVddを計ると0.8Vしかありません。
電流が流れる場所を探るため、組み立てた配線を外すことにしました。
目星を付けたVdd周りの配線を外すと・・・
ビンゴ~
PICkit3で書き込み出来るようになりました。デバッガを起動するとブザーが鳴りました。COG1、PWM3、Timer2のデフォールト動作と思われます。
外したVddラインの先にあるのは、AC直結の電源回路です。PICkit3を接続するときはACラインは外してあるので、気にしていなかったのですが・・・
まじまじと回路を眺めて、不具合箇所を探しました。整流ブリッジかツェナー・ダイオードが怪しいと思ったのですが・・・(<==まだ気がつかない)
先ずはツェナー・ダイオード(<==簡単に外せる)を調べてみることにしました。
ビンゴ~
ツェナー・ダイオードを外すとVdd周りの配線を元に戻しても、PICkit3で書き込み出来ました。
不具合箇所はツェナー・ダイオードで間違いありません。でも何時壊れた?
あ~っ!(<==やっと気付いた)
(1)ツェナー・ダイオードはVddにつながっている
(2)ツェナー電圧4.7Vに対してPICkit3の供給電圧5.0V
==> PICkit3が数10mA電源供給しても4.7V以上にならない
==> PICkit3でオーバーカレント
(3)5V電源に接続したとき500mAくらい流れた
==> 耐電力500mWのツェナー・ダイオードで2W以上の電力消費
==> 熱破壊
(4)シリーズ抵抗を入れて回路のVddを計る
==> 壊れたツェナー・ダイオードで0.8Vまで電圧降下する
ツェナー・ダイオードを交換し、PICkit3の供給電圧を4.625Vにして、
ようやくトラブル・シュートが終わりました。
やれやれ
Solder_Supporterを作り始めた
(2016.07.13)
久しぶりのブログ更新です。
以前制作したHeater_Controlerと Solder_Controlerを一つにまとめた、Solder_Supporterの制作を開始しました。Heater_Controler基板と Solder_Controler基板を組み合わせて一つのケースに収める計画です。
久しぶりにMPLAB Xを起動したら、”Updateプログラムがある”と言うので早速MPLAB XをUpdateすることにしました。2016/06/23にリリースされたMPLAB X(3.35)です。
3.35になってアイコンが変わりました。
Code Configuratorも2.25から3.15にバージョン・アップしています。左のProject ResourcesとDevice Resourcesで項目を選び、Easy Setupタブで関連する設定値を操作します。この辺りの操作性はかなり改善されたように思います。
右上のパッケージ表示も判りやすくて良いのですが、Packageを選択するプルダウン・リストがなかなか見つからず(左下にある)、ちょっと戸惑いました。慣れれば問題無いのかもしれませんが・・・
これまで同様、Generateボタン(左上)をクリックしてコード生成します。目を引くのは中央のNotificationsで、クリックすると現在の状況に応じた設計上の注意点が示されます。
Device ResourcesからPWM3を選択し、Select a TimerでTimer2を選択すると以下のような表示が・・・
Module Types Description
PWM3 Warning Configure the Timer2 for module.
Device ResourcesからTimer2を選択し、PrescalerやPostscalerを設定すると・・・
Module Types Description
PWM3 HINT Postscaler setting does not affect PWM module.
デバイス・マニュアルを調べると、Timer2のPostscalerはTMR2割込フラグだけしか影響しないことが判りました。
Prescaler1:4、Postscaler1:4と設定していたのをPrescaler1:16、Postscaler1:1と設定し直して事なきを得ました。このNotificationsはなかなかに優れものです。
(Postscalerを1:1にしてもコーション・マークが消えないのはちょっと惜しい)
ヘッダ・ファイルを含めると30個以上のファイルが自動生成されました。
パチパチパチ~
ここからSolder_Supporterの開発が始まります。
3軸ジャイロセンサ(L2GD20)が動き始めた
(2016.04.10)
以前、PICクラブで頂いたTQFPパッケージのデバイスを使って引き半田を練習しました。
あくまで半田付けの練習用と考えていたので、何だか判らないまま頂いて来たのですが、調べてみるとdsPIC33FJ64MC706(↓)でした。(ラッキー!)
http://www.microchip.com/wwwproducts/en/dsPIC33FJ64MC706A
これを、今回の倒立振り子ロボットのコントローラとして使用することにしました。
dsPICは初めてだったので、立ち上げに少し手間取りましたが、Explorer 16 Development Board用のSample Projectをベースに、なんとか3軸ジャイロセンサ(L2GD20 ↓)とI2Cで通信することができました。
http://akizukidenshi.com/catalog/g/gK-06779/
オシロジ410でモニタしたWHO_AM_I (0Fh)レジ読み取りの通信波形
最初に、WHO_AM_I (0Fh)レジを読み取って0xD4が返ってくることを確認し、続いてCTRL_REG1 (20h)に0x5Fを書き込んでデータ・レートを190Hzに設定し、OUT_X_L (28h)から6バイトを続けて読み取ると・・・
L2GD20が計測した3軸の角速度が読み取れました。
(パチパチパチ~)
作業は順調に進み、L2GD20の初期化手続きを整理して、角速度計測プログラムを書いたのですが、そのプログラムのデバッグで問題が発覚しました。センサを動かしても、計測データが変化しません。orz
初めて使うデバイスなので、何が起きているのか(<==どうであれば良いのか)判らず、センサを何度も動かしたり、設定を(あれこれ)変えたりしましたが、状況は全く変わりません。
で、ふと秋月のマニュアルを読み返したとき、次の一文に気がつきました。
『はじめにWHO_AM_I (0x0F)を読みます。正しく通信出来ている場合・・・』
WHO_AM_I (0Fh)レジの読み取りはL2GD20との接続確認のため(だけ)に行うものと思いこみ、初期化手続きから外したのです。それを初期化手続きに追加してみると・・・
ビンゴ~
計測データが変化するようになりました。
WHO_AM_I (0Fh)レジの読み取りは、単なる接続確認用ではなく、L2GD20の初期化シーケンスを開始する”呪文”だったようです。
やれやれ!
ASK通信を試してみた
(2016.03.29)
倒立振り子ロボットを作ってみようと考えて(<==妄想段階)います。
立つだけでなく、外部コマンドに従って自律走行するものを目指していて、そのコマンドを送受する仕組みとして、ASK通信を試してみることにしました。
使ったのはこれ(↓)です。
http://www.dx.com/p/mini-rf-transmitter-receiver-module-315mhz-wireless-link-kit-w-spring-antennas-for-arduino-413157#.Vvj3iEfNEec
<仕様>
transmitter module
- Working voltage: 3-12VDC
- Working current: 3.5mA
- Working frequency: 315MHz
- Transfer rate: 4.8kbps (max)
- Transmission distance: When the spring antennas are soldered to transmitter and receiver module and the power supply is 5V, the open area transmission distance can be increased to 40 meters.
- Antenna: You can use the wire whose length is 23cm or the spring antenna for 315MHz RF.
receiver module
- Operating voltage: 4.5 ~ 5.5VDC
- Working frequency: 315MHz
- Working Current: 1mA
送受信モジュールにヘリカル・アンテナを取り付けて実験を開始した。
受信モジュールの電源電圧が4.5VDC以上と記されていますが、Raspiから供給した3.3V電源でも問題なく動作しました。また、送信モジュールの動作電流が3.5mAと記されていますが、実測では7mAでした。奥に見えるのが送信モジュールでDATラインに矩形信号(CH0)を供給(黄色のワイヤ)して、手前に見える受信モジュールのDAT出力(CH1)をオシロジ410でモニタしました。
仕様には4.8kbps (max)と記されているが、8kbpsでも問題なく動作している。
こちらの方の実験(↓)によると、『送信モジュールのDAT入力がHiを保持しているときも、Lowを保持しているときも、受信モジュールにノイズらしき出力が現れる』ということなのですが・・・
http://www.geocities.jp/neofine9/work/modem2/modem2.html
送信モジュールのDAT入力をLowに固定したときの受信モジュールのDAT出力
同じくHiに固定したときのDAT出力
親族SNS管理人が使用したモジュールでは、送信モジュールのDAT入力がHiを保持しているときにやや大きなノイズが観測されましたが、Vdd/2を超えるようなものは現れませんでした。(受信モジュールの出力はDCカットされているのかも・・・)
送信モジュールのヘリカル・アンテナを外し、送信モジュールを別電源にして、通信可能な条件を探ってみました。
上の写真は送信モジュールに30cmの白いワイヤを取り付けたところ
送信モジュールのアンテナを外し、送受信モジュールを30cm離してみた
送信モジュールの向きを変えてみた
送信モジュールのアンテナを外しても30cm以内なら大丈夫そうですが、送信モジュールの向きを90度回転させると、信号レベルが下がりました。
送信モジュールのアンテナを外し、送受信モジュールを50cm離してみた
50cmまで離すとかなり厳しくなってきました。この状態で10cmのワイヤをアンテナ端子に接続すると信号レベルが(少し)改善し、ワイヤを30cmにすると問題ないレベルに回復しました。
50cmまで離して、10cmのワイヤを付けてみた
50cmまで離して、30cmのワイヤを付けてみた
矩形波を16kHz(<==32kbps相当)まで上げてみました。
矩形波16kHzのときの受信モジュールの出力波形
受信モジュールをプラスティック・ケースに入れてみました。
50cmまで離して、送信モジュールに30cmのワイヤを付け、受信モジュールをプラスティック・ケースに収めた時の受信モジュールの出力波形
親族SNS管理人の得た感触
(1)送受信モジュールにヘリカル・アンテナを取り付けた状態なら、数mの距離(<==未確認)で9600bpsの通信が可能
(2)送信モジュールのヘリカル・アンテナを外しても、50cm以内なら通信可能(ただしロジック判定の閾値を操作する必要がある)
(3)送信モジュールに30cm程度のワイヤを接続すれば、50cm以上でも通信可能(ただしワイヤの配置に留意する必要がある)
さて、これをどのように使えば良いのか?
悩ましいところです。
ーーーーーーーーーーーーーーーーーーーーーー
追記(2016.03.30)
使用したASK通信モジュールは技適の認定を受けておらず、あくまで実験的な試みです。安易な利用を推奨するものでは無いことをご承知おき下さい。
アダプター基板の設計が固まった
(2016.03.03)
二転三転していたオシロジのアダプター基板ですが、DCアンプを止めて、ゲイン可変のACアンプを(二回路)設けることにしました。
トリマでゲイン調整する方式は(固定ゲインを切り替える方式よりも)簡便で使い勝手も良いのですが、計測した波形の振幅電圧を求めるには、基準信号と比較する必要があります。まぁその辺りは『運用次第』と割り切ることにしました。
<回路図>
<基板パターン>
デザイン・ルール・チェックを終え、ネットリストの照合も無事終了しました。
シルクとレジストの干渉チェックが終わったら、いよいよ基板を発注します。
今回はELECROWを試してみようと考えています。
www.elecrow.com
さて、どんなもんでしょう
オシロジのアダプター基板を作り始めた
(2016.01.08)
オシロジ機能を拡張するアダプター基板の設計を始めました。
拡張機能の一つはリニア・アイソレート計測です。
現状でもAC100V直結回路の信号計測は可能(<==一回やってみた)ですが、RaspiごとACラインに接続する瞬間はドキドキでした。(使用しているACアダプターのアイソレーションを信じるしかない!)
気楽にAC100V直結回路の信号を計測できるように、フォトカプラを使った簡易版リニア・アイソレート回路を設けることにしました。
もう一つは小信号計測機能です。
現状は計測レンジが一つ(0~3V)で、mVオーダーの信号は計測できません。そこでゲイン10倍と100倍のリニア増幅回路を設けることにしました。二つのアンプをカスケード接続すればゲイン1000倍の増幅回路になります。ただし、単電源のDCアンプなのでオフセット電圧が問題になりそうです。
回路はこんな感じ
それを基板に落とし込む
5cm×5cmに収めるため、リニア増幅回路の抵抗も表面実装部品にしたのですが、どうやら金属皮膜抵抗に置き換えることができそうです。
少しやりくりして、こんな風に変えました。
まだまだ、あちこちに手を入れることになりますが、あともう少しです。