● 実験テーマ138
「dsPIC30F_SDカードロガーのP板化」 (電圧入力と温度センサ入力に対応する、2CHデータロガーの実験です。)
■ 2022.10.17
・2020年6月7日の「High_Speed_Oscillo_V3の、P板化」以来、約2年ぶりになるが、KiCadをいじってみる。
かなり操作方法を忘れているので、思い出しつつ作業を進めることになるが・・・
まずはプロジェクトの作成から行い、このプロジェクトで新たに登録の必要があるコンポーネントについて
新規登録しようと思う。
→ プロジェクト名:「Easy_SD_Logger」とする。→新規作成[済]
プロジェクト・フットプリント・ライブラリ名:「0-Easy_SD_Logger.pretty」とする。
※ .prettyフォルダは、エクスプロラー上で手動で作成する。
プロジェクト・シンボル・ライブラリ名:「0-Easy_SD_Logger.lib」とする。(本棚アイコン)
・既存のKiCadライブラリの流用で可なのか、新規作成が必要なのか暫くは、KiCadライブラリを覗いてみる。
(1) 今回新規登録が必要と思われるが、既存流用出来るか? 調べてみた。
@ コンポーネント名:SC1602BS/ 16文字x2行キャラクタ液晶表示器
・KiCad既存シンボルライブラリ:Display_Character下に似た型番「RC1602A」・「HY1602E」があったが
ピン配列(1列タイプ)もピン番も互換のないタイプなので使えず新規作成にする。(フットプリントも)
<復習:KiCad既存シンボルライブラリとフットプリント・ライブラリにある既存コンポーネントの確認方法>
(1) シンボルライブラリ
@ マネージャ画面から、シンボル・エディタを開く。
A 検索項目欄にシンボル名を入力するか、左ペインのリストから選択する。
(2) フットプリントライブラリ
@ マネージャ画面から、フットフリント・エディタを開く。
A 本棚バック+虫眼鏡アイコンのビューワを開く。
B 左ペインのリストから、[Display]- [RC1602A]又は、[HY1602A]を選択
■ 2022.10.18
・新規作成は面倒なので他力本願で行きたいが・・・
トラ技2016年7月号の付録に「作るならカッコよくキメロ!プリント基板製作DVD」というのが有る。
この中には以下のフットプリント・ライブラリが収録されている。
部品種別 | 収録デバイス数 | |
1 | 秋月ライブラリ | 813 |
2 | SMD標準チップ部品 | 13 |
3 | Altera PLD | 1374 |
4 | Xilinx PLD | 1246 |
5 | Altmel MCU | 2075 |
6 | Cypress MCU | 181 |
7 | Microchip MCU | 3701 |
8 | NXP MCU | 202 |
9 | Renesas MCU | 578 |
10 | STMicro MCU | 306 |
11 | PinHeader | 80 |
合計 | 10569 |
この内の「秋月ライブラリ」を今立ち上げているプロジェクトにインポートする方法を調べて
使えるか確認してみたい。
・まずは、PCのDVDドライブ(D:\)にディスクを挿入
以下のディレクトリに存在。
D:\300_footprint\301_kicad_FP // フット・パターンの素 データ集(KiCad用)
\302_Parts_list // 収録デバイス一覧.xlsx
\303_manual // 使い方:フット・パターン形状チューニング・ツール
//
試作・量産・素データを呼び出して自分用にカスタマイズ
・収録デバイス一覧.xlsxを開いて「秋月ライブラリ 813」のtagを見てみたが、
殆どがディスクリート部品で、液晶は無かった。
・外部提供サイトの内「Digi-Key KiCad LIBRARY」があるので試してみる。
以下のようにやってみたが、希望のキャラクタ液晶のは無く
dk_Display-Modules-LCD-OLED-Graphic.libは全てOLEDで結局使えず。
追加したのはライブラリから削除して新規作成することにした。
(1) グローバルライブラリへの追加(シンボル)
@ 「シンボルエディタ」をクリックします。
A 「設定」-「シンボルライブラリ―を管理」をクリックします。
B 「ライブラリーを参照」をクリックします。
・先程、解凍したフォルダ「digikey-kicad-library-master」を開きます。
・例として回路図シンボルファイルが格納されているフォルダ「digikey-symbols」を開き、
「dk_Display-Modules-LCD-OLED-Graphic.lib」を選択して[開く]をクリックすると
グローバルライブラリの末尾に追加される。[184]番目だった。[OK]をクリック
(2) KiCadフットプリントライブラリへの登録
@ 「フットプリントエディタ」をクリックします。
A 「設定」-「フットプリントライブラリ―を管理」をクリックします。
B 「ライブラリーを参照」をクリックします。
・先程、解凍したフォルダ「digikey-kicad-library-master」を開きます。
・例としてフットプリントファイルが格納されているフォルダ「digikey-footprints.pretty」を
選択して[OK]をクリックするとグローバルライブラリの末尾に追加される。[113]番目だった。
C KiCadフットプリントライブラリ・ダイアログの「OK」をクリックすると、更新が始まる。
フットプリントライブラリを更新するには時間がかかるので、そのまま待ちます。
<新規部品ライブラリ登録作業開始>
(1) コンポーネント名:SC1602BS*B-XA-GB-K/ 16文字x2行キャラクタ液晶表示器(バックライト無しタイプ)
SC1602BSLB-XA-GB-K/ 16文字x2行キャラクタ液晶表示器(バックライト有りタイプ)
@ シンボル名:SC1602BS
A フットプリント名:SC1602BS
■ 2022.10.19
・シンボル名:SC1602BS 新規作成登録済
・フットプリント名:SC1602BS 新規作成登録済
<左端X方向中央を、dx= 0, dy= 0とした場合の各ピン座標位置>
pin | dx | dy |
1 | 4.54 | 7.62 |
2 | 2.00 | 7.62 |
3 | 4.54 | 5.08 |
4 | 2.00 | 5.08 |
5 | 4.54 | 2.54 |
6 | 2.00 | 2.54 |
7 | 4.54 | 0.00 |
8 | 2.00 | 0.00 |
9 | 4.54 | -2.54 |
10 | 2.00 | -2.54 |
11 | 4.54 | -5.08 |
12 | 2.00 | -5.08 |
13 | 4.54 | -7.62 |
14 | 2.00 | -7.62 |
15 | 83.00 | -5.08 |
16 | 83.00 | 2.54 |
17 | 83.00 | 0.00 |
18 | 83.00 | 2.54 |
19 | 83.00 | 5.08 |
■ 2022.10.20
<続_新規部品ライブラリ登録作業>
(2) コンポーネント名:AE8564NB/ 秋月のリアルタイムクロックモジュール(内蔵チップ型式:RTC-8564NB)
@ シンボル名:AE8564NB 新規作成登録済
A フットプリント名:AE8564NB-DIP8 新規作成登録済
(3) コンポーネント名:DM3AT-SF-PEJM5/ マイクロSDカードスロット
※ KiCadライブラリにあった
→ Connector_Card.pretty- micropSD_HC_Hirose_DM3AT-SF-PEJM5
■ 2022.10.21
<続_新規部品ライブラリ登録作業>
(3) コンポーネント名:DM3AT-SF-PEJM5/ マイクロSDカードスロット
@ シンボル
Connector.lib- SD_Card にあったが、使えそうにないので新規作成にした。
新規作成時のシンボル名:DM3AT-SF-PEJM5 新規作成登録済
A フットプリント
KiCadライブラリにあった、Connector_Card.pretty- micropSD_HC_Hirose_DM3AT-SF-PEJM5
を、編集して使うことにする。
シールドピンが全部で4本あるが、全て同じピン番:11になっている。これは振り直す。
またパッド寸法も半田付けの難易度を下げる為、大き目に変えようと思ったが、変えると位置の細かい数値
も変える必要があるので、リスクを避け今回は変更無しで行ってみる。
新規作成時のフットプリント名:DM3AT-SF-PEJM5 新規作成登録済
※ フットプリント中にある白色の斜線エリアは「textレイヤ」で禁止帯であることを知らせているだけ。
スロット下にはパターンを引かなければ問題無し。 221109
<復習:フットプリントの呼出しと保存(KiCad既存の物を確認・編集・保存する場合の手順確認>
※ 例えば、0-tutoriale1内のフットプリント、MH-179Pを、0-Easy_FRA_V3へコピーして使いまわしたい時又は一部編集して使う場合は
以下のようにすればよい。
@ フットプリント・エディタを起動すると最初は最上部バーに「アクティブなライブラリが、ありません」と表示される。
A 本棚+フォルダアイコン:「アクティブなライブラリを選択」で、0-Easy_FRA_V4を指定
最上部バーに「・・・0-Easy_FRA_V4.pretty」と表示。
B フットプリント・エディタ上ツールバー上の、IC+フォルダアイコン:「ライブラリからフットプリントをロード」をクリック
C フットプリント選択・ダイアログが開いたら[ブラウザで選択]をクリック
ここで言うブラウザとは「フットプリントブラウザ」のことで、ビューワと同じような画面
D フットプリントブラウザでMH-179Pを探し出しIC+ピンク矢印アイコン: 「基板へフットプリントを挿入」をクリックして
フットプリントエディタに呼び出す。これで確認出来る状態になる。
E フットプリントエディタの上ツールバー本棚+FDアイコン: 「アクティブなライブラリへフットプリントを保存」をクリック
するとフットプリントの保存・ダイヤログが開く。
F 流用の場合は、保存欄の0-tutorial1を選択して,[OK]をクリックし保存。
フットプリント名を変えて後で編集する場合は、フットプリントの保存・ダイヤログの「フットプリント名」の欄の名前
を変更して[OK]をクリックし保存。
■ 2022.10.22
<続_新規部品ライブラリ登録作業>
(4) コンポーネント名:dsPIC30F4013/ DIP40 MPU
@ シンボル
KiCadには標準シンボル無し。有るのは、多ピンの、DSPIC33FJ64GP804(ライブラリ:DSP_Microchip_DSPIC33)
新規作成することにした。
新規作成時のシンボル名:DSPIC30F4013-30I_P 新規作成登録済
ピンの電気的特性は、vdd,gnd=電源入力・Vcap/Vddcore=電源出力・mclr=入力・その他のポート=双方向
A フットプリント(DIP40-ICソケット)
40pinICソケット使用:D(幅方向のピン間ピッチ)= 600mil(0.6inch)= 15.24mmタイプ→ 標準にあった。これをローカルにコピーし使い回しする。
Package_DIP-DIP-40_W15.24mm_Socket ローカルにコピー済
(5) コンポーネント名:TC74HC4050AP/ DIP16 6回路 バッファ(非反転タイプ)CMOS
@ シンボル
KiCadには標準シンボル無し。新規作成することにした。
新規作成時のシンボル名:TC74HC4050AP 新規作成登録済(Easy_FRA_V3で作成してた。シンボル名:74HC4050 後で気が付いた。)
A フットプリント(DIP40-ICソケット)
16pinICソケット使用:D(幅方向のピン間ピッチ)= 300mil= 7.62mmタイプ→ 標準にあった。これをローカルにコピーし使い回しする。
Package_DIP-DIP-16_W7.62mm_Socket ローカルにコピー済
■ 2022.10.23
<続_新規部品ライブラリ登録作業>
(6) コンポーネント名:LM358N/ DIP8 2回路入汎用オペアンプ(フェアチャイルド製)
@ シンボル
KiCadには標準シンボル有り
KiCad標準シンボル:Amplifier Operational-LM358(ユニットA, B, ユニットC:電源ピン/ LM2904のエイリアス) ローカルにコピー済 221025
※ シンボルを置いた後、VALUE(CR類の定数・部品の型式名)を変更するには、
ショートカット:'V'で開くダイアログ:フィールド定数の変更のテキスト欄を変更すればよい
A フットプリント(DIP8-ICソケット)
8pinICソケット使用:D(幅方向のピン間ピッチ)= = 7.62mmタイプ→ 標準にあった。これをローカルにコピーし使い回しする。
Package_DIP-DIP-8_W7.62mm_Socket ローカルにコピー済
<復習:シンボルのコピー(KiCad既存の物をローカルにコピーする場合の手順>
(1) シンボルのコピー例
抵抗シンボルを0-tutorial1ライブラリにコピーします。
@ 検索欄に r と入力します。
A 検索表示された R を右クリックして「シンボルをコピー」を選択します。
B 検索欄をクリア(何も記述しない状態)にします。
C 0-tutorial1を右クリックして「シンボルの貼り付け」を選択します。
D 0-tutorial1配下にRが収容されます。
■ 2022.10.25〜 2022.10.26
<続_新規部品ライブラリ登録作業>
(6) コンポーネント名:LM358N/ DIP8 2回路入汎用オペアンプ(フェアチャイルド製)
KiCadには標準シンボル有り
KiCad標準シンボル:Amplifier Operational-LM358(ユニットA, B, ユニットC:電源ピン/ LM2904のエイリアス)
なのだが、これはLM2904が基のシンボルになっていて、これのエイリアス(複製)として多くのOPアンプが
斜体文字でリストに列記されている。その中に「LM358」があった訳だが、これを固有(ローカル)ライブラリに
コピーすると、新規作成登録部品との区別が付きにくく(見にくくなる)なるのが気に入らないので何とかならないのかと思っているが・・
<エイリアスという言葉が解り難い・・・WED検索してみた(KiCad.JP Wikiより>
・エイリアスとは、ライブラリ内での同じコンポーネントに対応した別名のことです。
類似したピン配列、表現を持つコンポーネントは、いくつかのエイリアスを持った、1つのコンポーネントで表すことができます。
(例えば 7400 は74LS00, 74HC00, 74LS37というエイリアスを持ちます)
エイリアスの使用により素早く完全なライブラリを構築することができます。
さらに、kicadにより簡単に読み込まれる、これらのライブラリは、さらにコンパクトとなります。
//-----------------------------------------------------------------------------------------------------------------------------
<ちょっと自分でも実際にもうちょっと操作してみた。その気が付いた事>
(1) シンボルエディタ・左ペインの [シンボル]欄のリスト上で、斜体文字で表記されたシンボル名(エイリアス対象部品)
をクリックすると、基になっている正立文字で表記されたシンボル名にカーソルが移動し、右ウインドウに
シンボルが表示される。
これで基になっているシンボル名が分かる。
正立文字で表記された基シンボル名の下に順番に並んでいるのが斜体文字で表記されたエイリアス対象部品だと
思っていたが、そうではないようだ。
必ずしも順番には何っていなかった。
単にアルファベット順のようだ。
(2) 下記の手順で、グローバルライブラリ(KiCadライブラリ)の、OPアンプシンボル:LM358を、
固有ライブラリ(0-Easy_SD_Logger.lib)にコピーしてみた。
@ 検索欄に LM358と入力すると検索結果のみのリスト表示になる。
A 検索表示された LM358 を右クリックして「シンボルをコピー」を選択する。
B 検索欄をクリア(何も記述しない状態)にすると全体のリスト表示に戻る。
C 0-Easy_SD_Loggerを右クリックして「シンボルの貼り付け」を選択する。
D 0-Easy_SD_Logger配下にLM358が収容される。
※ 収容されたのを見ると、正立文字で表記された基シンボル名:LM2904の他、
斜体文字で表記されたエイリアスシンボル名が約50個ほど表示されていた。
まあ斜体文字で区別されているので、このまま行くことにした。(Easy_FRA_V3の時:LM6482も同じ表示になっていたことを確認)
//----------------------------------------------------------------------------------------------------------------------------
<続_新規部品ライブラリ登録作業>
(7) コンポーネント名:TMP36GT9Z/ LM35DZ秋月販売中止品でその互換品 IC温度センサ (アナデバ製)TO-92パッケージ
@ シンボル
KiCadには標準シンボル無し
0-Easy_FRA_V3.lib- NJM2845DL1-XXを、0-Easy_SD_Logger.libにコピーし、
VI/VOの信号名と、シンボル名を修正し登録する。221026 [済]
<復習:その手順>
@ ファイルエクスプローラで、0-Easy_FRA_V3.libを、Easy_SD_Loggerフォルダ下にコピー
A シンボルエディタを開き、[設定]- ライブラリの管理- [ライブラリ参照] をクリック
B ファイルエクスプローラが開くので、Easy_FRA_V3フォルダ下の、0-Easy_FRA_V3.libを選択して [開く]をクリック
C ライブラリの管理ダイアログ最下段に、0-Easy_FRA_V3.libが追加されるので [OK]をクリック
D これで、シンボルエディタの左ペインに、0-Easy_FRA_V3.libが追加される。
E 検索欄に NJM2845DL1-XXと入力すると検索結果のみのリスト表示になる。
F 検索表示された NJM2845DL1-XX を右クリックして「シンボルをコピー」を選択する。
G 検索欄をクリア(何も記述しない状態)にすると全体のリスト表示に戻る。
➈ 0-Easy_SD_Loggerを右クリックして「シンボルの貼り付け」を選択する。
I 0-Easy_SD_Logger配下にNJM2845DL1-XXが収容される。
J VI/VOの信号名を、+VS/VOに、シンボル名をNJM2845DL1-XXから、TMP36GT9Zに修正し[ライブラリを保存]で保存登録する。
尚、シンボル名を変えると、自動的に左ペインリスト上の、当該シンボル名も変わる。
A フットプリント(TO-92パッケージ)
KiCad標準にあった。これをローカルにコピーし使い回しする。221026 [済]
Package_TO_SOT_THT- TO-92L_Inline(縦長パッド)
(8) コンポーネント名:NJM2845DL1-33/ 低損失表面実装型三端子レギュレーター 3.3V800mA (JRC製)TO-252パッケージ
@ シンボル
KiCadには標準シンボル無し
0-Easy_FRA_V3.lib- NJM2845DL1-XXを、0-Easy_SD_Logger.libにコピーし使用 221026 [済]
A フットプリント(TO-252パッケージ)
KiCad標準にあった。これをローカルにコピーし使い回しする。221026 [済]
Package_TO_SOT_SMD- TO-252-2
(9) コンポーネント名:PH-2x7SG/ ピンヘッダ 2x7 (14P)
@ シンボル
KiCad標準にあったが(:Conn_02x07_Odd_Even)ピン形状が気に入らないのでコピー編集した。[済] 221027
編集後の名前:Conn_02x07_Odd_Even_2
A フットプリント
KiCad標準にあった。これをローカルにコピーし使い回しする。[済] 221027
Connector_PinHeader_2.54mm- PinHeader_2x07_P2.54mm_Vertical
(10) コンポーネント名:PH-1x5SG/ ピンヘッダ 1x5
@ シンボル
0-Easy_FRA_V3.lib- Pin_Header_01x06を、0-Easy_SD_Logger.libにコピー編集し使用。[済] 221027
編集後の名前は、Pin_Header_01x05 とする。
A フットプリント
KiCad標準にあった。これをローカルにコピーし使い回しする。[済] 221027
Connector_PinHeader_2.54mm- PinHeader_1x05_P2.54mm_Vertical
(11) コンポーネント名:BHSD-2032-SM/ 電池ケース CR2032×1個 表面実装用(MPD社)
@ シンボル
KiCad標準にあった。これをローカルにコピーし使い回しする。 221026 [済]
Device- Battery_Cell
A フットプリント
KiCad標準には、Battery.pretty下に以下のMPD社の物が有ったが使えず。
・BatteryHolder_MPD_BC2003_1x2032
結局「SnapEDA」を利用することにした。(以前EAGLEで試してみたが、その時は上手く行かなかった経緯がある。)
SnapEDAサイトで検索窓に [BHSD-2032-SM]と入力して検索ボタンをクリックしたら出てきた。
ログインした状態で、[Download Footprint]ボタンをクリックすると
使用CADを聞いてくるので [KiCad]をクリック
次に、Downlord Foamat(どうもKiCadのバージョンらしい)を聞いてきたので、[V6](私が使用しているのはV5だが無かったのでV6を選択)
をクリックするとダウンロードが始まった。
ダウンロードされたZIPファイルを解凍すると「BAT_BHSD-2032-SM.kicad_mod」ファイルが出てくるので
これをKiCadのフットプリントエディタにインポートしたら正常に表示された。
本棚+FDアイコン「アクティブなライブラリへフットプリント」をクリックして「0-Easy_SD_Logger.pretty」を選択し[OK]
をクリックし保存した。
■ 2022.10.27〜 2022.11.2
<続_新規部品ライブラリ登録作業>
※ 残りのコンポーネントについては、他ライブラリからの流用でよさそう。
※ 以下表のコピー元のシンボル及びフットプリントを、それぞれコピー先:0-Easy_SD_Logger.lib・0-Easy_SD_Logger.prettyにコピーする。
コンポーネント名 | シンボル・コピー元 | フットプリント・コピー元 | 備考 | |
0-Easy_FRA_V3.lib | 0-Easy_FRA_V3.pretty | |||
1 | TS-0606-F-N-X | SW_Tactile_Omron_B3F-10xx | SW_TH_Tactile_Omron_B3F-10xx | タクトSW各色(x= 各ボタン色) |
2 | 2MS1-T1-B4-VS2-Q-E-S | SW_SPDT | SW_TOGGLE_Linkman_2MS1 | 基板用小型3P単極2接点トグルSW |
3 | MJ-179P | DC-Jack | MJ-179PH | 2.1mm標準DCジャック |
4 | PH-1x6SG | Pin_Header_01x06 | PinHeader_1x06_P2.54mm_Vertical | ピンヘッダ 1x6 |
5 | PH-1x2SG | Pin_Header_01x02 | PinHeader_1x02_P2.54mm_Vertical | ピンヘッダ 1x2 |
6 | 11EQS04 | D_ALT (KiCad標準:Device.lib) | D_DO-34_SOD68_P7.62mm_Horizontal | ショットキーダイオード(KiCad:Diode_THT.pretty) |
7 | HT204xxx | LED_ALT (KiCad標準:Device.lib) | LED_D3.0mm | 発光ダイオード(KiCad:LED_THT.pretty) |
8 | 35V47u | CP | CP_Radial_D5.0mm_P2.00mm | 電解コンデンサ |
9 | 50V0.1u | C | C_Disc_D5.0mm_W2.5mm_P2.50mm | 積層セラミックコンデンサ |
10 | 5k, 20k VR | R_POT_US | Potentiometer_TOCOS_GF063P1_Vertical | ポテンショメータ |
11 | MF1/4xxxxΩ | R_US | R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | 抵抗 |
<復習:例えば、0-Easy_FRA_V3.pretty内のフットプリント、MH-179Pを、0-Easy_SD_Loggerへコピーして使いまわしたい時の手順>
@ フットプリント・エディタを起動
A ツールバー上の [本+フォルダ]:「アクティブなライブラリを選択」で、0-Easy_SD_Loggeを指定
B ツールバー上の [IC+緑矢印]:「フットプリントをインポート」をクリック
C ファイルエクスプローラが開くので、Easy_SD_Loggerプロジェクト下に予めコピーした、0-Easy_FRA_V3.prettyをクリックし
フットプリントファイル****.modの一覧から、フットプリント:MH-179Pを選択し[開く]をクリックし表示させる。
D ツールバー上の [本+FD]:「アクティブなライブラリへフットプリントを保存」で保存
※ 注意:KiCad標準フットプリントから使い回す時(今回の例では、E・F)は上記の手順ではなく、フットプリント割付け(CvPcb)の段階で直接行う。
■ 2022.11.2
・上記作業が完了した。
・回路図入力開始
■ 2022.11.3〜 2022.11.5
<続回路図入力>
・回路図入力一応終了
<今後の作業手順>
(1) 元図との照合
@ 未接続シンボルの入力、数か所忘れ有り→ 修正済
A ポテンショの接続で、CW位置が逆だった。(1,3Pピンが逆)→ 修正済
(2) アノテーション
アノテーションにより回路を構成するシンボルに固有の識別番号を割り当→ 済
(3) ERC
・最初のERC結果
@ エラー:1ヶ所
U1-3:電源出力(+3.3V)と、+3.3Vの電源フラグが衝突している???
A 警告:1ヶ所
MODULE1-8:電源入力(バックアップ電源)は駆動されていません???
<対処>
@ +BATTのPOWERシンボルを作成(KiCAD標準よりローカルライブラリにコピーして作成)
して、このPOWER FLAGを置き、MODULE1-8に+BATTのPOWERシンボルを接続
<結果>
・警告は消えたが、エラーは残った????(この警告は無視してもNETハイライトで確認すると繋がっているので無視してもOK 意図的接続で問題無し)
・エラーだが、Easy_FRA_V3の時も経験しており以下対処メモが残っていた。
<Easy_FRA_V3の時の対処メモ>
・どうも、POWER FLAGピン属性:電源出力に対し、相手のピン属性が電源出力になっている場合に、出力衝突でエラーを出しているようだ。
そもそも、POWER FLAGは、電源シンボル(ピンは電源入力)が、ERCに電源ラインに繋がっていることを知らしめる為に使っているだけと考える。
試しに、エラーが出ている、3.3V(REG出力)と、-3.3V(LT1144出力)だけPOWER FLAGピンとの接続の部分を削除すると、このエラーは消える。
だが、ネットは正しく繋がっている。(ハイライトで確認)
なのでこれであとネットリストをチェックして問題ないようだったら先に進めてみる。
<上記に従って同様の処置を本プロジェクトでも施した>
・+3.3VのPOWER FLAGは削除する。
※ これでエラー・警告ともに消えた。
(4) フットプリント割付け(CvPcb)済(入力終えたところで[続行][OK]しようとしたら固まってしまいタスクマネージャー起動してプログラムを強制終了した。再度立上げ再入力セーブした)
(5) ネットリスト出力ネットリスト出力 済
■ 2022.11.6〜 2022.11.7
(6) 基板レイアウト設計:PcbNew 開始
@ 作業原点設定(この作業はガーバー作業の前にすれば良さそう。ガーバー作成時に影響がある作業と思われる。)
・X, Y= (97.155, 154.94)の位置をリセットして、dx, dy= (0.000000, 0.000000)とした。 済
A デザインルールの設定 済
B 基板外形線描画 済
C 外形+取り付け穴+禁止帯 済
D ネットリスト読込み
※ エラー発生
・[ネットリスト・ダイアログ]- [出力メッセージ]欄のエラー内容は以下(原文のまま記載)
「 エラー:コンポーネント"BT1"のパッド"2"がフットプリント"0-Easy_sd_Logger:BAT_BHSD-2032-SM"
に見つかりませんでした。
エラー:コンポーネント"BT1"のパッド"1"がフットプリント"0-Easy_sd_Logger:BAT_BHSD-2032-SM"
に見つかりませんでした。 」
→ 上記でコンポーネント"BT1"と言っているのは、シンボル"BT1"
BAT1 シンボルのピン番 1,2(1pin= +, 2pin= -)に対し、フットプリントのパッド番号 +, -で一致してないのが原因と考える。
シンボルの方のピン番を、キャラクタの'+', '-'には普通しないし出来ないと思う(英数字のみ使える)ので
以下のように対処することにした。
<対処:221107>
@ 「SnapEDA」からダウンロードしたフットプリント:BAT_BHSD-2032-SMの方を以下のように修正して上書き保存(名前は、そのままにする)
・パッド番号 + → 1 に修正
・パッド番号 - → 2 に修正
A CvPcbで、再関連付けを行う。フットプリント修正後同じ名前で保存しているので見た目は前のままに見える。再割付して回路図共にセーブ。
B ネットリストを再生成
C PcbNewを開く
D 上ツールバー 「ネットリストの読み込み」をクリック
E [現在のネットリストを読み込む]をクリック
F 確認ダイアログが開くので[はい]をクリック
G [閉じる]をクリック
<結果>
・これでエラー無し上手く行く。済
■ 2022.11.8
(6)-E 部品配置 済
・部品配置をする前に、余計なアイテムの表示をしないように設定しておくと配置がし易くなる。
右ペイン- [アイテム]TAG- □ 値・□ 非表示テキスト のチェックマークを外す。
F 部品番号の移動 済
■ 2022.11.9
(6)-G ベタグランド生成 済
・この作業の後、ショートカット CTRL+Bを入力しベタ領域の外形だけ表示させ次の作業に備える。
(再描画はショートカットB)
➈ 電源ライン引く 済
I アナログ部を引く 済
J オートルータ 済
K インポート後手直し 済
■ 2022.11.10
(6)-L ビア打ち 8ヶ所追加済
・この状態で下メッセージバーを見ると何故か未配線:1になっている。
浮島無いか・ラッツネットが残ってないか目視確認したが見当たらない??
とりあえずこのまま先(以下MN)に進めてみる。DRCでも未配線チェックするはずなので。
M 配線とビアのクリーンアップ 済
※ この作業をする時は必ず、Bコマンドでベタ表示にしてから行う事。
さもないとビア打ちのビアが不要と判断され削除されてしまう。
N DRC
・DRCでも未配線 1
※ 未配線パッド発見した!!
LCD1-2pin:GNDが、GNDベタの島から浮いていた。
GNDネットをハイライト表示し拡大したら見れた!!
近傍にビア打ちを追加してみる。2pinシルクが隠れないギリギリの位置に配置した。
パッドまでのエアワイヤは手で配線しBコマンドでベタ表示したら未配線0になった。
※ この状態でやっとDRC OKになる。
マーカカウント0/ 未配線カウント0
■ 2022.11.11
(6)-M TEXTの挿入とシルク最終整理 済
N アーカイブの保存 済
O 3Dビューワでの確認 済
P ガーバー作成〜 ガーバー確認作業 済
Q FusionPCB発注作業 済
※ 以下のようにFusionPCB向けファイル名(基板名+拡張子)に書き換えてZIPファイルにまとめ、それをサイトのPCB注文ページで読込ませる。
<Easy_SD_Logger.zip>
@ Easy_SD_Logger.gtl:表面銅箔
A Easy_SD_Logger.gts:表面ソルダマスク
B Easy_SD_Logger.gto:表面シルク印刷
C Easy_SD_Logger.gbl:裏面銅箔
D Easy_SD_Logger.gbs:裏面ソルダマスク
E Easy_SD_Logger.gbo:裏面シルク印刷
F Easy_SD_Logger.gml:基板外形
G Easy_SD_Logger.txt:ドリル
※ 運送業者:OCS
枚数:10枚
製作費総額:3417円
■ 2022.11.13
・秋月に部品手配済
■ 2022.11.14
・部品・P板到着の間、ソフトの方を検討
外部電圧入力のロギングについては既存ソフト:easy_sd_logger_3.cでOK
温度入力のロギングについても既存ソフト:sd_card_rtc_temperature_logger_4013.cがほぼそのまま使えるはずだが、
温度センサを、LM35DZから互換品と言われているTMP36GT9Zに替えているが
本当にそのままで良いか確認してみる。
<調査開始>
・まずは違いを以下にまとめてみた。
比較項目 | LM35DZ | TMP36GT9Z | 備考 | |
1 | メーカ | N.S | A.D | |
2 | パッケージ | TO-92-3 | TO-92-3 | |
3 | 電源電圧 | 4V〜 30V | 2.7V〜 5.5V | |
4 | 消費電流 | 50uAmax | 60uA未満 | |
5 | スケールファクタ | 10mV/℃ | 10mV/℃ | |
6 | 出力電圧VS温度 | 250mV/25℃ | 750mV/25℃ | ※ 0℃=+500mVのオフセットがかかっていることに注意 |
■ 2022.11.15
・FusionPCBサイトにて進捗確認
やっと「生産中(パターン処理中)」になった。
■ 2022.11.16
・FusionPCBサイトにて進捗確認
ちょっとだけ進んで「生産中(梱包中)」になった。
夕刻梱包まで終了したようだ。
・TMP36GT9Z温度センサのオフセット分:0.5V(0℃=+0.5Vのオフセット)なので上限の45℃ではセンサ出力が0.95Vになり、
これをOP AMPで10倍すると9.5Vで飽和してしまう。
GAIN調整ポテンショ付きの現回路をいじりたくないので、秋月の他で今迄使ってきた「LM35DZ」を入手出来ないか調べてみた。
調べたらマルツで購入できることが判明。
在庫:134個
1個:224円(税込み)
これと金属皮膜抵抗1/4W 20K
標準サイズ(誤ってスモールサイズを手配してしまったため)を一緒に本日手配した。
・温度センサ部のチェックプロジェクト名:「easy_sd_temperature_logger」として簡単に、Cソースをまとめてみる。
■ 2022.11.17
・たまたまLM35DZのデータシートを見ていたら、シンボルのピン番ミスを見付けてしまった。
2pin:GND, 3pin:VOはミスで、3pin:GND, 2pin:VOが正しい。(テレコミス)
実装時に、リードに細目の絶縁チューブを被せリードをねじってスルーホールに挿入することで対処。
シンボル作成時、3端子レギュレータ:NJM28450のを流用したが、その時にピン番をテレコ修正
する必要があることに気が付かなかった。
・TMP36GT9Zのソフト例をWEBで見付けた。(このテーマが済んだらこれを参考に試してみたい)
<TECHHOBBYサイトよりポイント整理>
● Aruduinoで温度検出。温度センサーの電圧をアナログ入力する。
・Aruduino基板で温度を検出する方法を紹介。
直接アナログ入力ピンに接続している。電源は+5V
/// ステッチ
const int PIN_ANALOG_INPUT = 0;
void setup() {
Serial.begin( 9600 );
}
void loop() {
int i = analogRead( PIN_ANALOG_INPUT );
float f = i * 5.0 / 1023.0;
float temp = (f*1000.0-500.0)/10.0;
Serial.print(f,4);
Serial.print(" is ");
Serial.println(temp);
delay( 1000 );
}
/// 解説
・float f = i * 5.0 / 1023.0;の処理で、A0チャンネルに入力されている電圧、つまり温度センサーが出力している電圧を求める。
・次に、float temp = (f*1000.0−500.0)/10.0;の処理で、電圧を温度に逆換算しています。
この式は上で紹介しているデバイスの特性から来ている。
/// プログラムの実行と結果
・シリアルモニタで次のように温度が表示されていれば成功
「 COM3
0.7527 is 25.27
0.7526 is 25.76
0.7526 is 25.26 」
-----------------------------------------------------------------------------------------------------------------
・外部電圧入力ロギングの既存ソフト:easy_sd_logger_3.cを基に改修する形で
温度センサ部のチェックプロジェクト名:「easy_sd_temperature_logger」として簡単に、Cソースをまとめてみる。
<改修ポイント>
(1) 液晶表示フォーマットの違い
@ easy_sd_logger_3プロジェクト
・通常画面
-----------------------
0123456789abcdef
-----------------------
2022/11/17(THU)
11:18:00 :2.789 V
-----------------------
A easy_sd_temperature_loggerプロジェクト
・通常画面
-----------------------
0123456789abcdef
-----------------------
2022/11/17(THU)
11:18:00 22.8℃
-----------------------
B easy_sd_logger_3プロジェクト
・ロギング画面
-----------------------
0123456789abcdef
-----------------------
REC:0002/ 1441
11:18:00 2.789 V
-----------------------
C easy_sd_temperature_loggerプロジェクト
・ロギング画面
-----------------------
0123456789abcdef
-----------------------
REC:0002/ 1441
11:18:00 22.8℃
-----------------------
※1.電圧か温度の違いなので、メッセージテーブルを以下のように変更する。
// message table
char msg1[] = {" V\0"};
↓
char msg1[] = {"゚C\0"}; /// ※ 半角で度の丸を入力するには、半角入力モードにしてパなどの文字を入力後ハを削除する。
※2.表示位置の違い
@ 通常画面・ロギング画面共
・0xC9→ 0xCA(x.xxx V→ xx.x℃)
(2) ADチャンネルの違い:AN1→ AN3
@
// Initialize ADC
_ADCHS= ADC_CH0_POS_SAMPLEA_AN1 &
ADC_CH0_NEG_SAMPLEA_NVREF; // A-D channel-1 select
SetChanADC12(_ADCHS);
↓
// Initialize ADC
_ADCHS= ADC_CH0_POS_SAMPLEA_AN3 &
ADC_CH0_NEG_SAMPLEA_NVREF; // A-D channel-3 select
A
_ADPCFG=ENABLE_AN1_ANA; // A-D channel-1 analog input
↓
_ADPCFG=ENABLE_AN3_ANA; // A-D channel-3 analog input
(3) SD Data Formatの違い
@ easy_sd_logger_3プロジェクト
/// 1サンプル毎の収録バイト数:16バイト
// For SD Data Format
unsigned char SD_write_data[] = {
0x00, // [0]:Hour
0x00, // [1]:
0x3a, // [2]:':'
0x00, // [3]:Minute
0x00, // [4]:
0x3a, // [5]:':'
0x00, // [6]:Seconds
0x00, // [7]:
0x2c, // [8]:','
0x00, // [9]:Volt
0x2e, // [10]:'.'
0x00, // [11]:
0x00, // [12]:
0x00, // [13]:
CR, // [14]:
LF // [15]:
};
↓
A easy_sd_temperature_loggerプロジェクト
// For SD Data Format
unsigned char SD_write_data[] = {
0x00, // [0]:Hour
0x00, // [1]:
0x3a, // [2]:':'
0x00, // [3]:Minute
0x00, // [4]:
0x3a, // [5]:':'
0x00, // [6]:Seconds
0x00, // [7]:
0x2c, // [8]:','
0x00, // [9]:Temperature
0x00, // [10]:
0x2e, // [11]:'.'
0x00, // [12]:
0x30, // [13]:'0'(const)
CR, // [14]:
LF // [15]:
};
(4) INT0 External Interrupt()の処理内容の違い ここより 221119 追記
@ easy_sd_logger_3プロジェクト
/// INT0 External Interrupt T=1Sec
void __attribute__((__interrupt__, no_auto_psv)) _INT0Interrupt(void)
{
i2c_read_sr(2,8); // Read SecondsREG - YearsREG
variable_lcd_disp(); // '2010/xx/xx/xx(xxx) xx:xx:xx
/// ADC Read
while(!IFS0bits.ADIF); // End of convertion ?
ResultData = ReadADC12(0); // Read 12bit ADC Datatyu
Volt = (5.06 / 4096) * ResultData;
Volt_int = Volt * 1000;
lcd_volt_disp();
/// Loging Interval Count 1分
++Sec;
if (Sec >= 60) {
Sec = 0;
minute_flag = 1;
}
//Reset INT0 interrupt flag
IFS0bits.INT0IF = 0;
}
A easy_sd_temperature_loggerプロジェクト
// INT0 External Interrupt T=1Sec
void __attribute__((__interrupt__, no_auto_psv)) _INT0Interrupt(void)
{
i2c_read_sr(2,8); // Read SecondsREG - YearsREG Add 0614
variable_lcd_disp(); // '2010/xx/xx/xx(xxx) xx:xx:xx
// Temperature ADC Read
while(!IFS0bits.ADIF); // End of convertion ?
ResultData = ReadADC12(0); // Read 12bit ADC Data
Temperature = (ResultData >> 3) & 0x1FF; // 分解能を落とす:12bit-> 9bit
// 4096 -> 512
// 液晶温度表示 : 00.0 - 51.1[℃]
// AN3in: 0.01V@0.1[℃](センサ出力:0.001V x アンプ10倍= 0.01V)
// 0.1V@1.0[℃](センサ出力:0.01V x アンプ10倍= 0.1V)
// AD変換値 vs 温度: 1-> 00.1[℃]
// 511-> 51.1[℃]
// AN3in = (5.00 / 512) * Temperature; // 0.00977V * 1LSB -> 0.01V * 1LSB
lcd_temperature_disp();
/// Loging Interval Count 1分
++Sec;
if (Sec >= 60) {
Sec = 0;
minute_flag = 1;
}
//Reset INT0 interrupt flag
IFS0bits.INT0IF = 0;
}
(5) lcd_volt_disp();→ lcd_temperature_disp();に置換える。
@ easy_sd_logger_3プロジェクト
void lcd_volt_disp(void)
{
// digit[3] disp
lcd_inst_wr(0xC9);
one_chr_wr((Volt_int/100)/10 | 0x30);
// '.' decimal point disp
one_chr_wr(0x2e); // '.' decimal point disp
// digit[2]-[0] disp
one_chr_wr((Volt_int/100)%10 | 0x30);
one_chr_wr((Volt_int/10)%10 | 0x30);
one_chr_wr(Volt_int%10 | 0x30);
// unit disp:' V'
lcd_chr_wr(msg1);
}
A easy_sd_temperature_loggerプロジェクト
void lcd_temperature_disp(void)
{
// digit[2] disp
lcd_inst_wr(0xCA);
one_chr_wr((Temperature/100)%10 | 0x30);
// digit[1] disp
one_chr_wr((Temperature/10)%10 | 0x30);
// '.' decimal point disp
one_chr_wr(0x2E); // '.' decimal point disp
// digit[0] disp
one_chr_wr(Temperature%10 | 0x30);
// unit disp:'[℃]'
lcd_chr_wr(msg1);
}
(6) I2C受信データをSD書込みバッファに転送する際のデータ種の違い
@ easy_sd_logger_3プロジェクト
/*************************************************************
* I2C受信データをascii変換し、SD書込みバッファに転送
* <I2C受信データ>
* @ RTC
* A 電池電圧
**************************************************************/
void forward_rec_data(void)
{
// RTC Data
SD_write_data[0] = (((rec_data[4] & 0x3f) >> 4) & 0x0f) | 0x30; // Hour
SD_write_data[1] = ((rec_data[4] & 0x3f) & 0x0f) | 0x30; //
SD_write_data[3] = (((rec_data[3] & 0x7f) >> 4) & 0x0f) | 0x30; // Minute
SD_write_data[4] = ((rec_data[3] & 0x7f) & 0x0f) | 0x30; //
SD_write_data[6] = (((rec_data[2] & 0x7f) >> 4) & 0x0f) | 0x30; // Seconds
SD_write_data[7] = ((rec_data[2] & 0x7f) & 0x0f) | 0x30; //
// Volt_Data
SD_write_data[9] = (Volt_int/100)/10 | 0x30;
SD_write_data[11] = (Volt_int/100)%10 | 0x30;
SD_write_data[12] = (Volt_int/10)%10 | 0x30;
SD_write_data[13] = Volt_int%10 | 0x30;
}
A easy_sd_temperature_loggerプロジェクト
/*************************************************************
* I2C受信データをascii変換し、SD書込みバッファに転送
* <I2C受信データ>
* @ RTC
* A センサ電圧
**************************************************************/
void forward_rec_data(void)
{
// RTC Data
SD_write_data[0] = (((rec_data[4] & 0x3f) >> 4) & 0x0f) | 0x30; // Hour
SD_write_data[1] = ((rec_data[4] & 0x3f) & 0x0f) | 0x30; //
SD_write_data[3] = (((rec_data[3] & 0x7f) >> 4) & 0x0f) | 0x30; // Minute
SD_write_data[4] = ((rec_data[3] & 0x7f) & 0x0f) | 0x30; //
SD_write_data[6] = (((rec_data[2] & 0x7f) >> 4) & 0x0f) | 0x30; // Seconds
SD_write_data[7] = ((rec_data[2] & 0x7f) & 0x0f) | 0x30; //
// Temperature_Data
SD_write_data[9] = digit[2] | 0x30; // Temperature
SD_write_data[10] = digit[1] | 0x30; //
SD_write_data[12] = digit[0] | 0x30; //
}
■ 2022.11.18
・FusionPCBサイトにて進捗確認
やっと「ご注文は出荷されました。すぐにお受け取りになります。お楽しみに!」になった。
■ 2022.11.19
・ソースの改修は終了。
コンパイルOK
HEXも準備出来た。
・P板到着まで時間が有るので、ドキュメント整理〜 MY HPに途中経過アップ作業に移る。
実験テーマ138:「dsPIC30F_SDカードロガーのP板化」(電圧入力と温度センサ入力に対応する、2CHデータロガーの実験です。)
■ 2022.11.23
・FusionPCBサイトにて進捗確認
2022-11-18 09:25:00 クライアントの電子情報が入力されました(中国,深圳)
2022-11-18 17:10:28 商品は差出人から回収されました(中国,深圳)
2022-11-18 20:04:14 貨物がOCSサイトに入った(中国,深圳)
2022-11-20 00:47:13 商品は運航され、積み替えのために次のステーションに入る準備ができています
2022-11-22 01:09:37 出荷情報は仕向国で事前に申告されています(日本)
2022-11-22 01:09:42 商品は許可を得て次の拠点に入った(日本)
2022-11-22 01:14:25 中継輸送中・乗換到着場所(日本 東京)
2022-11-22 01:18:25 商品は積み替えのために次のステーションに入りました(日本 東京)
2022-11-22 10:38:00 乗換場所に着いた
2022-11-22 19:46:00 商品は積み替えのために次のステーションに入りました
2022-11-23 00:38:00 商品は積み替えのために次のステーションに入りました
・やっと2022-11-23-11時30分頃、佐川急便によって、P板が到着!!
何時もの梱包とは違って、黄色のデリバリーパックでなく小さな段ボール箱の中にP板が梱包されていた。
外観は特に問題無し。
■ 2022.11.24
・部品実装完了
パーフェクトとはいかなかった。
多少P板設計時のミス有って小細工した。
@ 前の記事にも書いたが、LM35DZシンボル作成時のピン番ミス。
2pin:GND, 3pin:VOはミスで、3pin:GND, 2pin:VOが正しい。(テレコミス)
→ リードに細目の絶縁チューブを被せリードをねじってスルーホールに挿入することで対処。
A キャラクタ液晶:SC1602BSのフットプリント作成時のミス。
1pinの穴径指定ミス、ここだけ0.763mmになってた。
他のピン径は、0.8mm指定になっていた。
ところがこのピンは、データシート上、0.64x0.64mmの角ピンで対角は計算すると、0.905mm
になってしまうので、1mmにしないと挿入がきつくなる。(データシートの穴指定は、1.02φになっていた)
1pin以外は部品の寸法誤差で何とか普通に近く挿入出来たが、1pinは無理に挿入するとピンが
外に引き出されて来るので、小径のキリ状の物で穴を少しこじって拡げ何とか挿入出来た。
まあ本来は、1mmのドリルを通した方がベターな修正法だが無精した。
■ 2022.11.26
・動作チェック前に電池:CR2032の準備を行う。
まず電池フォルダカバー側に電池をセットしてから、フォルダに挿入しカバーをロックすればOK
・動作チェック開始。
(1) ショートチェック(IC+LCD未実装)
+5V-G: OK
+3.3V-G: OK
(2) 電源チェック-1(BT1:CR2032のみ実装)OK
+5V: 5.21V
+3.3V:3.29V
+BATT:2.91V(AE8564NB-8pinにて測定・CR2032単体= 2.99V)
(3) 電源チェック-2(PIC他、BT1:CR2032のみ実装)OK
+5V:5.23V
+3.3V:3.29V
+BATT:2.91V
(4) PICkit2にてデバイス認識〜 HEX書込み→ OK
(5) LCD他全てのIC実装を実装して動作チェック開始
(5)-1.easy_sd_logger_3.hexでの動作チェック(簡易DC電圧源治具からの電圧入力)
@ 時計機能確認
時刻合わせ機能 OK
時刻のバックアップ機能 OK
通常画面表示(時計+電圧)OK(若干低目表示だが、Vref=5.0Vの為と思われる。後で実測値の、5.20Vにソフト変更でトライ→OKになった)
A データ収録機能
・カード未挿入時「SD Not Mount」ブリンク表示 OK
・カード挿入時「Initital OK」表示後、収録開始 OK
・途中での収録停止は、SW4の長押しだが、センス間隔=1分なのでタイミングによっては1分待たないと停止しない)
4データ収録後停止してSDにセーブしたCSVファイルをEXCELで開いたら、ちゃんと4データ収録されていた。 OK
■ 2022.11.27
・続動作チェック
(5)-2.easy_sd_temperature_logger.hexでの動作チェック(温度センサ入力)
@ 通常画面表示(時計+温度)OK
A データ収録機能
・カード未挿入時「SD Not Mount」ブリンク表示 OK
・カード挿入時「Initital OK」表示後、収録開始 OK
・収録後CSVファイル読込確認 NG
→ 温度データが全て 0になってた。
→ void forward_rec_data(void)関数中の以下を修正(digit[*]に温度データの実体が無いのでng)
これで上手く行く。
10データ収録後停止してSDにセーブしたCSVファイルをEXCELで開いたら、ちゃんと10データ収録されていた。 OK
・修正前
/// Temperature_Data
SD_write_data[9] = digit[2] | 0x30; // Temperature
SD_write_data[10] = digit[1] | 0x30; //
SD_write_data[12] = digit[0] | 0x30; //
・修正後
/// Temperature_Data
SD_write_data[9] = (Temperature/100)%10 | 0x30; // Temperature
SD_write_data[10] = (Temperature/10)%10 | 0x30; //
SD_write_data[12] = Temperature%10 | 0x30; //
ここで稼働時の電源電圧を確認した。
+5V: 5.20 OK
+3.3V:3.29V OK
+BATT:2.91V(AE8564NB-8pinにて測定・CR2032単体= 2.99V) OK
・現在、室内温度の24時間ロギング中だが、これで一通りのチェック完了と言って良い。
今後の追試予定としては、2CHをマルチプレックスして、電圧入力 対 温度入力(変化)のロギングが可能な
ソフトを作成することだが・・・まあ、仕事でもないのでゆっくりと進めようと思う。
■ 2022.11.28〜 2022.11.29
・室温24時間収録テスト OK
<最終回路図>
・こちらから、どうぞ→ 「Easy_SD_Logger回路図」
<最終ソース及びヘッダファイル>
・こちらから、どうぞ→
easy_sd_logger_3.c (電圧入力ロギングチェック用)
easy_sd_temperature_logger.c (温度センサ入力ロギングチェック用)
※ 大昔のソースの改版の為ライブラリ化はしてません。この他にMicroChip社のFAT16の各ファイルを追加すれば動きます。