2023年2月19日日曜日

赤外線で通信する(その2)受信部

 【受信部】

受信部は赤外線を受信モジュール(OSRB38C9AA)で37.9KHzの赤外線キャリヤを受信しPICのEUSARTの受信部に渡す。今回は次のステップを考えてPICにはEUSARTを2セット内蔵するPIC16F15325を選んだ。基本的な回路は次のようにしたがLEDを光らせる条件は後で決める。

ここで私が使った基板にはLEDを正論理で光らせるように予めパターンが作ってあったのでそれに従った回路とした(R1の接地側パターンが接地せず浮いていたのがワゴンセールの理由かな)。なお電源電圧が3Vしかないので青色LEDなど順方向電圧降下(Vf)が大きいLEDはこの回路では光らない。

2023年2月13日月曜日

改造ソーラーライトのLED別必要パーツ

 これまでのソーラーライトのキャンドル化のBLOGでは明確に書かなかったが市販のLEDには幾つかのタイプがある。そこで改造ソーラーライトを組み立てるうえで必要な情報について改めて説明する。

 改造ソーラーライトで追加する回路は次のような構成になっている。

 このなかでD1は前段のソーラーライト用IC(IC1)で作られるパルスを整流して直流に変換する為のものである。D1には順方向電圧降下の少ないショットキーダイオードを使う事が望ましいが普通のダイオードでも動作する。このパルスは100~300Kパルス/秒とかなり高い周波数なのでC1とC2を使って平滑化する。このときC2に使う電解コンデンサの高周波特性は良くないため(積層セラミックコンデンサなど)高周波特性の良いC1を追加して高周波成分を取り除く。C1、C2の値はシビアではないので適当に選べばよい。D2のツエナーダイオードはD1、C1、C2で作成される直流電圧が(LED1が消灯している等の無負荷状態のとき5)IC2やLED1の定格電圧5Vを超えないように保護する為である。IC1の出力端子の定格電圧は不明であるが元々LEDを駆動するための出力なのでせいぜい5V程度に抑えるべきと考えられ、D2はIC1を保護する役目も併せ持つ。

 これらを纏めると次表のようになる。


 この表でSはIC2を実装せず1-2番端子間を短絡(ショート)する事を表す。×印は機能上不要であるが有っても構わない。


2023年2月8日水曜日

赤外線で通信する(その1)送信部

 赤外線リモコンチェッカーが出来たところで、赤外線リモコンのカラクリを使って通信に挑戦してみる。赤外線リモコンは37.9KHzの赤外信号(キャリヤー)の有無で情報を送るので、単純に光をON/OFFして情報を送るよりS/Nが良く、遠くまで信号を送れるはずである。

【送信部】

 まず送信を考える。信号発生は使い慣れているPIC16F18326で実現するとして次の回路を組んでみる。PIC16F18326は以前使ったPIC16F18346と中身は同じものであるが、足の数だけが14本と少なく外部とのインターフェイスの数が制限される。後で言及するがPIC16F18326の Data Signal Modulator(DSM) モジュールは設定で出力を反転できるからトランジスタはPNPでもNPNでも使える。

信号発生にはPIC16F18326の DSM モジュールを使うがDSMに加えるキャリヤーとして Numerical Controlled Oscillator(NCO1) モジュールから37.9KHzを出力させ、変調信号(MOD)として Enhanced Universal Asynchronous Reciever and Transmitter(EUART) の出力を与える事とする(下図参照)。

一応これで赤外リモコンに相当する信号が出せるはずである。但しEUARTで変調速度の1.67Kbpsが出せるか不明だがそれほどシビアではないはず。あと変調信号はリモコンのビット列より扱いやすい非同期(UART)形式でテストする。

DSMモジュールは次の構成をしている(マニュアルの図25-1)。


変調信号(MOD)は16種類の中から選べる。ここでは EUART TX を選ぶ。搬送波(キャリア)はMODがHの時(CARH)とLの時(CARL)で別々に16種類の中から選択できる。EUARTの出力はHが定常(無信号)状態でありこの時キャリアが出力されないようCARHにはVssを選ぶ。CARLには搬送波としてNCO1(上図では誤ってDDSと表記されている)を選ぶ 。

    MDCON = 0x80;      // Enable, 0x90 for inverted output
    MDSRC = 0xA;       // MOD Source is EUART
    MDCARH = 0x0;      // CARH is Vss
    MDCARL = 0x28;     // CARL is NCO1, with SYNC

 NCO1モジュール(マニュアル図23-1)はレジスタ(DDSACCU/H/L)にインクリメントをクロック毎に加算し、レジスタがオーバーフローすると出力を反転する(2分周する)作りである。


 ユーザが設定するのはクロックの選択とインクリメントであり、インクリメント= (キャリア周波数(37.9KHz)*2^21)/クロック周波数 で計算できる。
 クロック入力にHFINTOSC(16MHz)を選択したとき出力に37.9KHzを得るためにはインクリメント(DDSINC)に1968(0x1368)を設定することになる。
 これを実際やってみたが何度やっても上手くいかない。マニュアルを読み返すと、「インクリメントの最下位のバイト書き込みが設定のトリガーとなるので、このバイトを最後に書き込め」と書いてあり、それに従う事で問題は解決した。具体的には次の様に設定した。

    NCO1CON = 0x80;     // NCO1 enable, Fixed DutyCycle Mode
    NCO1CLK = 0x00;     // Clock Source is HFINTOSC(16M)
    NCO1INCU = 0x00;    // write U&H first
    NCO1INCH = 0x13;
    NCO1INCL = 0x68;    // write L last

EUARTの送信部は次の構成になっている(マニュアル図31-1)。GRB(ボーレートジェネレータ)の設定にはシステムクロックを含め複数のパラメータが関係するため苦労したがとりあえず1200bpsでテストするようマニュアルに習って設定した。 EUARTは当初送信部だけをONにしたが全く動作せず、数日悩んだあげく受信部もONにしたら動くようになった。

具体的には次の様に設定した。
    TX1STA      = 0x24;     // enable Tx, Async mode, high speed
    RC1STA      = 0x90;     // enable Rx
    BAUD1CON    = 0x08;     // BRG16
    SP1BRGH     = 0x06;     // 1200: 1666(682) on 8MHz,SYNC=0,
                           // BRGH=1,BRG16=1
    SP1BRGL     = 0x82;

クロック発信機(マニュアル図7-1)

クロック発振器はシステムの心臓部であるが次の図にあるよう複数の発振器や逓倍器、分周器で構成され結構複雑である。おまけに発振器が停止しても機能が停止しないよう他の発振器に切り替える機能(FSCM)まで備えていて信頼性を確保しているようである。しかしマニュアルの記述には幾つか矛盾や誤りがあるので幾つかの信号をPPSを使って外部に出力させ周波数を確認しながらプログラミングする必要があった。


 実際にはHFINTOSCで16MHzを発振させ1/2分周をかけて8MHzのシステムクロック(Fosc)を生成するようにした。

    OSCCON1     = 0x61;     // New ClockSource is HIFNTOSC, Div by 2
    OSCEN       = 0x40;     // HFINTOSC OSC Manual Req Enable
    OSCFRQ      = 0x06;     // HFINTOSC is set to 16MHz
 

 以上の回路は秋月でワゴンセールしていたPICの試作/実験用基板に組み立てた。

この基板はPIC16F690/18344等用と書いてあるがPIC16F18326/18346でもそのまま使えた。さらにPicKit4に直結できる書き込み端子、Vddを除く全13ピンに対応したピンヘッダー、RC0~3に対応したLEDを実装できるパターンも備えている。実際に組み立てた回路は次の通り(書き込み端子の配線は省略した)。

とりあえず(受信部が完成するまでは)一定の文字列を周期的に送信させ、前出のリモコンチェッカーの反応で動作を確認している。この回路の消費電流はLEDを光らせない場合は1.5mA程度、LEDを光らせても10mA以下でまだ余裕がある。

 

2023年2月5日日曜日

赤外リモコンチェッカーを作る

 赤外線(IR)リモコンのカラクリを使って何かできないかな、と少しいじってみることにした。IRリモコンは室内で比較的遠くまで届くうえに情報を乗せられ、ほとんど誤作動もない所が優れている。

先ず秋月でOSRB38C9AAという波長940nmの赤外線(TVのリモコンと同じ)に最大感度を持つ赤外線受信モジュールを買ってきた。これは3Vで働く3端子の素子で出力は負論理で普段はHに保たれ、赤外線を感じるとLになる。


中身は次図のように結構複雑であるが、これが2個入って秋月で100円なのでコスパは良い。

このモジュールと手持ちの部品を使って次図のIRチェッカーを作った。

  このチェッカーは数m離れていてもTV等のリモコンにちゃんと反応するので感度はよい(仕様上は20mとなっている)。赤外線を受けていない時の待機電流は1mAを若干下回る(OSRB38C9AAの仕様では0.9mA)。

 

一方赤外線LED(OSI5FU5111C-40、波長940nm)を直流点灯させてチェッカーに赤外線を照射してみたが反応しない(素子にBPFを内蔵しているので当然ではある)。

 データシートを見るとこのモジュールは次図の赤外光でテストされているようである。即ちTVリモコンと同じく37.9KHzで断続した光(キャリア)の600μs連続を1ビットのデータとし(これは1.67Kbpsに相当)て受信する。さらにフレーム長(Td)の記載は無いが0.1秒毎に繰り返すようで、データ長は最大でもせいぜい167ビットである(これはあくまでテストデータの情報)。

 そこで赤外LEDを37.9KHzで点滅させてみたが、チェッカーのLEDが間欠的に点灯し不安定である。そこでテスト信号に近い37.9KHzの23サイクル(約600μs)のバースト信号を作ってみると(信号発生にはHP-33120Aのバーストモードを使った)連続的なバースト信号に対しチェッカーLEDの光り方は連続だったり間欠だったり変化する。これは赤外線受信モジュールがリモコン信号に特化し連続的な信号には対応していない為だろうか。OSRB38C9AAの特性には少しクセがあるようである。

 チェッカーは最終的に手元にあった鼻炎薬のスプレー容器に組み込んだ。基板は両面テープで単4×2の電池ケースに止めている。基板が汚れているのはジャンク箱から拾ってきた古い基板を使い回している為。このチェッカーは青色の蓋を閉めた状態でもちゃんと反応する。



リモコンの赤外線は以前はスマホのカメラで見えたが最近のスマホのカメラは特性が改善されたのか見えない。このチェッカーを使うとちゃんとリモコンに反応するので電池切れや故障診断に使える。

(その後)

単4電池を2本使うタイプの壊れたパルスオキシメータがあったので、基板を外してそこにチェッカーを組み込んだ。部品は瞬間接着剤で固定し、表示窓には白いマスキングテープを貼って直接中が見えないようにした。小型の電源スイッチは押しボタンスイッチがあった場所にUVレジン(紫外線硬化樹脂)で固定している。





2023年1月5日木曜日

ソーラーガーデンライト キャンドル化用の基板を作る

 ソーラーアクセントライトに引き続いてソーラーガーデンライト改造用の基板を設計した。回路はソーラーアクセントライトとほぼ同じであり、下図の通りである。

これをもとに次のソーラーガーデンライトの内部、下の写真のオレンジの四角形のエリア(26mm×26mm)に基板を作成する。
 
設計した基板は次の通り。

これをいつもの通り発注した。20枚で$6.11(製作$5.1、配送料$1.01)である。

発注の3日後に発送連絡が来た。その(土日を挟んで)4日後に深圳から関西空港に到着し、その3日後に郵便受けで受け取った。

これに部品を取り付けて次の様になった。

 

これは特に問題なく動くがL1に元から付いていた100μHを使ったため消費電流が十数mAと多かった。これでは朝まで持たないと思われるのでL1を220μHに交換し消費電流7mA程度に抑えた。これで持ちがよくなるだろう。


 

 

 

 

 

2022年10月8日土曜日

ソーラーライトその後(ソーラーライトを長持ちさせる技)


改造したソーラーライトを1年ほど使ってみて幾つかのトラブルや故障を経験したので、その実例と対策について以下に記す。なお実際に使った吊るソーラーラート、ソーラーアクセントライト、ソーラーガーデンライトに言及する場合はそれぞれHSL、SAL、SGLと略記する。

1,太陽電池の水対策

ソーラーライトを屋外で使うと何か所かから雨水が侵入し部品や電子回路を痛める。とくに太陽電池周りは、それを張り付けるためにコーキング剤が裏面の配線を通す穴付近に使ってある以外は全く対策されていないと言ってよい。ここに水が浸入すると太陽電池の電極を傷めたり(写真)電線を伝って電子回路に侵入する。太陽電池が劣化すると起電力が低下しニッケル水素(NiMH)電池の充電が不足するとともに夜と認識される時間が長くなる。また太陽電池の配線が腐食して切れたこともある。

これを防ぐには太陽電池の周囲を接着剤かコーキング剤で埋め雨水の侵入を防ぐ必要がある。私はUV硬化のレジン液(要するにネイルアートに被せて紫外線で硬化させる液体)で埋めた。

 

2,電源スイッチの水対策

電源スイッチも雨水の侵入口である。電源スイッチは下面にあるが物理的に塞げず、1年も風雨に晒されると接点などに錆が出始め動きも悪くなってくる。

私は時々CRC 2-26を吹き付けている。 電源スイッチだけでなく内部にある素子や金属にも湿気対策も必要だが、CRC 2-26はそれにも効果があることを期待する。

もし電源スイッチをON/OFFする事が無いのであれば 電源スイッチを取り外し穴を塞ぐのも1つのやり方である。


 3,LEDの電極の腐食対策

LEDの裏側の形状はフラットか少し凹んでおり、ここに水が溜まって電極を腐食することがある(写真)。

これを防ぐにはLEDの裏面をレジン液等を使って凸面にするとともにLEDをケース下面からあまり突出させないよう取り付けるか、またはLEDの周囲のケースとの隙間を接着剤等で固めて雨の侵入を防ぐ必要がある。次の写真はLEDの周囲をレジンで塞いでいる。また光を反射するようケースを銀色に塗装している。


 

4, ニッケル水素(NiMH)電池の過放電対策

 実際に使ってみたところでは3cm×3cm(9cm^2)の太陽電池を使っているSALやSGLでは真夏でも定常的に充電が不足しているようであり、個体差はあるが朝まで持たなかったり、特に曇りや雨の日が続くとほとんど光らなくなる事がある。それに比べ4cm×4cm(16cm^2)の太陽電池を使っている吊るソーラーライトは悪天が続かない限り朝まで比較的元気である。

実際にはSALやSGLはできるだけ長時間太陽光を当ててやるとともに、NiMH電池が弱ってきたら、過放電になる前に充電器で追充電してやると元気に復活する。 NiMH電池の充電器は千円以下でAmazon等で入手できる。

なお3種のソーラーライトに内蔵されている単4サイズのNiMH電池の容量には100mAh、200mAh、600mAhなどの種類がある。しかし容量が少ないと悪天が続いた場合に電池が過放電になってしまう。もし100mAhや200mAhの電池が入っていた場合にはもっと容量の大きい物と交換したほうが良い。

  〔※参考〕HSL、SALやSGLのLED点灯時の消費電流は11mA~12mA程度である。一方直射日光が当たる快晴の昼間(10月)にSALを太陽に正対させてNiMH電池の充電電流を計ってみたところ最大で23mA程度であった。太陽光の入射角は昼間を通じて変化するので近似的にsinθに従うと考えると平均充電電流は14mA(sinカーブの平均値は0.64なので)である。なお実際には太陽が出ていてもソーラセルの起電力が一定(概ね1.4V)以上ないと充電は始まらないが、その点は無視して計算しているので参考程度の値だと考えていただきたい。

一方ソーラーライトは通常太陽電池を真上に向けて設置するので太陽の高度角による影響が出る。南中時の高度角は夏至の関東ではで78度(sinθ=0.98)、冬至で31度(sinθ=0.52)程度であり、夏至での発電能力低下は些少であるが冬至には発電能力は約半分に低下する。実際には雲や悪天も影響してさらに悪化する場合もあり得る。

結局、夏至に平均14mAで充電できたとして昼間の長さが14時間あるとすると、これを充電するには196mAhの容量の充電池が必要である。これはLEDを夜通し光らせるには十分な電気量である。もっと太陽電池の面積の広いHSLではさらに大容量(300mAh以上)のNiMH電池が欲しい。一方冬至では平均11.5mAで9時間充電できるとしても充電量は103.5mAhしかなく、これは冬期の長い夜を通してLEDを光らせるには不十分であり、この問題はNiMH電池の容量を増やしても解決しない。気温の低い冬場の電池の充電効率の低下を考えると条件は更に悪い。この場合は回路の消費電流を減らす事を考える必要がある。

  5,ソーラーガーデンライトのハンガー(吊り下げ用部品)は弱い

ソーラーガーデンライトでは吊り下げるためのハンガーが柔らかめのプラスチック製(写真左)で強度が弱く、しばしば強風で落下し、時に太陽電池や電子回路、また外箱にダメージを与える。これを金属製に替える事で落下防止になる。

私は百均でジャンボ ゼムクリップ(70本入りが100円だった)を買ってペンチで曲げてハンガー作った(写真右)。

2022年10月7日金曜日

ソーラーアクセントライト キャンドル化用の基板を作る

 吊るソーラーラートに引き続いてソーラーアクセントライト改造用の基板を設計した。回路は以前書いたものと少し違って次のようにした。下図がKiCADで基板の設計に使った回路図である。

回路を変更した理由は前の回路ではソーラーセル(太陽電池)の出力に電源スイッチが介在しないため光が当たった状態では常に回路に電圧がかかっていたからである。この変更の弊害としてU2やLEDがハングアップしたときU2やLEDがリセットされずLEDが光らなくなる問題がある。これを回避するためR1を追加し、スイッチをOFFにした状態ではC2に溜まった電荷をR1を通じて放電させることとした。C2がフル(4.7V)に充電されている状態で電源スイッチをOFFにすると約15秒でC2の両端の電圧は10mVまで低下する。1分もOFFにしていたらハングアップは解消されるだろう。R1を流れる電流は0.2mA程度なのでLEDの光量にもほとんど影響はない。

次に基板の大きさであるが、元の基板の大きさが12mm×26mm程度でかなり小さく電池の下に隠れる部分もあるので部品を置ける場所が少ない。そこで基板を円形(直径35mm)にして面積を稼ぐことにした。但しプラスチックの土台の上には電池を支持するため2つの下駄(ポール、3mmΦ)が立っている。これを通すため基板には2つの穴を開けておく必要がある。

ソーラーアクセントライトでは電池が高い位置に配置されているのに伴い基板の上側には電池の下を除きスペースに余裕がある。 また電池の下に来る部分の上面には隙間が無いため部品を配置できないが下面には高さのない部品を配置できる。

CADの結果は次のようなものである。 2作目なのでKiCADにも少し慣れて基板の両面にシルクスクリーン印刷を入れることが出来た。

LEDは1個でも2個でも対応できるようにした。1個の場合は斜めのランドにに取り付けると良い。またキャンドル型のLEDや色がリアルタイムに変化するLEDなどでU2が不要な場合はU2の1-2番ピンにジャンパ-を入れる。

 この基板を20枚発注したところ$6.86で吊るソーラーライトより$1高くなった。