2020年 01月 10日

STM32F103C8 激安ボード (BluePill) のセルフパワー化

BluePill は VBUS と 5V と書かれた端子が直結しており、5V ピンに給電してセルフパワー化しようとしたときにUSB接続すると危険です。なので5Vピンに自力で給電したい場合、これを切り離して純粋なセルフパワー化する必要があります。

基板上のカットポイントは写真の通りです。ここをカットすれば、基板上の 3.3V LDO を生かしたまま VBUS だけを分離し、5V ピンから給電できるようになります。

模倣チップ

ところで STM32F103C8 激安ボード (BluePill) ですが、載っているチップが中華製の模倣チップであることが多々あるようです (というより種類が異なる模倣チップがいくつかある?)。模倣チップでも動けばいいじゃんという話でもなく、SWG 経由で得られる coreid が本物と一致せず、若干面倒な手順を踏まないと書きこめないことがあります。

買う前に見分ける方法はあまりなく、親切な業者ならよく読んでみると STM32F103C8 とともに CKS CS32F103C8T6 と書いてあったりすることがあります。まず説明ページをよく読んでおく必要があります。GigaDevice GD32F103C8 というのもありますが、これは coreid も STM32 と同様のようです(未確認)。

ICをけずってリマークしてある悪質なものも存在しています (ebay で買ったらそうだった)。ダメだった場合に雑に dispute できるので、値段もかわらないし ebay よりも Aliexpress がおすすめ。

2020年 01月 08日

クリスタルラダーフィルタ


クリスタルラダーフィルタとクリスタルの特性測定

  • LCR メーターで容量 Cp を測る
  • VNA で直列共振周波数・並列共振周波数を測る
    • VNA の CH0/CH1 に直列で接続する
  • VNA でR を測る。直列共振周波数付近で読む
    • VNA の Ch0 に接続して読む。狭スパンで見ればスミスチャート上の等Rにそって表示されるはず

f_s = 9.997753
f_p = 10.015550
R = 10.7Ω
C_p = 1.67pF

C_s = C_p * ( (f_p**2) / (f_s**2) - 1) //=> 5.950825783949261e-15 (5.951fF)
L = 1 / (4 * (Math.PI ** 2) * (f_s ** 2) * C_s) //=> 0.04258515389890184 (42.6mH)

これをもとに LTSpice などで等価回路を入力する。LTSpice の場合、xtal の記号はあるので、これ使うのが良い。といっても実体は C そのもので、右クリックで上記で計算した詳細パラメータを入力することで xtal の等価回路になる。

備考

C_s は fF (フェムトファラド) 単位と非常に小さいので、直接は測れない。C_p は pF、R は数Ωオーダーになる

2020年 01月 03日

電解コンデンサは常温放置でも劣化する

http://www.rubycon.co.jp/products/alumi/technote3.html#3-7
https://www.nichicon.co.jp/lib/aluminum.pdf

「放置特性」という形で言及されていることがある。放置していると、漏れ電流が増加していく。もともと経年劣化で必ず増加するが、電圧がかかっていれば自動修復されるものが、放置状態だとこれが行われないということのようだ。「電圧処理」をすれば修復されて元に戻る。

また経時劣化で内部圧力が高まり、液漏れすることがある。これも無負荷でも発生する。この場合、膨らんでいるコンデンサは「消費期限切れ」なので捨てるしかない。

pcb2gcode mirror-axis

https://github.com/pcb2gcode/pcb2gcode/wiki/Options:-Alignment-for-two-sided-PCB-and-offsets

mirror-axis まわりが追加された?ようで、デフォルトの挙動が変わってしまっていた。かなりハマった。しかもこれ、面倒なことにプロジェクトごと(ボードの大きさごと)に決められた値を入れないと今までと同じ挙動にならない。

mirror-axis には width の半分を入れる。一回変換してみて表示される数字を半分にわればいいが……

タカチ電機工業のサイトの検索結果を値段でソート

ケースのタカチの製品検索 ( https://www.takachi-el.co.jp/search/detail ) で結果をソートする方法がないので、JS でやる。

JS コンソールで以下を実行する。

p = $x('//*[@id="mCSB_1_container"]/table/tbody')[0];$x('tr[@class="child"]', p).sort( (a, b) => $x('number(./td[9])', b) < $x('number(./td[9])', a) ? 1 : -1 ).forEach( (e) => p.appendChild(e));

SPI TFT 液晶 (ST7735など) で色がおかしいときに試すこと

  • RGB BGR の設定は正しいか
  • 0xdddddd がグレーで表示されるか?
    • されない場合 GBRG / GRBG の可能性あり

ドライバが同じでも、載っている液晶のデータ形式が違うことがある。

備考 RGB888 (24bit) から RGB565 (16bit) へ変換

RGB

#define RGB565(rgb888)     ( ((( (rgb888)&0xf80000)>>8) | (((rgb888)&0xfc00)>>5) | (((rgb888)&0xf8)>>3)) )

GRBG

#define RGB565(rgb888)     (( (rgb888) & 0x1c00) << 3)|(( (rgb888) & 0xf8) << 5)|(( (rgb888) & 0xf80000) >> 16)|(((rgb888) & 0xe000) >> 13)
2019年 12月 29日

Mojave で clang が stdio.h などを見つけられない場合

stdio.h や math.h などが見つからないと言われる場合

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg 

で SDK header をインストールしなければならない。

2019年 12月 25日

GYSFFMANC(MT3333)が定期的に受信できなくなる

秋月で売っているGYSFFMANC(MT3333) GNSSモジュールがおかしい。

中央下のグラフを見るのがわかりやすいが、定期的に (衛星が見えているにも関わらず) 一切受信できなくなり、しばらくすると回復するという挙動をする。なので全く安定して受信できない。

  • 少しずつ SV Used が減少しはじめ、3D Fix を維持できなくなる。SV View はほぼ変化しない
  • リセットから3〜4時間経過すると一切受信できなくなる
  • そこからしばらくすると、再び受信できるようになる
  • 上記の挙動を繰替えす
  • 一切受信できなくなったタイミングで手動でリセット・ホットスタートすると即座に 3D Fix される。これよりアンテナの問題ではないと考えられる
  • ほぼ同じ位置に別のアンテナをつけ、別の受信機(ublox NEO M8N) をつかって測位しているが、そちらではこのような現象は起きない。衛星の見える環境の問題ではないと考えられる

その他の情報

  • バージョンは AXN_5.1.2_3333_17113000
  • GPSとGLONASS で測位。SBAS の有効・無効は関係なく再現する。
  • GLONASS は表示にはでるが測位に使われている形跡がないように思う。

考察

ゴミなのでは? とりあえず使用に耐えないので買って損してイライラするが、挙動について考えてみる。

  • 衛星のエフェメリス情報の有効期限が4時間なので、周期と似ていて怪しい
    • 3D Fix した状態だと捕捉している別の衛星の情報を一切処理しないとか?
  • 特定の環境でだけ再現する可能性がある?
    • 受信環境が悪い、かつ既に 3D Fix 状態だと他の衛星を無視するとか?
  • ファームのバグ (メモリリークみたいな?)
    • メモリリークとかでスタックするならリセット後にメッセージが出て、それが記録されると思うが、それは観測できない

よくわからんけど、とりあえずこのモジュールはおすすめできない。中国の怪しい GNSS モジュールのほうがはるかに安定している……

2019年 12月 24日

74HC04 の出力インピーダンス

データシートにまさにこれという値は載っていないので計算する必要がある。VCC などによって出力インピーダンスが変わってくる。

たとえば Toshiba の TC74HCU04 の場合、「出力電圧」は以下のようになっている。

または

で出力インピーダンス(最小)がわかる。H レベルのときは 4.5V のときだと (4.5 - 4.18) / 4e-3 = 80,、6.0V のときだと (6.0 - 5.68) / 5.2e-3 = 61。5V で中間ぐらいとすると 71Ω ぐらいか。

2019年 12月 23日

10MHz GPSDO (そのうち書く)

OCXO と GPS 1PPS その3 | tech - 氾濫原 というのを3年前に書いてからやる気をうしなって放置してましたが、STM32F103 bluepill と組合せて、10MHz GPSDO をつくってます。今度は完成させたい。前よりは進捗していて、現状では 1mHz 未満ぐらい (0.1ppb) に誤差を抑えることができています。