電子部品

2022年6月25日 (土)

CPU.BACHさんから、お届け物が・・・

IrDAつながりということで、「テレフンケン」社製の
赤外LEDとPINダイオードが届きました。
   tks CPU.BACHさん

そうとう昔の。
21_20220625160401
23_20220625160401
ビニール袋に貼り付けたセロハンテープも変色・変質。
データシート(コピー)のロゴマークもコピーの
繰り返しでしょう、こんな具合に。
22_20220625160401

なにより「なにが届いたの?」っと思ったのが封筒の切手。
11_20220625160401
中央に「星の王子さま」。

過去にもこんな切手が。
2020年6月23日:「星の王子さま」の切手
2015年02月12日:スヌーピーの切手


| | コメント (1)

2022年6月22日 (水)

みんな「レールスプリッタ」に魅せられるんだ

秋月のチャージポンプIC(ICL7660互換品)
TJ7660N のデータシートを見てたら、こんな
レールスプリッタの回路例が出てました。
Aa1_20220622111301
このICで負電圧が出せるだから、普通に±電源にしたらっと
思うんですが・・・

  ・検索:レールスプリッタ

電源入力V+とVout(-出力)間に15Vを入れて、
GND間とで±7.5Vを得ようということのようです。

本家、インターシルのデータシートにも出ていました。

Aa2_20220622111401

※関連過去記事
1/2Vcc生成回路のコンデンサ
4046・VCO回路の直線性改善方法

| | コメント (0)

2022年3月 5日 (土)

プリント基板用リレーのピン番号

真空管のピン配置は1番から右回りに2,3,4・・・
それがDIP ICだと、左下の足が1番で左回りに2,3,4・・
重要なのが、真空管は「BOTTOM VIEW」で下から足を見ます。。
DIP ICになると「TOP VIEW」となって上から見たところ。
昔話になりますが、プリント基板用リレーのピン番号で混乱した
ことありませんか?

例えばオムロンのG5V-1リレー。
カタログから外観をピックアップ。
Aa1_20220305123801
その端子配列がこれ。
Aa2_20220305123801
BOTTOM VIEWで記されています。
ICのTOP VIEWに慣れてきた頃に、BOTTOM VIEWの絵が出てくると
ちょいと混乱します。 (・・・混乱しました)

G5V-1のコイルには極性がないので間違って反対にしてもリレーは
駆動します。
しかし、A接点とB接点が逆になって「あれれ?」な状態に。
   手組みの試作だと修正できるので良いのですが、
   ピン番を勘違いしてプリント基板を起こしちゃ
   うとアウト!

サーフェスマウント端子のリレーを使ったときに気が付いたのが
端子配置の表現。
   ※使ったのはオムロンG6Kという2回路の小型リレー。

足が下に出たプリント基板用端子のリレーはBOTTOM VIEWで示されて
います。
ところがサーフェスマウント端子になると、ICと同じようにTOP VIEW
なっています。
どちらも同じなのですが、きちんとピン番号を確認せず「ぱっと見」で
組んでしまうと「あらら」。
みなさん、勘違いしたことありませんか?

これがプリント基板用端子のG6Kリレー。

Aa3_20220305123901

ピン番号はこれまでどおりにBOTTOM VIEWで描いてあります。

Aa5

サーフェスマウント端子になると・・・

Aa4_20220305124002

ピン番号の表記の方法がTOP VIEWに。

Aa6

同じ品種のリレーでも、実装方法の区別でピン番表記の向きが
異なります。
  ※表記の上下方向が変わるだけで、同じものですよ。

G6Kのコイルには極性があるの、誤って上下を逆に見てしまうと
リレーが動きません。
  ※でも、このリレーの場合、A接、B接は大丈夫。


※似たような話
GP-IBコントローラ TMS9914のピン名称


| | コメント (2)

2022年3月 4日 (金)

ありゃま「多治見無線」の丸形コネクタ、納期が「1年」

仕事で使う多治見の丸形コネクタ、ネットで探しても「在庫ゼロ」ばかり・・・
お付き合いしてるパーツ屋さんから聞いてもらったら・・・
「納期約12ヶ月」と・・・
Aa11_20220304085401
「ありゃま」っす。

| | コメント (0)

2022年1月14日 (金)

オンボードDC-DCコンバータが入ってこない!

電子部品供給の逼迫で、DC-DCコンバータ(モジュール)が
入ってきません。
「コーセル」に「TDKラムダ」、有名どころのがアウト。
問い合わせに「納期不明」や「半年先」の回答。
この前、困ったのがこれ。
コーセルの15W。
  ・MGS152405  (degikeyで検索)
11_20220114103501
24V入力で5V出力。
できあがった基板へハンダしますんで、同一ピン配置じゃないと
あきません。
なにか代品が無いものかと探したところ、出てきたのが
このモジュール。
12_20220114103501
  ・PDQE15-Q24-S5-D
ctrl:on/off制御のロジックが異なりますが、使っていなければ
置き換えできます。
少し背が高くなりますんで注意。

もう一つがTDKラムダ。
  ・CC3-2412DF-E
13_20220114103501
24V入力で±12V出力。
これも入ってきません。
探しましたら、これが使えそうです。
  ・BTB24-12W12D  (現物はまだ入手していない)

いつまでこんな状態が続くんでしょうねぇ。



| | コメント (0)

2021年12月 7日 (火)

湿度センサー「DHT11」がやってきた・・・けど!?

注文していた湿度センサー「DHT11」、届いたのはこれ。
ASAIR」というメーカーのようです。

31_20211207155001
 ・https://www.aosong.com/en/productslist-4.html
 ・https://www.aosong.com/en/products-21.html

※前記事:出窓の結露対策用ヒータ制御回路

さっそくArduino-UNOで試運転。
  ライブラリは使わず自前のルーチンで。
すると・・・いくつかの疑問が・・・

(1) DHT11の応答速度

「読み出し速度は1秒以上」なんて書かれてるページが
あります。
センサーとしての応答速度と通信速度とは違う
わけでして。
試しに0.2秒サイクルでデータを読み出してみました。
上がってくる5バイトのデータ、10進と16進で示します。

・加熱しながら0.2秒サイクルで読み出し
- 湿度- -温度- sum ---HEXで------
15  0 40  3 58  0F 00 28 03 3A
14  0 41  2 57  0E 00 29 02 39 …0.0 41.2℃
14  0 41  2 57  0E 00 29 02 39   2
14  0 41  2 57  0E 00 29 02 39   4
14  0 41  2 57  0E 00 29 02 39   6
14  0 41  2 57  0E 00 29 02 39   8
14  0 41  2 57  0E 00 29 02 39  1.0
14  0 41  9 64  0E 00 29 09 40 …0.0 41.9℃
14  0 41  9 64  0E 00 29 09 40   2
14  0 41  9 64  0E 00 29 09 40   4
14  0 41  9 64  0E 00 29 09 40   6
14  0 41  9 64  0E 00 29 09 40   8
14  0 41  9 64  0E 00 29 09 40  1.0
14  0 42  6 62  0E 00 2A 06 3E …0.0 42.6℃
14  0 42  6 62  0E 00 2A 06 3E   2
14  0 42  6 62  0E 00 2A 06 3E   4
14  0 42  6 62  0E 00 2A 06 3E   6
  ※センサーのそばにハンダゴテを置いて加熱。
   湿度がえらい低く出てます。
「1.2秒」周期で湿度+温度データが更新されてました。
※追記
これ↑、私の勘違いを含んでいました。
6回のうちの5回はACK応答なしでタイムアウトエラー
生じていました。
つまり直前に読み取ったデータを出力していたのです。
AdafruitのDHTライブラリではMIN_INTERVALとして2秒が
取られています。
その間の呼び出しは、読み出しは行わずに前回値を使うという
処理になっています。


(2) 0.1℃の桁まで温度が出てるぞ!

あちこちにあるDHT11のデータシート、湿度と温度のデータの
分解能、湿度が1%、温度が1℃と記されています。
しかし、このデータ列を見ると、4つ目のデータが「0.1℃」
の数字になっています。
  (2つ目の湿度データは00が続く)
スケッチのサンプル、floatで処理しているようなんで、
分解能を気にしていないのか、はてさて。

(3) ライブラリはどうしてる?

よく使われているライブラリ「DHT.cpp」を見ますと・・・
DHT11はこんな処理に。

  case DHT11:
   f = data[2];      …3つ目が1℃桁
   if (data[3] & 0x80) {  …4つ目のMSBがマイナス符号
    f = -1 - f;      …★1
   }
   f += (data[3] & 0x0f) * 0.1; …4つ目の下位4bitが0.1℃

「0.1℃」が出ているのは間違いないようです。
で、★1のところに疑問。 データシートに出ていない、
マイナスの処理、これでエエん?

湿度が高分解能なDHT22の温度処理を見ると、

  case DHT22:
   f = ((word)(data[2] & 0x7F)) << 8 | data[3]; ★2
   f *= 0.1;   …3つ目が1℃で4つ目が0.1℃
   if (data[2] & 0x80) {  …3つ目のMSBが1なら
    f *= -1;       …マイナスに
   }

このDHT22のマイナス処理はなるほど。
★2の所、3つ目の8bitデータはちゃんとマスクしてあります。

ということで、温度がマイナスはどうなる? が疑問です。


(4) 氷点下は?

実データを見るため、センサーをビニール袋に入れて
サンハヤトの「Q-REI」で冷やしてみました。
  シリアル出力は2秒サイクル。

- 湿度- -温度- sum ---HEXで------
27  0  4  9 40  1B 00 04 09 28 … 4.9℃ 下降
27  0  4  1 32  1B 00 04 01 20 … 4.1℃
27  0  3  3 33  1B 00 03 03 21 … 3.3℃
27  0  2  5 34  1B 00 02 05 22 … 2.5℃
27  0  1  7 35  1B 00 01 07 23 … 1.7℃
27  0  0  9 36  1B 00 00 09 24 … 0.9℃
27  0  0  2 29  1B 00 00 02 1D … 0.2℃
28  0  0 133 161  1C 00 00 85 A1 …-0.5℃ ★3
28  0  1 129 158  1C 00 01 81 9E …-1.1℃
29  0  1 136 166  1D 00 01 88 A6 …-1.8℃
29  0  2 132 163  1D 00 02 84 A3 …-2.4℃
30  0  3 128 161  1E 00 03 80 A1 …-3.0℃
   :  :
45  0  2 132 179  2D 00 02 84 B3 …-2.4℃ 上昇
47  0  2 129 178  2F 00 02 81 B2 …-2.1℃
48  0  1 136 185  30 00 01 88 B9 …-1.8℃
49  0  1 132 182  31 00 01 84 B6 …-1.4℃
50  0  1 129 180  32 00 01 81 B4 …-1.1℃
52  0  0 135 187  34 00 00 87 BB …-0.7℃
53  0  0 132 185  35 00 00 84 B9 …-0.4℃
54  0  0 129 183  36 00 00 81 B7 …-0.1℃ ★4
55  0  0  3 58  37 00 00 03 3A … 0.3℃
57  0  0  7 64  39 00 00 07 40 … 0.7℃
58  0  1  1 60  3A 00 01 01 3C … 1.1℃
59  0  1  4 64  3B 00 01 04 40 … 1.4℃

温度が下降、上昇する速度から0℃付近の挙動が
見えてきます。
 (1) 3つ目と4つ目のLSBを加算してxx.x℃に
 (2) 4つ目のMSBが1ならマイナスに
ということでよさそうです。
しかし、★1の手順だと、「-0.1℃」を読んだときは、
「(-1 - 0) + 0.1」「-0.9℃」になっちゃいます。

DHT11の0.1℃処理、後からデータが出ているのが
分かったんで付け足した感じでしょうか。
プラスのことしか考えなかったんで、それで、ミスを!

「ライブラリをうかつに信じたらアカンぞ!」っという
ことになっちゃいました。

DHT11の処理をこのライブラリでしたことがある方、
氷点下の処理を見直さなくちゃいけません。
1℃内で温度の上昇と下降が逆になってしまいます。


※こんなスケッチです (完成形じゃありません)
  ・ダウンロード - test_hdt2.txt

タイマー1のインプットキャプチャ機能を使って
DHT11からのパルス幅を読んでいます。
  ※ソース、DHTとする所、間違ってHDTとなってます。
   次の手直しで直します。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
※追記 DHT11、氷点下の処理 (↑の★1)

 case DHT11:
  f = data[2];     …1℃桁
  if (data[3] & 0x80) { …MSBがマイナス符号
   f = -1 - f;     …★1
  }
  f += (data[3] & 0x0f) * 0.1; …下位4bitが0.1℃

おそらく・・・★1は最小桁が1℃の時の処理だったかと。

温度が降下して「 4 3 2 1 0℃」と来た次、
データが「0」のままマイナスになって「-0℃
が出現します。
それを嫌って、「4 3 2 1 0 -1 -2」となる
ようにするための処理が「f = -1 - f;」だったと
推測できます。

それが、「0.1℃桁」まで出ているのが分かり
DHT11の機能アップ?)、それじゃと追加したのが
  f += (data[3] & 0x0f) * 0.1;

しかし、マイナス温度を考えていなかったのがミス。
DHT22と同じように、先に1℃桁と0.1℃桁を合成してから
マイナスを判断して処理しなければなりません。

気が付かない原因・・・
  ・昔からあるライブラリにミスは無いだろう。
  ・みんな、使っているし。
  ・動いているし。
  ・欲しいのは湿度。 温度はおまけ。
  ・DHT11で氷点下なんて使わないぜ。
  ・1℃桁が合ってればヨシ!

現場ネコ」みたいになってきました。


※追記  氷点下実験の様子
32_20211208113001
センサーをビニール袋に入れ、その上からQ-REIを噴射。

40.0% -19.6 28 00 13 86 C1
40.0% -19.7 28 00 13 87 C2
40.0% -19.7 28 00 13 87 C2
40.0% -19.8 28 00 13 88 C3
40.0% -19.8 28 00 13 88 C3
40.0% -19.9 28 00 13 89 C4
40.0% -20.0 28 00 14 80 BC
40.0% -20.0 28 00 14 80 BC  最低到達点
   :
「-20.0℃」まで到達。 ここで数値が張り付きました。


※追記 氷点下の温度数値が★1の処理だと狂う様子

 正          ★1の計算方法
 1.9 [20 00 01 09 2A ]  1.9 ↓温度下降
 1.4 [20 00 01 04 25 ]  1.4
 0.8 [21 00 00 08 29 ]  0.8
 0.3 [21 00 00 03 24 ]  0.3 プラスはok
-0.2 [21 00 00 82 A3 ]  -0.8 マイナスがアウト
-0.6 [21 00 00 86 A7 ]  -0.4
-1.0 [21 00 01 80 A2 ]  -2.0
-1.4 [21 00 01 84 A6 ]  -1.6
-1.8 [21 00 01 88 AA ]  -1.2
-2.1 [22 00 02 81 A5 ]  -2.9
-2.5 [22 00 02 85 A9 ]  -2.5
-2.8 [22 00 02 88 AC ]  -2.2 実際は0.2℃の変化なのに
-3.0 [22 00 03 80 A5 ]  -4.0 1.8℃も飛んじゃっている。
     :
-2.3 [31 00 02 83 B6 ]  -2.7 ↓温度上昇
-2.1 [32 00 02 81 B5 ]  -2.9
-1.8 [34 00 01 88 BD ]  -1.2
-1.5 [35 00 01 85 BB ]  -1.5
-1.3 [37 00 01 83 BB ]  -1.7
-1.1 [39 00 01 81 BB ]  -1.9 0.3の変化が
-0.8 [3A 00 00 88 C2 ]  -0.2  1.7に。
-0.5 [3C 00 00 85 C1 ]  -0.5
-0.3 [3D 00 00 83 C0 ]  -0.7
 0.0 [3F 00 00 00 3F ]  0.0 0はok
 0.3 [40 00 00 03 43 ]  0.3 プラス復帰でokに

こんな変化になるんで、0℃を中心に温度がゆっくり変わったとき、
「なんかマイナスがおかしい」と気づきそうです。

「センサーがおかしい」とか「回路がおかしい」「精度が出てない」
じゃなく、「ソフトがバグってる」というのがこの原因です。

 DHT11センサーで
 AdafruitのDHTライブラリを使って
 氷点下を計る
という条件なので、異常に気付くかどうか・・・微妙でしょうね。


※完成形へ
2021年12月10日:DHT11を使った出窓の結露対策用ヒータ制御回路

※追記
2022年3月10日:温湿度センサーDHT11、ライブラリを使うと氷点下の温度がおかしくなるぞ!

| | コメント (3)

2021年12月 6日 (月)

湿度センサー駆動回路 「センサ・インターフェージング No1」から

抵抗値変化型の湿度センサー、手持ちの本の中に資料はないものか
と探しましたら、出てきました。

CQ出版 トラ技別冊「センサ・インターフェージング No1」。
T11_20211206084001
1982年の本。 書架に眠っていました。
T12_20211206084101

「湿度センサ活用編」という章があって、当時のセンサーなど
があれこれ紹介されています。
今のように、湿度・温度がデジタル値として出てくるのは
無く、アナログ値。
T13_20211206084101

ちょいと関連しそうな回路をピックアップしてみます。

・ダイオードで対数変換。
T14

・コンパレータでレベル分けして湿度警報表示
T15

・抵抗値変化を周波数変化に
T16
  ※先日の三角波発振回路と同じ

・単電源回路で
T17

抵抗値変化型の湿度センサー、40年前でも考え方は
同じだっということを再認識。

| | コメント (0)

2021年12月 5日 (日)

タクトスイッチを押してみる …何万回も その5 続き

2021年12月2日:タクトスイッチを押してみる …何万回も その5
で、オムロンのB3F-1062を押し始めました。

今朝、仕事場に来たら72万回ちょいで停止してました。
新しいスケッチでは
  ・デジタル入力オフ検出1回で異常停止。
  ・接触状態見るA/D値の記録は、2以上の時に
   リングバッファに記録。
  ・リングバッファの大きさは1365個でF-RAMに記録。

今回記録していたのは、310個で
2以上のA/D値は全数記録していました。

グラフ化するとこんな具合。
Cap303

36万回と46万回あたりに大きくなったA/D値が出現。
しかし、「デジタル入力オフ」という異常事態は
起こっていませんでした。

その後、順調に「押し」が進みます。
しかし、72万4千89回目で、前触れなしに「オフ」が発生
数値で見ると、こんな具合です。
左側がサイクル数。
右がA/D値。 オフだとA/D値フルスケールに。

  :
 465137  4
 465143  3
 465205  6    前徴なく、
 724089 1023  1 ←突然オフに
         新しいスケッチは1回
         だけで異常停止。
 724090  11  その後、走らせたら
 724091 110  大きなA/D値が続く。
 724092 303
 724093 203
 724094 381
 724095  12
 724096  10
 724097  4  しかし、これ以降、
 724098  0   「0」に復帰。
  :

オフ検出で停止していたのですが、サイクルを
再開するとしばらく異常値が続いた後、再び「0」
になって、「まだまだっ」っという感じになっ
ちゃいました。

タクトスイッチの寿命、単純に「押す」だけでは
測れないようです。
湿気など、周囲環境の影響のほうが大きいのかも。

B3F-1062のスペックを見ますと、
 定格負荷 DC3~24V 1~50mA(抵抗負荷)
 接点材質 銀メッキ
 作動力  1.47N
 耐久性  30万回以上(1.47Nタイプ)
と記されています。

今回のテストでは、負荷はATmega328Pの内蔵プルアップ抵抗で
およそ30kΩ、0.17mA。
この負荷なら「金メッキタイプ(0.1~50mA)」を使えという
ことになるんでしょうが・・・

| | コメント (0)

2021年12月 2日 (木)

タクトスイッチを押してみる …何万回も その5

こんな回路に落ち着きました。

Cc01

Cc1_20211202155101
オムロンのタクトスイッチ「B3F-1062」を付けて
「押してみる」を始めています。

Cc2_20211202155101
  ボタンとの間隔、この写真↑よりもうちょい
  縮めて(接近させて)います。

タクトスイッチを押してみる …何万回も その4 続き
EEPROM、 2kバイトと4kバイトの間には壁がある (24LC16で)
EEPROM I2Cのクロックを早くすると・・・

接触不良はプルアップ付デジタル入力のon/offで
見ていますが、接触状態(接触抵抗)はA/D入力を記録します。
そのためのメモリーがF-RAM。
Cc3_20211202155101
FM24C64。 64kビット。 8kバイト。
リングバッファにして直近の1365データ記録できます。
  on/off回数4バイトと2バイトのA/D値で
  6バイトが1データ。

こんなスケッチです。
EEPROM、F-RAMアクセスの所が参考になるかと。
 ・ダウンロード - sw_life_test4.txt
    (テキストファイルにしてます)


 

| | コメント (2)

2021年11月29日 (月)

出窓の結露対策用ヒータ制御回路

寒くなってきて、そろそろ結露対策用ヒータの出番です。
2017年11月25日:そろそろ出窓の結露が ・・・あれ? 湿度センサーがおかしい
2018年11月27日:出窓の結露対策:温湿度センサーの異常
などと、苦難を乗り越えて運転してきました。

「今期はどうだ?」っと通電しますと・・・
下段の湿度値がおかしい。
11_20211129105601
   仕事場にもってきて↑
えらく大きく出てしまいます。

ヒータ制御は湿度の値を見てON/OFFします。
湿度値が大きく出ているもんだから、結露の徴候が
無いのにヒータがオンしてしまい、電気がもったいない。

最初に使った温湿度センサー「HDC1000」(TI製)が
おかしくなったのでSENSIRION社の「SHT31」に
換えて運転していました。
12_20211129105601
それもアウトになったような感じです。
結露が発生するような高湿度環境で長いこと使うと
あかんのかなぁ。

※秋月の湿度センサー
https://akizukidenshi.com/catalog/c/chumid/
さて、どうしたものか・・・
何か良いセンサーは?

正確な湿度値はいらないから、<結露センサー> か。
しかし、結露が発生してからでは遅いしなぁ。

結露センサーMDS05
アマゾン:HDS10
アマゾン:感湿抵抗 KKHMF
アマゾン:HR202L

※あれこれ
秋月の湿度センサー廃番品:
  DHT11
  AM2320、AM2322、AM2302
I2Cの DHT20 が現行品か。
そして、2本足のHS-15P もOKのよう。 ←駆動回路必要
HS-15Pのスペック、「湿度100%、結露環境下でも可」と。


| | コメント (5)