ATtiny13Aを使って「- △V検出」NI-MH 充電器の実験をしました。

  前回は ATtiny26Lを使用して、内臓のA/D コンバータを使いニッケル水素電池の充電コントロール実験を致しましたが今回は ATtiny13A を使用しての実験を行いました。

PC が20Pから8Pになったので基板スペースがかなり余裕ができ必要な回路の殆どが72*48のユニバーサル基板に収まりました、当初入出力ピンが少なくなったので「ISP」との共存も出来る様に考え検討致しました結果可能でしたので製作に取り掛かったしだいです。

このケースは100円ショップで購入致しました。
放熱器は「秋月電子」でちょっと大きめと謳ってた物です、定電流部がかなりの熱を出しますのでこの程度の大きさは必要です。

ちょっと余談になりますが100円ショップなどで300円程度で車用の携帯充電器が販売されてるので中の基板を取り出しノイズフィルターなどを追加してこの装置の定電流部の代わりにすれば、電池1個〜2個直列の充電は旨く出来ます。
ただし改造なしでは0.5A程度の電流なのでタイムオーバー変数の数値を充電完了時間を測定し30分ぐらいの余裕を加えてタイムオーバー停止する様に変更すればかなりのエコ充電器になりそうです。

当然ですがマイコン部は5Vの安定化部をそのまま使います。

この実験装置は0.8〜0.9Aぐらいの充電電流で各時間を設定しています。
また電池の直列数が多くなると、電圧も上げる必要があります、今回の実験装置は電池の直列数に必要な電圧を用意して供給する事を前提にしています。
10本直列では19Vぐらい必要でした、ノートパソコンの電源が19Vのタイプが多いのでそれを使ってみました、10本直列で旨く充電できました、ただしこれで直列2本などに使うと放熱器の容量がオーバーして使えません、直列2本では9Vぐらいで丁度良いです。

携帯充電器の出力電圧と出力安定電流を変更すればかなり良い充電器になりそうですね、いずれ挑戦します。


 これは製作直後の実験の様子です、ISPの6Pソケットにプログラマーからの配線が刺さっています、現在は写真の赤LEDも緑LEDと同じ方向に基板図を変更致しました、この写真通りだとLED色を間違えて半田付けをしたときは両方を変更しなければいけません、方向を同じにすればコネクタを差し替えるだけで済みます、実は私自身間違えて苦労しました・・・・・。

   写真の左側が電源入力です、そばにあるダイオードはLM338Tの保護用です、電源無接続のままプログラマーを接続してパソコンのUSBなどに接続すると5Vの逆方向電圧がかかりICが損傷する可能性があるので逆方向電圧をバイパスする為です、配線図で D1 に該当します。

手前側の2個のネジ付きスペーサーは裏側の配線時に水平に保つ為の仮取り付けです。
赤黒の蓑虫クリップは充電電圧測定用に使用している物です、他の詳細は基板実装結線図を作りましたので以下をご覧下さい。

  



基板裏側パターン面


この基板図は「秋月電子通商など」で販売している、片面ユニバーサル基板 72*48 です。
細かい箇所は見え難いのでこの画面をクリックすると画面が変わります、其のままもう一度クリックすれば大きな画面になりますからマウスのセンターロールや画面のサイドバーなどで調節して詳細を確認出来ます。

パターン面なので本来なら部品は見えないのですが、便宜上薄く仕上げてあります、この方が部品間とパターンの関係が良く分かる様になります。

ピンク色は入力と5Vの+電圧側です、黒色はすべてのグランドラインです、緑色はADCの入力ラインです、黄色は ISP 関係の接続です、配線図を見ながら細めの耐熱被服電線などで1本1本関係する箇所を接続します、注意としてこの黄色配線は押しボタンSW や Q2 Q3 のベース回路への接続も含みます。

この図面で点線と R曲線は表面または裏面のジャンパーを意味します、斜め線や直線はφ0.6 やφ0.8 のスズメッキ線や抵抗などの足の切れ端などで接続してパターンもどきにします。

D3 は放熱器の真下なので裏面に直付けですがC3とVR1の所に基板のホールが2個ありますからそこに立てて取り付けすれば良いと思います、ただし放熱器とVR1の間なので作業し難い箇所です。

もう一つ注意があります、定電流を作る為の抵抗1.5Ω2W は1W ぐらいの熱放出があります、取り付けの際リード線を長めにしエンパイヤチューブなどで保護して D2 の上付近で固定した方がQ1のFETを加熱する事が少なくなり良いです。

さらにもう一つIC2 は不安定に成り易いのでC2 C7 以外に基板図面で、放熱器を基板に半田で固定してある右側の赤の楕円で囲った付近で黒い点とそばにあるプラスライン間に0.1μFのセラミックコンデンサでバイパスすれば安定度が増します。
放熱器は直流的にはグランドラインへ接続していますがラインがちょっと長めのせいかIC2が不安定になりました。
2台製作の内1台に実験中に発見した事象なので取りあえず此処へ記述しておきます。

  



箱収め後の配線図


抵抗のW数で指定のない物は全て 1/6W です。
マイコンATtiny13AC1220μFIC-1 IC-2LM338T
C2〜C60.1μF セラミックコンQ12SJ471Q2 Q32SC1815Y
LED-2赤色LED-3緑色D1 D2100V 3A位
D3定電流ダイオード15mAD4 D5 D61S1555 R7 R91KΩ
VR110KΩ半固定抵抗R22Ω 2WR3120Ω
R4390ΩR5 R6 R810KΩR10-1210KΩ
この配線図は基板内と基板外の部分が有ります、左側の端子部とトグルSW さらに電池部分、また右側の押しボタンとLED も基板外の配線です。

ADC の入力レベル切り替えは ON-OFF-ON のトグルスイッチで 1/1 と1/3.8 にしています。

理由は 10本直列では 16V 付近迄上昇する場合があります。
16/3.8=4.21V ですから 5V 以内に収まるのと 2.2KΩと820Ω の抵抗が手持ちに在った為です。

この配線図からの分圧抵抗はトグルスイッチに直付けした 2.2KΩ と ADCセンスラインの R15 の 820Ωが該当します。

トグルスイッチのレバーを下側に倒すと 1-2 が導通して分圧比は 1/1  レバーを上に上げると 2-3 が導通して分圧比は 1/3.8 になります、このときの検出電圧は 20mV * 3.8 = 76mV になります、実験では 4本直列でもこの比で検出に失敗する事は有りませんでしたので10本直列では余裕で動作する事が分かりました、実験中に間違ってこの比率で1本の充電をした事もありましたがタイムオーバーする事なく停止してましたがちょっと焦りました。

D3とD4の定電流ダイオードは充電終了後の緩衝電流を流すのと ADCセンスの820Ωの抵抗(5mA未満)やPCの入力抵抗が10KΩぐらいとの事でそれらを適当に保障する為の物です。

定電流ダイオードの実装は向きに気を付けます、逆向きに取り付けると電源ONでD3と共に大電流が流れて昇天します、1KΩぐらいの抵抗と直列にして可変電圧10V〜20Vを加え電圧を可変しても15mA付近で変化しない事を確認した方向で取り付けます。

D3は電源が入っていないときに電池をセットとか充電中の停電などで電池からの逆流出を防止する為に入れます、この時の定電流ダイオードは逆向きになりますので大きな電流になる事もありD3がないと危険です。

IC-1 のVR-1 は出来るだけ正確な5Vを作る為ですが、この装置に関しては正確さは必要有りません、普通の3端子レギュレータで充分です、回路も簡素になりますから検討されるのが宜しいかと思います。

配線図に関して現段階では問題な箇所は無いものと思われますがまた何か気が付いたら追記致します。

2012/03/25
D5 D6 が追加されました、記末の配線図の箇所を参照願います。

  



   装置の動作についての説明です。
 メイン電源スイッチは先で述べたトグルスイッチで兼用しています、センターで電源OFFです。
 電池が2本以下なら下側へ、3本以上10本までは上側です。

 電池を2本装着してメインスイッチを下側へONしますと強制充電中のLEDだけ点灯しますが未だ待機状態ですが装置へ通電した事を目視できます。

 この状態で充電開始させない理由は一般の充電器は停電すると全て初期状態になり電気が 復旧して通電が開始すれば再び充電が開始します、一般の充電器は追充電を許可しているタイプと電池を使いきってから充電するタイプなどあります、追充電を許可タイプは問題 なく停止しますが、それでないタイプの場合は過充電はもとより火災などの危険も考えられます、この実験装置は30分間は強制充電なので、30分間では火災に至る事は無いと思いますが過充電は免れません、よって停電から再通電しても充電開始しない様にプログラムしています。

   PB-1 と PB-2 の押しボタンに付いての説明
 PB-1 は INT-0 割り込みを採用しました。
1回押すと充電開始され、充電中の赤LEDが点滅を始めます、もう1回押すと強制充電解除になり緑の強制充電中のLEDが消灯します、此処までは割り込み処理なので PB-1 は押し続けなくてもさくさくと動作しますから快適です、これ以向は割り込み禁止状態になります。

 PB-1の最後の動作は強制充電解除後、充電完了停止するまでの間に3秒以上押し続けると赤LEDが点滅を停止して点灯状態になりタイムオーバー停止と全く同じ状態で停止します。
此処までの動作を1つのボタンで再現しました、コンピューターならではですね。

     PB-2 は何をするのか?
大げさな事はしません、配線図を見れば分かります、接続先は RST ピンです、以上のどの動作より優先でPB-2を押された瞬間にこのマイコンは初期状態に復帰します。

代わりに電源を一旦切断すれば同じ状態ですが、電源の入り切りはタイムラグを入れないとマイコンが誤動作する可能性もありますから要注意です。





   ATtiny13AでBASCOM-AVRのエラー続出について。

このCPUをBASCOM-AVRで操作未経験の方は必ず遭遇するエラーだと思いますので、対処方法を以下の画像などで記述致します。

始めは予告なしにこのエラーが出て焦りました。
Out of SRAM space この意味が分からず指定行の変数のタイプを変更したりしました、しかし必要なタイプの変数なので変更などしたら、まともなプログラムなんかできっこないですよね。

諦めかけていましたが次の日にまたアタックして手当たり次第にしっ掻き回した結果解決しました。







黄色の楕円内のOptionsをクリックして、マウスの矢印が写ってるCipを選択するとBASCOM-AVRの初期設定の画面が起動します。



 

上の画像からこの画像に変わります。

Chip の窓で逆三角をクリックして attiny13a を見つけて選択してこの画像と同じにします。
次 HW Stack  を 16 に変更。
次 Soft Stack を 8 に変更。
次 Framesize を 16 に変更。

この画像での変更は此処までです。

Chip タブから三つ目の 12,SPI,1WIE タブをクリックして以下の画像を出します。





ここで ATtiny13A のSPIの設定を済ませます。

窓の逆三角をクリックしてそれぞれ画像の様に設定すればここは終わりです。

ここ迄の設定でエラーは出なくなると思いますが、折角ですからもう少し設定していきます。

次の設定はこの画像でも見えています Programmer タブをクリックで以下の画面にします。


ここで使用しているプロクラマー(書き込み器)の設定します。

私は HIDaspx というプログラマーを使っていますので、画像の様に設定しました、各自使用しているプログラマーに適合した設定にしてください。

Programmer の窓はBASCOM-AVRの既定装置以外は逆三角から操作して写真と同じにします。

Otherの
Progrm はプログラマーに付属している必要なソフトウェアーを保存したアドレスを右のフォルダのアイコンをクリックして保存したフォルダーを選択すれば自動的に書き込まれます。

Parameter は1の数字を大きくすればドス窓の開いている時間が長くなる様ですが試していません。
右のUse HEX fileにチェックを入れます、設定はこれでおしまいです、最後に下側にあるOKをクリックして終了します。

ここでの設定を済ませて置けば、コンパイラ後、緑の書き込みアイコンをクリックするだけで自動的に書き込み完了しますから便利になります。



充電開始、停止をリレーで制御した装置、プログラムは変更なし。
配線図で変更になった箇所は、スイッチがロータリースイッチで4回路3接点タイプになりました。
IC-2にリレー接点とR14が追加されています。
ADC-IN に自動分圧回路を追加しました、記末のFET制御の場合と同じ動作です。
基板図はFETの箇所がリレーに置き換わっています。
D3がリレーコイルの逆電圧防止部品になり、D4 R6は不要になり R14 が追加です。



********** プログラム ファイル **********

エクセル形式ファイル テキスト形式コピー用 テキスト形式 印刷用


2012/3/28 プログラム追加  145〜148行  206〜216行
理由、ADCの入力が5Vを超えると制御不能になり、過充電になる為。
4.25Vを超えたら充電を停止し、強制充電中のLEDを点滅。
復帰はリスタートを押すか電源接断でスイッチは3個以上の側にして初期状態からスタートさせる。
此れで間違って電池を3個以上の接続で2個以下側のスイッチで充電して過充電になるのを防げます。

エクセル形式のプログラムファイルは「シート1」がコピー用です、其のまま「BASCOM-AVR」へコピー貼り付けでOKです。

「シート2」は「BASCOM-AVR」のプログラム色に出来るだけ近い色にしましたので違和感無く見られると思います、コメント付きです、暇がないと此処までは出来ない感じですが・・・・かなりの暇人??

テキスト形式ファイルは昨今エクセルは使えませんって言う方は少数かと思いますが、その様な方の為に追加しました。

コピー用はエクセルのコピー用と全く同じ感じで使えます、印刷用は日本語のコメント付きですがモノクロですから「BASCOM-AVR」のプログラム色で馴染んだ方はちょっと違和感があるかも知れませんね。
  





     プログラムの概要をさらっと記述します。

9行〜10行 擬似命令です、ベーシックコンパイラの初期設定の方で済ます事が出来ると思いますが試していません。
14行〜20行 割り込み、A/Dコンバータ、入力出力ポートの設定
24行〜38行 変数の宣言。
42行〜59行 プログラムの初期値設定で、起動時や再起動時に1回だけの処理です。 
63行 メインプログラムでループのトップアドレスになります。
64行〜70行 最初の割り込み処理で、必要な各フラグのセットやリセット、充電開始ONなど済ませる。
68行の強制充電中のLED ONのルーチンは不要と思われる、47行と171〜172行で済んでいる。 現在削除をしていません其のままでも無害かと・・
72行〜76行 強制充電解除LED=OFF 、 時間変数を"0"にする、割り込みモード終了フラグ=セットで以降割り込み可にするルーチンへ入れなくなる。
80行〜86行 2回目の割り込みを可能にする為の処理、此処へ3回以上来たら割り込みをEnableする、ただし2回目の割り込みが済んだら此処へは入れなくなり割り込みモード終了となる。
88行〜93行 割り込みモード終了でここへ入り、押しボタン(PB-1)が押された状態で3回以上通過で強制終了可フラグを"0"にする。
95行〜97行 押しボタンが押されてなければ時間変数に3をストアする。
98行〜100行 強制終了可フラグ "0" を確認して強制終了フラグ=タイムオーバーフラグを"0"にする。
104行〜109行 此処は恐怖?の無限ループです、充電完了、タイムオーバー、PB-2 を3秒以上押す、などの動作で此処へ入って停止します、此処からの復帰は PB-2 を押すか、電源切断再投入です。
113行〜124行 此処は30分の時間を計測します、約1秒周期で入ってきますから変数「Cnt2」が"0"で1800回の通過処理になり約30分の時間を知る事が出来ます。
128行〜139行 上記処理と全く同じ事をしていますが、約3時間の時間を計測しています、該当変数「B2」が"0"になるまでの処理です、上記30分も同じですが、此処を通過する周期は正確な1秒では有りません、よって時間を実測して適当な数を各変数に入力しています。45行〜53行を参照!
143行〜144行 ADC をスタートさせて測定結果を変数「A」に代入します、プログラムの Getadc(3) はADC3を使うと言う意味です。
148行 此処は通常繰り返すプログラムスピードが出来るだけ1秒に近くなる様に設定します。 此処の「数値ms」*「全体の遅延数ms」が実際のスピードです、他のWait を使っている箇所で数を変更すると此処も多少の変更が必要です。
152行〜159行 充電中の表示 LED を電圧上昇中の点灯時間を短く、消灯時間を長くためのルーチンです。
163行〜166行 上記と逆で LED を電圧降下中の点灯時間を長く、消灯時間を短くしています、実際を観測すると充電初期と充電終期またはその間でのいろんな点灯状態を観測から知ることが出来ます、例えば古くなった電池は充電初期から降下し始め時間経過ご上昇し充電終期に降下するなどを点滅状態から知る事ができます。
171行〜174行 電源投入時や PB-2 でのリスタート時でもプログラムは走っていますので表示灯 LED が点灯状態を変える事が観測されましたので時間関係の変数値を初期状態にするルーチンです。
180〜188行迄 30分の時間が経過してからの充電状態を監視する重要なルーチンです、自己メンテなどにも関わるので理解を深めて置く事をお勧めいたします。
180行 ここは30分の時間が経過したらお入り下さいの入り口です、30分未経過の場合は190行まで飛び191行で「Max」変数を新ータに書き換えます、この事から30分未満では充電終了判定が出来ませんので強制充電になる事が分かります。
181行〜188行 強制充電中の LED を消灯し、新データに"4"をプラスします、「"4"」は20mvです。
184行で前回のMAXと+20mVした新データを比較して前回のMAX値が同数か大きければ、新データは -20mV 以下になったと判定し、充電停止、無限ループフラグを"0"にする。
197行〜202行 タイムオーバーフラグを調べて値が "0" であったら、充電停止、点滅していたLEDを点灯状態にする、停止フラグを "0" にする、これで停止時にLEDを見れば自動的にタイムオーバーになって停止したと理解できます。
204行 Loop はメインプログラムの Do と一対になっていて、このプログラムは Do----Loop を無限ループに放り込まれるまで、懸命に繰り返します。
208行〜212行 208〜210行は INT-0 の割り込みがあった時の処理で、ここでは割り込み変数 Intf をセットするだけです。
202行の End はプログラムが暴走したときにこれをみてプログラムはリスタートする。
 おまじない




  記
 前回は ATtiny26L を使用しての実験でした、結果はほぼ自分なりに満足していました。
 充電式電池をいろんな機器に組み込んだりして気が付いた事は充電するときは電池を機器から
 取り外し2個とか4個ずつ充電する作業が結構、面倒な感じがしていました。

 充電装置も組み込むか、充電端子を付けるかすれば電線を接続するだけで事が済むと考え検討
 していました。

 20PのPCだとちょっと大げさな感じだし、手持ちの8PタイプのPCはADCが搭載されてなく躊躇し
 て居たところ何となくネットで秋月のカタログで ATtiny13A を見つけ PDF のマニアルを見て
 ADCも搭載してあり、値段も手ごろだった事もあり、5個+他のちょっと余計なパーツをその場
 で発注しました。

 便利な時代になりましたね、昔々小学生の頃、北海道の土田舎から東京の科学教材社へ鉱石ラ
 ジオキットを現金封筒にお金を入れて注文した事を思い出しました。

 半月ぐらい経ってやっと現物が到着した時はすごく嬉しかったです。

 今はパソコンで10分ぐらいで発注もでき、札幌からでも午前の発注で翌々日には現物到着
 ですから便利すぎですね。

 ちょっと余談になりました、本題に以降してATtiny13Aで充電器を作るには、入出力ポートが
 少ないのでISPのポートと共有せざるを得ないと分かり検討致しました。

 ISPポートを充電器での入出ポートとして使うには10KΩ程度でプルアップ、プルダウンで多
 分ISPの機能が維持できると思われるので早速設計に取り掛かり試行錯誤を繰り返し現在の回
 路になりました。
 ISPでの書き込みもこの回路のままで問題なくできました。
 
 しかし機器組み込みだと押しボタンやLEDなど使えないので全て自動で処理する事になりちょ
 っと荷が重いと感じ、機器外接続タイプ充電器に決定致しました。
 機器と言っても殆どは自作品なのでどうにでもなる感じはしますが機器外接続タイプは殆ど
 の機器に対応できます、一台準備して置いても損は有りません。

 基板が完成してからはいろんな条件で充電試験を行いました、充電終了が近くなると殆どの
 電池は温度の上昇を確認できました、分かった事は風を当てて冷却したりすると充電終了期
 の電圧降下が抑制される事が分かりました、計算上の充電時間は過ぎているのに停止しない
 感じが在ったら、タオルなど掛けて温度の放散を防ぐと急激に電圧の降下が進み2〜3分ぐら
 いで自動的に充電完了停止に至った事も多々有りました。

 メーカー製の充電器と比べても同じくらいか少し温度が低いと感じる事も多くあり、こんな
 所で妥協する事に致しました。

 現在このタイプと基本は同じですが緩衝電流を作るところを変更したタイプも作り2台で試
 験を繰り返しています、上記の方で配線図と基板図も掲載してますから参照願います。
 
 どう違うのかと言うと、この装置は定電流ダイオードを使用して緩衝電流15mAを供給してい
 ますがこの部分をIC-2のLM338Tを定電流にしているR2の1.5Ω2Wに100Ω1/6Wを並列に接続し
 て待機時や充電完了時にリレーをつかってR2を切り離すと1.25V/100Ω=12.5mAの定電流で緩
 衝電流を確保する事が出来る構造です。

 この場合はQ1のFETの場所にリレーを取り付けます、5Vのリレーですから5Vラインからの供
 給になります、当然ですがR6も不要です、FETをドライブしていたQ2はそのままでリレーを
 ドライブしますが現在なんの不都合もなく動作しています。

 リレーは秋月で購入した物で外国製で、941H-2C-5D でこの型番の意味も分かりました。
 941シリーズでHはHigh Sensitive Type 2Cは2回路のC接点タイプ 5Dは5VDCです。
 コイル抵抗はHigh Sensitive Typeなので167Ωです。

 Q2でこのリレーをドライブしますので 2SC1815Y はhfeが120〜240ですからPCの出力が5Vと
 して計算します、5V-0.6V/10KΩ*120=52.8mA です、リレーのコイル抵抗は167Ωですから
 5V/167Ω=約30mAです、2SC1815Yで最悪でも52.8mAを流せますから余裕で使える事が分かり
 ます。

 どちらのタイプが良いのかは使った感じではどちらも同じでですが、有接点と無接点の信
 頼性や緩衝電流値の変更の容易さと入手製などいろいろあります、製作者の考え方で選択
 する問題ですね。
 ソフトウエアーはどちらも同じものです。

 最後に5Vの安定化回路ですが、入力電圧範囲が9V〜20V有りますので放熱器なしではちょっ
 ときつい感じがあります、今回は定電流回路用放熱器が取り付け部を含めて余裕が有りまし
 たので一緒に取り付けました、20Vをインプットしても安心です。

 以上でATtiny13A NI-MH 充電器の実験記は終了です、何か気が付いた事が出ましたら解決
 方法などを追記いたしますので宜しく御願い致します。

 追記 3月12日
 10本直列で徹底検証の結果、降下電圧の比が少し大きく不完全な停止を確認しました、多分
 直列10本では1本の10倍ぐらいの変化量があっても不思議じゃないですよね、解決方法を探
 ってその結果を後ほど追記します。
  
                                   管理者



  3月15日
上記、問題に関して対処方を検討の結果、取りあえず自動で分圧比を換える回路を実験しました。
リセットIC 80721AN が手元に有り、他はトランジスタが数個あれば可能と上記配線図中の色の違う部分を別基板で作りました。

動作の説明
2SA1015のエミッタ、コレクタ間の2.4KΩを短絡したり開放したりして分圧比を換える事が出来ます。
2SA1015が導通で3.7:1 非道通で6.7:1ぐらいに変化します、このリセットIC 2番の入力は2.1V基準です、図の抵抗比で7V付近で切り替わります、4本直列までは今まで通り、5本ではICのスレッショルドに掛かるので除外、3/29日現在の定数で5本もOKです。5本以上10本までは2SA1015が開放され分圧比が6.7:1ぐらいになります。

テスト結果で、7.2Vの台湾製の電気ドリルは充電OK 自分の単三10本直列も正常な充電完了停止致しました。
此れで電池が2本まではトグルスイッチを下側へ、3本以上は上側へで気楽に充電出来る様になりました。
追加したLEDは電池が4本までが消灯、それ以上で点灯です。

2012/03/25
D5 D6 3.3Kを追加しました、電池が1個ではリセットICが動作点外になるため6本以上の動作をする事が判明したため、入力電圧を少しかさ上げするためです、他の抵抗はそのままです。

2012/03/29 ADC センスラインに 100μF 16V を追加
理由、10個直列を充電の際、想定外?な停止をした為、調べた結果、充電中に電池ホルダーも温められ接触部の変形などの要素により幅の狭い上昇パルス的な変動がある事が判明、その影響を避ける為の追加。
以後、異常な停止動作はなくなりました。




 ちょっと長くなりました、最後まで見て頂き有難う御座います、また何か有りましたら追記します。