2012年10月08日

JZ47XXのリファレンスデザインから

JZ47XX というのは、中国の Ingenic という会社が作っている MIPS SoC 。MIPS 版 Android では JZ4770 というチップが採用されていたので知っている人もいるかも知れない。

この会社が出している JZ4725B や JZ4755 といった (世代が古い)SoC は、0.4 mm ピッチだが LQFP で 電子工作レベルでボードを設計できるかも知れない。Programmers Manual なども ググって見つけたし、いずれは挑戦してみたいと かねがね思っている。

そんな考えでリファレンスデザインを眺めたりしているのだが、PMP は All in One だから、回路図が結構参考になる。今回はちょっと紹介してみたい。

参考書は、RD4725B VOLANS 。(もう新規設計を推奨しておらず、メーカーページからのリンクがなくなっている .. のだが、ググると見つかる)

    RD4755 CETUS
    RD4760 LEPUS
    RD4770 PISCES

    これらは、現行のチップ用リファレンスデザイン。

    RD4725B VOLANS は、ftp://ftp.ingenic.cn/2soc/4725B

    ここにあるが、どうもサーバーが重いような。

LED バックライト



    LED がパラレルになっている LCD バックライト用の回路。電流制限抵抗を入れるだけ ... みたいないい加減なことはしていないのだ。電源電圧が 3.3V しかないと 電流制限抵抗では調整が難しいためだ。

    で、この IC は KB5239D となっているが、パーツリストの ID のようだ。でも、8 pin で 4 出力の LED ドライバというものがある ... というだけで随分ヒントになる。

    デジキーで探してみると ... 例えば、CAT4104V なんてのが見つかる。ピン配置は違うのだが、PWM で 平均電流を 制限してくれる。なかなかに良さそう。コントローラ側でさらに PWM をかけることも出来る。ここで使われているのも同じようなタイプだろう。

    他には、PCA9633DP1 とか。こちらは I2C で制御するタイプ。

    実際の PMP で、ここまでやっている 製品は少ないだろうとは思うが、電子工作では、こういうのを積極的に使いたいところ。

      単にパラレルにすると Vf のバラツキのために、明るさに偏りが出るかも知れない。個別に PWM で調整することは可能だが、メインの MCU の リソースを割くのはもったいないし、ノイズを分離できない。

      ここは、専用 IC にまかせてしまうのが良さそうに思える。

スピーカーアンプ



    8 pin の BTL アンプが PMP ではよく使われている。(LM4890 か 互換品) ピンアサインは同じでも D 級のタイプもある。( これはリニアのタイプかも) 。それはともかく、入力部分が気になった。

    ヘッドホン用のステレオ出力を ひとつにして、アンプの ON/OFF で スピーカー出力を制御している。普通といえば普通なのかも知れないのだが、デジタル系ばかりやっていると どう回路を組めば良いかイメージできないかも知れない。

    あと電源に 1 Ωが入っている。RC フィルタにして ノイズ対策しているようだ。 負帰還用の抵抗が NC になっているのも気になる。これで良かったのだっけ? ... 普通に ゲイン 1 倍の 51K を付けるのでは? Rail-to-Rail でないのなら 少し大きい値。

ヘッドホン出力



    ヘッドホンだと 220uF ぐらいが普通なのだが、これは 47uF しか使っていない。100 Ωを入れて 出力を落とせば 47uF でも まぁなんとか。表面実装の 220uF なんてのは結構高いし、へたなものを使うぐらいなら こっちの方が良いのかも。

マイク



    10 KΩ + 1uF で 電源ノイズをカット。で、4.7k Ωで改めてバイアス。... これも知っている回路と違う。なるほどという感じ。

キー



    これは、ADC を使った回路。JZ4725B は、128 pin の IC なのだが GPIO が全然足りない。少しでも節約するためにこうなっている。

FM モジュール周り



    FM モジュールは使ったことがなく良くは知らないのだが、これもまた電源周りに工夫が見られる。10 Ω + 1uF の RC フィルタが 2 段。AVR とかでも ADC を使うなら これぐらいやった方が良いのかも。

    GND の方は、0 Ωだが、本来入れるべきなのは? チップフェライトビーズとか?

      これは、10 Ωとか。AVCC と対称で良さそう。実際 他の RD で 10 Ωになっているものがあった。

    そういえば、PIC32MX は、RC 1 段が データシートに載っていた。AVR の場合は LC が載っている。

電源 IC



    電源はスイッチングレギュレータ。PMP では、SOT23-5 の IC が 良く使われている。VCORE 用は当然としても、3.3V 用でも リニアレギュレータをメインにしているのは見たことがない。(RTC 用には 使われたりする) 。インダクタに 10uH というのを良く見るのだが、これは 3.3uH でスイッチング周波数が高いタイプのようだ。

アナログ系電源



    コンデンサの前に BKP1608HS121 (デジキーで 100個 368円) というのが入っている。ググると 太陽誘電製で、インピーダンス 120 Ω。秋月だと チップフェライトビーズ BLM18RK121SN1 (120 Ω)が近そうな気がするけど、定格電流が全然違う。それでも 抵抗いれるより全然まし?

    あと水晶周り。どうも ただの CMOS インバータで発振させる定数のように見える。-- 32KHz だと 10M なのか -- 1M でも問題ないと思うが 消費電流を減らしたければ 値を大きくできる。

MicroSD カード



    プルアップとかは、SoC 側に付いているのだろう。で、CLK だけ直列に抵抗が入っている。ちょっと気になった。

RD4725B はこんなところ。他の RD についても、紹介したいものが見つかれば追記しておこうと思う。

あと、他のメーカーの回路図は見ていないのだが、設計する人によって特色があるかも知れない。見比べてみるのも勉強になりそうだ。

追記: RD4755 CETUS

ようやくダウンロードできたので、見てみることに。

VGA



    JZ4755 は、JZ4725B とほぼ同じ世代なのだが、JZ4755 は大分機能が多い。そのひとつが VGA 出力。こんな風に RD にもコネクタがある。(2 段だから PC 用ではない?) 。そして、これ以降の JZ4760/JZ4770 は HDMI になったので もう VGA のサポートはない。ちなみに 他の JZ47XX は、2ch しかないので、S-Video 出力までにしか使えないのだが、これだけ 3ch あって VGA が出力できる。

    で、どんな風にインターフェイスしているのか。



    I2C は、FB(フェライトビーズ)を通したり、コンデンサ(120pF)を付けたり。



    VSYNC/HSYNC も同様 。それはともかく、これだと LCD と 排他で使うのだろうか? それとも 同じタイミングで出力?



    さて、映像出力はこんな風になっていた。75 Ω と 15pF を GND の間に入れてから FB を通す。そしてまた 15 pF 。いまさら VGA でもないのかも知れないが ....

ヘッドホン出力



    これは ... ただの直結。コンデンサを省けるように ステレオ化した BTL(?) になったのだが、こんなもので良いのだろうか? 気になったので、RD4760 LEPUS と RD4770 PISCES も見てみた。


    (RD4760 LEPUS)

    (RD4770 PISCES)

    RD4760 LEPUS は、なんか変。220uF ものコンデンサを入れてたり、やりすぎ? RD4770 PISCES だと ESD5B5V というのが GND との間に入っただけ。(AOHPR の方も入っている。図からはみ出た)。ESD5B5V はクランプしてくれる保護回路という理解で良いのだろうか? ツェナー x2 と同じ?

    RD4770 になると ESDxByV がやたらめったら入っているのだが ... 結構安いものなのだろうか?

    あ、参考になりそうなのは、イヤホンを FM アンテナにする所。RD4725B では、HPM ではなく GND なので、 FB を GND との間に入れて その前段を アンテナ入力にしている。

RD4760 LEPUS と RD4770 PISCES

先に出してしまったが、RD4760 LEPUS と RD4770 PISCES というのもある。

JZ4760 以前は、400 MHz 程度が上限の コアだったのだが、JZ4760 で 600 MHz 程度と周波数が一段回上がった 。SDRAM も DDR2 対応に。周辺回路もまた大きく変わっている。JZ4770 は、1.2GHz とまた 周波数が一段回上がったのだが、 周辺回路はわりと JZ4760 に似ている。

スピーカー


    (RD4760 LEPUS)

    (RD4770 PISCES)

    RD4760 は、専用出力を直結。これもあんまりだ。こうなってくると参考にならない。RD4770 はまとも? 負帰還用の抵抗はちゃんと入っている。ただ、IN+/IN- 入力に BTL の出力をそれぞれ入れている。そうした方が良いのか出来るからそうしただけなのか? ESD5B5V まで入っている。専用 IC にそんなものが必要なのだろうか?

GPS



    回路の一部だけ 載せたが、RD4760 LEPUS と RD4770 PISCES の両方 GPS が載っている。しかもモジュールではなくて、直付け。回路図なんて初めて見たかも。

    それはともかく、気になったのは、TCXO 0.5 ppm 。GPS には、精度の良い オシレータが載っているらしい。16.367667 MHz とはまた 数字がやたら多い。

    デジキーなんかで探すと 16.368 MHz とかの TCXO がわりと安く買える ... のだが周波数が 使いにくい。16368 = 16 x 1023 。16.3676.. と続くなら 16 x 1022.98 とかそんな値。

おまけ: 中国で買える SoC とか

    中国のショッピングモール taobao は代行を通さないと買いにくいのだが、様々な SoC を扱っているショップもある。たとえば ここ

      Allwinner A10 50.00 元
      RockChip RK2918 40.00 元
      RockChip RK2706B 15.00 元
      Ingenic JZ4725/JZ4725B 15.00 元

    A10 や RK2918 は Android タブレットで使われている SoC で GHz クラスの ARM 。BGA だから電子工作は無理なのだが、実際に 1 個単位で買えてしまう。50 元だと x12.5 で 625 円ぐらい。JZ4725/Z4725B は 0.4mm ピッチ 128 pin なので 電子工作 可能な範囲。RockChip の旧世代も良さそうなのだが、Programmers Manual が手に入らないしパス。

      Allwinner A13 が、QFP だという 情報が ... 多分 0.4mm ピッチ 176 ピン - 電子工作レベルで扱えるかも。もし SATA が (A10 同様に)付いていてデータシートが入手できるのなら、欲しくなってしまう。

    JZ4725/JZ4725B については、データシートとか SDRAM とか 入手済み。いずれは.. と思っている。だが、現行品では なくなってしまっているので、この機会に JZ4725/JZ4725B を入手しようかと思う。

      ついでに書くと、リンク先のショップは、PMP に使われる IC とかも 扱っている。やたら安いので一見の価値はありそう。5121 は ZX5121 LED バックライト用昇圧 IC 。LM4890 は上記でも出ているスピーカアンプ。662K は、3.3V レギュレータ。A18 は、上記の 1.8V スイッチングレギュレータ。4101 は、リポ電池充電 IC PT4101 もバックライト用昇圧 IC 。全部は分からないが メジャーなものの率が高い。こういうものは、PMP 以外でも 有用。まぁ品質上のリスクはあるが、興味深い。

    ただ問題は、JZ4725/JZ4725B が区別なく扱われていること。物理的にはピンの互換性があるのだが、中身は全然違う。SD からブートできる B が欲しいのだが ...

    ついでに書いておくと taobao で JZ4725 を検索すると PMP の メインボードが見つかる。以前も紹介したのだが、SDRAM と NAND FLASH が 付いていないもの。23 元で入手したのだが、JZ4725 採用の新品。そのままで USB Boot は出来た。(32KB のキャッシュだけで動かす)。



      SDRAM は新品では割高だったり入手が難しいのだが、今は、メモリモジュールから外すつもりなら結構安く入手できる。これなんかだと 16Mx16 が 4 つ載っている。 16 bit 幅でないといけないし、ぼちぼち 入手が難しくなっているので、いずれ使おうと思ってるのであれば 入手しておくと良いかも知れない。

      FLASH は、必要なら 手持ちの適当な 装置やらモジュールやら から外すつもり。ただ、スタンドアローンで動かさないなら 不要。



      今みると おなじものを 10 元で売っているところがある! 写真は確かに手に入れたものと同じ。(ということは無印 JZ4725)。まぁ、ついでだから買い増ししようかと。これもいずれ、ちゃんといじって記事に書きたい。

      Linux の ソースコードはある。ただ、古いチップだし大分手を入れないといけない上に、性能が他と比べて低いので 、Linux を動かしても面白くなさそう。だが、チップを生で使うなら ちょっとしたもの。400 Mz とかで動くし、メモリも 32MB とか使える。 LCD を付けないで GPIO として 使うと ... なにやら楽しいことが出来るかも知れない。

      0.8mm ピッチから線を引き出すのは私には結構なハードルだ。だが、0.5mm ピッチよりははるかに楽なはず。ピッチ変換基板を以前作ったので、それを利用して引き出すつもり。(わざわざ作る必要はなかったけど)

    ところで、手に入れた PMP のボードだが、サイズは、47mm x 77mm ぐらいで偶然にも 前の記事 『アルミケース三種(2)』でテーマにした aitendoo CASE-B に合うサイズ。最もサイズが合うだけで、入るわけではない。サイドのボタンをどうにかしないと無理。でもなにか考えたい。
posted by すz at 04:18| Comment(94) | TrackBack(0) | 日記

2012年09月30日

アルミケース三種(2)

アルミケース三種』の記事の続き。



aitendo のアルミケース(B)は、幅 が 50mm を僅かに超えるだけのサイズ。ちょっと基板を設計するついでに、フタにできないか検討してみた。

    フタが別売で、139 円 / 枚。50mm に収まるなら、imall.iteadstudio.com で作ると 黒基板/白シルク 10 枚で $15 $13.49 。いくつか作る場合や 汎用的なデザインなら コストに見合う。

    ついでに説明しておくと、ケースの外寸は、50mm x 20mm 。(↓の図面は、あまり信用できない。幅が 50.4 mm となっているが、50mm ジャストに思える。高さも 21mm に見えるが、 実際は、20mm 。 )



    ケース厚 1.5mm 。底面〜スロットに入れる基板 の距離は、たぶん 2.8 2.5 mm で 1.6mm の基板が入って 中央までが、4.1 4.4 mm 。上の空間は 10mm - 1.5mm = 8.5mm なので 12.9 mm までの部品高が許容範囲。

    幅は、47mm ということになる。スロットは 溝が 1mm しかないので ギリギリのサイズにする必要がある。

    奥行きは 77mm 。秋月 C 基板だと 72mm なのできっちりではなく 5mm 空く。

      訂正: 2.8mm ではなかった。

    計算上は上記の通りだが、現物で合わせてみると入らない。秋月 C 基板 は、47mm より少し大きい。またケース自体すこし内側に曲がっている。左右合計で 1 mm弱 削る必要がある。ただし、C 基板と言っても いくつか種類がある。最近のものは サイズが違うかも知れない。

    C 基板を削ってみたところ、力を入れないで入るようになった。幅は 47mm ジャスト(な感じ)。 底面との隙間は 3mm 弱で 、(L 型)ピンヘッダを仮に差してチェックしたところ僅かに隙間がある。

この基板自体は、もともとスロットに入れられるような幅で考えてみたのだが、高さも丁度良さそうなのでフタにできないかディメンジョンを検討。

多分、リューターで ケースの飛び出ている部分を少し削れば、埋め込む形のフタにもなるんじゃないかと思う。

    あと、仕切りのようにできそう。ケースを スライドさせると書いてあるが、ケース上部を、上から被せることもできる。ただ、それをして意味があるかどうか...

上記は内側の黄色い線をベースに少し修正して作る。白い外形線は、50mm x 20mm で、現在の最終型。ただし、切り代の分だけは小さくなる。

これは、電子回路用の普通の基板だが、シルクと 銅箔パターンを使って、デザイン性豊かなフタを作れそうな気がする。基板だから外形も含めて 精度は高い。穴も 6mm ぐらいの丸穴なら問題なく作れる。

    そう言えば、バナナ用の 中継コネクタで、ただの筒のような形状のものがある。(内径 2mm, 3.5mm, 4mm など)。これを直接ハンダ付けして、変なデザインの 装置(電源、オーディオ系、測定器?)を作るとか...

    あと、注意点がある。勝手にシルクに番号を入れられるので、表裏逆につくることを忘れてはいけない。

    もうひとつ注意点。ネジが別売となっているが、合いそうなものは M1.7 とか変なものしかない。... もともとネジが切ってあるのだが、特殊サイズで M1.7 ... なんだろうか? しかもネジを買い忘れた。

    ケースを切ったりすると、もとのサイズのネジは自力では切れない ... どうするのか方策を練らないといけない。タップネジにするか、径の大きな M2 で無理やり ネジを切るか?

この基板について

    これは、『8桁7セグ表示ボード』で書いた PIC32MX の コントローラ基板をベースにしている。上のコネクタは、シリアルと USB 。USB には type A 直接付けられる(かも) シリアルの部分は、ICSP のコネクタにもなる(はず)。下のコネクタは、I/O 用だが順不同。7 seg 用のつもりだったので、配線の都合を優先。

    単独の方が、面白いかと思って切り離して手を入れていったらこうなった。

    今思いついたのだが、この基板を裏に付けて マザーボードにするのはどうだろう。スロットに別の基板を差し込んで ピンヘッダとピンソケットで連結する。スロットに入れる方は L 型ピンヘッダで、この基板はピンソケット。

    ちょっと無理やりだが、電源コネクタは、USB typeA で USB 延長ケーブルを使う。

    手直ししないと見栄えが悪そうだし、コネクタの位置(高さ)も調整しないといけない。だが、ちょっと面白そうだ。

    考察1) (図面を見るかぎり)スロットに入れるほうの基板と底面の間が 1.5mm ほどしかない。L 型ピンヘッダは、2.54mm のスペースが必要だから無理。普通のピンヘッダを基板の裏面に貼ると、0.6mm □ だとして 底面から 1.2mm の位置に 中心が来る。ピンソケットが 底面に張り付くぐらいの位置ならあるいはいけるかも知れない。マザーの方は、そんな感じになっている。いけるかも。

    ただ強度が問題。2 列のピンヘッダで基板を挟んで 強度を確保するか ... あるいは 2 段の L 型の短い方を取ってしまってスルーホールにするか。

    追記: 現物を手に入れたところ、底面の隙間は 3mm 弱あった。結局、L 型 ピンヘッダを普通に付ければ良いこととなった。

追記 caseb-pic32mx-01



    上のアイディアをもとに基板を設計してみた。

    最初 USB A メス を検討したが、パターンはなんとか入ったものの IC-ソケットとぶつかる。で、少し上に上げてみた。これでも IC-ソケットとぶつかることには変わりないが、IC 直付けならなんとか。そして、mini-B も入れた。こちらは、ギリギリ OK (のはず)。

    このレイアウトにするには、長穴加工するしかない。初めての試みで不安だがやって見ることにした。

    Eagleメモ、フットプリント互換性
    ITead Studioへの基板発注
    SSW Blog: Eagleで長穴
    これらの ページを参考にさせてもらって、トライ。

      ・ ドリルラインと長いスロットは受付できません。
      ・ 最小スロットは 1mm*1mm です。
      ・ 穴やスロットでサブ基板を分離する事はどのような事であれ許可されません。

      このあたりが注意点。まぁ良くわからないんだが...

      ・ スルーホール付パッドに Dimension で長い外形穴を入れる。

      基本はこれ。ただ長い パッドはライブラリでしか使えないので、ライブラリ化必須。また、Milling レイヤが 一応それ用のレイヤなので、そこに書いて Dimension と同じ扱いをするうように cam ファイルを変更するのが筋らしい。

      あと、1mm 幅以上というのをクリアしなければならないのかどうか? 端にドリルを当てるべきなのかどうか? とか、いまいち分からない点もある。まぁダメなら怒られるだろうから、発注までこぎつけたい。

    あと、ボタンとか LED も付けた。実をいうと、USB のコネクタが、表裏逆かも知れないという不安がある。ボタンとか LED を付けないなら、逆にして使えば良いだけだと開きなおってたのだが、ちゃんと確認しないとダメになった。

    中国は 10/5 までお休みなので、チェックする時間はある。ボチボチチェックしよう。

      これで合っている。垂直のコネクタは、mini-B も Aメスも 内側向きに付けたものを引き起こすようなイメージ。

この基板のつかいかた(想定)

    (1) aitendo CASE-B の リアパネルに使う。

      スロットに拡張(というかメインの機能の)基板をいれてマザーボードとして使えることを想定している。下の 15 ピンのコネクタには、ピンソケットを付け、拡張基板の方は、ピンヘッダを(直に)下面に付ける。(想定レベル)

      上部のコネクタは、外向きに付ける。左の シリアル部分は ICSP で、ピンヘッダ。USB は、MU5F-23 か同等品でないとマズイはず。工夫すれば、A/メス、[UAF-19]が付くかもしれない。A/メス を付ける場合は、下になるパターンが接触しないよう気をつける。(テープなどで絶縁)

      ボタンは、TD-85XUしか付かない。MU5F-23の同等品 とともに入手を推奨。



      ケースに実際に付ける場合、上部のコネクタや(パターン)がケースに接触するおそれがある。なんらかの方法で絶縁する。特に A/メス、[UAF-19]を付けた場合は危険でより注意しないといけない。

      どんな拡張基板を作ると楽しいかは、まったく考えていない。

      あと 水晶は、秋月 FA238 。16 MHz とかしか入手できない。8 MHz 用の プログラムは、コンフィグを変えないと 使えないので注意。(HEX しかなくても コンフィグ部分の データを変更することは普通可能)

      右のコネクタは、クロックを外付けモジュールに変えるとき用。どういう用途でどう使うかはほとんど考えていない。

    (2) ブレットボードと共に使う。

      I/O を片側に寄せたので、ブレットボードで便利に使えるかも。3.3V も供給できる。USB は単なる電源コネクタとしても使える。

      下側のコネクタは、ピンヘッダの方が良さそう。ブレットボード専用なら細ピンヘッダの方がブレットボードを傷めないので安心。

      その USB だが、A/オスも水平に付けられる。その場合は 表(ICの面)につける。A/メスも OK でこちらは裏。ただ、固定するための フレームグランドはハンダ付けできない。そればかりか基板と干渉するかも。干渉した場合は、ヤスリ等で調整する。


      ミニUSBコネクタ(B)[MU5F-21] (在庫切れ)
      基板取付用USBコネクタ・ミニB(秋月)
      DIY Mini USB 5-Pin Female 90 Degree (10-Piece Pack)

      無理やり水平に付けるなら、このタイプ。ただし、裏面(IC と逆) に付けなくてはならない上に、フレームグランドは奥の 2 つしか付けられない。

      mini B の 広い方が 垂直タイプでは 2 ピンなのに対して 3 ピンになっているのがポイント。-- 最初気が付かなくてライブラリを作る際に混乱した。

    (3) 秋月 C 基板に付ける

      下の部分は、秋月 C 基板に合わせている。ピンヘッダ/ピンフレームで接続しても良いし、直結しても良い。

      L 型 ピンヘッダでうまく接続すると。aitendo CASE-B に スロットを使って入れられる。... というか逆か。
      基板を消費することになるが、フロントパネルに無理やりしてしまうことは出来る。うまくシールを作って化粧してやれば いけるんじゃないか?

      メリット? 加工がアルミ 2mm よりは楽。基板とパネルを一体化できる。

      あと、裏に加工用の目盛りを入れとけば 便利かも。(済)

      まぁこれはただの案。基板の方に部品が乗っていれば、強度は要らないし、透明なもの -- PET のシートとか? でも良いのではないかと思う。

    (3) 3 ピンコネクタ

      右上の 3 ピンコネクタは、5V - CLKI - GND 。

      とりあえず、5V を出していなかったので ここにした。CLKI は、外部クロック入力で、 精度が高かったり、ジッタが少ない 40MHz とか 48 MHz とかを入れると ... なにか楽しいことが出来ないかと思い付けた。

      パネルにする場合は裏面にコネクタを付ける。 単なるピンヘッダではなく、ケースとの接触から保護できるタイプのものを推奨。

      ブレットボードで使う場合は、5V を取り出せると便利かも。コネクタは逆で IC 面。

追記 現物合わせ→修正



    CASE-B を入手したところ、外形が 20 mm 丁度で思ってたのと違う。あと底面から基板までの高さも。それで、現物に合わせて修正することにした。

     

    どうも底面と基板の間は、2.8mm っぽい。これなら 2.54 mm 高 の L型 ピンヘッダはちゃんと入る。それだけでなく、マザー側に低メスが使える。低メスを使うことで 秋月 C 基板がきっちり入る(はず)。

    低メスを使わなくとも問題ない。もともと 15 pin は、2 段目からだが、3 段目に入れれば 丁度良さそうな感じ。

    ところで、このスロットは遊びが全然ない。マザーボードにすると当然ネジ止めすることになるからこちらも遊びがない。となると、ピンヘッダを完璧な精度で付けないとならない。これはなかなか厳しい。組んでおいてハンダ付けということが出来ないのだ。

    これはどうしよう。ケースに穴を開けておいて、仮ハンダできるようにしておく? ひとつ組立用に潰すか。

      思ったより広かったのだが、逆に 内部が狭いということで、caseb-pic32mx-02 ではダメだということが分かった。作りなおした所、上下コネクタが 随分内側に寄った。もう、USB A/メスは無理。また DIP のピンとコネクタの間が随分狭くなった。2.54mm ないので 同じ面には付かないし、ハンダ付けも工夫がいる。

      (再修正) DIP-28 の方を少し上に移動した。これでぎりぎり。

    その上で、表面のシルク見直し。コネクタのシルクは最小限に。

    そして、USB A/メスと C 基板用の HOLE を外しすっきりさせた上で ボタンを秋月で入手できるタイプに変更。(caseb-pic32mx-03)

    裏面のシルクに 内面のパターン追加。-- 部品をおいてはいけないところが分かる様にする目的がひとつ。あと、この線を目安に基板を加工すれば、ケースに嵌め込めるかも知れない。実験用の目的もある。

    追記: 10/4 caseb-pic32mx-03 を発注。長穴が受け付けられるか が 興味のポイントのひとつ。今のレイアウトなら丸穴に変更可能でダメだと言われても致命的ではない。あと、色は黒。$15 だったのが $13.49 だった。-- さすがに緑では合わないと思ったので。
    (10/11 : 発送の連絡 -- どんなのが来るか楽しみ .. あと 10 日ぐらい?)

所感(基板発注時点)

    このケースB + コントローラ付きバックパネルというのは、思ったより使い勝手が良いものかも知れない。

    C 基板で試作するとして、試作中や試作後の使用で保護できる。保護できれば、開発中でも持ち歩ける。-- これは、ちょっとしたメリットかも知れない。

      ケースが 分割されているが、ケースの上部下部を接着して筒状にしてしまえば良い。そうすれば、開発中は、フロントパネルなしでも済む。

      アルミだから、たぶん強くは接着できないのだが、乱暴に扱わなければ大丈夫だろう。とにかくそうしてしまえば、差し込むだけで良い。外すのも簡単。

      C 基板では、幅を削らないといけないのは、手間ではあるが、そんなに時間はかからない。10 分ぐらい? うまくやれば、差し込む固さも調節できる。

    あと、基板を効率良く使えるメリットもある。

      共通部分は別だから基板には入らない。固定するための面積も少なく済ませられる。C 基板だと、コネクタ部分 (3 列目まで)以外は、フルに使ってもケースに入れられる。

      専用基板を作るにしても、47mm 幅と 5cm を切るわけで、 長さを 5cm までにしてしまえば、低コストになる。

      ただ、そうすると ケース長 77mm は、ちょっと長い。ピンソケットの分 8.5mm + 50mm ぐらいで良い。完成品にする場合はケースを切ってしまうという手はあるが試作段階ではそうはしたくない。... Arduino でよく使われる 足が長いピンソケットで延長して とりあえず 長さを稼ぐのが良いかも知れない。




        6mm 差し込むと、19mm - 6mm = 13 mm 延ばせる計算にはなる。まだ短いがこんなもので。

      ちょっと高いが、5cm x 5cm の 4 層基板というのもあるようだ ($68)。10cm x 10cm クラスだと $99 だから 3 割ほど安く上げられる。4 層基板を作る手段も持っていないし、目的もまだないが 覚えておこう。

      4 層基板なら アナログ系? ... AVCC のところは適当に処理してしまった。R+C か L+C を入れられる様にすべきだった。 2 回目を作ることがあれば、忘れないようにしよう。ただ、デジタル派なので、4 層基板なら FPGA(BGA) ? ... これと組み合わせる もので 足が多い BGA の基板というのは何か変だし関係なさそうだ。

    さて、PIC32MX 版を作ったのに、わざわざ コントローラ付きと書いたのは ... arduino 互換だと 実はもっと便利かと思ったため。趣味的には mega328(DIP-28) + FT231X(QFN-20) かなぁ。ボタンはひとつで良さそうだから、空いたところに FT231X が入りそう。

      問題は、ピン配置。13 ピン分の I/O ピンしか出せない。デジタルのみにして、アナログは、上のスロットを使う? ... まぁなにか変なものになりそうだ。

    FT231X は発注かけているので現物見て作れそうなら、この基板の仕上がりを確認した後になるが、基板を設計してみたい。

追記: AVR 版 (仮)



    AVR 版 を仮に設計してみた。どうも、時間があると eagle いじってしまう。それはともかく ...

    大分良い感じではあるのだが ... ピンのスペースが足りない。ピンを増やすのも厳しい。位置すらなかなか動かせない。

    というわけで ... 下は アナログ A0 + デジタル D0-D11 (D12,D13 は配置できず )で終わり。3 ピンの部分は 電源電圧の選択( 5V - 3.3V )。 これは、装置が目的ならスイッチにしないで、直結すべき。せめてジャンパ。

    問題は、アナログ入力。下に入らない以上、スライドさせて装着というのは難しい。しょうがないので、センサーボードを別にするという考え方にした。A2 - A5 (I2C 含む)を電源込みで 6 ピン。

    あと大問題なのが ISP 。専用のコネクタを出せないどころか、RESET もピンに出せていない。USBシリアルの FT231X を入れてあるのだが、TXD/RXD/DTR 以外は引き出せていない。要するにブートローダ専用。まぁ DIP だし、装置組み込み用ということで。

    AREF は、コンデンサを付けられるようにしただけ。



    ISP のコネクタは出せないが、BitBang ライタの配線はできた。通常時も切り離せないわけだが、シリアルとして使っている間は、入力ピンなので壊してしまうことはないはず。ただ、配線はできたものの、クリアランスとかかなり厳しい。不安なので前のも残してある。

    ... 今はここまでにしておこう。本当に作るかどうかは、別途検討しよう。

追記: ネジについて

    aitendo CASE-B はネジが特殊だった(M1.7 ?)。いずれ ケースを切ったりすることも考えて M2 でなんとかする方針。まずは、ネジとタップを購入。


    ネジは、トラスコ中山 の ステンレス皿頭小ネジ寸法M2X8六角穴付ボルト寸法M2X8 というのを試す。タップも持っていないので、これ にした。

    六角穴付ボルトというのは、たまたま見つけたのだが、仮組みのとき便利そうなので様子を見てみる。

    ... これでうまくいけば、ケースのサイズの調整も可能。だめなら、おとなしく aitendo からネジを調達する。

      買ったタップは、中仕上用 ピッチ 0.4mm/下穴用ドリル径 1.6mm。製造元直販ページ に書いてあった。

      ケースには、1.5mm Φ の 穴があって 1.7mm Φのネジが切ってある。ここに強引に M2 のネジを切るつもり。完全な穴ではないし、肉厚もあまりないから失敗するかも。ネジが切れても中心がずれるかも知れない。

      まぁ買ってしまったし。結果は追記する。

    ところで、この daishinshop というところ 取寄品 が多いんだが なかなか安い。時間がかかるのは(中華ショップで買うことが多くなったので)慣れている。ついでに、いろいろ買ってしまった。

    タカチ MX2 は、4cm 幅, 6cm 幅のタイプは、M2.6 タップネジだそうだ。同じように M2.6 のタップと ネジを買っておくと良いかも。

追記 2012/10/16:ネジ一式到着

    さっそく タップで ネジを切ってみた。ハンドルを買っていないので少々不安だったが、タップを ラジオペンチで固定してケースの方を回すやりかたなら問題なし。ただ、抜くときがネジを切るより難しかった。完全な穴ではないので、ひっかかるのだ。抜くときもネジを切る -- しかも反対側でという感じ。だから一気にねじ切ってはいけない、一回ぐらいは途中で抜くべき。中心は少しずれたかも知れないが分からないレベル。

    さて、ネジについてだが、六角穴付ボルトは、見た目でも良い感じかも。基板が到着したら写真を取ってみよう。もうひとつは、サラネジ。悪くはなさそうだが、基板を大径ドリルでさらわないと 。綺麗な仕上がりになるかどうか ...

おまけ: imall.iteadstudio.com で気になる商品

    新サイトになったときは、商品が少なかったが、結構増えている。ちょっと気になるものを取り上げてみた。基板だけ発注することが多いのだが、ついでに買うのも良いかも知れない。

    2.54mm 40Pin Gold-plating Male Header

    ピンヘッダなんだが、白と黄色がある。(前みたときは、緑とか青もあったような...)

    ITDB02-4.3
    ITDB02-5.0

    コントローラ(SSD1963)付きの 4.3 inch 480x272 , 5 inch 720 x 480 LCD モジュール。
    フレームバッファ付きだから、AVR でも使おうと思えば使える。

    Crystal Oscillator 3.2 × 2.5 × 0.7 SMD (5Pcs) (passive: 発振子)
    Crystal Oscillator 5.0 × 3.2 × 1.2 SMD (5Pcs) (active: 発振器)

    12 Mhz と 25 MHz しかないが、FPGA に良さそう。

    Rotary Encoder with Switch

    ロータリースイッチ。掘り出しモノなのかどうか判断できないが、なにやら良さ気。

      少し小さめ。プッシュボタン付き。シャフトが丈夫そう。... メリットはこのあたりか?

    部品は、マニアックなものがわりとある。要チェックかも。

追記 2012/10/21 : 基板到着



    長穴は、なにも連絡なしに黙って作ってくれた。ただ、気持ち大きいような気がする。milling の線の太さを 細くすべきだったのかも?



    とりあえずケースに取り付けてみた。幅はぴったりか 気持ち大きめ。ケース中央は少し凹んでいるため、そう感じるのかも。高さは小さめで、明らかに段差がある。dimension だけ 少し(0.1 〜 0.2mm)大きくしたほうが良いかも知れない。

    六角穴付ボルトは、良い感じになった。あと、すz マークだが、銅箔も マークしている。気持ちほりが深い。



    皿ネジのほうは、こう。ピンヘッダの先が見えるのだが、C 基板の 3 列目に L型ピンヘッダを差し込んで、基板をフタにぴったりくっつけてみた。

    記事中で L型ピンヘッダの位置合わせが難しいと書いたが、間違い。下に取り付けるので 現物で合わせた上で、はんだ付けできる。

付録: eagle ファイル

    ai-caseb-04.zip

    PIC32MX のボードと 回路なしのディメンジョンのみのボードを添付。

    caseb-pic32mx-01
    Todo:
     発注までに見直す。長穴、USB 表裏 (見直し1回)

      cam は、Milling を Dimension と同等の扱いにした。両脇に drill を打つべきかどうか?
      USB の表裏は合ってる。

     できるだけ部品は裏にもっていく (済)

      RC は裏に持っていったが ... VIA の処理も目立たないようにすべきか。Stop Off にして(tented via)にして位置も隠れるところに移動。(済)

     シルクの見直し (見直し1回)

      見直しはした。でも、パネルにするなら、不要なものは削除すべきか。

     USB A/メスの削除

      パネルにするなら、見栄えと絶縁の問題で削除した方が良いが... 便利な機能を削るのもどうか? ... と思ったが、USB A/メスは 無理なので削除決定。

    caseb-pic32mx-03

      目盛りをいれたり、パターンを見栄えのために少し修正。

      スロットの基板想定位置も シルクに入れた。現物で合わせている。

     DIP-28 の移動。

      DIP-28 と下のコネクタとの間が狭すぎハンダ付けが難しそうなので、上に移動。

     panelize で 表裏逆に

      とりあえずパス ... と思っていたのだが、単に brd の中で グループ・ミラーすれば良いだけだった。

    コネクタを 0.25mm 下げる。(0.4 で済)

      底面からの高さを 2.8 mm と見たのだが、どうも違う。2.5mm (か 2.6mm) のようだ。実際 2.54 mm のパーツが入るので、底面からの高さを 2.55 mm に変更。

      もう発注してしまったが、これだと 合わせられない。困った。
      → ピンフレームだと 0.5mm x 0.25 mm とかだから 1 Φ内で調節できる(と思うことにした)。ピンヘッダだと無理だが .. スロットに合わせないなら OK 。今後もあるので、eagle ファイルは修正。
posted by すz at 22:31| Comment(2) | TrackBack(0) | 日記

2012年09月24日

USB VID/PID

スイッチサイエンスで『USB PID無償提供プログラム』を検討しているのを知った。USB の ファームウェアを公開している立場からすると、USB の PID/VID は結構厄介で、正直自由に使える ID が欲しい。ID を使わせてあけようと考える人がいるというのは、非常にありがたい。

この機会に使える PID/VID についてまとめておこうと思う。

チップベンダーが提供する サブライセンス

    MicroChip や FTDI, TI (, Atmel も?)などは、製品に利用できる サブライセンスを発行している。が、当然ながら そこのチップを使うことが前提になっている。いまのところ USB 付き AVR の ファームウェアしか作っていないのだが、互換性のある ファームウェアを PIC32MX 向けに作りたいと考えている。

    ベンダーのしばりがあるのも問題だが、作っているものは製品ではないほうがより大きな問題で、サブライセンスを受けようとも思わないし、また受けられるとも思えない。

V-USB が使っている USB の VID/PID

    V-USB の最新版 vusb-20120109.tar.gz を解凍すると USB-IDs-for-free.txt というのがある。これには、いくつかの VID/PID のペアが載っていて、ライセンスに従えば 使用することができる。

    ライセンスは、Version 2009-08-22 となっていて、以前のものから見直しがされている。一番大きな変更だと思ったのは、使うチップやライブラリの条件がないということ。シェアできるようにさえなっていれば、他に条件がないようだ。

    以下、自分の理解。(厳密なものではないので注意)

    テキスト名による 識別

      ・ テキストの ベンダー名と プロダクト名は、USB language 0x0409 (English/US)でなければならない。

      ・ ベンダー名は、自分の Internet domain name (e.g. "mycompany.com") か e-mail address (e.g. "myname@gmx.net") を含んでいないといけない。( たぶん URL でも可 )

      ・ 自分の URL や e-mail アドレスは、レスポンスを返せるものでなければならない。

      ・ ドライバは、全文字列を チェックしなければならない。(sub-string の比較はダメ)

      以上を守れば、次の ID を使うことができる。

      PID dec (hex) | VID dec (hex) | Description of use
      ==============+===============+============================================
      1500 (0x05dc) | 5824 (0x16c0) | For Vendor Class devices with libusb
      --------------+---------------+--------------------------------------------
      1503 (0x05df) | 5824 (0x16c0) | For generic HID class devices (which are
      | | NOT mice, keyboards or joysticks)
      --------------+---------------+--------------------------------------------
      1505 (0x05e1) | 5824 (0x16c0) | For CDC-ACM class devices (modems)
      --------------+---------------+--------------------------------------------
      1508 (0x05e4) | 5824 (0x16c0) | For MIDI class devices
      --------------+---------------+--------------------------------------------

    シリアルナンバーによる 識別

      ・ シリアルナンバーは テキストで、USB language 0x0409 (English/US)でなければならない。

      ・ シリアルナンバーは、自分の Internet domain name (e.g. "mycompany.com") か e-mail address (e.g. "myname@gmx.net") を含んでいないといけない。( たぶん URL でも可 )

      ・ 自分の URL や e-mail アドレスは、レスポンスを返せるものでなければならない。

      ・ Vendor Class を使いたい場合は、libusb か libusb-win32 を使うこと。

      ・ それ以外のクラスを使う場合は、OS のデフォルトのドライバーを使うこと

      以上を守れば、次の ID を使うことができる。

      PID dec (hex) | VID dec (hex) | Description of use
      ===============+===============+===========================================
      10200 (0x27d8) | 5824 (0x16c0) | For Vendor Class devices with libusb
      ---------------+---------------+-------------------------------------------
      10201 (0x27d9) | 5824 (0x16c0) | For generic HID class devices (which are
      | | NOT mice, keyboards or joysticks)
      ---------------+---------------+-------------------------------------------
      10202 (0x27da) | 5824 (0x16c0) | For USB Mice
      ---------------+---------------+-------------------------------------------
      10203 (0x27db) | 5824 (0x16c0) | For USB Keyboards
      ---------------+---------------+-------------------------------------------
      10204 (0x27dc) | 5824 (0x16c0) | For USB Joysticks
      ---------------+---------------+-------------------------------------------
      10205 (0x27dd) | 5824 (0x16c0) | For CDC-ACM class devices (modems)
      ---------------+---------------+-------------------------------------------
      10206 (0x27de) | 5824 (0x16c0) | For MIDI class devices
      ---------------+---------------+-------------------------------------------

    ちなみに、ここで出てきている VID (0x16c0)を、Atmel だと誤解していた。Atmel は 0x03EB で違う。0x16c0 は、 "Van Ooijen Technische Informatica" ( www.voti.nl ) であった。

スイッチサイエンスさんへの要望

    最後になるが、twitter で意見を公募しているようなのだが、twitter の ID を持っていないのでここに書いておこう。

    USB には ドライバーが付き物で、ドライバーまで頑張って作るのではない限り、USB-IDs-for-free のライセンスで結構カバーできる。だが、OS のデフォルトのドライバー で使える別のクラスがあれば、このリストに追加して欲しいということになる。できたら、スイッチサイエンスさんに 同じルールの PID/VID の セットを作ってもらって 要望によって、リストが追加されるようになっているとたいへん嬉しい。

    OSS で ドライバーまで頑張って作るのであれば、ドライバー自体が共有できるものだから、やっぱり このリストに追加して欲しいということになる。

    逆に 個別のID を製品に付けたい ... となると 同人ハード とか 商品の試作みたいなことになるのではないだろうか? OSHW かつ OSS であるなら コピー製品を妨げることは出来ず 累計の制限は無意味になる。 累計の制限を付けるのなら OSS はともかく OSHW の制限は外すべきだと思える。

    まとめると、

    ・ シェアできるものは、USB-IDs-for-free ライクなライセンスで追加の要望が出せる
    ・ シェアできないもの(そのレベルになっていないものも含める)は、累計の制限を付け 仮ID の扱い。

    こんな風だと非常に嬉しい。
posted by すz at 20:37| Comment(61) | TrackBack(0) | 日記

2012年09月20日

8桁7セグ表示ボード

aitendo の 3/4 桁の7セグLED は、アノードコモンとカソードコモンが両方ある。なら、全部並列につないでやれば、12 ピンで 8 桁に拡張できる。さらに、よくよく見れば 4 桁で小さめのサイズもある。

4桁7セグモジュール(0.36"/green)[KEM3261G]
4桁7セグモジュール(0.36"/red)[KEM3261R]

8 桁だと、6cm 幅になるが、パターンは 5cm に収まるので、表示ボードを設計してみた。

    コネクタは、12 pin + 3 pin の15 pin 。基板のサイズは、秋月C基板に近いので、固定する穴のディメンションを同じにしている。


    ボタンも付けてみた。



    ボタンの回路図はこれ。ピンを節約したかったので、ADC で読むようにしている。こういう風に接続すると、同時押しには向かないものの、制御が簡単になる。

    表示方法は、1 つのセグメントを順番に表示させるつもり。1/64 duty というわけだ。以前 8x8 のドットマトリックス LED で同じようにしたが、全然問題ない。ただ、表示順は考えておかないと ぶれたとき見にくくなる。

    u5004s-0.1.zip : ベースにする予定のコード。(メモ)

コントローラの追加

    もともと tiny2313 を付けるつもりだったのだが、うまく収まらなかった。で、表示部だけ にしたのだが、コネクタの都合もあって ADC が必要になってしまった。そうなると tiny2313 は使えない。

    で、表示部と別にコントローラ部を作ることにして、mega328 (タイプ) を使うことにした。

      後で気がついたのだが、アノード+カソードでもボタンは 7segの線と 共用できる。ADC など必要ではなかった。-- まぁ ADC での回路を作ってみたかったということで。



    結局こんなのが、出来上がった。そのままでも良いが、切り離して、T 字型に組めるようにした。表示部分のみにして、別のコントローラを使ってもよい。

    専用のコントローラ部を作ったわけだが、出来ることは多くはない。

    もともと、シリアルで受け取ったデータを表示させるだけのつもりだったのだが、これだけではもったいないような気がして、水晶を付けてみたり 、さらに外部クロック入力 や ICP を コネクタに出したりはしたが、やっぱりイマイチ。

    追記:

    PIC32MX 版も作ってみた。... のだが、PIC だと 5V トレラントのピンがあったりして、ポートの出力が均一にならない。こういう目的だと AVR の方が良さそう。折角作ったので、これも含めた eagle ファイルを置いておく。

    あと用途について。LED をダイナミック点灯させるとノイズがすごいことになる。やはりコントローラでいろいろやるのは、避けて 表示メインにしたほうが良いと思う。

    とはいえ、周波数カウンタぐらいには仕立てたい気もする。ただ、水晶 も温度で周波数が変わるし、補正する仕組みを入れたいところ。ICP と SPI はピンに出しているから、
    DS3234S
    を接続することはできる。

    DS3234Sは、結構精度が良いらしいので、この出力をもとに補正するやりかたを考えたい。ちなみに、WDT 用 RC クロックと 水晶の周波数のズレを元に温度が測定できそうな気がしている。それが出来ると、補正値も温度ごとに持てる。... 補正できてしまえば、DS3234Sを外せる。そして、外した DS3234S は、自家用基準クロックとして使いまわすのだ。

    (参考) ■ TCXO水晶内蔵 SPIバスRTC DS3234Sを制御する ■

      O-Family 氏の解説等 ... なんと 独自に翻訳した DS3234S 日本語マニュアル がある。

C-533SR + TYINY2313 版



    秋月で扱っている 3桁 7seg の C-533SR 版も設計してみた。

    6 桁になってしまうが、これも 50mm に収まる。(aitendo のやつはダメ幅が広い)。 さらに、TYNY2313 (DIP) も内側に入れられる。両方カソードコモンなので、6 桁に減っても +2ピン増える。ただし、ボタンは 共用して -1 ピン。合計 14 ピン。TINY2313 だと TXD/RXD を通信用に使っても 1 ピン余る計算。

    コネクタは、固定用の意味もあるので、そのままにしているが、VCC/TXD/RXD/GND の 4 ピンのみ使う。ISP も一応コネクタに出した。

    この基板は、組むのに手順がある。表面実装 RC → TINY2313, ISP コネクタ → 7seg の順でないとまずそう。

全体回路図:


全体回路図( C-533SR 版):

eagle ソース:
seg7disp-02.zip
posted by すz at 21:05| Comment(0) | TrackBack(0) | 日記

2012年09月15日

FT232Rボードとか

ちょっと思い立って goodluckbuy.com で FTDI を検索 してみたところ、FTDI Basic Breakout っぽいボードが出ていた。



 FTDI Basic Breakout Arduino USB-TTL (goodluckbuy.com) $6.56
 FTDI Basic Breakout Arduino USB-TTL (dealextreme.com) $7.50

かなり安いのだが ... よくよく見ると ピン配列は同じものの、垂直にピンソケットが付いている。

なんで? と思ったのだが、どうやら 検索のついでに出てくる 『MWC MultiWii』 のほうがメインで、それで使いやすいようになっているようだ。

    『MWC MultiWii』を知らなかったのでググってみて、『MWC MultiWii SE Standard Edition(CRIUS)』という記事を発見。

      この一枚の中に3軸ジャイロセンサー、加速度センサー、気圧センサー、方位センサーなどがセットしてあります。

    とのこと。さらに調べると 『有志が作成したデータシート』が見つかった。



    - ITG3205 three-axis MEMS gyroscope, I2C, 16-bit ±2000°/sec, 3.3V-6.5mA
    - BMA180 three-axis accelerometer, I2C, 14-bit, <0.15° accuracy, 3.3V-800uA
    - BMP085 pressure sensor, I2C, 0.3m resolution, 3.3V-10uA
    - HMC5883L three-axis digital compass, I2C, 12-bit, 160Hz, 1-2° accuracy, 3.3V-100uA

    基板のサイズは、50mm 角となっているが、40mm 角のタイプもあるらしい。あらためて goodluckbuy.com で検索すると $40 ぐらいからある。センサーだけのボードもある。

    なかなかに興味深い。arduino として使えるなら、quad copter のコントローラにこだわらなくても、倒立振子とか 用途はいろいろありそう。

FT230X/FT231X

    実を言うと FTDI を検索してみたのは、FTDI の新しいチップの FT230X/FT231X に興味を持ったため。そして、興味を持ったのは、QFN パッケージだったりする。サイドまで パッドがつながっている QFN なら容易にはんだ付けできる -- そして FT230X/FT231X は 今までのパッケージと違って サイドまで パッドがつながっているのだ。しかも安かったりする。Mouser だと 180 円前後。

      FT230X は 16pin / FT231X は 20pin 。パッケージは、QFN 以外に SSOP(0.65mm ピッチ) もあって、 FT232R のピン数を減らしたものに見える。SYNCBB も使えるし、CBUS ピンもある。ただし、VIO は、1.8V 〜 3.3V (5V トレラントではある)。

    基板を作ってみたいという、妙な動機で興味を持ったわけだ。CTS/RTS しかない FT230X にするか 全部ある FT231X にするか迷っていたが、FTDI basic breakout (DTR + CTS) が主流なら FT231X が無難かも知れない。あと、パッケージが小さくなっているので、AE-UM232R (というか UM232R) 互換 のボードも自作しやすいかも知れない。

    追記: USB の D+/D- には、27Ωが必要で、パッケージが小さくなっても必要な面積は減らないようだ。安いだけがメリットかも。

      AE-UM232R で気に入らないところは、足が付いてしまっているところ。外すのも難しいし、いっそのこと基板から作りたい気分になっている。ちなみに、ピン配置は、FTDI の UM232R モジュール互換で、AE-UM232R がオリジナルというわけではない。

    ... などと考えていたのだが、沢山作ってもしょうがないので、思いとどまった。とりあえず今回はメモだけ。Mouser で発注するついでに 入手しておくつもり。忘れないようにしないと。

    あと、思いとどまった理由に PIC32MX がある。PIC32MX でも QFN があって、FTDI Basic Breakout っぽいボードは作れそうな気がしている。PIC32MX を使いこなせるなら、こっちの方が良い。問題は、いつ使いこなせるようになるか。なんとかしたのだが、なかなか手が進まない。

FT231X ボード設計



    QFN-20 の FT231XQ を使った FTDI Basic Breakout っぽいボードを設計してみた。

    USB は mini-B 以外に ケーブル直付けも出来るようにしてみた。typeA オスを(裏に)付けることもできるので、シリアル側のケーブルを伸ばす使い方もできる。

    あと、シリアル側に抵抗を入れることができる。さらに RTS を引き出せるよう細工。



    こっちは、AE-UM232R っぽいボード。裏面に抵抗を入れられるようにしてみた。VCCIO は、3V3 につないであるが、パターンカットができるように配慮はした。あと、RST も VCCIO に直結しているが、プルアップ抵抗を入れられるようにした。

    CB0/CB1 は、同じピン配置にしたが、FT231X では、TXLED/RXLED が CB1/CB2 に変更されている。LED を外部に付ける場合 FTProg (MProg) で 設定を変更しないと互換にならない。



    2012/9/18 : panelize.ulp で 面付けしてみた。一枚のボードとして認識されないと面倒そうなので、自作のツール(gerbtool)は使わなかった。

    下が、PIC32MX (QFN-28) の AE-UM232R 風ボード。2 の 2 枚が、FT231XQ (QFN-20) を使った AE-UM232R 風ボード。PIC32MX だと部品点数が増えて厳しい。USB を飛び出させた分大きくなった。

    切りやすいように、基板間に、tStop/bStop ,tRestrict/bRestrict の帯を入れる。さらに、ボード厚を 1.0mm にして発注するつもり。

    ところで、panelize.ulp での面付け少しばかり不安。上の 2 枚の QFN の 裏の パターンが変わってしまっている。-- 属性が 変わったようだ。この程度なら良いけれども ... 他にもあるかも知れない。

    あと、面付けしたことで、ベタパターンが変わってしまっている。橋にまで回り込んだだけなので、問題はないが ...

    eagle ソース : PIC32MX-typeBr3-04.zip
    gerber データ:um231x-p-out.zip

注意:

    無邪気に紹介してしまったが、ロゴまでコピーしたものとか、ロゴだけ取ったコピー品とかあるかも知れない。さすがにそういうのは薦められない。

    最初のボードは、パターンが違うし、ロゴ取っているし、なんとなく ぎりぎり OK な範囲のような気がする。

    『MWC MultiWii』の方はオリジナル自体知らないので、判断できていない。買うなら独自性のあるものを選んで欲しい。あと、ファームウェアがどういう条件で使えることになっているのか知らないのだが、本来の目的では使わず 他の使い方 をすることを想定して紹介している。本来の目的で使いたいのであれば、ファームウェアの使用条件には留意して頂きたい。

Mouser メモ

    全く関係ないのだが、Mouser で買っておきたい部品のメモ:忘れないようここに書いておく。

    ERJ-3GEYJ

      1608 5% の抵抗なのだが、やたら安いらしい。

    CC0805

      2012 のコンデンサ。かなり安いような... 22pF とかの買いまし。

    LTV-0701

      高速フォトカプラ。10Mbps 以上の 高速フォトカプラ は、あまり品種がないのだが、これは 100 Mbps となっている (本当なのかどうか、未確認) 。

      10Mbps の LTV-0601 より安かったりするし、ちょっと欲しいような。 使い道も考えていないのだが ...

    PIC32MX2 (QFN-28 / QFN-44)

      QFN が欲しいのだが、いつでも在庫があるわけではないようだ。

    追記: デジキーだと PIC32MX220 の QFN-28 は、在庫がある。PIC32MX250 も 10/1 に入荷するようだ。だが、 FT231X は、12 月! 。一方 Mouser は、10月に FT231X が入荷するものの、PIC32MX250 はリードタイムも出ていない。なかなか入手できないなら、デジキーで発注をかけておこうかな ... という気になっている。
posted by すz at 16:43| Comment(114) | TrackBack(0) | 日記

2012年08月23日

アルミケース三種

気になったアルミケースについて。

aitendo のアルミケース(B) 550円


     基板幅 (最大 47.4mm) 基板長 (最大 77mm) ケース高(外寸 21 mm)
     専用基板 P47X77-B
     ケース・フタ B-CAP

これが気になった最初のもの。ケースに溝があって基板が入るのだが、どうやら秋月C基板がはいりそうな感じ。

最近は C基板が入るかどうかより、Fusion PCB や IteadStudio で作る基板に向いているのかどうかの方が大事。5cm x 5cm は $9.99 と格安だから、このサイズに合うかどうか ... 幅はちょうど良いが、少し長い。押し出し材だから切ってしまうという手もあるが、5cm x 10cm も最近は安いようで、$25 出せばカラー基板が作れる。

タカチ MX型丸型モバイルケース (pdf) 590 〜 670円 (標準価格)


    MX2-6-5, MX2-6-8, MX2-6-10 -- 基板幅 (最大 47.7mm) 基板長 (最大 45mm, 70mm, 95mm) ケース高(外寸 18 mm)

あらためて、タカチのケースを見れば、ちゃんとあった。MX型は値段も安いし、45mm と 5cmx5cm に合いそうなものもあった。5cm x 10cm までで作るなら、MX2-6-10 も良いかもしれない。

タカチ MXA型アルミモバイルケース (pdf) 1290 〜 1490円 (標準価格)


    MXA2-6-5, MXA2-6-7, MXA2-6-10 -- 基板幅 (最大 47.7mm) 基板長 (最大 40mm, 65mm, 90mm) ケース高(外寸 18 mm)

    最近は、オールアルミで仕上げが美しいタイプもある。その分お高いが、目指すものによっては、これを選択するのもアリなんだと思う。

... というわけで、ちゃんとケースに入れるものを作ってみたいような気がしている。最初は、MX型の MX2-6-8 か MX2-6-10 あたり? ただし問題は中身。装置として完結していないと ... 。
posted by すz at 21:31| Comment(0) | TrackBack(0) | 日記

2012年08月14日

USB HUB IC

ちょっと USB HUB IC について気になったのでメモ。

以前目をつけた HUB に、

Quadrate USB 2.0 4-Port Hub with USB Cable (Color Assorted) $4.14
Quadrate USB 2.0 4-Port Hub with USB Cable (Translucent Orange) $4.20

というのがある。どこに目を付けたかというと...

  • 透明なので、外観でどういう構造なのか分かる。改造しやすそうな感じ。片側 2 port のコネクタを取って 外部 2 port + 内部向けみたいなことも出来そう。

  • IC が SSOP28 で、電子工作として扱いやすそう。-- IC が単体で手に入らなくとも HUB から外してしまえば良い。再設計した基板に載せかえれば、自由な形態にできる。

まぁこういうことなのだ。これを、入手したので、ID を見てみた。

さて、しばらくぶりに FE1.1s を ググってみれば、この IC に目を付けたひとがいた。

仕切りなおしのA8
Hubあぶり焼き
空きパターンのアレ


回路図も作ってくれているので、見たところ ... すごくシンプル。SSOP28 だし、なにか、電子工作ネタに良さそうな感じ。


    3.3V と 1.8V のレギュレータがオンチップになっている。 どれだけ電流を流せるのか分からないが、場合によっては、このためだけに使うのもアリか?

記事中にあるが、このひとが入手したのは、上海問屋の これ。今でも 299 円で入手できる安物 HUB 。ケーブルが断線したりして、壊れやすそうだが、壊れても捨ててはいけない。バラして電子工作ネタにするのだ。

基板が小さいので、そのままでも なにかに組み込んだりできそうだし、基板を起こして PIC32MX ボードのマザーボードみたいにするのも楽しいような気がしている。
posted by すz at 22:19| Comment(83) | TrackBack(0) | 日記

2012年05月26日

dealextremeの電子パーツ

dealextreme で扱っている 電子パーツが増えてきている。(コンパチ品ばかりだが) Arduino関係 まで扱うようになっている。

お買い得なものや 日本で手に入りにくいものもあるので、ピックアップしてみよう。

お買い得なもの

日本で手に入りにくいもの

これぐらいにしておこう。電子パーツと言いながら、コネクタとか スイッチばかりになってしまった。こういうのは、実際安いし種類も豊富にある。探してみると掘り出しものが見つかるかも知れない。

追記: ミニミニバナナ

EAGLEの45°回転

    ナビゲーションスイッチ MT-008A は、(反時計回りに)45 °回転して マウントする。このライブラリを作ろうとしていたのだが、どうやって 45 °回転した PAD を作ろうか悩んでいた。-- i アイコンでの 設定で、回転角があるのだが、ふと 45 と入れてみたら見事に回転した。(使っているのは、EAGLE-5.7)

    なんだ、EAGLE でも 45 °回転した部品は作れるのか ... と嬉々としてライブラリを作ってみた。座標を計算するのが面倒なのだが、なんとか 出来上がった。 出来上がってから、部品も回転できるのでは?... と思いついてやってみたら、できた。 45 °どころか任意の回転ができるようだ。

    90 °単位しかダメだとばかり思っていた。

    ところで、MT-008A は、ユニバーサル基板にマウント可能かも。作ったライブラリをじっくりみると ... 位置決め用の でっぱり? が、2.54mm ピッチ。三連の真ん中さえ絶縁して引き出せれば なんとかなりそうだ。
posted by すz at 12:29| Comment(0) | TrackBack(0) | 日記

2012年05月19日

昇圧 DC-DC コンバータ覚書

前の記事に関係あるが、ステッピングモータ SPG20-1362を使うなら、15V 近い電源が必要になる。これをどうしたら良いかちょっと考察。

MC34063A

    汎用の DC-DC コンバータだと MC34063A がある。これは、昇圧にも使うことが出来て 5V → 12V なんかでも使える。あまり凝らないのなら、これで作るのも良いだろう。

    以前に書いたのだが、この MC34063A の派生版のような IC で M5291FP というのがある。日本語の PDF もあって、細かい説明が書かれていて参考になる。ググるキーワードは、RJJ03D0805 。現在も ルネサスのサイト から ダウンロードできる。

    4.8V (NiMH x4) を入力として 13V 0.5A を作りたいとして、ちょっと検討してみよう。

    まず 部品として、
  • 表面実装用(SMD) インダクタ (27uH , 3.1A) 4個 100円 
  • 表面実装用ショットキーバリアダイオード SS2040FL (40V , 2A) 20個 300円
    を使うことにする。

      Ton/Toff = ( Vout + Vf - Vin ) / ( Vin - Vsat )
       Vf は、ダイオードの 順方向電圧
      Vsat は、トランジスタの飽和電圧

    こういう式がある。Vin から上げたい電圧:Vin が Ton:Toff になるということか。

    ダイオードの 順方向電圧 は電流を流せば増える。0.5 V と見積もっておく。Vsat は、M5291FP のデータシートでは、外付け Tr を使わないなら 0.6V だそうだ。あと電流検出抵抗 Rsc の分がある これは Vin から 0.3V 引いておくことにしよう。

      Ton/Toff = ( 13 + 0.6 - 4.5 ) / ( 4.5 - 0.5 )
      = 2.275

    結果はこうなった。Ton は結構長い。

      Ipk = 2 x Iout x (1 + Ton/Toff)

    次にこういう式がある。電流は 線形で増えていくから ピークは平均の 2 倍。で、平均電流と出力電流の関係は、Iout x (1 + Ton/Toff) 。Toff の時間に 線形に減っていく電流の面積。こういうこと?

      Ipk = 2 x 0.5 + (1 + 2.275)
      = 3.275 (A)

    13V で 0.5A 流したいなら Ipk は 3.275 になる。インダクタの定格をちょっとオーバするが気にしない。

      Lmin = (Vin - Vsat)/Ipk * Ton
      1/Ton = (Vin - Vsat)/Ipk / Lmin
      Ton = Lmin * Ipk / (Vin - Vsat)

    Ipk はこの式で使い、Ton(MAX) を出す。

      Ton = 27u * 3.275 / ( 4.5 - 0.6)
      = 22.7 (us)
      Toff = 22.7 /2.275
      = 10.0 (us)

    計算した Ton + Toff から周波数を計算すると 30.6 kHz になった。

    これで良いの? という気がするのだが ... 5V → 12V 1A の回路例で 10uH なのに 50kHZ に周波数を設定している。0.5A なら 20uH で50kHZ 前後のはずだから だいたい合っているような ...

    効率はどうなるのだろう?

      出力は、13V x 0.5A
      入力は、Vin (4.8V) x ( 0.5A + 1/2 Ipk x Ton/(Ton + Toff) )
      で計算してみた。0.5A 足しているのは、昇圧は Vin に 上乗せするような計算になっていたから。理由ははっきりわからないが、こうしとかないと辻褄が合わなさそう。

      計算すると 82% ... 理論値みたいなものだし、実際はそんなはずはないか ...

    ところで、Ipk と 定格の関係。ダイオードなんかは、定格は平均電流。ダイオードの定格は 2.0A だが、大丈夫なんだろう。インダクタは、10% インダクタンスが減るときの 電流値で、実はもうすこし流せるようだ。これも問題ない。問題は、MC34063A自体。1.5A と書いてはあるのだが、ピークなのか平均なのか?

    ピークなら Ipk = 3.275 (A) だから全然ダメ。だが平均は、

      1/2 Ipk x Ton/(Ton + Toff)
       = 1.14 (A)

    だからいけることになる。

    どっちだろうか? それはやってみれば分かる。ただ、やってみるには、Rsc として 0.1 Ωが必要。... これの入手に難がある。

  • コスモ電子: 酸化金属皮膜抵抗 1W

    とかあるところにはあるようだ。

  • MCR25JZHFLR100 0.1Ω 3225
  • MCR50JZHFLR100 0.1Ω 5125

    デジキーならこのあたり。

    MC34063A の互換品には、NJM2360ADがある。 あと、100均の シガープラグ の 5V アダプタでも使われているのは有名。

    発振周波数設定用のコンデンサの値

      Ct (pF) = 40 x Ton (us)

    だそうだ。1000p ぐらい。


Tiny13A

    上の計算で、周波数や Duty比は分かった。なら Tiny13A とかの PWM でも良さそうなものだ。ADC があるから 電圧を測定できる。出力電圧を上回ったら スイッチングをやめれば良い。

    追加部品は、Nch MOSFET。

  • シングルNchチップMOSFET FD6612A (30V , 8.4A) 10個 200円 売り切れ
  • シングルNchチップMOSFET FD5680 (60V , 8A) 5 個 200円
  • DMS3016SSS SO-8 シングル(デジキー)
  • DMG3420U SOT-23 (デジキー)
  • DMG3415U SOT-23 (デジキー)
  • IRLML6246 SOT-23 (デジキー)

    沢山書いたが、FD6612A,FD5680 は VGS が高く 4.8V をそのまま AVR の電源にしないといけないという制限になる。 DMS3016SSS はデジキーで買えるものだが、置き換えが可能。はなからデジキーから買うつもりなら SOT-23 の DMG3420U も良いかも。

    ... というわけで、Nch の MOSFET の選択もなかなか面倒。

Tiny85/Tiny45

    Tiny85/Tiny45 だと もっと高度なことが出来る。やってみたいのは、コンパレータを使った電流モード制御の追加。

    電流測定用 抵抗として 0.1Ωを用意して、Nch MOSFET と GNDの間に入れる。あと、比較用に 0.3V を 分圧して作る。分圧の元は VCC (4.8V) でも良い。

    制御は、3A 流れることがあれば、Ton を短くする。毎周期 3A 流れた時点で Off にするというのは 厳しいので、3A 以上流れないように Ton を調整するわけだ。

    ピンアサイン案:

    ~RESET 1 8 VCC
    ADC3 2 7 ADC1 (SCK) voltage
    L 電流検出 ADC2 3 6 PWM (MISO)
    GND 4 5 (0.3V)基準電圧 (MOSI)

    #5 は、AIN0 だが、AREF でもある。こちらに 基準となる電圧を入れたほうが融通が利きそうだ。AIN1 は、ADC0-3 と置き換えることができる。Tiny85/Tiny45 は、差動入力 ADC2-ADC3 が使えるので、応用の可能性を考慮して、電流検出は #3 ADC2 にする。
posted by すz at 02:31| Comment(0) | TrackBack(0) | 日記

倒立振子ロボットめも

メモたんく』の ぱんと氏 のところで倒立振子ロボットを作っているのを見つけた。興味深いのでメモしておこう。

オリジナルは、『からくり小僧』の iCHIRO 氏の LIBRA-ZERO/ONE 。こちらの記事も合わせて見ている。

モーター + 車輪:

    まず、モーターは、ギア付きの ステッピングモータ SPG20-1362。 (ぱんと氏は) これに、タミヤの 楽しい工作シリーズ No.96 オフロードタイヤセット を直接付けている。

      記事をみていると、 オフロードタイヤセットの(ホイールではなくて)タイヤが外れる? -- みたいなことが書いてあった。iCHIRO 氏は 同じシリーズの ナロータイヤセットを使っている。ただ、ちゃんとセットアップできれば オフロードタイヤセットの方が良いようなことも書いてあった。

      ... なかなか タイヤの選択も難しいらしい。

    いままでにも、倒立振子ロボットに興味を持ったことはあるのだが、駆動部のトルクと速度をどうするのが良いのか分からなかったので、パスしていた。なるほど、SPG20-1362 が具合が良いのか。-- この組み合わせで 倒立振子ロボットとして実績があるというのは 心強い。

モータ用電源

    モータの駆動電圧は 15V 近いようだ。オリジナルの LIBRA-ZERO/ONE では PIC の PWM で 昇圧 DC-DC コンバータを自作している。

    キーになる要素をメモすると ..

    表面実装用(SMD) インダクタ (27uH, 3.1A) を使用し、PWM周波数は、200KHz位。出力電圧14.4Vで 電流0.4A (5.76Wの出力) 。入力は約4.8Vで2.0A (約60%位の効率)

    この DC-DC コンバータは I2C デバイスとして実装されているとのこと。

その他の部品

    (ぱんと氏は) センサに、小型圧電振動ジャイロモジュールを使っている。

      iCHIRO氏も 使っているのは ジャイロセンサ 秋月の旧製品? 。それはともかく、ジャイロセンサは、角加速度を検出するものではなく、角速度。ふうむ Gセンサは使わないものなのか。

    モータドライバは、何だろう? ユニポーラ型だそうだから、表面実装用トランジスタアレイTD62083AFNG とかで十分? 8ch だから これで 2 個のモータを制御できるし。

モーターを回すだけでも 電源の問題もあるし、なかなかに手応えがありそうだ。その上で 倒立振子 としての制御 、さらに 自由に動かすための制御 がある。

駆動系を作るのは比較的簡単そうで、動かすのに頭を使う。なかなか良さそうなテーマだ。 実際に動かすのも狭い場所で楽しめそうだし、その面でも良い。

部品についても、良い物が結構安く手に入るようになってきた。良い時代になったものだ。

その他のメモ

SPG20-1362

    今は、SPG20-1332 と 2 種類がある。以前は SPG20-332 というのが売られていたのだが、性能が上がってコンパクトになったのが、SPG20-1332 。1332 は、1 ステップ 0.75°で遅い。1362 は、1 ステップ 1°で若干高速で こちらの方が 倒立振子 として向いているそうだ。

      (参考) からくり小僧:ステッピングモータ(SPG20-1362)を使ってみた

      これを見ると、高速回転ではトルクが低下していく。グラフを見ると 600 pps ぐらいで半分。とりあえず 限界を 720 pps と仮定すると 2 回転/秒 (= 0.083sec/60°)。55mm のタイヤなら 35cm /sec 。このときの トルクは 25 mN・m ぐらい ... 1N・m = 10.2 kg・cm だそうだから 0.25 kg・cm ?

      無理やりサーボモータで使われる単位にしてみたが ... 速度はサーボモータ並みだけれども トルクは(小型のものと比べても)はるかに(一桁) 小さい感じ。

    データシートを見ると 2W と書いてある。抵抗は 68Ω。電流を流しつづけたときに 14.4 ^2 / 68 = 3.0W だから こんなもの? 電流的には 14.4 / 68 = 210mA (最大) 。0.4 A 流せれば 2 個駆動できる。

DC-DC コンバータ

    AVRで再実装するとして、PWM は 8MHz が使えるから オリジナルと同じ条件。200kHz だと 40 ステップ。ステッピングモータの駆動専用だから、スイッチングの ON/OFF 制御だけでも良さそうな。

    Nch MOSFET は、平均 2A は 流せないといけないが、どういうのが良いのだろう?

    20V耐圧の SOT-23 品を使うとか ... デジキーになってしまうが、DMG3420U,DMG3415U , IRLML6246 とか。-- Pch版が 秋月にあるもの を選んでみた。
    これらだと、AVR を 3.3V で使うことにしてもちゃんとスイッチングできる。秋月にあるのは、VGS が高いので、4.8V のバッテリーをそのまま電源しないといけない。

    あるいは、秋月で手に入る SO-8 パッケージ シングルの FD5680 (60V , 8A) を取り敢えず使うことにしておいて、デジキーで 手に入る DMS3016SSS に置き換え可能にするとか。

    それはともかく、モータ専用で凝らないなら Tiny13A 程度でも作れそう。

タイヤ

    楽しい工作シリーズだと、

      No.96 オフロードタイヤセット
      No.145 ナロータイヤセット
      No.111 スポーツタイヤ
      No.193 スリムタイヤセット
      No.194 ピンスパイクタイヤセット

    と各種ある。直径 55mm 前後 が安心だが、もうすこし小径でも良いらしい 。他のメーカだと MYU-004 あたりが使えるかも知れない。

(不完全)パーツリスト

SPG20 モーターの代替

    SPG20-1362 のようなギア付きのステッピングモータは、入手が難しい。秋月で安く手に入るから良いが、いずれは在庫がなくなるだろう。手に入らないようになるとすれば .. どうするのが良いのだろう?

    だいたいの性能は、最大 2 回転/秒(120RPM) で トルクは 0.25 kg・cm 程度。( 静止トルクはこの 4 倍ぐらい)。120RPM ぐらいまでで これ以上のトルクがあるものを探せば良い。

    ダブルギヤボックス

      4つのギア比を設定できる。その中に 114.7:1 のギア比があり 115 RPM / 0.8 kg・cm だそうだ。

      車軸の位置は 2 通りあるが、114.7:1 のとき 車軸の位置は外側になるので、問題なさそう。

    ツインモータギアボックス

      227 RPM / 0.42 kg・cm 。少々早く トルクが少ない。

      車軸の位置が良さそう。

    このあたりの ギアボックスが 速度・トルクの面で使えそう。これが使える以上他のものを探す必要はないぐらいに思える。モータは最大 3V 。逆回転が必要なので、フルブリッジ(モータドライバ)も必要。

    問題は回転速度検出だが、中間のギアが露出しているのだから、ストライプ状に塗って、反射型フォトリフレクタ を使えば良さそうな気がする。ただしノウハウがないので どうやるのが適切なのかは分からない。

    あと、DC モータなので、(電圧ではなく)電流をモニタしていれば、回転数は分かるのではないか? 10000 RPM というと 166 Hz 。この値か その 2倍の周波数で 電流が変化するに違いない。

    モータドライバは、秋月で扱っている BD6211F-E2 が良さそう。正転・逆転 ができて、PWM での 速度制御もできるようだ。ボリュームを使った 電圧での回転制御すら可能で なかなか興味深い。

    (参考) モーター性能比較表

      上記のギアボックスは、FA-130 モータを使用している。このモータは ミニ四駆でも使われているので、高性能モータが いろいろ存在する。モータ置き換えも考慮に入れた方が良さそう。

ステッピングモータ制御覚書

    Wikipedia にも 項目があり 制御の仕方の説明がある。

    回し方の基本方式は、一相励磁 と 二相励磁。二相励磁は、2 個のコイルに同時に電流を流すやりかたで、トルクが強いらしい。なら基本はこれ?

      一-二相励磁 というのもある。二相励磁のタイミングを変えて 一相励磁の状態が間にある感じ? なめらかになるだけで、トルクは変わらない?

    回し方の原理は簡単だが、負荷が大きすぎたり、パルス周波数が高すぎると脱調する。脱調しないように制御することが重要。

    負荷が小さければ、電圧は高くなくて良いはず。5V でも 制御の実験はできるかも知れない。DC-DC コンバータ自体が怪しげなら、5V でとりあえず制御の基本コードを作るという方針でも良いかもしれない。

    さて、脱調しないようにするには、回転のスタートとストップで 加速度が一定になるような 制御が必要。ものには慣性があるから 当然だ。また、どこまでも速度を上げられるわけではないから、ある速度に達したら その速度を維持する。

    基本はこういうことだが、倒立振子だから扱うものは基本的に加速度。定めた加速度を発生させるような 機能になっていないといけなさそう。

    それを守った上で、目標の速度にしたりすれば良い? あとは移動距離。方向転換とかは、移動距離をベースにした制御?
posted by すz at 00:06| Comment(0) | TrackBack(0) | 日記

2012年05月14日

ACT8796

興味深い電源IC を見つけたのでメモ。

    Android Tablet に使われている電源用IC として Active-Semi の IC がある。

    ここ を見ると各プロセッサー向けにカスタマイズした電源ICを提供しているようだ。

    所有している Tablet の Novo7 Paladin は、JZ4770 という MIPS の チップを採用しているが、それ用の ACT8600 というチップを使っている。これの データシートがダウンロードできるので見てみた。

    なんと 1つの昇圧 DC-DC コンバータ(OTG 用 5Vに使う)、3つの降圧DC-DC コンバータ(3.3V , core電圧 , DRAM 電源?)、5 つの LDO(レギュレータ) を持っていてさらに バッテリー(1セル)の充電まで出来る。すべての電源をこれだけで管理できて、結構すごいと思ったのだが、Tablet の中に入っているもので、電子工作には無関係。単独で入手もできそうにない。

    では、入手可能で データシートも入手できるものはないかと探したら、1つ見つかった。それが ACT8796 。パッケージは、QFN24 (0.75mmピッチ) で 敷居は高いものの電子工作で一応使える範疇。

    チップ自体は、taobao で入手できる。値段はいろいろあって どれが妥当なのか 判別しがたいが 10個 42元(600円ぐらい?)のところ がある。

    さて、このチップの機能は 3 つの降圧DC-DC コンバータと 3つの LDO 。そして、(LDO も含め)それぞれの出力を、I2C で設定できるようだ。AVR と組み合わせて 実験用の 電源にするとか ... バッテリー駆動の なにかを作るときの電源にするとか ... なにか有用な使い方があるかも。

PowTech PT1502

    ついでに電源用 IC PT1502 のメモ

    これも taobao で購入可能 + データシートあり。

    こちらは、バッテリー充電 機能に加えて 降圧 DC-DC コンバータ + LDO 2 つ。I2Cなどはない。充電関係では、AC アダプタ , USB を区別できる。あと Power-on 回路。AVR とかをバッテリーで 制御するには便利かも。 降圧 DC-DC コンバータ は 1.2V とか core 電圧向きで、ARM とか FPGA/CPLD でも使えそう。

    降圧 DC-DC コンバータの電圧は、FB の分圧抵抗で決める。LDO1 は 3.0V 固定。LDO2 は、(ピン設定で) 2.5/2.8/3.0/3.3V から選べる 。

      PowTech PTxx を買うなら、taobao の この店が 良さそう。PT1502 だけでなく、1セル充電IC(PT6181) , LED 向け昇圧IC(PT4181) , 降圧 DC-DC(PT1281 等) を扱っている。ただ、値段が 安すぎで 不安 -- なにか誤解しているかも。

posted by すz at 23:26| Comment(0) | TrackBack(0) | 日記

2011年10月08日

Foca_V2.1

goodluckbuy.com を見ていてこんなのを見つけた。



http://www.goodluckbuy.com/ft232rl-tiny-breakout-foca-v2-1-usb-to-serial-uart-xbee-.html
FT232RL Tiny Breakout Foca V2.1 USB to Serial UART Xbee $10.32 (送料無料)

    これは何かというと XBee を PC で使うための UART ボード。5pin の端子も出ていて RxD/TxD/DTR を使って Arduino というか ブートローダを書き込んだ ATmega328p などに接続できるようだ。AVR の ISP っぽいコネクタのパターンもあり、どうも avrdude-serjtag でライタになるようだ。

    なかなか、良さそうなボードだ。特に ATmega328p のチップ単体を Arduino として使うには便利そう。ちなみに、サイズは、45mm x 20mm と書いてあるが 間違い。XBee の幅は、24.38mm 。-- データシートを見たら 45.72mm x 29.21mm と書いてあった。タカチ SW-55S にも収まるサイズ。

      データシートの 幅も間違い。やはり 25mm に近いはず。だが、下記の考察は、XBee の幅を元にしているので結論は変わらない。

    それはともかく、気になったのは、デザイン -- まるで小さな arduino のようではないか。
    なにか、Ardduio 風のものを 5cm x 5cm 以内で設計してみたくなった。これについて、あとで考えてみよう。

http://iteadstudio.com/store/index.php?main_page=product_info&products_id=94
FT232RL Tiny Breakout - Foca v2.1 $8.90

    さて、もうすこし調べたら オリジナルは、これだと分かった。iteadstudio.com というと Fusion PCB と全く同じサービスをしていたところ(今はちょっと違う?)。-- こんなボードまで開発していたのか。

    値段はちょっと安いが、送料は別にかかる。これだけを買うなら goodluckbuy.com のほうが安そうだ。



    http://iteadstudio.com/store/index.php?main_page=product_info&products_id=396
    [Bare PCB] Foca v2.1 (FT232RL breakout) Bare PCB $1.5

    ボード単体も売っている。裏面をよく見れば、まさに AVR ライタ用だとわかる。ちなみに、電圧は 3.3V or 5.0V で中央のスイッチで切り替えるようだ。

    あと、スライドスイッチやタクトスイッチは、日本で入手しやすいものではないかも知れない。ボードを買って自作する場合は、要注意。

    http://iteadstudio.com/store/index.php?main_page=product_info&products_id=329
    Slide Switcher 1P2T (10Pcs) $2.0

    スライドスイッチは、たぶんこれ。必須だから、ついでに買っておくべき。

    http://iteadstudio.com/store/index.php?main_page=product_info&products_id=334
    2.5mm SMT Momentary PUSH Button (10 Pcs) $0.7

    SMD 2 極のタクトスイッチはこれ。

    http://iteadstudio.com/store/index.php?main_page=product_info&products_id=376
    ET1117-3.3V(SOT-89) - 3.3V Positive Voltage Regulator (5 Pcs) $1.0

    3.3V レギュレータ。これも。

    http://iteadstudio.com/store/index.php?main_page=product_info&products_id=336
    Mini USB 5-Pin SMT Female Connector Socket (5pcs) $2.00

    USB miniB は、微妙。信頼性を考えると、日本製のパーツが使いたくなる。だが安い。ついでに買っておけ... という気もする。そう考え出すと 秋月より 安いものが多々ある。2.54mm ピッチのピンヘッダ・ピンフレームとか。沢山買い込みたくなる -- かなり危険だ。

    そもそもボードが安いからといって自作を考え出すのが危険な考えなのだ。製品があるのならすなおにそれを買っておくほうが安く済む。

arduino 風のボードについて

    MPU の条件は、実装面積から判断して USB をサポートしていること。そうなると ATmega32u2 か u4 しかない。u4 は、機能が豊富だからこれが候補。

    ATmega32u4 の Arduino -- Arduino Leonardo がもうすぐ出る。そういう理由からも u4 を使いたい。Arduino Leonardo は、低価格版とも言われているから、大きなサイズで良いのならすなおに使えば良いのだ。わざわざ自作する必要はない。

    ちいさなモジュールとしては、Adafruit 『Atmega32u4 Breakout Board+』 や 『Teensy』 がある。モジュールは、Arduino とは逆で ボードの上に載せるのが普通。

    Arduino 的に マザーとして使って、かつ小さいものがあっても良いかも知れない。Fusion PCB で 基板を作る場合 5cm x 5cm に収まると安くなるという事情もある。-- Arduino 本体やシールドの最小幅は 5cm をわずかにオーバーするので具合が悪い。



    実は、以前 ATmega32u4ボード を作った。このときは、その前の作品との互換性を考えてコネクタを短辺につけた。基板サイズは、47mm x 35mm ぐらい。1/2 に切った C 基板を付けられるようにしている。

    だが、コネクタを長辺につけて arduino 風にするのも面白いかも知れない。ちょっと考えてみよう。

    まずは、Foca を基準に考える。

      Foca_V2.1 の サイズは、45.72mm x 29.21mm 。XBee のためのコネクタは、2mm ピッチ で両サイド 1x10。
      2mm ピッチコネクタの 間隔は、22.0 mm 。

      思ったより幅が広い。 あと 2mm ピッチ はちょっと使いにくいかも。

    次に今まで作ったボードからの考察

      C 基板を 真ん中で切ると縦 47mm 横 35mm ぐらいになる。このサイズは、タカチ SW-55S に入るのだが、底面に置くには、幅がちょっと広い。幅 32mm ぐらいがちょうど良さそう。

      C 基板の短辺の端の穴の数は、13 。(次の列は 15 穴でその次から 17穴) 。1/2 に切ったときの 短辺の穴は最大 13 だが、1列分小さく作るなら 12 。

      このサイズ 17穴 x 12穴 分をベースにすると 43.18 mm x 30.48 mm のサイズになる。これに余白が必要で、C 基板が 47mm であることから計算すると 47mm x 34.3mm になる。だが、3mm φの穴をあけないなら、こんなに余白はいらない。... 1mm づつ四方を削ると 45mm x 32.3 mm 。(余白は、0.91mm)

    このエリアに Foca の パターンを置くと 左右が それぞれ 3.24mm あく。ここに 2.54mm ピッチのコネクタを置ける。3mm φの穴 を無視して、コネクタは、1x14 にすれば良いと思う。

      12穴ぶんのエリアの 左右に 2.54mm ピッチのコネクタを配置するとその内側は、10穴分 -- 25.4mm 。
      2mm ピッチのコネクタの厚みが 2.0mm だとすると .. 22.0 mm + 2mm = 24mm 。計 1.4mm の余裕があるはず。

    さて、Foca との関係はどうしよう。2.54mm ピッチのコネクタは、位置は違っても Arduino Leonardo と互換性があるようにしておきたい。その上で XBee 用 2mm ピッチを付けたいところだが、配線できるのだろうか?

    シリアル出力と ISP はどうしよう。ATmega32u 自体の ISP は必要だから付けるとして ... ライタとして使える ISP も付けたい。で、それを USART ベースにする。(TXD/RXD/XCK とあと 1つ) USART は SPI マスタとしても使えるから これが良いはず。

      そういえば、ATmega32u4 に対応した自製のブートローダ(USBasp 互換)とか、USBasp 互換 ライタも作ったのだった。USBasp 互換 ライタ は 未完ながら TPI/PDI に 対応させようとしていた。これらを使う上で問題ないようにしておかないと ... 忘れてはいけない。

      思い出した、TPI は 5V 対応でないといけない。手持ちのボードは全部 3.3V だからテストが止まったのだった。Foca と同様に 3.3V - 5V の切り替えスイッチを入れなければ。

    時間が取れたら、この構想をベースにして、基板を設計してみたい。

Arduino Leonardo のピンアサインとか

    stastaka's Blog の情報を元にすると...

      mega328p mega32u4 mega32u4 mega328p
      D0 PD0(RXD) PD2(RXD) PF0(ADC0) PC5(ADC5) A5
      D1 PD1(TXD) PD3(TXD) PF1(ADC1) PC4(ADC4) A4
      D2 PD2(INT0) PD1(SDA) PF4(ADC4) PC3(ADC3) A3
      D3 PD3(INT1) PD0#(SCL) PF5(ADC5) PC2(ADC2) A2
      D4 PD4(T0) PD4 PF6(ADC6) PC1(ADC1) A1
      D5 PD5(T1) PC6# PF7(ADC7) PC0(ADC0) A0
      D6 PD6(AIN0) PD7#
      D7 PD7(AIN1) PE6

      D8 PB0(ICP) PB4
      D9 PB1(OC1) PB5#
      D10 PB2(SS) PB6
      D11 PB3(MOSI) PB7#(RTS)
      D12 PB4(MISO) PD6
      D13 PB5(SCK) PC7#
      GND
      AREF
      SDA (?)
      SCL (?)

      TXLED PD5(XCK/CTS) PB0?
      HWB PE2

      D14 PB0(SS)
      D15 PB1(SCK)
      D16 PB2(MOSI)
      D17 PB3(MISO)

    転記ミスがあるかも知れないが ... まぁだいたいこんな感じらしい。# は負論理 -- ソフトでの処理のはず。ATmega332u4 では、TWI は、PD1/PD0 が割り当てられている。もとの SDA/SCL を省いてしまえば、16 pin/16 pin にできる。

    SPI は、コネクタに出ていないようだ。そうであれば、ライタ用の ISP コネクタに接続しておきたい。ただ、確定ではないから Arduino Leonardo の 回路図をみてから再考することにしよう。

      やはり、コネクタに出ていないのはおかしいような -- SPI をあてにしているシールドも多数あるはず。二重に接続するとかしているのだろうか? それとも低価格版ということで割り切っている?

      アナログスイッチで切り替える -- みたいな実装もありえるのだが... 写真をみてもそんな IC は載っていなさそう。

    一方 XBeeShield なるものが、ある。本来なら 互換回路を組み込むべきかも知れないのだが ... XBee使わないなら切り離さないといけないし ... ちょっと面倒そうな。

    ちなみに Foca の場合、TXD/RXD/RTS/CTS/DTR/DCD を接続して Xbee の RESET をボタンに接続している。

    ついでに、Seeeduino Stalker (Atmega 328) というのがある。これは、FT232R がないかわりに多数のデバイスを載せたもの。XBee も載せられる。

      Foca XbeeShield Stalker
      1
      2 DOUT RXD o RXD
      3 DIN TXD o TXD
      4 CD DCD
      5 RESET button button
      6 RSSI LED
      9 DTR DTR
      12 CTS CTS o
      15 LED
      16 RTS RTS
      17 AD3 AVR RESET(with Tr)

    信号線だけピックアップするとこんな感じ。XbeeShield は、あまり線を接続していない。

    ATmega32u4 には、CTS と RTS の信号線がある。これに加えて DCD/DTR を定義してつなげたい。
    ただ、Arduino Leonardo では、CTS が、LED 制御に使われているようだ。どうしたものか。

      Foca の XBee は、Host から使うのが前提。それに対し XbeeShield , Stalker は Slave 用で、配線の違いはそれが関係している。また、XbeeShield は、5V の Arduino に接続できるようになっているが、Foca, Stalker は 5V での XBee 使用 は考慮していないように見える。

      では、作ろうとしている Arduino 風のものは、どう考えるのが良いのだろうか? -- Host との USB 接続が特徴と考えれば、Host 向きの接続で良いはず。

    Arduino Leonardo の疑問点は、(1) SPI の扱い 、(2) TWI の扱い、(3) CTS の扱い。回路図が公開されたら、これらをチェックしよう。

独自配列の考察

    どうせ shield に互換性はないのだから、独自配列でも良いような気がしてきた。もとの Arduino も mega88 系に都合の良い配列だったのだ。配線面積が少ないのに、互換性を求めると 配線がスパゲッティになる。それに、互換にすると CTS とか困るケースが出てきそうだ。

    Foca V2.1 の機能を実現しつつ Ardino 風にする ということでも良いのかも知れない。コネクタを 2mm ピッチにして ピン数を増やし、XBee (Host)も載る みたいなのはどうだろう。こうしたほうが見栄えが良くなりそう。もちろん XBee を載せた場合は、他の目的には使えない。(これはもとから)。

    ただ、2.54mm ピッチも付かないと 使い勝手が悪い。2.5mm ピッチは変換基板のように 同じ配列で外側につけるとか。(ただし、配線が辛くなるので、平均 5ピン毎に 2mm ピッチの信号を間引く )

    ちなみに、2mm ピッチのピン・フレームは、背が低い。XBee のように 25.4mm - αの幅にしないと 2.54mm ピッチ の ピン・フレームと競合する。

    電圧の、3.3V / 5V 切り替えは必須。ただ、スライドスイッチの配置が難しいかも。

    Arduino として使うときは、定義ファイルを 作らないといけない? 互換性を捨てた代償がそれだけならば、これで行っても良いかも。

    追記: 定義ファイルは何だろう?

    https://github.com/arduino/Arduino/tree/new-extension/hardware/arduino

    たとえば、ここでソースコードをブラウズできるようだ。

    見てみると、『hardware/arduino/variants/leonardo/pins_arduino.h』というのがある。

    あと、『hardware/arduino/boards.txt

    この 2 つで事足りそう。

    leonardo.build.f_cpu=16000000L
    leonardo.build.core=arduino
    leonardo.build.variant=leonardo

    valiants/xxx/pins_arduino.h を作成し、build.variant を xxx に変更すれば、好きなピン配置にできるように見える。

XBee のピン配置のメモ


    3V3 1 VCC AIO x 20
    RXD 2 O DOUT AIO x 19
    TXD 3 I DIN AIO x 18
    X 4 x AIO x 17 X
    5 I RST RTS I 16 RTS
    6 O RSSI O 15
    7 I VREF I 14 AREF
    X 8 x reserved ON O 13 X
    DTR 9 I DTR CTS O 12 CTS
    GND 10 GND x 11

    上が Foca の USB 側、XBee はアンテナ側。

    内側が XBee の割り当て。x は、デフォルト disable で I,O はデフォルトの入出力。

    外側の X は、間引くところ(予定)。TXD などは割り当てる信号とか。それ以外は mega32u4 の信号を振っていく。コネクタは下に伸ばす。どこまで伸ばすかは未定。

Foca のディメンジョン



    この画像は、355 x 196 に縮小したもの。縦を 45mm とすると 1.77 inch これを x200 すると 354 -- 横は 0.98 inch - 24.9 mm という計算になる。

    さて、2mm ピッチを下に伸ばすとして... 1x20 は、入らない。1x16 ぐらいがせいぜい。
    横につける 2.54mm ピッチは、2mm を間引く。3pin 間引けば 1x13 だがパーツの都合では 1x14 が良い。8+6 もいけるし。あるいは、12 ?。

    2mm のピンフレームは、秋月だと
    http://akizukidenshi.com/catalog/g/gC-03669/
    http://akizukidenshi.com/catalog/g/gC-03871/

    の 2 種類がある。いずれも 1x20 で切って使わないといけない。XBee の分のみで良いなら 1x10 もある。

    iteadstudio.com だと こんなのがある。

    http://iteadstudio.com/store/index.php?main_page=product_info&products_id=119
    2.0mm 40Pin Female Header (5 Pcs) $1.50

    どうせ切るならこれで良いかも。

    ところでこれらは背が低い。プラスチック部:約4.3mm ? (2.54mmピッチは約 8.5mm) これだから Arduino 風に見えるのだ。
    デザイン優先で 2.54mm ピッチをなしにしたいところだが、そうもいかないだろう。

    2.54 mm 1x14 は秋月では、これ。
    http://akizukidenshi.com/catalog/g/gC-00653/

    iteadstudio.com だと、1x40 がある。切って使えば随分お得。

    http://iteadstudio.com/store/index.php?main_page=product_info&products_id=117
    2.54mm 40Pin Female Header (5 Psc) $1.50

    ー どうもなんでも 5 個 $1.50 のようだ。原価はずっと安く管理費用のほうが支配的なのか?

    ところで、電源切り替えの スライドスイッチは、どうしよう。4.3mm の高さに抑えるか、

    http://akizukidenshi.com/catalog/g/gP-01665/
    超小型スライドスイッチ IS−1250
    http://akizukidenshi.com/catalog/g/gP-02627/
    超小型スライドスイッチ 2回路2接点 IS−2235

    を付けることにして、上部の ノブ(?) を切る? 本体は 3.5mm 高だから 一応収まる。

    http://akizukidenshi.com/catalog/g/gP-03006/
    リセット用のタクトスイッチは、やっぱりこれ? いままでと同じように、ファームウェア書き換え専用。

    これに LED も 付ける。... と入らないおそれが... 裏に mega32u4 を付けることになるかも知れない。

    コネクタは、自分自身の ISP と シリアルは出したい。できれば、ISP も SPI に転用可能にしておきたい。

    シリアルは、TXD/RXD に XCK(or CTS) に加えて DTR(ピン未定) 。ISP は、ジャンパで RESET/SS 切り替え。SparkFun FTDI Basic Breakout と同じ配列にして 1x6。-- DTR/RXD/TXD/VCC/CTS=XCK/GND 。こうしておくと、シリアルも SPI として使える。

名称について

    なにを作るのでも名前を考えないといけない。ファイル名もあるし、最初に必要で、これが超やっかい。

    しょうがないので、なにか考えるのだが、O-duno (小角)にした。i がないが、まぁいいや。

    意味は、『小さい Arduino のつもりだが何か足りない』とでもしておこう。



    超ラフなレイアウト。以前作ったボード をもとにして作った。2.54mm ピッチ 1x14 でも 悪くないかも。だが、高さがあるから実際につけると不恰好になるかも知れない。

    それはともかく、主要部品は表に置けそうだ。だが、水晶や CR は、裏になりそう。

    あと、ISP を SPI として使うためのジャンパ -- 3穴 2.54mm は厳しいかも。

    http://akizukidenshi.com/catalog/g/gP-02736/
    小型スライドスイッチ 1回路2接点 SS12D01G4

    とかを使えるようにしておきたいところなのだが... ううむ。

    そういえば、
    http://akizukidenshi.com/catalog/g/gP-03908/
    2mmピッチジャンパーピン

    なんてのも買えるようになった。これで済ますか。リセット を接続するかしないかなら 2穴で済むし。



    すこしまともにしたレイアウト。コネクタの部品を作り予定の位置に置いた。あと 2mm ピッチのジャンパを作り基板外に置いた。

    リセットボタンの位置がわるい。押しやすいところに置くべき。



    とりあえずこうしてみた。電源切り替えスイッチの収まりガ悪い。
    2mm ピッチと 2.54mm ピッチの関係を分かるようにした。



    スイッチを
    http://akizukidenshi.com/catalog/g/gP-02736/
    小型スライドスイッチ 1回路2接点 SS12D01G4

    に変更。
    あと、ピン名をコメントとして入れた。
    ISP/SPI 切り替えを 2mmピッチジャンパーピンでできるようにした。
    HWB を ジャンパーしたときだけ Enable にしようかと思う。

      HWB ピンは HI-Z 入力なので、確実に Disable にしたければ、弱いプルアップが必要。ジャンパで Enable にするには強いプルダウンか接地にする。

      以前 LED をつないだら 明るいところでは Disable / 暗いところで Enable になったりした。それはそれで興味深いが実用的ではない。



    かなりのところまで配線完了。

    ISP/SPI, シリアルのコネクタは 180°回転した。こっちのほうがうまく配線できる気がする。

    ただ、このまま進めて良いものかどうか? XBee のピン配置をベースにするとあんまり美しくないのだ。CTS が反対側に行くのがちょっと困る。

    というわけで、CTS も (チップの機能を使わない) PORT にして、画像の下側は PORTD メイン、上側左は ADC(PORTF) メイン、上側右は SPI(PORTB) という風になった。



    完成。2mm のみのボードを想定して、リセットの位置を内側にした。あと、シルクの作成。
    Serial の DTR は、PD4 にした。

      Digital 側
      1 VCC
      2 RX PD2
      3 TX PD3
      4 () PB7(RTS)
      5 SDL PD0
      6 SDA PD1
      7 () PD4
      8 GND
      9 () PD5(XCK/CTS)
      10 () PD6
      11 () PD7
      12 3V3
      13 5V
      14 RST

      Analog 側(#14 から)
      14 () N.C.
      13 () PE6
      12 () PF0(ADC0)
      11 () PF1(ADC1)
      10 () PF4(ADC4)
      9 AREF AREF
      8 () PF5(ADC5)
      7 () PF6(ADC6)
      6 () PF7(ADC7)
      以下 SPI
      5 () PB3(MISO)
      4 () PB1(SCLK)
      3 () PB2(MOSI)
      2 () PB0(SS)
      1 GND

      Serial
      1 DTR PD4
      2 RXD PD2(RXD)
      3 TXD PD3(TXD)
      4 VCC
      5 XCK PD5(XCK/CTS)
      6 GND

      ISP/SPI
      MOSI 1 6 VCC
      SCK 2 5 MISO
      RST/SS 3 4 GND

      (V 1.0 t1 -- 間違い)
      MOSI 1 2 SCK
      RST/SS 3 4 GND
      MISO 5 6 VCC

      LED
      PC6 Red/Orange
      PC7 Green/Yellow

      HWB ジャンパ。ショートで HWB有効。
      ISP/SPI ジャンパ。1-2 で ISP, 2-3 で SPI

      未割り当てのピン PB4/PB5/PB6 PE2(HWB 専用)


  • oduno-1.0.zip (eagle データ)
  • oduno-1.0-out.zip (http://iteadstudio.com 提出用)

    今回は、iteadstudio.com で作ってみよう。5cm x 5cm 10枚で $9.9 なのは同じで送料は $4.0 。
    ルールは、前の Fusion PCB と同じような感じ。ファイル名どうとかは、ないようだ。

    あんまりチェックしていないのだが、前に作ったものを元にしているし、ひどいことにはならないだろう。

  • 来たメールに リプライするのではなく pcbあっとiteadstudio.com に送るらしい。即効で怒られた。

  • ISP のピン配置を間違えた。ピンヘッダの番号で割り当ててしまった。作り直さないと。

  • oduno-1.0a.zip (eagle データ)
  • oduno-0.1a-out.zip (http://iteadstudio.com 提出用)
  • oduno-01a.png (イメージ)

    一応作り直した。が、自信がなくなってきた。『データを差し替えてくれ』とメールは送ったが、受け付けてくれるかどうかは分からない。まぁ、ピンの間違いだから動作自体には支障ない。他にもっと重要な問題があるかも知れないし、まぁいいや。

      もう 作り始めているからダメといわれた。まぁしかたない。

    ところで、タカチのケースに SW53 というのがある。厚みが 11mm しかないので、見栄えがする。( 蓋を止める枠 を除いた)内寸は、 (たぶん) 49.4mm x 32.4mm 。うまくすると Foca や O-duno が入るかも。(といっても ピンフレームをどうするか別途検討する必要あり)
posted by すz at 23:51| Comment(0) | TrackBack(0) | 日記

2011年09月29日

PS/2キーボード関係のメモ

PS/2→USB変換器を6製品試す』 の記事を読んだ。結論としては、気に入る『PS/2→USB変換器』はなかったとのこと。

これぐらいなら、電子工作で作れそうな気がする。市販品で気に入らないなら 気に入るような仕様で作れば良いから、実用として役に立つものになるかも知れない。

 − 電子工作を趣味としていても、実用として役に立つようなネタは少ないのでメモしておこう。

そういえば、私の愛用キーボードは、PS/2 の HHK lite2 でインターフェイスは PS/2 だ。そして KVM につなげている。で、PFU の サイトをみてみると ... HHK lite2 は、USB のみになっている。

http://www.pfu.fujitsu.com/hhkeyboard/lite2/

まぁ、USB でも困らないのだが、KVM を活かしたいなら 『USB→PS/2変換器』 が欲しくなる。これは、電子工作で作れるのだろうか?

どうせなら、USB→USB で自由にキーマッピングを変えられるものとかも良いかも知れない。

... そういえば PS/2 マウスのほうが絶滅しかかっている。マウスも対応したほうが良さそう。


こういう前提で構想を練ってみよう。

チップの選定

    これは、文句なしに ATmega32u2 。いままで作ったライブラリがある。ただ、HID(HumanInterfaceDevice) はサポートしていないから、そこから作る。公開されているものだと LUFA を使うのも良い。あと USB の D+/D- を PS/2 として使えるような 機能も持っているので、変換アダプタが使えそうなのが良い。(ATmega32u4 も良いのだが、この機能は持っていない)

    これで、HOST との接続はできる。あとは、デバイス側。PS/2 マスタ は、XCK を使った同期シリアルでいけそう。ただしオープンコレクタ出力でないといけないので、外部デバイスがいる。 ちなみに ATmega32u2 は、5V での動作が可能で レベル変換で苦労することはない。

      D+/D- を PS/2 として使う場合、VCC でプルアップされ 特殊なポートとして駆動が可能になるようだ。... PS/2 は 5V だから VCC も 5V でないといけない。

    問題は、USB HOST 。Low スピード 1.5Mbps での 送受信を Port を使って制御する。V-USB など Device でも制御できるのだから HOST も原理的には可能なのだろう。ただ、電圧の問題がある。

    VCC が 5V ということは、PORT も 5V 。... となると 例によってツェナーダイオードのお世話になるしかないのだろうか? ... しょうがないのでとりあえずその方針にしよう。

    OTG 機能を持った マイクロコントローラなら、HOST にできるが ... どちらの変換機にするか最初に決めないといけない。USB→USB も無理。ものづくりとしては、こちらのほうが面白いはず。

信号線の割り当て

    D+/D- USB なのは当然だが、PS/2 の場合どちらを ( CLOCK信号/DATA信号 にするのか決められない。アダプタが 2通りあるはず。) 自動で判別できれば良いのだが、そううまくいくのだろうか?

    PS/2 デバイス側

      TXD(PD3) は、NPN Tr か Nch Mos FET で DATA信号を駆動。RXD(PD2) は、DATA信号 に抵抗を通して接続。
      同じように XCK(PD5) をCLOCK信号駆動用にして、別の PORT(PD4) を読み込みように割り当てる。

      あ、USART を使うと TX/XCK の極性 が逆になってしまう。インバータが必要。

    USB HOST (デバイス側)

      D+ に INT0 を割り当てたほうが良さそうなので、 PD0 を割り当てる。D- は PD1 。

      ソフトだけで PS/2 マスタを制御するのなら、逆変換のアダプタで PS/2 キーボードを接続することは、可能。その場合外付け の回路もいらない。問題は間に合うかどうか。割り込みを使わないなら、あるいはいけるかも。ちなみに 処理できないときは、CLOCK を L にしておけば良いらしい。

    HWB(PD7) FW 書き換え用。

      忘れてはいけない。あと LED とかも欲しい。

      ちなみに、5V で動かすので、UVCC/VCC/AVCC は VBUS (5V) に直結。

開発関係のメモ

    デバッグする環境は頭がいたい。

    まず、PS/2 キーボードやマウス を接続する方。PS/2 キーボードやマウス 自体の入手が難しい。まさか現役のキーボードで最初のテストをするわけにもいかないし。また、日本語キーボードは何通りかあって、くせがあったはず。PS/2 マウスは安いのを見付けたら買っておくのも良いかも知れない。

    次に HOST とのインターフェイス。PC しかない が、電源投入時にしか認識されない。また、最初のテストで PC を使うのは PC を壊すおそれがあり避けたい。


    http://www.dealextreme.com/p/slim-usb-2-0-to-ps-2-adapter-dongle-1440
    Slim USB 2.0 to PS/2 Adapter Dongle $2.58


    http://www.goodluckbuy.com/slim-usb-2-0-to-ps-2-adapter-dongle-1.html
    Slim USB 2.0 to PS/2 Adapter Dongle $2.64 (www.goodluckbuy.com)

    本末転倒にも思えるが、最初は、安物の『PS/2→USB変換器』を通してテストするのが良いのかも。起動後挿せば良いし、PCを壊すおそれも小さい。おかしくなったら抜けば良い。ただ、おそらく USキーボード専用で、(ちゃんとした)日本語キーボードのテストは無理だろう。

      だいたい PS/2 キーボードが US か日本語か 自動判別はできない。一方 USB キーボードは どちらか分かる(分かっていないといけない)はず。(自信なし)

      これらの種別の設定や キーマップの変更というのはサポートしたい。データは EEPROM に置くとして... 設定は、ツールなしで出来ると良さそう。アイディアとしては、NotePad を開いておいて メニューをキーコードの列を出力することで表示するとか...


    あとの問題は、ソフトの開発環境。別に ターゲットデバイスを用意する必要はない。ATmega32u2 ボードは既にある。( Teensy(1.0)互換ボード は今遊んでいる。)

    これだけで、まずは HID の開発ができる。その後は、2 pin だけで PS/2 デバイスを 制御してみる。PS/2 コネクタは持ってないし、ソフト USB 用として回路を組んで 逆変換アダプタで PS/2 キーボードやマウスをつないでみる。うまくいけば、まずは『PS/2→USB変換器』まで作れる。

    あと、USB に 変換アダプタを付けて PS/2 デバイスのテストはできる。PS/2 キーボードやマウスをつないで 『PS/2→PS/2』のテストもできそうだ。

    あとは、USB HOST のテスト。16 MHz という変則クロックだから V-USB をベースになんとかできるかやってみる。その前にツェナーを用意しないと。

PS/2 関係の製品について

構想2

    さて、ここまで読んでも、なにがしたいのかイメージできないと思う。
    どういう要素が使えるか、洗い出しただけに近いからイメージできないのも当然かも知れない。

    少しまとめてみることにする。

    1) 1:1 の変換

  • ATmega32U2 を使って USB or PS/2 - USB or PS/2 変換をするボードを作る。

  • ボード自体は、USB miniB - USB A メス のコネクタを付ける。

  • PS/2 に接続する場合は、USB - PS/2 , PS/2 - USB の変換コネクタを使う。

  • CPU は、5V 16 MHz で動作させる。-- UVCC/VCC/AVCC は VBUS (5V) に直結。

  • USB miniB の方は、普通に USB として配線する。

  • USB A メスの配線は、D+ = PD0/D- = PD1 。75 Ωぐらいの抵抗を通して接続し、3.3V の ツェナーダイオードで 電圧の制限をかける。

      PS/2 に変換するときは、3.3V までしか電圧が上がらない。が、たぶん大丈夫だろう。
      問題が起きるなら、ツェナーダイオードと GND の間に Nch MOSFET を入れたりすれば、良さそうではある。

      ツェナーダイオード の入手について :

      千石で リード部品 3.5〜3.7V or 3.2〜3.4V (リード部品 φ2.0 x 4.2mm) を扱っている。
      10 個 210 / 100個 630円。

      チップ部品なら、鈴商 とか。

      デジキーだと MM3Z3V3BCTあたり?

    このボードを使って、USB device, PS/2 device, USB HOST , PS/2 HOST のコードを作り別々にテストする。それが出来たら、実際の 『PS/2→USB変換器』や 『USB→PS/2変換器』 を作ってみる。PS/2 といっても キーボードとマウスは別のプロトコルだから、それぞれ別のものとしてファームウェアを作る。

    できたら、自動判別したいのだが、うまくいくかどうか分からない。最悪別々のファームウェアになる。また、『USB→USB変換器』や 『PS/2→PS/2変換器』も 対応できるようにしておきたい。

      ちなみに、『USB→PS/2変換器』は、ATmega32u2 っである必要はない。ATmega328p とかで十分。
      USB device を V-USB で作るのは無理(割り込み禁止で動作させたり出来ないため)


    2) 2:2 の変換

    次の段階では、キーボード、マウスを両方扱えるものを検討してみる。といっても 最初から考慮して設計しておかないと、ほとんど再設計になりそうだ。

参考資料
http://www.oadg.or.jp/ 『OADGテクニカル・リファレンス ハードウエア編』
http://ioiodesu.web.fc2.com/PS2/PS2.HTML PS/2 『マウス/キーボード プロトコルとインターフェース』

http://www.usb.org/developers/hidpage/
http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html 『USBキーボードのキーコード』

追記: PS/2 コネクタ(メス)

DealExtreame で扱っていた
posted by すz at 23:35| Comment(38) | TrackBack(0) | 日記

2011年08月21日

スナップドーム

以前 DealExtreme で買った 小型 Bluetooth キーボード を分解してみた。

写真(準備中)

このキーボードは、基板の上に メタルスナップドームと言われる ばねを置いて その上からフィルムを貼りつけてある。キートップは、ラバーで下向きにポッチが付いていて メタルスナップドームの中央を押すようになっている。金属製の枠で、ラバーを押さえるしくみ。

    フィルムは、単なる幅広のテープのようにも見える。ひょっとしたら PP のガムテープで済ませられるのかも。

これを見て、これなら 薄型の小型キーボードを自作可能では?と思ってしまった。

まず、メタルスナップドームだが、オムロンからも正規のパーツとして出ている。

デジキーだと これ

50 個 1082円、100 個 1947 円だそうだ。ちなみに データシートには、基板のパターンの作り方の説明があった。

他も探してみると ... なんと バネ屋さんが扱っていた。確かに スイッチのバネのみだから 扱っていても不思議はない。

例えば 『SWドームスプリング 』の ページで扱っている。ちょっと高い (100個 4000円) が、色々なサイズがある。

このメタルスナップドームは、タクトスイッチにも使われている。... 秋月の 『タクトスイッチ 100個セット』(700円) を分解して取り出すのが、もっとも安価に入手できる方法かも知れない。

    分解するのは、簡単で 上部の金属の枠をニッパで取れば良い。中に メタルスナップドームが入っている。-- ただ、ポッチが付いていない。うまく接触させる工夫が必要かも。

    ひょっとして、スルーホールのユニバーサル基板で簡単に実験できるかも。下側で配線して テープで貼るだけ -- これでうまくいくようなら、本格的なものを検討しても良いかも知れない。本格的なものといっても、とりあえず テスト用として 5cm x 5cm 以内の パターンを起こして Fusion PCB に発注してみるとか。

さて、これでキーボード(の基板部分)を作ったとして ... 4mm/5mm ぐらいの小径の メタルスナップドームだと 中央を的確に押す必要があり、キートップがないと実用としては使いづらい。

キートップはさすがに自作できないと思うが、ひょっとしたら既製品のキーボードを分解したら使えるものがあるかも知れない。

    確か ノートPC のパンタグラフ方式のキーボードはプラスチックのパーツが薄い メタルにつめで取り付けられていたはず。で、下にシートがあってそれを押すしくみ。うまくすれば使えるかも。

    ただそれを上手く使って作れたとして、気に入るものが作れるのかどうか?

    ゲーム・コンソールの補修パーツには、ボタンがある。スナップドームを使って、このボタンで押すようなものは作れるか。クリック感がある妙なボタンになるが、それも良いかも。それを作るかどうかは、別にしてこういうのを知っておくと応用が効く場合もあるかも知れない。

    あと BlackBerry のガワとかも売っている。キーボードの部分は、たしかプラスチックの部分のみで押すことはできる。このガワを利用したボードとかを作れるかも知れない。

追記 2011/09/22:

Mini Dip Momentary Tactile Button Switch 50-Pack 12x12x5mm $5.56 (goodluckybuy.com)

というのを見つけた。大きな スナップドームが入っていることを期待して、ちょっと買ってみることに。

他に
posted by すz at 15:00| Comment(0) | TrackBack(0) | 日記

2011年06月19日

UM232H

FTDI のドキュメントを調べる機会があって、見ていたら FT232H という Hi-Speed(480Mbps) のチップが出ていることを知った。このチップを使ったボード UM232H も FTDI から出ている。(データシート)



    デジキーの価格は、UM232H が 1801円。

    FT232R の AE-UM232R と比べれば高いし、シリアルが 12Mbps で動いたところで、普通の使用方法ではメリットはないだろう。

    メリットがあるのは、MPSSE を使った JTAG や BitBang 使うようなものや、SYNC 245 FIFO/FT1248 を使った 高速パラレル通信。MPSSE を使った JTAG は、最大 30Mbps , SYNC 245 FIFO は 40 MB/sec と書いてある。

    FT232R 用 BitBang ライタ も そのままで動いて、速くなるんじゃないかと思う。

      ちょっと見込みが甘かった。値は設定できるが、平均 550kbps ぐらいしか出ていない。(8bit x 2(ON/OFF) x 往復 だからデータの 転送レートは 2.2 MB/sec = 17.6M bps) 。 Full-Speed の性能は超えているから 確かに Hi-Speed だが、ちょっとしょぼい結果だ。

      AN232B-03:D2XXDataThroughput を見ていたら 1回の Write サイズを 3968 の倍数にせよと書いてあった。すなおに 3968 バイトにしてみたら 平均 2.3 Mbps になった。これならまぁいいか。

      (追記) FT_SetUSBParameter で 16KB を指定し、1回の Write サイズを 3968 x 4 にしたところ 3.87 Mbps まで出た。MPSSE の 1/5 ぐらいの性能だが、FT232R/245R 用の コードで動くのが、作る立場でのメリット。おまけでここまで出るのなら不満はない。

    従来から FT2232H があるが チャネルは 1つになった代わりに、安くなった。-- チップ単体だと FT232HL (LQFP48) が 383円。FT232R と比較できる価格だ。

    • FT1248 というのは、新規の機能のようだ。FT2232H にはない。

    • VCCIO は、3.3V のみ。これは、FT2232H も同じなようだ。5V トレラントにはなっている。

    最近は、FPGA に興味がシフトしているので、気になっている。

    JTAG では特に高速な方が良い。またパラレル通信の帯域はかなり魅力的。これぐらいの性能で PC とやりとり出来て、電子工作で使えるインターフェイスは少ない。しかもパラレルだから FPGA で受けられる周波数になっている。

部品についてのメモ:

チップも安いから、基板を設計したくなる。LQFP48 は小さいから AE-UM232R のサイズに入れられそうだ。互換ボードとか作ったから、いろいろ流用できそうだ。

ただ、ピン互換にするメリットがあるのかどうか? MPSSE がメインなら、シリアルとして config しないことになる。+αの機能を入れるなら SYNC 245 FIFO か FT1248 ではないかと思う。そうなると ピンが足りない... ような?

SYNC 245 FIFO/FT1248 を使わないなら、JTAG 専用で 良いではないかと言う気もする。.. となると Sparkfun FTDI Basic Breakout (3.3V) みたいなデザインが良さそう。(ただしピン互換は無理。RTS が必要だが 6pin に入っていない。)

  • MI0603J600R

    チップフェライトビーズ。60Ω@100MHz 。いろんな USB 関係の回路図で VBUS から 電源を取る場合に チップフェライトビーズを通している。 このチップは、Lattice の USB JTAG (FT2232HL) の回路図でも使っていた。UM232H だと 3 つ使っている。(VBUS からの 入力, VPLL, VPHY) 。

    秋月に BLM18PG600SN1D (1608, 60Ω@100MHz, 25個100円) があるので、ここで買う必要はない。ついでに買うなら ... という感じ。

  • PGB1010603

    USB D+/D- は直結なのだが、これが GND との間に入っている。ESD 保護用だそうだ。FT2232H の回路図にはないから、推奨といったところか?

      Arduino UNO の回路図みてたら、これが入っていた。思ったより一般的なのか?

      ちなみに、GND との間ではなく、SLD との間。SLD と GND の間には、BLM21 という チップフェライトビーズが入っている。値は書いてない。

  • MCR10(12K)

    1% 誤差指定の 12KΩが必要。買い忘れないようにしないと。

  • 93LC56BT

    UM232H の回路図では、SOT-23-6 の 93LC56BT を使っている。(16bit モードのある B でないといけないらしい 要注意)

  • NX3225SA

    表面実装型の水晶で、秋月で扱っている FA238 (3225サイズ) に置き換えられるのは、これ ... なのか?

    12 MHz が欲しいが、95 円もする。秋月の FA238 は、16/20/25 MHz のみだし、仕方がないか。

    .. ただ、ハンダ付けで一番苦労するのは、いつもこの水晶。ちょっと悩む。

  • NX5032GA 2pin SMD で安いというと こういうやつ。 73 円だし特に安いわけではないが、ハンダ付けが楽そう。ラジアルタイプは安いが、安っぽい感じがして嫌。固定する方法も悩む。

UM232R

    UM232H があるなら、UM232R もあるのか? ... と思ったのだが、同然ながらあった。
    で、データシートを見てみたら AE-UM232R とピン配置が 同じだった。

    ちなみに、AE-UM245R も UM245R もある。こちらはピン配置が違う。UM245R は、UM232R のチップを載せ替えただけのようなピン配置で、AE-UM245R は、秋月オリジナル。

追記(2011/10/8): ストロベリー・リナックスの FT232H モジュール
posted by すz at 19:48| Comment(105) | TrackBack(0) | 日記

2011年06月04日

コンピューターウィルス作成罪?

MiAU から 「情報処理の高度化等に対処するための刑法等の一部を改正する法律案」について慎重審議を求める声明 が出ている。

ソフトウェアをリリースしている立場としてかなり気になる。

『コンピューターソフトウェアの重大なバグ(瑕疵)の放置が提供罪に該当する事態がある』とのことだが、いくつか疑問がある。

ソースコードしか提供していないものがあるのだが、これは そもそも、『コンピューターソフトウェア』に該当するのだろうか? ビルドしなければ、動作することはないし、ビルド環境の違いで動作しないような場合もある。ー要するに 動作するものと ソースコードは、1:1 に対応しない。ビルドすら不可能な場合だってある。

それに、ビルドするときに改変して 『トロイの木馬』を埋め込むようなことは可能で、それは提供されたソースコードをみても分からない。

ソースコードの提供には、責任がないとすると ビルドして提供する側に責任があることになる。まぁ 『トロイの木馬』のような話もあるし、たぶん一般的な認識ではないかと思う。

    そうはいっても、法律を制定する側の 一般的な認識とは限らない。いままでの例から考えても、信頼しきることはできない。

次の疑問はライセンス。ほとんどの オープンソースのソフトウェアは、『AS IS で提供するものだから、いかなる保証もないよ』と(ソースには)書いてある。そして、それを了承することが 使用できる条件になっている。ビルドして提供するとしても、『使用できる条件』なのだから、ライセンスとして添付しての提供になるのが普通である。

オープンソースのソフトウェアは、無償であることが多い。『なんらかの保証を求めた時点で使用権を剥奪する』というのは、さすがに法的にも有効だと思うのだが、実際のところどうなのだろう?

ちなみに、有償のソフトウェアも同じような条項が付くのが普通である。保証するためのコストが価格に込められてないならば、やはり法的に有効であろうと思える。

でもそうであれば、重大なバグ(瑕疵)の放置って何だということになる。

だいたい、PL法でも ソフトウェア単体は 法の対象になっていない。命がかかわるような重大な問題であっても 対象にはならないのである。それには、ちゃんとした理由があるはずだ。

    実はちゃんとは知らないのだが、次の理由だろうと思っている。

    ソフトウェア単体では、どのように動作するかそもそも定義できない。OS やら ハードウェアを含んだシステムとして 定義しないと 動作の定義は不可能で、そういうものは普通装置として認識される。

    (装置であれば、PL法の対象になる。)


まぁ、こういうわけでソフトウェアにたいして、責任を追求するのは無理がありそうな気がするわけだが、無理が通される可能性はある。

さて、次の疑問。放置って何?

私の認識では、バイナリが違えば別のソフトウェアである。

    というか、ライセンスが違えば バイナリが同じであっても別のソフトウェアと言えるかも知れない。が、ここでは そこまでは追求しない。

おなじソースコードから作成した A と B のバイナリがあったとする。そして A と B を作った人(団体)が違うとする。

A を作った人は A のみの責任を負う。B に対する責任を負ういわれはない。

    これは、常識として通用している。これを前提として オープンソースのビジネスが成り立っている。

おなじソースコードから作成しても別のソフトウェアであれば、改変したソースコードから作成したら当然別のソフトウェアであろう。

放置しないということは、別のソフトウェアを提供しなおすということで、コストがかかるということだ。装置することが許されていないとなると、別のソフトウェアの購入を強制することが出来るということであろうか?

たぶんそんなことは、ないのだろう。それはともかく、重大な問題があったソフトウェア と 置換されるべき 別のソフトウェア との関係はどのように定義されるのだろう?

    なんだが、グダグダな感じで終わらせてしまったので、補足。

    要するに、バイナリとなってリリースされるソフトウェアは、それで完結している。

    発禁にすることはできても、表現を変えて再提出せよと命令することは出来ないのではないか?

    そういう風にかんがえると、『重大なバグがあったらそのままの形で売り続けてはいけない。』ぐらいにしないといけないのではないか?

    『そのままの形』と書いたが、バグがあることを告知して、修正版があれば、それを入手する情報が添付されていれば良いのではないか? (リンク先が更新されるという前提で)リンク を貼っておくのでも良いかも知れない。

    有償のものは、そういう感じで良いと思うのだが、無償のものはそれでは困る。有償だと金銭の授受がある以上責任がある人(団体)がはっきりしている。無償だと、配布している人が存在しないかも知れない。あるいは、著作権が切れている状態かも知れない。あと、歴史的理由で実用としては配布していないかも知れない。

    無償だと免責だとか、ソースコードが添付されていれば、免責だとか。なにか配慮が欲しい。

    バグがあるという理由で、著作物を消滅させることにはなって欲しくないものだ。

こういうわけで、現時点では、具体的になにを意味するかわからないのだ。そうであれば、反対すろこともできない。私も慎重審議を求めることにしよう。

追記: 2011/06/17 本日 「ウイルス作成罪」(不正指令電磁的記録作成罪) が成立した。

毎日jpの記事 では、コンピューターウイルスを「意図に沿った動作をさせず、不正な指令を与える電磁的記録」などと定義。という説明になっている。誰もが『これはバグの定義では?』と思う内容だ。記者の無理解のためこういう説明になったのか? はたまた 本当なのか? 本当だとすれば、どうしてこうなったのだろう?

そもそも、コンピュータ・ウイルスとは、使用者の意思に関係なく 無限に感染していくようなもののことだ。コンピュータに依存している社会が危機にさらされるから、そういう性質のものを作ること自体が絶対悪である ... という風に私は理解している。

    無限に感染していく性質ならば、必ず自分自身をコピーする性質がある(実行形式の)プログラムのはずだ。それだけを問題にすれば良い。「記録を破壊した」とかは、別の犯罪だ。そういうプログラムをなんらかの方法で実行させれば良いわけで、コンピュータ・ウイルスでなくとも成り立つ。

    「記録を破壊するプログラム」をメールで大量に送ること ... これは犯罪だとは思うが、なんらかの形で騙して 損害を負わせるようなことだから 詐欺の類ではないのか?

    「記録を破壊するプログラム」が、自分自身を 勝手にメールで送る ような機能を合わせ持っていれば、これはコンピュータ・ウイルスだろう。

追記: 解説がいろいろ出てきた

    『無断で他人のコンピューターにおいて実行させる目的』で ウイルスを 「作成」「提供」「取得」「保管」すると 罪に問われる。そして、ここで言うウイルスは、バグがあるプログラムを含む定義。

    ということらしい。

    他人のコンピューターにおいて実行させるのに、普通は「無断」などあり得ない。騙されて実行してしまうのが普通。騙されて実行してしまうことも この法律に引っかかるのだろう。だが、「騙す目的での行為」 と 「作成、保管」とは 論理として つながらない。どのようにでも解釈されうるおそれがある。

      『無断で他人のコンピューターにおいて実行させる目的を持ったプログラム』の 「作成のみ」なら プログラムの動作で判断可能で、まだ理解できるのだが、そうは書いてない。まぁ「保管」が含まれると恐ろしいことになるから、そうは書けないのだろう。

      そういう理由もあって、このような表現をしているのだろうが、やってはいけないことの本質を捉えていないから、どのようにでも解釈される印象だ。

    本当に 「無断で実行させる」例として、OS の脆弱性をついてアタックをかけて 実行させる という手段がある。これを罪とするのは、正当だとは思うが、これだけが該当するような感じではない。そして、これは本当の意味のウイルスの特徴ではない。

    増殖するのがウイルスの特徴であって、「無断で実行させる」だけならば「増殖」しない。 「増殖するもの」に対して 軽い罪のように思われるし、「増殖しないもの」に対して 重い罪のような印象がある。なにより、解釈しだいというのが怖い。

「情報処理の高度化等に対処するための刑法等の一部を改正する法律」 を読んでみた。

    いまさらながら、条文を読んでみた。正直 リンクで紹介されないと読む気がしない。ようやくリンクを見かけたので、読むことにした。

      第百六十八条の二 正当な理由がないのに、人の電子計算機における実行の用に供する目的で、次に掲げる電磁的記録その他の記録を作成し、又は提供した者は、三年以下の懲役又は五十万円以下の罰金に処する。

      一 人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令を与える電磁的記録

      二 前号に掲げるもののほか、同号の不正な指令を記述した電磁的記録その他の記録

    「作成」「提供」に関しては、どうもこれだけらしい。

    すなおに読むと...『正当な理由がない』 のにバグのあるプログラムを作成したり配布したらダメとしか読めない。

      『正当な理由がない』 -- 『興味本位』ってのは、『正当な理由』にはならないのだろう。趣味でプログラムを作るのに、『正当な理由』などあるのだろうか?

      『人の電子計算機における実行の用に供する目的』-- 実行させる目的 って何だ? そもそも プログラムを 配布するのは、実行させる目的のはず。ソースコードは、そのままでは実行できないが、実行させる目的 であるとは言える。ソースコードだけだからと言って 安心できない。

      ところで、AVR は、人の電子計算機に入るのだろうか? 入らないと判断できる記述ではないから入りそうな気がする。

      (一) は、やはりバグの定義にしか読めない。

    「取得」「保管」も同様で、『正当な理由がない』 のにバグのあるプログラムを「取得」「保管」してはならないという風に読める。

    「無断で実行させる」とかは解釈のひとつに過ぎないわけか。『正当な理由』だけが拠り所という感じ。悪意をもってと判断されば、なんでも罪に問える 内容に読める。

    悪評が高い 「不正アクセス禁止法」 でも、条文自体はちゃんと書いてあるように読める。それでも、『ACCS裁判』では、判事が内容を読み違えたと私は思っている。これはもっとひどい。条文を読んでも、どういう理由で、どういう行為が罪になるのかサッパリ分からない。いったい司法は、なにを基準に判断するのだろう?

      「不正アクセス禁止法」では、アクセス制御機能 = 鍵と理解すると 整合がとれた内容になっている。
      目的は、鍵による秩序の維持を図ること。
      (一) は、他人の鍵をつかうな。
      (二) は、鍵 を ピッキングで 開けようとするな。
      そして、(三)は 鍵 を 壊すな。

      バックドアは、 鍵がない入口があることを意味する。本来なら (三) かどうかは議論にすらならないはず。

      (補足) これは、私の個人的主張を平易に説明したもので、正確さにかける。だが、このように捉えないと 矛盾が生じる。そこまで分析はしたのだが、説明は困難なのでそこまでは踏み込まない。
      "鍵" という概念を導入して、それを保護することで秩序を守る という目的ならば、バックドアをも保護する のは "鍵" の存在意味がなくなるということで 論理が成り立たない。... 細かく分析すると、もっと出てくるのだが、これぐらいの説明で止めておく。


では、どういう内容なら良かったのか?

    たぶん 2 つの概念に分かれるのではないか

    ひとつは、『感染させるためのしくみ』を実際に行使する目的をもって作成するようなこと。

      『感染させるためのしくみ』とは、『計算機の使用者を騙してプログラムを実行させる』あるいは、OS の脆弱性を突くようなことをして、『計算機の使用者に無断でプログラムを実行させる』ようなもの。

      ここでは、プログラムがなにかということは問わない。そんなことをするのは、プログラムがなんであれ悪なのだ。

      だいたいプログラムを差し替えることは容易であり、犯行の直前まで安全なプログラムを実行するようにしているかも知れない。

      (追記)こうは書いてみたものの、『計算機の使用者を騙してプログラムを実行させる』ものには、メールの文面や Web サイトのリンクが含まれる。あまりに容易に作成できるから条件を変えるか、条件を増やさないとまずい。といっても、詐欺のようなものだし、実際に実行したら罪を問うことを否定はしない。

      ところで、 Web サイトに フラッシュ や java ,スクリプトが 含まれていたらどういう扱いになるのだろう? ほとんどの場合『計算機の使用者は意図』しておらず『無断で』動いている。java などは、『計算機で動作』はするが、計算機のファイルにアクセスできないようになっていて 『人の計算機で動作』とは定義されないようにしないとダメなのではないか?

    もうひとつは、本来の意味のウィルスの作成。

      本来の意味のウィルスは増殖することを特徴とするから、かならず自分自身をコピーする機能を持っている。そして、『計算機の使用者に無断で』自分自身のコピーを実行する

      『計算機の使用者に無断で自分自身をコピーする機能をもった』もの を 実際に行使する目的をもって作成するようなこと。

      このようなプログラムが 上記の機能と組み合わさると 他の計算機にも感染して爆発的に増殖することになる。だからといって組み合わせたものだけを罪とする必要はない。これだけでも危険なのだ。

      また、これと 上記のものとは、違う技術になる。どちらかの作成を専門とする場合もありそうだ。

    表現は吟味しないといけないのだろうが、どういう特徴をもったものがどういう理由でダメなのかをはっきり書けば良いのではないのだろうか?

    あと、例外として『正当な理由がある』場合はのぞくとなっていれば良いのだろう。どういうのものがダメか判断できれば『正当な理由がある』かどうかも判断できる。そして、『正当な理由』はまれだということになっていれば良い。できたら 『正当な理由の例』も条文にちゃんと書くべきだろう。
posted by すz at 10:10| Comment(1) | TrackBack(0) | 日記

2011年04月30日

気になる海外通販ショップ

dealextreme や taobao 以外で少々気になるところを紹介してみる。

goodluckbuy.com



以前 『wii 用 bluetooth モジュール』の記事で書いたのだが、妙に安い bluetoothモジュール を見つけた ショップ。

このショップは、電子部品も扱っていて。なかには妙に安いものがある。

たとえば ... これ 装置側の mini-B コネクタ。

秋月だと ヒロセ UX60A が、3 個 200 円 だが、これは 100 個入りで $3.6 ... なにかおかしいんじゃないか? とも思えるが べらぼうに安い。しっかりしたものを作るのには向いていないかも知れないが ちょっとしたものに使えるかも知れない。

    実は購入済みで、物も届いた。普通の mini-B にしか見えない。

価格を間違って付けたのかとも思ったが、他にも 100 個入りの USB関係コネクタが 多数ある。

あと ヒロセ DM3A-SF-PEJ が 10個 $5.45 とか。秋月では、DM3AT-SF-PEJ が 1個 140円だから やはり安い。

microSD/SD 関係だと他にも

が見つかった。

格安のものは、そんなに多くないようだが、掘り出しものが見つかるかも。

追記: 2011/08/28

www.pandawill.com



Android 関係が強いショップ。サポートフォーラムがしっかりしていて、印象が良い。

    以前ここ以外で買った Android マシンのファームウェアが ここのサポートフォーラムでしか見つけられなかったことがある。


Android 自体については言及しないが、そのアクセサリのカテゴリがなかなか。

修理用の LCD やタッチパネル。バッテリを扱っていたりする。

    あ、いま見たら値段が軒並み上がっている。

その中でも気になっているのは、EKEN シリーズ用の CPU ボード $21.99

WM8505 と DDR2(?) のボードで コネクタはたぶん メモリ用のものを使っている。たしか ARM 300MHz で Android 用としては 貧弱だが、電子工作で使う CPU としてみるなら超強力。2000 円ほどだから、使いこなせれば 面白いかも知れない。

残念ながら ARM は敬遠することにしているので、手は出さない。もしこういうので JZ4760 (MIPS 互換) が同じぐらいの値段で出たら 大人買いしてしまいそう。

追記:

久しぶりに覗いたら、
Original EKEN M009s CPU VIA WM8650』というのが $19.99 であった。

    (おまけ) 他のパーツだと、
  • Original RJ45 & USB Hub Adapter for EKEN VIA8650 Tablet PC M009S M010S M012S M013S M013F $3.99

    M001 とかで良くみた長いドングルのような形状ではなく、コンパクトで USB が両脇に出ている。
    M001 とかとも互換があるようにも思うが、リストには入っていない。

    コストダウンした結果、オプション扱いになる場合もあるそうなので、一応記す。

EKEN M001 とかと 互換性があったりするのだろうか?

ただ、Flash メモリの類が パターンだけなのが気になる。これだけでは動作しないのかも。

パターンは右上が SPI-Flash 。右下が 普通の NAND Flash 。それは良いのだが、NAND Flash の内側のパターンは何だろう? MicroSD にしか見えないのだが...。

http://ftp.gpl-devices.org/pub/vendors/Wondermedia/WM8650/

ここに WM8650 の Linux カーネルが。

KERNEL-DS_ANDROID_2.6.32_WM8650.110624.1626.tgz 04-Jul-2011 12:42 141M
[ ] WM8650_U-Boot_0.11.01_110726.tgz 26-Jul-2011 16:35 8.7M

ちょっとデカイような気がするが...

    ダウンロードして中を見てみたら、ビルドした状態のスナップショットだった。
    .config もそのままで、結構参考になる。

      CONFIG_USB_GADGET=y
      CONFIG_USB_FILE_STORAGE=m
      CONFIG_USB_FILE_STORAGE_TEST=y

      CONFIG_USB_ANDROID=m
      # CONFIG_USB_ANDROID_ACM is not set
      CONFIG_USB_ANDROID_ADB=y

    USB GADGET 周りは、こんなだった。

    あれ?と思ったのは、自動的に複合デバイスになるのだろうか? ということ。SmartQ では排他で使っていたけれど、そんな必要なかったのか。

    (追記 2011/08/21) EKEN 本体
    このボードを買ったとしても配線を調べたりするには、本体はどうしても必要。

    everbuying.com だと EKEN M009 (おそらく M009S) が、

    この値段だった。8/20 現在 PayPal のレートが 78.48 だから 6400円。国内でも 7000円ぐらいからあるから 格安まではいかない。

    • 買ってみた。BogoMips は、約 800 -- 600 MHz だとばかり思っていたので、ちょっと驚いた。 ただ、Cortex-A8/A9 は、2次キャッシュがあるから M009F(S5PV210 1GHz) なんかと比べると大分負けるかも。

    pandawill.com は重くて見てなかったのだが、よくよく見れば

    この値段で本体が買えるわけだ。CPU ボードとしては興味深いのだが、液晶付けて ... みたいなことを考えだすと 本体買った方が結局安い。

      ジャンクを買っても CPU ボードは手に入るわけだし、なにか液晶なしで有用に使えるものが作れると...面白いかも。

      あと、1G Hz CPU (CPU:Samsung S5PV210 Cortex-A8) の EKEN M009F ($88.99 ) がある。おそらく CPU ボードのコネクタには互換性があるはず。

      ちなみに、本体のインターフェイスの出力があるはずだから、10/100T Ethernet , Sound , USB (Wifi 用 + 拡張コネクタ用 x2 ?) , Gセンサ用 I2C (or SPI) , ボタン用 GPIO , LCD Display 用出力、カメラインターフェイス -- とこれだけ出ているはず。

      ただ、これだけ出ていても、本体にインターフェイスが付いているわけだから 開発するには本体をそのまま使った方が手間がない。

    ところで、WM8650 の Product Brief が ここにあった。スペックが書いてあるだけだが、

    • ARMvrTEJ 600 MHz
    • uDSP 400 MHz (H.264 480p まで)
    • USB host/device Port x 4
    • Ethernet 10/100T Mac
    • Boot from SPI Flash

    だそうだ。SPI Flash のパターンが載っているのは、そういうことだったのか。SPI Flash にブートローダを置けば、後はどこからでもブートできる。もし、JTAG ポートが出ていて BSDL ファイルが手に入れば、JTAG 経由で SPI Flash を書き換えられるかも。

      ところで、このボード パターンだけで NAND FLASH も SPI FLASH も載っていない。これは、自分で付けるものなのか? と思ったのだが、分解写真を探したら、マザーボードの方に NAND FLASH が載っていた。SPI FLASH らしきものも マザーに付いている。交換用部品だから ハンダづけしないといけないのはたしかに変。ただそうなると、空きパターンの意味は? ここに 部品を実装するとどうなるのだろう?

posted by すz at 02:49| Comment(2) | TrackBack(0) | 日記

2011年04月08日

Digikeyで買い物(2011-4)

久しぶりに Digikey を覗いたら XMEGA192A3 があった。嬉々として購入することにした。

    mouser ではだいぶ前から扱っていたのだが、ERR マークがついて手続きがよくわからないので敬遠していた。

    Digikey ではずっと売ってなくて ピン互換の XMEGA192D3 しかなかった。しょうがないので一応押さえたのだが、機能が低すぎて 面白くないので ライタソフト開発用に 1つだけ組んで放置している。

    2011/4 現在の価格は、192A3 が 1,054円。192D3 は 806 円で 200円 安いのだが、DMA , DAC がないし、 ADC は 周波数/チャネル数とも大幅ダウン。

今は FPGA のほうが面白いので放置しそうだが、一応 5 個押さえることにした。

7500円以上にするために、もう少しなにか買わないといけない。FPGA の Spartan-6 XC6SLX9-2TQG144を 2 つばかり買うことにした。

    FPGA は、Spartan-3A TQG100 の 50A と 200A を購入済み。基板も設計したものが手元にあるが、動かす中身を作っている最中で組み立てていない。

    JTAG 関係もオリジナルでやるつもりだから、その後ツールを作ってようやく 組み立てる予定。で、経験を積んだ後に Spartan-6 LX9 -- なんだが随分後の話だが、手元にあって初めて作る気になるのだからしょうがない。

書い忘れたもの。

-- 実はこちらが主題。買っておきたいものはあったのに LSI を 2 種買っただけで発注してしまった。今度は忘れないように メモしておく。

  • 3軸加速度センサ MMA7455

    Microtouch』の記事でメモったにもかかわらず買い忘れた。

    1 個 185円 だが、いま見たら在庫なし。在庫がないもの 1 種類と 在庫があるもの の組み合わせは、両方とも 送料無料で送ってくる。

    だから、こういうついでのときは、在庫がないものを買うチャンスなのだ。

  • 電源系 の部品

    FPGA とか CPLD は、1.2V や 1.8V が必要。いつもチップを買うときに 電源系の部品も一緒に発注することにしていたのだが、今回忘れた。

    SC189CB2518 (1.0uH) は 前回の Spartan-3 購入の際に買ってあるから、ただちに困ることはないのだが、今回気にもかけなかった。反省しよう。特に 1.2V の SC189 は手持ちが少ない。次回は忘れないようにしたい。

その他、おすすめのパーツ

  • 74LVC4066D

    LVC シリーズのアナログスイッチ。抵抗値が小さい。

    XMEGA の基板を作ったとき、これも入手難だったが、今は普通に在庫している。

  • ATtiny4313

    DIP ではないが、SOIC が単価 246 円で在庫している。

    ATtiny20/ATtiny40 は リストは出るが 在庫はなく 1個単位はまだ買えない。

おまけ: FPGA メーカの選択基準

    実をいうと、論理合成ツールがばかでかくて、SSD のノートPC では 1つをインストールするのがやっと。だから 1 社しか選ばない事情がある。

    で、デジキーで扱っているのは Xilinx のみ。選択の余地がない。

    調べてみると Lattice の MachXO2 というのが、良さそう で使ってみたい気がするが ... デバイス自体も買えないし、当面パス。

    • MachXO2 ファミリ・データシート (pdf)

      ちょっと見てみた。ブロック RAM がある TQFP 100 が 640/1200/2000 で、TQFP 144 だと 640U/2000/4000/7000 か。種類が多いのがいいなぁ。ハードマクロは、I2C x 2 , SPI , タイマ。やっぱりいずれは使ってみたい。

追記: 2011/06/17

  • LCMXO2280C-B-EVN Lattice の MachXO Breakout Board 2700 円 (購入済み)

    FT2232HL と MachXO2280 が載ったボード。7.6 cm x 7.6 cm ぐらいのサイズ。

  • AT93C46DN , AT93C46EN SOIC の EEPROM 。FT2232 用。

    安いし、次の購入時にでも、買っておこう。

  • LCMXO2-1200HC 662円〜 851円。

    欲しいが、まだいいや。LCMXO2-1200ZE-P-EVN (MachXO2 Pico Dev Kit) は、欲しいがまだ売っていない。

  • MI0603J600R

    チップフェライトビーズ。60Ω@100MHz 。いろんな USB 関係の回路図で VBUS から 電源を取る場合に チップフェライトビーズを通している。 このチップは、Lattice の USB JTAG (FT2232HL) の回路図で使っていた。

    秋月に BLM18PG600SN1D (1608, 60Ω@100MHz, 25個100円) があるので、ここで買う必要はない。ついでに買うなら ... という感じ。

    ちなみに、Lattice の回路図では、シールド GND も GND に 直結していなくて 100KΩ + 0.01uF を通して GND に 接続していた。... そうか

  • ASV-24.000MHZ 24 MHz のオシレータ (3.3V)。166円。

    購入するついでに 1-2個 買っておきたい。24 Mhz と DCM を組み合わせると いろいろな周波数が作れて便利そうな .. 。

  • UM232H



    FTDI 純正の モジュール (1801円) なんてのも出ている。(データシート)

    FT232H(Hi-Speed 対応のシングルチャネル)採用。 -- MPSSE も搭載。JTAG 用に 欲しいかも。

  • FT232HL

    チップ単体だと 383円。LQFP48 pin だし、コンパクトで安くて良いかも。2232D と同じ 48pin だが、ピン配置の互換性はない。水晶は 12MHz 。

  • 93LC56BT

    UM232H は、SOT-23-6 の 93LC56 を使っている。93C46 より 93LC56BT の方が良さそう。

    ところで FT232H (と FT2232H) では、MPSSE は Bitbang モードと同様に アプリで設定可能になっている。ピンの初期状態の問題がなければ、EEPROM は必ずしも必要ない。

      補足: EEPROM なしだと デフォルトは Serial になってしまう。そうすると RTS と DO が両方出力でぶつかることになる。どうせ JTAG にしか使わないのであれば、EEPROM を付け 設定するのが正しいのだろう。


  • NX3225SA

    表面実装型の水晶で、秋月で扱っている FA238 (3225サイズ) に置き換えられるのは、これ ... なのか?

    12 MHz が欲しいが、95 円もする。秋月の FA238 は、16/20/25 MHz のみだし、仕方がないか。

    .. ただ、ハンダ付けで一番苦労するのは、いつもこの水晶。ちょっと悩む。

  • NX5032GA 2pin SMD で安いというと こういうやつ。 73 円だし特に安いわけではないが、ハンダ付けが楽そう。ラジアルタイプは安いが、安っぽい感じがして嫌。固定する方法も悩む。

  • MCR10(12K)

    FT232H の回路図みてたら 1% 誤差指定の 12KΩが必要。買い忘れないように。

追記: 2012/09/19 繰越分の話

    コメントに出ていた話。いまさらだが.. 思い出したので。

      ダブル

      在庫量の不足により、ご発注分の一部が繰越注文となる場合、在庫のある分が先に出荷され、繰越注文分は在庫の補充を待って出荷されるか、繰越注文の保留期間の期限が切れるまで保留されます。尚、運送料(商品代金によっては無料)は、一回分のみになります。

      シングル

      繰越注文分の在庫の補充を待って、一度に出荷されるか、繰越注文の保留期間の期限が切れるまで保留されます。尚、運送料(商品代金によっては無料)は、一回分のみになります。

    在庫がないものは、『繰越注文分は在庫の補充を待って』ということだから、全部揃うまで保留ということ。送料は、一回分のみで、7500 円以上なら、この 2 回分が無料ということ。

    ちなみに、Mouser では、

      その他のほとんどの国への発送で、ご注文を複数に分けて発送しなければならない場合は、発送量が割引されます。

    ということなので、Digikey は 在庫なしのものも気軽に発注できるメリットがある。ただし、商品の価格は Mouser の方が安い傾向があるように思える。
posted by すz at 22:00| Comment(105) | TrackBack(0) | 日記

2011年02月03日

AVR Toolchain

Tiny20/Tiny40 の記事を書いたときに AVR Toolchain というのが出てきて、なにこれ?状態だったのだが... 実は WinAVR の開発は終了して AVR Toolchain に引き継がれたらしい。いまさらながら知った。どおりで 新しい WinAVRが出ないはずだ。

正規の AVR Toolchain は、Atmel のサイトで レジストすれば AVRStudio 4 の addon として手に入る。

だが、AVRStudio 4 は使っていないし、WinAVR 相当だけが欲しい。 そして それを手にするのにレジストするなど論外。.. どうしたら良いのだろう?

とりあえず、レジストなしで入手できる、AVR Tools Beta Site に行ってみると、AVR32 Studio 2.7 (Windows 版と Linux 版がある) の zip がダウンロードできた。

    300MB 前後のサイズだが、それらしいものは、これしかない。

    中をみてみると (AVR32 ではなく) AVR の gcc (avr-gcc.exe )などがあった。どうも WinAVR 相当がまるごと入っているかんじで avr32-gcc.exe と avr-gcc.exe が ひとつの Tree に入っている。

    WinAVR 相当を抜き出して zip で固めると 85MB 程度になって、正規の AVR Toolchain と同じぐらいのサイズになる。さらに、avr32 関係と doc/info/man とか削ってみたら zip で 30MB 程度になった。

    これぐらいなら、インストールしても良いかなと思い、展開して PATH を通してみた。

    で、ビルドしてみると一応使える。gcc のバージョンは 4.4.3 。ビルドしたバイナリのサイズは WinAVR-20100110 より少し大きくなるようだ。

これで、使えるものは入手できることが分かった。

  • ただ、ベータ版で、最新の 1つの バージョンしか入手できないような.. 正規版(相当)か 特定のバージョン(の zip 版)を入手するのはどうしたら良いのだろう?
  • あと toolchain のソースコードの入手方法もまだ分かっていない。バイナリよりむしろこっちの方が欲しい。(WinAVR だとパッチ一式が一緒に入っていて 便利だったのに これにはパッチ集は入っていない。)
  • だいぶ不便になった印象。ただ Linux 版が手に入ることは良いことだ。あまり考えなくとも 使えるし同じバイナリが生成できる。

とりあえず、事情がわかるようになるまで、取ってきた次のバージョン

  • AVR32 Studio 2.7.0.851 (Toolchain 3.1.0.201012011657)
  • avr-gcc -v では、gcc version 4.4.3 (AVR_8_bit_GNU_Toolchain_3.1.0_200)

を試しに使ってみようかと思う。

リリースするバイナリでは、WinAVR-20100110 を 使うが、Tiny10 を使ってみるとか Xmega を使ってみるとかするときに必要だ。特に興味があるのは、Tiny10 だったりする。FPGA で遊ぶときに これに準拠して小さなコアにしたい。

    追記 2011/03/02: 3.1.0_200 を Tiny10 で試してみたが、使えるレベルになっていないことが判った。そして それ以降のバージョンは現在公開されていない。待つしかないようだ。

    追記 2011/03/08: AVR Studio 5 beta が出ている(523MB: サイズ注意)。

    これをインストールすると、AVR Toolchain もインストールされる。入っているのを見てみると

    gcc version 4.5.1 (AVR_8_bit_GNU_Toolchain_3.2.0_253)

    になっている。これだけを 取り出して MSYS のコマンドラインで使ってみたのだが、少々具合が悪い。-lgcc が見つけられなくてエラーになる。しょうがないので gcc フロントエンドだけ 3.1.0 (200) の avr-gcc を使っている。
    ( lib/gcc/avr/4.5.1 とlibexec/gcc/avr/4.5.1 を 4.4.3 に rename する。こと)

    で、tiny40 を試してみたが、まだだめ。32bit の LDS/STS は使わなくなったが、string など初期値付きデータが FLASH から RAM にコピーされないようだ。

    0 で初期化されたデータがあれば、<__do_clear_bss> が call されるが、0 以外で初期化すると なにも call されなくなる。この問題は、自分で初期化すれば良さそうなのだが、今度は 32bit の STSが使われる。当面グローバル変数は使えなさそう。

    無理やりでも使いたいのであれば、auto 変数を使い。初期値は、コードで代入するという手を使う。それ以外に、妙にコード効率が悪いという問題がある。int8_t で指定しているのに 16bit 演算しているとか ... 。

    追記: 2011/03/17:

    http://distribute.atmel.no/tools/opensource/avr-gcc/

    パッチはここ?

Tiny10 系について:

Tiny10 では、レジスタが r16-r31 の 16個しかない。 AT90S1200 や XMEGA を含む数あるAVRのなかで、このシリーズだけ違うのである。そして、Atmel は頑張って gcc をこれにも対応させた。AVR Toolchain が動くようなので、どうやって少ないレジスタに対応したのかチェックしてみようと思う。

    参考リンク : アセンブラ関数の書き方(avr-gcc)

  • レジスタ:

    普通のAVRでは、いくつか特定の役割を持ったものがある。

      r31:r30 Z レジスタ
      r29:r28 Y レジスタ (フレームポインタ)
      r27:r26 X レジスタ
      r1 tmp
      r0 zero

    X/Y/Z レジスタは ポインタとして(も?)使われる。r1 は、LPM 系, MUL 系の命令で使われる。r0 は、C では常に 0 を入れておくルール。

    tiny10 では、r1 は存在しないが、LPM 系, MUL 系の命令もまた存在しないから無問題。r0 も 存在しないが、ないなら使わないで済ませば良い話のようだ。

  • 引数:

      r25:r24 第一引数
      r23:r22 第二引数
      r21:r20 第三引数
      r19:r18 第四引数

    普通のAVRでは、4 つまでの引数がレジスタ渡しになる。それ以上はメモリに置き、Y レジスタ(フレームポインタ)を使いアクセスする。なお、8bit の場合でも詰めることはしないで 16bit レジスタのように使っている。

    tiny10 では、3 つまでに変わった。

    追記: 普通のAVR で 4 つまでと書いたが、間違い。r25:r24 まで続くようだ。

  • 戻り値

      8bit r24
      16bit r25:r24
      32bit r25:r24:r23:r22

    引数に使ったレジスタを戻り値に使っている。これは、tiny10 でも変わらない。

  • call される側が値を保証するレジスタ

      r29:r28 Y レジスタ
      r17 - r2
      r0 (0 を設定)


    普通のAVR では、こうなっていて 使用する場合は push し pop で値を戻す。

    tiny10 は、調査中だが、

      r29:r28 Y レジスタ
      r17 - r16

    こうなっている。

    ところで、r1 (__zero_reg__) / r0(__temp_reg__) はどうしているのか?

      gcc のコード生成を見て分かったのだが、必要なのである。過去のAVR のコード生成に影響を与えずに改造しなくてはならないので、基本的な考えを変更するわけにはいかないのだ。

      で、どういうわけか、r17 , r16 を割り当てている。セーブ不要のレジスタにすべきではないか? 幸い引数を 3 つまでにしたので、r19/r18 はこの目的に使えるはずだ。


  • その他 Tiny10 が違う点

    命令セットやレジスタとは関係ないのだが、gcc に関係しそうなところで Tiny10 が違うところがある。

    Tiny10 では LPM 命令がないが、フラッシュ全体が 通常メモリと同じようにアクセスできる。ただし、アドレスはずれていて 0x4000 から フラッシュが始まる。

    これ gcc ではどう扱っているのか 要調査。

    ついでに書いておくと メモリ(RAM)のアクセスが遅いらしい。2 clock に 1 回アクセスとか。アドレス空間に フラッシュとか いろいろ 入ったせい?

  • avrXX

    普通 avr3 とか avr5 とか CPU の種類によってカテゴライズし、libgcc.a を切り分けている。

      (avr2) avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6

      XMEGA 以外でも 従来のものは、これだけある。 アドレススペース x tiny/mega で分類されていたと思う。ちなみに at90s2313 などは avr2 で ディレクトリがなく、直下の libgcc.a を使う。

    tiny10 は、avrtiny10 になっている。avr0 とかするのかと思ったのだが、安易なネーミングだった。ちなみに、tiny20/tiny40 も avrtiny10 を使う。

    ついでに書くと XMEGA は、avrxmega2,4,5,6,7 と大幅に増えている。なにやら大変なことになっているようだ。

    リストするとこう。

    mmcu=atxmega16a4 mmcu=avrxmega2;
    mmcu=atxmega16d4 mmcu=avrxmega2;
    mmcu=atxmega16x1 mmcu=avrxmega2;
    mmcu=atxmega32d4 mmcu=avrxmega2;
    mmcu=atxmega32a4 mmcu=avrxmega2;
    mmcu=atxmega32x1 mmcu=avrxmega2;
    mmcu=atxmega64a3 mmcu=avrxmega4;
    mmcu=atxmega64d3 mmcu=avrxmega4;
    mmcu=atxmega64a1 mmcu=avrxmega5;
    mmcu=atxmega64a1u mmcu=avrxmega5;
    mmcu=atxmega128a3 mmcu=avrxmega6;
    mmcu=atxmega128b1 mmcu=avrxmega6;
    mmcu=atxmega128d3 mmcu=avrxmega6;
    mmcu=atxmega192a3 mmcu=avrxmega6;
    mmcu=atxmega192d3 mmcu=avrxmega6;
    mmcu=atxmega256a3 mmcu=avrxmega6;
    mmcu=atxmega256a3b mmcu=avrxmega6;
    mmcu=atxmega256d3 mmcu=avrxmega6;
    mmcu=atxmega128a1 mmcu=avrxmega7;
    mmcu=atxmega128a1u mmcu=avrxmega7;

    基本的に アドレススペースの関係で、分類されているようだ。A1U とか X1 , B1 とか知らないものがあるが、いずれ世に出るのだろう。


追記: Tiny40 の I/Oレジスタマップ

ここに書くのもどうかと思うが、FPGA で遊ぶ準備として Tiny40 のレジスタを調べてみた。ADCとか NVM とか FPGA から見て関係ない物は除外してある。

なぜ Tiny40 ? かというと (1)ピンの数が多く PORT が多く割り当てられている。(2)SPI/TWI がある。
これから不要なものを取って USART 追加すれば、だいたい欲しいものになる。

ステータスレジスタ, スタックポインタ 以外は基本的にどこになにをマップしても良いのだろうけれど、全然違うとやはり AVR らしくなくなる。合わせられるものなら合わせた方が無難だろう。


    0x3F SREG ---- ステータスレジスタ(必須)
    0x3E SPH +--- スタックポインタ(必須)
    0x3D SPL +
    0x3C CCP ---- レジスタ書き換え保護

    0x3A MCUCR ----
    0x39 OSCCAL +--- クロック関係
    0x38 reserved :
    0x37 CLKMSR :
    0x36 CLKPSR +
    (0x35 - 0x32)
    0x31 WDTCSR ---- ウォッチドックタイマ

    0x30 SPCR +--- SPI
    0x2F SPSR |
    0x2E SPDR +

    0x2D TWSCRA +--- TWI
    0x2C TWSCRB |
    0x2B TWSSRA |
    0x2A TWSA |
    0x29 TWSAM |
    0x28 TWSD +

    0x27 TCNT1H +--- タイマカウンタ1 (16bit)
    0x26 TIMSK :
    0x25 TIFR :
    0x24 TCCR1A |
    0x23 TCNT1L |
    0x22 OCR1A |
    0x21 OCR1B +

    0x20 RAMAR
    0x19 RAMDR

    0x1E PUEC +--- ポートC
    0x1D PORTC |
    0x1C DDRC |
    0x1B PINC +

    0x1A PCMSK2

    0x19 TCCR0A +---- タイマカウンタ0 (8bit)
    0x18 TCCR0B |
    0x17 TCNT0 |
    0x16 OCR0A |
    0x15 OCR0B +
    ( 0x14 - 0x0D )
    0x0C GIMSK
    0x0A PCMSK1
    0x09 PCMSK0
    ( 0x08 )

    0x07 PUEB +--- ポートB
    0x06 PORTB |
    0x05 DDRB |
    0x04 PINB +

    0x03 PUEA +--- ポートA
    0x02 PORTA |
    0x01 DDRA |
    0x00 PINA +

    USART レジスタ ( 0x14 - 0x0D に入るか) 
    +0x6 UDR1
    +0x5 UBRR1H
    +0x4 UBRR1L
    +0x3 UCSR1D (optional)
    +0x2 UCSR1C
    +0x1 UCSR1B
    +0x0 UCSR1A


    並べてみて気になったのは、

  • CCP というのは、4 クロック以内の書き込まないとダメという機能を一ヶ所にしたもの。

  • CLKMSR は、クロックソースを切り替えるもの。

  • PORT に PUE というのが追加されていること。これは プルアップ許可機能が DDR から独立。
    .. こうなっていると、PORT を 0 にして DDR 操作で I2C のような操作がでできる。

  • RAMAR/RAMDR とは何? なぜ必要?


追記: 2011/10/13 -- このページを見ている人がいるようなので

  • AVR互換コア(テスト3)

    その後、tiny10 系 と 互換のコア(FPGA 用 IP)を実際に作っている。テストも出来ないので、AVR_Toolchain は、独自に 修正することにした。その暫定結果が、上の記事。

  • AVR_Toolchain-20110424-src.tar.gz

    これが、ソースへのパッチ集。

  • binutils も 1 バイト LDS/STS に対応するために修正が必要。
  • __tmp_reg__ , __zero_reg__ は r18/r19 に define している。これは重大な修正だが、こうしないと libgcc の 関数で対応できないものが出る。
  • avr-libc は、ほとんど対応できていない。アセンブラが多すぎて対応しきれないのだ。

    4/24 で止まっているが、その後 AVRStudio 5 が出ている。ソースがどうなったかチェックはしていない。
  • posted by すz at 03:53| Comment(0) | TrackBack(0) | 日記

    2011年02月02日

    12VLED基板

    今基板を作っているのだが、ついでに 12V の LED 基板も割りつけて作ることにした。

    重いものばかりだと 作るのが気楽にできないので、箸休め的にお気楽なものを混ぜようというのが意図。

    まずは、手持ちの 12V 基板の紹介。



    dealextreme でこんなのを買っている。(画像にリンク)。値段も $2.2 / $2.8 / $3.0 でかなり安い。

    左は 5mm の白色 LED を 21 個載せたもの。右2つは 同じ基板を使っていて、真ん中が白色、右が ウォームホワイト。LED は 24 個だが、左のよりかなり小さい。

    また、右端の ウォームホワイト以外は逆指し OK 。

      一番安い左のやつが一番明るいようだ... ただ、使っているうちに切れた。... これは三端子のダイオード(x2 入り) のハンダづけ不良だった。ハンダを付け直すことで直せた。

      LED は 5mm タイプだが、レンズ部分が短くて背が低いタイプ。一応白く光る。青みはあまり感じない。

      真ん中と(右の)ウォームホワイトは同じ基板を使っているが、ウォームホワイトはブリッジダイオードを使わずにジャンパで済ませている。--- Vf が高いせいだろう。

      ウォームホワイトは全体的に暗いだけでなく 明るさにむらがある。 あと、LED のはんだづけ不良で 付かなくなるのが出た。

      真ん中は白く光る。これも明るくない。直視してもあまりまぶしくない。

      右2 つが暗いのは、車のバッテリー駆動を想定しているからだろう。電流制限抵抗は、両方とも 3 直列にそれぞれ、240 Ω (24LED だから 8 個付いている) 。12V 安定化電源では、150 Ωに付け替えるか、300 Ωを並列に付けると良いかも。

      左の安いほうは、21LED なのに抵抗が 4 つ。ちゃんと調べていないが全部並列のような ... 。たまたま Vf が揃っているようで 明るさにムラはないようだ。12V で十分明るいようで、たぶん車でつかうには 向いていない。


    こういうのを持っているわけだが、ちょっと自分で作ってみたい。ユニバーサル基板でも同等のものは作れるわけだが、出来上がりが美しくない。プリント基板ならハンダづけも気楽にできて楽しいような気がする。

    ちなみに LED も dealextreme の これ 25個 $2.6 を入手済み。安いやつでも沢山載せれば明るいはず。あと、ついでに チップ LED も載るようにしようと思う。



    こんな感じか。トランジスタ 2 個による 定電流回路組み込んでみた。PWM による 制御も可能。いまのところ どちらか選択することを考えているが、抵抗値の選択がうまく出来れば 両立できるかも知れない。

    チップLED は、最初 秋月で扱っている 白色チップLED -- PLCC2 パッケージをターゲットにしてみたが、115個入りジャンクLED基板も買っていたのだった。これを付けるために、K を短めにしている。(4 端子で A A A K の割り当てなので、最初のアートワークでは付かなかった)



    回路図は、こんな風にしている。

      PWM との両立は、普通にできそう。Q2 の方は 電流がほとんど流れないので、R9 : 電流検出側のベース抵抗を大きくできる。で、R10 : PWM 側の抵抗の値を一桁小さな値にすれば大丈夫。10K : 1K でいけそう。

      標準的な設定だと 20mA x 3V x 12 ぐらいで 0.72 W (消費電力は、0.96 W) 。寿命を犠牲にすれば、もうすこし電流を流せるし、PWM 使ってのパルスなら 3 倍ぐらいは OK 。

      そのあたりを考慮して、手持ちの抵抗値とも相談して、電流制限抵抗は 47 Ωにした。

      Vf が 3.1V x 3 だとして トランジスタで 0.2V 下がるとすれば 2.5V 。電流検出用抵抗が 8 Ω/4 とすれば、常時 ON で、一個あたり 50 mA 。すぐさま壊れる電流値ではなさそうだし、PWM で使うなら妥当なところだろう。

      PWM を使わないなら電流制限が効く。この場合気にしないといけないのは、トランジスタの熱容量。
      20mA で制限するなら、抵抗で落ちる電圧は、0.98V 。そうすると トランジスタで 1.72V 落とすことになる。流す電流は 80mA だから 137mW 。放熱は気にしないといけないが、大丈夫か?。

      -- 2SC2712 だとコレクタ損失 150mW でぎりぎり。 2SC3325 なら 200mW で少し余裕がある。また、制限電流はあまり上げられない。3325 使って 30mA といったところか。

      電流検出用抵抗は、7.5 Ω。-- 80mA で 0.6V になるようにするわけだ。だが、 7.5 Ωは手持ちにない。10 Ω + 47 Ωだと 8.2 Ωで明るめになる。さらに 75 Ωを追加すると 7.4 Ω。 電流検出抵抗がパラレルになっているのは この調整をするため。

      ちなみに、上記は車のバッテリーで点灯させることを想定していない。20mA で電流制限するなら、3325 使った上で 電流制限抵抗を 75 Ω 以上にしないといけない。
    posted by すz at 20:45| Comment(0) | TrackBack(0) | 日記