Pythonで自動測定

Pythonで直列共振の自動測定をやってみた。FGはAD9833とRP Picoを組み合わせて、PCからシリアルで周波数が設定できるようなものをブレッドボードで作った。測定はhp34401Aを使用してpyvisaライブラリを使って行った。

昔、98BASICで測定したような感じで、簡単なプログラムを書きながら測定できる。測定範囲や点数はコードで簡単に変更できて、70行ほどのプログラムで測定、グラフ表示してCSV保存できるので、プログラミング入門にはちょうど良いと思う。

トラ技のカーブトレーサを作ってみた

トラ技にArduinoを使ったカーブトレーサの記事が出ていたので作ってみた。液晶は以前秋月で買ったMSP2807を使い、DAは秋月で入手できるMCP4922、マイコンはAE-ATMEGA328-MINIを使用した。ソフトは4911用サンプルをMCP4922に合わせて設定を変えただけですぐに動いた。MCP4922は外部Vrefなので5Vから分圧で2Vを作ってVrefバッファ―をONにした。bit数が異なるが、ソフトはそのまま使えるように作ってあった。

トラ技のカーブトレーサ

写真は2SC1815を測ったところ。記事にはDA出力が0-4Vと書いてあり、MCP4802の内臓Vrefは2.048Vなのにおかしいなと思ったらDAのゲインをx2にしてあった。hfeの確認に便利に使えそうだ。

気象ステーションにwebサーバー機能追加

picoWで作った気象ステーションにwebサーバー機能を追加して、ambientにアクセスしなくても現在値が読めるようにした。

picoは2コアなので別々に動かすのがいいのかと思ったが、難しいようで、uasyncioを使った非同期処理の例があったので、その方法で実装した。webサーバーはmicrodotを使用して、ルートに対して上記のフォーマットでhtmlを返す簡単なものにした。変数をグローバルにしたり、WDTを入れたりして見にくいプログラムになってしまったが、ambientへのアップロードとweb serverを両立して動くようになった。マイコンのプログラムというよりVB.NETのようなプログラムになったので、いっそのことVBで書けるようにしてほしいところです。

オフグリッドの余剰充電システムへの改造

系統連系のトレンドが取れた。

充電時間帯は9時ー16時にしてあり、9時に充電が始まって11時頃に終了している。リチウムは1kWhで、約半分使用しているので、これぐらいで満充電になる。エコキュートは10時からお昼までONになっている。この日は深夜で沸かしていて、昼間は天気が良くなったので手動でONにした。まあ想定通り動いているが、売電(余剰)はまだ大量にあるので、蓄電池容量を増やしたいところである。

ちなみに数日前に久しぶりに30分ほどの停電があり、居間に電気を供給しているこの蓄電システムが活躍してくれた。

オフグリッドの余剰充電システムへの改造

オフグリッドシステムのPVモジュールを外して、商用充電器を取り付け、系統連系システムの売電電力で充電するように改造してみた。

久しぶりにVBに触った。

売電電力は連系システムのロガーのデータをWeb表示できるようにしてあるので、それを利用して取得して、充電器の電力以上(充電器容量300W)売電している場合に充電器をONにする。充電器は電源スイッチに並列にフォトMOSをつないで行っている。自作インバータモニターのLVDSwitch4の余っている接点を使っている。インバータはPV発電が無くなる夕方から朝にかけてONにするようにした。今日は天気が悪く、売電がマイナス(購入)なのでテストにならないが、うまく動くと余剰を少し自家消費に回せると期待している。

ストリングモニターをArduinoUNO R4 WiFiに変更

太陽光発電のストリングモニターをArduinoUNO WiFi2からR4 WiFiに変更した。R4用のライブラリに変更することで大きな変更なくコンバージョンできた。新しいWiFi基板の低消費電力化を期待してのこと。それとWiFi接続の安定性も期待したい。

小さなオフグリッドシステムで動かしているが、WiFi2はバッテリー電圧が低下して電源がシャットダウンしたときにプログラムが消えてしまうことがあるので、それの対策も含んでいる。

気象ステーション計測基板をPicoWに更新2

PicoW+micropythonのシステムだが、結構よく止まる。一つはAmbientへの送信コマンドで、もう一つはWiFiの再接続で止まっている。前者はガベージコレクションを実行することで解決すると書いてあった。後者はWDTで対処することにした。

PicoWでWDTを使用するとSTOPでプログラムを止めても再起動してしまう。そうなるとプログラムの再書き込みもできない。フラッシュクリアを上書きすればWDTも止まるが、そうするとmicropythonの再書き込み、ライブラリの再インストールからやらないといけない。何か良い方法はないでしょうか?

気象ステーション計測基板をPicoWに更新

気象ステーション

下のDavis製ではなく、上の白い方に接続する。風向、風速、雨量、日射センサが付いている。日射センサは小さい太陽光発電セルのシャント電流を測る簡易計測。温湿度、気圧は基板に付けたBME280で計測している。

PicoWを使った気象ステーション計測基板

気象ステーションの計測基板をPicoWを使って再製作した。プログラムはMicroPythonで作り、以前と同様に10分平均をAmbientに送ってグラフ化している。風速入力と雨量入力をヒステリシスに設定しようと思ったが、設定コマンドはMicroPythonには見つからなかったため、1uFのフィルターのみしか付けていない。デフォルトで有効になっていると書いているところもあり、計測値は特にチャタリングは出ていないようだった。WiFi接続ルーチンに問題があるのか、再起動時に繋がらないことがあるので、今後の課題になっている。ESPも同様だが、安定して接続してくれるモジュールが欲しいところだ。

以前の気象ステーション計測基板

これはこれまで使っていたArduino Pro Mini+ESP32の基板。計測はArduino Pro Miniで行って、ESP32はWiFi接続のみを行っていた。

表面実装Trアンプをまた作ってみた

トラ技SPECIAL No.139-4章のアンプを作ってみた。電源が±5Vにできるように定電流源の抵抗を変えて、発振防止をカットアンドトライして、なんとか鳴るようになった。

TrはロームのペアトランジスタIMX1、IMT1、QSX8、QST9を使ってみた。出力バッファ―に抵抗が無いめずらしい回路だが、私の耳には違いは残念ながらわからない。ヘッドフォンアンプということだが、スピーカーで小さい音で聞く分には十分な音量!

MiniWatter2改2とHeadphone Amp3のスピーカー版

MiniWatter2改2
HeadphoneAmp3 for Speaker

ぺるけさんのヘッドフォンアンプ3を秋月で入手可能な部品で作ってみた。ついでにMiniWatter2改の基板間違いを修正して部品を載せ替えた。ヘッドフォンアンプ3のFET差動は2SK2145を使ったのでドライバは表面実装になった。終段はMiniWatter2改と同じ。1回目にDCコネクタの極性を間違えたり、スピーカー端子の穴が小さかったりして時間を食った分、今回は2種類とも一発で動いた。
ヘッドフォンアンプはスピーカー用にパラメータを変える記事を参考にした。小さい音でしか聞かないので全く問題なくスピーカーから音が出る。バイアスは80mAになった。消費電力は約3Wと少ない。どれをBGM用にするか迷うところ。