出窓

2021年6月10日 (木)

広角度指示計ふうにステッピングモータで時計を

2021年6月 4日:針式メータで時計!?

ではアナログの電流計を用いて時刻表示ができないか
試してみました。
その記事で書いたのが「ステッピングモータを使った時計」。
手持ちの材料で試作してみました。
ねらったのは広角度指示計ふう。

S11_20210610131201
   ※目盛版は紙
    外周ピンクの時計は時刻確認用。

ステッピングモータはデジットで手に入れた
多摩川精器の「TS3166N913」
1回転400パルス。 1パルスで0.9度。
S14

これを二つ使って「時・分」を表示します。
  ※スイッチ操作で「分・秒」にも

こんな回路。
S01

簡略化のため、時計部のバックアップはありませんし、
ステッピングモータの原点センサーもありません。
ですんで、電源投入のたびに原点設定と時刻合わせを
手動でしなくちゃなりません。

ドライバはPololuのA4988とDRV8880
  ※手持ちの実験残。 仕事ではTI製のDRV8880を使った。

基板の様子。
S12_20210610131501

指針はツマミにつっこんだM4ビス。
S13
  モータ軸がΦ5。
  ツマミがΦ6なんで、ビスでぎゅーっとして押さえ込み。

発振周波数は2PPMくらいまで合わせ込めました。
   (室温で)

こんな動きです。
 https://www.youtube.com/watch?v=w97MZaq5vgo


出窓」のアトラクションにっと思ってますんで、
  ・人が来たらゼロ位置から動いて現在時分計時開始
とか、
  ・行き過ぎて戻す
  ・針の動きで遊ぶ  
なんてことをしないと面白くないかと。

とりあえず、基本の動き(2つのステップモータの同時駆動と時間精度)が
確認できたんで。ほんと、見栄えをどうするか。
目盛板の作り方はなんとなくマスターできたし。

バックアップがわりにArduino-UNOのソース
  ・ダウンロード - motor_clk1a.txt
    (ファイルタイプを.txtにしています)

・2つのモータ駆動はタイマー割り込みで処理。
 同時運転可能。
・将来的にslow up/downできるように
 別のタイマー割り込みにしてる。
・今はslow up/downはしていない。
・現在は1msの固定周期で割り込み。
  だもんんで、駆動パルスの周期設定は1ms単位。
  1kHz,500Hz,333Hz,250Hz・・・と
・割り込みでパルスを数えているんで、メイン側では
   動け! と 止まったか? だけ。
 動いている間、なにしてもOK。
・液晶表示などに時間がかかっても(今回のハード
 には付いていないけど)パルスは勝手に出て止まる。
   ※メインルーチンでパルスを出力する手法では、
    時間がかかるルーチンが入るとパルス周波数が
    安定しない。
    また、「何か来るの(終わるの)を待つ」という
    ルーチンと共存しようとするとややこしい。


| | コメント (2)

2021年6月 4日 (金)

針式メータで時計!?

Facebookつながりで「こんなん欲しい!」という人がいてたんで・・・
https://karapaia.com/archives/52205767.html

さくっとArduino-UNOで一桁だけ試作。
https://www.youtube.com/watch?v=PDJ6SSwugTQ

手元にあった0.1mAのメータで1桁だけ。
まず「0~9秒」で動いて、途中で「~59秒、0,1,2」に切り替え。
左のは比較用のキッチンタイマー。
PWM出力で振らしてます。

メーター、専用の目盛板を作ってもらうのが高くつくか。
電気食うけど、ステップモータで回すのが良いかな。
大きな目盛板を作れるだろし。
暇になったときの「出窓用」プロジェクトかな。

出窓の16セグLED時計

| | コメント (0)

2021年4月16日 (金)

「ぶつかるLED」

「出窓」のアトラクション、モータ駆動系は「うるさい」という
ことで作ってみたのが2021年1月22日:出窓に「跳ねるLED」

この続きということで
ぶつかるLED」を試してみました。

144個のテープLEDのを横にして「弾性衝突」を模倣します。
次から次とLED上に「衝突体」を送り出します。
最大個数は8。
LEDの点灯数(1~6)で質量を決めて、それぞれの速度から
衝突を模倣します。
押したり跳ね返ったり。
  ※動画じゃないと面白くないので、ちょい待って。
A1_20210416203701

※取り急ぎyoutubeにアップロード
  https://www.youtube.com/watch?v=8YOAyhjGTss
場所は仕事場の作業机。
カメラはリコーのGX100。
「出窓」に設置したときはもっとちゃんとアップします。

Arduino-UNOで動作します。
  ・ダウンロード - led_collision1.txt
     ファイルタイプを「.txt」としていますが、
     「.ino」にリネームしてください。

使ったライブラリは
   <Adafruit_NeoPixel.h>
LED表示データD12ピンに出力しています。

テープLEDが無くても、衝突体の様子をシリアル出力して
いますので、Arduinoだけで雰囲気を見てもらえるかと。
  ※シリアルモニターを115.2kBPSにして
   横幅を広く。

Cc1_20210416180801

文字はLEDの色(256色)を変換して文字(!~0~A~a~)にしたもの。
最下行がLEDに表示されるデータになります。
25msごとに新たな表示データが出てきます。

※制御タイミング
25ms = 40Hzサイクルで
 ・衝突体の移動
 ・衝突のチェック
 ・衝突体の消去(範囲を出た時)
 ・新たな衝突体の作成
 ・表示データの作成
 ・シリアル出力データの作成
 ・LEDテープへの表示データ出力
 ・シリアルデータ出力
を行っています。
その処理時間をオシロで観察した波形です。
W004

※参:タイミングを決めるタイマーについて。
LED表示データを送出する「LED.Show()」の中では割り込みが
禁止されて実行されます。
表示制御用のパルスのタイミングをソフトで作っているためです。

全体の制御タイミングを決めるのに「micros()」や「Mstimer2」
を使うと、LED.Show()の割り込み禁止期間が長い(今回は4msちょい)
ので、その間はタイマー割り込みが待たされるので時間遅れが生じます。
  micros()はタイマー0のオーバーフロー割り込み 1.024ms周期
  Mstimer2はタイマー2で1ms周期の割り込み
バックグランドの1.024msや1ms周期の割り込み処理が抜けるので
計時が遅れるわけです。

今回は16bitタイマーであるタイマー1を使って、40Hz=25ms周期の
割り込みが直接得られるようにしています。
  ※割り込みで処理しなくても25ms経過をチェックして
   (タイマー2のアウトプットコンペアフラグ)
   loop内で計時処理すれば良いのです。
   最初、Mstimer2でタイミングを作っていたので
   その絡みで割り込みが残りました。

※追記 (2021/4/29)

・衝突の発生がおもしろい。
 重い衝突体(LEDの数が多い max6)にはさまれた軽衝突体(LED数が
 少ない)が前後するのが興味深いかと。

・質量と速度は出発時に乱数で決めている。
 その頻度をどのように片寄らせれば良いかで
 見栄えが決まる。

・重衝突体が発生したら次は必ず軽衝突体になるように
 した。 軽い方の出現頻度が大きくなる。
   先のスケッチは重衝突体が連続することがあった。

・最大8個の衝突体が出てくる。
  数が少ないときはゆっくりに。
  重衝突体はゆっくりに。
  軽衝突体は早く。
  最後尾が離れたときは高速でぶつける。

こんな感じで新しい衝突体を作る「newobj()」関数を
手直ししてみました。
  ・ダウンロード - led_collision1a.txt
     ファイルタイプを「.ino」にリネームしてください。

 

| | コメント (2)

2021年2月 8日 (月)

「からくり時計」出窓のアトラクションに

女房実家から発掘してきた
「TWINBIRD からくり時計 CK-897 パペットミュージック」。

11_20210208095201
  ※解体した後で撮った写真

毎時0分になると、時報がわりに人形が動いて
オルゴールが鳴るという仕掛けです。
これをそのまま出窓のアトラクションに使っても面白くない。
そこで、、人感センサー検出で「人形だけを動かして」
という改造依頼がやって(女房から)きました。
   ※オルゴールは不要。
    音は窓外では聞こえないので。
    時計は時計として動かして。
    見た目はもとのように。

メカ駆動部、こんな仕掛けです。
   (クリックで拡大↓)
12_20210208095201

時計からの毎時0分検出信号の他に、手動操作スイッチがあります。
これを押すとモータが回り始め、停止位置検出の接点がオン。
これが自己保持になります。
しばらくすると、これがオフして停止。
1サイクルの動作が終わります。
モータは1.5V。単1乾電池が仕込まれています。

出窓の人感センサー、検出されるとしばらくの間、
24V電源がオンされるようにしています。
 (出窓前に人がしばらくいてたらを検出。
  オン・ディレー、オフ・ディレー、リトリガー)
これを使えばよさそうです。

必要なのは24V→1.5Vの降圧回路。
MC34063(NJM2360)の出番でしょう。
電流をブーストするため、外部Trを付けるべきかと
モータ電流を調べましたら、回り出したら50mAほど。
動き出しのピークでも0.2Aほど。
外部Trなしで大丈夫そうです。

※ネットでMC34063を検索していたら、
「ねがてぃぶろぐ」さんで、こんな記事を発見。
   ※備忘録としてメモ

ねがてぃぶろぐ 負電源三端子レギュレータを正電源用にするとドロップ分が負電源になる
ねがてぃぶろぐ 反転DCDCを昇降圧DCDCのように使う

※過去記事
2010年11月18日:MC34063ステップダウン・レギュレータ
2008年02月21日:Caplio GX100用LEDリングライトまとめ
2015年01月27日:出窓用焦電センサー検出回路

2007年12月11日:紫外線、おまけ   ←これが和むかも


※モータ駆動用1.5Vの発生、こんな回路です。
1r5v

| | コメント (0)

2021年2月 3日 (水)

ATtiny85でカラーLEDテープを光らせてみる

attiny85 ws2812b』と検索すると、ATtiny85マイコン
カラーLEDテープを制御しているArduino環境とスケッチが見つかります。
私がトライしたのは、素の(Arduinoから離れた)ATtiny85での制御です。

ATtiny85のプログラムはAVR Studioで作成。
  ※ただ・・・使ってるのはV4.19と古~い環境
書き込みはAVRISPmk2とSTK500互換の書き込みツール。

Arduinoから離れますんで便利なライブラリは使えません。
delay関数さえもタイマー割り込みを使って作らなくて
はなりません。

LEDテープを制御する関数は、
FastLED.h」や「Adafruit_NeoPixel.h」から借りてきます。

ATtiny85をArduino環境でという記事を見てますと、
皆さん「8MHz」で動かしておられます。
しかし、ヒューズビットを書き換えれば内蔵クロックで
16MHzで動かすことができます。
5V電源で動かしますんで、電流消費は気にしない。
早いほうが良っということで。

製作の目的は(とりあえず)女房から依頼の出窓のLEDアトラクション
  ※光り物はモータ駆動のようにうるさくないので。
旧ブログの出窓記事

LEDテープをちょん切って3つだけで「色相環データ」を
ぐるぐる回して制御してます。

  ・ダウンロード - tn85_rgb1.txt
    ファイルタイプは.txtですんで.cに変更を

制御タイミングはdelayやmillisは使わずに、1msタイマー
割り込み内でセットするフラグ。
メインルーチンでこのフラグを見てタイミングを計ります。
   ※delay、簡単なテストプログラムで使うのは構わ
    ないんですがこれで待っている間は、他のことを
    何もできなくなっちゃいます。
    フラグというかイベントで処理を回すと、空き時間
    は他のことができます。

LEDテープへのデータ転送タイミング波形です。

I11_20210203161301

この部分はインライン・アセンブラで記述しています。
Cとの値の受け渡しが難しい。
AVR StudioではうまくいくのにArduino IDEに移すと
エラーが出ちゃうとか。
なかなかややこしいです。

その部分。

/****************************************/
/* LEDテープ WS2812B 制御 */
/****************************************/
// LEDの個数などデータ設定
#define LED_N 3 // LEDの数
// LED制御ポートH/L (直接アドレスを記述 asmの関係で)
#define LED_H "sbi 0x18, 4" "\n" // PB4 H/L
#define LED_L "cbi 0x18, 4" "\n"
// LEDバッファ
byte led_bff[LED_N * 3]; // G,R,B LED輝度データバッファ
// 明るさ
byte led_bright = 255; // 明るさデータ 0~255
// ledsetで使用
/***** 表示実行 *****/
// led_bffの全データをWS2812Bに転送
// LED_N : LEDの数(255コまで)
// LED_H、LED_Lで直接出力ポートの操作を記述
// 0 H:310ns L:870ns
// 1 H:750ns L:370ns
void ledShow(void)
{
byte *p;
PB3_H; // (!!!)
p = led_bff; // バッファの先頭
cli(); // 割り込み禁止
asm volatile(
"ldi r24, %0" "\n\t" // LEDの数*G,R,B
"loop1%=:" "\n\t"
"ld r25, %a1+" "\n\t" // 1バイト読み出し
"ldi r18, 8" "\n\t" // 8bit loop
"loop2%=:" "\n\t"
LED_H // ※LED出力:H
"nop" "\n\t"
"nop" "\n\t"
"sbrs r25, 7" "\n\t"
LED_L // ※0の時:L
"nop" "\n\t"
"nop" "\n\t" // 時間調整
"nop" "\n\t"
"nop" "\n\t"
"nop" "\n\t"
"nop" "\n\t"
LED_L // ※1の時:L
"lsl r25" "\n\t"
"dec r18" "\n\t"
"brne loop2%=" "\n\t" // 8回loop
"dec r24" "\n\t"
"brne loop1%=" "\n\t" // バッファバイト数loop
:
: "M" (3*LED_N), // %0:LEDの数*G,R,B
"e" (p) // %a1:バッファアドレス
);
sei(); // 割込許可
PB3_L; // (!!!)
}

時間待ちの「nop」をいくつか抜けば8MHzでも動きます。
LEDテープのバッファは1つのLEDで3バイト。
「1mで60コ」のテープだと180バイトのバッファが必要になります。
ループカウンタが8bitなんで256バイト、LEDの数で85個まで。


今回のLED照明はこのガラス製「白鳥」さん用。
B11_20210203205701

出窓は一ヶ月先の「お雛様」モードになってます。
B12_20210203205701

「跳ねるLED」 も順調に光っています。




| | コメント (0)

2021年1月22日 (金)

出窓に「跳ねるLED」

出窓:居酒屋ガレージ日記(旧ブログ)「跳ねるLED」 登場です。
 (昨夜、試運転。写真は今朝)
21_20210122140001

全体はこんな状態。 まだ正月モード。
22_20210122140001

・参考スケッチ
GitHub - KenKenMkIISR/Bouncing-LED: NeoPixel互換のLEDテープを利用したLEDが跳ねるアニメーション
これを使わせていただき、改造しました。

・落ちてくるLEDブロックの長さと重力加速度を乱数化。
   LEDの長さ:1~10で乱数 (元は6)
   重力加速度:4~30で乱数 (元は20)

・跳ね返りが大きい方が面白いかと、計数を大きく。
   GRAVITYや跳ね返り係数を変えると、停止判断をミス
   していつまでも止まらずにピョコピョコする場合
   があります。
   そこで乱数で決まったGRAVITY値の「√:sqrt()」か
   ら停止速度を算定。(早く止まっても面白くないので)

・GRAVITYと停止判定速度、跳ね返った時の速度をシリアル出力。

・外部信号で明暗と落下開始を制御。
   夜は暗くする。
   人が来た時に落下を始める。
   ふだんはLEDを消している。

・1mで144LEDの品を買ったが、出窓、チビな子供達だと
 地面の方から見上げるかっこうになるんで、先端の14LEDを
 カットして130LEDに。
 根元をちょい上に。
    こんな角度:保育園児のお散歩コース

・落ちる方向を逆に。 先端からスタートして根元に向かって
 落ちる。
   根元(下側)に回路を置いてケーブルをつなぐので。

・コの字形アルミチャンネルに貼り付け、突っ張り棒に固定。
 突っ張り棒は「電動上下駆動」で使っているもの。
 モータの駆動音(減速機の音)がうるさいからと、最近は
 停止状態。

こんな回路。

20_20210122140001

Arduino-UNOから抜いたATmega328Pで制御しています。

・スケッチ  ダウンロード - led_tape1.txt
  (ファイルタイプを「.ino」にして使ってください)

※2021-01-25変更
最終的にはこんな具合。(古いの消しちゃいます)
・落ちるブロックごとにGRAVITY値を乱数で設定。
 ブロックごとに速度が変わるということで。

・ブロックのLED数、乱数で決めるのを1~20と多めに。
 これが小さいと「流れ」が起きるまで時間が掛かっちゃう
 ので。


※突っ張り棒下端の様子。

41_20210123120401

結束バンドでLEDテープを貼り付けたアルミチャンネルを
突っ張り棒に固定。
赤・黒の2線が+5V電源供給。
赤・緑・白の3線が制御基板へ。

制御基板はこんな様子。
42_20210123120401

出窓の外からは見えないんで、箱には入れてません。

| | コメント (0)

2021年1月21日 (木)

カラーLEDテープを手に入れた

出窓 の新アトラクションに
GitHub - KenKenMkIISR/Bouncing-LED: NeoPixel互換のLEDテープを利用したLEDが跳ねるアニメーション
はいかがかと(モータ駆動系のはうるさいんで)、カラーLEDテープを
手に入れてみました。

11_20210121101001
うまいこと光るもんですなぁ。

「シリアルLEDスティック」光らせてみた! ? スイッチサイエンス マガジン
   ※7年くらい前に遡れるようです。

制御ICの制御方法がなるほどです。
WS2812B の制御タイミングを見ますと、短パルスと長パルスで
データの0と1を表現。
RGBそれぞれ8ビットのデータをドバ~っとの連続送出。
そのタイミング、データシートにはけっこうキビシイ値が記されていますが、実際は・・・
といいますのが、この記事
NeoPixel(WS2812B)の制御: 猫にコ・ン・バ・ン・ワ (WS2812B)の制御をライブラリ無しで行ってみました。
NeoPixel(WS2812B)の制御 その2 SPIで

Adafruit_NeoPixelライブラリーを使わず、自前で出力ポートを直叩き。
そして、SPIでもってハード的にパルス列を出そうという試み。

自前で制御すれば、Arduinoから離れられます。
28ピンのATmega328Pを使わないでもっと小さいマイコンで制御できるわけ
です。
  ※表示用バッファにRAMが必要ですが、1メートル60LEDの
   ものだと、1LEDに3バイトで240バイトのバッファ。
   ATtiny85だと512バイトでなんとかなりそう。

ということで、制御波形を見てみました。

まず、これがAdafruit_NeoPixelライブラリーでの制御波形。
L002

これもI/O直叩きですが、Hパルス、Lパルスのパルス幅が仕様通りに
出ている感じです。

これが「猫にコ・ン・バ・ン・ワ」さんのI/O直叩き。
L001

Lレベル部分がずいぶん長くなっていますが、これでもちゃんと制御
されています。

そしてSPIでの制御。
SCKパルスといっしょに見ています。
L000

これもずいぶんLレベル部分が長い。

WS2812Bの制御、Hレベル部分の長短が重要でLレベル部が少々延びても
問題ないのかな?

昔のデータシートと新しいデータシートで値が変わっています。

W1
パルス列のデューティーで判断してるんじゃ「TH」のパルス幅で
0/1を見ているのかな?
T0L、T1Lとももっと長くしてもOKなようです。

※ATmega328pのSPIについて
SPIを使っての転送タイミングを見ていて・・・
 「送信後の待ちってこんなにかかるの?」
っと、疑問に思ったんでちょっとテストプログラムを
書いてみました。

まず、関連するI/Oポート

    PORTB = 0b00010011;     // data/pull up
DDRB = 0b00101100; // port in/out指定
// |||||+---- PB0 IO8 in -
// ||||+----- PB1 IO9 in -
// |||+------ PB2 IO10 out /SS (L)
// ||+------- PB3 IO11 out MOSI →★LED接続
// |+-------- PB4 IO12 in MISO (pull up)
// +--------- PB5 IO13 out SCK

そしてSPI回りのイニシャル。

    SPCR  = 0b01010100;
// ||||||++---- SPR fosc/2
// |||||+------ CPHA sck位相 SCH↑で出力確定
// ||||+------- CPOL sck極性 mode1
// |||+-------- MSTR 主装置で
// ||+--------- DODR MSBから出力
// |+---------- SPE SPI許可
// +----------- SPIE 割り込みなしで
SPSR = 0b00000001;
// || +---- SPI2X fosc/2で
// |+---------- WCOL
// +----------- SPIF SPI完了割り込みはなし

LEDデータバッファの転送ルーチン

void ledshow(void)
{
word i;
byte j;
byte d;
cli(); // 割り込み禁止
for(i = 0; i < (LED_N * 3); i++){ // LEDの数*G,R,B
d = led_bff[i];
for(j = 0; j < 8; j++){ // 8bit loop
if(d & 0x80) SPDR = LED_1; // H
else SPDR = LED_0; // L
d <<= 1; // MSBから出力
PD7_H; // (!!!)
while(!(SPSR & (1 << SPIF))); // SPI送信完了待ち
PD7_L; // (!!!)
}
}
sei(); // 割込許可
}

送信完了待ちのタイミング、D7ポートをH/Lして待ち時間を
見られるようにしています

その結果。
L004

SPI完了の待ち時間だけでなく8回loopの処理時間も
大きいようです。 (しかし、どうしようもない)
クロックパルスが8MHzですんで。
これが限界かな。
  ※D7ポートへのテストパルス、これのH/Lだけで
   2クロック+2クロック、0.25usかかっています。

「猫にコ・ン・バ・ン・ワ」さんのSPIでの描画ルーチンは
こんな具合。

void NeoUpdate() {
// ピクセル数x24ビット送信
for (uint8_t i = 0; i < PIXCELNUM*3; i++) {
for (uint8_t j = 0; j < 8; j++) {
SPDR = buf[i] & (0x80>>j) ? NEOSPI_1:NEOSPI_0; // SPIデータ送信
while(!(SPSR & (1 << SPIF))) ; // 送信完了待ち
}
}
}

8回ループ内にバッファメモリの読み出しと0x80のシフト操作が
入っています。
毎回これが実行されるので遅くなっているのでしょう。

自由にタイミングを作れる出力ポート直叩きのほうが
よさそうです。

| | コメント (0)

2021年1月 1日 (金)

謹賀新年

本年もよろしくです。

出窓も正月モードに。
B11_20210101083601

(1)上下凧
 出窓上の人感センサーで起動。
 モータ駆動で凧が上下に。
 でも、駆動音がうるさいので(ピピのカゴが
 出窓のそばにあるので)、現在は停止中。

メモ:出窓用モータ駆動回路
出窓:正月モード

(2)横行ブランコ
 電磁駆動でブランコを振動。
 ブランコ底板に磁石が貼ってあって、
 それを下からコイルで駆動。

電磁ブランコ第三弾

(3)回転テーブル
 減速機付きの直流モータでゆっくり回します。

(4)出窓の結露防止用ヒーター制御回路
 窓内側真下に置いたヒーターを湿度センサーの
 値を見てon/off。

そろそろ出窓の結露が ・・・あれ? 湿度センサーがおかしい

(5)16セグLEDを使った時計。

16セグメントLEDを使った時計:回路図

 

| | コメント (0)

2020年12月 1日 (火)

サンタ・トイプー 出窓がクリスマスモードに

出窓も12月になってクリスマス・モードに。
A1_20201201213901

今日はこの子↓を触ってました。
A2_20201201214001

ペコの元の飼い主さんからのプレゼント。
  ペコは11月生まれなんで、プレゼントで
  頂戴しました。
  元気にしておられます。

2015年03月22日:「ペコ」がやってきた
   (今はもう「下間ペコ」で登録しています)

ペコ近影。 6歳の熟女。
A3_20201201214101

で、出窓に置いた「サンタ・トイプー」、これ、ほっぺたの
赤色LEDと胸の緑色LEDが、クリスマスの歌(メロディー)
に合わせて光るんです。

女房からの依頼・・・
 ・電池じゃなく電源で。
 ・ずっとピカピカ光るように。
 ・音はいらない。スピーカーは切ってもて。

この制御、
 ・スイッチオンで音楽が鳴りLEDが点滅。
 ・音楽が1サイクルしたら自動消灯してスタンバイに。
 ・次にスイッチを押したら違う音楽が再生して、LEDは
  違うパターンで点滅。
 ・途中でスイッチ操作したら、中断してスタンバイに。
こんな処理になっています。
スイッチをずっと押してたら、何度も再生繰り返し
だったら簡単だったんですが、そうじゃありません
でした。

そして、「定期的にスイッチ・オンのパルスを入れる」
という手法は、「再生中はスイッチオンで中断処理」に
なってしまってアウト。
ということは、
  「再生が終わったぞ」
  「よし、次のオン・パルスを出すぞ」
を判断しなくちゃなりません。

ということで、あれこれ・・・・
また、まとめますんで、ちょいお待ち。

※追記

仕事場でゴソゴソ中の写真。
21_20201202103401
背中のボール紙を切り開いて、回路(配線)を露出。
22_20201202103501

アルカリ・ボタン電池LR44を2コで動作。
電源は電池ホルダーのタブに直ハンダ。
スピーカーとスイッチの電線はたぐれましたが、
LEDの配線にはアクセスできませんでした。

こんな接続に。
31_20201202103801
動作と停止をどうして検出しようかと考えました。
ピエゾスピーカーを駆動している信号か、とも思っ
たのですが、まずは電源電流の変化を見ました。
動き始めると、LEDが点滅して20~50mAあたりを
変動します。
1曲の再生が終わるとゼロに。
このタイミングで次の曲起動のためのスイッチオン
信号を出します。
出だしのため、パワーオン時にもスイッチオンが
必要です。

電源ラインに入れた電流検出抵抗で・・・
っと、考えたのがこんな回路。
32_20201202103501 

20mAの電流で、PNP Trを駆動するとなると「30Ω」の
抵抗が必要になります。
しかし、50mA流れると1.5Vのドロップに。
3.3Vレギュレータの入力電圧が落ちることに。
このドロップを減らす方法を考える・・・

えい、面倒だっと、こんな回路に落ち着きました。
33_20201202104501
GND側に入れた1Ωの電流検出抵抗のドロップ電圧を
OP-AMPで100倍に増幅。
この電圧をCRで遅延。
それをコンパレートして、スイッチ信号を駆動する
ということにしました。
電源オン時のパルスも得られます。



| | コメント (0)

2019年12月 1日 (日)

温湿度センサーHDC1000、やっぱしあかんわ

出窓の結露対策ヒーター、TIのHDC1000 で制御しています。
およそ1年前、出窓の結露対策:温湿度センサーの異常で予備品に
交換したのですが、あれから1年経って同じようにアウトになっ
ちゃいました。
   ※現象的には前と同じ。
    乾いている環境でも80%以上の湿度値が出てしまう。

今日、秋月で買った「SHT31」 に交換しました。
ヒーターの制御ソフトを手直ししてこれから出窓で試運転です。

HDC1000 通気口はチップの裏側。基板間。
21_20191201162601

付け替えたSHT31。 チップ表面に「穴」。
22_20191201162601

さて、どうなりますか・・・


※出窓:クリスマスモードに飾り付け
50

湿度は50%ほどを表示しています。
カーテンを閉め切ったあと、結露するとどうなるか・・・
52

70%を越えたらヒータをオンするように設定しています。

※昨夜、ガレージ閉店(集まってた皆が帰った)直後の出窓。
クリスマスまでに、まだ変化がありそうです。
11_20191201211701



| | コメント (0)