2018年6月23日土曜日

着席センサユニットの製作

うっかりミス多発・失敗だらけの製作記となった。
今回の装置は、次の二つの機能を実現する。
  1. 離席したときに、別にある監視カメラのモニタのバックライトをオフして省エネ化する
  2. 人感センサ付き夜間照明LED用のバッテリの充電機能

離着席の検出は、「超音波距離測定センサモジュール US-015 を使ってみた」にあるように、超音波センサを使用する。超音波センサの音速の温度補正用に温度計が必要なため、「温度センサTMP05をCCPで使用する」にあるように、温度センサを組み込む。
別にある監視カメラのモニタとは、「PHOTO-U2のLCDを活かす」で製作したもの。


マイクロクロステーブルとエンドミル」の記事までは、クロステーブルを使ったブラスチックの角穴加工だったが、今回初めて、t=1.0mm のアルミ板へのエンドミルによる角穴加工をすることになった。 


また、6mmの「すぱっとドリル」を購入し使ってみたが、良好だった。
10φ, 16φ, 20φ の穴は、6ミリの穴からステップドリルで10φjまで大きくする。10φからシャーシパンチを使った。


【失敗1】
修理用に購入したまま残っていたオプトレックス社の DMC16202NYの取り付け方向を上下逆に穴開けしてしまった。(シルク印刷が倒立、が正しい)
おかげで、写真のようなオフセットしたスペーサをアクリル板から作る羽目に。(クロステーブルが無かったら作る気にはならない)


【失敗2】
PWM式の温度センサにしたこと。測定時間が掛かる。
アナログ出力式のセンサにしておけば、距離センサの測定周期に合わせて測定するだけでOKだった。

【失敗3】
温度センサを基板上にハンダ付けしてしまったこと。外に引き出す等の根本対策ができない。ケースのフタをかぶせ密閉すると、室温より 8℃ 位高めになってしまう。
  • 温度センサの直下に、電源の発熱部が配置されてしまった
    電源を小型、小容量のものにかえて、レイアウトを修正した
  • フタに、通気用の小穴を明けた
  • 温度センサの近くの発熱部品を離した
  • 対策しても 5~6℃ 高いので、室温の表示としては違いが大きすぎてダメ
【失敗4】
そもそも、離着席程度の検出で使うレベルの「距離センサ」としての精度は、温度補正など要らない。着席とする範囲より、離席と判定する距離(背景との距離)を設定すればいい。

【失敗5】
距離センサを装置と一体化したこと。ユニットの置き場所と向きが限定される。

【充電機能】
ニッカドバッテリの充電は、ボタン操作で充電開始。180mA程度の定電流で設定電圧に達したら充電停止するというもの。こちらは、元になった基板にある回路をいかに活かす回路にするかに苦心した。

【未完】
バッテリの充電開始は自動開始になっていないので、過放電防止のアラームが必要。また、充電完了電圧に温度補正をかけるとしたら今の温度センサの位置が意味を持ってくるかもしれない。


2018年6月15日金曜日

超音波距離測定センサモジュール US-015 を使ってみた

アマゾンで208円、しかも送料無料で販売されていたので、5つまとめ買いした。ただし2週間くらい待った。簡易梱包で、中国から送られてきた。

ネットで見つかる例と同様に、トリガ後、ECHO出力の立ち上がりから立ち下がりまでの H のパルス幅をタイマを使用してカウントすることにした。(右オシロ波形の上のチャンネル)
数 ms のパルス幅計測になるので、トリガ後この間は、計測に専念する。
16MHzクロックが実装済みの基板を使ったが、1cm 単位の分解能でいいので、4MHz クロックでも十分と考えられる。
ただし、温度による音速の補正は必須。

回路の動作としては難なく出来た。また、計算式で導いた結果も10~70cmくらいの間は問題無し(反射板では)。

目的の人体の検知の場合、正面からだと、腕の動きに反応して大きく測定値が乱れる。
一応 8回測定の移動平均で使うようにしてみたが、手を近づけた事を検知する使い方も予定しているので、反応が鈍くなっても困る。・・・使ってみて改めることに。

2018年6月10日日曜日

温度センサTMP05をCCPで使用する

アナログ・デバイセズの温度センサIC、TMP05B を PICマイコンで使ってみた。
アナログ出力タイプ、I2Cのデジタル出力タイプなどあるが、これはパルス幅の比で温度を表すPWMタイプである。(長く延ばせるメリットがある)

ワンショット・モード
PICマイコンプログラムは、温度だけを測定する目的だけでは無いため、ワンショット・モードを使用することにした。
パルス幅の計測時間が120ms位必要とされるが、操作ボタンに軽快に反応してほしいので温度計測に専念せず、PIC の CCP機能を使用して、立ち下がりエッジ、立ち上がりエッジまでの時間をタイマ1 を使用して計測することにした。好きなタイミングで計測結果を読みに行ける(実際はトリガ前に前回計測値を読込む)
当初 H のパルス幅、L のパルス幅を二度に分けて測ろうと考えていたが、一度で済ませる事にした。
  • CCP1を立ち下がりエッジに指定し、Hパルス幅として使う
  • CCP2を立ち上がりエッジに指定し、立ち下がりエッジとの差をLパルス幅に
  • トリガHに戻してから、カウントイネーブル迄の時間がHパルスの誤差になる
  • Hの区間が公称値40msとなっているが、計測を省略できるほど正確ではない
  • 温度(℃)=421-(751×(Hパルス幅/Lパルス幅) の式の通りでOK
  • ポケットタイプの温度計より0.7℃高めの表示値が出たが、追求はしなかった
  • PIC のクロックが16MHzと高いため、立ち上がりエッジまでの計測可能な最大時間が131msになってしまい、温度上限が90℃位になる(室温で使うのでこのまま)
つまずいた点
データシートにある、「OUTピンをローレベルにしてから解除する」を読み飛ばして、入力ピンにトリガをかけて勝手に悩んでしまった。

  • OUTピンを強制 L に出来るよう出来ている
  • センサのOUTピン接続先をPICの入力として設定するが、
  • トリガを出力する際だけ、出力ピンモードにして使用する
  • (オープンコレクタ出力を使用してトリガする方法もある)


2018年6月3日日曜日

MPLAB X-IDE, XC8 への移行(4)

三年ぶりに、PICプログラムを作ることになった。C18で作成した過去のプログラムを流用するため、XC8へまず移植することにした。例によって大いに悩まされたので、その顛末。
  1. X-IDE, XC8を最新版にした(MPLABX-v4.15, xc8-v1.45)
  2. C18で作成したソースをXC8のプロジェクトへ単純に貼り付けてビルドするとエラーがたくさん出て、一気にやる気が失せる
  3. そこで、MPLAB X-IDE, XC8 への移行(3)にある通り少しずつ貼り付けながら、エラーを解決していく手法にした
  4. エラーのほとんどが、プログラム本体よりコンフィグレーションやペリフェラル部分のエラーだ
  5. ADCやTimerの設定がC18ではキーワードを使用して出来たが、これがエラーになるので、レジスタ毎に直接ビットパターンを指定する旧来の方法に戻した(データシートを参照せざるを得ないので手間はどちらも同じか)
  6. 結果的には、MPLAB X-IDE, XC8 への移行(3)にある通りの変更内容で、全て貼り付け終え、ビルド成功まで至った
【5の、XC8 V1.45になったことで】
前回の「MPLAB X-IDE, XC8 への移行(3)」の時のバージョンは XC8 V1.34 で、今回バージョンは大きな違いがあった(大きな違いがあるということが分かるまでが大変)。
  • ペリフェラルライブラリが削除された
    ペリフェラルライブラリを別途ダウンロードしインストールする必要がある
  • ペリフェラルライブラリと同じようなことをするには「MPLAB Code Configurator (MCC)」を使用せよとある・・・ただし対応する品番に制限有り
  • ビルドする際に、ペリフェラルライブラリを使う、という設定が必要
    プロジェクトプロパティの XC8 Linkerを選択し Runtime 設定の Link in Peripheral Library という項目にチェック
前回意識していなかった「MPLAB Code Configurator」(MCC)に寄り道してしまった。 PIC18F2321 を使うと決めていたので、それが使用できないと調べが付くまで時間をロスした。

【前回未解決の問題】
これを整理中に、前回の「MPLAB X-IDE, XC8 への移行(3)」の時点で、EEPROMの記事が未完のまま、未解決で残っている事に気づいた。今回のビルドでもEEPROM読み書きは、使う予定が無かったため最初にコメントアウトしたままだった。

【延長戦】
EEPROMの問題とビルド成功後も残っていたワーニングを調べてゼロにした。
  • warning: (373) implicit signed to unsigned conversion
    定数の加算やビット演算等にも出る
    (unsigned)を該当個所に追加して対処したが途中でうっとうしくなり、
    XC8 Project Properties にある、XC8 Compiler のワーニングレベルを、初期値 -3 を -2 にしたら消えた
  • 1/0 に書き換えた true/false の定数は #include <stdbool.h> で解決
  • warning 967 unused function は、未使用関数をコメントアウトすればいい
  • 最後に、warning level -2 にしても消えていないワーニング
    warning: (356) implicit conversion of float to integer が残った
    よく考えてみると、ここはバグっていることが分かった
  • EEPROMの読み書きは、ネットで見つかった方法、「関数を新たに作る」を使うことにした

2018年6月2日土曜日

Nakamichi CDプレーヤー OMS-50II の修理

80年代製のナカミチの CDプレーヤーの修理を頼まれた。機械的な部分のメンテナンスは終わっているので「どうしてもわからない基板のトラブル」3台分だ。
完動品が一台あるのでなんとかなるはずと思い引き受けた。
メンテナンスマニュアルをネットで探したが、図面がモノと一致しない。OMS-50ではなくて、OMS-70IIで探して出てきた図面が一致した(70IIの下位機種)。

【ひとつ目の故障内容】
  • うんともすんとも言わない状態で、前面パネル表示も何も無い。CDも回転しない状態
  • リセット回路、オペアンプ回路に電源が供給されていない
  • 原因は、部品固定用の接着剤が、パターンを侵食し断線を2個所作っていた
【二つ目】
  • CDを入れると回り出すが、CDの検知後一旦止まる動作をせずそのまま回りっぱなし
  • 前面パネルからの操作は受け付けない
  • 故障個所はヒューズ抵抗の断線によるもので、プラス側電源系に供給されていない
  • 何故断線に至ったかは不明(モータの過負荷?)
【三つ目】
  • 完動品の基板と置き換えて試し、回路基板の故障では無いことを確認
  • CDをローディング後CDが廻り出さない
  • CDを手で回すと、偏心している感じ
  • 二つ目の抵抗の断線していた基板が載っていたプレーヤーなのかも
  • 修理不能
【ナカミチ】
1970年代に、高級カセットデッキのメーカーとして有名だった。当時、Nakamichi の製品などとても自分の給料では手は届かず、選択肢にも入らなかった。

【カセットデンスケ】
Nakamichi は買えなかったが、SONY のカセットデンスケを購入。NHK-FM の「ひるの歌謡曲」をタイマを使ってエアチェックしていたものだ。

【今の目で見ると】
  • デザインは、重厚感があっていかにも高級品
  • 照明や、ディスプレイも控えめで、飾っておくにはかっこいいかも
  • 重量は重からず軽からず、持ったときのバランスもいい、動作音も静か
  • フタを取ると全くハイグレードな製品の感じがしない
  • 故障原因がお粗末だった
  • 電源ライン側にノイズフィルタが無い
  • 半固定ボリウムが、密閉型でなく開放型の最も安いタイプ
  • フォトカプラを使いデジアナ分離しているらしいが、電源のグランドが分離しているわけではない(ただしアイソレーテッド・グランド⽅式回路云々)
  • 片面基板のせいか電源ラインが貧弱だったようで、補強の電線を何カ所か這わしてある
  • 表面実装タイプのICは、ハンダ面に手ハンダしてあり、それも雑
  • 感度の高いピックアップのラインがシールド線を使っていないため、手が触れると再生中の曲が飛んだり雑音が入る
  • 今では普通な機能であるが、曲名が表示されないので非常に不便
  • 高価格品ではあるが、高品質では無い、のでは
BGM用のアンプとスピーカなので元々たいした音は出ないのだけれど、車載用のCDデッキでの再生、PCでの再生と比べてみた。特に「感動」は無かった。普通のおとなしめのCD品質の音だった。


2018年5月7日月曜日

TDS3012 (オシロスコープ)LCDのご機嫌(3)

つい二週間くらい前に使った時は正常だったが、電源を入れたら、画面が崩れてしまって使えない。いつもの現象が久しぶりに再発。今回(4月10日)は動画に撮ってみた。
持ち上げて、軽くコツンと一発、底面を叩いたらぴたっとよくなった。
以前ハンダ付けもしたと思うのだが、やっぱりLCDと基板間のフラットケーブルとコネクタが怪しい。

  • 去年あたりから、電源オフで日付と時刻がリセットされる(内部時計が停止する)ため、波形を保存する前に時刻設定をしなければならなくなった
  • 画面を撮影した過去の写真と比べても、画面が白っぽくコントラストが悪い
  • 使用時間を確認しようと、電源を入れたらやはり画面が乱れたがすぐに正常に戻った
  • 電源投入回数は、2204回, 使用時間は、2971時間だった(5月7日)
  • 自己診断を実行しても正常

過去の記事
2015/09/01 TDS3012 (オシロスコープ)LCDの故障(2)(分解)
2014/04/23 TDS3012 (オシロスコープ)LCDの故障

2018年3月5日月曜日

PHOTO-U2のLCDを活かす

放置してあったPHOTO-U2を活かすことになった。
屋外用カメラに使用しているモニタがSTNで暗い上に、画面が明るくなるまで時間が掛かりすぎる。
NTSCをLCDのインターフェイスに変換しかつ、画面を左右入換えられる機能をもった変換基板が必要。

「HDMI,VGA,2AV付きコントローラ基板 7~9インチ 解像度800x480 TTL 50ピンLCD 液晶パネル デイスプレイに対応」とうたう基板に行き着く。
基板はほぼ同じ、エンジンはRTD2660Hの類似品が各社より多数販売されている。
多分一番安いと思われる、アクセサリ無し、送料無料、中国から発送、をAmazonで購入、納期3週間近く掛かった。(\1,565)

VGA入力にパソコンをつないで、LCDのフラットケーブルを挿すだけで画面はOK(バックライトも点灯した)。
NTSCカメラは、入力信号切換えのピンをショートして切り替えできた。
表示を反転させられるが、OSDを使わなくてはならないので、10pinコネクタの部分はなんとかしなくてはならない(一度設定すればOK)

基板はPHOTO-U2の中には収まらないので、後ろに角穴を空けて、フラットケーブルを引き出して、基板を貼り付けた



【過去の記事】

【注意事項】
液晶パネルを手に入れて、この基板との組み合わせでディスプレイを新しく作ろうなどと考えない方がいい。なぜなら液晶パネル単体の価格で、安価な小型の車載用ディスプレイが手に入る。
7インチ液晶パネル(800x480) [AT070TN92]は単体で購入しようとすると、3,500円もするが、同じくらいで、7インチデジタル高画質「(800x480) モニター バック機能付き12V/24V対応 AV1/AV2入力系統対応 といった製品が手に入る。
【注意事項】
写真のRTD2660H搭載の基板のコネクタは、JST PHタイプ(2mmピッチ)のコネクタだ。消費電流は12V時、0.3A程度(バックライト含む)