Help me! (助けて!)

2019年5月17日 (金)

レーザーモジュール、何かいいのは?

メカの位置合わせに使ってられたレーザー。 ・・・30年前の。
故障原因は高圧モジュール。
手が出せません。

11_15

右側へレーザーが出ていく。
レーザー管の先端。
12_12

発光している様子は不明。
シールには「1mW」。
『5mくらい先でスポットがあれば』というリクエスト。

この箱の中に「レーザーポインタ」を仕込めば良いわけなんですが
電源はAC100Vなんで電池は×。

市販のレーザーモジュールに電源を付けてと考えています。
何か、良いの、ありませんかね?
  ・寿命
  ・スポットの集束度(調整可能なの?)

やはり気になるのは寿命。
LEDの劣化 のようにどんどん暗くなる・・・は避けたいんで。
実力は買ってみなくちゃ分かりませんかな。


※追記
レーザーモジュール、やってきました。
   結局、電源とともにDigikeyに注文。
L12

点光源のと線光源の、2種類買ってみました。
もう一つのレーザーポインタはCPU.BACHさんが送ってくれたもの。
参照用に。
L11

3m離れた所からだとこんn具合。
L13

これから箱に組み入れます。


※箱入れ完了
10_2

文鎮:ハンダ付け補助ツール の佐藤テック君にこんな保持金具を作ってもらいました。
11_17

12_14

13_8


※追記
比較に使ったレーザーポインタの中身
・http://igarage.cocolog-nifty.com/blog/2019/06/post-f44955.html



| | コメント (2)

2019年5月 2日 (木)

マイコン型導通チェッカー、今後のあれこれ

満足できる完成形となって頒布を続けているマイコン型導通チェッカー、その製作メモを綴じるファイルを見ていてこんなことが気になり出しました。

※現状、満足している内容
(1)電源スイッチを操作しなくても電源オンを実現。
   とうぜんオートパワーオフ。
(2)通電している回路に触れても壊れない。
   24Vは平気。100Vでも短時間は大丈夫。
(3)検出抵抗1Ωを目指すを実現。
   ゼロドリフトアンプの性能のおかげ。
(4)前バージョンより音を大きく
   マグネチックサウンダを使用。


この中で、もうちょっとどうにか出来ればなぁというのが(2)。
「短時間なら100Vは大丈夫」は実現しているのですが、これを
  「ず~っと大丈夫」「200Vでも大丈夫」
にできないかというものなのです。
実際に100Vを加えた様子はここ→導通チェッカーに100Vを加えると
  ※ZAQのゴタゴタで動画は喪失してます

これ、こんなふうに考えてみました。
現在の保護抵抗R1とR2(1/2W10KΩ)の直近(過電圧だとこれが発熱)、この抵抗に直列にPTCサーミスタ(温度上昇で抵抗値増大)を入れ、過大電圧による抵抗の温度上昇で抵抗が焼けるのを防止できるのじゃないかと・・・

ざっと回路に示すとこんな具合。
  (クリックで拡大↓)
D1_1

ところが使えるPTCサーミスタが見つからないんですよね。
例えばムラタの発熱検出用の素子。
Murata1
80℃を越えると抵抗値が20K→100Kと上昇し、これだとうまく保護できそうです。
でもこれの耐圧が「32V」。
サーミスタの抵抗値が回路のR1と同じ10KΩになると、例えば100Vが加わっているすると、R1とサーミスタにはそれぞれ50Vの電圧が加わることになりサーミスタの耐圧を越えてしまいます。
  ※最大定格ということで、素子の破損が起きるかもしれない。
   電圧がゼロに戻ると回復するのなら使える可能性はあるかも。


TDKのを探すと過電流防止用のが見つかります。
Tdk1

これ、耐圧はOK。
ところが、発熱による抵抗値上昇点温度が高くって、これだと電流制限がかかるまえに(10KΩだと100Vで10mA)抵抗が焼けてしまいそうです。
あれこれPTCサーミスタのカタログを探してみましたが、エエのが見つかりません。
これとういうのがあればすぐにでも実験してみたいところです。


それともう一つ。
ファイルにこんな回路案が綴じられてました。
現状の回路は8ピンのATTINY25Vマイコンを使っています。
それを14ピンのATTINY44にして、内蔵の差動アンプ(20倍増幅できる)を使って「1Ω検出」を目指すというプランです。
ゼロドリフトアンプを減らせるかも、ということです。
今ならATTINY841でしょうか。(Vバージョンを選ばなくても同型番のチップで低電圧動作できる)

Bzx2

さらに・・・このメモには忘れていた機能が追加されていました。
下の方に記したフォトカプラ。
AC入力タイプのフォトカプラで入力端子を見ておけば、端子間に電圧が加わったことを検出できるぞ(通電中の回路を導通チェックしようとしている)というアラーム機能の追加です。
実現すればちょいとうれしい機能かもしれません。

これを使って、電圧印加を検出して、入力保護抵抗R1とR2を遮断すれば良いわけですが、その素子をどうすればという問題を解決しなくちゃなりません。
はてさて。
フォトMOSリレーは高価だし。
何か良い回路は?


| | コメント (2)

2019年4月11日 (木)

このコネクタどこのだろ?

現物が無くって、写真だけ。
おそらく「ヒロセ」の「RM12BRD-3PH」と「RM12BPE-3S」かと思うんですが、いかがでしょうか?
R21

指の大きさで外径を予測。(私の手じゃない)
RM12のプラグだと、長さ41mmでギザギザ部が18Φ。
どうでしょうか?

たぶん、間違いないかな。

| | コメント (0)

2019年2月28日 (木)

電気二重層コンデンサの劣化?!

電気二重層コンデンサ いわゆるスーパーキャパシタを使って
ちょいと回路をごそごそ。
   ※停電時のバックアップ用回路です。
パーツボックスから手持ちの部品を引っ張り出してきて、
仮つなぎで実験。
   ※これ、10年以上未使用状態で箱の中で眠ってい
    たはず。 ものによっては20年になるかも?
ところが・・・・
思っている性能が出ないのです。
すぐに放電しちゃうのです。
充電電流を見れるように電流計をつないでみると、
想定以上の時間、電流が流れています。
同じように部品箱で眠らせていた別のスーパーキャパシタに
変えても、似たような挙動をしています。
なんというか「不活性化」しているような感じ。
充放電を繰り返してみて、調子が戻るかどうか試してみます。

※繰り返してると、調子が出てきた感じ
やっぱ、新しいモノを買ってためしてみないといけないようです。


※極端にアカンのもある。
こりゃ、新品がいるなぁ。

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

2019年2月20日 (水)

「gawk」の正規表現・・・続き:文字の順番を入れ替える

もう一つ、gawkの処理で「簡単に!」を実現したののが
「負論理記号」。

例えば「74138」。
X1
部品ライブラリの「ピン名称」、Bsch3Vだと「¥G¥2」のよう
¥が先に来て負論理のupper barが次文字の上に出ます。

+PIN,N:A,DF:FFFFFFFF,L:L1,T:,M:1,-PIN
+PIN,N:B,DF:FFFFFFFF,L:L2,T:,M:2,-PIN
+PIN,N:C,DF:FFFFFFFF,L:L3,T:,M:3,-PIN
+PIN,N:\G\2\A,DF:FFFFFFFF,L:L5,T:N,M:4,-PIN
+PIN,N:\G\2\B,DF:FFFFFFFF,L:L6,T:N,M:5,-PIN
+PIN,N:G1,DF:FFFFFFFF,L:L7,T:,M:6,-PIN
+PIN,N:\Y\0,DF:FFFFFFFF,L:R1,T:N,M:15,-PIN
+PIN,N:\Y\1,DF:FFFFFFFF,L:R2,T:N,M:14,-PIN
+PIN,N:\Y\2,DF:FFFFFFFF,L:R3,T:N,M:13,-PIN
+PIN,N:\Y\3,DF:FFFFFFFF,L:R4,T:N,M:12,-PIN
+PIN,N:\Y\4,DF:FFFFFFFF,L:R5,T:N,M:11,-PIN
+PIN,N:\Y\5,DF:FFFFFFFF,L:R6,T:N,M:10,-PIN
+PIN,N:\Y\6,DF:FFFFFFFF,L:R7,T:N,M:9,-PIN
+PIN,N:\Y\7,DF:FFFFFFFF,L:R8,T:N,M:7,-PIN

ところが、OrCADだと「G¥2¥」となって、

文字の後ろに¥があると、その文字の上に
バーが付くのです。

'74LS138'
{X Size =}   7      {Y Size =}   9      {Parts per Package =}   1
L1      1         IN  'A'
L2      2         IN  'B'
L3      3         IN  'C'
L6      6         IN  'G1'
L7      4 DOT     IN  'G\2\A\'
L8      5 DOT     IN  'G\2\B\'
R1     15 DOT     OUT 'Y\0\'
R2     14 DOT     OUT 'Y\1\'
R3     13 DOT     OUT 'Y\2\'
R4     12 DOT     OUT 'Y\3\'
R5     11 DOT     OUT 'Y\4\'
R6     10 DOT     OUT 'Y\5\'
R7      9 DOT     OUT 'Y\6\'
R8      7 DOT     OUT 'Y\7\'
T0     16         PWR 'VCC'
B0      8         PWR 'GND'

単純な文字の入れ替えなんですが、うまい表現が思いつきません。

と同じように、¥の検出で、その直前の文字列の最後尾を1文字
抜き出し、¥を挿入後に抜いた文字を加えるという処理をして
います。
これ、どうにかスマートにする手法って無いでしょかね。

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

2019年2月11日 (月)

gawkの関数:「length」でつまづく!

MS-DOS時代の「jgawk」なら大丈夫なのに、Vectorでダウンロードした「gawk(3.1.5)」でアウト。
「正規表現」 は関係ありません。
おかしな挙動をしたのが「length」。
文字のバイト数を返す関数。
gawkで使うと、おかしなことが起こったんです。
検証のため、こんなテストプログラムを実行。
{
    n = length($0);           # 入力文字列のバイト数
    printf("n:%d\n", n)     # いったん確認
    r1 = "";                    # バッファをクリア
    for(i = 1; i <= n; i++){    # 入力文字数でloop
        c1 = substr($0, i, 1);     # 1文字取り出し
        r1 = r1 c1;                 # バッファに文字として結合
        printf("%s:%d\n",r1,length(r1));   # バッファの文字列とバイト数を表示
    }
}
これがgawkだと、
12345  ←入力文字
n:5    合ってる
1:1    ところが、増えていくはずが・・・
12:1
123:1
1234:1
12345:1   5文字ループしたのに「1」
abcdefg   7文字入力
n:7    合ってる
a:1    ところが・・・
ab:1
abc:1
abcd:1
abcde:1
abcdef:1
abcdefg:1  やはり1のままで違ってる
正しい値は・・・
行末の数字が1234・・・と+1ずつ増加しなくちゃなりません。


で、正しい答えを出す方法。
gawkのままで
 1:     r1 = r1 c1 "";           # 空文字を結合
 2:     printf("%s:%d\n",r1,length(r1 ""));   同じく
 3:     起動オプションに -W ctype=ASCIIを加える
             ctype=SJISだとダメ。
jgawkだとそのままでok
むちゃ悩んだぞ~~~っと。
どうしたものか。
※結果・・・
gawkのバージョンを上げるということで対応。(4.1.4に)
ここからダウンロード。
 
Free download of the version 4.1.4 (Aug 2016)
(Version 4.1.4)

Win32 executable

Version in English Version in English



※ところが・・・
4.1.4では日本語がアウト。
起動オプションも見当たらず。

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

2019年2月10日 (日)

「gawk」の正規表現・・・続き

の続きで、gawkの正規表現で悩んでいます。
・やりたいこと
OrCADの部品ライブライーソースファイルの中に出てくる
こんな文字列(「'xxxx'」というふうに「'」で区切られている)内の
「スペース」を「_」(下線記号)に変えたい。
・例 文字列
  'VOLTAGE REGULATOR'
  L1  3  SHORT   IN  'PLUS INPUT'
    R1  'C2' CLK  OUT 'CLK OUT'
・なぜか
gawkの「スペースで文字列を文字単位に」分割するという
機能、「'」で区切られた文字列内にスペースがあると、
そこで切られてしまいす。
「'  '」内のスペース、これを「_」(下線記号)に変えて、
分割されないようにしたいわけで。
・条件
1行に複数個の「'  '」が出現することもある。
・試したのはこんな処理
    while(1){                                 # 「'  '」がいくつもあるかもしれないので
        match($0, /'[^']*'/);
        if(RSTART == 0)     break;     # 「'  '」がなければおわり
        s1 = substr($0, 1, RSTART-1);             # 「'  '」の左側
        s2 = substr($0, RSTART, RLENGTH);   # 「'  '」の部分
        s3 = substr($0, RSTART+RLENGTH);   # 「'  '」の右側
        gsub("'", "@", s2)      # 「'  '」部分の「']をいったん@に
        gsub(" ", "_", s2)       # 「'  '」部分スペースを「_」に
        $0 = s1 s2 s3            # あらたな$0
    }   
    gsub("@", "'", $0)         # @を「'」に変えて元に戻す
「'  '」が複数個出るかもということで、「']をいったん@に変えて、
1行の先頭から処理するようにしました。
gawkらしく、もっとスマートな方法は?
   ※Cだとチカラ技で処理を進めるですが、gawkの書式はパズルです。
     1文字ずつ読み出して「'」が来たらスペースを「_」にというほうが
     良いかな。
そういや、こういった記述にも対応しないと。
R1    24   OUT 'QA''' ← QA'が信号名で 二つの「''」で
文字としての「'」を示すわけでして・・・。

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

2019年2月 9日 (土)

「gawk」の正規表現で

の記事に対するCPU.BACHさんのコメントに関して・・・

「LIBSX」という「OrCAD」の部品ライブラリソースファイルを、
水魚堂さんの回路図エディタ「CE」の部品ライブラリに変換
するツールがあります。
これ、MS-DOS時代のツールでして「MS-C」で作ったんです
が、これを手直しして「BSch3V」用の部品ライブラリ「LB3」
変換ツールに出来ないものかと、ちょいと試行錯誤してみ
ました。
で、ツールですがCでコンパイルするんじゃなく、「gawk」を
使ってみました。

  ※MS-DOS時代からjgawkはあれこれと使っています。

そこで、OrCAD部品ソースに出てくる文字列処理での
「正規表現」につまずいちゃいました。

部品ソース内にこんな行が出てきます。

'7400'  ←部品名
{X Size =}  4 {Y Size =} 4 {Parts per Package =}  4 ★
L1      1   4   9  12         IN  'I0'  ←ピン指定
L3      2   5  10  13         IN  'I1'
R2      3   6   8  11 DOT     OUT 'O'
T0     14  14  14  14         PWR 'VCC'
B0      7   7   7   7         PWR 'GND'

★部分で部品の大きさとパッケージ内の個数を
示しています。
前処理としてコメント文字列である「 {xxx} 」を消して、
数字「4 4 4」だけを残したいのですが、この↓正規表現
ではうまくいきません。

   gsub(/{.*}/, "", $0)

{ }に囲まれた文字列という正規表現なのですが、
   {xxx} yyy {xxx} zz が
   1   2      3    4

残したいyyyまで消えて、最後尾のzzしか残らない
のです。
「/{.*}/」だと、{ }のくくりを、2と3を飛ばして「1~4」にし
ちゃっています。
ほんとは、1~2で処理。続いて3~4で処理と{ }を含
めて{ }内の文字列を消して欲しいのです。

しかたなく、↓のようなスクリプトでもって{ }を消して
います。
1文字ごと読み出して { 出現でコピーをオフ、} 検出以降
にコピー再開。

  ※こりゃawkのスクリプトじゃないぞ(笑)

#####   コメントを取り除く      #####
#   読み出したデータの中から「コメントフィールド」を取り除く
#   OrCADのライブラリソースのコメントは「{...}」となっている
#   直接バッファを操作して「{}」とコメントを取ってしまう
#   gsub(/{.*}/, "", $0)だと
#   「{xxx} yyy {xxx} zz」が yyyまで消えてzzしか残らない
function rmvcmnt(s,  c,f)
{
    r_bff = "";
    f = 0;              # 1で文字コピー禁止
    for(i = 1; i <= length(s); i++){
        c = substr(s, i, 1);                # 1文字取り出し
        if(c == "{")        f = 1;          # 「{」以降はコピーしない
        else if(c == "}")   f = 0;          # コピー再開
        else if(f == 0){                    # 文字連結
            r_bff = r_bff c;                # {xxx}以外の文字はコピー
        }
    }
    return r_bff;       # コメント削除した1行
}

正規表現を使っての何か良い手順はありませんかね?

※参考
ファイルから読み出した1行は「$0」に入る。
function rmvcmnt(s,  c,f)の s は関数への引数。
その次にスペースをあけてのc,fは関数内部だけの局所変数。

ほかにも、「 { } 」で囲まれたこんなコメントがあります。

      {000000000011111111112}
      {.....................}
      {012345678901234567890}
{  0.0}##...................
{  0.1}#.##.................
{  0.2}#...##...............
{  0.3}#.....##.............
{  0.4}#.......##...........
{  0.5}#.........##.........
{  0.6}#...........##.......
{  0.7}#.............##.....
{  0.8}#...............##...
{  0.9}#.................##.
{  1.0}#...................#
{  1.1}#.................##.
{  1.2}#...............##...
{  1.3}#.............##.....
{  1.4}#...........##.......
{  1.5}#.........##.........
{  1.6}#.......##...........
{  1.7}#.....##.............
{  1.8}#...##...............
{  1.9}#.##.................
{  2.0}##...................

これも行の中から消してしまいたいわけでして。

{X Size =}  、 {Y Size =}、{Parts per Package =}は
固定文字列なんで3つを個別にgsubで先に処理。
その後、「{  2.0}」などを正規表現で削除かな。

こんな具合に。

#    コメント文 {xxx} を消す
   gsub("{X Size =}", "", $0);                # コメント削除               
    gsub("{Y Size =}", "", $0);
    gsub("{Parts per Package =}", "", $0);
    gsub(/{.*}/, "", $0);                    # 残りの{...}を全部
   :

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

2018年12月 4日 (火)

「14780」って?

とある赤外線リモコンの修理依頼。
正体不明なTO-220の石が・・・

12_2

電源ライン(単4電池4本)から、ダイオードを通ってこのICに入ってます。
「M」のマーク、モトローラそれともミツミ電機?
  1pin:GND  2pin:入力  3pin:出力
なんですが、電池のラインに入ってるんでむちゃローパワーなはず。
おそらくレギュレータに間違いないかと思うんですが。。。。
それともう一つデータが出てこない石が載ってます。
沖の「MSM5564」。
タイマーICっぽい感じ。

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

ボリューム軸いじり防止金具

ボリューム軸を回されないために・・・保護金具 の現物がやってきました。

こんなのでした。 9mmで0.75mmピッチ

11

12

13

近所の鉄工所↓
   佐藤テック君とことは違います。
   中川連合の町会長仲間でNC機を扱っている
に見積依頼・・・最低個数とその価格
しました。
最初からローレット加工された棒材があるとのこと。

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