● 実験テーマ135

「aitendo_TFT2P0327表示実験-その3」
(7セグLED風描画テスト〜 電池駆動の温湿度・気圧計テストの記録です。)

■ 2022.8.12
  ・以前実験テーマ105で製作した電池駆動の車載用の温湿度・気圧計は、韓国製OLEDの輝度が低く
   周囲が明るいと表示が見えなくなり、とても実用的とは言えない代物でした。
   (HPに公開した写真は多少明るめに画像加工してます。)

  ・そこで今回のTFT液晶の出番です。
   今回のTFT液晶は、半透過型なので多少は視野角が広く周囲が明るくても見えるのと、
   サイズ的にも車の中で使うには丁度良いと思い、表示フォーマットをちょっと工夫して
   横向き表示のまま使おうと考えました。
   電池+DC/DCコンバータ部のユニット基板は、前のから外してそのまま使います。
   その上にスタック接続される、メイン基板のみユニバーサルで組むことにしました。
   部品は秋月に手配しましたが、お盆休み中等で直ぐには届かない感触です。


■ 2022.8.13
  ・部品到着までの間、ソフトの方を進めることにした。
   まずは、PIC24Fトレーニング基板を使って「PIC24F_TFT2P2037_7SEG_DISP_TEST」プロジェクトの開始です。
   テストメニューの中に、温湿度・気圧計の表示デモ画面を追加しました。
   前にOLEDの時に作った遺産があるので、それを基にアレンジして行きました。
  → これは上手く行く。OK


■ 2022.8.14
  ・
PIC24Fトレーニング基板を使って「PIC24F_BME280_TFT2P2037_TEST」プロジェクト開始。

  ・ポート割り当て整理(0= 出力/ 1= 入力)
   @ RAポート:0xFFE6

b0:RA0:0:VbakON
b1:RA1:1:未使用
b2:RA2:1:未使用
b3:RA3:0:赤LED
----------------------------------------------
b4:RA4:0:緑LED
b5: -
b6: -
b7: -
----------------------------------------
b8: -
b9: -
b10:-
b11:-
----------------------------------------
b12:-
b13:-
b14:-
b15:-

  A RBポート:0x0FFF

b0:RB0:1:SW1(未使用)
b1:RB1:1:SW2(未使用)
b2:RB2:1:I2C-SDA(BME280)
b3:RB3:1:I2C-SCL(BME280)
----------------------------------------------
b4:RB4:1:未使用
b5:RB5:1:未使用
b6:RB6:1:未使用
b7:RB7:1:未使用
----------------------------------------
b8: RB8:1:未使用
b9: RB9:1:未使用
b10:RB10:1:未使用
b11:RB11:1:未使用
----------------------------------------
b12:RB12:0:SPI-CS/(TFT)
b13:RB13:0:SPI-MOSI(TFT)
b14:RB14:0:SPI-SCLK(TFT)
b15:RB15:0:SPI-RST/(TFT)


■ 2022.8.15
  ・
HEXまで準備完了。
   まあ動く!!


■ 2022.8.16
  ・
流用する電池+DC/DCコンバータ部のユニット基板を使ってのコンディションを確認してみたいが・・・
   バックライト用電源on/off:VbakON回路の現状は、オーソドックスなコンプリメンタリTR構成による物だが、
   これをもっと単純に出来ないものかと前から考えていた。
   バックライト用DC/DCコンバータユニットには、ストリナの「SL-LMR62421」を使っていて
   LMR62421-ENピンはオープンになっている。
   ここをコネクタの空ピンに出して、ポートコントロールすれば簡単に出力制御が出来るのではと考え
   データシートを調べたが、どうも次の理由で駄目のようだ。
   「EN ピンは電源−に配線するとシャットダウン(動作停止)します。内部でプルアップされていますので、
    この機能を使わない場合はどこにも繋がず、オープンのままで構いません。
    ※ シャットダウンしても出力は 0V になりません。」
   「シャットダウンするとICは動作停止しますが出力は0Vにはならず、入力電圧がそのまま出力に出ます。」


■ 2022.8.19
  ・
パーツが秋月から届いたので、MAIN基板のユニバーサル基板加工から開始。
   実は手配ミスで、両面スルー「Cタイプ」72 x 47.5mm:通販コードP-00189がジャストフィットだったのだが、
   最初手配したのは、同じCタイプでも、通販コードが異なる(P-0321)もので、これは基板の際までランドが無いタイプで使えず、
   次に手配したのは、前記の「Cタイプ:P-00189」を思い出せず、基板の際までランドが有るタイプの「Bタイプ」95 x 72mm
   だったもので、加工が必要となってしまった次第である。種類が多いので今後注意。


■ 2022.8.20
  ・
部品実装まで完了。



  <チェック開始>
   (1) 流用する電池+DC/DCコンバータ部のユニット基板の、ポテンショを回して
      バックライト電源電圧出力を、6.5V(無負荷)にアジャスト。現在は16.0Vになっている。
      ついでに他電源コンディション(無負荷)確認
      尚、電池は殆ど新品の単3アルカリ乾電池:実測1.57V x 2= 3.14V使用時、+5V出力= 5.04V



   (2) MAIN基板、PIC.BME280,TFT液晶未実装時の電源ショートチェック→ OK


■ 2022.8.21
   (3) VCC= +3,3Vチェック各供給点にて→ (まだ主要部品未実装)
     ・PICkit2- 2-3pin間:3.27V
     ・PIC-28pin:3.27V
     ・TFT-3,4pin:3.27V
     ・BME280-1pin:3.27V

     尚:5V入力= 5.04V
        6.5V出力= 6.49V

   (4) PIC.BME280を実装し、HEX書込み→ OK 5.04V, 3.26V, 6.5V



   (5) 動作確認→ OK

     稼働時の電源コンディション確認
      ・電池電圧:3.04V
      ・+5V:5.03V
      ・+6.5V:6.00V(LEDA側のバックライト電圧で6.00V、パスTRのエミッタ側の電圧は6.5V・電池消費考慮しこのまま使うことにした。)
      ・+3.3V:3.26V
      ・電池入力消費電流:142mA


■ 2022.8.22
   (6)-1. 電池の持ちチェック
     @ 単3アルカリ乾電池:LR6(GD) "日立"/1.5V x 2使用
       8/21 17:15 Start Vbat= 3.04V
       8/22 17:30 Reset繰返し〜 バックライト消灯〜 ダンマリになった。
            ・Vbat:1.82V SL-AS1332Aの入力電圧スペック= 2.4V〜 3.0V
            ・3.3V:2.29V LM48M033Fの入力電圧スペック= 4.3V〜 16V
            ・5V :2.20V
            ・LEDA:0V: LMR62421の入力電圧スペック= 2.7V〜 5.5V

       ※ 約24時間15分持った。


■ 2022.8.23〜 2022.8.25
   (6)-2.. 電池の持ちチェック-2
        ※ 8/23:eneloopスタンダードモデル単3型2本パックが届いた。



     @ 単3充電式ニッケル水素電池 eneloop:BK-3MCC/2C "Panasonic"/定格1.2V x 2使用/ min 1900mAh/ 製造年月:2022-7
       ※ 充電済で出荷されているのでまずはこのまま実験開始してみた。無負荷実測電圧:1.31V x2= 2.62V
       8/23 19:50 Start Vbat= 2.61V
       8/24 12:15 Reset繰返し〜 バックライト消灯〜 ダンマリになった。
             ・Vbat:0.59V(電池単体無負荷は、0.91V) SL-AS1332Aの入力電圧スペック= 2.4V〜 3.0V
             ・3.3V:1.95V LM48M033Fの入力電圧スペック= 4.3V〜 16V
             ・5V :1.95V
             ・LEDA:0V: LMR62421の入力電圧スペック= 2.7V〜 5.5V

       ※ 約16時間25分持った。

     A 専用充電器(2本同時充電)で充電してから再実験
       8/24 12:40 充電開始
              17:50 充電完了(途中1時間ほど外出したため充電を一時止めたので時間かかった)
                無負荷実測電圧:1.41V x2= 2.82V 
       8/24 18:10 Start Vbat= 2.81V
       8/25 12:15 Reset繰返し〜 バックライト消灯〜 ダンマリになった。
             ・Vbat:0.60V(電池単体無負荷は、0.91V) SL-AS1332Aの入力電圧スペック= 2.4V〜 3.0V
             ・3.3V:1.99V LM48M033Fの入力電圧スペック= 4.3V〜 16V
             ・5V :2.00V
             ・LEDA:0V: LMR62421の入力電圧スペック= 2.7V〜 5.5V

       ※ 約18時間5分持った。 

・13:00頃、車で南越谷のスタジオまで移動した際、これを車のアンダートレイに置いて使ってみました。
 夕刻帰りの弁当屋の駐車場で、ちょっと曇り空の下、写真を撮りましたが、十分な輝度を保っていました。


■ 2022.8.29
  ・TFT_温湿度・気圧計の、eneloop電池の持ちを調べるのと関連して動作中(約20時間)の電池電圧の変化を、
   SDカードにCSV形式で記録し後でPCで読込んでEXCELでグラフにし、その特性を確認したい。
  ・お金を掛けないで簡単に済ませたい。
   大昔の遺産のプログラムをちょっといじって実験してみる。
  ・実験テーマ4「dsPIC30F_簡易SDカード・ロガー」のソフト「easy_sd_logger.c」を改版する。
   ハードの方は、トレーニング基板を使用。
   dsPIC30F:5V系 → sdカードスロット:3.3V系の間に入れる、6ゲートバッファIC:TC74HC4050が無いが
   MP3デコーダ治具のソケットから抜いて使うことにした。

  <現在の動作仕様>
   ・ADサンプル周期と、SDへの書込み周期は、0.5秒固定
   ・書込み中、0.5秒毎にLCDに入力電圧と、Ix(0〜99)を表示する。
   ・SW1が押されたらSDに記録開始し、100データサンプル終了したら、自動的にファイルを閉じる。
   ・記録中LEDを点灯させ、終了したら消灯させる。

   <記録フォーマット案(データは全てアスキー)>
    ・000,5.000CRLF
       ・
       ・
     099,4.999CRLF


■ 2022.8.30
  ・改版前に「easy_sd_logger.hex」を書込んで動作確認しようと思ったが、古い話で、このプロジェクトファイルは壊れた
   Windows me PCに保存されているので、プロジェクトを作成する必要がある。(ソースファイルのみ残っていた。)

  ・元ファイルのhexは準備出来た。(改版前)
  ・長い間使ってなかったせいでハードに異常があり、AD1ピンに入力する電圧源のポテンショ:VR1=5k
   がローター接点の接触不良で、max=5Vのところ、3.8V位しか出てなかった。
   そっくり型番のは手持ちになかったが、足をちょっと広げて交換し動作確認OKになった。

   後、100データ=1100バイト収録後の、DATA.csvファイルの収録容量は、3kBだった。
   尚、dsPIC30FのFcyを最高速で動かした場合、16BITタイマーで設定出来る最低速= 0.568秒なので、0.5秒にするのがベター。

  ・今回のソフト改版は、極力手抜きの方向で、最低限の修正のみにした。
  <改版後の仕様他>
   (1) ハード
     @ 現AN1に接続されている、ポテンショ+ダンパー抵抗:1kΩの電圧入力源の、ダンパー抵抗の片側のリード
        をランドから浮かし、そこに電池のプラス電極からの電圧をセンスすることにした。
        (AD Input: CH1(DC 0 - 3V))

   (2) ソフト仕様
     @ AD Sample Interval: 1分
     A AD Sample数:1000Data(11000Byte Ascii):収録時間約17時間 自動収録停止
     B SD収録データフォーマット例:000,3.000CRLF ファイル名:DATA.csv固定

  ・一通り動いたので、机の隅にセットしてeneloopの放電特性を取り始めた。



   8/30:21:00 開始      Vbat= 2.674V
   8/31:13:40 SDへの収録終了 Vbat= 2.179V 未だ動作OK バックライトONしてる。

  ・収録終えたが、サンプル数:1000ではVbatが0.6V程度までダウンする所まで収録出来ないので、サンプル数を増やして再度収録することにした。
   → 今迄の実験結果より、サンプル間隔=1分, データ数=1110, 収録時間=18.5時間(1110/60)にする。
      これに伴い以下のプログラム修正が必要。
      ・Ix表示を、3桁から4桁に修正:Ix= 000〜 999→ Ix= 0000〜 1109
      ・1サンプル毎の収録バイト数:11バイト→ 12バイトに変更
      ・収録終了条件修正:データ数=1000で終了→ データ数=1110で終了


■ 2022.8.31
  ・中途半端だが、昨日収録したSDカードの「DATA.csv」ファイルを、PCに読込ませ、Excel表に展開してみた。
   意図通リのカーブになっているようだ。


■ 2022.9.1
  ・改版しhex準備出来た。
   机の隅にセットしてeneloopの放電特性を取り始めた。(2回目)
    9/1:11:30 開始      Vbat= 2.656V(無負荷:1.38x2= 2.76V)
    9/2: 5:55 1110データ終了 Vbat= 2.270V 未だ動作OK バックライトONしてる。
----------------------------------------------------------------------------------

  ※ この後、テスターにて降下状態を確認したところ、以下のような結果になった。
    9/2:7:50 Vbat= 1.54V〜 0.9Vで激しく変動し始める。 リセット繰返しになる。
         7:54 Vbat= 0.6V 完全放電 ダンマリになる。

  ※ 想定上は、完全放電まで18.5時間だったが、20.24時間になった。
     充放電を繰返すと、4回位までは持続時間が延びるようなことをトラ技で読んだことがある。
     (充放電の繰返しで活性化する。トラ技2014年1月号「特集・充電!eneloop/リチューム/鉛電池」より)


■ 2022.9.2
  ・3回目のeneloopの放電特性実験を実施してみる。
   今回は余裕を見て収録終了条件を、データ数=1440で終了→ 1440/60= 24時間 にする。

  ※ 2回目のsdカードのcsvファイルを見てみたら、正しく収録されてないことが判明。
     以下のようになっていた。
     カンマ区切りが無い
     小数点も無い
     Ixが1000からおかしい

2656
12653
22651
32646
42644
52641
62637
72637
82635
92637
102630
112631
122633


  ・不覚にも、ソフト修正をミスったようだ。
  
 カードへの書込み時のエラー処理で、エラーの場合、書込みループを抜け出す条件として
   forループのエンド条件を利用しているがこれを、11から、12に修正する必要があった。

   もう一つ修正が必要な個所を発見。以下の修正が必要だった。これが根本の原因(sdにセーブする時のデータフォーマットがng)

void SD_Data_Ascii_Conv(void)
{
/*
// Number of Write Times(Ix) Data
SD_write_data[0] = (Ix/100)%10 | 0x30;
SD_write_data[1] = (Ix/10)%10 | 0x30;
SD_write_data[2] = Ix%10 | 0x30;

// Volt_Data
SD_write_data[4] = (Volt_int/100)/10 | 0x30;
SD_write_data[6] = (Volt_int/100)%10 | 0x30;
SD_write_data[7] = (Volt_int/10)%10 | 0x30;
SD_write_data[8] = Volt_int%10 | 0x30;
*/
/// 220902
// Number of Write Times(Ix) Data
SD_write_data[0] = (Ix/100)/10 | 0x30;
SD_write_data[1] = (Ix/100)%10 | 0x30;
SD_write_data[2] = (Ix/10)%10 | 0x30;
SD_write_data[3] = Ix%10 | 0x30;

// Volt_Data
SD_write_data[5] = (Volt_int/100)/10 | 0x30;
SD_write_data[7] = (Volt_int/100)%10 | 0x30;
SD_write_data[8] = (Volt_int/10)%10 | 0x30;
SD_write_data[9] = Volt_int%10 | 0x30;
}
  
   2回目のexcelへの表書き出しはやらないことにした。(やり直しなし)
   今回の24時間収録版で終わりにする。

  ・上記改版しhex準備出来た。
   机の隅にセットしてeneloopの放電特性を取り始めた。(3回目)
   9/2:15:10 開始                  Vbat= 2.763V(無負荷:1.43x2= 2.86V)
   9/3:13:38 バックライト消え、RESET繰返しになる  Vbat= 1.462V Ix=1366

  ※ この後、買い出しに出かけたが、このまま、Ix=1439(24時間収録完結)まで記録させておく。
   9/3:17:45 帰宅 既に収録終了しており、赤led消灯していた。この時の電池外して無負荷で測定した。1本当たりのVbat= 0.96Vであった。

  ※ 予想 24時間は持たない。
     2回目の結果だと、約21時間 

  結果 22時間28分持った。


<回路図>
 「BME280_TFT2P3037実験」 (PIC24Fトレーニング基板使用版)
 「TFT_温湿度・気圧計」

<最終ソース>
 (1) PIC24F_TFT2P2037_7SEG_DISP_TEST.c

  <テストメニュー>
   @ 3桁:"999"の7セグを表示
   A 7セグ・パターン(16進表示)を全て表示
   B 表示桁数と数値桁数が合わない場合の表示確認

   C 温湿度・気圧の、7セグ表示デモ
   D  ゼロブランク・テスト:数値をインクリメントしながら確認 

 (2) PIC24F_BME280_TFT2P2037_TEST.c

<液晶ライブラリ:制御IC= S6D0151/ SPI制御>
 S6D0151_v2.c  // 7セグLED風表示の実験をする為に、3つの関数を追加
 S6D0151_v2.h  // PIC24Fトレーニング基板使用版ではCLOCK 16設定でVbakON/OFFは追加してませんが、
            // 本番版はCLOCK 4設定でVbakON/OFFを追加しました。こちらをアップしました。

<PIC24F用I2Cライブラリ/ BME280を動かす為に必要>
 skI2C_PIC24F_lib.c
 skI2C_PIC24F_lib.h

<キャラクタ・フォントデータ>
 ASCII_font.h    // 8x8dot ANK FONT
 ASCII12dot.h   // 12x12dot ANK FONT


← 実験テーマ1に戻る   TOP PAGEに戻る   実験テーマ136へ →