トラブル対策

2018年8月30日 (木)

仕様書は必ず作ろう・作ってもらおう

ご無沙汰です

最近、もうすぐ定年という人たちと仕事するようになって
結構困ったポイントがありました。
1)なんでも電話で片付けようとする。
 彼らにとって、メールや仕様書を書くよりも、「手書きメモ」「電話確認」
 が重要なのです。記録の残らない電話が大好き!
2) 仕様書は彼らの頭の中
 「これは、決まっています」「あたりまえです」「そうなってます」
 は、私の知らない当然の事項なのか....
3) 打ち合わせがようやくまとまった後、次の日電話がかかってきて
 「よく考えてみると、ちがいますね?」...打ち合わせでは、考えてなかったのか!
4) 「こっちでやりますから、ちょっと教えてください」の打ち合わせのはずが
 「ソフト変えるなんて、2〜3日でできるでしょ、やってください。」
5) 担当者Aが「確認しました、OKです」メールの後で
 別の担当者Bメール 「これってできていないんじゃないですか?」
  .....社内でまとめてよ!
やっぱり、ツーカーで分かりあえると思った相手でも、それはアナログ世代の強者
ちゃんと仕様書を取り交わして、承認もらうプロセスを省いてはいけませんね。
どちら側にも、事情があるし、会社組織の中でのつきあいです。
今回はけっこう勉強になりました。
仕様書の存在がまた見直されそうです

| | コメント (2) | トラックバック (0)

2017年11月 2日 (木)

PIC デバッガ ICD3 のエラー

ちょっと ここのところ PICの デバッガ ICD3 のエラーでトラブっていたので

リマインダー兼ねて、書いておきます。
Unknown
 ことは、PIC18F のソフトを書き込もうとして、 MPLAB IDE で ICD3 というデバッガを使おうとしたのですが、 ICD3 自体は認識されるのですが、デバイスをつなげて 電源 ON しても

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 さんは「いいかげん新しい環境にしてよ!」って心境なのでしょう...

| | コメント (1) | トラックバック (0)

2016年4月21日 (木)

失敗から学ぶのはなし

失敗から学ぶのはなしとは

 最近買った本が以下の

電子工作は失敗から学べ!

 です。
 この作者は下記の

電子工作入門以前
の作者なので、ちょっと興味を引いたので
読んでみました。


 最初に抵抗を燃やしてみる話やコンデンサがパンクした話などで失敗の原因を解説しているのがなかなかだと思った。
 しかしながら、最初の製作記事が「安定化電源の製作」なのですが、昔は電源は鬼門で奥が深く、それこそ失敗の宝庫でしたが、今回は LM338 というIC一発で、それほどハードルが高くはないようです。確かに電源が1コあると色々な製作が出来るので便利です。
 ゲルマニウムラジオ(最近はショットキーダイオードを使うのですが)の製作から1ICのAMラジオなど PIC を使ったデーターロガーまで、結構なレベルまでの製作記事になっています。
 ただちょっと残念なのが、もうちょっと色々な失敗談があるのかと思ったらそうでもなくて、「失敗しやすいです」的な指摘に留まっている点かな?
 この本に刺激されて、もうちょっと失敗談を思い出して書いてみようかと思いました。
筆者も述べていますが、「動かないときこそチャンス」です。失敗してその原因を見つけた経験は、一生忘れませんね

| | コメント (2) | トラックバック (0)

2014年5月 2日 (金)

電源が違う信号接続のはなし

電源が違う信号接続のはなしとはOd_connect

アナログ用とデジタル用とが電源が別だったり、マイコン用の5Vとリレー駆動用の電源が24Vなどで異なり、駆動部の電源が別などの場合、タイミングによっては相手先がまだ電源ONになっていない場合や、省電力のため電源を落としている場合があったりして、マイコン側で High を出力した場合に、思わぬ大電流が流れてトラブることがあります。
 左の図の一番上は、このようなトラブルが起こる原因を示しています。特に CMOS出力とCMOS入力が接続された場合、相手側の電源が入っていないと、入力側ICのポートの保護ダイオードによって入力されたHighレベルの信号が相手側のVdd電源ラインを通じてGNDに落ちてしまうからです。
 相手側電源にあまり他のデバイスが繋がっていない場合には相手側 Vcc が0Vより上昇する程度ですが、他に繋がっている場合電流が流れ、出力側の ICが発熱したり、壊れたりします。
解決策は?
一番単純なのは、受け側にトランジスタ等を使って、抵抗で電流制限して ON/OFFを受け取る方法です。(図の中央)、出力された High 信号は比較的大きな抵抗 R で制限されますので、受け側の電源に関係なく出力出来ます。リレー等のドライブに電源電圧が異なる場合等の対策にも使われます。
しかしながら、比較的高速で ON/OFFしたい場合は、トランジスタでは問題になります。その場合は出力側のポートをオープンドレイン出力にします。
マイコン等のポート設定で Vdd側のトランジスタを OFFしてオープンドレイン出力が出来るものも多くなっていますので、この設定にして、出力ポートを Hign レベルにするのには、プルアップ抵抗R を使ってHighレベルを確保します。この抵抗は高速にする場合は数 kΩまで下げる場合が必要ですが、 I2C 通信等では相手先のドライブ能力等も考慮して通常 10kΩ〜4.7kΩ程度が用いられます。
またオープンドレインで、プルアップ抵抗を相手側の Vdd に接続することにより、例えば出力側電源が 5Vであり、相手先が 3.3Vなどの電圧が異なる場合の伝達にも使われます。

| | コメント (0) | トラックバック (0)

2014年1月11日 (土)

カウンターIC のクロックのはなし

カウンターIC のクロックのはなしとは

今年一番のトラブルチェックは、10進カウンターの 4518 についてです。
この CMOS IC は電源電圧 12V で使えるので、便利なのですが最近入手性が悪くなり今まで使っていたのが MC14518B という ON-Semi のものです。
最近入手性が良いのが、 CD4518B という Texas Instruments の ICです。
データーシートを見ただけでは全く変わりがないので、ネットでトラブル報告を調べるとどうやら、クロックの立ち上がりが問題の様です。
Test_cir
このICが時々おかしな動きをするというので、上記回路でクロックに矩形波を入れたり、三角波(立ち上がり/立ち下がりを遅くするため)を入れて実験してみました。
1)通常の出力
Cd_sq13k
通常の矩形波入力では 13KHz でも問題ありません。
2)三角波 13KHz
Cd_sw_13k
三角波にすると今まで 10カウントで1周していたのが9カウントとなり、分周がうまく動作しません。周波数を変えてゆくと、35KHzを超えたあたりで正常に戻ります。
 立ち上がり時間を計算すると、
1000uS÷35KHz = 28.6uS となり、立ち上がり/立ち下がり周期はその半分ですから、
28uS÷2 = 14uS となり、スペックの 5uS 以上というのは満足しています。
元のICはどうか?
では、 MC14518Bはどうかというと、何と500Hz まで大丈夫なのです。
1mS ÷0.5KHz = 2mS 立ち上がり/立ち下がりは 1mS なので 70倍の違いです。 ですから、けっこうな 立ち上がり/立ち下がりのゆるやかなクロックでも MC14518Bは大丈夫なのですね。
このあたりは、カウンターのクロック入力がシュミット入力(入力遷移レベルにヒステリシスがあって、ゆるやかに変化しても素早く切り替わり、一度切り替わったら遷移レベルが動いて逆戻りしにくい構造の入力)になっているものは、立ち上がりが緩やかでも動作するそうです。
データーシートには載ってないし、スペック的には入っているので、安易に交換してトラブルを起こしやすいポイントですね。

| | コメント (0) | トラックバック (0)

2013年12月25日 (水)

困ったUSB3.0 Hub のはなし

困ったUSB3.0 Hub のはなしとは

パソコンが USB3.0 になって、HDD とか SD カードリーダーとかUSB3.0に対応した高速なのもが出回って来たので、USBハブを買ったのですが、HDDが頻繁に「予期せず取り外されました」などといって、認識出来ないことが多発。
 調子悪いと思って、ハブのコネクタを刺し直すと直ったりするのですが、どうにも認識されなくなったので、分解してみると写真の通り。
Usb_hub
PCに行くケーブルの USB2.0 と USB3.0の信号が別々になったタイプのコネクタの取り付け部の半田が取れ、端子部分のランドが外れていました。
 固定部分の半田の盛りが少なく、ちょっとした力でコネクタがぐらついてしまった様です。それにしても、USB3.0のケーブルって結構太くて硬いのです。
機器側のUSB A-Type のほうは端子もスルーホールで抜けにくい構造で、しかも長さが長いのに比べ、PC側の受け側のコネクタの小ささはどうでしょう?
ちょっといくらなんでも強度不足ですね。私だったら、表側にケースを半田盛りするぐらいしないと安心出来ませんね。
 それで、どうしたかというと、信号ケーブルを直接パターンに半田付けして、ホットメルトで全体を固めて動かないように固定して見事復活しました。
工作中にセラコンを割って壊してしまったので、規格を調べてみるとどうやら 0.1uF でいいようなので、手持ちの 1608 で代替交換。
拡大鏡を使っての半田付けは、老眼の目には大変でした。
そういえば、最近のUSB3.0のハブがPC側ケーブル直結が増えてきましたね。
けっこうこのトラブルが多いのかな?

| | コメント (2) | トラックバック (0)

2012年5月16日 (水)

CMOS-IC 電源のはなし

CMOS-IC 電源のはなしとは
 CMOS-IC はデジタルのゲートなどに使われますが、アナログ値をデジタルの High/Lowに変換してマイコンに伝達するためなどによく使われます。その際、アナログ部分の電源とデジタルの電源が電圧が違うとか、ノイズの点で分離してあったりして時として別々の時があります。そんな場合 CMOS-IC側の電源を OFF にして動作させたときに、時として不具合が起きます。
ハード的には
Cmos_vdd 通常の場合、CMOSーICの入力はハイインピーダンスなのでほとんど電流は流れません。図のようにアナログ側でオペアンプで直接駆動しても問題はおきません。
 しかしながら、何かの原因でデジタル電源(VddB)が OFF になっていたらどうでしょう?デジタルICは現在ほとんど CMOSでゲートを静電気などから守るためや、寄生ダイオードで、入力から電源側にむかってダイオードが構成されています。デジタル側の電源がOFFになると、入力された電圧はこのダイオードを通ってデジタル電源(VddB)側に流れ出します。この電源がIC単体ぐらいで電流があまり流れない場合ならばこの漏れ電流はわずかですが、全体のデジタル電源などに繋がっていたり、この入力のICがラッチアップを起こしたりするばあいは、この入力端子に大きな電流が流れ込むことになります。そのために出力側のオペアンプが壊れたり、発熱したりします。
ソフト的には
 「CMOSだから電流は流れない」と思い込んでいると、大きなトラブルになることがありますので、CMOS-IC の電源のOFFになる場合や、電源立ち上がりのタイミングなどは注意が必要です。


| | コメント (0) | トラックバック (0)

2011年12月 1日 (木)

現物から学ぶこと

現物から学ぶこととは
 トラブル対策の最大の経験は、やっぱり失敗することではないでしょうか?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ブースが見当たらなかった
だれかご存知ですか?

| | コメント (0) | トラックバック (0)

2011年7月19日 (火)

PIC で I2C

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によってくせがあるのか解りませんが、送信完了しないってことは不思議でした。もうちょっと使い込んで実験してみたいと思います。

| | コメント (0) | トラックバック (0)

2011年6月 8日 (水)

製品の寿命について考える

製品の寿命とは
 製品として機能しなくなるには、電解コンデンサーやバックライトだったら容量や輝度が半分になり性能が満足できなくなる、などからセラミックコンデンサーの絶縁不良やタンタルコンデンサーのショートなど、確実に動作しなくなる現象まであるかと思います。製品で寿命に最も影響を与えるのが電解コンデンサーですが、今回は他の部品について考えます。
ハード的には
1)まずは半田付け部分
 一般に電子回路の寿命は個々のデバイスよりもおおきなファクターを占めるのが、半田付けと言われています。部品とプリント基板との接合部分の半田が温度変化で伸縮してクラックが入り、抵抗が増えてやがては断線となります。特に発熱するLSIのBGAなど多くの端子の半田の接続不良などが今日重要です。
 経験的にもインバーターの不良などをみると、2W クラスの抵抗の基板半田付け部分が熱でイモ半田状態になって焦げていたり、整流ダイオードの半田部分が半田クラックで導通不良になったものをけっこう見かけます。設計時に温度が高くなることから半田部分への影響を考慮する必要があります。
2)環境温度変化を少なくする(発熱を抑える)
 電解コンデンサーもそうですが、使用環境温度を規格よりも低くすることで寿命は延びます。
20110608_115734
 表は東芝セミコンダクター社のMIL-HDBK-217による電子部品の故障率予測の説明から引用しました。この図はICパッケージに対する故障率の温度ファクターですが、リニアICを例に取ると 25℃で 0.1 であるものが、50℃になると 0.71 と7倍にもなってしまいます。GaAs MMICでは100倍にもなります。このように積極的に温度を下げることは寿命にも大きな影響を与えます。
3)もちろん部品をへらして故障原因を減らす
 ディスクリートで構成するよりも、ICで機能を満足する場合は部品点数を減らす効果が大きいです。逆に1ポートだけ大電流出力したいだけなのに、8CH入ったバッファICを使うよりも FET1本で済む場合ならばそのほうがコスト・信頼性で有利ということですね。
ソフト的には
 上記電子部品の故障率予測にあるファクターで「環境ファクター」があります。家の中で使うよりも車の中では 8倍、戦闘機(飛行機)では 10倍故障率があがるようです。でも宇宙(飛行中)は地上と同じなんてちょっと面白いですね。

| | コメント (0) | トラックバック (0)

より以前の記事一覧