白旗製作所

RaXino+RaspberryPi電力計の電力計測部分の製作

この記事の電力計測部(CT~マイコン)の
詳細を書いていこうと思います.

電力計測部の回路は以下の図のようになっています.
CT.png
まず試験負荷としてドライヤーとスイッチを接続し,延長コードの1箇所にCTを取り付けます.
CTの負荷抵抗RLは100Ωとします.これで30A→1Vに変換できます.
ドライヤーは定格1200Wなので,大体12Arms→0.4Vrms→1.13Vp-pか,
これよりも小さいくらいの電流が検出できるはずです.

CTの負荷抵抗値について、秋月電子のHPやデータシートでは負荷抵抗RL=10Ωとしか記載がありませんでしたが,
以下のページを見ると300Ωまでは結合係数もよく計測できそうでした.
CTの最大スペックの80Aまでは使わないでしょうし,30Aで0.1Vだとあまり電気を使っていない時の精度が悪化しそうですので、なるべく負荷抵抗の値を上げて検出感度を高くしたいところです。
一方で、非線形な負荷だと電流のピークが通常の正弦波の倍とかになることもありますので負荷抵抗を大きすぎるのも考えものです。ここでは100Ωとしました.
参考:カレントトランス (秋月 SR-3702-150N/14Z) の特性測定 - ラジオペンチ



これを電流制限抵抗10kΩを経由してRaXino(RX62N)のアナログ入力AN0に入力します.
元は交流波形なのでADコンバータには0V中心に正負の電圧がかかりますが,
マイコンのアナログ入力には保護ダイオードがADコンバータ前に入っているため,
これで負電圧はカットし半波のみ検出することにします.

この回路を以下の写真のようにユニバーサル基板上に実装しました.
DSC_0653_.jpg


以下が負荷抵抗両端の波形です(200kHzのデジタルフィルタつき).
大体1.025Vp-pになっており,
きれいに電流を検出できていそうなことがわかります.
dry2.png

下がADコンバータの入力波形です.
元の波形と比較して負側の電圧が保護ダイオードのVfの-0.5V程度でカットされていることがわかります.
dry3.png

これをADコンバータで1ms周期で100サンプル取得した結果が以下のデータです.
AD生値
ADコンバータの電源は3.3V(この場合デバッガの電源を使ったので3.1Vくらい)で,分解能は12bitですから,
1.025/2/3.1*4096=677くらいのピークが読み取れており,大体一致しています.

このデータ列を全波整流したものとして積算しRMSを求めれば電流の実効値が求まります.
具体的には,
①データ列の2乗和平均の平方根を求める
②2乗の面積を2倍するためsqrt(2)をかける
③AD値→電圧→電流の変換係数(99/4096)をかける
と,10.5Aとなり,概ね正しい電流の実効値が得られます.
これにAC100Vをかければ瞬時電力になります.

以上の内容をマイコンに算出させて,RS232Cで送出させるプログラムを作成してやれば,電力計測部分は完成です.



次は可視化部分を書いていきます。
スポンサーサイト
  1. 2017/08/18(金) 00:44:47|
  2. Raspberry Pi
  3. | トラックバック:0
  4. | コメント:0

Raspberry Piの初期設定

Raspberry Piの初期設定方法を記載します。
既に色々な方が記事にしているので今さらですが、自分の環境ではそのままだと使えなかったものが多数あったので自分用にまとめておきます。
ちなみに、使用しているRaspberry PiはModel A+ V1.1です。

①Raspberry PiのOSイメージの用意
4GB以上のMicroSDカードを用意。
https://www.raspberrypi.org/downloads/raspbian/
からイメージを落として、
Win32DiskImagerで焼く。


②起動
MicroSDカードをRaspberry Piに入れて、キーボード、HDMIケーブルを指して起動。
普通に起動すればOK。OSによってGUIかCUIかが異なる。
初期ユーザIDとパスワードは
ID: pi,
pass: raspberry
パスワードの変更は
passwdコマンドで行う。


③日本語設定
ターミナルから、sudo raspi-configで初期設定画面に入る。
4. localisation optionsのChange Localeで、jp EUC-JPと、jp UTF-8をスペースで選択してOK。デフォルトはen.GB-UKにしておく。
Change TimezoneでAsia Tokyoを選択。
Change Keyboard Leyoutで105のJapaneseのデフォルトを選択して再起動しておく。

(ネットに繋いだ後)
sudo apt-get install ttf-koch-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfont-kaname
sudo apt-get install uim uim-anthy
sudo apt-get install jfbterm
を行い、フォントを導入してから、再起動。

④SSHの有効化
5. Interfacing OptionsのSSHをEnableにする。
(7. Advanced Optionsにはいっていることもあり。OSのバージョンに寄る)

⑤WiFi接続
PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps MacOS X10.10対応 GW-USNANO2A
をUSBコネクタに指す。

GUIでSSIDがステルスでなければ右上のアイコンからWiFi接続出来る。
ステルスの場合、
sudo sh -c "wpa_passphrase [SSID] [PASS] >> /etc/wpa_supplicant/wpa_supplicant.conf"
でconfファイルを作った後、
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
でwpakeyの下に
scan_ssid=1を追加して保存して終了(Ctrl+xでYes(y), Enter)
ifconfig wlan0で接続されたか確認。接続されなければ再起動する。

コンソールの場合、
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
の最終行に
network={
ssid="[SSID]"
psk="[PASS]"
}
を追加して保存

6 IPアドレスの固定
sudo nano /etc/dhcpcd.confで
interface wlan0
static ip_address=192.168.0.X/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
を末尾に追加して再起動
注意:IPアドレスを確認する場合はifconfigを使う

7 セキュリティ設定
raspberry piのアップデート
$ sudo rpi-update
$ sudo reboot
rootへのパスワード設定
$ sudo passwd root
ユーザー名の変更
$ sudo usermod -l AAAA pi
sshのポート番号変更して再起動
$ sudo vi /etc/ssh/sshd_config
$ sudo /etc/init.d/ssh restart

⑧リモートデスクトップ接続出来るようにする
sudo apt update sudo apt upgrade→時間がかかる
sudo apt install tightvncserver
sudo apt install xrdp sudo reboot する。
tightvncを入れないとだめっぽい

⑨コマンドラインからのLチカ
$ sudo su
$ echo 25 > /sys/class/gpio/export
$ echo out > /sys/class/gpio/gpio25/direction
$ echo 1 > /sys/class/gpio/gpio25/value
$ echo 0 > /sys/class/gpio/gpio25/value
$ echo 25 > /sys/class/gpio/unexport
25をexportしてoutに設定し、Hにする、Lにする、その後unexportして開放する。
→開放しないと使えなくなるので注意。
ピン配置はこの辺を参照
http://nejiketa.seesaa.net/article/414258096.html



⑫PythonでLチカ
//Todo


16 python のインストール
sudo apt-get install python-pip
sudo apt-get install python3

17 pythonを使ったシリアル通信
sudo pip install pyserial
sudo nano test.py で以下を記述

# -*- coding: UTF-8 -*-
import serial
from datetime import datetime
ser = serial.Serial(port='/dev/ttyACM0', baudrate=38400, timeout=0.5)
file = 'test.csv'
line = ser.read(1000)
#infinity loop
while True:
    if( ser.inWaiting() > 0 ):
        data = ser.read()
        f = open(file, 'a')
        f.write(data)
        print data
        if( '\n' in data ):
            now = datetime.now().strftime('%Y/%m/%d %H:%M:%S, ')
            f.write(now)
            print now

100 windowsでSDカードのフォーマット
cmd diskpartを開く
list disk list volume SDカードのディスク番号を確認する
select disk 1
clean
create partition primary
format quick で再使用可能になる。
  1. 2017/07/23(日) 14:24:52|
  2. Raspberry Pi
  3. | トラックバック:0
  4. | コメント:0