日々の記録

ほどよく書いてきます。

ベンチトップデジタルマルチメーターR6452A

2023-06-25 21:53:21 | その他雑記

アドバンテスト(今のADCMT)のデジタルマルチメーターR6452Aを買ってみた。

この測定装置は、Bchに独立した測定ユニットが入っていて、電流と電圧を独立で測定することができる。
電池の電圧測定と、ハイサイドの電流測定を同時にできる。そんなメリットがありまして、ちょっとヤフオクで買ってみたのです。

 

現行の7352とは違ってBchとCOM端子は5MΩの抵抗を持っていますので、微小な電流が流れることに注意が必要です。


入力インピーダンスの項目に、B入力端子-COM端子間5MΩと記載あり。現行の7352Aでは、ここには最大印加200Vの記載のみがある。7352のAchとBchはフォトカプラで切られているので、多分5MΩよりは大きな抵抗値になっている(に違いない)。

測定を自動でやりたいのでシリアル通信をとおもっていたが、PCから装置へのコマンド送信は大丈夫だが、装置からPCへのデータ転送ができない。

シリアルケーブル、RxDとTxD、GNDだけつないでいるが、もしかして、送信レディーの配線かな。

TxDは、本器内でデータセットレディ(DSR)の状態をチェックし、DSRがFALSEであれば出力を中止します。DSRがTRUEになれば転送を再開します。

DSRの端子を接続してないからだめなのかな。クロスケーブルの接続を見ると4と6を接続したらいいっぽいな。

 

よしあとではんだ付けだ。面倒くさいからクロスケーブル買ってしまうのも方法ではある。

はんだ付けのほうが楽なのでやってみたところ、ちゃんとデータが返ってきた。
Li-ion電池の電圧が表示されている。

 

あとは、設定のコマンドを覚えていってボタンを配置したらアプリが出来上がる、ような気がする。

コメント (3)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

パワーMOSFETの接着絶縁シート

2023-06-05 21:19:49 | その他雑記

最近のパワーデバイスは絶縁シートをネジでとめて固定というのがオーソドックスなパワー素子の固定方法であった。

最近接着剤でくっつけるタイプのものが市販されていて、量産品で見かけるようになってきた。マウントして加熱すると硬化してくっつくので量産とも相性がいいだろう。

こういうやつ。もっと大きい素子でも使えるし、ネジ止め穴のあるものでも貼り付けて終わり。

BERGQUIST BOND PLY TBP 1400LMS-HD

 

とても興味深い。今までだったらSMDだったっぽいような素子が上のように放熱フィンに固定できる。

頑張ったら両サイドに放熱フィンを取り付けることもできるだろう。

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RP2040Zero

2023-05-21 17:45:52 | AVR

Raspberry Piというシングルボードコンピュータが発売されて久しいが、このラズベリー財団がRP2040というマイコンを売り出して若干気になっていたのだが、ヘタをすると8bitマイコンより安いので、これはと思って買ってみた。

AtmelのATMega32u4のボードは1250円くらいだったのだが、RP2040Zeroというボードは400円+送料140円くらいだった(Aliexpressで)。

Type-Cの端子で、多分表についているのグラッシュメモリ、裏のがマイコン。

はじめは表の写真だけみでやけに入出力ピンの少ないマイコンだなと思ってたが、そんなことは無かった。裏面にでかいのあった。

CPU:Cortex M0+ 133MHzマイコン デュアルコア
メモリ:264kB
フラッシュ:外付け2MB

その他色々。

133MHzのデュアルコア、メモリがちょっと少ないけど相当色々できそうだな。

最近データロガーとか欲しいのだが、16bit ADCとRTCなんかをつないでやったら自分でできそうだな。きっとmicroSDカードへの書き込みなんかもできるだろう。

現状ではArduinoの開発環境でやっているが、MicroPythonでもできるらしい。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

CH9329 Serial HID変換IC

2023-05-21 17:41:16 | プログラム

シリアル信号からUSB HIDデバイスに信号を変換するICというものがすでに存在していた。

秋月電子に。

モジュール状態ではAliexpressからも入手可能なようである。

 

しかし、9600baudがデフォルトなので、今使いたい天秤だと設定変更が必要なので、マイコンで作っていくのが良さそうかな。なんて。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RS232CレベルとTTLレベルコンバーター MAX3232

2023-05-09 23:04:18 | AVR

MAX3232というICがある。チャージポンプ回路を内蔵し、TTLレベルから真のRS232Cレベルに変換してくれるIC!!

ナイス!名前からしてマキシム・インテグレーテッドだろうとおもったら、Analog Devicesが買収していた。リニアテクノロジーもまさかの買収されたとおもったら、こっちもか。

さて、それはおいておき、このMAX3232を搭載したものが非常に安価で販売されている。

RS232Cコネクタ付いて48円??え?

Amazonでも5個で750円?

 

買ったのだが、買ってから気がついた、これメスコネクタ?装置はオスコネクタで、えーっと?クロスケーブルがいいのかストレートケーブルがいいのか判断できないぞ?ちょっと配線図を確認しないといけないですね。

かk人すると、、、ICのレシーバーRXが3ピン、トランスミッターTXが2ピンという配置のようだ。

今回ターゲットにしている電子天秤はA&Dのものなので、、例えばGH-252の取説を見ると2が、ん?Rxが送信データ?ん?レシーバーでRx、トランスミッタでTxだとおもったが、どうなってるんだろう?接続相手の配線を書いているのだと思うのだが・・・また検討しようと思います。


コメント (11)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Arduino Pro MicroでUSB-HIDデバイス(キーボードなりすまし作戦)

2023-05-04 14:26:36 | AVR

Arduino Pro MicroというATMega32U4というUSBがそのあま接続できるマイコンボードを買った。
アマゾンで2つで2500円くらい。

サイズが小さくて、特定の目的のために使うものならば結構使い勝手がいいのではないだろうか。

マイコンに書き込むプログラムは下記のようなもの。
A&Dの電子天秤はRS232Cが2400baudがデフォルトのようなので、2400baudでやっている。あれ、パリティーとかストップとか7bit 8bitとかそのへんどうなってんだろ?多分世の中のメジャーな設定になっているはず。

#include "Keyboard.h"

void setup() {
  // open the serial port:
  Serial.begin(2400,SERIAL_7E1);
  // initialize control over the keyboard:
  Keyboard.begin();
}

void loop() {
  // check for incoming serial data:
  if (Serial.available() > 0) {
    // read incoming serial data:
    char inChar = Serial.read();   
    Keyboard.write(inChar);
  }
}

 

しかし、肝心の電子天秤が今ないので、一旦作業は保留。さてうまく通信できるかな。
そして、次の疑問。RS232Cって何ボルトの電圧振幅必要なのかな??

今使っているOSがUbuntuなので、Windowsとはちょっと違う認識方法だが、うまく行っている様子。
Bus2にデバイス8としてArduinoがぶら下がっているようだが、CDC_ACM, HIDの2パターンで認識されていて、Arduino IDEなどからはおそらくシリアルポート越しの書き込み、HIDデバイスはHIDデバイスとして書き込まれるのかな、なんて思っている。

$ lsusb
Bus 002 Device 008: ID 2341:8036 Arduino SA Leonardo (CDC ACM, HID)
Bus 002 Device 004: ID 045e:0039 Microsoft Corp. IntelliMouse Optical
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 5986:051b Acer, Inc 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 3: Dev 8, If 2, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 3: Dev 8, If 0, Class=Communications, Driver=cdc_acm, 12M
        |__ Port 3: Dev 8, If 1, Class=CDC Data, Driver=cdc_acm, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 2: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M

 

 

HIDデバイスのコードを書き込んだデバイスであっても接続すると、シリアルポートの書き込み先にデバイスが出てくる。

 

ふと思ったが、キーを適当に叩くようなプログラムを入れておけば良かったんじゃないだろうか。よしやってみよう。
デバイス認識に時間かかりそうだから、5秒待たせて出力。

できた。この機能、シリアル通信の中身をテキストファイルに吐き出すのにも少し便利かもしれない。
いや、シリアル-USB変換使ってTeraTermとかで受信したらそれでOKかもしれないけど。

Keyboardには次の関数があるらしい。
Keyboard.begin()
Keyboard.end()
Keyboard.press()
Keyboard.print()
Keyboard.println()
Keyboard.release()
Keyboard.releaseAll()
Keyboard.write()

 

文字だが、あくまでもHIDデバイスなので送信できる文字に制約がある。Shiftを押して操作みたいなこともできるが、処理が煩雑になるので一旦は数字の伝送に専念してみる。

例えば、
+-,.0123456789abcdefghijklmnopqrstuvwxyz<>?_/ という文字を送信すると
~-,.0123456789abcdefghijklmnopqrstuvwxyz<>?=/ という文字になって返ってくる
+の記号がうまく処理できていないことがわかる
なんでだろうかと調べてみると、日本語キーボードと英語キーボードの配置が違う生だったようだ。

日本語キーボードに慣れないかと思って調べたらやっているひとがいた。
が、どうやったらいいのかわからないので色々調べている。

 

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初の実家帰省

2023-05-03 16:05:17 | 

二週に分けて父方、母方の生まれ故郷までそれぞれ2泊3日の旅をしてきた。

長距離の移動になると疲れもあるので、全車に追従してくれるレーダークルーズコントロール、車線逸脱をアシストしてくれるやつとか、そういうのがあると楽なのかな、と思った。今の車は速度維持のクルーズコントロールしかないのだが、レーダークルコンあるといいのかな、なんて思っている。

満タン法で17km/Lほどの燃費だった。
CX-5 ディーゼル  ODOメーター84000km

コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RS232CシリアルからUSB HIDデバイス

2023-04-25 21:31:23 | AVR

電子天秤など、読み取りボタンを押すと測定データをRS232Cから出力するものが結構ある。

便利な端子ではあるが、今どきだとUSB-RS232C変換ケーブルをさしてドライバをインストールして・・・面倒臭い。

ミツトヨのビッカース硬さ試験は読み取り値をPCに転送するとき、USB HID(Human Interface Device)のキーボードに扮してくれるので接続してすぐ使えるというメリットがある。

このモデルはすでにArduinoの標準にあるっぽい。
https://docs.arduino.cc/built-in-examples/usb/KeyboardSerial

マイコンにはUSB HIDに化けてくれるものがあるし、シリアル通信に対応したものがあるので、これ自分で作れるんじゃないか?というように思った次第。→作った

例えば電子天秤の場合、読み取った値をそのままHIDデバイスとして吐き出せばいいので、すが、

A&Dのフォーマットを見ていると標準だと、Stable, Unstableとかヘッダ、カンマ、測定値、スペース、単位、CRLFになっているようだ。面倒くさいな。

 

ただ、SIF TYPE4はNumericalフォーマットなのであろう、数字をバコーンと出すだけなので、液晶画面に表示サれている数字をそのまま吐き出すだけ。これなら、マイコンはシリアル通信で受け取った文字列をHIDデバイスとして吐き出して行けばいいだけである。

 

AandDの天秤は下記の状態がデフォルトの状態のようだ。
ボーレート:2400bps
ビットパリティ:7ビットEven
ターミネータ:CRLF
データフォーマット:A&D標準フォーマット(上記のST,+2.300000  g CRLF)

 

さて、データが7bitって何?って思ったのだが、アスキーコードが7bitなので、英語文字列を送るだけなら7bitで十分な様子。

ということは、マイコンのシリアルポートは、
Serial.begin(2400,SERIAL_7E1)

ということになる。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PID制御

2023-04-12 23:30:47 | その他雑記

恒温槽の温度が振動しているのを見かけた。

PID制御のパラメータ設定がだめなのだろうなと思ってとりあえずオートチューニングやってみたら結構いい感じに収まった。

もう少しパラメータを変更しても良いかもしれない。

 

しかし、出荷時にPIDの値を設定したり、納品時に一回オートチューニングやったらある程度の値が設定できそうだけど、設定しないのかな。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

装置の照明制御がシリーズレギュレータだった

2023-03-28 22:24:46 | 光り物

会社で使っている装置の照明、明るさの制御になんとトランジスタのシリーズ制御を使っている。

で、中途半端な明るさで使っているとオーバーヒートで止まるという仕様。

制御のトランジスタはTO-3のものを使っている。びっくりだよ。装置の右側にA4サイズくらいのヒートシンクがついてて、それで放熱しきれないって設計ミスではと思う。。

 

 

ニコンの実体顕微鏡の照明はサイリスタを使った位相制御でまだこっちのほうが省エネだぞ・・・

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Savitzky-Golayフィルタ

2023-03-26 23:27:21 | プログラム

Savitzky-Golayフィルタ関数を定義します。この関数では、入力データの配列、窓幅、多項式次数、微分の次数を引数として取ります。

Function SavitzkyGolayFilter(data As Variant, window As Integer, order As Integer, deriv As Integer) As Variant
    Dim i As Integer, j As Integer, k As Integer
    Dim sum As Double, a As Double, b As Double
    Dim coef() As Double
    Dim filteredData() As Double
    Dim n As Integer
    n = UBound(data)
    ReDim filteredData(n)
    ReDim coef(order + 1, window)
    For i = 0 To n
        sum = 0
        For j = -window To window
            If (i + j >= 0 And i + j <= n) Then
                For k = 0 To order
                    coef(k, j + window) = coef(k, j + window) + (j ^ k)
                Next k
                sum = sum + data(i + j)
            End If
        Next j
        filteredData(i) = sum
    Next i
    For i = 0 To order
        For j = 0 To window
            coef(i, j) = coef(i, j) / coef(0, window)
        Next j
    Next i
    For i = 0 To n
        a = 0
        For j = -window To window
            If (i + j >= 0 And i + j <= n) Then
                a = a + coef(deriv, j + window) * data(i + j)
            End If
        Next j
        filteredData(i) = a
    Next i
    SavitzkyGolayFilter = filteredData
End Function

 

実際にフィルタリングを行うには、以下のように関数を呼び出します

Sub ApplySavitzkyGolayFilter()
    Dim inputData() As Double
    inputData = Range("A1:A100").Value
    Dim window As Integer
    window = 5
    Dim order As Integer
    order = 2
    Dim deriv As Integer
    deriv = 0
    Dim outputData() As Double
    outputData = SavitzkyGolayFilter(inputData, window, order, deriv)
    Range("B1:B100").Value = outputData
End Sub

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

エクセルで作る正規分布乱数

2023-03-26 11:25:11 | プログラム

Excelでは、NORM.INV関数を使用して、指定された平均値と標準偏差に基づいて正規分布する乱数を生成することができます。以下の手順に従って、正規分布する乱数を作成してください。

  1. 平均値と標準偏差を決定します。例えば、平均値を10、標準偏差を2に設定したい場合は、それぞれセルに入力します。

  2. NORM.INV関数を使用して、正規分布する乱数を生成します。関数の構文は以下の通りです。

    NORM.INV(probability, mean, standard_dev)

    probability引数は、0から1までの確率値です。mean引数は、正規分布の平均値を指定します。standard_dev引数は、正規分布の標準偏差を指定します。

    例えば、セルA1に=NORM.INV(RAND(),10,2)と入力することで、セルA1に平均値10、標準偏差2の正規分布する乱数を生成することができます。

  3. RAND()関数を使用して、0から1までのランダムな数値を生成します。この数値は、NORM.INV関数のprobability引数に渡されます。RAND()関数を使用することで、平均値と標準偏差に従う正規分布する乱数を生成することができます。

    例えば、セルA1に=NORM.INV(RAND(),10,2)と入力することで、セルA1に平均値10、標準偏差2の正規分布する乱数を生成することができます。

  4. 上記の手順を繰り返すことで、必要な数の正規分布する乱数を生成することができます。例えば、10個の正規分布する乱数を生成する場合は、セルA1に上記の式を入力し、セルA2からA10に同じ式をコピー&ペーストします。

以上の手順に従うことで、Excelで正規分布する乱数を作成することができます。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

VBAで実装するクイックソート(メモ)

2023-03-26 11:21:18 | プログラム

サブルーチンとして次を定義しておく。

Sub QuickSort(arr As Variant, firstIndex As Long, lastIndex As Long)
    Dim pivot As Variant
    Dim pivotIndex As Long
    Dim leftIndex As Long
    Dim rightIndex As Long
    
    If firstIndex < lastIndex Then
        pivot = arr(lastIndex)
        pivotIndex = firstIndex - 1
        leftIndex = firstIndex
        
        For rightIndex = firstIndex To lastIndex - 1
            If arr(rightIndex) <= pivot Then
                pivotIndex = pivotIndex + 1
                Swap arr(pivotIndex), arr(rightIndex)
            End If
        Next rightIndex
        
        pivotIndex = pivotIndex + 1
        Swap arr(pivotIndex), arr(lastIndex)
        
        Call QuickSort(arr, firstIndex, pivotIndex - 1)
        Call QuickSort(arr, pivotIndex + 1, lastIndex)
    End If
End Sub

Sub Swap(ByRef a As Variant, ByRef b As Variant)
    Dim temp As Variant
    temp = a
    a = b
    b = temp
End Sub

 

呼び出しは次のようにする

Dim arr As Variant
arr = Array(4, 2, 3, 1, 5)
Call QuickSort(arr, 0, UBound(arr))

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ホールセンサーの動作確認

2023-03-21 16:50:18 | 電子工作

ホールセンサーの動作確認どうするか

ON/OFFの出力のタイプのセンサーは下のようにオープンコレクタのタイプのICがある。
これが動いているかどうかは、Outputが裸だと動きが分からないと思うので、VccとOutputに10kΩくらいの抵抗をつないでやるとOutputの電圧がVccと0Vを行ったり来たりする。
なんなら、LEDと抵抗を入れておいたらLEDの点灯消灯でも判断できる。

他にも、出力のトランジスタのコレクタにプルアップ抵抗を内蔵したものもあるようである。こちらは、SK8552というもの。

内蔵プルアップ抵抗があるものだとVCCとoutputに抵抗をつなぐとレギュレータに働く電圧が怪しそうなので、外付け抵抗はつけないほうが良さそう。こちらのタイプはシンプルにOutputの電圧を見たらいいはず。

コメント (4)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近のAliexpressで良かったもの

2023-03-11 23:08:01 | 光り物

最近Aliexpressで買って良かったもの

とても明るいLEDライト。最大輝度の0.1%で発光できるので、ほんのりライトから最大出力まで結構使い勝手が良い。ただ、内部抵抗の大きな電池だと出力が足りないのか、最大輝度時の明るさが足りない気がする。
ドライバは8パラで2.8Aの電流をLEDに供給しているようだ。ざっと10Wくらいってところでしょうか。

明るさを調整しているときに、PWMでやっているはずだろうが、ライトを振ってもチラツキが確認できないのが良い。なおRaが低いので色再現性は悪い。

%

 

20WのUSB-C充電器。小さくてよい。スマホ充電なら20Wで足りるので、便利である。

USB-C 5V/3A, 9V/2.22A, 12V/1.67A
USB-A 5V/3A, 9V/2A, 12V/1.5A

 

 

出力電力を表示するUSB-C充電器というものもあって、これも買ってみた。出力は00.0Wという表示桁数で良い。ただ、2Wとか3Wとかだと表示を消してしまうので、小さな電力の測定は無理だな。

対応する出力
USB-C 5V/3A, 9V/3A, 10V/2.25A, 12V/2A, 20V/1.5A
USB-A 5V/3A, 9V/3A, 10V/2.25A, 12V/2.5A, 20V/1.5A
PPS 3.3-11V/3A

 

コメント (3)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする