仕様書は必ず作ろう・作ってもらおう
ご無沙汰です
ご無沙汰です
ちょっと ここのところ PICの デバッガ ICD3 のエラーでトラブっていたので
ICD3Err0035: Failed to get Device ID.
( デバイス ID の取得に失敗しました。)
と言うエラーメッセージで、デバイスの IDが読めないと言うのです。
出先だったので、コネクタの接触不良かと思って掃除したり、コネクタの導通をチェックしたりしましたが、治りません。「こりゃ壊れたか?」と思い、うちに帰ってもう1つの違った機種で使っている ICD3 でも、既存の動作確認詰みの CPUボードで試したのですが、こっちも同じエラーガ出てきました。
こりゃ パソコンのドライバーがおかしくなったのかと、違うノートパソコン上の MPLAB IDE で動作させても、全く同じ現象でした。
しかたが無いのでネットで情報を探すと、日本で無く本場 Microchip のユーザーコミュニティでこの問題が取り上げられていました。読んでいくとどうやら ICD3 のファームウェアを元に戻せば良いようです。
「ここでダウンロード出来る」「ここに書き込んである」とかリンクをたどってもなかなかファイルは見つからず、途方に暮れていたのですが、ヒントは MPLAB IDE のメニューで更新できるとの文章でした。
MPLAB IDE の Debugger -> Setting... でウィンドウを開き
Configuration タブで表示される
Manual Download のボタンです。
これを押すと、選択 ウィンドウが出てきて、その中にあるじゃ無いですか...
最初にインストールしたときの ファームウェアファイルが..
ICD3FW_012890.jam
です。
これをロードして、めでたく復帰しました。
この一連の騒動は、 PICの新しい開発環境 MPLABX で ICD3を接続して使ったことから、 ICD3 のファームウェアを更新されてしまったことが原因なのでした。
たぶん「ファームウェアを更新するけどいいか?」というダイアログが出たのでしょうけど、「新しいファームなら、古い環境も大丈夫だろう...」と安易に OK してしまったのでしょうね。きっと Microchip さんは「いいかげん新しい環境にしてよ!」って心境なのでしょう...
失敗から学ぶのはなしとは
電子工作は失敗から学べ!
です。
この作者は下記の
電子工作入門以前
の作者なので、ちょっと興味を引いたので
読んでみました。
最初に抵抗を燃やしてみる話やコンデンサがパンクした話などで失敗の原因を解説しているのがなかなかだと思った。
しかしながら、最初の製作記事が「安定化電源の製作」なのですが、昔は電源は鬼門で奥が深く、それこそ失敗の宝庫でしたが、今回は LM338 というIC一発で、それほどハードルが高くはないようです。確かに電源が1コあると色々な製作が出来るので便利です。
ゲルマニウムラジオ(最近はショットキーダイオードを使うのですが)の製作から1ICのAMラジオなど PIC を使ったデーターロガーまで、結構なレベルまでの製作記事になっています。
ただちょっと残念なのが、もうちょっと色々な失敗談があるのかと思ったらそうでもなくて、「失敗しやすいです」的な指摘に留まっている点かな?
この本に刺激されて、もうちょっと失敗談を思い出して書いてみようかと思いました。
筆者も述べていますが、「動かないときこそチャンス」です。失敗してその原因を見つけた経験は、一生忘れませんね
電源が違う信号接続のはなしとは
カウンターIC のクロックのはなしとは
困ったUSB3.0 Hub のはなしとは
CMOS-IC 電源のはなしとは
CMOS-IC はデジタルのゲートなどに使われますが、アナログ値をデジタルの High/Lowに変換してマイコンに伝達するためなどによく使われます。その際、アナログ部分の電源とデジタルの電源が電圧が違うとか、ノイズの点で分離してあったりして時として別々の時があります。そんな場合 CMOS-IC側の電源を OFF にして動作させたときに、時として不具合が起きます。
ハード的には
通常の場合、CMOSーICの入力はハイインピーダンスなのでほとんど電流は流れません。図のようにアナログ側でオペアンプで直接駆動しても問題はおきません。
しかしながら、何かの原因でデジタル電源(VddB)が OFF になっていたらどうでしょう?デジタルICは現在ほとんど CMOSでゲートを静電気などから守るためや、寄生ダイオードで、入力から電源側にむかってダイオードが構成されています。デジタル側の電源がOFFになると、入力された電圧はこのダイオードを通ってデジタル電源(VddB)側に流れ出します。この電源がIC単体ぐらいで電流があまり流れない場合ならばこの漏れ電流はわずかですが、全体のデジタル電源などに繋がっていたり、この入力のICがラッチアップを起こしたりするばあいは、この入力端子に大きな電流が流れ込むことになります。そのために出力側のオペアンプが壊れたり、発熱したりします。
ソフト的には
「CMOSだから電流は流れない」と思い込んでいると、大きなトラブルになることがありますので、CMOS-IC の電源のOFFになる場合や、電源立ち上がりのタイミングなどは注意が必要です。
現物から学ぶこととは
トラブル対策の最大の経験は、やっぱり失敗することではないでしょうか?MWE2011を今日見てきて、学生展示などを見ながら、自分の経験してきた過程を省みて改めて考えると、最大の収穫は現物を触って作って失敗出来たことではないかなと改めて思ってしまいます。
今どきの業務はあまりにも失敗しないためにシュミレーションしたり、用意周到で、冒険をしない...もしくは失敗することが許されない(昔だってそうだったと思うのですが...)環境・プレッシャーがあるのでしょうか?
ハード的には
初めてケミコンを爆発させたのは中学3年生の頃でした。まだ真空管の受信機を作っていて、電源リップルがあるからとローカル発信器の電源に、コンデンサーを追加したときに誤って逆に繋いだ時でした。爆発というより内容液がプシューと音を立てて飛び出した程度でしたが、初めて感電した時と同じくらいドキドキしたのを覚えています。そんな経験で高校生の頃はいらなくなったケミコン 100uF/6.3Vなどを、わざと12V位を逆接してかけて爆竹のように爆発させて遊んだりしてました。最近のケミコンは防爆品なので、そんなことも出来ませんね... なんかケミコンがバカに熱を持ってるから調べたら逆接だった..ってことが最近ありましたね。
電線の電流容量もそうですね、初めてニッカドバッテリーを使った時にふとした弾みで12Vくらいに接続したニッカドの両端を、みの虫クリップがついた実験ケーブルが触ってショートしたとき...電線が加熱して被服が溶けて、芯線が赤くむき出しになって露出しました。当時はニッカド以外では数10アンペア流せる電源なんて無かったので、びっくりしましたね。
仕事についてからも色々ありました。初めてのBGAのICの基板設計でパターン引き回しを完璧に行い、試作で基板を作ったら、なんとそこら中電源ショートで動かない。よく調べたらBGAの端子番号の見方が裏面から見た配置なのに、CADへの部品登録でそのまま登録したので表裏が逆でした。納期が間に合わないし、いまさら...と悩みましたが、部品面とパターン面の交換を基板屋さんに依頼し、再試作してなんとかしのげました。試作実験だから良かったのですが、もちろんゲートICなどはずべて逆になるので、手で曲げて表裏反対にして手実装。なんとかソフト屋さんに渡せる試作機としては出来たけどハラハラものでした。もうあれから2度と表裏は間違えません。(BGAについては..?)
ソフト的には
最近はシュミレーターがあったり、理論計算で特性をまず予測して作ることが普通になって、なかなか若い頃から半田ごてで火傷したり、感電したり、高価なトランジスタを一瞬で昇天させて落ち込んだりしなくなりました。理路整然と説明する学生の姿は頼もしいですが、彼らが何か作って楽しんでいるのかな?とちょっと思ってしまいます。メカやソフトを駆使してロボットバトルをする高専の学生たちと比べると、高周波エンジニアはもうちょっと楽しめる(失敗出来る)ことがあるといいなと思ってしまいました。僕らの時代はラジオ製作があったり、アマチュア無線があったり、無線の世界は夢だったのになぁ...と 今は無線があたりまえになりすぎたのか、高度になりすぎたのか..
ゲルマニウムラジオは今時部品が無くて作れないからショットキーバリアダイオードラジオでも作ってみたらどうかなぁ
PS . -------------------------------------------------------------------------
★★ MWE 2011 開催の ご案内 ★★ (No.10)
MWE 2011好評開催中!2日目も見どころ・聴きどころが満載です!!
【学生コンテスト開催!】
明日は会場内E205にて学生コンテスト2011を開催しております。
本年初の試みとなる学生コンテストでは、課題として
「高周波増幅器の設計・試作」に取り組んでおります。
会場内にて各校の設計・試作した高周波増幅器の測定を行なっておりますので
各校の成果を是非ご覧ください。
と MWE 案内にあったけど見当たらなかった... E205ブースが見当たらなかった
だれかご存知ですか?
PIC で I2Cをドライブしてみました。
PIC では、前回はライブラリがうまく動かなかったので、自前で制御するコードを書いていたのですが、今回再度ライブラリで動作させてみようと挑戦してみました。
使ったCPUは PIC18F4550 ライブラリは、"i2C.h" です。
これは MCC18¥src¥pmc_common¥i2C¥ 以下にあるファイルを使用しています。
通常では動作するのですが...
1つ問題がおこりました。実装されていないデバイスに対して書き込み(コマンド)を送るのですが、当然 ACKが帰ってきません。ソースを見ると、 i2c_write.c には
.....
{
while( SSPSTATbit.BF) ;
IdleI2C();
if(SSPCON2bits.ACKSTAT ) //test for ACK condition
return(-2);
else return(0);
}
とあり、ACKが来なければ -2 を返すはずです。
しかしながら、デバッグすると
while( SSPSTATbit.BF) ;
で止まっているのでした。
送信が完了しないで止まっているので、ACKを確認できずにいるようでした。
何度かレジスタの設定を確認しましが、デバイスが繋がっていないとここで止まるようです。
仕方がないので、
while( SSPSTATbit.BF) ;
の部分を
n = 100;
while( SSPSTATbit.BF) {
--n;
if( n == 0){
IdleI2C();
return(-2);
}
}
と変えて、100回ループで脱出するように修正しました。
この writeI2C() を使っているサンプルを見ても、ACKが無いときの return(-2)の値を利用しているコードは見つかりませんでした。( -1) の場合の バス衝突時 には対応しているコードは見つかりました。私の環境が悪いのか、CPUによってくせがあるのか解りませんが、送信完了しないってことは不思議でした。もうちょっと使い込んで実験してみたいと思います。
製品の寿命とは
製品として機能しなくなるには、電解コンデンサーやバックライトだったら容量や輝度が半分になり性能が満足できなくなる、などからセラミックコンデンサーの絶縁不良やタンタルコンデンサーのショートなど、確実に動作しなくなる現象まであるかと思います。製品で寿命に最も影響を与えるのが電解コンデンサーですが、今回は他の部品について考えます。
ハード的には
1)まずは半田付け部分
一般に電子回路の寿命は個々のデバイスよりもおおきなファクターを占めるのが、半田付けと言われています。部品とプリント基板との接合部分の半田が温度変化で伸縮してクラックが入り、抵抗が増えてやがては断線となります。特に発熱するLSIのBGAなど多くの端子の半田の接続不良などが今日重要です。
経験的にもインバーターの不良などをみると、2W クラスの抵抗の基板半田付け部分が熱でイモ半田状態になって焦げていたり、整流ダイオードの半田部分が半田クラックで導通不良になったものをけっこう見かけます。設計時に温度が高くなることから半田部分への影響を考慮する必要があります。
2)環境温度変化を少なくする(発熱を抑える)
電解コンデンサーもそうですが、使用環境温度を規格よりも低くすることで寿命は延びます。
表は東芝セミコンダクター社のMIL-HDBK-217による電子部品の故障率予測の説明から引用しました。この図はICパッケージに対する故障率の温度ファクターですが、リニアICを例に取ると 25℃で 0.1 であるものが、50℃になると 0.71 と7倍にもなってしまいます。GaAs MMICでは100倍にもなります。このように積極的に温度を下げることは寿命にも大きな影響を与えます。
3)もちろん部品をへらして故障原因を減らす
ディスクリートで構成するよりも、ICで機能を満足する場合は部品点数を減らす効果が大きいです。逆に1ポートだけ大電流出力したいだけなのに、8CH入ったバッファICを使うよりも FET1本で済む場合ならばそのほうがコスト・信頼性で有利ということですね。
ソフト的には
上記電子部品の故障率予測にあるファクターで「環境ファクター」があります。家の中で使うよりも車の中では 8倍、戦闘機(飛行機)では 10倍故障率があがるようです。でも宇宙(飛行中)は地上と同じなんてちょっと面白いですね。