迷走の果て・Tiny Objects

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

戸田よろず研究所さんの積算電流計のご紹介

以前から積算電流計を作りたいと思ってました。
AD654を手に入れて実験していたものの、例によってすぐに放置状態^^;;

ちょっと前にArduinoを使った積算電流計の記事を見つけました。
戸田よろず研究所さんの簡易積算電流計です。
電流検出抵抗の電圧をArduinoで読んで積算し、平均電流を表示するというものです。
掲載を快諾いただきました戸田よろず研究所さんには感謝します。

早速実験。オリジナルでは電流検出抵抗は10Ωですが、実験ですので自作電源を直接つないでます。
100mVを入れたところです、10Ωの抵抗に10mA流したときの電圧です。
積算電流計の実験
電圧をあれこれ変えてみました、低い電圧で値が悪くなってます。
Vin=0.05VだとVin=0.5Vの時の1/10になって欲しいところですが、そうなってません。
Vin(V)出力
0.053.94
0.108.97
0.5049.31
1.0099.56
2.00200.15
4.00401.6
5.00499.51


そこでArduinoのADコンバータの特性を測ってみました(VCC=5V)
直線性はいいようですが、入力0.01V(10mV)でADコンバータ出力が0になってます。
だたし手持ちのArduinoでこうなっただけで、すべてのArduinoでこうなるとは限りませんが、低入力時の特性悪化が問題になるような用途では何らかの対策が必要です。
ATmegaADC.jpg

取り急ぎ実験してみましたが、基本的にはArduinoと抵抗1本だけで積算電流計が出来ます。
実際には電流検出用抵抗の電圧降下はなるべく低く抑えたいので、私の想定してる用途ではアンプが必要になりますが、その辺りは今後の課題とします。

続きを読む »

スポンサーサイト

小型I2C接続 128x64 OLEDディスプレイを試す(4) BME280をつなぐ

アマゾンに注文していたBME280モジュールが到着しました。
8月1日に発送通知があったのですが、昨日(6日)にはもう郵便受けに入ってました。
BME280到着

スイッチサイエンスさんのBME280用スケッチで動作確認した後、Adafruitのライブラリに変更、どうにかOLEDに温度、湿度そして気圧を表示させることが出来ました。
BME280_OLED.jpg
気をつけるべきは、BME280の絶対最大定格が4.25Vということです、5Vだとつぶれてしまいます(試してませんが・・・)
ここでは全体を3.3Vで動作させてます。
消費電流を抑える意味もあってスイッチサイエンスさんのArduinoブートローダ書き込み済みATMega328P-PU(内蔵CR発振8MHz版)を使い、スケッチの書き込みには5V/3.3V切り替えが出来るUSB-シリアル変換モジュールを使いました。

スケッチをのせておきます、継ぎはぎだらけでお恥ずかしいのですが。
ちなみにスケッチが表示できなかったのは、どうやらGitHubに人間扱いされてなかったためのようです。
今は大丈夫です(大丈夫なはずです・・・)

小型I2C接続 128x64 OLEDディスプレイを試す(3)OLEDの輝度調整を試す

【訂正】
FireFoxでスケッチが表示されないので、載せ方を変更しました。

OLEDの消費電流を減らそうと u8glib の u8g.setContrast() を試したのですが、どうにもうまくいきません。
こちらによると
I found out that the command “u8g.setContrast(value)” was not working..
だそうです、解決方法が示されてます。
若干アレンジして試したところ、消費電流を多少ですが減らすことが出来ました。
スケッチOLE_brightness.txtはこちら。
void setBrightness(uint8_t brightness)という関数がそれで、ループ内で毎回呼ばないといけないようです。

下の写真のような表示の場合、OLED自体の消費電流は
void setBrightness(255) の時、5mA強だったのが
void setBrightness(0) とすると3mA程度にまで減りました。輝度は低下しますが充分読めます。
たったの2mAですが、電池動作を考えると有利です。
この表示の場合は光ってる部分が少ないのですが表示パターンによっては消費電流は当然増えます。
OLED_Fio.jpg


今のところは湿度と気圧はダミー表示ですが、アマゾンでBME280モジュールを注文したので、ちゃんとした気温、湿度、気圧表示が出来るようになる予定です。

小型I2C接続 128x64 OLEDディスプレイを試す(2) ADT7410をつなぐ。

【2016/08/01追記 スケッチを載せておきました】

手持ちに秋月のADT7410温度センサモジュールがあったのでつないでみました。

スケッチはwsnakのブログさんのを使わせていただきました。

消費電流を測りたいのでArduino nanoからあちゃんでいいのに変えて実験、最初はクロック16MHzで動かしてましたが、スイッチサイエンスさんのArduinoブートローダ書き込み済みATMega328P-PU(内蔵CR発振8MHz版)に変えました。(写真の黄色いマーク)
消費電流を少しでも抑えたかったので。
OLED_Fio.jpg
OLEDの表示ですが、1行目はADT7410の温度データですが、2行目は単位を%に変えて湿度表示モドキ(^^;;)に、3行目は1000を足して単位をhpにして気圧表示モドキとしました。表示の様子を見たかったのでこのようにしました。
気圧だけ表示が違ってますが、撮影のタイミングでちょうど切り替わったのだと思います。

消費電流は下のようになりました。電流値は変動があるのでアバウトです。

VCC(V)電流(mA)
2.79
3.010
3.311
5.017

VCCを変えてもOLEDの明るさはほとんど変わりませんでした。それならVCCは低いほうが電池動作させるには有利です。

さらに電流を抑えるためにArduinoをスリープさせることにしました。
ラジオペンチさんの消費電流が激減! delayWDT関数を作ってみたという記事のdelayWDTを使わせていただきました。

結果、VCC=3.3Vにてスリープ時 約6mAとなりました。ほとんどOLEDの消費電流でしょう。
約2秒ごとに測定してはスリープを繰り返すように設定しました。
測定時には11mA程度消費しますが、平均電流は減っています。

続きを読む »

小型I2C接続 128x64 OLEDディスプレイを試す(1)

アマゾンから小型I2C接続 128x64 OLEDディスプレイを入手したのでArduinoで早速実験。
(DTMFはしばらく放置^^;;;)


参考にしたWebページです、ありがとうございます。
 I2C 128×64 OLEDディスプレイをArduinoで使う
 小型I2C 128x64 OLED ディスプレイ の動作確認

詳しいことは上記のWebページに書かれていますが、ここではu8glibのライブラリを使いました。
Binary download linksのU8glib for Arduinoからライブラリーをダウンロードし、インポートします。
私の場合はversion1.18.1でした。
サンプルスケッチを開くと、コメントアウトした行が多数あるのがわかります。多くのグラフィックボードに対応させるためでしょう。
使うグラフィックボードのコメントを外します、このボードの場合は下の行のコメントを外します。

//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0);

サンプルスケッチをあれこれいじってると、フォントを変更できることがわかりました。
検索するとこちらにU8glibで使えるフォントのリストがありました。
そこで簡単なスケッチを書いてフォントを変えながら表示させてみました。
  24.9c
  51.0%
1012.0hPa
という文字列を表示させているだけで、実際に温度や湿度、気圧を測ってるわけではありません。
いずれやることを想定しての表示実験です。


helvR14
helvR14.jpg

courR18、今回の実験では一番私好み。aが切れてますが、仕方ありません。8桁x3行表示できれば私には充分です。
courR18.jpg

courB18
courB18.jpg

font_10x20、何故かセルフタイマーLEDが写っちゃってます^^;;
font_10x20.jpg

profont22
profont22.jpg

DTMFで遊ぶ(2)HT9200Bを使ったDTMFジェネレータの実験

当初DTMF信号はPSoCで発生させるつもりだったのですが、マルツオンラインでHT9200BというDTMFジェネレータを見つけたので購入しました。
HT9200のデータシートはこちら

HT9200Bはパラレルモードとシリアルモードを選べますが、今回はパラレルモードで実験。
回路図です。
HT9200B_DTMF実験回路

ブレッドボードで実験。
HT9200B_DTMF実験

出力波形、階段状になってます。サイン波データをテーブルに収め、順次読み出してDA変換しているようです。
D0~D3はすべてHレベルのときの波形です。
DTMF波形

HT9200のデータシートより引用。
D0~D3はすべてHレベルなので852Hz+1633Hzを出力していることになります。
DTMFテーブル

WaveSpectraによるスペクトラム。低いほうが941Hzになっていますが、誤差は1%程度です。
Wikiによれば、規格では信号周波数偏差は信号周波数の±1.5%以内となっていますから、規格範囲内に収まってます。
DTMF_852_1633Hz.jpg

DTMFで遊ぶ(1)

DTMFはいわゆるプッシュ信号です。
PSoC1 には DTMFDialer というユーザーモジュールがあり、前から試してみようと思ってましたが、なかなか手をつけるには至りませんでした。
ロボットプログラミング教室を手伝うようになり、DTMFでコントロールできたら面白いかもしれないと、実験を始めました。

まずはデコーダからです。MT8870というデコーダICがあり、これを使ったモジュールがあったのでアマゾンで入手しました。
MT8870データシート
DTMFデコーダモジュール回路図

このモジュールとパソコンの音声出力を繋ぎ、Online Tone GeneratorというサイトからDTMF音を出して動作レベルを確認しました。
オシロによる目視ですが、約200mVp-p以上で動作確認できました。

DTMF音を拾ってコントロールするためにはマイクが必要です。
手持ちにコンデンサマイクがあるのですが、到底レベルが足りないのでアンプが必要です。
手持ちにかなり以前に買ったマイクアンプキットがあったのでこれを使いました。
TA2011Sを使ったマイクアンプです。TA2011は廃止品ですが、互換ICにSA2011があり、これを使ったパーツセットがデジットにあるようです。
TA2011Sマイクアンプキット

コンデンサマイク用に一部部品を追加しました。
私の場合、C1とR1によるデカップリングをしないと、レベルは低いですが約400Hzの発振がありましたので入れてあります。
TA2011Sマイクアンプ回路

基板裏にR1、R2とC1をつけてます。
TA2011Sマイクアンプキット裏

スピーカーからDTMF音を出して、実験中。
数メートル離しても音さえ大きくすれば(当然でしょうけど)ちゃんと動作しました。
あまりうるさいと近所迷惑なので夜には試せませんでしたけど。
DTMFデコーダ実験中

PSoC1でスポットオシレーターを作る

PSoC1を使った200Hz 1KHz 5KHz 切り替え式のオシレーターを作りました。
1KHzだけのを作ったことがあるのですが、ちと面白くないので作り直しました。
百均で売ってる3個100円也(税別)のケースに押し込みました。
Spot_OSC_外部


恥ずかしながらの内部。
Spot_OSC_内部

回路図。
この描き方には違和感を覚えます。入力は左、出力は右というのが回路図を描くときの原則だからです。
でもこの場合、部品配置とほぼ一致するのでこれでよしとしました。
Spot_OSC_回路図
以前のスポットオシレーターは単三を4本も使っていたので、2本にして秋月のDCDCコンバータを使いました。
ただスイッチングノイズが70mVp-pほどあり、出力波形を悪化させるのでLCによるフィルタを入れてあります。
部品はほとんど手持ちで間に合わせました。適当かどうかまでは検討してません。
P[0]3からサイン波が出るのですが、スイッチトキャパシタを使ってるので階段状になります。
そのためCRによる簡単なフィルタを入れてあります。
P[0]2 と P[0]4 はオープンドレインにしてあります。これをオンオフして出力周波数によってフィルタのカットオフ周波数を変えてます。
出力にバッファを付け、もう少しまともな金属ケースに入れたいところですが、ちょっとした実験には充分です。

5KHz出力、オシロで見る限りは綺麗です。
ちなみにこのオシロは三代目(^^;;)オークションで手に入れました。
Spot_OSC_5KHz



GPS事始め(4)外部アンテナをつける

オークションでGPSアクティブアンテナとSMA-IPEX変換ケーブルのセットを入手しました。
アンテナのケーブルは3m長でコネクタはSMAです。底面はこうなってます。
外付けアンテナ
aiendoのGPSアンテナ [GPS001-SMA-ML]と同じではないかと思いますが、未確認です。
落札したのはこの外部アンテナとSMA-IPEX変換ケーブルのセットです。

変換ケーブルは今現在(2016/06/23)ヤフオクで出品されてます
またaitendoさんにもあります。

これを今実験に使ってるケースに組み直しました。みっともない穴が開いてるのは見ないでください^^;;;
左側のはアマゾンで入手したUSBシリアル変換モジュールです。
GPS_外付けアンテナ

これでアンテナだけ好きなところ置けるので、使いやすくなりました。
Sky Viewです。室内でも常時十個前後の衛星をキャプチャしてます。ただし私の住居は木造ですので鉄筋などでは違ってくるとは思いますが、確かめようがありません。
GPS_u_center外付けアンテナ

なお写真右上に写ってるのはDTMFデコーダです。これについてはいずれ・・・

GPS事始め(3)u-centerを使う

使っているGPSモジュールはNEO-6Mです。
設定には u-center を使います。私はu-center ver.8.16を使ってます。

GPSモジュールのタイムパルスを利用するのが目的ですので、周波数を変更する必要があります。
u-center のメニューから "View"→" Configuration View"とし、TP5(Timepulse5) をクリックします。
設定画面が出るので、ここで周波数を変更します。
ここまではトランジスタ技術2006年2月号118ページと同じなのですが、二つある周波数設定窓の説明がどうも違ってるようです。

下側の Frequency Locked はGPSにロックした場合の出力周波数で、上側はロックしていない場合の出力周波数です。
実験で確かめました。
u-center 設定ソフトの使用方法 にも同様のことが書いてあります。

下図では実験のためロックが外れたときにわかるようにわざと2Hz に設定してあります。
lock.jpg

 | HOME |  古い日記に行く »

文字サイズの変更

プロフィール

edy

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

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

月別アーカイブ

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)
電子工作 (348)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (28)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

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

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん