2010年07月08日

wii 用 bluetooth モジュール



Wii 用の bluetooth モジュール J27H002 が、dealextreme で 7.75 ドルで買えることを知った。

ちゃんと認可を受けているようだし、インターフェイスは たぶん UART だし 電子工作で使えると嬉しい。ちなみにサイズは、2.6cm x 1.8 cm だそうだ。

    focalprice のほうは、6.47 ドルだった。 3 つ買えば単価が 5.57 ドルまで下がるし。



ちょっと調べてみると、Wii のモジュールは もともとは ミツミの WML-C43 だったらしい。それの後継品か互換品か知らないが 信号やプロトコルは互換性があるのだろう。

WML-C43 の場合 テスト用のパッド が 8 つだから 信号線は全部で 8 つなのだろう。J27H002 もシールをめくれば テスト用のパッドが見えてきそうな感じがある。

    -- 入手した。シールの下には 予想どおり に 8 つのパッド。ただし、パターンが若干小さい。

    VCC(3.3V),GND , TXD/RXD/CTS/RTS と RESET で 7本かなぁと想像しているが、全然違うかも。

    プロトコルは、HCI-UART のはず。


wii 本体と ロジアナがあれば ピンアサインは 調べられそうだが、残念ながら両方とも持っていない。自分では調べられないので調べた方がいたら教えて頂けると非常に嬉しい。

あと対応コネクタは、Molex 54722-0168-Cだと思うが確信しているわけではない。

追記: Wii は USB だった。

「ぷちのいず」さんのところで、実際に Wii に接続して調べたところ、USB だったとのこと。

接続は、上の WML-C43 の写真の向きで、見て左から

    (1) ? H レベル
    (2) ? H レベル
    (3) D-
    (4) D+

    (5) ? L レベル
    (6) ? H レベル
    (7) ? H レベル
    (8) GND

(ただし、(1)-(7) が逆かも)。

まだピンが余っているから そこに シリアルが仕込まれている可能性はある。

    それは望み薄という気もしてきた。テスト用パッドまで互換にするとすれば、理由があるはず。-- 検査に必要だからとか? ファームウェア書き込み用の SPI とかかも。

USB only だとしても 3.3V なら ちょっと嬉しい。前記事:格安 Bluetooth ドングルで書いたように、PIC24FJ64GB002/PIC24FJ32GB002 を使えば 3.3V only ので コンバーターが作れる。

    その前に 電源ピンを確定して、PC への接続テストをしないと ... 3.3V というのも違うかも知れないし。

それに私が欲しいのは、I2C へのコンバータなので、どうせコントローラは必要なのだ。(PIC必須か AVR で済むかの違い)

ちなみに、シリアルの HCI プロトコルには、BCSP (Blue Core Serial Protocol) と H4 がある。
H4 は、CTS/RTS のハードフローコントロールが必須で 8bit/Parity None 。
BCSP は、ハードフローコントロール なし(TX/RX のみ), 8bit/Parity Even 。
ボーレートは、4800 - 921.6K bps の範囲。

    "Three-wire protocol" というのもあるそうだ。これは、BCSP をベースにしてて H5 とも言うらしい。信号線は Tx/Rx の 2本 (GND 入れて3?) 。フローコントロールは Xon/Xoff 。

    公式のドキュメントは、ここ


追記: 2010/11/11

少々知識が増えたところで、改めて ググってみたところ、WML-C43 も J27H002 も BCM2045 だという情報が得られた。ここに、BCM2045 と I2C rom (M24C32) が載っている写真がある。
M2432 は、32kbit (4KB) しかないから、設定が格納されているだけなんだろう。

Product Brief だけ見つけられたのだが、Supperts UART, USB, SDI, SPI HCI transport って書いてある。
SDIO を持っているから SDI って SDIO のこと? ... それはともかく、残りの 4pin が信号線なら USB 以外で接続できるのかも知れない。.. データシートがないとどうにもならなそうだが、とりあえず。

Broadcom は、SDK なんかを配布しているようなのだが... 詳細はよくわからない。


追記: 2010/11/6



Serial Bluetooth RF Transceiver Module RS232 (goodluckbuy.com , $6.35) なんてものを見つけてしまった。

やりたいのは、I2C 変換して、PMP につなぐことなのだが、USB だと PIC24F 使わないと無理そうで面倒に思っていた。最初からシリアルだと手馴れた AVR で作れそうだし嬉しい。

AVR つなげるなら mega88系? それはともかく、ちょっと買ってみよう。

    下記にわかったことをまとめておいたが、goodluckbuy.com のは、たぶん、old version のファームウェアで slave にしかなれないように思う 。new version が明らかなのは eBay E'go china のやつで 2 個 $20 。あと、CuteDigi BMX の $15.99 。
    いずれにしても 対応しているのは SPP。

    AVR とかで デバイスを作るには良いと思うが、ちょっと Host 向きではないようだ。

    チップは、CSR BC417143 (BlueCore4-External)で、Flash が載っている。firmware がダウンロードできたりすると面白いのだが...

    Radio Datacom というところの KC21 は、ボードの形状は違うが、同じチップセットで HCI も対応している。値段は $23.21(サンプル)。これが良いのだが..
    ちなみに、RDC4202 $17.50 は、goodluckey.com のと 外観がそっくり。だが、チップが、BlueCore4-AudioROM でちょっと違う。 機能が KC21 と同じならこっちのほうが良さそう。

追加情報:

これは、eBay でも売っている。ちょっとメモ。


    Technical Specification:
  • Item Name: Bluetooth UART RS232 serial converter Module
  • Default Baud Rate: 9600,8,1,n.
    (1200,2400,4800,19200,38400,57600,1152000)
  • Operating Frequency Band:2.4GHz unlicensed ISM band
  • Bluetooth Specification:.V2.0+EDR
  • Output Power Class:Class2
  • Operating Voltage:3.3V
  • Host Interface: USB/UART
  • Audio Interface: PCM and Analog interface
  • Flash Memory Size: 8Mbit
  • Dimensions:27.2mm x 12.8mm x 2.5mm
  • Net Weight:9.6 g
    ※ USB とか PCM とか書いてあるが、物理的にインターフェイスがあるだけ? 使えるという意味ではなさそう。
    ※ serial converter って書いてあるし、ボーレートが低いから SPP ?

    ピンアサイン 回路例


    こっちにもっと詳しい情報があった。マニュアルとかもダウンロードできる。

    内容が違ったり、書いてなかった情報

  • Modify master & slave mode at any time, master and slave mode is the same as the hardware to support the AT command set to support the baud rate 2400 to 1382400.
  • The current firmware has been modified for the new version: The default setting for serial port 【9600, N, 8,1】, password: 1234.
  • Support the AT command to modify the baud rate, device name, passkey, master or slave mode
  • Build-in CSR company Bluetooth chip BC417143
  • Paired with various Bluetooth adapter, Bluetooth phone use, master-slave can also be used in double
  • The maximum serial baud rate: 1382400bps, support for hardware flow control transfer
  • Size: 26.9mm x 13mm x 2.2 mm
  • Power Supply      +3.3VDC 50mA

    同じものにしか見えないのにサイズまで違うし。そもそも外見は同じでも ファームウェアによって機能が変わるようだ。



    ダウンロードした 資料を見てみた。

      外観はちょっと違うが、CuteDigi BMX と同じもののようだ。
      CuteDigi BMX には、old firmware 版と new firmware 版があって、どちらのマニュアルもダウンロードできる。

      で、この資料のマニュアルは、new firmware 版 と同じ。そういえば 商品ページにも new firmware と書いてある。

      ひょっとしたら goodluckbuy.com のは、old firmware かも。デフォルト 9600 bps というのが同じだし。

      以下は、new firmware 版の内容。

    Manual(EN).pdf を読むと AT コマンドの説明が載っている。
    PORT まで AT コマンドで制御できるようだ。

    まず上記と違う点や補足:
  • Default Baud Rate: 38400,8,1,n
  • CSR BC417143 (BlueCore4-External)
     - 確かに写真には、csr / BC417 / 143xxx / xxxxxx と印字されている。
  • port を(H/L に)操作できるのは、PIO2-7 と PIO10 。
  • PIO8 は、working status で PIO9 は、link status。極性は設定できる。
  • 全部の port は読み込むことができる。
  • アドレスは、初期値 all 0 で、自分で設定しないとダメかも。

    あと、transparrent data mode の記載があった。
  • PIO11 を Floating or L レベルにする。
  • リンクが確立すると 自動的に transparrent data mode になる。
    ※ AT command mode にするには、PIO11 を pull-up しないといけないらしい。
     - あるいは BREAK 送出? よくわからない。

    上記の回路例では、Floating になっている。LED の割り当ても違うし、KEY (リンク確立のリクエスト)もある。
     - ファームウェアが違うのかも?

    • ただし、回路例が自分でポートを制御するのを意図しているなら LED や KEY は関係ない。
    • transparrent data mode だけは、ファームウェアが関係ある。
      .. といっても pull-up されていたりするだけかも知れない。
      .. あるいは、記載のほうが間違っている可能性まである。
      .. あるいは、BREAK 送出とか別の手段があるのかも。
      いずれにしても、PIO11 は要チェック。

    添付されていた回路例:


    old firmware 版について。

    old/new 両方に AT+VERSION? コマンド がある。だが、それを見てもどちらなのか判断できる情報がない。

    old firmware は、AT+UARTMODE? があるが、new firmware は、AT+UART? で機能も違う。まずは、これで判断して、どちらか見極められそう。

    もし、old firmware だとすると PORT 操作などはできないようだ。コマンド体系も結構違う。

    どうも old firmware は、master になれないような... inquiry のコマンドがないし接続先を指定するコマンドもない。

    最初の eBay の Q and A に書いてあった。slave にしかなれないそうだ。ようするに 2 つ買っても お互いに接続できない。

    new firmware だと master mode があって、相手を選んで接続できる。ただし、リンクは 1:1 -- 複数の slave とは接続できない。

    さらにさらに。第三の資料が見つかった。

    E'go china に slave onlyのモジュール があって、pdf がダウンロードできた。それを見ると回路図とかが買ったモジュールと合致する。

    で、説明にある AT コマンド の種類は少ない。CLASS も設定できないようだ。

CSR BC417143 (BlueCore4-External) について

    Programming CSR Bluecore chip に面白いことが書いてある。どうも、パラレルポートのライタで、SPI を通して BlueCore4-External の firmware を セーブしたり書き戻したりできるようだ。ただし、それをするのに BlueLab というソフトが必要らしい。

    で、BlueLab は、csr の開発環境で $3000 もするものだった。
    単に 読み書きするようなものなら、他にあるんじゃないかと思うのだが..

    De-bricking your Bluetooth Dongle というところを見たのだが、そういうものはないらしい。

    BlueCore4 External の データシート を探したら 見つかった。

    SPI の仕様は書いてあった。16bit アドレスに対して 16bit 単位で 読み書きできる。... だが 書いてあるのはそれだけ。

    FLASH は、8Mbit で 16bit データ幅なら アドレスは 18bit 必要。... どうも何か情報が足りないのだ。
    多分 FLASH を制御する レジスタがあって、そこに対して READ/WRITE しないといけないんじゃないだろうか?

    お手軽に Firmware を書き込むというわけにはいかないようだ。残念。

    さらに探したら、Radio Datacom というところがヒットした。Firmware の書き換えの方法を説明した pdf が置いてあって、Radio Datacom のモジュール用だがファームウェアも置いてある。このファームウェアは上記のものとは全然違う AT コマンド体系だが、HCI モードも持っている。

    Firmware の書き換えの説明では、SPI を推奨していた。(このファームウェアの)Serial にも Dfu があるが、失敗しやすいとのこと。それはともかく、書き換えのツールには、Bluelab に含まれているらしき BlueFlash を使う説明になっていた。だが、kcToolKitV4.1 というのもダウンロード出来る。なにやら書き換えのツールも含まれているかんじ。

    241664 Dec 11 2008 bc5fm.dll
    77824 Jan 6 2006 cclspi.dll
    114688 Dec 11 2008 flash.dll
    28672 Jan 6 2006 spi.dll
    13824 Dec 11 2008 spilpt.dll
    28672 Dec 11 2008 usbspi.dll

    dll を見るとこのあたりが、それっぽい。届いたら書き換えを試してみたい。

    同じチップセットで 同じ Class 2 なら、回路は恐らく同じ。PIO/AIO は、名前が変わっているものの数は同じで、内部で使用していない。書き込めば動きそう。
      ちょっと説明 -- KC21 で PIO は 0-10,13-15 があるが チップセットの PIO は 0-10 (と AIO 0-2)
      で兼用機能は、番号が決まっている。

      PIO_0 Connection
      PIO_1 Power
      PIO_2 RXD passthrough (PIO7)
      PIO_3 -
      PIO_4 Activity
      PIO_5 CTS passthrough (PIO6)
      PIO_6 RTS passthrough (PIO5)
      PIO_7 ADC,DAC (AIO 0 or 1 ?)
      PIO_8 -
      PIO_9 Class 1 RX Enable (PIO0)
      PIO_10 Class 1 TX Enable (PIO1)
      PIO_13 -
      PIO_14 ADC,DAC (AIO 0 or 1 ?)
      PIO_15 TXD pass (PIO4)

      分かっているのをマッピングしてみるとこんな風になる。ちなみに AIO は、8bit の DAC / ADC の機能がある。
      ちなみに、書き込むには ライタが必要だが、Programming CSR Bluecore chip に パラレルポート用の回路図がある。
      パラレルポートがあるPC じゃないと出来ないのは面倒だが、調べれば、どういう風に SPI の制御をしているか分かるかも。

      (載っていた回路図)
      プリンタポート の信号
      2 OUT D0
      8 OUT D6
      9 OUT D7
      10 IN #ACK
      16 OUT #INIT (不要?)
      18-25 GND


    追記 2010/11/11

    「ぷちのいず」さんのコメントより。

    SzParts.com の Bluetooth BC417143 SPIライタ (2250円) は、上記 パラレルポート用ライタとピン割り当てが同じっぽく 純正のツールが使える。

    買うと、PSTool という設定ソフトが ゲットできるらしい。

      BlueZ に bccom という同じようなツールがあるが、設定できる項目の数が全然違う。あと、当然ながら SPI に対応している (bccom は未対応)。

    で、思ったのだが firmware(プログラム)だけ書き換えられても、設定をどうにかしないと動かないのでは?
    なら、PSTool は是非にでも入手しておかないといけないのかも知れない。

    実をいうと goodluckbuy.com のに加えて E'go china のも入手中。firmware 入れ替えたりしようと目論んだわけだ。そのうえこれも買うことになりそう。なんだか 散財しまくりだが .. まぁいいのだ。なんか面白そうだし。

    追記:モジュール入手
    goodluckbuy.com は、11/6(土) に発注し、11/8 発送 11/13 受け取り(発送元: 中国/SHENZHEN)。 E'go china のは、11/8 発注 11/8 発送 11/16 受け取り(発送元: シンガポール)

      ちなみに、(firmware 以外) パターンすら同じもの 。 E'go china の 写真が一番近い。E'go china の水晶は黒で / goodluckbuy.com は銀 -- これだけが違う。

    早く着いたのは良いのだが、準備ができていない。... ケーブルを直ハンダするのは、パターンが剥がれるのが怖いし。しっかり基板に固定すると 実際に使うときに困りそう。

    なにか治具が作れないか検討中。

      Fusion PCB で、プリント基板を作ってみることにした。
    • bc04extmod-01.zip -- 全部入り
    • bc04extmod-01-out.zip -- 提出ファイル
      でっち上げに近く、いろいろダメなところがありそうだが、安いから出してみることにした。

      bc04extmod ボード(サイズ 43.8 x 26.7)

    • 出来上がったのは、こんなやつ。使いたい端子を 2.54mm ピッチに変換。
    • ランドは大きめにして、(なにか端子を付けることで)治具になるように考慮した。
    • あと、最終的に I2C で制御したいので、ATmega88 (TQFP) を載せられるようにした。
      (あんまり推敲していないので)ATmega88周りはバグがあると思うが、とにかく作ってみたかったのでとりあえず形にした。
    • 余白がある変な形状だが、これは ターゲットの中華PMP のバッテリーのサイズに合わせたため。縦横は余裕があるが、厚みが厳しい。基板を 0.8mm 厚 にしてもらおうとは思っているが、裏に部品を付けたら収まらなさそう。

        CN1/CN2/CN3 は、単にピッチ変換
        CN4 は、ATmega88 用インターフェイス ISP と I2C 。
        ATmega88 の SPI を モジュールのSPI に接続(SPI + SS) 、シリアル(TX/RX) も 接続。CTS/RTS/RESET も一応接続している。(PD3/PD2/PC2)
        水晶は、FA238 。-- 付けるつもりはないが、内蔵RC で同期が取れなかったときの対策。
        LED は付けられるようにしたが、どこと接続するか決められなかったので、CN2 に接続。パーツは、SEC2764C1608タイプ x2 。
        治具にするときは、LEDやダイオードの足を付けるとか ...

    • bc04extmod-03.zip
    • bc04extmod-03-out.zip

      もう出してしまったので手遅れなんだが、あまりにひどいので修正版を作った。コネクタの位置を修正したり、5V 入力できるようにしたり .. (でも回路図自体はチェックしてない)

      • シリアルには、AE-UM232Rを使う予定なのだが、3.3V の供給能力は弱い(30mA)。別に レギュレータが必要だろうということで付けることにした。
      • 5V → 3.3V の レギュレータは、TAR5SB33 にした。
      • 移動したコネクタ(1) CN1 -- 下に 0.1 inch ずらして、NC を移動し 5V 入力に割り当て。
      • 移動したコネクタ(2) CN3/CN4 -- 0.05 inch 下にずらしてアライメントを合わせた。

      -- 実は手違いで最初のやつは送れてなかった。メールが来たので、すかさず 03版を送付。
      -- 03 版はそのまま受け取ってもらえた。既に製造中らしい。


        追記: Fusion PCB を扱っている www.seeedstudio.com で Bluetooth Beeというのを扱っている。あきらかに同じモジュール。(ファームウェアは違うかも知れない) これも ピッチ変換ではある。こういう風にする手もあったのか。まぁ 2mm ピッチにする理由がないから こうはしないけど。

      2010/11/30 到着:


      変換基板なので、ランドが正しく配置されていないと無意味になってしまう。少々不安だったのだが安心した。

      写真は両面テープで貼って合わせただけのもの。モジュールは直接ハンダ付けしないで、うまく付けられるようにしようと思う。『治具(ジグ)の考察』の記事に顛末を載せるつもり。ちなみに Atmega88 という MCU を載せられるよにはしているが、まずは 治具 のための変換基板として使う。秋月 C 基板(片面)に、これと シリアル変換と パラレルポートを載せられるとよいなぁと思っている。
posted by すz at 00:23| Comment(1) | TrackBack(0) | 日記

2010年05月15日

格安 Bluetooth ドングル

DealExtreme で Bluetooth ドングルが $1.93 と格安で売っている -- Free shipping なので本当にその値段で入手可能 。こいつをいろんな電子工作で使えると嬉しいのだが ... どうにかできないだろうか。

USB HOST の機能をもったマイクロコントローラを使うのが素直な考えかただと思うが、AVR だと AT90USB1287/AT90USB647 しかない。ちょっと高いうえに入手に難がある。

他のマイクロコントローラではどういうものがあるのか探してみた。0.5mm ピッチ以外という条件だと、


が見つかった。PIC24FJ32GB002 は、DIP または SOIC 28pin で扱い易そうな上に DIP 452円と 安い。

PIC であれこれ工夫して作るのは嫌だったりするのだが、例えば HCI USB を HCI UART に変換するチップと思えば許容範囲かも知れない。

ちなみに、あれこれ工夫して作ってる人は既にいるようだ。→「想いのほか楽しい人生」

ところで、格安 Bluetooth ドングルの中はどうなっているのだろう? 入手できたので中を見てみた。


    (写真はこちらから転載)
    ちなみに、裏の部品は円筒形の水晶のみ。

チップは、0.5mm ピッチ? 48pin。CONWISE CW6626M と印刷されていた。CW6626M の情報は見つけられていないが、COMWISE の サイト http://www.conwise.com.tw/big5/wireless.htm には、CW6621 の説明がある。-- たぶん格安ドングルはみな COMWISE なのだろう。


    ちなみに、USB 的には VID 0A12 PID 0001 という風に見える。 VID 0A12 は、Bluecore を出している CSR のことだから 詐称しているような... Microsoft のスタックをそのまま使うためだろうけれど、黙認されているのだろうか?

チップ自体には、UART や SPI インターフェイスがあるようだ。ピンアサインが分からないし、分かったところでチップが小さいのでどうにか出来るような気がしないのだが 一応書いておく。

    未使用ピンが多数ある。0.5mm ピッチなら、ピンアサインさえ分ればなんとか出来る人もいそう。


やはり素直に USB から使うのが良さそうだ。... ただ 3.3V で使いたいところ。でも 3.3v のレギュレータも builtin だそうだからそれも無理かも知れない。


    思い出した。-- これは SmartQ 5 の BlueTooth 。よくよく見れば同じもの。ケーブルの変なつなぎ方から見て 3.3V を直接入力していると思うのだが どうだろう。


    注意!: フォーラムに 「Idential Bluetooth ID numbers」という スレッドがある。
    どうも、すべての MAC アドレスが 00:15:83:15:a3:10 で変更も出来ないらしい。
    まともなデバイスなら 「Change or Modify Bluetooth Device hardware (MAC) address」の記事のやりかたが使えるらしいのだが ... これは無理だそうだ。

    この製品ではないが、こういう EEPROM が載るタイプのものもあるようなので、CW6626 なら絶対無理なのかというと よくわからない。

    追記: 3.46 ドルの ドングルを買ってみた。

    DX で扱ってっいる 超小型格安の 2.0 USB ドングルは全滅だそうなので、試しに 大きめのを買ってみた。

    これも、簡単に分解できるので基板を見てみたところ、8pin の EEPROM らしき IC が載っていた。こちらは ID の問題はなさそう。

    ちなみにアンテナらしきものは、ただのプラスチックの飾り。

ところで、DealExtreme だが、電子工作向けのお薦め品がいくつかあるので紹介しておく。

おまけ forcalprice で見つけたもの
posted by すz at 01:30| Comment(0) | TrackBack(0) | 日記

2010年04月25日

TN-8102BC

aitendo の 特売 LCDモジュール TN-8102BCを買ってみた。詳細不明なわけだが、なんとなくピンアサインは分かるに違いないとタカをくくって買ってみたわけだ。

なぜこれが使いたいかと言うと、消費電力がケタ違いに少ないから。普通のキャラクタ液晶だと カタログスペックで 1mA ほどありバッテリ駆動で 常時 ON にするのには厳しい。ストロベリー・リナックスの I2C液晶が その 1/4 の 250uA だが、さらにその数分の一が期待できる。

    データシートには、80 uA という記載があった。もも さんのコメントでは、CPU 込み 実測 550 uA なので 200 uA 以下にはなっているだろうとのこと。



来たモジュールは、透明なプラスチックの枠に入っていた。上部にはスピーカーが入るように見える。PHS とかで使うためのものは明らか。PHS 用の 白黒液晶? ... となると大分昔に作られたように思う。

液晶面には、保護用のフィルム。中古と書いてあるが 新品ではないかと思う。



内部のモジュールを取り外してみた。モジュールはかなり薄い。裏をみると チップが見える。COG -- Chip on glass の液晶モジュールだ。chip があるだけで他の部品は一切ない。もちろんバックライトなし。あと、光にかざすと透ける。

ピン配置の調査1


さて、液晶モジュールにはコンデンサが普通必要で TFTカラー液晶などは、フレキに載っていたりする。... がこれは一切ない。

ということは コンデンサを接続する線も出ているということで白黒なのにピン数が多いのはそれが理由のはず。

例えば上のリンクのメーカの製品だと 30pin もあって いくつかのコンデンサ用の線があり、さらに V1-V5 という線(出力?)もある。

COG のチップの種類もたくさんあるようだ。ただ PHS 用ならグラフィックだろうし それなりの解像度のはず。縦 32dot とかは除外して良さそう。

で、いろいろ探してみたのだが、26 pin で両脇が NC というものは見つけられていない。最近の TFT は共通なピンアサインのものが割と多かったのだが、結構バラバラ。18 pin や 20 pin のものが多い印象。

どうやって探せば良いものか途方にくれた訳だが幸い チップそのものは見える。



写真は 上がフレキ側。チップのサイズは 横 8mm 弱 / 縦 3mm 前後。大きめのパッド が 16 個あるのが特徴的。あと全体のパッドの数は 200 個もありそうになく少ないように思う。

HD66741が近いかもしれない。ちゃんと突き合わせてみよう。ただ、これだと分かったとしても、ピンアサインまでは分からない。チップの順番に並べているのだとは思うが、間引いているはずで、どれが間引かれているのか見当が付かない。VDD と GND さえ分かれば試行錯誤できそうだが、現時点ではそれもわからない。

HD66741 で必要そうな信号線。

    IM1 IM2 IM0
    OPOFF
    DB7-DB0
    RESET
    CS
    RS
    E/WR/SCL
    RW/RD/SDA
    GND
    VCC
    C4+ C4- (昇圧チャージポンプ用)
    C3+ C3- (昇圧チャージポンプ用)
    C2+ C2- (昇圧チャージポンプ用)
    C1+ C1- (昇圧チャージポンプ用)
    VLCD

これで 28pin 分。24 pin だと 4 pin も間引かないといけない。あと OSC1/OSC2 は既に省いているが、抵抗を外付けしないといけないのかも。ちなみにデータバスが 8bit とは限らない。例によって 4bit モードも存在する。I2C はないがシリアルもある。その場合 データバスも不要。あと、昇圧チャージポンプ用コンデンサは 5倍昇圧しなければ C4 は不要だったりする。

突き合わせてみた。

データシートには、チップのサイズが載っているのだが、8mm x 3mm ぐらいのチップは見つけることもできなかった。大概は 10mm 以上 あって 逆に幅が狭い。

チップを見つけることが第一歩だと思ったのだが ... 全然だめ。困った。

ピン配置の調査2


あれ... ひょっとしてこれ?



サイズは 7.70 x 2.77 かつ大きなパッドが 16 個。かつ トータルPAD 数が 200 以下。

ちなみに、これを見つけるまでにチェックしたチップのリスト -- 近いものすらなかった。

    HD66705U 9.69 2.73
    HD66717 10.88 2.89
    HD66727 11.39 2.89
    HD66724 10.34 2.51
    HD66725 11.97 2.51
    HD66726 13.13 2.51
    HD66728 13.67 2.78
    HD66729 12.23 2.52
    HD66741 14.30 2.78
    HD66750 10.97 4.13
    HD66751 10.97 4.13
    HD66751S 8.42 3.18
    HD66750S 8.44 2.95
    HD66752 12.68 4.31
    HD66753 15.90 2.02
    HD66732 12.68 4.31
    SED1520 7.04 4.80
    SED1526 5.92 4.68
    SED1530 6.65 4.57
    SED1560 8.08 5.28
    SED1565 10.82 2.81
    SED1570 8.04 3.51
    S6A0093 7.02 1.62
    S6B0721 9.64 2.02
    S6B0724 9.68 2.03
    ST7533 7.24 1.00
    ST7541 12.575 1.22
    ST7545T 8.20 1.02
    ST7548T 8.20 1.02
    ST7565R 5.90 1.00
    PCF8811 12.409 2.271
    PCF8813 10.845 1.845
    ML9042 7.8 1.8
    ST7575 5.57 0.77
    SSD1815 10.977 1.912
    S1D12200 7.70 2.77
    S1D12205 7.85 1.97
    S1D12300 10.23 3.11
    S1D12304 10.23 3.11
    S1D12400 8.70 2.80
    S1D15300 6.65 4.57
    S1D15200 7.04 4.80
    S1D15210 7.04 4.80
    S1D15400D 7.04 4.80
    S1D15600 8.08 5.28
    S1D15605 10.82 2.81
    S1D15700 8.04 3.51
    S1D15705 13.30 2.81
    S1D15710 16.65 2.90
    S1D15A06 9.93 2.15
    S1D15801 10.82 2.81
    NJU6636 5.33 2.08
    NJU6676 8.72 2.37


データシートは、openpdf.com でサーチ。

チップの型番は、S1D12202D(SED1222D) 。データシートの日付は 2001年(1998年) で相当に古い感じ。

これでないとしたら、同じぐらいの数をチェックしないと見つからないだろうし ... これだと決めることにする。違っていたら諦めることにしよう。

さて、これはどんな機能なのだろう?

  • 供給電圧(ロジック) 2.4v - 3.6V
  • 供給電圧(LCD) 4.0v - 7.0V
  • 消費電流 80uA
  • Duty 1/18
  • インターフェイス 8bit/4bit/シリアル
  • segment 60 common 18


ガーン。12 桁 2 行の キャラクタディスプレーだった。--- 消費電力が極端に少ない表示器が欲しかったので、表現力はまぁいいや。

気をとりなおして、チップの PIN アサイン

    x2 昇圧 x3 昇圧
    1 A0   
    2 /WR(E)
    3 CS
    4 D7(SI)
    5 D6(SCL)
    6 D5
    7 D4
    8 D3
    9 D2
    10 D1
    11 D0
    12 VDD     
    13 VSS
    14 V5 o o
    16 V4 o o
    16 V3 o o
    17 V2 o o
    18 V1 o o
    19 V0 o o
    20 VR o o
    21 VOUT o o
    22 CAP2- o
    23 CAP2+ o
    24 CAP1- o o
    25 CAP1+ o o
    26 VSS
    27 VDD
    28 /CK
    29 VS1 o o
    30 P/S
    31 I/F
    32 RES
    34 VDD


1番ピンから A0(RS ?) で 必要そうな感じ。... で並べていくと 34 ピンにもなってしまう。10 ピンも間引かなければ 24 ピンにならない。あと 12- 27 は大パッドなので間引かないのではないか .. と想像できる。V1-V5 などはコンデンサを接続することになっていて間引けなさそう。

さぁピンを確定するにはどうしたら良いのだろう?

VDD/VSS が分かればあるいは ... だいたい決まりそうな気がするが .... VDD や VSS が 二ヶ所にあるならば、抵抗値を測定することで VDD や VDD の位置を決められるかも。

ちなみに、透明電極の配線自体が見えれば分かりそうなものなのだが、残念ながら全然わからない。

追記:

透明電極の配線がなんとか見えた。1-11 の間で 7 本。... ということは D0-D3 が配線されていない。12-27 は、均等に配線されているが 15 本のみ。たぶん 12/13 のどちらかが配線されていない。28 - 34 で 2 本。VS1 が必須だとすれば残りは何? RES だとは思うが、P/S だったりするかも(願望)。

    追記: コメントでももさんから情報を得たので訂正。

文字が入っているほうを1番ピンとして、まとめるとこう。

    1 NC
    2 RES (0: 68 interface 1: 80 interface)
    3 IF
    4 VS1 ( -- 1u -- VDD )
    5 CAP1+ ( --- 1u -- CAP2-)
    6 CAP1-
    7 CAP2+ ( --- 1u -- CAP2-)
    8 CAP2-
    9 VOUT ( -- 1u -- VDD )
    10 VR ( VDD --- Ra -- VR -- Rb -- V5 )
    11 V0 (= VDD )
    12 V1 (1/5 x V5, -- 0.1u -- VDD)
    13 V2 (2/5 x V5, -- 0.1u -- VDD)
    14 V3 (3/5 x V5, -- 0.1u -- VDD)
    15 V4 (4/5 x V5, -- 0.1u -- VDD)
    16 V5 ( -- 0.1u -- VDD)
    17 VSS
    18 VDD
    19 D4
    20 D5
    21 D6
    22 D7
    23 CS
    24 /WR(E)
    25 A0 (RS 0:CMD 1:DATA)
    26 NC

  • 1u と書いてあるのは、0.1uF - 4.7uF の範囲。
  • Ra/Rb は コントラスト調整用。レジスタによって調整できるので 固定抵抗でも可。Ra + Rb の目安は 1MΩ前後。Ra:Rb は、1:1 か 1:2 か ? よくわからないが そのあたりで試してみるのが良さそう。
  • V1-V4 は無接続でも良さそうな気がする。(追記: 無接続で良いらしい)

ちょっとメモ。



0.8mm ピッチの変換基板IFB-ZY-FGD1442701V1に貼り付けるとすると ..

    -- [0] [9] --
    NC [8] [7] A0
    WR [6] [5] CS
    D7 [4] [3] D6
    D5 [2] [1] D4
    VDD [0] [9] VSS
    VDD -0.1u- V5 [8] [7] V4 -0.1u- VDD
    VDD -0.1u- V3 [6] [5] V2 -0.1u- VDD
    VDD -0.1u- V1 [4] [3] V0 ------ VDD
    VR [2] [1] VOUT-0.1u- VDD
    CAP2- [0] [9] CAP2
    CAP1- [8] [7] CAP1
    VDD -1u- VS1 [6] [5] IF
    RES [4] [3] NC
    -- [2] [1] --

    ( VDD --- Ra -- VR -- Rb -- V5 )

こんな配置か。2mm のところを使って必要な 部品を付けるのも良いかも。CAP1/CAP2 は問題ない。
VDD - VSS もいける。V1-V5 , VS1 のコンデンサはなくても OK 。他の VOUT/VR は厳しいか。

追記: 電子工作マスターへの歩み:液晶モジュールの解析(TN-8102BC) なんて記事を発見。配線がわかりそうな(?)写真も載っている

私の解析は、中途半端なまま中断しているが、是非動かすところまで行って欲しい

追記: 50円カラー液晶 LCD018-05P28P の解析

    (ももさんのコメントから) LCD018-05P28P まで解析できたそうだ。

    コントローラは、HD66766 で、STN 128RGB*160 だそうだ。

    ピンの配置は、

    1 LED(+)
    2 LED(-)
    3 GND
    4 D15
    : :
    19 D0
    20 /RD
    21 /WR
    22 /RS(A0)
    23 /CD
    24 VDD
    25 GND
    26 /RES
    27 VREF
    28 GND

    だそうだ。

    それにしても、どうやって解析したのだろう? コントローラの目星が付けられば、コンデンサの位置とかから、かなり絞れるものの ... 相当に大変な作業だ。

    さて こいつのコネクタは、0.5mm ピッチ 28P 。新品を購入して基板を起こす... なんてことをするなら、デジキーの FH33-28S あたりを使う? コネクタの単価は 167 円で 結構する。10 個買っても 単価 139 円であまり下がらない。

    手配線でなんとかするなら、aitendo の 26P の変換ボード を使うしかないかも知れない。液晶側は LED の部分をカットする ... とか。

    ただ、接続をクリアしても 16bit パラレルでしかアクセスできない。 AVR で扱うにはちょっと厳しい。
posted by すz at 20:47| Comment(6) | TrackBack(0) | 日記

2010年02月28日

2.8インチ液晶 EGO028Q02

aitendo で扱っている 2.8インチTFT 液晶 EGO028Q02 が気になっている。解像度が 320x240 で AVR の手に余るのだが、なかなか良さそうだ。


なにが良いかというと

  • TFT で綺麗。視野角も広い。
  • タッチパネル付き。
  • 3.3V でドライブできる。-- バックライトも 3.2V - 3.4V 。
  • 比較的安い 1980円。タッチパネルも利用するなら格安かも。
  • ちょっと改造するだけで、8bit パラレルにできるらしい。
    EGO028Q02 8ビット MPU I/F化 成功!!
    R3 の抵抗を R4 に移すだけ。
  • コネクタが 1mm ピッチフレキ。


この液晶のサイズは、50.0 x 69.2 x 4.05 だそうだ。C 基板より少しだけ幅がある。

C 基板サイズで思い出したのだが、千石でも扱っている RFAD のケースに入りそう。MK8260 は 外寸:82× 60×20mm 内寸: 76× 54×12mm 。ガラス板は、ABS の枠を下から当てて止めている。この枠は瞬間接着剤で接着してあるような感じだが、なんとか外せる。(彫刻刀の平刀をタガネ代わりにする/はがし液(アセトン)は×)

    彫刻刀は、中央は半丸刀をつかって、端は薄刃の平刀をつかっている。(どちらもダイソー)。半丸刀は、隙間を広げていくのに具合が良いが端の処理ができない。端は薄刃のほうが具合が良い。



    関係ないが、RFAD のサイトで、パワーLED用アルミ基板を扱ってた。秋月の1W/3W出力LEDが付けられるようだ。



    NEWランチャーライト改造ネタに良いかも。


    大きさは 20mm 。一方 NEWランチャーライトの内径は φ22mm ぐらい。入るのは良いが、熱を外に伝える方法を考えないと。


次の基板設計のネタにしたい。

ちなみに、2.4 inch の YHY024006A も同じ機能。コントローラチップも同じでピンアサインも同じ(ピッチは 0.8mm で違う)。8bit パラレルに改造できるのも同じ (R2 を R1 に付け替え) 基板を設計するならこれもつなげられるようにしたい。



基板サイズは、50 x 72 ?

CPU は xmega256A3/192A3 にしたいところだが... それでいったい何をするのかが問題だ。

    理由は 0.8mm ピッチで最大のものだから。D4は、RAM が少ないし、ADC が 1つしかない。( DAC も 1 個だが 2ch 出力なので OK)

簡易オシロ?

    XMAGA の ADC は、2つあり 12bit で 最大 2M sps。同期しての採取も可能。... 差動入力もあり利得が 1 倍 〜 64 倍まで、 符号付きも OK。さらに 内部 1.0V 基準電圧 はデータシートによると非常に正確だそうだ。
    DMA も使えるから CPU の負荷も減らせる。

    メモリが少ないし演算能力も相対的に低いので 簡易オシロにしかならないが、なかなか良さそう。

      メモリは、xmega256A3/192A3 が 16KB 。
      ちなみに DMA は 直接 SPI とかに送ることも可能。あまりわかっていないのだが、2 バイト x 2ch を送るのも可能なような感じ。相手が SPI RAM とか なら 2M bytes/sec (2ch 12bit なら 500ksps) で 32KB 連続で書き込むことは可能。
      microSD では、連続で書けるのは セクタサイズまでなのでバッファリングしないといけない。ただ microSD 内部に書き込みバッファがあるので、工夫すれば MB クラスの量を途切れなく書き込める(はず)。あと、たいがいの シリアルフラッシュは連続書き込みは遅い。


    入力部は、こんな風にオペアンプを入れようと思う。


    ここでは AREF=1.0V と仮定。そして、AREFを仮想グランドにする。増幅度が 1/10 になるから フルスケール -9V 〜 +11V 。Rail-to-Rail のオペアンプでなければ もっと範囲は狭くなる。

      11V だと オペアンプの出力は AREF を基準にして -1V .. すなわち 0V 。差動入力 ADC から見れば +1V だから MAX 値。

      -9 V だと オペアンプの出力は AREF を基準にして +1V。差動入力 ADC から見れば -1V だから、両極モードで測定する。

      ADC の利得は、8 倍まで。そうしないと 0V も測定できなくなる。カップリングコンデンサを enable にすれば AC しか測定できないが、利得は 64倍まで OK。AC/DC モード の切り替えは アナログスイッチ(SN74HC4066D,74LVC4066Dなど)を使おうと思う。

      1M + 0.1uF の直列 は HPF で cut-off 周波数は、1.6 Hz。

      オペアンプの (+) 入力 は、R1 // R2 (合成抵抗値) の抵抗を通して 仮想グランドに接続すると良いらしい。R1 = 1M, R2 = 100K だと 合成抵抗値は 90K 。基準電圧の インピーダンスが 高い場合は、ボルテージフォロワとかで増幅する。



      低電圧で動作するオペアンプは選択枝が少ない。0.65mm ピッチの LMV358 ぐらいしか安く買えない。これでも 帯域幅 1 MHz あるし、RAIL-to-RAIL 出力だし 問題ないように思う。ADC の性能 以上は無意味だし。一応 デジキーで これ以上の帯域のものを探してみたが、TS972 , MCP6022ぐらい?

      実は、内部基準電圧は外部に引き出せない。外部基準電圧を使う場合 1.2V の方が具合が良い。1.0V で検討してみたが、たぶん 1.2V に変更する。

      ところで、A4 は、ADC が 1つしかないから選択しないと書いた。同時に採取できないと思ったためだが、条件を付ければ同時採取が可能。ADC 1 つにチャネルが 4 つある。ch0/ch1 は、利得のない差動増幅器付きで、ch2/ch3 は、利得付き。利得なし と 利得ありは、同時に採取できる。よくわかっていないのだが、ch0/ch1/ch3 の同時起動 または全チャネルの同時起動で ch1/ch2 が同時採取になるみたい。


ロジアナ?

    8ch で 数M sps で良いのならロジアナも可能かも知れない。こちらも メモリがネック。

      事象システムとDMA を組み合わせる。事象システムで 4clock の遅延がある。... となると 最大でも 8M sps ぐらい?

      あと外付けラッチを付けないと 数クロック遅れて採取することになる。定期的に採取するなら PWM でラッチを制御する。

        ラッチは 透過モードと 3state がある 74LVC573AM が 良さそう。5V トレラントだし。

        OE=L , LE=H で、入力がスルーになる。LE=L にすると、そのときの値を HOLD 。トリガにした場合は、XMEGA が受け取るまで (120ns) L レベルを保つ必要がある。入力をスルーにした場合でも、レベル変換のバッファとして役に立つ。OE=H にすれば Hi-Z になるので、PORT を他の目的に使用できる。

        機能は良いのだが、20pin SOIC は 幅がある。0.65 mm ピッチは嫌なのだが ... うーん。

      あと 数クロック遅れて良いなら、トリガの自由度を高くできる。

      ポートを複数つかっての同時採取はできそう。ただやっぱりメモリが厳しい。

    SDRAM を付ければメモリの問題は一気に解決するわけだが ... そこまでしたいなら XPLAIN を買う。

音源とかプレーヤーとか?

    DAC も 付いているし取り敢えずサウンド出力は付けるだろう。... そうなると MicroSD も一応付けたくなる。

    DAC に 負帰還のアンプが付いているようだから カップリングコンデンサを入れるだけで ヘッドホン出力ぐらいは出来そう。

    カップリングコンデンサは場所を取る。いっそのこと BTL とかにできないか。(低耐圧の大容量セラコンは波形が歪むから良くないらしい。耐圧は 25Vぐらい欲しい)

パラレル出力

    PORT A,B は、ADC/DAC 用として割り当てる。それ以外はデジタル。いろいろなデバイスと兼用になっているわけだが、同じ種類のデバイスが複数あるので、条件は少ない。パラレル出力用に PORTF あたりを割り当てれば良さそう。

    ところで、DMA で出力するには、起動するためのタイミングが必要。パラレルの場合データを出力するだけなので、それ自体にはタイミングがない。たぶん PWM を使って nWR のパルスを作り、nWR の __↑~~ に合わせて DMA で次のデータを出力するのだろう。PWM を止めるのも 事象システム+DMA 。DMA 完了で PWM を止めるためのデータを転送する。

    ちなみに、ILI9320 のデータシートには、nWR のパルス幅は 50ns 以上、WRITE サイクルタイムは、100ns 以上と書いてある。DMA がどれぐらい遅延するか見極めないと周期が決められないので要注意。
    ( PORTに事象0 を出力する機能を使って nWR を作ろうかと思ったのだが、1clock 30ns のパルス幅なので厳しい。)

タッチパネル

    タッチパネルも 自前の ADC で制御したい。コントローラとして、ADS7843があるので、データシートをちゃんと読めばどうするのが良いかわかるはず。

    ... どうも 測定しない方 に 電圧をかけて 分圧した電圧を AREF=VCC で測定すれば良いらしい。

    X+    X- Y+ Y-
    PORT(H) PORT(L) ADC
     ADC     PORT(H) PORT(L)

    この程度の処理なら、AVR の ADC で十分そうだ。


ホスト インターフェイス

    やはり、USART か。自作ボードの DAC23-U4 か SRT162B をつなぎたい。この 2 つのボードは USART のピン配置を同じにしている。

    PDI にもつなげておけば、書き換えも出来るようにはなる。普通はブートローダ使うのだろうけど。それを作ったりもしたいから PDI も欲しい。

    DAC23-U4 の場合、ADC も 4ch コネクタに出しているし、SPI も使える。単独で液晶を制御できても良いかもしれない。

    液晶のコントローラ ILI9320 自体は、SPI をサポートしているのだが、SPI に設定する IM1/IM2 がアサインされていない。フレキ上になにか抵抗があれば、あるいは設定可能だったりするのかも。

    XMEGA の方でも パラレルでDMA するのはなにかと面倒なので、結局 SPI の方が高速になったりするような気がする。どうにかならないものか。

    ... フレキの上にある抵抗は 1 個しかない。どうやっても無理そうだ。


追記:

サイズを確認するためのデータを作成。



一番外が RFAD ケースの内寸 -1mm 。基板の最大サイズ。四方に穴があいているのが C 基板のサイズ。コネクタは、dac23-mega とか dac23-u4 に合わせた。

2.8インチTFT 液晶 EGO028Q02 と 2.4 inch の YHY024006A の両方を載せられるようにするのは無理がありそうだ。そして、YHY024006Aの方が収まりが良い。他のものと干渉しないし、C 基板にフィットしている。

YHY024006A を使うことを考えようかと思う。--- というわけで確保。EGO028Q02 の方は忘れよう。

ところで、バックライト LED が 3つ4つあり、アノードコモンになっている。明るさにバラツキが出るのは面白くないし、ちょっとドライバは凝りたい。

普通は個別に電流制限抵抗を付けるそうだ。そうすると Vf より少々 高い電圧が必要になる。Vf はばらつくのが普通だから、電流を揃えるのは面倒そうだ。探したら、STP08DP05MTRというのを見つけた。8bit の ラッチ付きシフトレジスタなのだが、出力に定電流回路がある。出力を LEDK1/2/3/4 に直結できて良いかも。他にも同じピン配置の TLC5916CAT4008Wなどがあり定番の IC らしい。



LMV358を使った定電流回路でも良いかも知れない。安いし小さくて場所を取らない。

    ちなみに、大電流を流す場合は、トランジスタや MOS FET を追加する。



    あ、LED はアノードコモンだった。トランジスタを入れないと使えない。... そうすると場所を取る。... ボツ。

追記:ちょっと考えかたを変えた。

いろいろ検討してきたが、すべてを載せるのは無理そう。

とりあえずは、DAC23-U4 ボードをマウントして使う場合に便利なものを載せて、I/O ボードとして考える。その上で、XMEGA も同じようにマウントできるようなことを考えよう。

そして、DAC23-U4 ボードで効率良く使うために SPI でインターフェイスする。SPI → パラレルは、CPLD で 設計する。

CPLD は、XC2C64A 。32A でも、SPI 機能 に十分そうだが、もう少し付加機能を入れたい。

もともとある SPI 機能互換にするのは能がないので、以前の記事で書いた I2C ディスプレー と同じように、制御バイトを付けて、コマンド / データ を切り分ける。Read をできるようにすべきかどうか あまり考えていない。

付加機能 としては、LED のドライバはどうだろう?

I/O バンクは 2 つあるので、片方を LED 用ドライブ用にする。合計で 60mA 流せるのかどうか? よくわからないものの大丈夫そうな感じ。絶対最大定格は 4.0V で 通常範囲では 最大 3.6V 。Vf は、最大 3.4V だそうだから大丈夫。1 pin あたりは、数 mA しか流れないから 何本か まとめて 1 つの LED に接続する。

クロックを供給して、個別に明るさを調整できる PWM 機能を付ける。8bit は無理で 6bit ぐらいか。クロックは DAC23-U4 の MCLK 用のピンから供給する。

    無理かも知れない。出力 1 つに マクロセル 1 つ 必要だし。そんなことより、余ったら付けるべきは プリスケーラ。AVR は同期入力だから、クロック / 2.5 ぐらいまでの周波数しか入力できない。周波数カウンタとか .. そういうものを作りたい場合 プリスケーラが有用。

基板サイズも決めた。RFADのケースの内寸 + 1mm 〜 1.5mm で作成して、ガラスが入っていたところにマウントする。ケース内部に入れる基板も面付けして同時に作る前提なら、縦方向は 内寸ギリギリでも可。ちなみに、厚さは 1.6t で問題ない。現物で合わせてみた。

    120mm x 120mm に面付けすることを考えると ガラス部分用 + 内部用 に加えて 余った部分に 小ケースの ガラス部分用 + 内部用が作れる。切りしろ (外形線含む)をいれないとこんな感じか。

    76.5 35.5
    +------------------------+---------------+
    | | |
    | | |
    | 大ガラス部分用 |小ガラス部分用 | 56.5
    | | |
    | | |
    +------------------------+---------------+
    | | |
    | | |
    | 大内部用 | 小内部用 | 54.5
    | | |
    | | |
    +------------------------+---------------+

    56.5 mm の部分が ガラス部ぎりぎり。大だと長辺で、小だと短辺。後は内寸に合わせてあるから遊びが大きい。

    ガラス部専用なら

    78.5 37.5
    +------------------------+---------------+
    | | |
    | | |
    | 大ガラス部分用 |小ガラス部分用 | 56.5
    | | |
    | | |
    +------------------------+---------------+
    | | |
    | | |
    | 大ガラス部分用 |小ガラス部分用 | 56.5
    | | |
    | | |
    +------------------------+---------------+

    遊びは、ほんのわずかなので、角をすこしヤスリで削らないといけないかも。両辺合わせたので 上記から -0.5mm しても 問題ないはず。

    小ガラス部分用はなにに使おうか考えていない。


そういうものにしたので、2.8インチTFT 液晶 EGO028Q02の方がやっぱり見栄えがしそう。うーん YHY024006A をいくつか確保したんだが .. 悩ましい。

ところで、サイズを見ていて思ったのだが ... Arduino のサイズは、68.58mm x 53.34mm で RFAD のケースに入る。ピンソケットが 8mm タイプだとしても 内寸の 12mm 以下のはず。

ガラスをつけたまま 保存用ケースとして使えるし、ガラスを取って、ピンソケットだけ露出させるというのもアリかも知れない。

ejackino は、78.74mm x 55.88mm でケースには入らない。だがしかし、DC ジャックが邪魔なものの ガラス部分にはマウントできる。下向きにマウント出来るなら、使わないときの保護ケースになったりして便利かも。

それはともかく、作ろうとしているものが arduino に合うのなら考えねばならない。 japanino。たぶん dac23-u4 とコネクタ位置が 競合しない。

追記: CPLD の回路設計

いろいろ考えてみたわけだが、CPLD の回路が作れなければ話にならない。さて、それは作れるのだろうか?

基本的なことをここでメモしておこうと思う。

SPI は、1 バイトのデータを送るのに CLK に対して 8 回 クロックする。 普通 MSB が先。送信データはお互いに ↓でシフト。受信側では ↑で受け取る。作ろうとしている回路は データが確定したら nWR にパルスを送らなければならない。



CS ~|__________________________________...._|~
_ _ _ _ _ _ _ _
CLK ___| |_| |_| |_| |_| |_| |_| |_| |______

MOSI |MSB| D6| D5| D4| D3| D2| D1| D0|
|
(shift) 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0

______________________________ _________
nWR |_|

どうも nWR の↑で データ採取するようなので、CLK の ↑ で
o シフトレジスタを シフト
o 3 bit のカウンタを +1
 o カウンタ(の今の状態) が 7 のとき nWR = ~CLK , それ以外で H


RS を外から指定する前提なら 8bit のシフトレジスタ と 3bit のカウンタで事足りる。ちなみに CS は リセット 。

さて、制御バイト を追加して、RS を内部で作り出すには ...

まず、状態として RS と nCB , nCONT を新たに作り、以下の動作を カウンタ(の今の状態) が 7 のとき 行う。

  o nCB が 0 のとき、RS=D7 (シフトレジスタの MSB)
  o nCB が 0 のとき、nCONT=D6
o nCB が 0 のとき、nCB=1
o nCB が 1 のとき、nCB= ~nCONT


あと、nWR の動作を変更

  o カウンタが 7 のとき nWR = ~(CLK && nCB ) , それ以外で L


まぁ間違っているかも知れないが、最低限の機能はだいたいこんな感じ。

ここまでで、ラッチ数 14 bit 。XC2C32A ですら 楽勝。

READ を付けるとすると どうなるのだろうか?

まず、RD という情報を 追加。制御バイトの bit5 を RD に割り当てる。

で、RD=H のときは、シフトレジスタの出力を Hi-Z にしなければならない。あと、READ 用の シフトレジスタを用意する。READ したデータは一旦ここに格納して、次の 転送で送る。

... ここらで面倒になってきた。それにしても 楽に 32bit に入りそうだ。

    ちなみに、LED 用の PWM の機能を追加するには、まず カウントと PWM のレジスタ 4 つを定義して、それぞれ「カウンタ値 > レジスタ値」で H を出力する。PWM のレジスタに書き込む場合は、制御バイトに bit を追加していけば良さそうだ。


追記: arduino のシールドにしてRFAD のケースに入るのか?

サイズ確認のためのデータ2



灰色の点線がケース外寸で実線が内寸。arduino 自体はケースに入りそうだし、dec23-u4 のコネクタとも干渉しない。

だが、高さが問題。液晶の基板から底面まで 12mm しかない。普通のピンソケットとピンヘッダの組み合わせだと基板間 10mm 。基板厚 1.6mm とすると 入りそうな気もするが 基板底面のハンダ部分があるから無理。ケース底面にドリルでくぼみを作るぐらいしないと。液晶の基板側のピンヘッダを ピンだけにすれば基板間 8mm にはなる。だが、今度は aruino の部品と 液晶の基板の部品が干渉する。AVR や ISP コネクタ、コンデンサの位置を入れてみたが、結構厳しそうだ。

さらに、大物がある。USB コネクタと DC ジャック。USB コネクタは 11mm 高さだったような... これは無理。液晶の基板を切るぐらいしないと。 DC ジャックは樹脂だから、削ればなんとか。

互換ボードだと Seeeduino なら MINI コネクタだし なんとかなりそう。大人の科学の japanino どうなるか分からないが 背があるのは、コンデンサぐらいのようだ。

arduino + ケースというオプションは 、ほとんど部品を載せられない。それでは本末転倒のような気がしてきた。とりあえず忘れよう。

そんなことより、基板が大きくなったおかげで、部品が沢山載るようになった。再度 XMEGA を検討してみよう。

posted by すz at 15:21| Comment(0) | TrackBack(0) | 日記

2010年02月24日

PWR44

勢いで tiny44A のボードを設計した。




パターンを見ただけで、やっつけ感バリバリ。



回路図はこんなの。抵抗値などは適当。

忘れそうなので、どんなものを作ろうと考えたかメモしておく。

基本は、ステップダウン DC-DC コンバータの回路。Pch MOS FET を PWM でスイッチングして、電流と電圧を測定し フィードバックする。

電源は、DC ジャックから取る。
スイッチングの回路を簡単にするため、tiny44A の VCC も 入力と同じにしている。

基準電圧は、1.2V の レギュレータを使おうと思う。出力 電流が 0 だと 安定しないかも知れないので、抵抗を付けている。

電流測定は、差動入力の ADC を使う。分圧しないでそのまま接続。

電圧測定は、別の ADC 。基準電圧は 1.2V なので とりあえず、5:1.2 で 分圧。ノイズ対策 か 微調整のために、2012 の パターンを1 個 付けている。

    あ、間違ってる。GND にすべきところに ADC を接続している。... ダメダメだ。

あと、インジケータとして LED を 2 個付けられるようにしている。2色LED の SEC2764C を予定。

コネクタは、電源入力と出力。あと ISP 。ISPの信号は、ホストと接続したり、(自作)I2C ディスプレーと接続するようなことを考えている。

なにができるか ... というと 最初に考えたのが NiMH の充電器。

市販の 充電器もボタンがないし、LED だけつけようと考えてこうしている。

そうは言っても、他にもいろいろ使えるはず。ちょっとメモ


  • 高機能電源

    電圧・電流がわかるのだから、ホストとつなげて、ログしたり 電圧を設定したりすることは出来そうだ。

    問題は、電源が 5V 系(予定) なこと。自作装置はすべて 3.3V 系で統一しているから、接続できるものがない。秋月の FT232RL ボードぐらいか。... となると、ソフト シリアルで通信することになりそう。(自作)I2C ディスプレーにつなぐ場合は、5V にも対処できるようにしておけば OK 。

    もっと問題は、高機能であっても高性能にはならないこと。

    ADC からフィードバックするので、出力電流変動が大きいと レスポンスが悪くて追従できないかも。あと、VCC が 入力と直結だし、スイッチングするのでノイズの影響を受ける。

    制御せずに 電流測定をするだけならまだ、なんとかなるかも。

    ちゃんと作るべきだったとは思うが、まずは使ってみようと思っている。

  • ボリュームでの制御。

    ADC はいっぱいあるので、電圧を設定するのに ボリュームを使えても良さそうだ。

    フィードバックの レスポンスは落ちるが、これも試してみようと思う。


反省点。

今日発注したのに、すでにいくつも反省点がある。-- まぁやっつけだから仕方ないか。


  • ノイズ対策
    よく見たらパスコンすらない。スイッチングの入力のコンデンサと同じでは、ノイズ乗りまくりになりそう。

    LC フィルタを通して VCC に接続すべきだった。

    あと、ベタアースとか。実を言うと試してみたのだが、うまくできなかったのでやめてしまった。

  • ボリューム用パターン

    全然考えてなかった。基準電圧を切替えるのは嫌なので、1.2V - GND を分圧するのが良いかも知れない。

  • ホスト との通信。

    電圧差があるので I2C は無理そう。シリアルならそれで良いので、出力を分圧するぐらいしておいても良かった。

  • 電圧フィードバック

    ADC ではレスポンスが悪い。... とすれば コンパレータは使えないのか?

    コンパレータと比較する電圧を PWM で作れば レスポンスが良いものを作れたかも知れない。

    ただし、PWM の電圧を安定させるには、電源をレギューレータにしないとまずそう。... あるいは、コンパレータと比較する電圧を測定した方が良いか。



... というわけで、充電器になれば幸い みたいな基板になってしまった。まぁそういうものでも使っていこうと思う。


追記:あまりにひどいのでデータを作り直した。... あとの祭りだが、次の機会に出すためには用意しておかないと。

    基板データに問題があるという連絡がきた。自作面付けツールのバグだったが、これ幸いとデータ入れ替えすることに。

データ:pwr44-0.2.zip
更新データ:pwr44-03.zip (EzPCB 向けに DRC 変更 と 他の小基板も同梱)





電圧のレベル変換を、抵抗+ツェナーですることにした。V-USB をかで使っている方法。これなら I2C も OK 。... というか I2C の出力 H は pull-up だから 電流もあまり流れず都合が良い。

あとは、ボリューム用に基準電圧を出力したり、コンパレータを使えるようにしたり、VCC の前に LC フィルタ入れたり。

メモ;

普通に ADC で電圧測定する場合は、ADC2/AIN1 を使う。基準電圧 1.2V なので 分圧抵抗を入れる。

電流は、ADC5 - ADC3 。差動入力が使える組み合わせ。

さて、コンパレータを使う場合。OC0B で比較する電圧を作る。その先に ADC1/AIN0 が接続されている。ADC1 で期待した電圧かどうか測定してフィードバックをかける。

この電圧は 基準電圧の1.2V 以上は必要ない。C6 と並列に抵抗を入れて PWM の精度を無駄にしない方が良い。

制御は、AIN1 > AIN0 になったのを割り込みで検出して 一定期間 メインのスイッチングを止めるとか。

パーツリスト

抵抗やコンデンサの値は決めていない。それ以外のもの。


  • ATtiny44A-SSU
  • U1 MCP1700T-1202E 基準電圧用 (1.2V)
  • Q1 Pch MOS FET(SOT23)DMG3415U
  • L1 NRG4026T 22uH/0.9A (VLF4012AT 47uH/360mA(秋月)など 4mm タイプも一応適合)
    NR5040T 22uH/1.4A とかもぎりぎり載るかも。
  • L2 CB2518T 22uH or 47uH (or マイクロインダクタ 47uH(秋月))
  • D1 SBD (SOD-123) SS2040FL(秋月) , RB161M
  • D2 SEC2764C(秋月)
  • D3,D4 ツェナー 3.3V RD3.3S(鈴商) , BZT52C3V3
  • DCジャック マル信 MJ-83/84 (pdf) (秋月)
    DCプラグは、φ3.4 x 1.4 。3.5mm x 1.3mm も? 千石や共立 他で扱っている。
  • RC値の案

    R1 100k (1k 〜 470k )
    R2 100
    R3 0.1 (〜 1) ±1% 電流測定用
    R12,R13 220 (100 〜 1K)
    R4 47k R5 12k 電圧測定用
    R6 100k (10k 〜 )
    R7 1K LED 高輝度赤 (Vf 1.7V)
    R8 470 LED 黄 (Vf 2.0V)
    C6 10u + 47k, R11 100k -- PWM の電圧を 1/3 ぐらいに。cut-off 0.5 Hz
    R9,R10 10k (1k - 10k) -- ISP で使用するため。
    C4,C5 1u
    C3 10p で cut-off 7.2 kHz -- たぶん不要。
    C7 10u (L2 = 47u なら cut-off 7.3kHz )
    C3 22u (L2 = 22u なら cut-off 7.2kHz )

    C2 は、22uF 以上。3216 100uF(Z)(秋月) とか 3216 47uF(K)(秋月) とか。

    PWM は 40kHz 以上を目指す。8MHz 内蔵rc なので、200 clock 周期 以下。OSCCAL 変更で周波数を上げるのもアリか。
    ADC の フィードバックの周期は 15kHz ぐらい? レスポンスは十分かも。


インターフェイス

インターフェイスに使える信号は 2 本しかない。MOSI/SDA と SCK/SCL だけ。ただし、3.3V 対応にはできる。

要するに I2C のマスタか スレーブ。マスタの AVR に接続して I2C で通信すれば、一応なんでもできるはず。I2C のマスタにする場合は、(自作)I2C ディスプレーを接続する。

それ以外には、ADC4 と ADC6 になるので、ボリュームが 2 個までつなげる。

それでほぼすべて。I2C 用の線をソフトシリアルにすることは可能だが ... たぶん使わないだろう。

追記:基板ができて来た。



posted by すz at 18:56| Comment(0) | TrackBack(0) | 日記

2010年02月11日

はさみで切れる基板

アマゾンで売っている ユニバーサル基板(黒)超薄型t=0.4mm 230x320mmは、ハサミで切れる基板として、「なんでもつくっちゃうかも」他で紹介されている。

さらに自由に曲げられるユニバーサル基板 なんてのもある。これは、「スタバブログ」で紹介されていた。

    2011/1/16 追記: 結構安いものもあるようだ。

    しまりす堂というところだと、片面だが 70x90mm が一枚 200円。10 枚セット 1800円。両面大型だと 180x300mm ののものが 1700 円。
    さらに 400mm x 150mm なんてのもある。

    どうも 自動車の LED 装飾用の市場というものがあるらしい。

「エレ玩 Konyaの開発記録: 自己流基板制作方法覚書き」は、プリント基板の作り方が解説されている素晴らしい記事だが、実をいうと 「0.5mm厚の基板を使用しているので、基板カットはハサミで大雑把に切り、ナイフで仕上げます。」という記述が一番驚いた。

とにかく、基板というものは、0.4mm 〜 0.5mm までならハサミで切れるもののようだ。

    基板がはさみで切れるものだという発想自体がなかった。シール基板(0.1mm)なら切ったことはあるのだが、そのとき どの厚さまでなら切れるのだろうなんて考えなかった。

    30mmx10mm の基板を作ったときは、相対的な厚みに驚いた。もうブロックのような感じ。これ以上小さなものを作るのは難しいだろうと思った。はさみで切るのなら、いくらでも基板を小さくできる。SOT23 サイズ 2 個だけのせた基板でも問題ない。

この事実を知ったとき、最初に思ったのが、0.4mm 〜 0.5mm の基板を発注できたら、面倒だったり高価だったりする面付け指定しなくとも良いし、極小基板も自分で切れば作れるではないかということ。

PCBCARTが、0.5 mm を扱っているので調べてみた。

自分で切るなら、サイズは 80x100 で良さそうだ。デフォルトからシルクを 2面に変更したのを ベースとして、0.5mm にしたものと、さらに レジスト色変更+金色仕上げの比較。

    80x100 Silkscreen 2sides
    10 20 50 75
    1.6mm $ 95.50 $ 115.70 $ 160.70 $ 191.95
    0.5mm $ 116.30 $ 139.10 $ 194.20 $ 232.45
    0.5mm + ETC $ 129.00 $ 153.50 $ 214.20 $ 256.70


まぁ安くはない。だが、B基板だって 20枚買えば 4000円近くにはなる。20枚作るとして、高々 それの 3倍ぐらいだ。よく使うパターンを集めれば十分もとはとれる。.... と思うことにしよう。

EzPCB も 0.4mm 厚が発注できるようだ。

ちょっと値段をメモ

    80x100
    10 20 50 75
    1.6mm $ 121.14 $ 166.66 $ 262.53 $ 330.38
    0.4mm $ 116.31 $ 148.86 $ 218.29 $ 271.86

シルクはたぶん片面。

追記: 秋月の SMDプロトタイピングガラスユニバーサル基板(0.3mm厚)Cタイプ(72x47mm) もハサミで切れる。裏面はベタグランドだそうなので、丈夫なような気がする。

    追記 :
    これは、結構便利につかえる。ただパターンが細かすぎで となりにブリッジしたりしてハンダ付けは、なかなか難しい。



    ちなみに、こんな風に USB MINI-B コネクタを無理やり載せることもできる。これを切って親基板に貼り付けるといったこともできる。


2011/1/16 追記

    なんと 0.8 mm でもはさみで切れた。詳しくは『Fusion PCB』の記事を参照。



    使ったはさみ。百均で購入。... 確かセリアの ペット関係。



    はさみで切れることが分かったので小基板を詰め込んだのを設計してみた。記事は『小基板セット』。

    Fusion PCB は 50mm x 50mm までなら 最低 10 枚 でほぼ 2000円(送料込み)。( 今まで発注したのは おまけが付いて 12 枚入っていた。)

    10枚だとしても 一枚 200 円。この基板は 8 つ入れたから 1 つ あたり 25 円。全部について同じ数必要というわけではないが、格安感がある。10m x 10cm に 面付すれば、4 倍入って 4000円ぐらい。そこまで数は必要ないので作らないが、そういう手もある。
posted by すz at 12:14| Comment(1) | TrackBack(0) | 日記

2010年02月10日

シリアルLEDディスプレーメモ

何日か前に、秋月の 3桁 7セグLED C-533SRをみたら品切れだった。(今は入荷したようだ) これで思い出して 8x8 の BU5004-R はどうなったのか見てみたら、なくなっていた。2色の BU5004-RGはまだ売っているようだ。

なくなりかけてから記事にするのもどうかと思うが、なくなってしまっては記事を書けないので、これらを使ったものの記事を書いておこうと思う。

BU5004-RG を BU5004-R と同じ配線にすると 緑の単色ディスプレーになる(はず..確か)。RG を R の代替として Tiny2313 を使った簡単配線の シリアルディスプレーを 考えてみようと思う。

    実は、昔に記事にしたものの焼き直し。最近は事情が変わったので再考してみようと思う。変わった事情としては、

    • FT232RL が手軽に使えるようになって シリアルが使い易くなった。
    • チップ抵抗を使うようになってきた。
    • 140x40のユニバーサル基板が発売されたが、これに並べたくなった。
    • Tiny2313 をあまり使っていなくて死蔵しそうになっている。

    こんなところ。


さて、簡単配線と書いたが、基本は 8x8 ディスプレーに合わせて配線して、プログラム側で対応する方針。考えてみたのだが、次のようにしたら良さそう。Tiny2313 は裏がわに実装する。図は裏から見たもの。



Tiny2313 を LED のピンの間におくとすると、配線図のように、Tiny2313 が 上下にはみだす。なので、横に並べることになる。

    幅は 24mm .. ということは、0.945 inch で 0.1 inch 単位ではない。 0.05 inch 分 無理やり 右か左にずらすことになる。複数並べるときは、最初から考えておかないと 隙間が空いたりでこぼこになったりするので注意。
    140x40 基板に並べたとすると 5 つ。40x8 dot 表示器になる。
    (5+1)x7 で表示するとすれば、6桁+α。値段は RB5004-RG が 200円 Tiny2313 が 100円。140x40 基板が 200 円。5つ並べれば 1700円。

RXD は、全部共通。受信処理もまったく同じにして、すべてのチップが同じデータを持つようにする。チップの EEPROM の 設定で 表示の位置だけを変える。こうすれば、メモリが許す範囲でいくつでもつなげられるはずだ。

表示は、1dot づつ表示する。いくつ並べても 1/64 duty ということになる。このような表示の仕方なら Tiny2313 は 40mA 程度は流せる。LED 側も OK -- ただし、バグなどで、ずっと表示し続けると 焼けるおそれがあるので、3.3V では 数 mA になるようにしてデバッグしておいて、バグが取れたら 5V で使うとか工夫がいる。

    緑だと Vf が高く 2.4V ぐらい。100 Ωなら 3.3V で 9mA 。5V だと 26mA 。9mA で 1/64 duty だと暗いかも知れないが、焼けるおそれはない。赤なら Vf は、1.8V ぐらい。3.3V でも 15mA , 5V なら 32mA 。-- 100Ωでいけそうだ。 (というか 100Ωしか持っていない)

簡単配線といっても、ななめに接続している。チップ抵抗(2012) を使うのが前提。ただし、本当に簡単かどうかは未確認。

あと、ICソケットを付けると配線が難しくなりそう。直付けするのを前提にしている。

ちなみに、ROW1 を PD1 = TXD に 割り当てている。8x7 で良いなら、これを外して、TXDを使うことは可能。たとえば、ボタンを LED の配線と共用で付けて、ボタンの状態を送るとか .. 。TXD は ボタンを付けたチップだけ接続する。全部をつなぐわけではないのでうっかりしないように。

    ボタンの付け方は、
                            __
    COL1(K) -- |>|----o o--- GND

    とか。COL1 を pullup すると ... ボタンを押したとき 0 が読める。表示する場合 COL1 は、Hi-Z か L なので、ボタンを押しても影響がない。

あとは、プログラムを作るだけだが、昔作ったのを利用しようと思っている。→ bu5004s-0.1.tar.gz

作成中のは コレ。bu5004s-0.2.tar.gz。配線に対応しただけ。

ところで、作ったあと、プログラムを書き換えるには ... ICクリップを使うしかない。秋月だと、20個2500円。これは 0.8mm ピッチもいけるロジアナ用の高級品。昔ながらのやつだと、aitendo で 1個50円のこれとか これとか
(後者の方が良さそうに見えるがどうなんだろう?)

さて、同じように、 3桁 7セグLED も扱えるはずだ。ちょっと考えてみた。(ちなみに、4桁7セグLED も、互換性がある。6pin が DIG4)



これは、3桁を 2 個まで接続する例。(裏から見た図)

    C-533SR は、幅 24.7mm, 高さ 18.8mm 。C 基板をたてにしたとして、横方向に 2 個ならべられる。--- ただし、Tiny2313 を左にずらさないといけない。

4桁 2 個のときは TXD を使う→7桁(最後の桁は不表示), 使わない→8 桁 にできるようにする。

ちなみに、aitendo の 4桁 7セグは、50.3mm x 19.0 mm 。140x40 基板に 横に 2 個載る。さらに 上下というのもできるかも知れない。そんなに付けてどうするか? --- デロリアンは、3段だったはず。まだまだ足りない。

それはおいておいて... 7セグの方のプログラムはない。... といっても 上記のプログラムで無理やり使うことは可能なはず。定義ファイルを書き換えて、グラフィック用のデータを送ってやれば良いはず。まぁ、ボチボチ試してみよう。
posted by すz at 21:11| Comment(0) | TrackBack(0) | 日記

2010年02月07日

Tiny44Aをなにに使おう

i2c 温度計が欲しかったので、デジキーで買ったのだが、ついでに Tiny44A も買ってしまった。1個だと 217円だが、25 個だと 137円だったので、ついついぽちった。DIP ではなく SOIC の方。

    他のついでとしては、TCXO 付き RTC の DS3232S とか SPI RAM の23K256 とか。あと 1SV322

    DS3232Sは、1Hz を出力させて AVR に水晶を付けたときの精度とか温度特性を見るために購入したのだが、他は明確な使い道を決めていない。

    ちなみに、23K256 は、A25L80などの SPI FLASH とピンアサインが同じ、コマンド体系も似ている。→A25L80の使い方

AT90USB162/ATmrga32U2 は、ADC がないし 補助用と割り切っても良いかなぐらいの気持ちで買ってみたのが実情。Tiny45 の方が少し安いのだが、8pin では厳しいのではないかと思い 14pin の Tiny44A にしてみた。ちなみに、コストパフォーマンスが良いのは、この 2 種類だと思う。

    8pin の Tiny45 と比べると、使える pin 数が多いのが有利な点。VCC/GND/RESET を除くと 5pin vs 11 pin 。これだけ違えば使える範囲も随分違う。
    ただ、不利な点もある。Tiny45 は、高速な PWM を持っていて、それで音を出したりするのに有利。あと 8 pin なので、SOIC でも実装が楽という利点もある。

    ちなみに ATmega32u2+Tiny44A と ATmega32u4とを比べれば、387円+217円 vs 473円 で 値段の面だけでも ATmega32u4 の方が良さそうだ。USB 用のエンドポイントの数(4 vs 6)とかバッファの量(176B vs 832B)から見ても ATmega32u4 の方が嬉しい。ATmega32u4 が入手できるようになれば、補助としても用なしになりそうだが... 2chip ならではの利点があるかも知れない。

AT90USB162/ATmrga32U2 の補助で使うときは、i2c スレーブにして、ADC とか 電源制御とかを考えている。ただ、AT90USB162/ATmrga32U2 からの書き込みもしたいので、4 pin で接続することになるかも知れない。

  • ISP をまるまる空けるとしても、8 pin も使える。AREF を基準電圧入力に使うとして.. 使える ADC は、ADC1,2,3,7 の 4pin。差動入力が使えるのは、ADC1,2,3 の任意の 2pin 間 と ADC3-7間。MOSI を、ISP 用に使うとしても ADC ぐらいは使えるかも知れない。 その場合は ADC5 が使え ADC3-5 の 作動入力 もある。

  • ADC の差動入力は、両極入力モードが使え、x20 利得モードもある。

  • PWM は、OC0A が空いていて、OC0B は、ADC7 と排他で使用できる。あと MOSI を使う場合、ADC5 と排他で OC1B が使える。

  • XTAL1/2 に水晶をつながない場合は、PORT としてしか使えない。

こんなところ。ADC 専用チップとしても、お得なように感じる。

補助としてどう使えるかについては、だいたいイメージできた。が、なにしろ沢山買ってしまった。スタンドアローンで使う場合どういうものに使うと良いのだろう?

  • V-USB でアレコレするパターンは、USB910B で結構やった。
    V-USB + ADC というのは、あまり美味しくない。USB を駆動するとインピーダンスが低いのでノイズが載ってしまう。USB の通信を抑止することもできないので、ノイズを除去するのも難しい。

  • ATmega88 系が向いているもので、Tiny44A を無理に使っても意味がない。なにしろ ATmega328 が 秋月で 250 円だ。実装スペースを減らしたいとか、差動入力を使いたいとかなら Tiny44A が向いていそうだ。

あまり目新しいのは思いつかないのだが、例えば... 充電器。

差動入力で電流を測定できるから向いているはず。充電器を含めた電源制御をまかせてしまうのもありかも知れない。

あとは、ちょっとした測定器。I2C 液晶を作る予定なので、インターフェイスは 2pin で済む。測定はこちらですることを考えようかと思う。普通は ATmega88 系 1個で済ませられるわけだが、レギュレータと水晶とを 1組にまとめたいので、一応意味はある。

まぁ、他に思いついたらここに追記していこうと思う。

ところで、レギュレータと水晶とを 1組にまとめるのに、アイテムラボの SOP20-1P27-Wを使おうと思っている。



これを次のような配線にするつもり。



現物合わせで、水晶がランドに届かないことがわかった。(スルーホールは絶縁処理されている)足を付けてからハンダ付けしないといけなさそう。それに、かなり配線が多い。ちょっと作るのは厳しいかも知れない。



pin 割り当てはこんな感じ。INT は、内部使用 の意味。AREF は、TAR5SB33 の NOISE 端子を使ってみる。1.2V 前後のはず。

    パーツリスト
  • 水晶:FA238-16MHz
  • レギュレータ TAR5SB33 or SI91841DT-285(2.85V)
  • 水晶用コンデンサ 2012 18p (マルツ:22p)
  • レギュレータ用コンデンサ(入力側) 1608 1u
  • レギュレータ用コンデンサ(出力側) 2012 10u
  • レギュレータ用コンデンサ(NOISE) 2012 0.01u (マルツ)
  • Tiny44A (SOIC-14)
  • 変換基板 SOP20-1P27-W (アイテムラボ)

ちなみに、レギュレータと水晶とを 1組にまとめるために わざわざ こういうふうにしている。単に Tiny44A を使うだけなら、基板に直付けすると思う。カプトンテープかなにかで絶縁しておいて、端の 4pin だけ 基板のランドに付ければ十分だと思う。

追記:結局(ワークサイズパッケージのついでに)基板を作った。




こんな回路図。



で、出来上がったのがこれ。

追記: 2010/12/10 いまさらながら作ってみた。





なんだか.. 適当になってしまった。IC はナナメになっているし。他のパーツもあまり整然とはしていない。

足は、ダイオードの線。2 つに折って 基板に挿している。drill を 1.0mm φにしたのでけっこうぎりぎり。写真では分かりにくいのだが、基板の横ピッチは 400mil のはずなのだが、ブレッドボードに挿すときに 300mil 分の位置に挿してしまった。そのため足が内側を向いている。いつか IC ソケットに挿すかも知れないので、そのままにしている。



ちょっとばかり出来が悪いので修正した。(作るつもりはまだないが、一応)

  • clk44-02.zip

  • まず、C4 の真ん中に VIA が来ている。ちょっと気をつかうので、位置を変えた。
  • あと、線が全体的に細い。ライブラリも修正して、線やランドを太くした。
  • コネクタの drill は 1.1mm φにした。
  • 最後に 裏をベタアースにしておいた。

posted by すz at 20:54| Comment(0) | TrackBack(0) | 日記

i2c液晶の設計

どういうわけか、ATtiny2313 で i2c インターフェイスのキャラクタ液晶を作ろうとしている。

作りたいのは、別のものなのだが、プログラムが入らなくて満足できなかったときの保険として、同じハードで役に立ちそうなものをと考えていたらこうなってしまった。


とりあえず、プログラムが先に出来た。→ i2clcd-0.3.tar.gz

もちろん、デバッグなどしていない。ここでは、どういうものを作ろうとしているかまとめておこうと思う。

    回路図(予定)


まず、使おうと思っているのは、aitendo で安売りしている、8x2のSC802A-3.3V。これと、ボタンを 3 つ付けて i2c デバイスに仕立てようと思っている。

    一応 8x2 液晶のリスト。
    Aタイプ (上に端子) 14 ピン,16 ピン 40Wx35.4H

  • デジキー NHD-0208A 各種
  • サイキットストア XCL-082A-BG-YE 5V BL なし
  • aitendo SC802A-3.3V , SC802A(5V)

    Bタイプ(左に端子) 14 ピン 58Wx32H
  • デジキー NHD-0208B 各種
  • 秋月 ACM0802C-NLW-BBH 5V?, 白ヌキ

    Bタイプ(左に端子) 16 ピン (位置が ずれる) 58Wx32H
  • aitendo SC802B-3.3V


ST7032i


i2c 液晶は、ストロベリー・リナックスで扱っている

これが、どういうものなのか、まず調べてみよう。

データシートのリンクを開くと ST7032i のデータシートだった。
これを見てみたところ、基本は、キャラクタ液晶のコマンド体系をそのまま使って、i2c に載せただけのようだ。

もう少し詳しく説明すると、

  • i2c のパケットの先頭バイトがコントロールバイトで、RS (データかコマンドの指定)と、Co (コントロールバイトをこれ以降使うか使わないかの指定) だけが含まれている。続くデータは、キャラクタ液晶 と同じ意味。

  • Co = 1 のときは、RS + DB0-7 のデータを常に組で送る。16bit データだと単純に考えてもよい。RW は、i2c のパケットに含まれている。8bit 単位でしか送れないにもかかわらず、4 bit mode まで有効。

  • RS 1 bit のために 1 バイト消費するのは効率が悪い。Co = 0 にすると以降のコントロールバイトを省略できる。当然ながら、パケット内では RS の状態を変えられない。

  • i2c のアドレスは、0x3e 。

  • i2c インターフェイスでは、read (RW = 1) は、使えない。Write Only 。


これで基本は説明できた。キャラクタ液晶 を使ったことがあれば、使い出せるはずだ。

ただし、全部は説明していない。コントラストをコマンドで設定できる機能がある。

データシートを見ると、Function Set (001xxxxx) の bit0 が、IS (normal/extension Instruction Select) となっている。

IS = 1 にすると、コマンドセットの一部が切り替わる。

切り変わるのは、Set CGRAM (01xxxxxx) と Cursor or Display shift (0001xxxx)。この部分が、ST7032i 独自のコマンドに切り替わる。

仕様を決める


ST7032i に準じたものにしようと思う。違う点は以下のもの。


  • 4 bit mode は、サポートしない。Function Set の DL が指定されても常に 8bit mode として扱う。
    ... 内部は 4bit mode を使うので、DL = 0 に変換するわけだが、i2c 上のデータは常に 8 bit 単位ということ。

  • read で、bit 0-2 にボタンの状態を読めるようにする。
    ... 複数バイト読もうとしても 1 バイトしか読めない。

  • 拡張コマンド。IS で切り替えるのは同じだが、切り替えるのは Set CGRAM (01xxxxxx) のみ。拡張コマンドでは、コントラストと バックライトをサポートしようと思う。


      拡張コマンド(予定)
      0100 B7 B6 B5 B4 バックライト 上位ビット設定
      0101 C7 C6 C5 C4 コントラスト 上位ビット設定
      0110 B3 B2 B1 B0 バックライト 下位ビット設定
      0111 C3 C2 C1 C0 コントラスト 下位ビット設定


    下位ビット設定に意味があるかどうか分からないし、あくまで予定。輝度調整もできない場合がある(予定)。


    仕様まとめ
  • Write:

    (1) I2C アドレス + RW=0 , control byte , コマンド/データ
    control byte , コマンド/データ
                 ....
    (2) I2C アドレス + RW=0 , control byte , コマンド/データ
    コマンド/データ , コマンド/データ
                 ....

    control byte: bit7 (Co) : Co = 1 (1) パターン ,
    Co = 0 (0) パターン
    bit6 (RS) : RS = 0 コマンド , RS = 1 データ

      コマンド仕様:
    00000001 : Clear Display
    0000001x : Return Hone
    000001 I/D SH : Entry Mode Set
    00001 D C B : Display ON/OFF Control
    0001 S/C R/L xx : Cursor or Display Shift
    001 1 N F 0 IS : Function Set
    01 AAAAAA : Set CGRAM Address (ノーマルモード)
    01 ...... : 拡張モード
    1 AAAAAAA : Set DDRAM Address

  • Read:

    (1) I2C アドレス + RW=1 , xxxxx b2 b1 b0

    b[012] はチャタリング処理済の ボタンの状態 (1 = ON)


i2c スレーブドライバの API 変更


USI を使った i2c スレーブドライバを以前作ったのだが、上記の仕様に合わない。すこし API を考えて作りなおそうと思う。

いくつかセンサ系の i2c デバイスのデータシートを見てきたのだが、だいたい次のような使い方をしている。

  • Write では、最初のバイトで レジスタ番号を指定して、続くデータは、そのレジスタの値。
  • レジスタ番号 のみの Write をする使い方もある。その場合、次の Read で読む レジスタの指定になる。

実は、以前作ったのはこういう使い方すら出来ない仕様だったのだ。

さて、API をどうしよう。

READ は どうも 指定された メモリを勝手に 返すだけで良さそうだ。 レジスタ番号が変更されたら、メモリのアドレスを再度設定すれば良い。xx_set_read_buffer とかそんな感じ。

WRITE の場合、ストリームではなく、パケットを意識したコードを書くことができないといけない。まぁ、パケットの終わりが判かれば良いだけなので、xx_can_getc で、0/1 以外に -1 を返してパケットが終わったことが判るようにしようと思う。

それ以外にも、問題はある。一旦バッファに読み込んで処理する方式なので、受け取ることができるパケットのサイズには上限がある。しかも受け取ったパケットの処理中は、ACK を返せない。
これについては、方式を変えないと対処できないので今回はパス。

追記:i2c のコネクタ

忘れていた。i2c のコネクタをどうするか決めないといけない。

workshop Nakでは、こんな配列を使っているらしい。

    1. GND
    2. VCC
    3. SCL
    4. SDA


あと、玄箱 PROでは、

    SCK(SCL?)
    SDA
    VCC
    GND

らしい。SCL と SDA が逆。I2C はコネクタで接続するものではないから、標準などないのだろうなぁ。とりあえず workshop Nak と同じにしておこう。

追記:

もうひとつ見つけた。Seeeduino V328 では、

    1. VCC
    2. GND
    3. SCL
    4. SDA

これまた違うアサイン。
posted by すz at 07:27| Comment(0) | TrackBack(0) | 日記

2010年01月28日

WDT は温度計に使えるか? -- 実践編

WDT は温度計に使えるか?の記事に書いたことを実際にやってみようと思う。

MCP9801 も入手したし、I2C温度計のつかいかたも分かった。I2C マスターのコードも以前作ったのがある。

使うのは、AT90USB162(SRT162 ボード)。水晶だし、電源用レギュレータも MCP1700 で 電圧も(平均すれば)安定しているはず。

AT90USB162 は、割り込みつかわなくとも通信できるようにしているし、I2C マスターのコードも割り込みつかってない。

とりあえずは、WDIE=1 にして WDT 割り込みを発生させる。インターバルは、WDP[3-0]=0110 で、1 秒に設定しようと思う。

    どういうわけか、インターバルの設定が うまくいかない。
    試行錯誤の末、WDT を一旦設定して、その後に WDT 割り込みに切り替えたらうまくいった。ただ、WDP[3-0]=0110 だと 2 秒になってしまう。500ms の設定の WDP[3-0]=0101 にしたところ 1 秒間隔になってくれた。

この間の CPUクロックを計測。続いて温度を取得。温度の取得は ワンショットにして、タイミングを合わせる。

2 組のデータを 16進数で シリアルでたれながす。ほぼ 1 秒間割り込みが来ないことは分かっているので、他のAVR でも シリアルなど使って通信しても問題なさそう。

この状態で放置してみる。1秒に1組のデータでも 24 時間なら、86400 個のデータになる。これを分析して使えそうかどうか見てみることにしよう。

うまく行きそうなら、次は使い捨てカイロで挟んで放置の予定。

ちょっとメモ:

CONN2
1 VCC(3.3V) VCC
2 GND
3 PC5/OC1B (NPN OC)
4 NC
5 DEV_VCC (3.1V)
6 PB3/MISO (100 ohrm) SDA
7 PB1/SCK (100 ohrm) SCL
8 PB2/MOSI (100 ohrm + LED)
9 PB4/T1 or RESET (100 ohrm)
10 GND GND

MCP9801
SCL 1 8 VCC --- 1u -+
SDA 2 7 A2 --------+
ALART 3 6 A1 --------+
GND 4 5 A0 --------+
|
GND


クロックの校正方法で書いたが、平タスクで 16bit タイマのオーバーフロー回数をカウントしようと思う。

普通は、

    (1) 割り込み禁止にする
    (2) オーバーフローフラグ(TOVF1)が 1 になっていたら、
    (3)   オーバーフロー回数のインクリメント
    (4)   TOVF1 の クリア
    (5)割り込みを許可する

というような処理をすれば良いわけだが、正確にカウントしたいので、常にWDT割り込みを優先しなければならない。

もし (1) と (5) をしなかった場合なにが起きるかというと、WDT割り込みの処理で、TOVF1 が 1 の場合 オーバーフロー回数が インクリメントされていないかも知れない。さらに オーバーフロー回数が 2バイトの場合、インクリメントの途中かも知れない。

これを正しく判断して正しいカウンタ値を記録するのは、無理かも。

では、どうしたら良いのか?

WDT割り込みの処理では、 16bit タイマの値を記録するだけにする。平タスクで WDT割り込みが起きたことが分かったら、オーバーフロー回数を合わせて 32bit カウンタ値にして記録する。

それは良いのだが、TOVF1 が 1 の場合 オーバーフローの前に記録された値なのか、オーバーフローの後に記録された値なのか、の判断をしなければならない。

これについては、レスポンスを保証できてさえいれば、大きな値だった場合は、オーバーフローの前 と判断できるはず。保証する時間は、オーバフローするまでの時間の 1/2 以下だから 16Mhz クロックで 2ms 以下。安全を取って 1ms を保証するようにする。

    ちなみに測定誤差は、± 3 clock 。AVR のデータとりこみは、クロックに同期するので、1 clock ずれる場合がある。また、命令実行中は割り込みができないので、2 clock ずれる場合がある。

    ただし、誤差は蓄積されず、次のサイクルに反映される。複数のサイクル分を合計しても 誤差は大きくならない。

    クロックの校正方法で書いたフィルター処理でどうなるか..

    あるサイクルで 3 クロック多い値になったとする。次のサイクルでは -3 される。

    N=7 だと、そもそも重みが 1/128 なので、3/128 クロック分の誤差。次のサイクルでは、3/128 x 127/128 になる。採取した値は、-3/128 なので、蓄積される誤差は、-3/(128 x 128) クロック。


とりあえず、プログラムはできた。→ calib-test-wk01.tar.gz

これで 2 時間ほどデータを取ってみた。サンプリング数は 8900 。



これは、 WDT 割り込みの間隔 (単位 クロック数/1M@16Mhz) を X 軸にして、 MCP9801 で採取した温度を Y 軸にして プロットしてみたもの。

縦軸は、わずか 1.4 ℃ の幅。それでもちゃんと相関関係になっているのが見て取れる。これを見るとある クロック値になったときの温度の幅は 0.5 ℃ぐらい。

温度計として使えそうな感触。



これは、クロックの校正方法で書いたフィルター処理を 温度とクロック値 について行って、軌跡としてプロットしたもの。右上が始点で、いったん温度が下がって、また上がっている。

N=7 にして無理やりなめらかにしているのだが、温度に幅があるからといって、単純な誤差には見えない。-- 温度計と チップの温度が一致していないかも知れない。温度が下がるときは、低めに出て、温度があがるときは高めになる傾向があるように見える。

温度計のモジュールがまるでヒートシンクのように AT90USB162 に載っているので、温度計の方が先に 温度変化するのだろう。

    そうだとすると、かなり正確な温度計になるのかも知れない。
    ... といっても絶対精度はわからない、相対的な精度。

とりあえずは、こんな感じ。しばらく測定を続けて、もうすこし広い温度範囲で 見てみようと思う。

すこし温度範囲が増えた。


線形のように見えるが、7℃分しかないのでまだわからない。

あと、プログラムに問題があったので修正。→ calib-test-wk02.tar.gz

  • wdt_reset() を 割り込み処理でしているが、インターバルが 割り込み処理分増えるので、変換が面倒。wdt_reset() なしでも 定期的に割り込みが入るようなので、wdt_reset() なしにした。
    もういちどデータを採取しなおし。

  • 出力フォーマットも変更。参考のために、℃に変換したデータも載せているのだが、たとえば tiny2313 で同じデストをする場合メモリが消費されるので省略する予定。おなじ スクリプトで編集できるように、℃のデータは後ろに付けることにした。

本測定



  • 気温よりちょっと高めの温度しかならない。AVR の発熱分だと思えるので、仕事をこなしたら sleep 命令でアイドル状態にするようにした。

  • I2C 温度計の方が気温の変化に敏感なので、全体をタオルでくるむようにした。

  • 両面テープでは、I2C 温度計が剥がれやすいので、瞬間接着剤で貼付け。( 衝撃を与えれば取れるはず。あとは、剥がし液で綺麗にすれば良いはず。)


以上の変更をした上で、本測定。

    測定1)使い捨てカイロを使って高温の測定。温度は、47 ℃ぐらいまで上がった。次いでカイロを抜き取ってゆるやかに冷却。(サンプリング数 22429)

    測定2,3)放置して、気温の変化を採取。昼から測定して、温度が下がっていくのをプロット。(サンプリング数 53947)

    測定4)なかなか温度が下がらないので、設置場所変更。(サンプリング数 12324)



温度が上がるときは若干高めの温度になっているが、下がるときは一致しているようだ。



赤の上のラインが測定開始時。ここから温度が上がっていって冷える時が下のライン。緑、青のラインと合わせると、下のラインが正しい値だと判断できる。


これでデータが得られたので、インターバル→温度の算出方法を考えてみようと思う。

グラフを見ると、上に凸の弓なりの曲線。だいたい 30 ℃の変化に対して 2% ぐらいインターバルが変化する。

データシートを見ると 25 ℃あたりに変曲点があるように見えるので、最低温度、25℃、最高温度の 3 点のデータで算出しようと思う。

選択したのは、以下のデータ。

    インターバル(秒) 温度(℃)
    1.00837242 12.484695
    1.01433937 25.003220
    1.02884322 47.406181


注意)個体差があるから、別の装置では目安にしかならない。

これを使って、どう変換しよう。一番簡単そうなのは、2 次の多項式。連立方程式を解くだけ。

測定範囲外では誤差が大きくなりそうなのだが、この範囲が正しければ良し。

ここまでのプログラム。→ calib-test-wk03.tar.gzRAW データ

ちなみに、グラフは gnuplot で表示。 Windows版もある (gp440rc1_win.zip ダウンロード)

何を作ろう



さて、こうやってやってきたことは、何に応用できるだろうか?

とりあえずは、温度センサーなしの温度計。温度を知りたいだけなら、温度センサーを付ければ良いだけだから、あまり嬉しくはない。

次、1PPS を入力しての クロックの誤差の測定。割り込みを起こすモノを変えるだけで、ほぼ同じプログラムが使える。

温度と誤差の関係が分かれば、たとえば時計を作ったときに誤差を減らせる。ちょっとした測定器 を作った場合も、基準となるクロックを校正できて嬉しいような気がするし、温度の情報も取れる。

...というわけで、温度計付き時計とか、フランクリン型発振回路を使った LC メータとかを作ってみたい。あと、周波数カウンタ。

    周波数カウンタは、8bit タイマの外部クロックに入力して、オーバフロー割り込み 2^N 回に 1 回 WDT割り込みと同じ処理をすれば良い。

    同じシーケンスなら、誤差は WDT割り込みと同じ。最高周波数は、CPUCLOCK /2.5 。AVR は同期での取り込みなので、オーバーフローの間隔は、512 クロック以上。割り込み間隔が短くて困ることはない。

表示は、安易にキャラクタLCD の予定。ちょうど aitendo で安売りしている、8x2の SC802A-3.3Vを使うのだ。ただ、キャラクタLCDでも 1mA ぐらい消費するようだ。常時 On したいので選んだのに.. 残念。

    一番消費電流が小さそうなのは、ストロベリーリナナックスのI2C液晶か。それでも 250uA と 1/4 に過ぎない。世の中に腐るほどある液晶表示の装置は、みなもっと消費電流が小さいはずだが...

    サイキットストアで売っている XCL-082A-BG-YEとよく似ている。バックライトがついて 3.3V 用になったのが SC802A-3.3V。SC802A-3.3V のコネクタは 14 pin → 16pin になっているが、オフセットしているので互換性があるようだ。

    ちなみに、配置が違う SC802B-3.3V なんてのもある。3.3V 用。コントラスト調整用の Vo を、GND に直結して良いようだ。 よくわからないが、そのあたりを 3.3V 用に 調整してあるのかも。

    ちなみに、秋月でも 8x2 を扱っている。ACM0802C-NLW-BBH こちらは 白色LED 。logic は、2.7V - 5.5V のようだが、Vo がどうなのか不明。まぁ、バックライトを点灯させないと見えないそうだから、今回はパス。形状は、SC802B-3.3V と同じだが、コネクタのpin数と位置が違う。

AVR は、USART が付いている tiny2313 で済ませたいのだが、プログラム領域が足りなくなるのが怖い。

逆に考えて tiny2313 で作れる範囲で作るということにすれば、気楽で良いかも知れない。最悪でもシリアル液晶ぐらいにはなるだろう。

そういえば、USBtiny が キャラクタ液晶をつなげているのを思い出した。参考にしよう。

    PB0 DB4
    PB1 DB5
    PB2 DB6
    PB3 DB7 (pull-up 22k)
    PB4 RS
    PB5(MOSI) R/W
    PB6(MISO) E
    PB7(SCK) --

    PB5(MOSI) は、入力の方が良い。LCD を read する予定はないので、R/W は L 固定にして、PB5(MOSI) は、別用途に使おう。I2C も使うし PB5 SDA/PB7 SCL にしよう。

    DB7 のプルアップは、起動中に 不定のコマンドが実行されないための保護。( DB7 == 0 のコマンドは存在しない。)
    E のプルダウンは、ISP を使った場合まずい。

    これで、PORTB は全部うまった。

    PORTD は、合わせるのは無理。

    PD0(RXD) 通信用
    PD1(TXD) 通信用
    PD2(INT0) 1PPS 校正用
    PD3(INT1)
    PD4(T0) 周波数カウンタ用
    PD5(OC0B/T1)
    PD6(ICP)

    ボタンを付けたいのだが.. 空きポートは 3 つしかない。PD3 をコモンにして、DB4-7 を共有することにしよう。PD5 は、空いている唯一の PWM だが、タイマー0 は、周波数カウンタで使うので PWM は 使えない。PB4(OC1B) と入れ替えることにしよう。

    タイマー1 の PWM は、フリーランニングで使うので、65536 クロック周期でしか使えない。 それでも 8 MHz 時、122 Hz で バックライトの輝度調整には使える。Vo もソフトで微調整したいかも知れない。たぶんどちらかで使う。

    いよいよ PD6 あと1つ。むしろこちらの方をバックライトの輝度調整用に した方が良いかも知れない。平タスクで ON/OFF すれば十分だろう。

    あ、1PPS 校正用 は、ピン変化割り込みを使うことにして、PD4(T0) と共用で良いかも。

      あ、ダメだ。PD4(T0) はピン変化割り込みがついていない。Tiny2313A/4313 なら付いているんだけど。

    OC0B のピンをただのポートとして使ってしまっている。周波数カウンタで タイマー0 が使えないだけなので、一応 バックライト用にしよう。

    これで決まった。

    PB0 DB4 , button blue (pull-down 33k)
    PB1 DB5 , button yellow (pull-down 33k)
    PB2 DB6 , button red (pull-down 33k)
    PB3 DB7 (pull-up 22k)
    PB4(OC1B) PWM(122 or 244 Hz) Vo
    PB5(MOSI) I2C SDA
    PB6(MISO) E
    PB7(SCK) I2C SCL
    PD0(RXD) 通信用
    PD1(TXD) 通信用
    PD2(INT0) 1PPS 校正用
    PD3 button common
    PD4(T0) 周波数カウンタ入力
    PD5(OC0B) バックライト用
    PD6 RS


    電源は、5V , VCC は、3.3V レギュレータを通す。バックライトは、5V をアノードにして、カソード側を NPN トランジスタ駆動。ゆえに PD5 は H で ON。

    button common は、SRT162 と同じでダイオードを通して 3.3K でボタンに接続。ボタンは、33 K でプルダウン。PB0-2 の 3 つ。

    Vo は、PWM を RC フィルタ を通して接続。R = 10K , C = 10u。cutoff = 1.6 Hz 。ただし デフォルト 0V で済むはず。


こんな風に決めたものの、やっぱりプログラムが入るとは思えない。ダメでも Tiny4313 がいつか入手できるようになる。

追記:

とは書いたものの ... 実際 AT90USB162 のプログラムを そのまま移植して、lcd ライブラリを 付けただけで、1588 バイトになってしまった。lcd への表示をするだけで、2KB になりそうでやる気がなくなってきた。やはり 4KB は欲しい。

あと チップと 水晶と レギュレータを 1 まとめにしたいのだが、DIP だと なかなか難しい。

実をいうと、ATtiny44Aが 137円@25個と 結構安いので、買ってしまった。

これとアイテムラボの 変換基板 SOP20-1P27-Wを使って、水晶と レギュレータをつけられないか検討中。



こんなレイアウト。水晶は、秋月の FA238-16MHzを載せたい。.. ただ ランドを (カプトンテーブで絶縁するか)カットしないとまずそう。レギュレータは、TAR5SB33を使って、NOISE 端子を 基準電圧として使えないか実験もしたい。

さて、そうすると使えるピンは 8 pin 。ISP の MOSI/MISO/SCK は、ホストとの通信用に空けるとすると 残り 5pin 。T0 は、1PPS 入力/周波数カウンタ用。あとの 4pin のうち 2 pin はスレーブの I2C 用にしたい。

-- まぁどうなるか分からないのだが、とりあえず。

さて、そうなると 表示やボタンがつかない。... 先の ATtiny2313 は、I2C スレーブとしようかと思っている。通信は、ストロベリー リナックスで扱っている I2C液晶 に準じようと思う。これは、ST7032i というコントローラを使っている。基本的に キャラクタディスプレー のコマンドを I2C に載せただけのように見える。I2C のアドレスは、0x3E 。アドレスに続いてコントロールバイト - データの順で 2バイト送る。コントロールバイトは、bit7 = 1 , bit6 = RS 。あと、普通のコマンド以外に コントラストの設定とかのコマンドがある。

どうも Write Only のようなので、Read した場合は、ボタンの状態が読めるようにしようかと思っている。


    一応作ってみた。コンパイルを通しただけのもの。

    i2clcd-0.1.tar.gz

    i2c スレーブドライバは以前作ったものがベース。どうも センサ系とかの i2c のコマンド体系に合わないので仕様変更。
posted by すz at 21:55| Comment(0) | TrackBack(0) | 日記

2010年01月25日

I2C温度計のつかいかた

前の記事(WDT は温度計に使えるか?)で LM75ピン互換らしい I2C 温度計をリストアップしてみた。これらをどのように使うのかまとめて見ようと思う。


LM75 互換チップ (SOIC-8)としてリストしたのは、以下のもの。SOIC-8を選んだのは、表面積が大きいので、AVR とかチップに 両面テープで貼りやすいと思ったため。

    .. の予定で 変換基板でモジュールを作ったのだが、うまく付かない。... 困った。

    そもそもこれらのチップは、基板の温度を測るものらしく、ダイと足の熱伝導性だけが考慮されている。... となるとむしろ 基板側を貼り付けた方が良さそう。


    TCN75A 84 円 ±1℃ (Typ)
    MCP9801 134 円 ±0.5℃ (Typ) (TCN75A 互換)
    TCN75 145 円 ±0.5℃ (Typ)
    STCN75 203 円 ±0.5℃ (Typ) (TCN75 互換)
    AD7414 252 円 ±0.5℃ (Typ) (間違い、ピン互換ではない)
    LM92 403円 ±0.33℃ (Typ)


    TCN75A/TCN75/STCN75/LM92/MCP9801/MCP9803

    SCL 1 8 VCC
    SDA 2 7 A2
    ALART 3 6 A1
    GND 4 5 A0

これ以外で国内のショップで買える I2C温度計は、スイッチサイエンスのTMP102搭載温度センサモジュールマイクロファンのMCP9803がある。MCP9803 は、MCP9801 と同じ? 違いが分かっていない。

    MCP9803 は、SMBus 対応品だそうだ。L の時間が 35 ms 以上だとリセットする機能が追加されている。

    mouser で調べると SA56004X がやたら安い。1 個 60 円。-- ただし LM75 系とはちょっと違う。ピン配置が、基本左右逆で リモートセンサが付けられる。LM86,MAX6657/8 ピン互換だそうだ。

    LM75B はもっと安く 46 円。--- だが、精度は悪そう。±3℃ではちょっと嬉しくない。パッケージも 0.65 mm ピッチだからハンダづけも厳しい。

とりあえず、MCP9801/3 , TMP102, LM92 のデータシートを見比べてみた。

まず、I2C のアクセスの仕方は、3つとも共通のようだ。

  • アドレスは、1001AAA (AAA は設定した値)
  • WRITE の場合、最初の 1 バイトは、ポインタバイトで レジスタの番号をセットする。続くデータがない場合は、READのためにレジスタを指定する意味
  • 続くデータは、1 または 2 バイトでレジスタに書き込む値。2 バイトの場合、上位、下位の順番。
  • READ では、レジスタの値が読める。2 バイトの場合 上位、下位の順番。


レジスタの意味は若干違う。ここでは、温度を読む機能に限定して説明する。

レジスタ0: 温度レジスタ

2 バイトの レジスタで signed short 。温度(℃)を 256 倍した値なのは共通。データの分解能は、チップや設定によって違う。


    MCP9801/3 0.5℃(9bit) 〜 0.00625℃(12bit)
    TCB75A 〃 (互換)
    LM92 0.003125℃(13bit)
    TMP102 0.125℃(12bit) 〜 0.003125℃(13bit)
    TCN75 0.5℃(9bit)
    STCN75 〃 (互換)

複数の分解能があるチップのデフォルトは、荒い方(bit数が少ない)のようだ。LM92 の 下位 3bit は ステータスなのでマスクする必要がある。

レジスタ1: コンフィグレーションレジスタ

MCP9801/3,LM92 は、1 バイト。TMP102 は 2 バイト。分解能の指定や測定インターバルを指定できる。


    MCP9801/3 30ms(9bit),60ms(10bit),120ms(11bit),240ms(12bit)
    LM92 500ms
    TMP102 4000ms,1000ms,250ms,125ms


いずれも Typ. 正確ではない。MCP9801/3 は、bit 数と 変換インターバルはトレードオフの関係。TMP102 は無関係(独立)。

3つだけ調べてみたが、他も似たようなものだろう。最初に設定したら、あとは 温度レジスタを読み込むだけの処理にできる。

追記:安い TCN75A の使い方は、MCP9801/3 と同じのようだ。
違うのは、精度だけ。

コンフィグレーションレジスタの bit6,5 で分解能を設定する。

    00 9bit
    01 10bit
    10 11bit
    11 12bit


コンフィグレーションレジスタの bit7 は、ワンショット。
bit0 が shutdown 。bit1 と bit7 を両方 1 にすると、A-D 変換を開始する。測定が終わるのが、上記の時間後。

測定のタイミングを制御できるのは、嬉しいかも。

TMP102 も ワンショットがある。こちらは、完了したかどうかも判る。
posted by すz at 23:37| Comment(0) | TrackBack(0) | 日記

クロックの校正方法

前の記事(WDT は温度計に使えるか?)で クロックの校正についてちょっと書いた。ここでは、どうするのが良いかまとめて見ようと思う。

普通の水晶発振器のレベルを元にして、RC発振器を校正するだけなら、方法は沢山ある。

しかし、GPS を使ったりして 水晶発振器を校正するとかまで考えると、方法は限られてくる。そういうことが出来ると いろいろ楽しいので、GPS での校正方法で統一しておきたい。

GPS にも 10MHz とかの出力があるものがあるらしいのだが、とりあえず安価で入手できそうなものは、1Hz (1PPS) のみらしい。

    aitendo の LR9543+アンテナ(3980円) とか GM318(6500円) とか。設定は シリアルだが、設定さえすれば、(電源をいったん切っても) 1Hz が常に出力されるようになるのかどうかは知らない。

    秋月の GT-720F は無理だそうだ。


精度は落ちるが、リアルタイムクロックに 1Hz 出力ができるものがある。デジキーで買えるのは、DS3232とか DS32B35とか DS32C35 とか。これに限らず、リアルタイムクロックは、1Hz 出力はできるものが多いようだ。

    秋月で 500円RTC-8564は、32.768 kHz、1024 Hz、32 Hz、1 Hz が出力できるし、リコーの製品も 32.768 kHz (と 2Hz 以下) が出力できるらしい。

リアルタイムクロックは、1Hz を出力するのに 設定が必要。だが、バックアップしておけば、問題ないはず。

設定はよくわからないが、とにかく 1Hz を出力してくれる装置があって、それを使って合わせることを考えてみることにしよう。

水晶付きの 別の AVR で 1Hz 出力をするにはどうするか?


とりあえず、1Hz の出力を出すものとして、AVR を使うのがお手軽なので、最初に考えておくことにする。

クロックに合わせて正確に出力するには、PWM を使う。1Hz にするための設定を考えれば良いわけだ。

クロック周波数が16Mhz の場合、プリスケーラで 1/256 にすれば、1秒は 62500 カウント。8Mhz なら 31250 カウント。16 bit タイマなら OK 。

8bit タイマ しかない AVR は工夫が必要。たとえば、16Mhz だとして、

  • プリスケーラ を 1/256 にして、タイマを 1/125 分周に設定すると、1 秒に 500 回オーバフローすることになる。
  • オーバフロー割り込みを設定しておいて、割り込み処理で 250 回に 1 回 出力をトグルする。
  • 割り込み処理では、かならず毎回同じ処理をする。
  • トグルする割り込みが来そうな時間帯は他の割り込みを使わない。

こんな感じ。8MHz なら 1/250 分周の設定。タイマの桁が足りないので汎用に作るのは難しく 12.8Mhz は無理。

AVR で 1Hz 出力をするにはどうするか?(誤差がわかっている場合)


まず、1Hz の クロック数が 32bit 変数(C)に格納されているとする。
処理は、2 Hz で 任意の PORT 出力をトグルすることにする。

それをするために、16bit タイマーをプリスケーラ 1/1 で使うことにして、次のようにする。

  • 周期 T で N 回 タイマーのオーバフローをカウントした後、
  • 周期を T2 に変更して、オーバフロー 時に PORT をトグルする。
  • T2 の期間は、他の割り込みを使わない。


N,T,T2 の計算は次のようにする。

仮に 1/65536 クロック周期にしてみる。

  • N = ((C/2) >> 16)
  • T = 65536
  • T2 = ((C/2) & 0xffff)


T2 が小さすぎて、T2 を設定する前に時刻が過ぎてしまうケースがある。T2 の最低値(T2MIN)を決めて、T を 調整する必要がある。

T を -1 すると、N だけ 時間が短くなる。T2 で調整するわけなので、T2 に N を加える。

16MHz クロックの場合、C/2 は、8000000 あたりだから N は 122 前後。T2MIN は 1000 ぐらいあれば十分そうだから、10 回ぐらいのループで調整できる。

校正する方の処理


とにかく、1Hz が得られたとする。校正する方の処理はどうするのが良いだろうか?

まずは、自分のクロック周波数の測定。まず、INT0/1 を使うことを前提にする。INT0/1 なら たとえば ↑エッジ検出 で割り込みが発生するように設定することができる。レスポンスを保証しないと なにかと面倒なので、他の割り込みは INT0/1 割り込みが来るころには、発生させないようにする。

INT0/1 割り込みでは、前の INT0/1 から CPUクロックがどれぐらい進んだかの カウンタ値(T)を 記録する。

  • 16bit カウンタを フリーランニングで使うとして、オーバーフローの回数は、平タスクで行う。
  • カウンタ値は、全部で 32bit にして、ずっと積算する。(クリアはしない。)。INT0/1 割り込みでは、前の値との差分をとって T を 計算する。
  • INT0/1 割り込みで、処理されていない オーバフローがある可能性がある。割り込み禁止にして処理してもいけない。この部分に工夫が必要。


さて、これで 1秒間の 平均の周波数は分かるようになった。

だが、ずっと記録してみると、おそらく値が変動する。温度も合わせて採取するとして、温度も変動するかも知れない。

なめらかに変化するように、簡単なフィルタ処理を入れておくと良いかも知れない。

たとえば ...

  • フィルタ処理の結果を Y1 とする。1回前のフィルタ処理の結果も記録しておいて Y0 とする。新たに採取された値は X 。
  • 計算式は、

    Y1 = Y0 + ( (X - Y0) >> N )

    N == 0 なら Y1 = X 。N == 1 なら Y0 と X を 1:1 の重みで平均する意味。N == 2 なら 3:1 での加重平均。

    それは良いが、せっかく採取した X の 下位 N ビットを捨てることになる。Y1/Y0 を 2^N 倍にした値ということにして、

    Y1 = Y0 + ( X - ( Y0 >> N ))

    が良いと思う。

    フィルタとしての意味は、LPF 。IIR=無限インパルス応答フィルタの一種。

    Y1 が 1 になってから X がすべて 0 だった場合、緩やかに値が減っていく。Y1 が 0.5 になるまでの時間 T を求めてみると


    ( 1 - 1/(2^N) ) ^ T = 0.5

    T ln(1 - 1/(2^N) ) = ln(0.5)

    T = ln(0.5) / ln(1 - 1/(2^N))


    16 Mhz は 24bit 必要で、32bit の値にするとすれば、N = 8 まで。これを計算してみると

    N T(秒)
      1 1.0
    2 2.42
    3 5.19
    4 10.74
    5 21.83
    6 44.01
    7 88.38
    8 177.10


      ちなみに、linux とかの uptime で出てくる ロードアベレージもこのような計算方法。
      manpage では、「過去 1, 5, 15 分のシステムの平均負荷」なんて適当に説明されているが、1, 5, 15 分は、Y1 が 0.5 になるまでの時間 = 半減期のこと。シフトでは、60 秒とか任意の値にできないので、固定小数点で乗算をしている。
      それ以外にも プロセスのプライオリティの計算にも使われていたりする。


    これを元に すると、例えば 0.00000001 になるまでの時間 T8 も求めることができる。

    T8 = ln(0.00000001) / ln(0.5) x T

    意味としては、Y0 の 初期値 0 で X を入力してから 8 桁まで収束する時間。計測をスタートしてから 使える値になるまでの時間と思って良い。


    N T(秒) T8(秒)
      1 1.0 26.58
    2 2.42 61.31
    3 5.19 137.93
    4 10.74 285.4
    5 21.83 580.1
    6 44.01 1169
    7 88.38 2349
    8 177.10 4707



posted by すz at 17:59| Comment(0) | TrackBack(0) | 日記

2010年01月19日

WDT は温度計に使えるか?

内蔵RC発信器(WDT含む)の特性は、各データシートの代表的特性に載っている。

それを見ると、どのデバイスもだいたい同じ特性で 内蔵RC発振器は、温度が上がれば 周波数が上がり電圧が上がっても周波数が上がる。WDT は、温度についても電圧についても逆。

ここでは、水晶が載っているような AVR で、WDT が、温度計に使えるかどうかについて考察してみようと思う。

WDT は、例えば 16ms 経過したら (リセットではなく)割り込みを発生するようなことができる。これを使って 16bit タイマカウンタが 16ms にどれだけ進むか計測すれば、WDT の周波数が分かる。

電圧が一定という前提があれば、周波数から 温度を割り出す ことができるはずだ。

    8MHz クロック を 8 分周すると、16ms で 16000 カウントになる。仮に 16ms が +30 % ほどになったとすると 20800 カウント。
    20 MHz で +30 % なら、52000 。

    このカウンタ値から 温度への関数を作れば良いわけだ。

基本的には、電圧 や 水晶の周波数さえも温度が変われば変動する。が、それも込みでキャリブレーション(校正) すれば、使えるものになりそうな気がする。

とりあえずは、tiny2313 のグラフをみてみよう。

グラフを見ると、リニアではないものの、二次曲線なら近似できそうな形をしている。おおざっぱで良いなら、30℃〜80℃の間は リニアのように見える。

3.3V のところを 読み取ると、30℃で 101.2 KHz 、80℃で 98.0 KHz ぐらい。

1 ℃あたりにすると -0.064 KHz /℃ 。-640 ppm/℃ ぐらい。30 ℃以下はこれより若干緩やかなカーブになる。

ちなみに、温度で 水晶の周波数がどれぐらい 変動するかというと 良く分からない。秋月の 12.8MHz モジュールだと ± 3 ppm /℃ と書いてある。30 ppm /℃という発振モジュールも見た覚えがある。AVR で どうなのかについては、見当が付かない。ここはまぁ 込みで 校正するということで気にしないことにしよう。

レギュレータは、普通のもので ± 100 ppm/℃ ぐらい。

WDT が電圧によってどれぐらい変動するかというと、25℃のとき 3V で 100.5 kHz , 4V のとき 99.6 kHz ぐらいに読めるから -0.9 kHz / V 。-0.9 % / V ぐらい。

で、レギュレータが ±100 ppm/℃ だとすれば、その影響は ± 0.9 ppm/℃ 。これぐらいなら無視できるだろう。

さてどうやって 校正 すれば良いのだろう?

グラフは曲線だから 3 点の温度は測定したい。測定するには、基準となる 温度計が必要。
どうせなら精度が高いセンサを使いたい。

調べてみると 、LM75 の互換らしき IC が多種類あることが分かった。インターフェイスは、I2C 。値段は デジキーの 1個の単価。


    LM75 互換チップ (SOIC-8)

    TCN75A 84 円 ±1℃ (Typ)
    STCN75 203 円 ±0.5℃ (Typ)
    TCN75 145 円 ±0.5℃ (Typ)
    LM92 403円 ±0.33℃ (Typ)
    AD7414 252 円 ±0.5℃ (Typ)
    MCP9801 134 円 ±0.5℃ (Typ)

MCP9801 が安くて良さそう。ちなみにプロトコルなどは調べていない。互換なのはピンアサインだけかも。

これを ターゲットにつないで、校正する。仮組み の状態でも良いが、レギュレータ や 水晶と 組みにしておかないと いけない。

低温は、フリーザと冷蔵庫で なんとかするとして、高温はどうしよう。常温と 使い捨てカイロ?

まぁどうにかするとして、これで 4 点 取れるわけだ。

グラフにしたときに ひどい形でなければ、それぞれの区間の直線近似でも良いかもしれない。あるいは、PC でデータを処理して 処理しやすいようなデータに変換するのも面白そう。

なんというか、校正するために 本物の 温度センサを使うのは結構おバカなわけだが ... ひとつ基準温度計として持っていて使いまわすというのもアリだと思う。

    I2C マスター用に 2 pin 空けておくだけ。ここにセンサを接続して、校正用ソフトに書き換えて 動作させれば良いはず。

あと、内蔵RC発振器を使った場合も同じようにすれば良さそう。込みで考えるならば、同じチップ内で温度が同じことが保証されるので、こちらの方がむしろ都合がよい。

うまくすれば、内蔵RC発振器の校正もできるかも知れない。

    3.3V のところを 読み取ると、30℃で 8.05 MHz 、80℃で 8.24 MHz ぐらい。計算すると、+469 ppm/℃。見事に 特性が逆。

    これを信用するとすれば、30℃〜80℃の範囲では、上記のカウンタ値がある一定の値になるように、 OSCCAL の値を調整すれば良い。ただし低い温度では、クロックが低めに調整されてしまう。

    信用しないとすれば、OSCCAL をデフォルトに一旦戻して、計測し、そのときのカウンタ値から 目標とするカウンタ値を出す関数を作れば良いはず。

    ただ、これだと、周波数が不連続で上がったり下がったりするから面白くないし精度も高くできない。誤差だけ出す関数にして、補正するのが良いかも。

    校正するには、周波数を測定するための外部クロックが必要。水晶の精度で十分だから 別の AVR で作るのが良いかも知れない。

    ついでに書いておこう。電圧を微調整すると 周波数も変わるわけだが、その方法。

    余計な機能がない 3端子レギュレータ の GND にゲタをはかせるとその分電圧が上がる。ダイオードを入れて Vf 分だけ電圧を上げるとかは、本で見たことがある。

    超低消費電流の 3端子レギュレータ では、VCC → GND に流れる電流もわずかなワケで、分圧抵抗で ゲタをはかせることも出来る。(S-812C33AY-B-G: 8個で100円!のデータシートにも記載されている。) 

    それが出来るのなら、PWM でも OK なわけだ。周波数など関係ないから、16bit の PWM で 少し電圧を上げるなんて使い方ができるはず。仮に +0.9 % (9000 ppm) /V とすると 1ステップあたり 0.45 ppm ぐらいの計算。

さらに、水晶自体の キャリブレーションとか。

より高い精度の 周波数カウンタがあれば 、内蔵RC発振器の校正と同じように水晶自体を キャリブレーションできるかも知れない。

たとえば、VHF 用の容量可変コンデンサ を水晶につけるコンデンサの代わりに付ける。(片側だけ)

    TOKOのページを見ると TKV1790AS3 が良さそうな感じ。... だが新しいらしいし入手は困難かも。

    東芝だと、カタログ(pdf)を見ると 1SV322(デジキー) が TCXO/VCO 用だそうだ。シングルのは、確か 0.01u とかと直列にして... カソードに電圧かけるんだっけか。

で PWM で 電圧制御してやれば、内蔵RC発振器を使った校正と似た感じの制御でできるはず。... まぁそこまでしなくとも 誤差知っていて温度補正ができるとなにかと便利なはず。

より高い精度の 周波数カウンタ... というのは今は 1PPS 出力がある GPS で作るとか。1PPS で±1us とかだそうで、1秒の計測で 6 桁。100 秒なら 8 桁? ... なんか GPS が欲しくなってきた。

本題から外れてしまうのだが、TCXO で検索して DS32B35というチップを見つけた。基本は、I2C インターフェイスの リアルタイムクロック(RTC) なのだが、クロック出力(32.768 KHz) とか 1PPS 出力とかがある。max で ± 3% の温度計 もついている。おまけに 不揮発性 RAM (FRAM) 2KB も付いている。

例えば、2 個の AT90USB162 の USART 同士をつないで、インターリンクケーブルを作り、余ったピンで I2C マルチマスターにして、このデバイスを接続すると、クラスタ制御するのに嬉しいかも。

どちらが、マスターかの情報とか、IPアドレスの設定とかを覚えておくこともできるし、NTP なしでも とりあえず時刻は同期できる。FRAM なので、書き換え制限は気にしなくて良い。定期的に FRAM を書き換えて、ノードが動作していることを 相手に知らせるような Heartbeatの機能も入れられる。同一ソースの時刻があるので、書き換えるデータとして最後に動いた時刻情報にすることも可能。

あと、他の余ったピンで相手の状態が分かれば完璧。電源が入っていないとか、USB の SOFパケットがこなくなったとか、そういうレベルの情報は 直接ピンを接続した方が良さそう。あと相手のリセットとか。

ただ、こういうのを手配線で作りたくはない。作るのが面倒というだけでなく、信頼性の問題。接続されている線が切れたりすることは考えたくない。

DS3232は、普通の SRAM で 236B しかないが、764 円とずいぶん安い。これでいいかという気もする。

    そういえば、USB切り替え器なんてものがある。機械的なスイッチだったり、リレーだったり、電子的なスイッチだったりするのだろうか? 少なくとも コレは 自動で切り替える機能があるから、機械的なスイッチではなさそう。電子的なスイッチだとすれば、専用 IC があるのだろうか?

    電子的なスイッチなら是非欲しい。USBハードディスクを 2台の NAS で 切り替えるのに 使いたいのだ。
posted by すz at 01:32| Comment(0) | TrackBack(0) | 日記

2010年01月12日

CPLD で何を作ろうか

デジキーで買い物するついでに CPLD CoolRunner II XC2C64A-7VQG44C 1 個 245 円 を買ってしまった。

XMEGA の DMA と合わせてなにか面白いものが出来ないかと思ったのだが、具体的な計画はない。


    ちなみに XC2C32A-6VQG44C はさらに安く 1個 125 円。

    CoolRunner II には、1.8V が必要だが、MCP1700が安い。消費電流は心配なさそう。XC2C64A は、25Mhz で 1.8mA , 240 Mhz で 17.77 mA だそうだ。


まず思いついたのは、Xmega 用の FullSpeed USB のフロントエンド。NZRI の処理をした後のビットストリームを SPI でやりとりするとか SPI は 16MHz までいけるし DMA もできるし .. 頑張れば作れるような気がするのだが、専用 IC 使った方が良さそうだし 意味が見いだせない。例えば AT90USB162 でインターフェイスするのと比べてメリットがあるのかどうか?

自分としては、実用・非実用は別にして、CPLD を使う意味が見いだせないと面白くない。

あまりにつきなみだが、CPU は意味がある。FPGA ならもちろん作れるわけだが、安い CPLD で実現すること自体が楽しい。非実用的だと割り切れるから USB の場合と違う。

さて ググってみたら OpenCores に MCPU - A minimal CPU for a CPLD というのがあることが分かった。

ドキュメントの PDF を見てみると、4 命令しかない。

    命令 オペコード 説明
    NOR 00AAAAAA Accu = Accu NOR mem[AAAAAA]
    ADD 01AAAAAA Accu = Accu ADD mem[AAAAAA],update carry
    STA 10AAAAAA mem[AAAAAA] = Accu
    JCC 11DDDDDD Set PC to DDDDDD when carry == 0, clear carry

これですべてを説明している。データを保持するのは、Acc 8bit / carry 1bit / PC 6bit / アドレスラッチ 6bit で 21 bit だけ。これなら 32 マクロセルに入っても不思議はない。

これに入出力のポートと RAM を付ければ動いているのが確認できるはず。ちなみに、RAM のプログラミングは JTAG のバウンダリスキャンを使うことで 機能として組み込まなくとも一応はできる。

実用性はなさそうだが、面白そうではある。

OpenCores には、1bit CPU なんてのもある。MC14500Bの エミュレーションだそうだ。

データシートを見てみると、命令は 16 個で、4 bit 。オペランドはない ... というか外部回路で好きにできる。

基本は外部のプログラムカウンタを +1 してメモリを読み出し、4bit を 命令として 入力する。条件スキップ はあるので、JMP を実装せずとも プログラムは作れる。JMP は、JMP という ピンを ↑↓するので、オペランドを PC にロードすれば良いのではないかと思う。


    ピン
    I0-I3 I : 命令
    RR O : Resule Reg 出力
    DATA I/O
    WRITE O
    JMP Flag O
    RTN Flag O
    Flag O O
    Flag F O

    IEN Reg (Internal) : DATA is allways 0 if 0
    OEN Reg (Internal) : WRITE is allways 0 if 0

     命令    説明
    NOPO 0000 Flag O → ↑↓
    LD 0001 DATA → RR
    LDC 0010 ~DATA → RR
    AND 0011 DATA AND RR → RR
    ANDC 0100 ~DATA AND RR → RR
    OR 0101 DATA OR RR → RR
    ORC 0110 ~DATA OR RR → RR
    XNOR 0111 ~(DATA XOR RR) → RR
    STO 1000 RR → DATA , Write → ↑↓
    STOC 1001 ~RR → DATA , Write → ↑↓
    IEN 1010 DATA → IEN
    OEN 1011 DATA → OEN
    JMP 1100 JMP Flag → ↑↓
    RTN 1101 RTN Flag → ↑↓, skip next inst.
    SKZ 1110 Skip next inst if RR == 0
    NOPF 1111 Flag F → ↑↓

まとめてみたが、どう使えば良いものやら。

それはともかく、こういうのがアリなら、命令用メモリに SPI シリアル FLASH を使うのはどうだろう。

JMP は、恐ろしく遅そうだが 連続しての実行がメインなら、ものによっては 100MHz x2bit で ロードできる。命令が 16bit でも 10Mips は超える。データは 1 bit でも良いのかも知れないが、余裕があれば 8bit とか。データ用メモリも SPI のシリアル SRAM 23K256(162 円)にしてしまうと面白いかも知れない。

まぁ 64 マクロセルでできる範囲は知れている。工夫してもこの程度だろう。ちなみに、PicoBlaze は、xapp387 によると XC2C256 でようやく載るらしい。XC2C64A 程度では全然無理。

他のものだと ... フレームバッファとか 逆にキャプチャするようなもの?

ロジアナ? 

カウンタがあってメモリに書き込むだけだから、基本機能は簡単そうな気がする。が、安い製品もあるし、自作するなら 遅い代わりに大容量とか特徴づけたいし ... ただ、あまり遅いと ATAVRXPLAINで出来てしまって、作る意味がなくなるかも知れない。

    ちなみに mouser で \3,253.3

    ATxmegaA1 の PortA と PortD の 16bit が ピンヘッダとして外部に出ている。PortA は、ADC と DAC があり、PortD は、USART / SPI / TWI があるらしい。外部メモリとして 64Mbit(16Mx4bit) SDRAM がついている。

あと、メモリは ピン数が多い。基板を作るならともかく、手配線は面倒で嫌。2 chip 以上だと とても嫌... というか無理。

とりあえず扱えそうな SRAM を探すと、256Kx8 だと、高速な IDT71V124SA10PHG8 358 円とか 低消費電力でそこそこ速い CY62128EV30LL-45SXI 322円とか。

SRAM は良いのだが、大容量を満たすために、SDRAM とか 使えないのかな。一応調査。

64Mbit (4M x 16) は、MT48LC4M16A2P が 435 円。
256Mbit (16M x 16) は、MT48LC16M16A2Pが 835円。
ちなみに 64Mbit の IS42S16400F(481 円)、256Mbit の IS42S16160D(1036 円) というのも扱っている。

DDR はさらに扱いが難しそうだが、一応。

128Mbit (8M x 16) は、MT46V8M16Pが、543 円。
512Mbit (32M x 16) は、MT46V32M16Pが 891円。

使えるものなら DDR の方が良いのだろうなぁ。

ちなみに、XAPP384 - Interfacing to DDR SDRAM with CoolRunner-II CPLDs というのがある。XC2C128 を使っているが、使用マクロセルは 60 だそうだ。シーケンシャルに READ または WRITE するだけなら 単純化できるだろうし、意外にも可能性があるのかも知れない。... ここまでしたいならすなおに XC2C128 を使えば? という気もするが ... 0.5mm ピッチはちょっと嫌。可能なら 0.8mm ピッチまでが嬉しい。XC2C128 1つよりは、XC2C64A x 2 を選びたい。

ところで、XAPP785 - Level Translation Using Xilinx CoolRunner-II CPLDsとかXAPP429 - 5V Tolerance Techniques for CoolRunner-II Devicesなんてのもある。入力側のラッチにも使えそう。

そんなことより、もっと大きな問題があった。使っている PC は、eeePC で 16GB の SSD しか積んでいない。C: は 8GB 。ISE WebPack 11.1 を インストールできそうにない。... 困った。

追加:

そういえば、PLL 発振器 も定番かも。参考→ PLL発振器の製作

カウンタは CPLD の得意分野 (l規模が小さいほど高周波数で動作する:XC2C32A なら )だし、位相比較器 もロジック回路。VCO と基準周波数は、外付けの必要がある。

posted by すz at 19:06| Comment(0) | TrackBack(0) | 日記

2010年01月11日

デジキーで買い物

デジキーでパーツを発注した。(前回の購入は、デジキーでチップ抵抗の記事)。

ATmega32u2 1 個 387 円。

AT90USB162 で いろいろ作ってきたが、コード領域が足りなくなる心配があった。ブートローダ領域を 4KB 取るので、12KB → 28KB 。これなら当面余裕だろう。

リセットIC (1.8V) NCP300HSN18T 1個 58円
Pch MOSFET DMG3415U 10個 332円

これで NiMH 2cell 用 過放電保護回路を組むのだ。

ついでに、リポ電池用に 3.0V のリセット IC NCP302HSN30T と Nch MOSFET DMG3414U 10個 360円も。(3.0V を買ってしまったが、2.7V で良かったかも)

インダクタ CB2518T 10 個 170 円 から 4.7uH (R), 6.8uH , 10uH, 22uH , 47uH 。
インダクタ NRG4026T 10 個 430 円 から 6.6uH, 22uH。

CB2518T が安いのでストック。NRG4026Tはちょっと電流を流したいとき用。

今回の購入のきっかけは、CB2518T。なんかとても欲しくなってしまった。

同期型昇圧 IC SC120SKTRT 1 個 68 円。

ダイオードがいらなくて周波数がたかい。出力は可変 / 3.3V 。
CB2518Tに合わせて買ってみた。

(PPS) フイルムコン ECH-U01103GX5 0.01uF 10個 310円。
(PPS) フイルムコン ECH-U1C473GX5 0.047uF 10個 479円。

0.01uF はフィルタ用。0.047 uF は、なんとなく。これ実は、千石で扱っている。0.01 uF だけで良かった。

ちなみに、メタライズド・ポリエステル は、温度や周波数で容量がずいぶん変化するようだ。メタライズド・ポリプロピレン は 周波数特性は良いが、温度特性がいまひとつ。PPS は安定している。

X7R 積セラ GRM21BR71H474KA88L 0.47uF 50V 10個 327円。
X7R 積セラ CC0805KKX7R8BB474 0.47uF 25V 10個 91円。

アンプの入力のカップリング用。耐圧が高いと、電圧の変化に対する容量変化が小さい。耐圧の差で値段が全然違う。

レギュレータ XC6221B152MR 10個 420円。
レギュレータ MCP1700T-1202E 10個 370円。

基準電圧に使おうと思って購入。XC6221B152MR (1.5V) は、2.3V 以下で使うとき用。MCP1700T-1202E (1.2V) は、2.3V 以上用。

MCP1700 はついでに、1.8V と 3.0V も購入。(3.3V は購入済)

CPLD XC2C64A-7VQG44C 1 個 245 円。

XMEGA の DMA と合わせてなにか面白いものが出来ないかと思って購入。だが、結局なにも作らないかも。まぁ安いので。

    ちなみに XC2C32A-6VQG44C はさらに安く 1個 125 円。1.8V が必要だが、MCP1700 が使えるし。

    MCPU - A minimal CPU for a CPLDというのがあって、32 Macrocell CPLD にフィットするらしい。XC2C64A なら倍だから、意外に実用的なものが作れるかも知れない。

    そういえば、メモリは買ってない。とりあえず、どんなのが買えるか検索。256Kx8 だと、高速な IDT71V124SA10PHG8 358 円とか 低消費電力でそこそこ速い CY62128EV30LL-45SXI 322円とか。

    SPI のシリアル SRAM 23K256 162 円てのもあるのか。

あと抵抗。
MCR10EZPJ ±5% 50個 119円。
MCR10EZPF ±1% 10個 38円。

から前回書い忘れたものを購入。±5%も±1%も値段はあまり変わらないのだが、精度が必要ない用途は ±5%にしている。理由は 4 桁の数字が読みにくいから。
posted by すz at 13:16| Comment(6) | TrackBack(0) | 日記

2009年12月19日

USB電池BOX EP-024CHA

100均で USB コネクタの電池BOX (単三 x2)があるのを知り、入手しようと思っている。型番は EP-024CHA 。JR7CWK'sぶろぐ で詳しく紹介されている。販売店はシルクだそうだが、通販で扱っている店もあるようだ。

使用 IC は、BL8530 。aitendo で 3.0V タイプを扱っている。HT77xxA と同じようなもの。ピン互換性はあるが、周波数が違うため、最適なインダクタも違う。

自己消費が少ない(負荷なしで 12 uA)ので電源スイッチなしでも問題なさそうだし、完全に空になるまで動作する(起動電圧は、0.8-0.9 V)から 一次電池で使うのに向いている。

    LX の電流制限が 0.7A なので、肝心の 携帯充電に向いているかどうかは分からない。500mA 流すのは無理だと思う。自作機器のバッテリーとかにするのなら良さそう。

ただ 二次電池を使うのはどうだろう。HT77xxA も同じだが、過放電が怖い。なにか対策は出来ないのだろうか?

リセットICを使う方法(まとめ)


必要なもの
1) 1.8V以下 で 出力を H にする (Active-High) 低消費電流(数 uA以下)の リセットIC

2) 低電圧で動作する Pch MOSFET


リセットIC の出力を MOSFET の GATE に接続する。MOSFET が ON のときは、数十 mΩ の抵抗が 入っているのと等価。OFF になった場合 HI-Z 。低消費電流のリセットIC を選べば この状態での電池の減りは気にしなくて良くなる。(自己放電の方が多そう)

(充電とかで) 高い電圧を 入力すると FET 内のダイオードを通して電流が流れる。(ある程度充電されて) 電池の電圧が 1.8+α になると ON になる。

リセットICは入手が難しい。1個単位で買えるものは限られる。特に Active-High のものは 品種が少ないので、さらに入手が難しい。
Active-Low なら GND 側に Nch MOSFET を付けることになる。

必要なもの2
1) 1.8V以下 で 出力を L にする (Active-Low) 低消費電流(数 uA以下)の リセットIC

2) 低電圧で動作する Nch MOSFET




ちなみに、リポ電池も、 2.85 - 3.0V のリセットIC を使えば同じように過放電保護が出来そう。

ちなみに、TrustFire Protected 10440の場合、こんな保護機能が入っている。

    - With integrated PCB Protection
    - Over current protection current: 4A
    - Over current protection voltage: 0.2V
    - Over charging protection voltage: 4.25V +/- 25mV
    - Over discharging protection voltage: 2.5V +/- 50mV

過放電保護以外に過充電保護と過電流保護があるようだ。過電流を流すと危険なので、保護することは重要かも知れない。MOSFET の性能で電流を流せないだけという気もちょっとする。

意外だったのは、過放電保護が 2.5V なこと -- 2.85V を死守しないといけないかと思っていた。なら、リポ電池で、2.7V のNCP300HSN27Tも使えそう。

AVRを使う方法



リセットICは入手が難しいし 電圧毎に用意しないといけない。ADC 付きの AVRで、低消費電流になるように使えば、良いのでは?

とは思う。... だが、AVR の内蔵基準電圧は、精度が悪い ± 10% ぐらい。

外付けの基準電圧を付けるにしても結構高い。しかも 最低電圧も結構あり 1.8V で動くようなものは 入手できない。たとえば MAX6001の最低電圧は、2.5V 。

レギュレータを探してみると ... XC6221の 1.5V のものが安くて良さそう。消費電流も 25uA と割と少ない。SHUTDOWN も出来るから、さらに減らすこともできる。

ちなみに、2.3V 以上で良いなら MCP1700が良さそう。安いし 精度も高く、さらに 消費電流が 1.6 uA 。

結局のところ、基準電圧も入手が難しいので リセットIC で 過放電保護回路を作って完結させてしまうのが良さそう。

充電機能も付けるには



MyCharger Stick のような製品がある。こういった機能を付けるにはどうしたら良いのだろう。

ここでは、2 cell NiMH だけを考えることにする。

最も簡単そうなのは、電流制限付きの 2.8V 定電圧回路。MC34063A とかで 作れることは作れる。

  • ピン 6-7 間 の抵抗値で ピーク電流を 制限する。ピーク電流 /2 が 最大出力電流。300 mV だから、0.33 Ωで 1A 。ただし精度はあまり高くない。± 20% ぐらい?
  • ピン 5 が FB (1.25V) 精度は ± 2% (25℃)
  • インダクタのインダクタンスは、電流が大きいほど、入力電圧と出力電圧の差が小さいほど、小さな値にできる。

  • セリアで売っている 片山利器製USBポート付シガーソケット専用DC充電器 をバラして インダタクタと一緒に流用するのもアリかも知れない。

    まず、電流検出抵抗(R1)が、0.15Ω なので、0.3 Ωに変更。これで Ipk が 1.0A (最大出力 500mA) に制限できる。インダクタは 変更する必要はないが、計算してみると 5V 入力の場合 22 uH まで小さくできる。... というか小さくしないと (制限値まで)電流を流せないかも。

    出力電圧の調整は難しい。精度のよいテスターで 小負荷で 2.8V になるように 調整しないといけないのはもちろんだが、温度が変化しても 2.8V を超えないようにしないといけない。

    AVR とかで制御する場合は、FB を H レベルにすることで 出力を止める。定電流駆動だけ使えば良いから 2.8V きっかりにこだわらなくても良さそう。


2.8V が上限になるようにちゃんと調整さえできれば、過充電の心配はしなくて良さそう。ただし、電池が変になっていないという前提があるし、充電完了が分からないという問題もある。

AVR を使って PWM で 充電回路を作る方法もあるが、管理だけするのも アリだと思う。充電回路などは危険なので 確実に作れないとマズい。

AVR での処理は、

  • 充電時間の上限の管理。
  • (できたら)電池の温度の管理。
  • 定期的に充電を止めて、電圧の測定。
    正確に電圧を測定して、ある電圧になったら完了とかで良いのではないかと思う。もっとちゃんと作るには、たとえば MCP73831/2 のデータシート (pdf/日本語)のアルゴリズムを参考にしたら良いと思う。
    この場合は 基準電圧として TL431 などを使っても 問題ないと思う。


ところで、AVR を使うなら やはり AVR で充電したいような気もする。どうするのが良いのか考えておこう。

まず、定電流の充電。

Pch MOSFET 22uH
5V 1.8V 〜 2.8V
Vin --------+- S D --+---- L ----+--- Vout
R1 G | |
PWM ----R2 -+-----+ D↑ C
| |
--+-- --+---
Vf = 0.4V


とりあえずこんな回路を考える。インダクタは 22uH を使うことを前提にしてしまう。
電圧の範囲も 入力 5V 、出力 1.8V 〜 2.8V を前提にしてしまう。
この条件で L に流す最大電流を 1A にするには、どうするのか?

MC34064A のデータシートを見ていると


    Ton : Toff = Vout + Vf : Vin - Vsat - Vout

という関係になるらしい。
Vsat = 0 としてあてはめると

    Ton : Toff = 1.8 + 0.4 : 5.0 - 1.8 = 2.2 : 3.2
    = 2.8 + 0.4 : 5.0 - 2.8 = 3.2 : 2.2

あと、

    Ton(max) = L x Ipk / (Vin - Vsat - Vout)

という関係もある。L = 22uH , Ipk = 1A とすると、

Ton(max) = 22 / 3.2 (uS) = 6.9 (uS) (Vout = 1.8V)
(Ton + Toff) = 16.9 (us) (59.3 kHz)
Ton(max) = 22 / 2.2 (uS) = 10 (uS) (Vout = 2.8V)
(Ton + Toff) = 16.9 (us) (59.3 kHz)

たとえば、8MHz で動かしていれば 1周期 135 クロック。Vout によって L 時間 55 〜 80 クロックで変化させる。
    注意)これはあくまで目安。実際のL が 22 uH より小さい場合 1A より電流が流れてしまうかも知れない。誤差を考慮しないといけない。

こんな感じの処理で良いが、時々充電を止めて 電圧をちゃんと測定する前提なら、もっと 単純化しても良さそう。

ところで、充電回路 だが、電源につながっていない場合、Pch MOSFET のボディダイオードを通して バッテリーから電流が流れ込む。逆流防止用のダイオードが別に必要。


ちょっと検討してみたのだが、逆流防止用のダイオードを入れるのなら、最初からトランジスタにした方が良いような気がしてきた。
あと、3.3V レギュレータの S-812C33AY-B-G を 基準電圧に使うのが安くて良いかも。

    2SA1160 は、TO-92形の背が高いタイプ。耐圧は10V しかないが パルスで -4A 流せる。hFE も大きめ。似たタイプだと TO-92 の 2SA1300 がある。マルツで扱っている。ちなみにコンプリは、2SC2500(2SA1160),2SC3279(2SA1300)

    この回路の通りだと、電源につながっていないときに、バッテリー から ADC3 を通じて AVRに電流が流れ込む、ちょっとまずい。ADC3 と BAT(+) の間に 100K Ωを入れるのが良さそう。


(以下 発散しすぎなメモ)


前にも書いたのだが、Pch MOS FET を使って スイッチを作り、1.8V 以上でないと On にしないという保護回路を付ける。自作するなら、ADC 付きの マイクロコントローラがあれば簡単。電池の電圧を (1秒に1回とか)ときどき測定して 1.8V 以下になったら FET を OFF にする。待機しているときは、電力を消費しないように工夫する。
    補足:
    ディスクリート で組むのは難しい。原理は簡単でも、低消費電力の基準電圧とか入手性が悪い。ときどきしか 基準電圧を ON にしないようにして、平均の消費電力を減らしたほうが自作には向いているのだ。

この程度の処理なら、Tiny13(A) で十分。秋月で120円だし入手性も問題ない。

ただ、低電圧で駆動できる Pch MOS FET の入手が難しい。秋月なら IRLML6402がなんとか使えるかも知れない。ただし、09/12/19 現在は在庫切れ。デジキーならPMV65XPとかが買えるが...

具体的に検討してみよう。まず、コントローラを Tiny13A と決める。AVR の VCC は電池に直結。Pch FET は、470k Ωで プルアップして AVR の PORT につなぐ。

    PORT を 出力にして L にすると、電源 ON 。このとき 2.4V なら プルアップだけで 5uA 消費する。BL8530 が 12 uA だから馬鹿にできない。... もう少し大きな値にした方が良いかも。

さて、あとは 電池電圧を測定する回路。1.1V 基準電圧使うとして、VCC を 100K , 33K ぐらいで 分圧して ADC に入力することにする。... 抵抗値はあまり大きくできない。これでも大きすぎかも知れないぐらい。常時接続はできないので VCC ではなく、PORT に接続することにする。PORT を H にしたときだけ 測定可能ということになる。

この基本回路で 3 pin 使った。あと 2 pin 使える。

付けるなら、スイッチ + LED 。

    __
    VCC --- R --- LED -+-o o--- GND
    |
    PORT

こうかな。SW 押しても LED が点灯しなければ 本当に電池がない。SW の 長押しで 電源 On/Off 。SW 付けない場合もあるし、初期状態は On 。

On にした後、数秒は LED を付ける。あと Off にしたら やはり数秒点滅。

あと 1pin あるが、CE 付きの昇圧 IC 用に On にしたら H にするようにしたら良いと思う。CE = L にしても 昇圧を止めて 電池電圧 - αの出力にするだけだが、Pch MOS FET の代替としての意味は多少あるだろう。

    HT77XX や BL8530 でも 5pin タイプのものがあり、それには CE が付いている。BL8530 では、0.9V 以上にならないと On にしないようだ。HT77XX では 2V と書いてある。... がこんなところで基準電圧を使うわけでなさそうだから鵜呑みには出来ない。

    aitendo で 扱っている PT1301 はピン配置も周波数も全然違うのだが、LX に 最大 1.5A も流す。これで USB電池 BOX を作れば、5V 500mA (以上の)の出力にできるかも。こいつにも CE は付いている。ただ、負荷なしの消費電流は若干多く 56 uA (+ FB 用分圧抵抗分)


回路はこんなもの。あとはプログラム。いかに電力を削減できるかやってみるのは面白そう。

ちなみに、BOD は使わない方が良い。使うと 内部基準電源が使われて消費電流が 20uA 弱増える。WDT(+ 4uA) のがマシ。AVR 全体として平均 10uA なら上出来で、50uA ぐらいを取り敢えずは目指せば良いと思う。

さらに書いておくと、電池BOXの EP-024CHA は、 USB 側に抵抗が入っている。USBの Battery Charging v1.1 規格に沿って いるのだと思う。(pdfのzip) 。ちゃんと理解できていないが、結果として 100 uA ほどの消費電流になっているらしい。対応機器を充電するのでなければ、取ってしまった方が待機時の電流消費が減って嬉しいかも。

EP-024CHA の改造ネタはこんなところ。いずれ挑戦したい。

追記:

いろいろ書いたのだが、デジキーで NCP303LSN16T1というのを見つけた。

NCP303 は、いわゆるリセットIC で消費電流が 0.4 uA と非常に小さい。ある電圧以下になると、オープンドレイン出力を On にする。だが、逆の論理の出力も持っていて、ある電圧以下になると、H を出力できる。この型番は、1.6v 以下を検出するものだが、1.8V の NCP303LSN18T1などもある。LSN の部分が HSN になると 論理が逆になる。NCP300-302 もあってなかなかヤヤコシイ。

それはともかく、これに Pch MOS FET を直結するだけで バッテリーの 過放電保護ができそう。PMV65XPと合わせて買うと良いかも。

まぁ、AVR で組めば応用ができるので、意味がなくなったとまでは思わない。... だがしかし。

追記: 同期型 昇圧 IC を探してみた。

NCP303 を買うとしたら、ついでに 同期型 昇圧 IC というのも買えば、外付けの Pch MOS FET なしでも off に出来て嬉しいのではないか? ..と思って探してみたら、SC120SKTRT というのが見つかった。一個 68円と安い上に、外付けのショットキーバリアダイオードも不要。3.3V 固定のモードと 1.8V 〜 5.0V 可変のモードを持っていて応用範囲も広い。

最大入力電流は、1.2A だそうだ。インダクタは、4.7hH 。2.4V → 5V 昇圧で 200mA まで 効率 80% 。300mA ぐらいが限界のような感じ。

    なんか勘違いしていたかも。同期型でも off のとき 電池の電圧分は出力に流れるはず。

さらにさらに、これに合うインダクタを探してみたら... 太陽誘電の CB2518T4R7MRとか、CB2518T4R7M とかが見つかった。10個で 170円! ... デジキーってインダクタは高いものばかりだと思っていた。CB2518T4R7MR は、4.7 uH 1.2A 、Rなしは、1.1A 。

CB2518T で検索すると いろいろ出てくる。あと安そうなのは、CBC3225T の 10個 305円 とか NRG4026TNR4018T の 10個 430 円とか。

ここから、ちょっと脱線して、デジキーついでメモ

CB2518T220K は、22uH , max 580mA 。aitendo で扱っている XZ5121は、LX が 300mA のようなので、十分使えそう。デジキーで買える同じピン割り当ての AP5724(78円) は、750 mA 。...なのだが推奨インダクタに、22uH , 510mA のものがあるので 使えるはず。BL8530 も 最大 700mA で、インダクタンスが 10uH 〜 100uH (標準 27uH)と なっているので大丈夫そう。

    XZ521, AP5724, BL8530 , PT1301 は LX の電流を検出して制御している。だから最大絶対定格は関係なく制限値が重要。インダクタに流れる電流はノコギリ状なので、平均値は制限値 より小さい。インダクタの最大絶対定格より、制限値が 1-2 割大きくても問題ないらしい。

HT77xxA は周波数が低いから 22uH では小さすぎる。... ただし使えないとまでは行かないようだ。CB2518T470K だと 47uH, 420 mA で、ちょっと不安。NRG4026T470M の 47uH, 650mA ぐらいが良さそう。

    HT77xx は、LX の電流制限をしていないように見える。HT77xxA では、その機能が入り周波数が、115kHz → 200kHz になった。ただ、電流の制限値が書かれていない。

まとめると

    4.7uH 10uH 22uH 47uH
    CB2518T 1.1A 0.82A 0.51A 0.42A
    CB2518T(R) 1.2A x x x
    NRG4026T 1.6A 1.3A 0.9A 0.65A

    SC120(1.2MHz,1.2A)
    PT1301E(500kHz,1.5A)
    XZ5121(1MHz, 0.3A)
    AP5724(1.2MHz, 0.75A)
    BL8530(350kHz, 0.7A)
    HT77xxA(200kHz, ?)
    HT77xx(115kHz,-)

    注) XZ5121,AP5724 が高い周波数にもかかわらず、高インダクタンスなのは、高電圧向け(LED 6直列)のため。電圧を低くして電流を流す場合は 10uH, 4.7uH とかにすべきだと思う。
    ...たぶん。

こんな感じか。

色々調べてみて、SC120が気に入った。安いし、ダイオードもいらない。過放電保護を入れる場合でも Pch MOSFET がいらない。 電圧は可変にできるが 3.3V で良いなら分圧抵抗もいらない。同期式で効率も良いし。マッチするインダクタも安そうだし。

ちょっと SC120 をどう使うか検討してみよう。

1)LED ライトとか昇圧付き電池BOXの過放電保護

2セルの NiMH 前提として、1.8v 以下になったら自動的に OFF

NCP300LSN18T1/NCP302LSN18T1 の Reset Output を EN に接続。

    他の CE 付きの昇圧 IC の場合も同じ。Pch MOS FET をつなぐなら、HSN にする。

    リチウムイオン用に Pch MOS FET をつなぐ ならNCP300HSN30T1 ?

    NCP301/NCP303は、オープンドレインなので、Reset Output をプルアップする。(抵抗値は、1MΩ とか)


2)AVR の電源として使う


    __
    BAT+ ---------o o----+--- C ---GND
    |
    +--- R -- GND
    |
    PORT(ADC) --+-- EN
    R 1M
    C 1u

こうかな?

ボタンを押すと 電源が入る。1 秒以内に勝手に Off になるので
起動したら とりあえず PORT を pull-up 。

電源を切る場合は、HI-Z にすればしばらくして off になる。

ボタンのセンスは ADC 。通常は ほぼ VCC レベルだが、ボタンを押せば BAT+ まで落ちる。

過放電保護をしたければ、AVR で処理を入れれば良い。


    他の CE 付きの昇圧 IC の場合は、電源側に Pch MOSFET を入れて...

    __
    GND ---------o o----+--- C ---BAT +
    |
    +--- R -- BAT +
    |
    PORT ----+-- GATE

    PORT --------- EN(CE)
    R 1M
    C 1u

    こうかな? ... ちょっと適当。電源 On はできるけど、センスはできない。昇圧 On はPORT でするか、常に On。


さらに ...バッテリーの過放電保護ができる 昇圧 IC を探してみた。

見つけたのは、NCP1421。1 個 198 円もするのだが、バッテリーの電圧が ある電圧以下だと OFF にできる機能付き。これはちゃんと OUT を切り離す。あと1.2V ±1.5% 電圧リファレンス出力もある。
nch は、1.5A 制限で 1.2 MHz 。ただ 0.65mm ピッチ 8pin で気軽に使えないかも。


    ちなみに電圧リファレンスも探してみたが、MAX6006(A/B) (1.25V), とか TLV431(A/B) (1.24V) があるものの 100円とか それ程安くない。消費電流も 55uA とか常に On するにはちょっと多い。
    レギュレータの方が安いぐらい。1.2V なら MCP1700T-1202E とか NCP585HSN12T1G とか。

    そういえば、SOT-23-5 タイプのレギュレータで BYPASS 端子があるものがある。調べてみると、内部リファレンス電圧がそのまま出力されている。電圧は定義されていないが、実測して使えば使えそうな気がする。秋月だと、SI91841DT-285 2.85V ±1.5% 5個 100円。あと、TAR5SB33 3.3V ±3% 10個 280円とか TAR5SB50 5.0V ±3% 10個 300円 とかは NOISE と書いてあるけど 同じみたい。

    デジキーで探すと、TC1015-3.3V 3.3V 100mA ±0.5% 10 個 360円 とかもある。(他に TC1014,TC1185 も)。ただし、こっちは 470PF 標準で、上のチップの 1/20 の容量しか付けないので、リファレンス電圧の出力電流も一桁低そう。AVR の AREF に付けても大丈夫なのか不明。

    規格外の使い方なので、危険ではある。特に VCC として利用した上で BYPASS を AVR の AREF に接続する場合、設定を間違えるとレギュレータがスルーになって回路全体がダメージを受けるかも知れない。注意が必要。
posted by すz at 14:30| Comment(3) | TrackBack(0) | 日記

2009年11月18日

AVRに関する雑記

いまは、作った基板で遊ぶのに忙しく、当面他のものには手を出さないつもりなのだが、ちょっとメモ。

P板.com関係



P板.com ではアナウンスしていないのだが、アマゾンで、【P板.com】オーダーメイドプリント基板(120.0 × 120.0 mm寸法)ワークサイズパッケージ!という製品がある。

ゆきさんのつれづれ日記を通してで知ったわけだが、基板を作ったときのアンケートで、”通常価格では無理。キャンペーンに期待している。”みたいなことを書いたら、教えてくれたので、秘密にしている .. というほどではないみたい。

いまの基板はバグがあるので、一通り使ったら、ちゃんとしたのに作り直したい。面付けは ルータなら 3面までだが、Vカットなら 5 本なので、1/2 C 基板に統一すれば 面数は稼げるような気がする。

そのときは是非これで作りたい。

XMEGA



一年以上前に XMEGA はそろそろかなんて記事を書いたのだが、全然買えなかった。

最近気が付いたのだが、ぼちぼち A3/A4 が買えるようになってきた。メモを ↑の記事に追記していこうと思う。

作った基板が片付いたら次は XMEGA で なにか作りたい。

0.5 mm ピッチしかも 100 pin の A1 は私には無理。0.8mm ピッチの A3 か A4を使うつもり。

HERO'S Download にある、AVRxmega.ZIPとかもぼちぼち見ているのだが、zip に含まれる AVR1003.pdf を見ると、クロック周りは(も)格段に進化しているようだ。

内部 RC 発振器には、2MHz と 32MHz があるが、PLL で 1-31 倍にできるらしい。そして 内部 RC 発振器 に自動校正機能(DFLL) があって、32.768 KHz の RTC 用 CLOCK に同期することが出来るらしい。

32MHz までが仕様だが 50MHz まで動いたという情報もあるし、結構楽しめそう。

AT90USB162



dfu-programmer (0.5.2) をビルドしたは良いものの、ブートローダを 消去してしまったりするのが怖くて 使えてなかった。

どうも プログラムで、シグネチャーとかヒューズとかが読めるらしいので、まずは確認。


    uint8_t read_fuse(uint16_t addr) {
    SPMCSR |= (1<<SPMEN) | (1<<BLBSET);
    return __LPM(addr);
    }

    uint8_t read_signature(uint16_t addr) {
    SPMCSR |= (1<<SPMEN) | (1<<SIGRD);
    return __LPM(addr);
    }

    :
    :

    usbcdc_put_pstr(PSTR("signature:"));
    usbcdc_put_hex(read_signature(0));
    usbcdc_putc(' ');
    usbcdc_put_hex(read_signature(2));
    usbcdc_putc(' ');
    usbcdc_put_hex(read_signature(4));
    usbcdc_putc(' ');
    usbcdc_put_hex(read_signature(1)); // CALIB
    usbcdc_put_pstr(PSTR("\r\n"));

    usbcdc_put_pstr(PSTR("fuses:"));
    usbcdc_put_hex(read_fuse(1)); // Lock bit
    usbcdc_putc(' ');
    usbcdc_put_hex(read_fuse(0)); // FUSE Lower
    usbcdc_putc(' ');
    usbcdc_put_hex(read_fuse(3)); // FUSE upper
    usbcdc_putc(' ');
    usbcdc_put_hex(read_fuse(2)); // FUSE ext
    usbcdc_put_pstr(PSTR("\r\n"));


こんなコードでちゃんと読めた。データシート通りだった。

それはともかく、このページを見て

    # dfu-programmer at90usb162 erase
    # dfu-programmer at90usb162 flash test5.hex


とすることで問題なく書けた。

シリアルフラッシュ



A25L080の使い方の記事で書いたが、ミニフォトフレームからの取り外し品の A25L080 と AT26DF081A しか考えてなかったが、M25P80 とかも 同じコマンド体系だった。

ただし、4KB 消去 (0x20) コマンド と シグネチャーを読み出す RDID (0x9f) コマンドがない。

4KB 単位の消去をしても FAT ではうまく使えないみたいだし、64KB 単位の消去に変更することにして、RDID で 判らなかったら RES コマンドを使うようにすれば、まぁサポートできそう。

posted by すz at 20:55| Comment(0) | TrackBack(0) | 日記

2009年10月06日

NEWランチャーライト



普段行かない 100円ショップに立ち寄ってみたら、NEWランチャーライト という 3灯 LED ライトに目が留まった。

アルミ削り出しの ケースで 底はネジ込み式で ゴムの電源ボタンが付いている。電池は 単四 x 3。

とても 100円のものとは思えないので、買ってみた。

後でググると 旧製品の LAUNCHER LIGHT が有名で、その 改良版らしい。気の迷いさんところで両方の紹介があった。

パッケージには、40時間なんて書いてあるが、平均 100mA 流すとしたら 10時間も持たないはず。40時間後なら相当暗くなるのではないかと思える。

さて電子工作ネタとしては、これを素材にどんな工作ができるだろう?

1)秋月の OSPW5111A-Z3などで明るくする。

まぁ、無難そうな改造。

    あまり詳しくないのだが、日亜の NSPW500DS(pdf) とか NSPW500GS-K1(pdf) とか が良さそう。

    あと、pdf を見ていると、並列で使う場合でも 個別に電流制限抵抗を入れたほうが良いらしい。それだけ Vf がばらつくということ。といっても抵抗値が大きい場合で、ギリギリの場合はどうしたってばらつく。

      10 個とか買って Vf で選別とかした方が良いかも。

      定電流回路は、2SC1815 2個と 10K の抵抗。あと、33 Ω (+ 5V 電源) で 作れる。

      で、LED の両端の電圧を測って 電圧の近いグループを選ぶ。



2)秋月の OSPW5161Pで明るくする。

この LED は、OSPW5111A-Z3 などとはちょっと違う。まず、広角60°。あと 定格 100mA と 電流が流せる。Vf も 3.6V と高め。足の形状も放熱のためかちょっと違う。単純には置き換えられないものの、抵抗を低い値のものにして ( or 場合によっては外して直結 ) 、NiMH 専用にするとかすると面白いかも。

注意点としては、放熱には気をつけなければならない。劣化が早くなる。足が太くなっているのはカソードなので、すずめっき線でぐるぐる巻いてケースに接触させるとか?

Vf はばらつきがあるらしい。抵抗値は、個別に調整しないといけない。

3)昇圧 DC-DC コンバータを付けて、電池 2 個(または 1 個)で、一定の明るさになるようにする。

電池を直接つなげると、電池の消耗にしたがって 暗くなる。それはそれで電池の交換の時期が分かって良いのだが、やはり電池を最後まで使えるようにしたい。

一番良いのは、高めの電圧で 直列にし定電流駆動。だが、そうなると回路は 電池カートリッジ側に仕込むのではなく、LED 側に付けるなどしないといけない。

やはり、HT7737 などで 定電圧駆動して、抵抗で調節が簡単で良さそう。

    ちょっと OSPW5161P 1 灯 + HT7733 で試してみた。(コイルは 350mA 47uH)。出力と LED を直結。3.3V だと、かなり明るく光った。次に 出力と HT7733 の VCC の間に ダイオードを入れて電圧を 3.7V ぐらいに上げてみたところ、さらに明るく。OSPW5161P の足はしばらくすると 結構熱くなってくる。最後に HT7733 の VCC を外してみた ... これでも うっすらと点灯。...

    1灯なら HT7733 + (350mA のコイル) でも余裕。3灯はさすがに無理そう。2並列、3並列にするしかないか。

    OSPW5111A-Z3 は今手元にないが、ATmega328P とともに購入中。こちらは たぶん 3 灯いける。電圧は 3.3V か むしろ落とす。
 
4)昇圧 DC-DC コンバータを付け、さらに Tiny13 などで PWM 駆動。

2本駆動にすると、単四のスペースが空く。10mmφ x 5cm 弱 ぐらいで結構ある。秋月の 16ホールユニバーサル基板なら 4連 が入る。ただし高さが厳しい。IC ソケットは無理そう。(基板を使わないならなんとかなる)

ちょっと実装を工夫すれば、この程度あれば楽勝なはず。うまくすればタクトスイッチ 1 個ぐらいならなんとかなるかも。

あるいは、充電回路を仕込むとか。

ライトとして使うのなら、この程度しか思いつかない。

それ以外だと、防水加工してみるとか。部品を取り出して ケースを本当にケースとして使うとか.. 。

    18 mmφ x 5cm の過放電保護回路つき 18500 リチウムイオン電池 を入れるという改造?があるらしい。若干細いので、100均で買えるアルミヘアカーラー (20mmφ) をスリーブとして使うと良いらしい。

    なるほど、過放電保護回路つき というのは、ライトに最適なのか。HT7733 だと ほぼ 残 0 になるまで光ってしまうから 一次電池専用。 過放電保護回路を自分で組むのは難しそうだから、二次電池用なら、ATtiny13 あたりで PWM かなあ。

    ググってみたら、気の迷いさんとこのページが見つかった。ただ、常時 ON で低電圧のとき出力だけ On/Offという回路にしないといけないので、出力 ON/OFF にかからず、自己消費が 数 uA とかにするのには使えなさそう。


追記:OSPW5111A-Z3 の Vf を測定してみた。



定電流回路を組み、10 個の Vf を測定した。電流は、18.7 mA 。
一旦測定して、並べ替えたのを再度測定しているので、絶対値はともかく相対的にはかなり信用できそう。


    2.990
    3.000

    3.024
    3.028
    3.056

    3.060
    3.075
    3.075

    3.135
    3.200


最大と最小では、0.2V も違った。これで並列にしたら明るさが違うのが分かってしまう。

上下の 2 つづつを除いて 6 個で 2組にしようと思う。

さて、HT7733A を使って、2 cell を昇圧するつもりなのだが、データシートを見ると、±2.5% の精度。電圧にして ±0.08V 。

あと、もとから付いている 抵抗は、6.8 Ω。20mA x3 での電圧降下は、0.4V 。これは使えない。

ところで、スイッチは、LED の ON/OFF だけ。HT7733Aは、常に ONになってしまう。HT7733A自体の消費電流は、5uA なので、まぁ問題なさそう。

製作:

まず、LED が付いている基板を取り出さなければならない。これは内側から押し出す。手でやってもうまく行かなかったので、割り箸を当てて金槌でトントンやったら上手くできた。

次に選択した LED を取り付け。カソード側を切り取らないで、外側に曲げて、すずめっき線でぐるぐるやってみた。結局抵抗を外して直結したので、少しでも放熱するのが目的。ケースに接触するように作れれば良かったのだが、そこまではしっかり作れなかった。

さて、HT7733A 。これは、P板.com に発注していた基板が届いたのでそれを使うことに。

適当に作ったやつなので、実装のじゃまになるようなところに VIA があったりして、ちょっと困ったりしたが 回路は、OK。


    基板はこんな感じ。つかった部品は、HT7733A 表面実装タイプ@共立(10個 504円)。VLF4012AT-470MR30 (20個 200円@秋月)、ショットキーバリアダイオード HN2S01FU (10個 100円@秋月)、コンデンサ 入力出力とも 積セラ 10uF 6.3V(20個 100円@秋月)。

    VLF4012ATは、半田付けする場所がよくわからなくてコツがいるみたい。HN2S01FU は、マークが見えない。しょうがないので、片側だけ付けた状態でテスターで確認。コンデンサ 入力出力とも 10uFなのは、負荷変動がないので容量は小さくとも良いと勝手に判断。



    これは、組み立て後。VLF4012AT は、マークが 45 °になるようにすれば良いみたいだ。

ちゃんと昇圧できてLED が付くことを確認して、組み込み。

30 分ほど連続点灯させてみた。ケースはこころもちあったかい程度。中を空けて LED まわりを触ってみたが問題ない。だがしかし、インダクタが触れないぐらい熱くなっていた。350mA 47uH では無理がありそう。

とりあえず、様子を見ることにした。



OSPW5161P 編



調子にのって、OSPW5161Pでも作ることにした。まずは、Vf の調査。18.7 mA だから 定格 100mA 時はずっと高い。目的がグループ分けなのでこれでいいのだ。


    3.099
    3.124

    3.135
    3.163
    3.166

    3.179
    3.179
    3.185

    3.244
    3.259


やはり、やたら低いのとやたら高いのがある。同じように選択。

このLEDは、カソード側の足が太くなっているので、そのままでは基板に刺さらない。1.5mm のドリルで穴を広げた。そうするとランドが当然のようになくなってしまう。

すずめっき線で、ぐるぐる巻いて、ベタになっているところのレジストを剥離・半田付けし、すずめっき線をまず固定。次にカソード側の足をすずめっき線に半田付け。剥離には、ダイソーで見つけた半丸刀という彫刻刀を使ってみた。安全に作業できそうで良いかんじ。

次に点灯テスト。3 cell をそのまま直結してみたところ、一応光る。だが色が青っぽい。さらに点滅している。なんかやばそうなので、すぐやめて HT7733A を仕込んだカートリッジでやってみた。

それなりに光る。色もだいぶ白に近くなった。周囲を照らす感じで良いのだが、3.3V ではあまり明るくない。Vf が高めなのだから当然といえば当然。

次は、2連 の HT7733A モジュールの製作。ダイオードを付けて電圧を 3.7V にするのだ。

一応できました。なんというか、作った基板の出来が悪くて 変なところにある VIA とショートしたりしてちょっと面倒だったり。

電圧は、3.75V ぐらい。点灯させてみると、すごく明るい 2つは。1つは、点滅したりして暗い。

3.3V にもどすと、暗かったのがどれか判らない状態で問題なし。

Vf まで合わせたのに..

しばらく様子をみてから、電流制限抵抗をいれるか、LED をいれるかしよう。

とりあえず、LED交換 3.244V のやつ。

しばらく点灯してみたが、予想以上に電池が持つ。熱くなっているのは、インダクタだけ。オーバドライブなのはインダクタで、そんなに電流流せないのかも。

電流制限抵抗はパス。劣化したのは、半田付けのときで、熱を加えすぎたのかも。

ずっと点灯させてどうなるか見てみた。暗くなっていって、最後には点いているだけで、まったく明るくない状態まで行ったがなかなか完全に消灯しない。しばらく Off にするとまた復活するし。

HT77xx は、電池を絞りつくすみたいな表現をいくつか見たが、なるほどと思った。

追記:

RFAD のサイトで、パワーLED用アルミ基板を扱ってた。秋月の1W/3W出力LEDが付けられるようだ。



改造ネタに良いかも。

実際ランチャーの内部にマウントするにはどうしたら良いだろう?


秋月で売っている 24mm x 18mm x 17mm の放熱器を 使うことを検討してみる。

まず、24mm で両脇に 板が伸びているが スター型のアルミ基板は 20mm ぐらいなので 2mm 厚だとしても 入るはず。できたらネジを切って ネジ止めするようにしたら良いのではないかと思う。

次に、ランチャーの内径は φ 22mm ぐらいで、この放熱器の 対角の長さは 30mm 。(ピンを抜いてから) 4mm づつぐらい角を削る。削ったところしかランチャーと接触しないから、圧入するつもりで 調整しながら削る。

スプリングが付いている、ランチャーの基板は活かす。LED とか抵抗を取って、LED の反対側(放熱側)に貼り付け配線する。

    現物に合わせてみたら全然ダメ。深さが足りなく、フィン部分しか入らない。

電源は、2 セルから昇圧。とりあえず エコプラス製USB充電用電池BOXから部品を外すことを前提にする。

この IC は、2.4V から昇圧したとして、350mA を流して 5V まで昇圧する能力はない。4.0V 止まり。だが、3.0V なら 4.5V まで上がる。基本的に 350mA なら 1.6V の昇圧と考えれば良いのではないかと思う。

アルカリ電池を使うことを考えると、
4.7Ωを 3 パラで 放熱器のフィンに挟むように 付けると良いかも。350mA なら 0.54V の電圧降下。

HT7733A22uH 電源用インダクタ で自作しても良いかも。

インダクタは、直径 7.7mm なので、単四より細く 単四1 本分のスペースに入れられる。

問題は、どこまで電流が流れるか。

定格の 3.3V ではたぶん電圧が十分でない。無理やり電圧を上げるには、VCC 端子を 出力から ダイオードを通して接続する。

こうやって電圧を上げようとしても、流せる電流に上限があるのは、エコプラス製USB充電用電池BOX で使っている BL8530 と同じ。IC 内部で 制御している。ただ、個体差があるし インダクタとの組み合わせでも変わる上、LED の個体差で 電圧まで変わる。

要するに 実際に組んでみないと わからない。そういう意味では、エコプラス製USB充電用電池BOX であたりを付けてからバラして組み直す方が面倒が少ないように思う。

追記:
秋月でも 放熱基板付白色パワーLED(300円)パワーLED用放熱基板(50円)を扱いだした。




RFAD のサイトで、パワーLED用アルミ基板を扱ってた。
posted by すz at 23:00| Comment(3) | TrackBack(0) | 日記

2009年09月03日

RFADテクノロジーのケース

千石でケースを物色していたら、ガラス窓付きプラケースというのに目が止まった。

これは RFADテクノロジーというところが出しているケースだった。



中(MK8260)と小(MK6040)があり、RFADテクノロジー で買えば 小 180 円、中 260 円とリーズナブルな価格。千石で買うと若干高くなって 小 221円、中 326 円。

  • 中(MK8260)のサイズは、外寸:82×60×20 内寸:76×54×12(ガラス付蓋部分を除く実測値)。
    適合基板は、サンハヤト ICB-86 (47 x 72 mm)

  • 小(MK6040)のサイズは、外寸:60×41×20 内寸:55×36×12(ガラス付蓋部分を除く実測値)
    適合基板は、タカチ電機工業 TNF34-49 (34 x 49 mm - SW-55 用)

サイズをみてピン!ときた。このケースは、秋月 C 基板がちょうど入る!


いままで、いろいろ探したが、C 基板がちょうど入るケースはなかった。それが、ガラス窓 で 側面の加工が簡単なケースが安価に手に入る! ( ちなみに、ガラスが気に入らなければ、アクリル板とかを嵌め込めば良いはず )

C 基板 愛好家としては、とても嬉しい。

その上 ... 小さい方も SW-55 用基板が適合 -- ということは、1/2 C 基板 (縦 47〜48mm 横 35mm)も 適合するということだ。



このケース、これから愛用していきたい。

追記:楽天ショップがあるのを見落としていた。なにやら 結構種類があるみたい。



これがフタをあけたときの写真(中:MK8060)。

追記:

フタの部分は、ガラスをはめた後、おさえの枠を瞬間接着材で付けたような感じ。彫刻刀の平刀でこじったら(そこだけ)分離できたので、多分分解できる。

    瞬間接着剤のはがし液(アセトン)は使えない。ケースが ABS 樹脂なのでケースも溶かしてしまう。

裏には、TOKYO SCIENCE CO.LTD. のマークと 6 PS のリサイクルマーク。

ひょっとして、TOKYO SCIENCE CO.LTD. って ここ ( http://www.tokyo-science.co.jp ) ? え? 化石?鉱物?

あ、本来 標本ケースなのか。

追記(2011/1/11): 東京サイエンスで扱っている標本ケースは、中薄ケ−ス( 82× 60×h20mm) 250円 小薄ケ−ス( 60× 41×h20mm)170円 以外に 大厚ケ−ス(118× 82×h40mm)500円、中厚ケ−ス( 82× 60×h40mm) 290円 丸型プラケース(52φmm×h22mm 上面ガラス)なんてのがある。

もし、千石や RFADテクノロジーの直販で買えなくなっても、ここがある。

丸型プラケースも興味深い -- 基板を作ってみようかという気になる。中厚ケ−スは、MK8260 の 2 倍厚。これも興味がある。
posted by すz at 12:24| Comment(0) | TrackBack(0) | 日記

2009年07月23日

業務連絡

私の不注意で レンタルサーバーの契約が切れてしまい、サーバ移行することになりました。

バックアップも適当にしかとってなかったので、5/15 以降の記事・コメントも消えてしまいました。コメントを頂いた方には申し訳なく思います。

移行にあたって、

  • もの置き場のサイトが nmj.sakura.ne.jp → nmj.sumomo.ne.jp になります。
  • 復活した記事の URL が変わっているかも知れません。(よくわかりません)


リンクしていただいている方には申し訳ありませんが、リンクの変更をお願いします。
posted by すz at 19:12| Comment(0) | TrackBack(0) | 日記