2017年05月20日

バックロードホーンを作ってみたい

つれづれ日記を読んでいて、秋月で 2個 500円の 8cm フルレンジ スピーカーユニット F77G98-6 が良いものだと知り、ついつい買ってしまった。4個も。ついでに2個 300円の F02607H0 までも。

さて、どうすんだこれ。FOSTEX の エンクロージャー P800-E と組み合わせれば良いとのことだが、当然余る。実験用だとしても裸で使うのは抵抗あるし、せっかくだから、適当なエンクロージャーを作ってみたい。

最初は、バスレフで良いかと思って、ホムセンで板材を見てきた。6mm 厚 5cm幅(10cm幅) 910mm のやつが良さそうだ。側板は別途ということにして、10cm 幅だと 20cm x 30cm ぐらいの箱が作れる。6L ぐらいだから十分。ダクトは、百均の掃除機ダクトで良いだろう。側板用の板材も百均でいいや。まな板つかっても良いし。板材だけはホムセンのやつを使う。自分で切り出したりしたら精度が出せずに困ったことになりそう。

それでも良かったのだが、いろいろ調べていくうちにバックロードホーン型がいいなと思うようになった。オーディオテクニカの 「AT-SP30BLH」なんて製品や、箱根寄木細工バックロードホーン組立キット「HC-BR100」 なんてのを見つけて、小さくても良いのか。。と思ってしまった。

とは言え、お金をかける気はあんまりない。性能? とかもあまり気にしない。それらしいものになって、自己満足できれば良い。

 お題:6mm 厚 5cm幅(10cm幅) 910mm の板材と適当な側板を使って作ること。

この条件で検討することに。

というわけで、こんな感じのやつってのを eagle で描いてみた。1目盛り 20mm として、線の合計は 701 mm --- いけそうだ。デザインはできるだけ直角を使う方針で。ちなみにラフスケッチであり、計算とかはしていない。配置とか正確に計算して調整したいけども。右は左で描いたものを回転させた。角度は -10.224 度。この値も計算したわけじゃなくて、最初に引いた線の角度。たぶん右の置き方にするので、側板は 160mm 幅あればよい。

作り方は、あまり検討していないが、少なくとも実物大の型紙を印刷できるようにするつもり。あと、接着剤は、セメダイン コンクリメントが良さそうな気がしている。



板材の寸法を決めて、再度配置したものが完成。板材は、切りしろなしで 858mm となった。スピーカーを取り付ける板のディメンジョンも併せて作成し、原寸大の pdf を作成! これを型紙としてコンビニプリントで普通紙印刷する。

型紙をダンボールに張って、組むのもありかな・・という気もしてきた。練習してみたほうが良いかも知れない。

実際にやってみた(1)。液状のヤマトのりをダンボールに塗って貼ってみたところ。水分が多いのでシワができた。--- 失敗かも。スティックのりでないとダメか。

実際にやってみた(2)。ダイソーで強力タイプのスティックのりを購入。型紙のほうに塗ってダンボールに貼ってみたところ、なんか良い感じ。



こんなものが出来上がった。側板とガイド?を張り合わせたもの。あるいは溝を掘った側板というべきか。ダンボールはサクサク切れるので、楽にしかも精度よくできた気がする。
さて、これを組んでしまうのは、もったいない。実機を作る際の冶具になりそうなのだ。難を言えば、組む際に接着剤が付いてしまうと大変マズそう。

実際にやってみた(3)。

冶具を別に作ることに。ダイソーに PP シートが売ってたので 1mm 厚を選択。透明が良かったのだが、色付きしかなかった。ポリプロピレンなら、ほとんどの接着剤は付かない。ただ精度よくつくれるかどうか。ダンボールは柔らかいからぴったりでなくてもどうにかなる。PP シートは、カッターで切り出した後、修正しないと。どうなることやら。



この写真は修整後。2枚別々に切り出したのだが、かなりのずれがあった。しょうがないので2枚を貼り合わせて同じになるように修正。一応 6mmの板はスリットに入る。--- ちょっと修正は難しいというか面倒だった。スリットに入ると書いたが、歪めないとギリギリ入らないような感じ。

苦労したし、この型紙中心で行く。板も現物合わせ優先。



完成! 貼り合わせた状態で穴をあけ、分離した後スペーサで2枚を接続。これを中心に組み上げていく予定。



またもテスト。ダイソー カラーボードでやってみた。5mm 厚で薄い板にも関わらず、冶具を外すのが面倒だった。理由は接着剤の盛り --- 干渉しないように、接着部分が型紙にあたるところを切っておこう。後、組んでからの側板切り出しは、うまくいかない気がしてきた。やはり切り出すのが先か。

側板の選択



ホムセン行ってみたが、どうもしっくり来るものがない。板厚が 13mm とか厚いうえに値段が高い。15cm 幅の板ならいろいろあるのだが、16cm は面倒なことに。結局、百均のまないたで決定 -- スピーカ用としては適切ではないかも知れないが、工作が楽そう。この上に組み付けて、最後に切り出す。余った部分はスピーカーが付くフロントパネルにも使う予定。厚みがあるので設計図とは若干形が変わる。

    ちなみに上の写真は ミーツのものだが、ダイソーにも同一形状のものがある。

    そういえば、ホムセンにフローティング用の板があった。30cm 幅 180cm で 1000円前後。表面がすばらしいし、使いたい気がしたのだが、なんか合わない気がして今回はパス。メモだけしておこう。なんか安いような気がしたが、一帖 3000円 か。8 帖だと 24000円 --- やっぱ安いか。


ところで、このデザインだと 実にもったいない感じでまな板が余る。 F02607H0用まで同じデザインにすると 8枚まな板が必要で同じ形の端材が大量にでることに。それでは、あんまりなので、F02607H0用は、余った部分で作ることにする。
 お題:まな板の残りと 30cm x 20cm 6mm厚 MDF , 10cm幅の板の残りを使って スピーカBOXを作る。
これで検討してみる。

木材の反り

さて、実機を組みだしたのだが、木が反っている。側板用のまな板が1枚。内側に使う 10c幅の木の端も。
困ってしまったのだが、かたく絞った濡れタオルを乗せておくと直るらしい。水分で膨張するので曲がった内側に乗せる。2枚あるなら、()←こうなるように挟む。

やってみたところ、6mm 厚の板は、数時間で反対側に反るほど効果があった。まな板もおおむね OK 。

ほぼ完成!



写真は、最後の側板を付ける直前のもの。ターミナルを付け、ケーブルも配置。側板を付けたら最後、中はいじれないので、結構不安だったり。スピーカの取り付け穴は、ダイソー コンパスカッターで切り抜いた。結構根気がいるが、両面から切っていったところなんとかいけた。

後は、水性ニスを塗る予定。そのためには、まず整形、次に全体をなめらかになるよう紙やすりをかけて、「との粉」なるものを刷り込む。ニスはなかなか乾かないので完成まで日数がかかる。
    「との粉」だが、砥の粉だそうだ --- つまりは石の微粒子。木目を埋めて表面をなめらかにするものだが、塗料をしみこませない役割もある。塗るのは水性ニスなので、しみこまない方が早く乾くだろうという判断。さて、これは MDF にも有効なのだろうか? ついでに実験してみる。
    --- 調べてみると、「との粉」で処理した後、サンディングシーラーを塗るのが有効だそうだ。とりあえず今回は、「との粉」のみで行く。


やってみた。

「との粉」 20ml 弱に同量の水を入れかきまぜる。量的にこんなものかと思ったのだが、塗りすぎたようだ。乾いた後にサンドペーパーで落とすのだが、いくらでも落ちる --- まるで土くれを磨いているよう。あるサイトでは、全部落とすつもりで磨けばよろしいとのこと。もっと少量で良かったかも。



つぎに、ダイソーの水性ニス(けやき)を塗った。できるだけ薄くと心掛けたが、垂れないギリギリだったかも知れない。数時間たってだいぶ乾いてきた。スピーカBOX のほうは、綺麗な木目が浮き出てきた。表面は少々ざらつく感じ。MDF は、ザラザラ。これを2〜3日乾かして、サンドがけして 2度目の塗りの予定。MDF はどう仕上がるのか?塗膜はできているわけだから、いけるとは思うが、まぁやってみる。



2つめ完成! ついでに、 F02607H0用バスレフも1つ。
写真は、それぞれ2度塗り後乾燥中のもの。バスレフは、けやき→ウォールナットに変更。MDF の色が濃くしっくりこなかったので。あとスピーカの穴が左にオフセットされているが、前の設計で穴をあけたのを流用したため。ダクトは、トイレの詰まりを流すアレの柄。内径 19φ 4cm 。吸音材はマットを切ったもの。上下にだけ貼っている。

    ダクトの候補として、ダイソー クレイツールのパイプも良さそうだった。あるいは、これらのパイプを型に厚紙を巻き付けて紙パイプを作るのも良さそうに思えた。


アンプについて



とりあえず bluetooth スピーカーにしたい。それで、左のタイプを入手した。だが、どうもスピーカーケーブルが長い場合 LP フィルタが必要らしい。最初から右のタイプを買えばよかった。とはいうものの 普通の 10uH インダクタ使ってるみたいだし、手持ちがある。コンデンサを 0.1 uF にするとカットオフ 160kHz 。
    なんか、22uF を沢山持ってた。1.3A の小さいやつと 3A ぐらいの表面実装型。これと 0.1uF のフィルムコンデンサで作る。カットオフは 100kHz 程度。

アンテナになるのを防ぐだけだから、これでも良いのかも知れない。あとは、電解コンデンサが目立つ。左のタイプで良かったのだろうか? ちょっと不安。まぁでも、最終的には ESP32 で作りたいしダメでも無問題。

つくり終えて

精度よく作ろうとしたのだが、思うようには行かなかった。板が歪んでいたりして、完璧なのは難しい。ニス塗りもあまり上手に出来たとは言えない。少々残念ではあるが、まぁこんなものだろう。

さて、作成をしていて思ったのが、CNC があれば・・・みたいな。スピーカー穴のくりぬきも完璧だったろうし、側板に溝を掘ることで、組み立てに苦労しなかっただろう。また、固く重い板材を採用することも出来たはずだ。aliexpress を見れば、CNC1610 あるいは CNC2418 といったのが $200 以下で買える。Arduino 互換のコントローラ付きで、この価格。しかもレーザーモジュールをオプションとして付けられる。死蔵してしまいそうで躊躇しているが、いずれ検討してみたい。
posted by すz at 18:51| Comment(0) | TrackBack(0) | 日記

2017年05月14日

ESP32 でやってみたいこと

ESP32 でやってみたいことの覚書

1) bootloader - 起動の仕組みの理解 あるいは改造

ESP32 は、OTA -- Wifi からのプログラム書き換えができるらしいのだ。作ったボードは USB シリアルがないし、これを常用したいのだが、どういう仕組みなのか? 理解してないとなにもできない。

ちょっと調べただけだが、まず次のところに解説があった。
 ・ESP32 (4) – Flash, bootloader and FreeRTOS

ざっと説明すると、ROM 内の 1st stage ブートローダーが SPI FLASH から 2nd stage ブートローダーを読み込み実行する。2nd stage ブートローダー は、 factory app もしくは 2種類の OTA app から選択したものを読み込み起動する。OTA app が 2種類あるのは、書き込みが失敗したときの対策ができるということだろう。

2nd stage ブートローダー 0x1000
パーティションテーブル 0x8000
 nvs 0x9000 24k
 phy_init 0xf000 4k
factory app 0x10000 1M

基本はこんな配置らしいのだが、パーティション自体は別。app と data の2個のパーティションがあるらしい。

で、さらに調べると 2nd stage ブートローダー のソースコードが公開されていることが分かった。
 ・https://github.com/espressif/esp-idf/tree/master/components/bootloader/src/main

ソースコードがあるのなら、自分が使いやすいと思うブートローダーを作ることも可能だ。例えば、OTA で書き込んでそれを起動するようなものも作れそうだ。そこまでしなくとも、起動する app の 選択ロジックがどうなってるか調べるのにも役にたちそうだ。

    いきなり訂正。

    PART_TYPE_APP PART_SUBTYPE_FACTORY: factory app

    ということ。OTA も PART_SUBTYPE_OTA_FLAG/PART_SUBTYPE_OTA_MASK で 2 種類が認識される。

さて、

dram_seg (RW) : org = 0x3FFF0000, len = 0x10000
iram_pool_1_seg (RWX) : org = 0x40078000, len = 0x8000
iram_seg (RWX) : org = 0x40080000, len = 0x400

メモリ上は、このあたりを使うらしい。といっても、そもそもどこが RAM なのか知らなかった。

512KB の SRAM は、3つのユニットに分かれている。

dbus ibus
SRAM 0 192KB 0x4007_8000 ~ 0x4007_FFFF
SRAM 1 128KB 0x3FFE_0000 ~ 0x3FFF_FFFF 0x400A_0000 ~ 0x400B_FFFF reverse order (word-wise)
SRAM 2 200KB 0x3FFA_E000 ~ 0x3FFD_FFFF

なんだか複雑でよく分からない。慣れが必要そうだ。

さて、OTA だが、実際にどう使うのか?
 ・http://ht-deko.com/arduino/esp-wroom-32.html
 ・http://www.iotsharing.com/2017/05/how-to-update-firmware-ota-for-batch-esp32.html
ここに説明と具体例があった。

要するにライブラリはあるが、app から 呼び出してやらないといけない。動かないコードを作ってしまうと、USB シリアル使っていちからやりなおし。ブートローダーに OTA 書き込み機能を付けるか、2 つ目の OTA app を OTA 書き込み専用にするか。まぁ普通に考えるとリカバリ用を作るのが妥当なのだろう。

    ほぼなにもしないプログラム : 103362バイト(9% /1MB)グローバル変数 9432バイト(3% /294912)
    ほぼ OTA のみの プログラム : 448515バイト(42% /1MB)グローバル変数 37380バイト(12% /294912)

    448KB ! bootloader に組み込むなどとんでもなかった。OTA のコードなど知れているはずだから、FreeRTOS で 100KB , プロトコルスタックで +300KB ということなのだろうか? いずれにせよ、リカバリ用の OTA app を作って、bootloader では、どちらを起動するかのロジックをいじるってのが良さそう。

ちなみに ホスト側のアプリは用意する必要はなく、Arduino IDE から書き込めるようになっているらしい。そうであれば、環境さえ整えれば、USB シリアルレスで いけそうだ。




さて、実際になにをしたいか?

1) IP カメラ
まぁ取り立てて必要というわけではないが、車のバックカメラなんかは、あると良いかも知れない。

 ・https://github.com/igrr/esp32-cam-demo/blob/master/components/camera/ov7725.c

このサンプルコードを見ながら、いろいろやってみたいとは思う。

 ・Orange pi 用カメラ

ov7725 は fifo なしのを使う。だが割と高い。どうせなら、より高機能な ov2640 を使ったほうが良いかもしれない。幸いなことに Orange pi 用が割と安い --- 送料込み $8.28 (OPi を買うついでに set にしておくと $5 分ぐらい)。 実験用なら、やっすい ov7670 が良いかも知れない。ov7670 にもいろいろあって、24-pin フレキのタイプもある。互換性があるなら、ov2640 と入れ替えてテストするとかできるかも。

さて、aliexpress のカメラモジュールを見ているといろいろなタイプがある。ONVIF 対応の IP カメラが $10 ほどで買えたりする。さすがに、こういうのに対抗するのは難しいような。シリアルインターフェイスの jpeg 30fps のものもある。プロトコルは、vimicro VC0706 プロトコルというもの。先人が これを ESP8266 で IP camera にするようなことをしている。互換性があるものを作れたら良いのかも知れない。

    データシートを見ていたら、ov2640 は圧縮エンジンが付いている。JPEG stream がいけるとなると、ONVIF 対応も可能? やはりこちらが本命か。

    ov7670 の ピンアサイン は、aitendo のモジュールのデータシートに記載されているものが一般的なようだ。HDR というシルクがある ov7725 も同じ。そして、Orange pi カメラもおそらく同じ。ただし、電源回りは少し違うようだ。ov7670/ov7725 は、内蔵レギュレータがあり、レジスタの設定で ON/OFF できる。ov2640 もあるのだが物理的に配線が必要で、ON/OFF がレジスタではできない。もし配線されてなければ、core に 1.2v を供給しないといけない。
    1 NC
    2 NC
    3 D2
    4 D1
    5 D3
    6 D0
    7 D4
    8 PCLK
    9 D5
    10 GND
    11 D6
    12 MCLK
    13 D7
    14 VCC (2.8v)
    15 VCORE (1.8v - ov7670/ov7725, 1.2v - ov2640)
    16 HSYNC
    17 STBY_EN (PWDN)
    18 VSYNC
    19 RESET#
    20 SCK
    21 AVCC (2.8v)
    22 SDA
    23 AGND
    24 NC

ところで、これらカメラモジュールは 38mm 角のものが多い。なにか規格があるのだろうか? カメラ専用基板とか作りたくなっているので気になる。


    ELECROW が SALE をしているので、基板を作りたく。10cm x10cm 5枚だと、$4.9 + 送料 $6.42 の $11.32 で作成できる。で、ESP32 基板にカメラ用コネクタを追加したものを作成してみた。
     ・suzbrd_wroom32_v1.2-out.zip -- 提出ファイル
     ・suzbrd_wroom32_v1.2.zip -- eagle ソース
    カメラの信号の割り当て
    1 NC
    2 NC
    3 D2 IO14
    4 D1 IO12
    5 D3 IO13
    6 D0 IO15
    7 D4 IO16
    8 PCLK IO17
    9 D5 IO4
    10 GND
    11 D6 IO35
    12 MCLK IO5
    13 D7 IO18
    14 VCC (2.8v)
    15 VCORE (1.8v - ov7670/ov7725, 1.2v - ov2640)
    16 HSYNC IO19
    17 STBY_EN (PWDN) pull-down
    18 VSYNC IO21
    19 RESET# IO2
    20 SCK IO23
    21 AVCC (2.8v)
    22 SDA IO22
    23 AGND
    24 NC

    こんな割り当て、VCORE には 3端子レギュレーターを付けることが可能で、AVCC は LC フィルタを通して供給するようにした。それは良いのだが、余ってる I/O はかなり少ない。この形状にする必要はあったのか?少々疑問ではある。

    ところで、SOT23 のレギュレーターをパターンに入れたが、適合するのがあまりない。MCP1700 もしくは、AP2120N ぐらい。内部レギュレータがあるのに、必要なのか?という疑問があるのだが、OV2640 のモジュールは、普通レギュレータが 2つ 3つ載っている。3.3V → 2.8v とかがまずひとつ。2つあるってことは、3.3v → 1.2v なんだろう。3つあるやつは、AVCC かな。さて、OV7670 は内部レギュレータがあって ON/OFF できる。ちなみに、VOUT に高い電圧がかかった場合、なにも起きないはずなので、OV7670 に切り替えてテストする場合も1.2V レギュレータを付けておけば良いのだと思う。


ところで、サーボモータで制御するカメラ台というものがある。


このカメラをマウントする部分につめがあるが、どうも 10mm高 3cm x3cm のカメラモジュール用らしい。これに直接マウント可能なカメラ基板を作ってみたいような。サーボ制御用のコネクタも付けてしまえば、電源ケーブルだけのシンプルなものになる。だだ、そこまでやるなら、カメラをちゃんと動作できてソフト開発も完了してから。幸い最近木工を覚えた。多分、桐まないたの端材でマウンタを作れば上記の基板でもいけるだろう。

あと、サーボに SG90/MG90S は使えるようだが、どうもきっちり適合しない。ひょっとして ES08MA II が適合するのかも。(間違い)。MG90S や ES08MA II は問題ないのだが、SG90 は、静止に問題があるかも知れない。カメラ用としては致命的。できれば 避けたほうが良いのかも。

    2017/7/5 追記


    Orange pi i96 というボードが出た。価格 $8.8 + 送料、サイズ 60mm x 30mm 。Wifi+Bluetooth とカメラインターフェイス。おそらくだが、カメラインターフェイスは、今までの OPi シリーズと違って、上記のカメラモジュールが直接接続できる。今までは 電源を直接供給しておらず、変換ボードが必要だった。が、2G IOT から、2.8v と 1.8v を供給するようになった。i96 も 同じ SoC RDA 8810PL 採用なので、カメラについても同じだと思われる。


    2G IOT の回路図はこうなっている。1.8V / 2.8V は、RDA 8810PL が供給しているようだ。この 1.8V がプログラマブルならば、ov2640 も接続できるかも知れない。
    あと気になったところは、AVDD 。 10Ω + 10uF の RC LPF で済ませている。 設計した ESP32 は LC LPF を付けているが、時定数が適当だったので、見直してみたい。

    さて、このようなボードが出てくるとなると、作ろうと思っているカメラボードについて再考しないといけないかも知れない。というか OPi i96 がカメラボードそのものに見える --- これ使えば良いじゃないと思えて来てしまうのである。

2) bluetooth スピーカー あるいはイヤホン

bluetooth のデバイス作れるのだから当然やってみたい。このあたりは先人が既に作っているから、楽だろう。慣れるために手を付けたいわけなので、外部 DAC じゃなくて、内蔵 DAC もしくは、1bit シグマデルタでやりたい。シグマデルタは GPIO を叩くライブラリがあったはず。RMT を使ったものはまだないかも知れない。

 ・事:ESP32でBluetoothイヤホンを作ってみた – Qiita
 ・ESP32でI2S+DACを使う – Qiita

 ・https://github.com/espressif/esp-idf/tree/master/examples/bluetooth
このあたり。

3) bluetooth キーボード

キーボードというか HID デバイスを作りたい。自由に作れるようになれば、かなり応用が広がる。ゲームコントローラに仕込んで、なにか遠隔操作するとか。あるいは、Android を遠隔操作するものとか -- 赤外線ハンドルリモコンのブリッジとか。

 HOGP -- HID over GATT Profile を使うらしいのだが、あまり情報がない。誰かの実装まち。

4) その他 bluetooth デバイス

 bluetooth デバイス はまだまだある。USB シリアルの代替につかえる bluetooth シリアル とか。

 ・http://anoda.cocolog-nifty.com/mad/2017/06/esp-wroom-32blu.html
SPP が使用可能になったそうだ。

ところで、USB シリアルの代替ならば、Wifi でもいい。
 ・http://www.eterlogic.com/Products.VSPE.html
Virtual Serial Ports Emulator なるソフトは、Windows から COM ポートとして接続してくれるので、既存のソフトが使えるようになる。例えば 中華CNCのコントローラは、Arduino だったりするので、代替できるものが作れるかも知れない。

    というか、もし中華CNCを買うなら、代替コントローラ作ってみたい。まずは、無線化した同等機能。できれば、モータの回転数をモニタして、過負荷を検出 -- 動かす速度を落とす...みたいな機能とか。あとは、原点を検出するような機能とか。さらに言うと材料との位置合わせのためのなにか?

    ググってみると、原点検出は標準的な機能らしい。透過型フォトセンサなどを取り付けている人がいた。Z軸はより容易なようだ。テーブルの精度(高低)を測定したりも可能。自機で削って公正している例もあった。また材料との位置合わせのためにUSBスコープを取り付けてる例もあった。モータの回転数も測定してる人はいた。これをフィードバックして制御するような例だけ見つからなかった。

    顕微鏡まで付けるとなると ... 1台のESP32 では荷が重い。じゃぁ2台? CNC が既にある前提なら 顕微鏡すら自作できるかも知れないし。

5) lowspeed USB HOST/device

ESP8266 でも ソフトUSB ができるそうだが、ESP32 でもたぶんできるのだろう。そのためには、CPU を1つ占有してブン回さないと。

 ・https://techtutorialsx.com/2017/05/09/esp32-running-code-on-a-specific-core/

とりあえず、コア指定でタスクを動かす方法。これが出来たうえで、同一バンクへのメモリアクセスが競合しないようにする。そこまでできれば、ESP8266 と同じ条件になるはず。あるいは、RMT を使うとか。


ADC についてのメモ

ADC は2つある。ひとつは、ADC1 で 低ノイズアンプあり。あと ADC2 。ADC のピンは、どちらかに接続されている。
ADC を制御するコントローラは、RTC ドメインと、DIGTAL ドメインにある。RTC ADC1, ETC ADC2, DIG ADC1,DIG ADC2 の4つ。なんだかよく分からないが、RTC ドメインの方は、ulp 用だと思っておこう。DIGTAL ドメインの方は、高速で 複数チャネルのスキャンもサポートしている。

また、ADC に接続される内部機能がある。ホールセンサ、電源電圧(PWDAT)、および 電源のピーク電圧(PKDAT)。それ以外に温度計があり、こちらは専用の ADC に接続されている。

    SENSOR_VP (GPIO36)
    SENSOR_CAPP (GPIO37)
    SENSOR_CAPN (GPIO38)
    SENSOR_VN (GPIO39)
    32K_XP (GPIO33)
    32K_XN (GPIO32)
    VDET_1 (GPIO34)
    VDET_2 (GPIO35)

これらは、ADC1 に接続されている。またホールセンサは、SENSOR_VP/SENSOR_VN に接続されている。
その他は ADC2 である。

さて、DIG ADC は、どれぐらい高速なのか? 調べて 11us とか 17.2 us とか書いている人がいてはっきりしない。analogRead()を使っての計測で、ピンの設定やらなにやらをいちいちやっての時間らしい。

esp32-hal-adc.h

/*
* Set number of cycles per sample
* Default is 8 and seems to do well
* Range is 1 - 255
* */
void analogSetCycles(uint8_t cycles);

/*
* Set the divider for the ADC clock.
* Default is 1
* Range is 1 - 255
* */
void analogSetClockDiv(uint8_t clockDiv);

どうやら、ADC clock は クロックソースを分周して、指定したクロック数かけて計測するようだ。しかし、クロックソースが何かは良くわからない。
adc.h

/**
* @brief Set ADC source clock
* @param clk_div ADC clock divider, ADC clock is divided from APB clock
* @return
* - ESP_OK success
*/
esp_err_t adc_set_clk_div(uint8_t clk_div);

こっちに書いてあった。APB_CLK というのは、80MHz (最大) 。div が 1 というのは、1/1 分周? だとしたら 80MHz で 8 clock で取得できるのだから 10M sps ? 最適な値を設定しなければ、精度に差がでてしまうのだろうが、結構すごいような。AVR とは雲泥の差である。

ただし、正確な起動タイミングというのが、少々怪しい。ソフトウェアかまたは I2S と書いてある。ソフトウェアでは、完全に正確なタイミングは取れない。となると I2S になるのだが ...

I2S には、ADC モードというのがある。ADC のデータを取得して I2S で外部に出力する機能。( ちなみに、DAC モードというのもある。I2S から入力したデータを DAC で出力する。)。これのために起動できるようになっているのだが、内部に取り込むために使えるのかどうか不明。

ついでだが、audio clock というのが独立して存在する。専用のPLL で I2S だけが使用できる。44.1k の整数倍とか サウンド用の周波数を作り出すためのもの。それは良いのだが、完全に正確なタイミングとなると無理。

さて、DAC はどういうものなのか? 8bit x 2 というのはすぐ分かるが、周波数などは?

まず フルスケールは、電源電圧の 3.3V -- ではあるが、4 段階のスケーリング 1/1, 1/2, 1/4, 1/8 が出来る。 うまく使えば 12bit 相当になるかも。クロックについては、ソースが RTC8M_CLK (8MHz) でこれの n/65536 (n = 1 〜 65536) とか。PLL を 使っているのだろうか? とにかく最大は 8MHz のようだ。1 クロック毎に出力できるとは思えないのだが詳細は分からない。仮に 8 clock だとしても 1M sps になる。これだと、多値 ΣΔ とかで 8bit 以上の分解能を実現することが可能かも知れない。ただし、電源にノイズが乗れば、だいなしである。ESP-WROOM-32 なんかだと、電源も1つにまとめられているので、厳しい。


基板づくりメモ

先日はじめて ELECROW を使ってみた。使ったのは、special offer というので、10cm x10cm 10枚が、$9.5 +送料 $3.3 =$12.8 で作れた。(今は送料$4.8 計$14.3) 。AIR MAIL でも 2週間かからなかったし、シルクの品質にも満足。さらに今は、5 枚までなら、カラー基板がさらに安くなっている。

 https://www.elecrow.com/5pcs-2-layer-pcb.html

$4.9 が基本価格で、送料は 5cm x5cm $3.72 , 5cm x10cm $4.98, 10cm x10cm $6.42 。

milling を使った疑似パネライズが OK らしいので、便利に使えそう。
posted by すz at 21:49| Comment(0) | TrackBack(0) | ESP32