電子工作

16/03/16 3軸加速度センサーLIS3DHのA/D変換

RaspberryPi2 Bで色々なセンサーを実験したくて、I2C接続で手頃な3軸加速度センサーLIS3DHを買ってみました。

A/D変換も3chあるという事で、それもアテにしていたんだけど…
そのA/D変換の仕様が何ともクセがあって嵌ったのでその時のメモ。

データシートにはA/D変換に関する詳細な仕様(入力電圧範囲や、変換式など)が書かれてなく素性が良く分からない。
そこで色々と調べてみると、海外では有名(?)なAdafruitというサイトに気になる記述が。

the valid reading range is only ~0.9V to 1.8V
(有効な読み取り範囲は、わずか0.9V~1.8Vです)

あまりに中途半端な仕様で気になったので実測してみました。

Photo
<図>

ちょっと見づらいかも知れないけど、横軸が入力電圧で、縦軸がそれに対するA/D変換値。

てっきり期待値の線のように0~3.3Vに向かってリニアに変化するのかと思っていたら、ホントに0.9~1.7Vまでで、かつ入力に対して逆方向に変化するという結果。

LIS3DHのA/D変換を使いたい方はご注意ください。

| | コメント (0) | トラックバック (0)

16/01/30 ラズパイ リモコンタイマー

RaspberryPi2 Model Bを使って、リモコンをタイマー制御できる物を作ってみました。
例えば、朝起きる1時間前にエアコンをONして、起きる10分前にTVをON、起きる時間に蛍光灯を点灯させる、といった使い方が出来ちゃいます。

01
<写真01>外観(上部)

02
<写真02>外観(上部)

中央上部にある窓は、蛍光灯などの天井に向けた赤外線LED用の物。
右下に3組のボタンとLED。

03
<写真03>外観(正面)

真っ黒で分かりにくいけど、正面に向けた赤外線LED用の窓。

04
<写真04>外観(右側面)

左側に赤外線受光部、右側にACアダプタ入力。

05
<写真05>メイン基板

今回もチップ部品を多用したので、見た目がすっきりしています。
この下にラズパイがいます。

06
<写真06>サブ基板

部品面にタクトスイッチとφ3のLED、ハンダ面にチップ部品を実装しています。

続きを読む "16/01/30 ラズパイ リモコンタイマー"

| | コメント (0) | トラックバック (0)

15/12/05 Raspberry Pi2

いま流行りのラズパイ2を買ってみました。

P1080673
<写真1>Raspberry Pi2

こんなカードサイズの基板でBroadcomのSoC(ARMコア)が乗って900MHz/4コア動作、1GB RAM、HDMI出力、USB2.0x4、LAN搭載。
(ストレージはmicroSD)
これでLinuxが動作するなんて、i486SXで遊んでいた頃と比べると夢のようです。

GPIOやI2C、SPIもあるので、今までとは違ったモノが作れそうです。

| | コメント (0) | トラックバック (0)

15/08/02 Bluetooth化OpenPort動作確認

Bluetooth付Windows環境が手に入ったので、早速動作確認を取りました。

P1080332
<写真01>取付け

取付けは以上。
ワイヤレスなので簡単です。

Bluetooth1
<図01>デバイスマネージャの認識

Bluetooth2
<図02>デバイスマネージャの認識

COM3とCOM4が追加され、COM4が今回対象のポートという認識。

Ecuexplorer
<図03>ecuExplorer

ecuExplorer、RomRaider、LearningViewいずれも認識でき、ログ取りもばっちり。
そして何より、ケーブルを意識しなくて良くなった効果は大きくて、狭い車内でも扱いやすくなりました。

| | コメント (0) | トラックバック (0)

15/06/21 OpenPort Bluetooth化

ちょっとした思いつきでOpenPortをBluetooth化してみました。

01
<写真01>Bluetooth化OpenPort

あとは配線をして終わりです。

仕様はOpenPort1.0互換でロギングのみ。
書換えはできません。
技術的には可能なんだけれど、書換え最中に何らかの要因でBluetoothが切断された時のリスクを避けるため。
→訂正。EcuFlashはFTDIのデバイスじゃないと認識しない仕様のため無理ですね…。
まぁ、書き換える時はもなもなケーブルを使用すれば良い訳で。

BluetoothモジュールはandrocitiのCOM-1000S
とにかく小型で低価格、SPP対応(これ大事)。
そしてI/Fの電圧が3.3~5V対応という所がポイント。
意外に5V対応ってないですね。
レベルシフタを入れれば良い事だけれど、極力小さくしたかったのでモジュール側で対応している物を探しました。

02
<写真02>Bluetoothモジュール

今はまだ、Bluetooth付のノートPCがなく動作確認できる環境がないのでここまで。
後日改めて確認します。

| | コメント (0) | トラックバック (0)

15/05/24 カウントダウンタイマー回路修正

以前公開したカウントダウンタイマーの回路図ですが、一部不具合がありましたので修正いたしました。
回路図、部品表を更新しましたので、当記事を参考になさった方は、こちらよりダウンロードし直して下さい。

_ver11
<図1>回路図 Ver1.1

変更箇所は、マイコンとBluetoothモジュール(RN-42)の間にあるレベルシフト回路。
Ver1.0では双方向タイプのFXMA108を使用しましたが、Bluetoothモジュール(3.3V) → マイコン(5.0V)変換は問題なさそうだったけど、その逆方向の変換がダメダメ(全く波形が出てこない)。
FXMA108のデータシートにはプルアップ(またはプルダウン)を使用しないでくれとあるが、Ver1.0の回路にはもちろん使用してない。
マイコンのデータシートを確認したが、TxD0ピン(端子タイプ7-1-4)にあるプルアップが影響しているのか?
Bluetoothモジュール(RN-42)のデータシートも確認したが、明確な記載なし…。
そういった制約があるので、双方向レベルシフタは使いにくいですね。

実装スペースの関係でなるべく簡単に対応したかったので、FETを使用したレベルシフタに変更しました。
と言っても、アナログ回路は苦手なので下記サイトを参考にさせて頂きました。
・air variable
http://airvariable.asablo.jp/blog/2013/07/25/6922613

こんなに簡単に実現できるなんて素晴らしいです。
air variable様には感謝です。

実際に動作確認し、問題ない事を確認してあります(波形は取り忘れ…)。
オーバーシュートが大きかったので100pFのセラコンを追加してありますが、115.2kbpsの通信速度で目立った波形なまりもなく良好でした。

| | コメント (0) | トラックバック (0)

14/11/07 FTDI USB3.0互換性問題

好んでFTDIのICを使用するんだけど、ちょっとドハマリした事があったのでその時の覚書。

●現象
MPSSEモードでFT2232Hを制御するためlibMPSSE.dllを使うが、SPI_GetNumChannels()でチャネル数が取得できない、SPI_GetChannelInfo()でデバイスの情報が取得できない、SPI_OpenChannel()でオープンできない等、正常動作しなかった。
ちなみにFT232Hは問題なし。
動作環境はWindows7 Professional (64bit)。

試しにlibMPSSE.dllのAPIは使用せず、FTD2XX.dllのAPIであるFT_GetDeviceInfoList()を実行。
すると接続しているデバイスの情報を取得できたが、「Location ID」が"0"になっていた。
(0x00000331といった値になるハズ)

01_log
<図01>FT_GetDeviceInfoList()の取得結果

●解析
この「Location ID」が"0"になる現象について調べるとFTDI社による見解が公開されており(下記リンク先参照)、簡単に言うとWindows8以前のOSでUSB3.0のルートハブ系統に接続すると予期しない動作となるとの事で、本現象はTN152の「2.1.2 Location ID Retuned As 0」に該当する。

FTDIとしては、これはUSBホストベンダによる問題であり、USBデバイスの製造者が解決する問題ではない、として対策はしない方針のようです。
言い分も分かるけど、ちょっと困りますね。

・FTDI テクニカルノート「TN_152 USB3.0 Compatibility Issues Explained」
http://www.ftdichip.com/Support/Documents/TechnicalNotes/TN_152_USB_3.0_Compatibility_Issues_Explained.pdf

・TN_152のヒューマンデータによる和訳
http://www.hdl.co.jp/USB/FTDI/lt2/index.html

公開されているlibMPSSE.dllのソースコードから、SPI_GetNumChannels()でチャネル数が取得できない原因を調べていくと、ftdi_mid.cにてLocation IDを参照している箇所あり。
上記問題から、正しくチャネル数が検出できなかったようです。
ちなみにFT232Hの場合はLocation IDを参照していないため、初めから問題なかったようです。

02_source
<図02>「ftdi_mid.c」の該当箇所

●対策
FTDI テクニカルノートTN_152では、
・USB2.0のポートに接続する。
・Windows8以降のOSを使用する。
としているが、まだまだWindows7環境が多い事と、USBポートを限定させるのも使い勝手が悪いのでlibMPSSE.dllを修正してみました。
添付しますのでお使い下さい。
「libMPSSE.dll.zip」をダウンロード

<図02>の該当箇所を仮修正(if文をコメントアウト)しMinGWでコンパイル。
生成されたlibMPSSE.dllで動作検証を行い、SPI_GetNumChannels()でのチャネル数取得、SPI_GetChannelInfo()やSPI_OpenChannel()等で期待通りの動作をする事と、実際のデバイスからも信号出力される事を確認しました。

03_a0xaa
<図03>Ach SPI_DATA = 0xAA時の波形

04_a0x55
<図04>Ach SPI_DATA = 0x55時の波形

05_agpio
<図05>Ach GPIO(H→L→H)時の波形

Bch側も同様に動作しているので波形は省略。

●考察
今回行った仮修正の妥当性について。
修正対象となったftdi_mid.cのMid_CheckMPSSEAvailable()は、対象デバイスの中から利用可能なMPSSE数を取得する関数で(表1参照)。
FT232HやFT2232Hに関しては総チャネル数に対して利用可能なMPSSE数が同数のため、今回行ったコメントアウトによる修正でも問題ないと思います。
しかしFT2232D(またはC、L)やFT4232Hのように総チャネル数に対してMPSSE数が異なるデバイスを使用する際は別の対策を行う必要がありそうです。

                                                                                     
<表1>総チャネル数とMPSSE数
デバイス 総チャネル数 MPSSE数
FT232H 1 1
FT2232D/C/L 2 1
FT2232H 2 2
FT4232H 4 2

| | コメント (1) | トラックバック (0)

14/09/20 カウントダウンタイマーの制作

いつ作ったのかは全く覚えていないのだけれど、ネット上で見つけた回路図そそのままデットコピーして作った物をずっと使ってきました。
(参照元さま、ありがとうございました)

01
<写真01>旧作(外観)

サムホイールスイッチが4桁あるけど、下位2桁(分)は機能しません。
(分刻みで設定できるように改造したかったけど、それができず頓挫)

02
<写真02>旧作(背面)

03
<写真03>旧作(内部)

1部2階建てになっていたり、ジャンパー線が多かったりするが、これでも当時の私としては良く出来た方。
回路は全て汎用ロジックICで構成されているため、ちょっとした変更もなかなかできず…。

●旧作の仕様
・時間単位の設定(1~99時間設定)
・動作モードはカウントダウンモード(指定時間経過でON/OFF)のみ。
・AC 100Vのコンセントを持ち、設定時間を経過するとONするコンセントとOFFするコンセントの計2口。
・スタートボタンのみで、キャンセルしたい時は本体の電源をOFFする。
・コンセント側の負荷は最大60Wまで(使用するリレーによる)。

だいぶ長い事使用してきたけど、使っているうちに幾つか改善したいポイントが出てきたので、いっその事自分で設計してみました。

●新作の仕様
・分間単位で設定(1分~99時間59分)
・動作モードはカウントダウン(時間)モードに加えて、タイマー(時刻)モードを追加。
・AC 100Vのコンセントを持ち、設定時間を経過するとONするコンセントとOFFするコンセントの計2口。
・スタートボタンに加えて、キャンセルボタンも追加。
・コンセント側の負荷は、1口あたり最大100Wまで(使用するリレーによる)。
・Bluetooth機能追加で、スマホ(Android端末)の専用アプリから設定できるようにする。
・マイコン(ルネサス RL78/G14)を使用。後からでも任意の仕様に変更可能。

04
<写真04>新作(外観)

05
<写真05>新作(背面)

06
<写真06>新作(内部)

07
<写真07>ルネサス E1エミュレータ

今回初めてマイコン(ルネサス RL78/G14)を使用しました。
そのためのE1エミュレータも購入。
マイコンF/Wの開発環境はCubeSuite+で、無償評価版でコンパイル、デバッグを行いました。

Photo
<図1>回路図 Ver1.1(15/06/21 Ver1.0から回路図差し替え)

以下、回路の説明。

・マイコン部分はマイコンボード(QB-R5F104LE-TB)を使用。実装など諸々の手間を省いています。
・サムホイールスイッチは旧作の部品を流用したので特に指定はありませんが、バイナリ出力BCD10進の物を使用して下さい。
・7セグLEDはカソードコモンを使用で、マイコンによるダイナミック点灯を行います。
・リレーは手持ちの物を使用(Panasonic HB2-DC5V)しましたが、2C接点の5V品であれば何でも良いと思います。
・2つ目のリレーは将来拡張用です。
・スマホから制御する必要がなければBluetoothモジュール(RN-42)周辺回路は不要です。

続いてスマホアプリ。
Android向けのアプリ開発「Xamarin」で行いました。

Screenshot_20141014140701
<図2>スマホアプリのスクリーンショット1

Screenshot_20141014140801
<図3>スマホアプリのスクリーンショット2

「設定」ボタン押下で、設定時間情報をタイマー本体に転送します。
「安全上の都合」という事でスマホアプリ上にはスタートボタンは付けませんでした。
そうは言っても、しばらく使ってみると少し不便なので仕様変更するかも。

回路の設計資料やマイコンF/W、スマホアプリのソースなどの設計データ一式はこちらにUPしておきます。

----------------------------

15/06/21 追記

回路図にミスがありましたので、回路図、設計データを差し替えました。
詳細はこちらを参照してください。

| | コメント (0) | トラックバック (0)

14/03/02 ルームランプの照度測定

スマホの光センサーで照度が測定できる事を知って、スグにアプリをインストールして測定してみました。
これまでに購入または製作したLEDランプの明るさを定量的に知る事ができるので大助かりです。
各種センサーを内蔵しているスマホって、とても便利ですねhappy01

※照度の測定の際、キャリブレーションを行っておりません。
 また内蔵されているデバイスの精度や測定方法、環境に左右されるので、測定結果は参考程度に留めて下さい。

表1~2は夜、実車で測定した結果。
表3~4は自室で測定した結果です。

                                       
<表1>ルームランプ 測定結果※測定条件:座席中央のコンソールボックス上に平起きして測定
光源照度[lx]補足
自作LEDルームランプ2nd66

自作LEDルームランプ2ndは十分に明るい仕様なんだけど、ランプの真下が座席に挟まれていると言う事もあってか、意外と低い値でした。
 

                                                                   
<表2>カーゴルームランプ 測定結果※測定条件:カーゴルーム中央に平起きして測定
光源照度[lx]補足
サイドカーゴルームランプ47光源に向けて傾けて測定
追加ランプ179
サイドカーゴルームランプ
+ 追加ランプ
179平置きで測定

追加ランプは明るいですねぇ。
数値を見て更に満足です。

                                                                                                                                           
<表3>予備ランプ 測定結果※測定条件:光源との距離50cm、光源の周囲を直径180mmの簡易リフレクタを設置して測定
光源13.8[V]14.4[V]補足
照度[lx]照度[lx]
LEDルームランプ
 白色1Wタイプ(TypeA)
2628秋月電子通商
LEDルームランプ
 白色LEDx5
6163秋月電子通商
T10 汎用39灯LEDバルブ 白5656LED SHOP こりす堂
純正 T10バルブ5973純正
純正 T10×31バルブ205254純正

先日、交換しようかと迷った汎用39灯LEDバルブ。
39灯もある割には、白色LEDx5(=15灯)よりも暗いという、これまた意外な値。
あまり明るくないと感じたのは、あながち間違っていなかったと言う事ですね。

                                                                                                   
<表4>その他 測定結果※測定条件:光源との距離50cm、光源の周囲を直径180mmの簡易リフレクタを設置して測定
光源照度[lx]補足
LEDランタン ALA-4301改59
ミニクリップライト改271
Skynie SL-0121129
サンジェルマン
LED LENSER Focus19 OPT-7848NB
198ワイド照射
1647スポット照射

・測定に使用したアプリ
 照度計測(ルクス計測)

| | コメント (0) | トラックバック (0)

14/01/11 追加カーゴルームランプ

LEDカーゴルームランプ 2ndミニクリップライト改で、純正よりは大分明るいカーゴルームだけど、やはり横から照らしているので、荷物があると影になってしまう。
という事で、納得の行く物を作ってみました。

ホームセンターで良さそうな物を物色して、見つけたのがコレ。

01
<写真1>ELPA 開閉ライト 増設用

欲しいのは外側のケースなので、もったいないけど中の基板等は外してしまいます。
続いて回路。

Led_3rd
<図>回路図

                                                                                         
<表>●使用したLEDの特性
メーカー日亜化学工業
型番NSPWR70CS-K1
光束20lm(typ)
指向角80°
Vf3.1V(typ)
If50mA

LEDは当然、日亜化学工業製です。
今回は指向性を考慮してNSPWR70CS-K1にしてみました。

02
<写真2>回路(部品面)

抵抗は、実装スペースの関係で1/4W品を使用しちゃいました。
1/4W品だと定格電力ギリギリなのでマネしないで下さい。
(回路図の方は正しいです)
通常は定格電力の半分までを目安に使用して下さい。

03
<写真3>回路(半田面)

04
<写真4>部品実装

外側のLEDは少し角度を付けて実装しました。
こうする事で、カーゴルームの外側にも光がムラなく届くようにします。
あとは配線してケースに組み込んで終わりです。

続いて電源。
追加ランプの電源はカーゴルームランプが接続されているカプラーを割り込む形で取りました。

06
<写真5>カーゴルームランプのカプラー

05
<写真6>電源分岐コード

車両側のカプラーはエーモンの「カプラー2極(ロック式)」(ITEM No.1122)で接続できます。
追加ランプ側は「カプラー2極」(ITEM No.2810)を使用しました。

で、取り付けしてから分かったんだけど、写真5のカプラーに接続されている赤と黒のコードは、赤が+12Vで、黒がGND…ではなかったです。
てっきり、赤が+12Vだと思って写真6の電源分岐コードも作っちゃったので、急遽追加ランプ側のカプラーのピンを入れ替えて対応しました。
予めテスター等で確認するべきでしたね。

07
<写真7>取り付け

写真にある通りの場所に取り付けました。
赤黒の配線が目立ってしまいますが、他に都合の良い物が無かったので仕方ないです…。
あと、スイッチも付けてON/OFFできるようにしました。

いよいよ点灯の様子。

08
<写真8>追加ランプなし

まずは追加ランプなしで、カーゴルームランプのみの様子。
これはこれで、純正よりは結構明るいんですけどね。

09
<写真9>追加ランプON

続いて追加ランプをONした様子。
全体的に明るく大満足です。

ランプの取り付け位置の関係もあって、写真では奥の方が大分暗く見えていますが、実際はそれなりに見えています。これくらいなら許容範囲です。

これでまた、夜の釣行が楽しみになりました(^▽^)

| | コメント (0) | トラックバック (0)