日々の記録

ほどよく書いてきます。

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

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でシェアする

Aliespressからの荷物配達

2023年03月11日 22時55分24秒 | その他雑記

Aliexpressで時々買い物をするが、たいていなんとか到着する。
最近、下記のような状態異常といったものに陥りがちで何が起こったのか気がかりである。

結論としては、日本郵便、ヤマト運輸、佐川急便以外の運送会社が運んでいるという状態のようである。
AZ projectという運送会社が持ってきました。上記の大手輸送だとシステムがCAINIAOのと連携できているので配達まで追えるが、それ以外の会社に渡すと状態の反映ができなくなってしまうのかなと思っている。

 

CAINIAO(菜鳥)のほうももちろん一緒。

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

FreeCAD

2023年03月03日 23時52分22秒 | CAD/CAE

最近力学の計算が面倒くさくて、家でも会社でも使えるCADツールがないかと思って探していたらFreeCADなるものに出会った。
Linux(家)でも会社(Windows)でも使えるので、便利と思って使っているが、やはりなかなか便利である。

例えば回転曲げの疲労試験片に働く応力分布なんかもある程度計算ができるので、検算代わりに使ったりしている。

 

なお、立体図からの平面図作成のところは未学習なので、平面図面はJw_cadで書いていたりする。

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