なぜセンス抵抗というものが必要なのだろうと疑問に思った。低抵抗で高精度なものは一般的な抵抗に比べると10倍から100倍ぐらいの価格になる。

一方でセンス抵抗を使うときに頻発するのが、パターンの配置に気をつけないとパターン自体の抵抗が影響するというやつで、そんなにパターンに抵抗があるならパターン自体で電流センスしたらいいのではないかと思っていた。

パターンの抵抗はどれぐらいか

電流センス抵抗(シャント抵抗)は普通10mΩとか、あるいはもっと低抵抗値のものが使われる。

銅箔パターンの抵抗値は配線のアスペクト比で決まる (ref. http://www.tij.co.jp/lsds/ti_ja/analog/powermanagement/hints/power_sel_hint52.page )

20°C のときの銅の電気抵抗率 1.68e-8、1oz (35μm) の銅箔パターンの場合、1:1 の比の場合

1:10 の比の場合は 0.48 * 10 で約5mΩの抵抗値を持つことになる。基板上のパターンで電流センス程度の値の任意の抵抗値を作るのは割と簡単そうである。

銅の温度特性

しかし銅を抵抗として使おうとすると温度特性が問題になる。銅の温度特性は 4.3e-3/°C で、温度が高くなるほど抵抗値が上がる。

これはかなり大きい変動で、±10%の範囲に納めるには温度変化が±23°Cに収まる必要がある。もし±1%程度の精度を求めるなら±2.3°Cという極めて安定した温度でなければいけない。

抵抗のデータシートに書いてある温度係数単位 ppm/℃になおすと、4300ppm/℃ となり、一般的な(高精度ではない)抵抗の±300ppm/℃と比べてもケタ違いに大きい。

まとめ

ということで、これではとても高精度な電流センスはできそうにないので、代用できるケースはとても限られそうということがわかった。

  1. トップ
  2. tech
  3. 銅箔パターンで電流センス抵抗を代用できるか?


LTC3780を使った同期整流式DC/DCコンバータモジュールが気になったので買ってみた。ヒートシンクの下に FET が4つ隠れている。

スペック的には

  • 入力は 5〜32V
  • 出力は 2〜24V
  • 出力電流は最大14A
  • スイッチング周波数は200kHz
  • 4.5V 以下で出力停止

昇圧も降圧もできるので、一旦出力電圧を設定すると入力電圧範囲なら何も考えずその電圧がでる。

例によって 5V -> 12V の変換効率を調べてみた。

  • 2.5W -> 2.24W 89.6%
  • 5W -> 4.73W 94.6%
  • 10W -> 9.68W 96.8%
  • 15W -> 14.5W 96.6%
  • 20W -> 19.1W 95.5%
  • 25W -> 23.9W 95.6%
  • 30W -> 28.2W 94.0%
  • 35W -> 32.3W 92.3%
  • 40W -> 36.6W 91.5%
  • 45W -> 40W 88.8%
  • 50W -> 43.8W 87.6%

XL6009, LTC1871 と比べると10ポイントぐらい効率がいい。効率がいいのでそこそこ通電しても基板が全然熱くならない。

ただし2000円ぐらいする。LTC3780 がそもそも高価なのでこんなものだろう。この構成で自力で基板を起こしたらもっとかなり高額になってしまう。コストパフォーマンス的には XL6009 や LTC1871 は相当良いと思う。とはいえ高効率は何にも替えられない価値なので難しいところ。


正直そんなに変わらないんじゃないかと疑って計ってみたけど思いのほか差が大きかった。

  1. トップ
  2. tech
  3. LTC3780 同期整流ステップアップ/ダウン DC/DCコンバータ

中華互換 Arduino Nano を ebay で買ってみた 700円ぐらい。

Arduino 互換という意味ではもっと安いのもあるが、安いものは USB シリアル変換モジュールが中華チップなのでドライバのインストールとか挙動に不安がある。FTDI チップ搭載だとこれぐらいが最安っぽい。FTDI チップは偽物もあるらしく、ドライバ側で弾かれたりするみたいだが、今回買ったのは大丈夫だった。

USB Serial を別途用意するならもっとアホみたいに安いのがある (水晶やら何やらついててもAVR 単独で買うのと同じぐらい)。



今回買ったのはちゃんとブートローダーが書きこみ済みのもので、シリアルポート経由で書きこみができる。ただ、手元に Arduino IDE がないため、avrdude を直で読んで書きこんでみる。

最初適当にこんな感じにしてみたが失敗した。

$ avrdude -pm328p -cstk500v1 -P /dev/tty.usbserial-AL011AVX
avrdude: stk500_recv(): programmer is not responding

ボーレートがあってないとこうなる可能性がある。-b オプションをかえてみる。

$ avrdude -pm328p -cstk500v1 -P /dev/tty.usbserial-AL011AVX -b b57600
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x1e950f

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

とかなればOK (この例では書きこみまでやってない)


LED が4つ載っていて、TX RX PWR L となっている。最後の L ってなんだ?と思って回路図を見てみたが、単に PB5 に繋がっている LED らしい。デフォルトだとLチカが書きこまれているようでチカチカする。

 -

3.0 / 5.0

Arduino IDE でも Arduino Nano を指定して書きこむことができた。

最初なぜか Uno と勘違いして設定していて失敗しまくって、なんでだろう?ってなっていた。結局 Arduino.app/Contents/Java/hardware/arduino/avr/boards.txt を見て調べてる途中で気付いた。

  1. トップ
  2. tech
  3. FTDI チップの Arduino Nano コンパチボード 700円