迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

店の電飾(3)無限鏡(infinity mirror)

無限鏡

四年ほど前に作ろうとしたことがあります。
フルカラーLEDを多数購入しPSoC1で制御しようとしたのですが、LEDが次から次へと点かなくなるというトラブルに見舞われました。設計ミスを疑ったのですが、問題を見つけられず、どうやら買ったLEDが不良品だったようです。そういえばアノードコモンを注文したのに、送られてきたのはカソードコモン。文句言って交換となった経緯があります。

放置したままだったのですが、店の電飾コントローラを作ったついでに無限鏡も作り直し。
テープLEDを丸めただけのお手軽製作。

材料ですが、アクリルミラーとアクリルハーフミラーを使ってます。ミラーを下に、ハーフミラーを上に配置し、LEDを間に挟んでます。
これらははざいやさんにネット注文しました。
10センチ×10センチ、四隅に穴あけ加工を依頼、二組注文して送料込みで正確には覚えていませんが3000円ぐらいだったでしょうか。

光る様子を撮影しましたが、テープLEDが最大輝度になると画面にノイズが乗っかってしまいます、安物のコンパクトデジカメだから仕方ないのかな。


店に飾ってみましたが、奥まったサービスカウンターの壁につけたので目立ちません^^;;
もっと大きく作らないと。(写真撮影は店長の許可を得てあります。)
店に飾る


数時間動かしたあとで、以前に作った非接触温度計で内部温度を測ってみると、200オームの抵抗が9度ほど高め。
電圧降下が4.7Vなので消費電力は約110mW。単純に計算すると熱抵抗は82℃/Wとなりますが、こんなもんでしょうかね。
内部温度

スポンサーサイト

店の電飾(2)回路の変更とスケッチ

回路をちょっと変更、というか追加。
最初はMOS-FETを二個しか使ってませんでした、手持ちがそれだけだったからです。
先週、足りない部品を買いに行ったときについでにMOS-FETも買っておけばよかったんですが、急いでいたので全く考えが及びませんでした。

昨日、仕事帰りに共立電子で2SK4017を買いました。

電飾コントローラ回路2

これで三つのLEDを制御できるようにりました。

さてスケッチです。
LEDがふわっと明るくなって、ふわっと消える。要するに正弦波みたいな感じにしたいわけです。
まず次の関数で明るさをコントロールするようにしてみました。
w(x)=0.5-0.5*cos(2*pi*x) (pi は円周率)

実はこの関数はハン窓というFFTの窓関数と同じです。
それでいくつかの窓関数を試したのですが、見た目大差無かったのは先の記事で書きました。
そんななかで赤池窓を使うことにしました。
ところで、この赤池とは赤池啓次氏のことでしょうか?

式は
Akaike(x)=0.625-0.5*cos(2*pi*x)-0.125*cos(4*pi*x)
です。
これを反転させ、x方向に0.5シフトさせた式(INV_Akaikeと名づけました)も作りました。
INV_Akaike(x)=0.375-0.5*cos(2*pi*x)+0.125*cos(4*pi*x)

グラフです、上がAkaile(x)、下がINV_Akaike(x)です。
Akaike_inv_Akaike.jpg

これを元にさらに四つ輝度関数を追加しました。
具体的には x -> 2*x とします、このままでは 0<=x<=1の間にピークが二つ出来るので、x=0.5 で切り分けます。

下のグラフはAkaike(x)に上のやり方を行った結果で、赤をAkaike2(x)、青をAkaike3(x)とします。
Akaike2_3.jpg

INV_Akaike(x)にも同様の変換を行いました、グラフは省略します。

さらに、のこぎり波を使って二つ作りました。
Sawthooth(x)=x
Sawthooth2(x)=1-x

合計八つの輝度関数を作りました。

スケッチはこちら

あれこれやった名残りで使ってない輝度関数もあります。Welch() と Blackman()がそうです。
loop()内で乱数を使って三つのLEDにそれぞれ輝度関数を選んで点滅させています。

店の電飾

七夕に向けて店の飾りつけをしようという話で盛り上がっていたので、テープLEDを持って行って光らせたら、「電飾作ってね」との(元)お嬢様方からの下命(汗)。
数日中に社長巡回があるからそれまでにどうにか格好つけてくれ、って納期がタイトだ、こっちは趣味でやってるんだぞ。

手持ちの部品をかき集め、足りない部品は検索してから共立電子で求めました。
ネジ式端子台 6PとかスナップインタイプのDCジャックとか・・・。
電飾コントロール

どうにかでっち上げました。入れ物は百均のプラケース。格好悪いのはご勘弁。
電飾コントローラ工作終了

テープLEDとの接続はネジ式端子台を使いました、考えた中ではこれが一番安い。
電飾コントローラ表
Arduinoの取り付けはスペーサー三つ、四つ目は下の写真のようにピンソケットが干渉するのでつけませんでした。
UNO-R3取り付け穴

スケッチを書き換えられるように穴を開けました、不恰好ですが。
電飾コントローラ横

点灯試験中。
電飾コントロール点灯試験中

回路図です。時間がないのであまり考えずに作りました。
analogWrite()はPWMですのでこれでテープLEDの明るさを制御します。
電飾コントローラ回路
自分の手元になく、誰がどうさわるかわからない。テープLEDをショートでもされたらたまらないのでポリスイッチを入れましたが、二つは必要なかったですね。
R1は電圧ドロップ用です、Arduino上のレギュレーターの負担を減らすためですが、両端電圧を測ったら4.7Vでした。電流は23.5mAということになります。これぐらいだったらR1は必要なかったですね。

テープLEDが点灯したままでは全く面白くないので、ふわっと明るくなっては消えるようにあれこれ点滅パターンを試しましたが、あまり凝っても見た目は大差なかったです。

取りあえず社長巡回には間に合いました。
私はその前に帰ったので、どういう評価だったかはまだ知りません。

Arduino Pro Microを試す。(3)HIDとして使う(2)

前の記事では会社のバーコードスキャナーにスイッチを付けてというか乗せてTabコードを出すことを考えましたが、Shift-Tabも出せたほうが便利だと思います。Tabで次のフィールドに移動、Shift-Tabで前のフィールドに移動します。さらに後で何かの機能を追加するかもしれないので、結局スイッチを三個つけることにしました。
バーコードスキャナーの上に何らかの方法でスイッチを乗せ、本体側とケーブルでつなぎます。単純に考えると配線が四本必要になりますが、これを二本でやりたいわけです、シールド線を使うことになりますが。
Arduinoのアナログ入力を使い、抵抗による分圧によって電圧を変えます、スイッチごとに違う電圧が出ればいいわけです。
本体とは1.5メートルほどあります、念のため断線や短絡があればそれも検出できればいいでしょう、ただ道具が無い会社では修理は無理ですけど。(勤め先はスーパーマーケットですので)

一応回路図です。点線から右側がスイッチ部です。
アナログ入力 A0 を使いました。
VCC=5Vとして、断線ならA0の電圧は5Vになりますが、
スイッチが何も押されていない時 4V
SW1 オンの時 3V
SW2 オンの時 2V
SW3 オンの時 1V
となるように抵抗値を計算しました。当然短絡時は0Vです。
二線式スイッチ回路図

実験の様子、R1は手持ちにあった金属皮膜の1%を使いましたが、他は5%のカーボンです。
スイッチはもっと増やせますが、そうすると1%が必要になるでしょう、今回はこれで十分です。
二線式スイッチ


スイッチの状態はAD変換値をADCresultとして
SW=(ADCresult+102)/205
で計算できます、102≒1023/10、205≒1023/5です。
SW=
5 断線
4 スイッチオールオフ
3 SW1 オン
2 SW2 オン
1 SW3 オン
0 短絡
です。
スケッチはこちら
とりあえずのスケッチですので断線・短絡時には何もしていません、LEDを点滅させるかブザーを鳴らすなどすればいいと思ってます。
スケッチ内にdelay()を多用してますが、delay時間が適当かどうかも十分検討はしていません。
SW1 にTab、SW2にShift-Tabを割り当て、表計算ソフトでアクティブセルが移動するのが確認できました。

なお、抵抗分割によるスイッチ入力にはしなぷすさん抵抗分圧器を使った、多くのスイッチのセンシングという記事がありました。
私のやり方ではスイッチを同時押しすると値は変なことになりますが、しなぷすさんの方法だとスイッチに優先度があるので優れています。

Arduino Pro Microを試す。(2)HIDとして使う

今回買ったArduino Pro Micro や Arduino Leonardo などATMega32U4を乗せたボードはHIDとして使えます、キーボードやマウスのフリをさせることが出来ます。
私があれこれ書くより下記のリンクを読んでもらったほうがいいでしょう。

参照リンク
Arduino Leonardo(Pro Micro)のHID(キーボード)機能を使う
Mouse and Keyboard libraries

実験の様子、といってもスイッチ一つ付けただけです(汗
スイッチを押すとキーボードのTabキーを押したのと同じ動作をします。
Tabキーだけのキーボードというわけです、スイッチを増やせばほかにもいろいろ出来ますが。


スケッチです。
// Keyboard Tab
// 2017/06/04 edy

#include "Keyboard.h"

void setup() {
pinMode(2, INPUT_PULLUP);
Keyboard.begin();
}

void loop() {
while (digitalRead(2) == HIGH) {
delay(100);
}

Keyboard.press(KEY_TAB);
delay(100);
Keyboard.releaseAll();// Keyboard.release(KEY_TAB);

while (digitalRead(2) == LOW) {
delay(100);
}
}


こんな実験をするには理由があります。
某スーパーで発注業務をしています、昨年ウィンドウズタブレットが新たに導入されました。それまではほぼA4サイズのWindowsCEマシンを使ってました。
それまでとは作業内容が変わってしまいました。
通常の発注業務はいいんですが、時々ある商品入れ替え時に面倒な思いをすることがあります。
タブレットにハンディスキャナを繋ぎ、登録商品のJANコードをスキャンしてタブレットに入力します。次のスキャンをする前にタブレット画面でキャレット(Iビーム)を次の入力フィールドに移動する必要があります。画面のフィールドを指で押せばいいんですが、これが反応がいまいち悪く、おまけにキャレットが見にくい(老眼なので^^;;)ため移動失敗に気づかないことがあり、かなりイライラさせられます。
左手にタブレット、右手にハンディスキャナ、JANコードをスキャンした右手でタブレットの画面を押すという操作も結構面倒です、視点移動がありますから。
Tabキーを押せばフィールドの移動が出来るのはわかってるんですが、タブレットのスクリーンキーボードのTabキーを押すのでは意味がありません。
ハンディスキャナにスイッチがあって、それを押せばTabキーを押したのと同じになればいいわけです。
これがこの実験の理由です。

とはいえ、タブレットもハンディスキャナも会社の物ですからやらせてもらえるかどうか。

Arduino Pro Microを試す。(1)

AliExpressからArduino Pro Micro互換機を購入しました。
USB microBコネクタがちょっと斜め。
pro_micro_photo.jpg


SparkFunによるArduino互換機で、そのまた互換機を購入したわけです。

ATmega32U4を搭載しておりUSBにつながるので、USB-シリアル変換チップは必要ありません。またHIDとしても使えるそうです。

関連リンク
SparkFun Pro Micro
Hookup Guide
Installing on Windows

Arduino互換ボード「Pro Micro」の情報まとめ
(Arduino) Pro Micro

使うにはデバイスドライバとボードデータを追加する必要があります。
Installing on Windowsに詳しく書かれています。

デバイスドライバのインストールにはデバイスマネージャーを開く必要があります、今まではコントロールパネルから開いてたのですが、Windowsキーと Rキーを押すと「ファイル名を指定して実行」が開くので devmgmt.msc と打ち込んでOKをクリック、簡単です。初めて知った方法ですので覚書として記録しておきます。


脈拍センサー MAX30102を試す(2)MAX30100と比較

MAX30100(左)とMAX30102(右)を並べて同時に測ってみました。
左手中指をMAX30100に、人差し指をMAX30102に乗せました。
30100vs30102_board.jpg

左:MAX30100出力、右:MAX30102出力。
センサーも表示周期もスケッチも違うので同じになるとは思ってませんでしたが、こんなものでしょうか。
30100vs30102.jpg

脈拍センサーMAX30102を試す(1)

AliEXpressでMAX30102モジュールを購入しました。
前の記事でも書きましたがMAX30102にはガラスのカバーが付いてます。

商品ページには下図のようなブロックダイアグラムがありますが、これはMAX30102のレファレンスデザインボードのブロックダイアグラムです。
買ったAliのモジュールはこうなっていません、紛らわしいです
まぁ、商品写真を見ればわかりますが。
Ali_MAX30102page.jpg


モジュール裏の写真です。
Ali_MAX30102module裏3

左側:662K というチップが3.3Vのレギュレータ、
中央下:65K5 というチップが1.8Vのレギュレータ、おそらくXC6206シリーズ(または互換品)と思います。

右側の6pinのチップは回路構成からするとI2Cバスレベル変換をやっているはずで、おそらくデュアルMOSFETでしょう、レベル変換チップだったら最低でも7pin必要ですから。秋月さんで売ってる2N7002DWと同等品かと思います。

MOSFETによるI2Cバスのレベル変換についてはリンクさせていただいているエアバリアブルさんのI2Cインターフェースで異なる電圧の接続が大変参考になります。

MaximによるMAX30102のデモ動画、Arduino UNOとmbedで動かしてます。

詳しいことやArduinoスケッチなどは
MAXREFDES117#: HEART-RATE AND PULSE-OXIMETRY MONITOR
にありますが、このページのFirmware Files: -> Arduino Platform でダウンロードできるファイルには(今現在)問題があってArduino IDEでコンパイルするとエラーになります。

修正されたファイルはGitHubにあります。
MAXREFDES117 firmware for Arduino platforms

手持ちのUno互換機(びんぼうでいいのの旧タイプ)で動かしてみました。
MAX30102_UNO.jpg

メモリーの残りが少ないから気をつけてね、と出ます(汗)
RD117_ARDUINOスケッチ

シリアルモニター出力。
red、irはそれぞれledおよびIR ledの電流値に関する数値のようですが、単位が不明です。
HRは脈拍、HRvalidはHRが正しく測れているか否かをあらわすようで、正しくないと0になるようです。でも1でもとんでもない数値が出ることがあります。
SPO2は酸素飽和度、SPO2validはHRvalidと同様です。
MAX30102シリアルモニター出力

とりあえず、動作はしました。
スケッチやデータシートはまともに読んでません(汗)

脈拍センサーMAX30100を試す(5)

心拍と脈拍は違うそうです。
MAX30100は脈拍センサーですので以後脈拍センサーと記します。過去記事の訂正までは(面倒なので)しません。

MAX30100データシートの1ページ目にこんな図があります。
ガラスのカバーが乗ってますが、MAX30100には付いていません。
(より新しいMAX30102にはガラスのカバーが付いています、Aliでポチりました^^;;)

MAX30100datasheet_page1.jpg

MAX30100モジュールに指を乗せていると、ヘッダピンや部品に指が当たるのが気になります。
そこで手持ちにあった0.5ミリ厚のアクリル板の切れ端を乗せてみました。

アクリルカバー2

これでもどうやら動作してます。
指を乗せたり、リセットしたりしても、すぐには正しい値は出ず8~10秒ぐらい待つ必要があります。
下のシリアルモニター出力ですが指を乗せてからリセットしました。スケッチの測定周期は2秒に変更してます。
REPORTING_PERIOD_MS_2000.jpg

なおスケッチには他にもいくつか変更点があります。

LED currentを4.4mAに変更。
onBeatDetected() を変更。
脈拍値を整数型に変更、小数点二桁までは必要ないでしょう。
REPORTING_PERIOD_MS 2000に変更。

スケッチはこちらにアップしてます。

MT3608モジュールを使ったDSO Shell用電源

前の記事でテストしたMT3608モジュールを使ってDSO Shell用電源を作りました。
単三電池が四本入る電池ボックスを使い何とか押し込みました。
DSO_Shell用電源

蓋はぎりぎり閉まるんですが、電圧調整が出来ないんで格好悪いんですが、切り欠き作って収めました。
DSO_Shell用電源3

出力には手持ちにあった太陽誘電製の22μHのインダクタと1.5μFの積セラでフィルタを入れてあります。手持ち部品を使っただけで定数についてちゃんと検討したわけではありません。
DSO_Shell用電源4

DSO_Shell用電源2

フィルタの入出力波形です、負荷は200Ω抵抗三本並列。出力電圧8.0Vにセット。
上が(当然)出力波形です。
フィルタ追加

 | HOME |  古い日記に行く »

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

店の電飾(3)無限鏡(infinity mirror) Jun 25, 2017
店の電飾(2)回路の変更とスケッチ Jun 25, 2017
店の電飾 Jun 18, 2017
Arduino Pro Microを試す。(3)HIDとして使う(2) Jun 15, 2017
Arduino Pro Microを試す。(2)HIDとして使う Jun 04, 2017
Arduino Pro Microを試す。(1) Jun 03, 2017
脈拍センサー MAX30102を試す(2)MAX30100と比較 May 29, 2017
脈拍センサーMAX30102を試す(1) May 25, 2017
脈拍センサーMAX30100を試す(5) May 20, 2017
MT3608モジュールを使ったDSO Shell用電源 May 16, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

このブログをリンクに追加する

月別アーカイブ

06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (404)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (31)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん