失敗

2024年9月13日 (金)

アマゾンで買ったユニバーサル基板:失敗だぁ

長らく愛用していた「ICB-96互換のユニバーサル基板」、
手持ちが残り少なくなってきたので、似たような大きさ
のをアマゾンで買いました。
  ・2012年12月14日:ICB-96互換のユニバーサル基板
  ・共立エレショップ:21-116 販売終了

アマゾンで見つけたのがこれ。
サイズが120mm×180mm。
「21-116」が114mm×160mmでしたので、ちょいと大。
そして、安価。
Pc22

左がアマゾン。 右が21-116。
Pc23

しかし失敗・・・
というか、スペックの見落としです。(自業自得)
厚みが「1.2mm」しかなくって、ペラペラなんです。

上がアマゾンで厚み1.2mm。
下が21-116で厚み1.6mm。
Pc26

パターンの形状。
Pc25
上がアマゾン。下が21-116。

基板全面を使って回路を組むんじゃなく、適当な
サイズに切り出して使うには大丈夫でしょうが、
t=1.6とt=1.2では頑丈さがだいぶと違います。


※共立で扱っている新しいユニバーサル基板
ユニバーサル基板 片面フェノール 115×160mm UP-201
これが、「21-116」の後継品のようです。

| | コメント (0)

2023年9月 8日 (金)

工具は使ってみなきゃ使い勝手が分からない

「ツール類の購入」、「こりゃエエやん」というのも
あるし「こんなもんかぁ」とか「2度と買うかっ!あほ」と
いうゴミもどきのものにも出会います。

先日のこと、とあるメカ系制御回路基板の試運転で、
大量の端子台をゆるめたり締めたりする案件が発生
しました。
サトーパーツの端子台「ML-250」、これの7pと8pが
基板の両端に付いています。
P12_20230908133901

試運転のための検査治具回路をつなぐのに、
  (1)端子台のネジをゆるめる 合計15本
  (2)治具につながる小基板を差し込んでネジを締める
  (3)通電試験
  (3)OKとなればネジを緩めて治具基板を外す
  (4)ネジを元通りに締める
ひたすらこの動作をしなくちゃなりません。

P13_20230908134001

ほんとに大量にあるのなら「ピン治具」を作って
もらってとなるんですが、そこまでの数じゃあり
ません。
  (忘れた頃にやってくるような仕事)

そこで・・・充電式ドライバーを買ってみました。
近所のホームセンターへ行って・・・
あれこれ見てて選んだのが
ベッセルの「電ドラボール・ハイスピード」
「No.220USB-S1DR」
P11_20230908134101
締め付けトルクを可変できるのが良かったのですが、
置いてませんでした。
この外箱の写真に、「端子台での作業風景」が映ってい
たんで「こりゃ良いかも」と手を出しました。
しかし・・・失敗でした。

・回転が速い
 最大締め付けトルクが「0.4N・m」と他の電動ドライバー
 よりだいぶと弱くなっていますが、軸の回転が
 1200RPMと速いのです。
 今回の用途、ネジを外すんじゃなく緩めたいだけなのに、
 勢い余ってネジが端子台から抜けてしまうのです。

・締め付けトルクがまだ強い。
 「0.4N・m」でも締めるときはしっかり過ぎるぐらいに
 締まっちゃいます。 
 治具の端子が接触するだけでOKなのに、きつく締まって
 しまいます。
 試験が終わってネジを緩めるとき、緩める時のトルクが
 不足して、手で補助しないと緩まないという事態が発生。
 締まりすぎです。

・スイッチが使いにくい
 中間位置で停止するスライドスイッチで締め・緩めを
 操作します。
 今回は机上に置いた回路の端子台に対し、ドライバー
 を垂直に立てて使います。
 ドライバを握って親指でスライドスイッチを↑・↓操作
 するわけですがこれがアウトです。
 ちょんと動かしたいのに、良いところでストップできない
 のです。
 緩めるとき、このせいで回し過ぎが発生し、ネジが抜け
 ちゃいます。 回転が速いというのもあります。
 スライドスイッチじゃなく、ボタンスイッチが欲しい。
P14_20230908134101

せっかくですんで、「中」を見てみました。
  ※スイッチ、改造できないかと
   思ったんですが・・・無理そう
P15
青いのが電池
P16
スライドスイッチが基板に乗ってます。
P17
モータと減速機のギヤ
P18

使い勝手の良い電動ドライバー(締め付けトルクを小さく
できるような)ないでしょかね。

乾電池で動かすようなおもちゃのようなのを買ってきて、
外付け電源で、電流リミッタでトルクを監視するか・・・

※追記
AC100V仕様のクラッチ付ドリルドライバーは
こんなのを持ってます。
P21_20230909092301
  ※写真に入れた文字を間違ったぁ。
   正しくは「リョービ」。

大物装置のネジ外し、ネジ締めにはしっかりしてて良いのですが、
今回のような基板に乗った端子台には不向きです。

回転スピードを調節できるので、M3、M4程度ならタップ切り
も可能です。


※ドライバー内の電池と基板
101_20230911103101
USBコネクタは充電用。
基板の裏にも回路が仕込まれています。
濃密すぎて手が出せません。

↑・↓のスライドスイッチは、両端でロックするタイプじゃなく
指を離せば中央に戻ります。

※追記 パッケージの写真
Db11

この写真↓を見て「端子台のネジ締めにも便利」
なんだと考えた。
Db12
ところが・・・ 今回の用途ではアカンかった。
ドライバーを垂直位置にして握ったときの、スイッチ
操作がアカン。
親指がぁ痛くなってきて、ますます反応が悪く・・・
緩めしなのストップが間に合わず、端子台から
ネジが抜けちゃいます。

| | コメント (12)

2023年7月 3日 (月)

危険じゃないけど、ちょっと待てっ! ポカリ入りめんつゆ

土曜日の晩
  ・ガレージ、何人かでわいわい晩ご飯、晩酌
       ここには我が家族は参加せず
  ・FOR氏が「ポカリスエットの粉があるんで
   ペットボトル(2ltr)に入れとくで~」と。
  ・粉(1ltr用)は何かの残り物で、賞味期限がどうのと。
  ・飲みかけの水ペットボトルにポカリを投入して
   冷蔵庫へ。
      →これが翌昼に事件を引き起こします

日曜日の昼
  ・我が家族のお昼ご飯、「そうめん」しようと、
   皆がガレージへ。
  ・私がそうめんをゆがいてネギを切ってる間、
   次男がめんつゆを用意。
   3倍濃縮だったので、氷を浮かべた冷水を用意。
     ※冷えたペットボトルの「水」が冷蔵庫に
      あったのでそれを使用。
  ・女房と次男が先にそうめんを食べ出して・・・
   「めんつゆの味、なんかおかしい?」と思ってたらしい。
  ・私が、「このペットボトル、ポカリが入ってるで」と
   伝えると次男が大笑い。
  ・ポカリ入りのめんつゆになっておりました。

ガレージ冷蔵庫の事情、その場に居てたもんしか
わかりませんわ。

| | コメント (0)

2023年4月26日 (水)

出窓:鯉のぼりを振れたらというリクエスト

「こどもの日」前、現在の出窓。
D11_20230426093101
鯉のぼりが二つ。
右側の3段のは、回転テーブルに乗せていて
回っています。
中央の2段の、これはクリップで止めている
だけで静止。
その下の横行ブランコは左右にユラユラしてます。
D12_20230426093301

この2段の鯉のぼり「左右に振れたら可愛いのに・・・」
というリクエスト。

モータの回転運動をカム機構的なもので左右の振りに
すれば良いのですが、減速機付のDCモータ、けっこう
うるさい。
常時回転は嫌がられます。
  出窓の裏側にピピちゃんの寝床(鳥カゴ)
  があるんで、現在の出窓、音がうるさいのは
  停止中です。

あれこれ考えられますが、
 「秋月で買ったマイクロサーボがあったはず」
と引っ張り出してきました。
「SG90」 です。でも手に入れたのはずいぶん
昔ですんで現行品とは性能が異なるかもしれません。

出窓、常時動いている(光っている)ものだけでなく
人感センサで人が来た時だけ電源が入るように
しているのがあります。
  ※暗くなると天井に照明が点る。

これを使って「振る」ことを試してみました。
その予備実験です。

マイコンを使えばサーボ制御のPWMなんか簡単
に出力できますが、ここはあえてアナログで。

まずは左右に「旗振り」するための元信号となる
正弦波
 稲葉 保さんの精選アナログ実用回路集
にヒントがあります。
S12_20230426094801
「長周期でも安定」というのが特徴。
これを単電源で動くようにアレンジ。
周期は2秒ほどに。
S13_20230426094801
VR1で中央電圧を決めて、VR2で振幅を調整します。
  ※A2Aの働きは「レールスプリッタ」とも
   言えます。

こんな波形が出てきます。
W11

この波形でサーボへのPWMパルスを振れば、左右に
棒を振れるかと考えたのです。

PWMパルスの発生は2つの「555」で。
S14_20230426100001
これで動いたんですが、あれこれ問題が発生。
まず上図の黄マークの回路。

人感センサーによる電源on/offでの「起動・停止」だと、
起動時に短パルスが出てしまい、棒が目一杯まで振っ
ちゃってから設定した振幅に落ち着くのです。
これでは、あきません。

電源投入後、正弦波の振幅がが落ち着いてから
PWMパルスを出すようにしないとということで、
リセットICを追加しました。
   ※これだけで面倒やなぁ!モードに。

起動の様子です。
Wa000
3秒ほど遅らせてPWMパルスを出すようにし
ました。
しかし、電源断時の停止位置との関係で、
「パサッ」っと急に振られることがあります。
  ※もうひとつやなぁ。

もう一つの問題が電源電流。
上の波形を見ても分かりますが、1.0Aほどの
ピーク電流が流れるのです。

もうちょっと詳しく見ます。
リセット解除、起動直後のPWMパルスと電源電流。
Wa001

安定駆動中の様子。
Wa002

この電流パルス、アナログ回路には大敵で
PWM制御パルスがちょっと振られてしまい、
振り幅が不安定になることがあります。
  ※ブレッドボードでの試運転
サーボモータへの電源供給ラインと制御回路の配線、
安定した制御のために、ちゃんとしておかないと
いけないようです。
  ※デジタルだと気を使わなくても・・・

ということで、サーボモータによる旗振りはあきらめて、
単純にカムか押し棒で旗を振ることを考えてみます。
駆動モータとその減速機構の音も含めて、出直しです。


※そうそう CMOSのオペアンプ。 安価に買えて
便利だった「LMC6482」、秋月が扱いを止めて
しまいました。
  他の部品店ではむちゃ高価に。
今回はNJU7062 を使いました。
  ※参考 単電源オペアンプの入出力特性を調べる

| | コメント (5)

2022年9月28日 (水)

回路設計はデータシートの熟読から。 スペックをちゃんと調べろ!

8ピンのATtiny85、14ピンのATtiny84のA/D入力絡みで
ちょいと失敗。

◆状況
・テスト用ジグ作り。
・内蔵のADCを使ってアナログ電圧を測定。
   サーミスタで温度測定
・基準電圧はできるだけ低くしたい。
   サーミスタの自己発熱の防止
・内蔵基準電圧の1.1Vを外に引っ張り出せれれば
 良いんだが、tiny85もtiny84もそれはできない。
   Arduino UNOのATmega328Pは可能
・基準電圧を外部に持たせて、Arefピンに供給か。

こんな考えで回路を組んだのです。

◆参考:基準電圧の切換
ATtiny85の場合
VccかArefか、内部の1.1Vあるいは2.56V。
85_0

ATtiny84の場合
VccかArefか、内部の1.1V
84_0

この基準電圧選択で
 「内部の1.1Vが使えるんだから、Arefピンに外部の
  基準電圧として1.1Vを加えてもかまわないだろう」
と、勝手に推測。

これが間違い。
A/D変換のスペック表を見ますと・・・
ATtiny85
85_1

ATtiny84
84_1

いずれのチップもAref:外部基準電圧の最小値は「2.0V」

外部から1.1Vを入れると・・・
  A/Dから全ビットHのデータが出てきます。

Arefに入れてる電圧が低いんやぁ」の原因に到達するのに
えらく手間取りました。
I/Oの初期化ルーチンで、A/Dの基準電圧をVccや内部電圧に
切り替えると正しく変換。
おもわく通りのデータが出てきます。
ところがArefにして外部からの1.1Vだとアウト。

その後、データシートを熟読したら「最小2.0V」という
記述を発見
したという次第です。
  Aref電圧も徐々にアップすると、1.5Vくらいから
  データが出始め、2.0Vのちょい手前から安定になる
  という挙動でした。

 

| | コメント (0)

2022年4月19日 (火)

Arduino IDEでRaspberry Pi Pico:millisをwordで処理した時の異常

2022年4月14日:Arduino IDEでRaspberry Pi Pico:32bitマイコンがバグを生む
この検証用スケッチを書いてみました。

/*****  millisを使った時間待ち  *****/
// uint32_tではなくwordで
word ms_0;
word ms_1;
void delay2(word dly)
{
ms_0 = (word)millis(); // 開始値
while(1){
digitalWrite(2, HIGH); // テスト用パルス出力
ms_1 = (word)millis(); // 現在値
if((ms_1 - ms_0) >= dly) break; // ★1 時間経過
// if((word)(ms_1 - ms_0) >= dly) break; // ★2
digitalWrite(2, LOW);
}
}

/***** SETUP *****/
void setup() {
Serial.begin(9600); // TX
pinMode(2, OUTPUT); // PD2
pinMode(3, OUTPUT); // PD3
pinMode(LED_BUILTIN, OUTPUT); // LED
}

/***** LOOP *****/
void loop() {
byte f_xLED = 0; // LED点滅用
word cnt = 0; // loopカウンタ
char tx_bff[64]; // 送信文字列
while(1){
f_xLED ^= 1; // LED トグル
digitalWrite(LED_BUILTIN, f_xLED);
delay2(1000); // 1000ms wait
sprintf(tx_bff, "#%4d %5u %5u",
cnt, ms_1, ms_0);
Serial.println(tx_bff); // 改行
cnt++;
if(cnt > 9999) cnt = 0;
}
}

★1 と ★2の違いが重要。
★2は引き算結果を(word)でキャストしています。

Arduino UNOで動いていた<★1>の処理、
これをRaspberry Pi Picoに持ってくると、
  cnt ms_1 ms_0
 # 61 62002 61002
 # 62 63002 62002
 # 63 64002 63002
 # 64 65002 64002 ←ここまで動いて停止

数値の比較ができず(32bitのマイナス値になる)、
時間待ち関数から抜け出せません。

これを<★2>のようにすると、Pi PicoでもArduino UNO
でもオーバーフロー発生部分を無事に通過できます。
こんな具合。
  cnt ms_1 ms_0
 # 63 64002 63002
 # 64 65002 64002 ←ここで止まっていたのが、
 # 65   466 65002  (65536+466=66002) 通過
 # 66  1466  466
 # 67  2466 1466
 # 68  3466 2466

符号なし16bit値同士の減算、オーバーフローが起こっても
16bitならうまく「差」が算出されます。
「466 - 65002」は16進だと「01D2 - FDEA」。
「01D2 - FDEA = FFFF・03E8」となり、不要な上位の
「FFFF」は捨てられて下位の16bit値、「03E8」が出てきます。
16進の03E8は10進で1000。
ちゃんと1000ms待ちが動きます。

それが32bitマイコンだと「暗黙の型変換と符号拡張」 が悪さをして、
「01D2 - FDEA = FFFF・03E8 = -64536」とマイナスの値になって
しまいます。
  ※符号なし16bit = word = uint16_t で比較されるつもりが
   符号付の long = int32_t (32bitマイコンでは int だ) で
   比較が行われるのです。
結果、1000msの経過がチェックできません。
今回の例では、減算値ms_0は65002と固定されています。
ms_1が0~65535の間を変化しても、1000を越える値は出てきません
いつまでたってもこのdelayルーチンから抜け出せないのです。

このスカタンの場合、65秒ほど経てば「あれ? なんかおかしい
と気が付くわけですが、もっと複雑な処理で、異常の出現まで
時間がかかるような場合や、条件が重なった時だけ発生する
ものだと、むちゃ怖いバグになってしまいます。

8bitマイコンで正しく動いていたルーチンを32bitマイコンに
持ってくると、転けてしまって動かない。
よく考えておかないと、こんなことが現実に起こります。
「暗黙の型変換と符号拡張」 、昔のルーチンを借用する時は
どうぞ気をつけてください。

| | コメント (0)

2022年4月14日 (木)

Arduino IDEでRaspberry Pi Pico:32bitマイコンがバグを生む

Arduino UNOの「int」は16ビット
それがRaspberry Pi Picoになると「int」は32ビットに

Arduino UNOだとついついRAMをケチりたく
なって、255までの数値でOKなら「byte」でと
「スケッチ」を書いてしまいます。
8ビットで済むところをwordやintにするのは
もったいない・・・ はい。ケチです。

そんな考えで作ったプログラムをPicoに持って
くると思わぬ「バグ」が生じます。
  ・Arduino IDEでRaspberry Pi Pico:PWMでD/A出力してA/D入力を試す

このスケッチ中で使っている時間待ちルーチン。
bkdelay」という名で、1ms単位の時間待ちをしている途中、
シリアル入力があったら時間待ちを中断するという機能を
持たせています。
1秒待ちなんかしてる時に、「もぅエエからはよ終わろうぜ
に対処します。

さて、この時間待ち。
割り込みを使わずに管理するとなると、millisを呼び出して
時間経過をチェックするという処理になります。

millisは32bit値で最大1193時間、50日ほどを計時できます。
「そんな長いこと待たへんのんで16bitでエエやん」と
ケチるわけです。  (16bitだと65秒)
その「ケチな考え」が32bit CPUでバグを生んでしまいます。

今回のルーチン。
/***** Break処理付のdelay *****/
// シリアル受信あればdelayを中断
void bkdelay(word dly)
{
word tn, t;
  tn = (word)millis();    // now
  while(1){
   t = (word)millis();    // 経過
   if((word)(t - tn) >= dly) break;
   if(Serial.available())  break; // 受信データ
  }
}

目標待ち時間dlyと経過時間(t - tn)を比較している
んですが、すべて16bit値で計算していました。
  ※Arduino UNOだから。
  ※UNOの時は(word)を付けてなかった。
  ※(t - tn)、符号無しwordだとtとtnの大小が逆に
   なっても差の値は正しく出てきますんで。
ところが、Picoは32bitで内部処理。
16bitで減算して比較するつもりが、32bit値に型変換され
てから比較されるのです。
  ※「暗黙の型変換と符号拡張」というヤツです。
tとtnの大小が逆になったらマイナスになってしまいます。
tnの値によっては、いつまでたってもdlyを越えることが
できません。

ということで、減算式(t - tn)の前に付けた
キャスト演算子(word)
これを忘れると動かないわけです。

※教訓:32bitマイコンはRAMをケチるな!

ちゃうちゃう。
 「暗黙の型変換と符号拡張」に注意!ということで。


※millis時間判定の異常、検証用スケッチの紹介
Arduino IDEでRaspberry Pi Pico:millisをwordで処理した時の異常


| | コメント (1)

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)

2021年6月30日 (水)

混ざる・・・熱収縮チューブがぁぁ

現場に持って行った「熱収縮チューブ」を入れた箱。
いわゆるタッパー。
仕切りが付いていて4つに分かれています。
それが・・・ 何かの拍子、横から縦になったのでしょうね。
混ざってしまいました。

N1_20210630113901

過去にはこんなことも。
   ・15kΩと51kΩが混ざる
「茶緑橙」 と 「緑茶橙」 の逆襲!
   ・コネクタ・ピンのオスとメス

今回のスカタンはタッパーの仕切りとフタの位置。
微妙に隙間が空いているのです。
そこを通って、熱収縮チューブが内部で移動。
みごとに混ざってしまいました。

どのくらいの間隔か・・・
   撮影が難しい。
中央の十字に赤マークを入れてフタをして。
押さえたときと離した時でこれだけの差。
Newimage1
   ↑
  GIFです。 クリックしてみて。

この隙間が原因でした。

| | コメント (11)

2021年2月 2日 (火)

ダイソーのUVレジン液、UV-EPROM消去用紫外線ではなかなか固まらない・・・

カラーLEDの集光用に小さな「レンズ」が欲しかったので、
ダイソーのUVレジン液を買ってきました。
11_20210202142701

「紫外線なら固まるやろ」っと思いながらUV-EPROM消去器
(いわゆる殺菌灯をタイマーで点灯)の中に入れました。
   ※これ使うのひさしぶり

ところが・・・固まらない。
10分ほどして取り出してみたら、固化したのは表面だけ。
裏返したりしながら、結局、1時間ほどかかってやっと硬化。

調べてみたら、硬化する適切な波長が違うんですな。
殺菌灯は「水銀蒸気」の放電で波長253.7nm
レジンを硬化させるには365~375nmあたりっと書かれています。

今度使う時は、それ用のをちゃんと用意しますわ。


※検索
紫外線パワーLEDでUVEPROMは消去できるか?: エアーバリアブル ブログ(2012/10/06)
EPROMの消去に成功 | 電脳伝説(2016年5月11日 )
E17殺菌電球を光らせるのにはコツが必要でした | kohacraftのblog
悠々趣味の日々: 簡単にできるEPROMイレーサの製作

ストロボでマイコンが暴走した!?(プロセッサ誌1989-6)


| | コメント (3)