なかのにっき

最新版はこちら。 突っ込みは各日付の BBS エントリのほか、 メール (nakano@st.seikei.ac.jp) や フォーム からどうぞ。 なおスパム除けのため、BBS 機能には 緩い認証を入れて います。 検索エンジンから来た方は、エンジンの方のキャッシュを見るか、 下の簡易検索を試してみてください。


hns - 日記自動生成システム - Version 2.19.5

先月 2025年01月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2025年01月03日(金) [n年日記]

#2 Jupyter Notebook の起動時フォルダ変更

データドライブに変更したかったので。
  1. 「スタート」メニューの Jupyter Notebook アイコンを右クリック→その他→ファイルの場所を開く
  2. エクスプローラから JN アイコンを右クリック→プロパティを選択
  3. 「リンク先」の %USERPROFILE% になっているところを --notebook-dir="D:\JPYNB" に変更
  4. 作業フォルダーも %USERPROFILE% から D:\JPYNB に変更
で実行したらそのようになった。 こちら に同様の記述がある。

#1 Python Serial で SCPI

とりあえず電源だけで動かしてみるの巻。

Jupyter のルートフォルダ確認:

import os
print(f"{os.getcws()}")
でわかる。自分は C:\Users\nakano だった。

jupyter → .py:

参考こちら
jupyter nbconvert --to python .\hoge.jpynb

というわけでひとまずできたもの:

#!/usr/bin/env python
# coding: utf-8

# In[1]:
import serial
import time
import sys
import matplotlib.pyplot as plt


# In[2]:
class Spe:
    def __init__(self, port):
        try:
            self.spe = serial.Serial(port, 115200, timeout=None)
        except:
            print(f"{port} の機器を認識できません")
            self.spe.close()
            sys.exit()
        self.spe.write('*idn?\r\n'.encode())
        line = self.spe.readline()
        idArray = line.decode().rstrip().split(',')
        print(f"{idArray[1]} is ready\n")
        self.setV(0.0)
        self.setI(0.0)
        self.setVL(5.0)
        self.setIL(0.1)
    def __del__(self):
        self.outOff()
        self.setV(0.0)
        self.setI(0.0)
        self.setVL(5.0)
        self.setIL(0.1)
        self.spe.close()
    def setVL(self, vlimit):
        self.spe.write(f"VOLT:LIM {vlimit}\r\n".encode())
    def setV(self, voltage):
        self.spe.write(f"VOLT {voltage}\r\n".encode())
    def setIL(self, climit):
        self.spe.write(f"CURR:LIM {climit}\r\n".encode())
    def setI(self, current):
        self.spe.write(f"CURR {current}\r\n".encode())
    def outOn(self):
        self.spe.write('OUTP ON\r\n'.encode())
    def outOff(self):
        self.spe.write('OUTP OFF\r\n'.encode())
    def getV(self):
        self.spe.write("MEAS:VOLT?\r\n".encode())
        line = self.spe.readline()
        return float(line.decode().rstrip())
    def getI(self):
        self.spe.write("MEAS:CURR?\r\n".encode())
        line = self.spe.readline()
        return float(line.decode().rstrip())


# In[3]:
spe6102 = Spe("COM4")
spe6102.setVL(12.0)
spe6102.setIL(0.5)


# In[4]:
spe6102.setV(12)
spe6102.outOn()
voltage_data = []
current_data = []
for n in range(11):
    current = 0.01 * n
    spe6102.setI(current)
    time.sleep(1.5)
    voltage = spe6102.getV()
    current = spe6102.getI()
    voltage_data.append(voltage)
    current_data.append(current)
    print(f"{voltage},{current}")
spe6102.outOff()
del spe6102


# In[5]:
plt.figure(figsize=(8,6))
plt.plot(voltage_data, current_data, marker = 'o', linestyle = '', label = '100 ohm')
plt.xlabel('Voltage [V]')
plt.ylabel('Current [A]')
plot.savefig('SerialTest.jpg')
plt.show()
ChatGPT さんに添削してもらったら、del spe6102 するんじゃなくて
with Spe("COM4") as spe6102:
    ....
するほうがええで、と教えてもらった。まあそうだけど、このあと複数の機器を使うことになるので、今回は一応このままに。

こんなグラフができた。つないだのは 100Ω の抵抗。

わりと出力が指定とはばらつくな…まあ電流の小さいところだからしょうがない?

ChatGPT(o4) とのセッション:

いつもの。
コメント [全部読む/投稿する]

2025年01月02日(木) [n年日記]

#1 OWON Single Channel DC Power Supply Pogramming Manual

SPE6102 のコマンドリファレンスマニュアル。これどこからリンクされているんだろう…

ひとまず必要なのは、 くらいかな。機能は自明と思うので略。数値は V, A 単位。

今日の学び:

Jupyter notebook のブロックの後ろには、最後に評価された関数の返り値が出力される。ということで最後が
ser.write('OUTP OFF\r\n'.encode())
だったりすると、書き込んだ文字数の 10 が表示されるのであった。 これを抑制するには、コマンド末尾に ; をつければよいだけ。; は文句切なので、 うしろが空文、すなわち評価が None になるので出力が抑制されるということらしい (参考こちら)
コメント [全部読む/投稿する]

2024年12月30日(月) [n年日記]

#2 OWON の SPE6102

USB で繋ぐとすぐに COM4 デバイスができた。CH430 のドライバは MS さんが自動的にインストールしてくれる。だが python の serial 使って *idn? を送ってもうんともすんとも言わない。

定番の確認作業として teraterm の serial COM4 でつないでコマンド送ってもうんともすんとも言わない。

でいろいろ試した結果、デバイスと teraterm の baudrate を 115200 にしたら *IDN? に返信が返った。そういうことなのか…

んでさらに紆余曲折あって、
import serial
ser = serial.Serial('COM4', 115200, timeout=None)

ser.write(b'*idn?\r\n')
line = ser.readline()
print(line)
ser.close()
したら
b'OWON,SPE6102,24251887,FV:5.1.0\r\n'
なる返答が戻ってきて第一ステップクリア。

嵌まったところは: というあたり。めんどくさい。このへん pyvisa 使えば幸せになれるのかしら。 しかし Keysight IO libraries suite を学生の皆さんの PC にインストールさせるのはちょっとヘビーすぎるだろうなあ。

ところで SPE6102、背面のメインスイッチ切っても Windows のシリアル接続が消えないんだがこれは…

ChatGPT 4o さんにコンサルした記録:

まあそんなわけで。

#1 anaconda の jupyter notebook

来年の授業の仕込み。自分は VScode+WSL の python という環境に慣れているんだが、これは必修の「プログラミング基礎」で使っている環境なので。

Anaconda の Distribution から、メアドを Submit して Windows 64bit 版を取得してインストール。 Just me で、その他設定は変更なし。

スタートメニューの "Jupyter Notebook" を起動し、サーバが立ち上がってアプリの選択になったら Google Chrome を選ぶ(これ VScode にしたらどうなるんだろ?)

Chrome の Jupyter Home タブから、"Upload" で以前作った学生実験用の jpynb ファイルを取得し、ダブルクリックで選択すると Chrome ブラウザの別タブでノートが開く。Run ボタンで実行できる。結果は Shift+右クリック で出てくるメニューからコピーして貼れる (参考こちら)

pyvisa のインストール:

Home タブの File→New→Terminal で Jupyter Notebook Terminal というタブが開くので、
conda install conda-forge::pyvisa
するとインストールされる。 (参考こちら)

これは Windows だとどうやら PowerShell なのね。
conda list
すると出てくるリストに
pyvisa                    1.14.1             pyhd8ed1ab_1    conda-forge
があったから、たぶん入ったのかと。

でも Keysight の IO Libraries Suite を入れるステップが超重かったので、pyserial を入れる方針に変換。

pyserial のインストール:

こちらは
conda install anaconda::pyserial
で完了。 (参考こちら)

参考 anaconda のアップデート:

参考こちら。

本体は
conda update -n base conda
パッケージは
conda update --all
でいける模様。
コメント [全部読む/投稿する]

2024年12月22日() [n年日記]

#1 WSL2/Debian 環境構築

いろいろあって Windows10 を初期化したので、ツルシからインストールした。
  1. Windows Store から PowerShell 7.4, Windows Terminal をインストール
  2. PowerShell を開けて
    wsl --install -d Debian
    wsl --set-default-version 2
    
  3. ここで Windwos Terminal に Debian エントリができていなかったのでスタートメニューから Debian を一度アンインストール
  4. 再起動
  5. wsl が自動的に異動して Debian をインストールした。username/password を聞かれるので入力。
以上が終了したら Windows Terminal にも Debian メニューができてた。先に WT 入れろということですかねえ。
コメント [全部読む/投稿する]

2024年11月20日(水) [n年日記]

#1 Let’s Encrypt の証明書を失効・削除する手順

certbot revoke --cert-path ほげほげ.pem
でやる。UPKI のほうで証明書とったので、LE のは失効させたほうがいいかなと。
コメント [全部読む/投稿する]

以上、5 日分です。
タイトル一覧
カテゴリ分類
book
dept
issp
labo
paper
snap
stock
vsj
Powered by hns-2.19.5, HyperNikkiSystem Project

中野武雄 (NAKANO, Takeo) <nakano@st.seikei.ac.jp> Since 1999-10-07
RSS feed, 更新時刻, LIRS エントリ, アクセス制御 (解説)

中野のホームページへ