エントリー

カテゴリー「自作測定器・装置」の検索結果は以下のとおりです。

ESP8266で電圧ロガーを作製

計測した電圧をWEBから確認するESP8266を使用したプロトタイプを作っておこうと先ずはESP8266を使用した電圧ロガーを作製

これが簡単にできると思っていたが使い物になるまで日数が掛かってしまった

IMG_20201217_203851.jpg

仕様
  • 定間隔で電圧を計測してDBに登録
  • 計測電圧は0~15V
  • 高低電圧を設定でき範囲外となった場合計測を終了(同時にリレーをON/OFF)
  • DBの登録データはブラウザでグラフ表示
  • LOG ON/OFF,UP,DOWNの3ボタン
操作(UI)
  • LOGボタンでログのON/OFF
  • LOGボタンの長押しで最大/最小電圧の選択切替
  • UP,DOWNボタンで選択電圧の変更
  • LOGボタンでを押しながらUP/DOWNボタンでログ間隔を変更
回路図

voltMonitor_回路図.png

  • 2つのボタンはBOOT時HIGHで使用するIO0とIO2を利用
  • ADCの分圧は多回転半固定で調整できるようにした
  • 現在リレーは未実装
作製

いつものとおりブレッドボードで試作

IMG_20201122_194106.jpg

ADCの精度

ESP8266にはアナログ入力が1PinあるがADCの精度があまり良くないという情報を得ていたので外部ADCも検討したが手持ちのADC(MCP3002)がSPI接続だったためとりあえずは内部ADCで作製することにした

0~15Vでの測定なので分圧し,いつものように割合をソフトで調整しようとしたのだが,測定電圧がブレてしまい電圧が定まらない

ブレッドボード上のせいか?と思われたので基板に載せて調整しようとしたが同じ結果だったためソフトでの調整を諦め多回転半固定でハード的に調整することにした

IMG_20201129_205914.jpg

結果,そこそこマシにはなったが精度が悪くロガーとしては問題がある

不明のスタックエラー

プログラム開発の途中で原因不明のExceptionによる異常終了に陥った

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Exception (0):
epc1=0x402030dc epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

>>>stack>>>

ctx: cont
sp: 3ffffab0 end: 3fffffc0 offset: 0190
3ffffc40: 3ffe8c85 40104dc3 3ffec6c0 feefeffe
3ffffc50: 401026af 3ffec6c0 3fffc248 4000050c
3ffffc60: 400043e6 00000030 00000017 ffffffff
3ffffc70: 400044ab 3fffc718 3ffffd60 08000000
3ffffc80: 60000200 08000000 08000000 00000000



3fffff90: feefeffe feefeffe feefeffe feefeffe
3fffffa0: 3fffdad0 00000000 3ffeeae4 40206c80
3fffffb0: feefeffe feefeffe 3ffe8510 401012c9
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

WiFi接続時に発生していることが判明したが原因は判らなかった

最終的にI2Cの初期化と順番を変えることで解決

×
  //I2C初期化
  Wire.begin();
  u8g2.begin();
  u8g2.clear();

  //WiFi接続
  WiFi.begin(ssid, password);
    unsigned long timeout = millis();
  while(WiFi.status() != WL_CONNECTED) {
  if(millis() - timeout > 30000) halt();
delay(100);
    }
-------------------

  //WiFi接続
    WiFi.begin(ssid, password);
unsigned long timeout = millis();
while(WiFi.status() != WL_CONNECTED) {
if(millis() - timeout > 30000) halt();
delay(100);
}

    //I2C初期化
Wire.begin();
   u8g2.begin();
   u8g2.clear();
チャタリング

ボタンを3個にしたため,電圧を上下させる際の最大/最小切り替えるボタンをLOGボタンの3秒長押しにしたのだが,LOGボタンを長押しした後ボタンを離すとチャタリングが発生しているようでソフトで対策したが完全に解決しない

static volatile unsigned long btnintrtm;

void ICACHE_RAM_ATTR logsw_intr() {
if(millis() - btnintrtm <= 50) {
//チャタリング防止
return;
}
btnintrtm = millis();
 noInterrupts();



interrupts();
}

LOGボタンの不良または内部プルアップであることが原因かもしれない(未確認)

懸案事項
  • 現行では3分記録ログで約200mAhの消費電力なので100mAh以下を目指す
  • 測定電圧の精度が良くないので外部ADC化
  • チャタリングのハード的な原因調査
  • リレーの実装
参考までに

DBテーブル(FUNCIDは現在未使用)

CREATE TABLE IF NOT EXISTS `FUNCID` (
`ID` char(2) NOT NULL DEFAULT '0' COMMENT 'ID',
`NAME` char(32) NOT NULL COMMENT '名称',
`SUMMARY` text NOT NULL COMMENT '概要',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='装置機能別名称';

CREATE TABLE IF NOT EXISTS `HISTORY` (
`ID` char(2) CHARACTER SET utf8 NOT NULL DEFAULT '0' COMMENT 'ID',
`CTIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '初期日',
`INTERVAL` decimal(2,0) NOT NULL COMMENT 'ログ間隔(分)',
`MINVOLT` decimal(4,2) NOT NULL COMMENT '最小終止電圧',
`MAXVOLT` decimal(4,2) NOT NULL COMMENT '最大終止電圧',
PRIMARY KEY (`ID`,`CTIME`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='履歴';

CREATE TABLE IF NOT EXISTS `LOG` (
`ID` char(2) NOT NULL DEFAULT '0' COMMENT 'ID',
`CTIME` datetime NOT NULL COMMENT '初期日',
`MTIME` datetime NOT NULL COMMENT '適用日',
`VOLTAGE` decimal(4,2) NOT NULL COMMENT '測定電圧',
`VALIDITY` char(1) NOT NULL DEFAULT '0' COMMENT 'データ有効性',
UNIQUE KEY `ID` (`ID`,`CTIME`,`MTIME`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='電圧監視ログ';

以下は現在版で将来的には十分に改版あり(現在のブラウザのデフォルトがSJISのようなのでUTF8からSJISに変換している)

DB登録(regVolt.php

ログ表示(gLogVolt.php

ESP8266ロガープログラム(voltMonitor.ino

WBGT表示装置の作製

ブレッドボードで実装確認できるまでは楽勝だったが・・・使い物になるまで随分と時間が掛かってしまう

ポータブル化編

ブレッドボードで確認できたのでケースに入れてポータブル化する

3Dプリンタがあれば都合の良い入れ物が作れるのだが・・・ちょっと3Dプリンタの購入には躊躇(最大の懸案は置き場所)していて都合の良いケースは作れない

なので・・・周りの物から考えて,ダイソーのUSBバッテリーケースを流用することにした

IMG_20200810_140043.jpgIMG_20200810_140239.jpg

元々ポータブルバッテリーなので持ち運び可能なサイズである

IMG_20200811_094156.jpg

充電基板はリポ用だが電圧的にニッケル水素の直3の充電でも問題ないので流用できそうだ

問題は入り切るか・・・である

流石に1枚基板では厳しかったので2段の2枚にして,1段目に電源・OLED・センサー,2段目にCPUを実装した

IMG_20200813_171416.jpgIMG_20200813_171443.jpg

IMG_20200813_171515.jpg

バッテリと組み合わせた全体は以下

IMG_20200813_171322.jpg

ケースの加工を行う(柔いプラなので加工は簡単)

IMG_20200814_132203.jpgIMG_20200815_194219.jpg

基板を嵌め込んで蓋をすれば完成

IMG_20200814_133132.jpg

この状態でしばらく実働確認する

IMG_20200815_193424.jpg

1W実証したところ以下の2点の致命的問題が発覚

①電源が1日持たない

②ボタン操作でリセットすることがある

調査・改善編

(問題①)

ニッケル水素バッテリの劣化は無いことは先に確認していたので容量不足はないと思うが,充電回路がリポの上限の約4.1Vで切られるためMax.40mAhは使えないからではないかと思われる

ニッケル水素用に充電部を変更するのは簡単ではあるが,ニッケル水素電池×3個の収まり具合が悪いこともあり最適と思われるボタン型電池を調べてみると,直径20mmのボタン型リポをAmazonで見つけた(4個で約1Kで他でも使えると思い購入)

IMG_20200823_170337.jpgIMG_20200823_170900.jpg

1.5日は十分持つことを実証している

(問題②)

調査のため操作を繰り返しているとOLEDの表示も無くなり動作不良になってしまう

そして障害の解明までかなり費やすことになる

まずは各パーツの調査を行う(以下順)

①電源電圧を各所で確認したが問題なし

②CPUをArduinoボードで確認したが問題なし

③OLEDの表示チェック(Arduinoでテストプロ実行)も問題なし

④センサ確認のためCPUとOLEDを取り除いたボードにArduinoを接続して確認したが動作した

⑤④のArduinoに利用していたCPUを使うが問題なし

⑥⑤に利用していたOLEDを接続して問題なし

(ここで全てのパーツと1段目基板の接続は異常無しが確認できた)

⑦2段目基板の導通試験をした結果ピン間の半田不良?が発覚

IMG_20200823_163512.jpg

導通しなかったので半田不良と思い再度半田して導通を確認して再度組み上げたが解決しない・・・

もうかなり悩む

ここで基盤を疑い基板を変更して作り直す

利用した基板は安物で何しろ柔らかいため加工がしやすいので使った → 後の解釈だが基板に圧力をかけると接触が外れる?のか

作り直した基板はもともと厚みが1.5mmではギリギリだったため薄い0.7㎥mを利用

IMG_20200823_163456.jpg

まずはこれで解決

実証編

IMG_20200823_171936.jpg

ポータブルで運用中

(判明している問題)

  • 結構コンパクトだと思ったが持ち歩くとなると大きい → 薄い方が良いかな
  • 軽い・・・のでぶら下げだとブラブラしすぎる → ベルトに固定できるようにした方が良いか
  • OLED部と隙間を保護するため液晶保護フィルムを付けてみたが簡単に取れた → 最初に考えていたアクリル樹脂でカバーするのを再検討
  • 中がガタガタでリセットされることあり → スポンジ素材で抑える(空間に少し余裕ができたようで気圧センサの追加も模索中)

WBGT表示装置の作製

前々から考えていたWBGT表示装置を作製する

WBGTとは暑さ指数の事でアメリカで海兵隊新兵訓練時の熱中症リスク指数として利用しはじめたそうで,今日では夏場の作業現場での熱中症リスク指数としても利用されている

簡単に説明すると人の暑さの感じ方は気温だけでなく湿度や風によっても変わってくるので,それらを考慮した暑さを定量化したという訳だ(詳細は検索してほしい)

装置仕様

正確なWBGTを求めるには「黒球温度」「湿球温度」「乾球温度」が必要であるが黒球を準備するのが大変なため気温と湿度から割り出す簡易版で表示することにする

12時間分のログを記録して表示可能にする

現場で利用できるよう持ち運び可能にしたい

ハードウェア
  • ATMega328P(3.3V)→ OLED利用のためATtinyではメモリ不足
  • 0.91インチOLED(128x32)
  • SHT31(温湿度センサ)
  • バッテリー(未定)
  • ケース(未定)
ソフトウェア

先ずは「arduino pro mini」を使ってブレッドボード上でソフトウェアを開発

IMG_20200723_151330.jpg

ポータブル化のため低消費電力する必要がありウォッチドックタイマーを利用(ハングアップにも対応)

OLEDで利用するフォントの選択でデータサイズが巨大になるが,U8glibでは数字だけ利用するためのフォントも選択できる

フォント名の後に「r」が付くと0x7f(つまり7bit)まで「n」は数字のみとなる

(参考までに)プログラムソース

電源設計

バッテリーは最悪でも毎日充電でも利用できれば良いので24時間持てば良い

低消費電力化の余力を残しながらプログラムを完成させ実消費電力を推測するため実環境を作る

ATMega328P(3.3V)を作製してブレッドボードで試行

IMG_20200724_160241.jpgIMG_20200724_180806.jpg

実行時14mA(~20mA),ウォッチドックスリープ時0.8mA,状態の割合から1~2mAH位になる見込み(Max.48mA)

IMG_20200725_124334.jpgIMG_20200725_124317.jpg

LEDライトから取り外しておいたNi-MH電池がコンパクトで(3.3Vが得られ)容量が十分そうだ

IMG_20200723_151411.jpg

基本はUSBによる充電で太陽電池を利用した常時給充電は後で考えることにした

そして偶々思いついた非接触充電方式を試してみる(こちらを観て試してみたくなった)

ワイヤレス充電の試行

最終的なケースを考慮してコイルを作製(実はこの形では効率が悪い)して非安定マルチバイブレータで発振させる

IMG_20200726_114412.jpgIMG_20200726_151847.jpg

オシロスコープで計測したところそれなりに発振

IMG_20200726_151802.jpg

しかし残念ながらワイヤレスで十分な電力供給は行えなかったので失敗

コイルの問題だと思われるが調整は時間が掛かりそうなので次回に持ち越すことにする

ブレッドボードで実働確認

試作段階でバッテリ駆動させ確認

IMG_20200801_162602.jpg

ボタンは1個,1クリックでWBGTと温湿度を表示,LvはWBGTのレベル(1~4)

IMG_20200804_183614.jpg

表示は5秒で消えるが5秒以内にクリックする毎に1時間前の計測データを表示

IMG_20200804_183633.jpg

IMG_20200804_183642.jpg

デバッグ用として長押しでは内部の状態を表示

IMG_20200801_162658.jpg

1~2週間後もバッテリ電圧が3.8Vあったので十分な省電力であることが見込める

スポット溶接機を作ってみる

組充電池を作る際スポット溶接機を使用して極間を接続する(べきな)のは知っていたが,装置を持ってないので半田付けで行っていた

なんとか充電池を壊さず組充電池を作ることはできていたが,偶々YouTubeでスポット溶接機の作製を観て難しい仕組みでもないことを知り1つ作ってみることにした

作製する上で調査した結果,電源として概ね3つの方式があることが判る

  • 蓄電池
  • 充電池
  • コンデンサ

今回は直接の電源とコンデンサとしバッテリーで給電するように考えてみた

コンデンサ

10000μF×5個で0.05F(50000μF)で使用する

IMG_20200419_140611449_HDR.jpg

12Vで充電してLEDを点灯させてみると1分以上点灯していた(10000μFって凄い)

IMG_20200419_142246779_HDR.jpgIMG_20200419_142409315_HDR.jpg

FETスイッチ

スイッチとしてパワーMOSFET(EKI04027)を選択

簡単な回路でスポット溶接を試行してみる

スポット溶接_回路図.png

注)FETは全部で5個並列化している(500Aは流せるはず)

実装

線をなるべく太く短くするため電源から電極まで一体化,片手で扱えペットボトルをケースにできるような形にしてみた

IMG_20200420_200712278_HDR.jpg

IMG_20200420_200719530_HDR.jpg

試行

一応は溶接できたが強度に不満がありもう少しパワーを出したい

IMG_20200419_210520716_HDR.jpg

まだまだいろんな形で試行してデータ取りと調整が必要そうだ

ページ移動

  • ページ
  • 1
  • 2
  • 3

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed