パワーLEDで遊んでみる(シーリングライトの実験)

当サイトにはまだまだ蛍光管の照明器具があります。蛍光管の寿命がなかなかきれないのでついついそのまま使用しています。

今回は前回のパワーLEDの実験データを元に照明器具に取り付けてみました。

Caution
現在は調光可能なLEDシーリングライトもかなり安価になっています。今回のような工作は当サイトくらいと思いますが今回使用するパワーLEDはかなり発熱します。また工作如何によっては漏電の危険もあり最悪火災を引き起こすことも危惧されます。あくまで参考程度にとどめておいてください。

シーリングライト
今回換装する器具は古いものですがリモコンが使用できます。

リモコンの動作は全灯 – 減灯 – 常夜灯 – 消灯
チョーク式と同じですね。

この動作に準じて回路を考えてみます。
仕様
全灯 32V 1A 32W
減灯 30V 0.5A 15W
常夜灯 3W LED 適当


オリジナルの内部
全灯 メインのAC100Vは制御基板のリレーを介して供給されます。
減灯 制御電源(AC100V)を加えて2灯(40W,32W)とも点灯のまま光量を落としています。
常夜灯 制御電源(AC100V)でナツメ球を点灯

回路

それぞれの電源は制御基板からAC100Vが送られてくるので全てACアダプタで変換します。
不要になったアダプタはただのゴミですのでゴミ減らしのためにもこの際利用できるものはどんどん投入していきます。
メインのアダプタには富士通(16V 2.5A)を使用しました。連続使用では少々熱を持ちますが実験のとおり過電流に対しても保護回路が働くためある程度信頼しても良さそうです。
減灯には5Vリレーを駆動するため携帯充電器を使用、殻割りをしてAC100Vをつなぎ込みます。
常夜灯は3.3V 2Aアダプタで3W LEDを駆動、全て定格内で使用しています。

全灯回路
ノートアダプタで昇圧モジュールを32Vに設定すると連続フラッシュを決めてくるので間に24Vリレーを入れてやります。リレーはアダプタの電圧が充分に上昇した頃にオンするためフラッシュ現象は免れます。リレーには使い古しですがオムロンのLY2N-D2を使いました。電流容量があれば大抵の24Vリレーが使えると思います。
昇圧モジュールには減灯のためポテンショメータに抵抗をシリーズに入れてあります。
全灯時はポテンショメータ+抵抗で32Vに調整します。

減灯回路
昇圧モジュールを約30Vに設定すると電流は半分の0.5A程度になります。計算式のとおり2.2kの抵抗を入れてこの抵抗の両端をリレーの接点でショートすることで減灯します。

常夜灯はそのまんまですね。抵抗の両端をジャンパーピンでショートorオープンすることで明るさを調整します。

放熱ファン回路
この程度の放熱器ではクーリングファンは必須になると思います。全灯時は16Vから抵抗(2W)で落として8V程度で回しています。減灯時は5Vが使えるためリレーのもう1回路の接点を利用して5Vに切り替えて駆動します。

LEDユニット

昇圧モジュールもかなり発熱してきます。ー端子側に取付ビス用の穴を開け放熱器に半身を密着して取り付けました。ー端子側は共通のためショートしてもOKです。
昇圧モジュールは穴あきタイプを使用したので念の為トランジスタ用絶縁シートを敷いています。


リレー基板
16V,5Vは一旦この基板に入ります。
昇圧モジュールに追加した抵抗の両端からリード線で引き出しこのリレーで減灯します。


器具から不要なものを外してアダプタ類を取り付けていきます。


内部カバーを取り付け、オリジナルのリモコン受光部と常夜灯を取り付け
オリジナルのAC100V引き込みコネクタを取り付け
5V,16Vの線を引き出しておきます。


LEDユニットにはL型アルミ材を取り付け


LEDユニットはカバーに2.5mmの穴をあけて3mmビスを自己タップして取り付け

見える部分はオリジナルのAC100V引き込みコネクタ以外はすべて低圧DCになっています。

以上で取り敢えずすべての取り付けが完了です。


カバーを付けて点灯
画像は器具全体が光っているように見えますが実際は中心部分が強く光っています。
あくまで個人的な感覚ですが全灯時は蛍光管の40W+α、減灯時は30W相当でしょうか。
6畳の部屋ですが部屋全体を照らしてくれます。

取り敢えず全灯も減灯も問題ありませんがやはりカバーをつけると放熱が不足してきます。
通常は省エネということもあり減灯を使うようにしていますがもう少し明かりがほしいところです。
また使い古しの安いファンということもあり深夜の静かな時はファンの音が聞こえてきます。
まだまだ改善の余地ありですね。

パワーLEDで遊んでみる

前回のPiのシャットダウンですが当サイトでは24時間制御回路の電源を入れたままで運用していますが通常の操作では特に問題なく動作しています。新規インストールの後などはPiの動作とAVRの変数値(status)が一致せず電源オフしないときがありましたが一旦AC100Vを入れ直して一からスタートすれば正常に走るのでまあこのくらいはよしということにします。

さて今回は趣向を変えてパワーLEDの実験をしてみました。

LEDは2016/12月頃安かったので購入(50W1個¥190)したものですが30V電源を容易に確保することができず結局お蔵入りになっていました。


最近になってこんな4A昇圧レギュレータ電源モジュールが出ていたので購入してみました。
このポテンションメータ反時計周りで昇圧しますね。これを逆に取付直してやると時計方向で昇圧するようになります。
ポテンションメータは0〜50K約30回転します。各エンドはロックしないので空転です。


なんとか使えそうなので1個追加購入してみました。
上が後から購入したものですが早速変更がありますね。コイルは33uHから47uHに変わっています。
裏側の基板の穴が塞がれてきれいにレジストされています。


チップはXL6009E1という中華チップが載っています。
仕様
入力範囲:3V-32V 出力範囲:5V-35V

データシートをみると出力電圧はVOUT=1.25x(1+RV1/R1)というLM317でみたような式が載っています。
この式からRV1=30kにすると昇圧可能な範囲(条件)であれば入力電圧にかかわらず30V出力することになります。(実際固定抵抗に置き換えるとかなり近い値が出ます)

電源ユニットは5V,12V,24V、旧ノート用アダプタで試してみました。


5V 3A 電源ユニット
無負荷では5V〜48V
50WLEDを接続で5V〜28V
下限電圧は入力電圧に依存します。


12V 4.2A 電源ユニット
入力12Vでは28V近辺で一瞬間をおきますが32V〜33Vまで昇圧します。
LEDへは32Vで1A流れます。ちゃんとハンダ付けすれば安定して昇圧するかもしれません。
LEDは直視できないのであっちに向けておきます。


24V 5A 電源ユニット
24Vでは35V以上昇圧しそうですがLEDも基板もかなりの発熱をします。35Vを確認したところで止めておきます。


パナソニック 15.1V 2.5A アダプタ
このアダプタは24V以下から昇圧していくと32V以上昇圧しますがその設定値で電源を入れ直すと24V位で発振してそれ以上は昇圧しなくなります。


IBM 16V 2.2A アダプタ 富士通 16v 2.5A アダプタ
これらのアダプタも32V以上昇圧しますがやはり電源を入れ直すと1秒位の間隔できれいに連続フラッシュを決めてくれます。ただしこちらはアダプタの電圧が上がりきったところで昇圧モジュールに接続すれば32V 1Aを流してくれます。
昇圧モジュールはアダプタの電圧の立ち上がりでもフィードバックをかけて昇圧しようとします。その際の一瞬のショート状態をアダプタは検出して電圧を止めます。その繰り返しが連続フラッシュになるものと思います。ノート用アダプタは電池を充電するという特性があることからどちらも正常ゆえの現象かと思います。

LEDへは32V 1A(32W)流してやればまあまあの明るさが期待できます。ただしLEDも昇圧モジュールもかなり発熱します。
以上から昇圧モジュールの入力電圧は12V以上、LED及び昇圧モジュールの冷却をなんとかできれば照明に使えそうです。

LED、昇圧モジュールの癖も少しわかってきたのでなにか照明器具にぶち込んでみたいと思います。

Raspberry Pi 電源をシャットダウンする

当サイトのPC環境は99.9%Raspiで運用しています。Win10ノートも1台ありますが電源を入れるときは充電とアップデートがほとんどです。

Raspberry Piも立派なLinuxマシンですのでpoweroff(shutdown)で終了するのですがPi自体は赤いLedが点灯したままです。通常はスイッチ付きコンセントでオフにしていますが、これは大した手間では無いのですがどうもこの一手間が気に入りません。
なんとか通常のPC同様shutdown後はPi自体の電源もオフにしてみたいと思います。

といってもPi自体の電源を落とすので外部からの制御及びその電源が必要になります。
制御にはAVRを電源はオーディオ用に携帯充電器を使用しているのでこれを常時稼働させることにします。また電源OFFのタイミングを計るためPiにも設定を加えます。

環境

raspberry pi 3 2017-08-16-raspbian-stretch
GPIOの仕様はすべて共通のためPiであれば同様に動作すると思います。
余談
8月16日はDebian Day(24周年)ということみたいですね。
Raspberry Piの成功は一重にraspbian=debianの成果といっても過言ではないと思います。8月16日のリリースとはなかなか粋な計らいではないでしょか。

回路

今回はAC100Vを直接制御します。感電、ショート、落雷には充分注意して作業することにします。(ブレーカーを落とすと稀に雷(親父)が落ちることがあります)

AC100Vの制御は秋月のSSRキットを参考にしました。
制御回路にはattiny13a-pu(8pin DIP)を用いPiのGPIO端子(2端子)を監視します。
PiのGPIOはshutdown後はデフォルトに戻るという特性を利用して電源オフのタイミングを計ります。
タクトSWは1クリックで電源ON、長押しで電源OFF(ハングアップ時の強制終了)
通常の電源OFFはPiのシャットダウンコマンドを実行、正常終了後に実行します。
またPi側にも設定が必要なため新規インストールや設定のないカード使用時はジャンパーピンを切り替えて今までどおりの常時ONとすることにします。


ACラインの回路はSSRキットそのものですがZNRの代わりに電源用セラミックコンデンサを取り付けています。今回は誘導性の負荷はないため問題ないと思います。
AVRはPiとI/Oをとるため3.3Vで駆動しています。
LED D3(赤)点灯電源ON
LED D4(緑)点灯電源3.3V
確認、テストで使用します。


壊れたカーステのヒートシンクを切り出して使いましたが当サイトの環境ではほとんど発熱はみられませんでした。モニターの消費電力次第ですが簡単な放熱器(もしくは無し)でも充分と思います。


Pi側には下駄を作成して履かせます。その上にスイッチモジュールを載せています。(直挿しにスイッチモジュールを作成してもOK)
GPIOは物理ピンの33と40を使用(使いやすいピンで)
LED D5は起動時GPIO33をHにして点灯
GPIO40はreboot時の制御で使用

#下駄がうまく作成できるようになればハンダーマン、ソルダーウーマンの仲間入りです!

Piの設定

今回のstretchにはWiring Piが含まれていないのでインストールします。(パッケージがありましたね)

# apt install wiringpi

/etc/rc.local編集

-- snip --
fi
gpio -1 mode 33 out
gpio -1 write 33 1
gpio -1 mode 40 out
gpio -1 write 40 1
exit 0
# systemctl daemon-reload
# systemctl restart rc.local


$ gpio readall

起動時にrc.localが読み込まれGPIOの設定が適用されるタイミングはスプラッシュスクリーンが表示された直後位、LEDが点灯します。それまでは電圧なしとなります。
shutdownコマンドを実行、正常に終了するとLEDが消灯、その後数秒SDカードにアクセスがあります。
AVRはGPIO33ピンの値を検出してパワーオフの実行を開始します。

さてreboot時ですがやはりrebootの際もGPIO33ピンは一旦ローになってしまいます。AVRはshutdownかrebootかは判断がつきません。そのため何らかの方法でAVRにrebootだよシグナルを送ってやる必要があります。(デフォルトのプログラムでrebootを実行するとパワーオフします)
poweroff-helper
このダイアログはwheezyからjessie初期まで使われていたzenityを利用したshutdownプログラムです。
こちらはスクリプト形式になっているので条件を付加することができます。
stretchでも問題なく動作します。

sudo rebootの前に1行追加してやります。

gpio -1 write 40 0
sudo reboot


ファイル名はpoweroff-helper 実行権限を付けて保存します。(ユーザーのホームディレクトリでもOK)当方ではopenboxの右クリックメニューに登録していますがメニューエディタで登録してディスクトップにも追加可能です。

$ chmod a+x poweroff-helper

プログラム

プログラムの作成、書き込みもPiで実行するためライブラリをインストールします。(AVR自体への書き込みは別途書込器が必要です)

# apt install gcc-avr avr-libc avrdude

プログラム(pi3-shutdown.c) 拡張子はtxtにしています。
プログラムは100msのタイマーで割り込み処理していますが計算とあいません。(・・;)計算式間違えてるかも
内蔵RCは誤差もあるのでTCNT0の値を調整します。(実測で合わしてます)
Pi shutdown時のGPIOの電圧なし(L)はGNDレベルではなくフロート状態と思いますのでAVRのPB1,PB2入力はプルアップできません。
基本はGPIO 33番ピンの値を監視しているだけですが微妙にタイミングをとってやる必要があります。
変数(status)を用意して想定される動作を書いています。
status 0 デフォルト
status 1 sw1クリックでパワーオン
status 2 GPIO33がHになるまで約15秒前後+αの時間稼ぎ(60秒 この間GPIO見ない)
status 3 監視(運転)モード GPIO40 L検出でstatus 1へ
status 4 GPIO33 L検出で8秒後パワーオフ
status 5 sw1を3秒長押しで強制オフ
raspbianのshutdownはデバイスをアンマウントできなかった時など90秒待ってからshutdownを開始します。GPIO33番ピンがLになればパワーオフしますが2分経過してもGPIO33 Lにならない時はハングアップしている可能性が高いと思われます。
時間稼ぎの60秒はしばらく様子をみて変更の可能性もあります。

プログラムをビルドしてAVRに書込をします。(書込器はusbaspを使っています)

$ avr-gcc -mmcu=attiny13 -Wall -Os pi3-shutdown.c
$ avr-objcopy -O ihex -R .eeprom a.out pi3-shutdown.hex

AVRへの書込(書込は5VでOK)

$ avrdude -p t13 -c usbasp -U flash:w:pi3-shutdown.hex:a

確認、テスト

AC制御ラインのテスト(感電注意
入力にAC100V、出力に通電の確認できる機器を接続します。(テーブルタップが便利)
基板に5Vを加えるとLED(緑)点灯、ジャンパーピンを差し替え3.3VをON-OFFすることでAC100Vの制御を確認します。

AVR制御基板のテスト
AC100Vラインは危険なので外しておきます。Piと基板を接続、一連の動作はLEDの動作で確認することができます。(5VはPiから利用)(ジャンパーピンはAVR)
Piを起動、基板のLED(緑)点灯 3.3V OK
SW1クリック 基板のLED(赤)点灯 PB3 H OK
15秒前後でSWモジュールのLED点灯 GPIO33 H OK
起動後shutdown実行 SWモジュールのLED消灯 GPIO33 L
8秒後 基板のLED(赤)消灯 PB3 L OK
再起動、同様reboot実行 基板のLED(赤)点灯のまま OK
SW1長押し 基板のLED(赤)消灯 PB3 L OK


テストがOKだったら基板を適当なケースに収めてPiに取り付けます。(貼り付け)

ジャンパーピンによる常時稼働の切り替えは感電の危険があるためケースの外側に小型のスライドスイッチを設けています。
AVRのリセットスイッチも取り付けていますが特に必要ありません。


AVRの待機消費電流は10mA位、オーディオを含めると18mA位と効率を考えてもそれほどでもないと思います。
長時間使用しない時はこれまで通りコンセントスイッチで切っておきます。

コマンドラインからのshutdownは同じように動作しますがrebootはGPIO40をLにしてからrebootを実行します。

$ gpio -1 write 40 0 | sudo reboot

快適なPi3ディストップ環境になりました。

Raspbian Stretchをインストール

ようやくRaspbian Stretchがリリースされましたね。

当サイトでもRaspberry pi 3にインストールしてみました。

jessieからアップグレードもできますがやはり少々問題が出ることもありここは新規にインストールしてみました。SDカードは読み書きは遅いですが容易に取り外しでき、且つ安価なところが最大のメリットと思います。

作業はいつもの通りPi3で行います。

ダウンロードしたzipファイルを展開、カードのデバイス名を確認して書き込みます。

# dd if=2017-08-16-raspbian-stretch.img of=/dev/sda bs=1M
4680+1 レコード入力
4680+1 レコード出力
4907675648 バイト (4.9 GB) コピーされました、 539.979 秒、 9.1 MB/秒

stretchは最低でも8GBのカードが必要ですね。

書き込みが正常に終了したらネットワークの設定をしてしまいます。
ファイルマネージャーでみるとuuidでマウントされています。

$ df -h
/dev/sda1          42M   21M   21M   51% /media/pi/boot
/dev/sda2         4.4G  4.0G  200M   96% /media/pi/037616fd-28fe-4652-8248-2042ea30b929

設定するファイルは以下のとおり(root権限が必要)
/media/pi/uuid/etc/dhcpcd.conf
/media/pi/uuid/etc/wpa_supplicant.conf
現在のPiの設定を追加します。
/etc/hostsに設定をしている場合はそれも書き加えます。

できたカードを差し替えて起動してみます。

ネットワークも無事繋がって起動しました。

今回のstretchはフォント周りに変更が入っており日本語が表示できません。

最初にターミナルからapt updateしてフォントをインストールしましょう。

当方では最初の1回apt updateでエラーが出てしまいましたが2回目以降は正常にupdateできています。
# apt update
Err:1 http://mirrordirector.raspbian.org/raspbian stretch InRelease
Temporary failure resolving ‘mirrordirector.raspbian.org’
——– snip ———
再度実行

# apt update && apt upgrade
# apt install fonts-ipafont

日本語に設定して起動

見た目はjessieのときとなんら変わりませんね。

アプリケーションに関してはバージョンが上がって来るものがあるのは当然ですが

・・・インストール、設定をしていくといろいろと違いに気付きます。

jessieまではapt installすると/var/cache/apt/archives/以下に関連パッケージがすべて保存されていましたがstretchでは保存しなくなりました。

当サイトではPi1Bにプリンタを接続してネットワーク越しにプリンタを利用していますがstretchではPi3にsambaとcupsそしてsystem-config-printerをインストールするのみで利用できるようになっています。

androidスマホのEP171ACは設定なしでMTP接続ができました。ほかのデバイスも/etc/udev/rules.dにrulesファイルが必要でしたがそれも必要なしで動いてくれます。

まだ全部は確認していませんがstretchのデバイスの扱いはjessieと比べると大幅に向上しているものと思います。

またffmpegも復活しているのでインストール可能です。

たまたまかもしれませんがUSBからのSDカードアンマウントでejectが無いと怒られたのでインストールしました。

# apt install eject

Raspbian Stretchのバージョンも9.1になっていますね。

$ uname -a
Linux pi3 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 9.1 (stretch)
Release:	9.1
Codename:	stretch

jessieからの移行はホームディレクトリをコピーしたのですが一部のアプリケーションやダイアログでメニューフォントが非常に小さくなってしまう現象があったため一旦コンソールでログインして~/.configをリネーム、Xで初期状態で起動して再度必要なファイルをコピーし直して復活しました。

またjessieと比べるとChromiumやfirefoxで若干もたつきを感じるように思います。
StretchでもOverclockingしてみました。これは以前設定した内容です。
/boot/config.txt(各値は環境によって調整が必要です)少し下げました

arm_freq=1300
over_voltage=5
gpu_freq=450

# sdram overclock
sdram_freq=450
sdram_schmoo=0x02000020
over_voltage_sdram_p=6
over_voltage_sdram_i=4
over_voltage_sdram_c=4

cpufrequtilsのインストール(特に設定の必要なし)

# apt install cpufrequtils

ダイアログの作成(ホームディレクトリ)呼び出しは~/cpufreq(実行権限が必要)

-rwxr-xr-x 1 pi pi 603 8月 20 2017 cpufreq

#!/bin/sh
ACTION=$(zenity --list --radiolist \
  --hide-header \
  --title="Cpufrequtils" \
  --text="What would you like to do?" \
  --column "Select" --column="Action" TRUE "performance" FALSE "ondemand" FALSE "conservative" FALSE "powersave")

if [ "$ACTION" = "performance" ]; then
  clear
  sudo cpufreq-set -g performance
elif [ "$ACTION" = "ondemand" ]; then
  clear
  sudo cpufreq-set -g ondemand
elif [ "$ACTION" = "conservative" ]; then
  clear
  sudo cpufreq-set -g conservative
elif [ "$ACTION" = "powersave" ]; then
  clear
  sudo cpufreq-set -g powersave
else
  clear
  echo "cancel"
fi

通常ondemand(平常時600MHz)で使用していますがだいぶ快適になりました。
jessieで使用していたアプリケーションもすべてインストールできました。

Raspberry Pi GPIO Zero v1.4を試してみる

Raspbian Stretchなかなかリリースされないですね。基本のRaspbian Stretchは利用可能のようですのでXの変更等もありPi独自の実装などに時間がかかっているものと思います。

いずれ正式なリリースがあると思います。

そんなことでRASPBERRY PI BLOGを見ていたらこんな記事(UPDATES TO GPIO ZERO, THE PHYSICAL COMPUTING API)が目につきました。
Raspbian jessieをインストールしている環境でupdateしていればすぐに利用できるので少し試してみました。

# apt update && sudo apt upgrade

といってもPythonは理解していないのでこの中のコマンドラインツール(pinout)だけですが(^^;o)

確認はターミナルから$ pinout を実行するだけです。

GPIO No.と物理ピンの関係だけなら非常に見やすいですね。

但し、残念ながらgpio readallのようにピンの状態までは表示してくれません。(開発が進めば将来的にサポートされるかもしれません)

$ pinout -r xx
を実行すると初期のPi1やPi1B,A,A+,B+が表示できます。
Raspberry Pi Compute Moduleとよくわからないものもあります。

Pi Zero(W)で試してみる

jessie-lite環境の場合は別途インストールする必要があります。

Wiring Piのインストール

# apt install libi2c-dev git-core

ユーザーのホームディレクトリで実行

$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build

GPIO ZEROのインストール
インストールはPython 3ベースとしました。

# apt install python3-gpiozero

gpioコマンド、pinoutもOKですね。

REMOTE GPIO CONTROLなんか面白そうです。使いこなせるかどうかは別ですが!

Top