Help me! (助けて!)

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)

2018年11月22日 (木)

ボリューム軸を回されないために・・・保護金具

客先からのhelp。
『下間さん、こんな部品、知らんかな?』っと。
現物として有るそうなんですが、メーカーや型番が不明という状況。
   ※写真をまだもらってないので、想像で。
こんなものらしいです。
ツマミが付かない可変抵抗
・パネルに取り付けてあって、マイナスドライバーで
 調整できるようになっている。
・調整完了後、簡単にさわれないようにしたい。
・パネルに見えているボリューム軸のネジ溝に回し込んで
 回転軸を隠してしまう部品、これが欲しい。
こんなモノだそうです。
※想像で再現↓ (笑)
11
マイナスドライバーを使って軸を回すタイプの可変抵抗。
パネルに止めねじが見えている。
そこに、保護金具を回し込めば、軸は簡単に回せなくなる。
12

おそらくこんなものかと。
金属製らしいですが、樹脂でもOK。
ネットで調べようにも、部品の一般名称が不明でして、
画像検索してもそれらしきものが出てきません。

お知恵をお貸しください。

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

2018年10月29日 (月)

トラ技Jr.での工場めぐり

先週金曜日、トラ技編集部の方が来社。
  ※残念なことにスケジュールの都合で
   ガレージには来られずで。
あれこれお話の中で、こんな依頼が。

・トラ技の別冊、トラ技Jr. (トラギ・ジュニア)
 の記事に関して。

B12

 ※解説:「トラ技Jr.」は季刊の小冊子。
    毎春号は本誌の付録になりますが、他の号は
   「頼まないと」手に入りません。
   しかし、学生さんと25歳以下の新人エンジニア
   さんには無料で送ってくれます。

B11

・トラ技Jr.の記事で、今号(2018年秋)が第1回目の
 連載が「オームぼうやの工場めぐり」。
 工場の見学記をイラストで紹介という企画です。
   ※絵になっちゃうんで製品や装置、工程の秘密は
    守られます。
 今回の記事は「プリント基板の製造工場」。
  素材が、いろんな工程を経てプリント基板ができ
  あがってくる様子がイラストで紹介されています。

A14

・「見学して記事にできる工場、下間さん知りませんか?」っ
 という相談です。

・電気、電子関連じゃなくてもOK。
 機械屋さんでも可。
 面白いものを作っているところを見学したいっと。

どなたか、お知恵を。

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