2024年3月27日水曜日

小ネタ


 北海道スペースポートで小型ロケットの弾道飛行試験に成功|ロケット量産化技術の獲得へ、革新的固体燃料LTPの飛行を実証 | SPACE COTAN株式会社のプレスリリース

 某社のロケット関連の話題だいぶ久しぶりな感じ(と言っても委託先として書かれている程度だけど)。

 たぶんロケットリンクテクノロジー社が以前にプレスリリースしてた「来年3月打ち上げ予定の試験機(LTP-135ロケット)(以下略」のことだと思うけど、今回のプレスリリースにはロケットリンクの社名は出てこないのが謎い。/* プレスリリース、日付書いておいてくれんかなぁ…… */


 Flightradar24’s new GPS jamming map | Flightradar24 Blog

 Fr24でGPSジャミングマップの提供を開始(Fr24へのオーバーレイではなく、専用のページ)。航空機から放送される位置情報には位置の信頼性の情報も含まれるから、これをマッピングすればGPSジャミングマップのように使える、という原理。仕組みからして十分な航空機が飛んでいる場所でしか使用できない。例えば電子戦が活発であると考えられる交戦地域は民間航空機が飛行していないから、ADS-Bを使用したジャミングの推定は行えない。


 SDR GPS receiver on a microcontroller - OSQZSS

 STM32クラスのマイコンでGPSのSDR受信。GNSS用のADCで1bit,2Mspsでサンプリングして、4個のPRNをトラッキング。

 ワンセグチューナーだと帯域幅狭くてL1C/Aの復調は厳しいみたいな感じだった気がするけど、とはいえ2Mspsでも受信できるんだな。


https://www.daido-it.ac.jp/~t-sumi/poroj/last-rep/02.pdf

 2009年

「関西国際空港は海上空港としては失敗作であり反省するべき点がいくつもある」やけにはっきりと断言しているな。

 大雑把に要約すると「無理に大水深の場所に人工島を造成したが、地質調査が不十分だったために大きな沈下が引き起こされた」みたいな流れで、沈下した→エンジニアリングとしての失敗、という感じの内容。大型の人工島を造成するなら沿岸部の水深が浅い場所に作るべきだ、とも。

 そもそも関空は伊丹空港等既存の空港で騒音問題が深刻化したから、市街地(大都市部)から十分に離れた場所に空港を作る必要があったわけで、第一条件として場所(海岸からの距離)が設定されたから、施工のし易い場所に動かすことは不可能で、過去に経験のない規模の工事だから事前に地質調査を行った上で、最終的に10m程度の沈下を見込んで施工したわけで、空港として使用できないほど(想定以上)に沈下したならともかく、施工前の想定に近い程度の沈下で推移し、かつ空港としての使用も継続できているわけだから、エンジニアリングとしてはほとんど大成功だと思うけどな。もっと岸に近い場所に作るべきだ、という議論は、エンジニアリングではなく(広義での)政治寄りの話だと思う。周辺の住民が多少の騒音等を許容できるなら水深の浅い場所に作れたし、それを許容できないからエンジニアリングで頑張って水深の大きい場所に作ったわけで。


 DH101ARSMT003 Hartmann ロータリスイッチ,10極, PCB Hartmann 42V - 【通販モノタロウ】

 プッシュスイッチでなくてギザタイプのサムロータリースイッチっぽいヤツ。SMDタイプの10極BCDロータリースイッチにコードホイールを付けたアセンブリ。


 NCマシンの動画見てるとエアカット率がかなり高いのが謎なんだよなー。外形が不定でどこから切り始めればいいのかわからない、みたいなのはともかくとしても、切削済み(外形が確定している)に対しても非常に大きいエアカットがあって、下手すると切削に対するエアカットが1倍を優に超えるような場合もある。CAMソフトは自分が切った場所をわかってるんだから、切る必要がない場所は早送りするなり最適化できるはずなのに。


 475kHzの無線機、特に送信機、もう少し現代的な設計があっても良さそうな気がするけど、あんまりそういうのはなさそうな気がする。特に国内だと古い500kHzあたりの業務用だったり、あるいは真空管で送信機を作っていたり、みたいな、いかにも「昔ながらの」みたいなやつが主流な印象。

 500kHzって無線機ではあるけど、オーディオに比べて2桁程度周波数が高いだけだからな。もうすこしどうにかなりそうな気がするのだが。普通のオーディオが数十Wだから、周波数で2桁上、電力で1桁下、くらい。どうにでもなりそうな気がする。NHKの大電力送信機みたいに500kWとか出すわけでもないし。

 趣味の範囲で無理しないところで、という感じで設計していくとあんまり目新しいものじゃなくなるのかもしれないけど。


 ALOS-3のTDI-CCDとそれに対応した姿勢制御系とか、システムとして最適化してる感じあって好きだったんだけどなー。まあ、TDI-CCD自体はSLATSとかにも乗ってたし、ミッション要求次第で小型衛星でも可能なんだろうけど。

 SLATSコンステみたいなやつって出てこないんだろうか? 軍用の偵察衛星ならともかく、民間用に常時観測するような衛星で軌道操作は厳しいか。

 そういえば小型衛星を静止軌道でフォーメーションフライトさせて可視光の干渉計作るみたいなコンセプトどーなってるんだろ。

***

 試しにamazonで安いサムロータリースイッチを買ってみた。目的外使用でのレビューしかないことでおなじみのサムロータリースイッチ。挙げ句「どうやって使うのが正しい使い方なのかわからない」とか言われるサムロータリスイッチ。


 今回買ったものは0-9とCOMの11本の端子が出ているタイプ(いわゆる10進数型)。幅は8mm、高さ(突起除く)は22mm強、高さ(突起含む)は24mm弱、奥行き(基板含む)は35mm弱、パネルからボタンの先端までが6.5mm弱、ボタンのストロークは2.5mm弱、端子ピッチは2.0mm、くらい。

 とりあえず0から9まで1kΩのチップ抵抗(1箇所だけリード)を配置して、0番から9番までに分圧抵抗を組んで、COMでアナログ値として取れるようにしてみた。あと0-9は桁間で接続して、各桁ごとにADCサンプリングすればそれぞれの桁を読めるようにしている。全桁で分圧抵抗を共有しているから、ADC側はある程度ハイインピーダンスである必要がある。


 ブレッドボードにSTM32F303K8T6を載せてテスト。


 ゆっくり操作するとこんな感じ。数百ミリ秒の間COMが浮く(適当な深さに押し続ければ浮かせ続けられる)。チャタリングもそこそこある。真面目にサンプリングしようとすると結局全端子を監視して浮いてない端子を受け入れるしかなさそう。


 GND側に1kΩを挟んで、全ADCを100kΩでプルダウンしてサンプリング

 12bitADCでおよそ409.6毎に出てくるはずだけど、特に全桁を5に設定したときに非常にズレが大きい。ところどころ浮いているところをサンプリングして0付近に落ちている。


 プルダウン抵抗を除去すると

 全体的に409.6の倍数付近に固まるし、インピーダンスが一番高い部分(数字5)付近でもほとんど暴れない。ただし浮いてるときに中途半端な値になる。


 試しにGPIOのプル抵抗を使ってみた。STM32には40kΩ±40%くらいの抵抗をGPIO1本辺り2本(プルアップとプルダウン)内蔵しているから、これを使えば特定のピンだけプルダウンができる。サンプリングするピン以外は浮かせておけば、他のピンに引っ張られずにサンプリングできる。ただしアナログモードだとプル抵抗はハードウェアレベルで切断されるらしい(CubeMXでコードを生成するとADC用のGPIOはアナログモードで初期化される)。入力モードにしておけばプル抵抗が有効になる。OD出力でHIGHを出してもいいけど、設定が面倒なだけで特にメリットはない(強いて言うならピークホールド回路のリセットとか?)。

 1ピンずつプルダウンしてサンプリングするとこんな感じ

 縦軸の0-9が数字の値で、-1は浮いている状態を表している。かなりずれる。

 結局、どの方式で引っ張るにしろ、最終的にはインピーダンスの問題になる。気軽に1kΩ9本で分圧したけど、もっと考えてから作るべきだったな。100Ωで分圧すれば10倍楽になるし、100Ωで分圧したって10本直列に使うんだから3.3mAしか流れないし。


 全ピンを100kΩでプルダウンするのと、1ピンずつを40kΩ前後でプルダウンするのでは、平均では前者のほうが影響は小さいけど、後者は他のピンに引っ張られない利点がある。ただし外付け抵抗は5%程度の精度だけど、外付け抵抗は40%程度と、値を仮定するには誤差が大きい。1個の個体を想定して、誤差が主に製造誤差に起因して温度係数等が十分に小さいと仮定して、その抵抗値に対して数値とADCのリードアウトのテーブルを作り、それを参照して入力値から数字を決定してやれば、プルダウン抵抗の影響をある程度除去できる。

 Rpd(/Rpu)がピンに関係なく、チップ内でほとんど同じ特性だと仮定すれば、適当なADC対応ピンに40kΩ程度の抵抗(できるだけ高精度)をつけてRpdを有効にした状態でADCでサンプリングすれば、Rpdを推定できるはず。

 今回はとりあえずRpdの実測値(33kΩ)に合わせて閾値を決めておいて、それをもとに判定するようにしてみた。カチカチ動かしてみた程度だと、誤動作はなさそうな感じ。

 1本ずつプルダウンを制御するので、ADCのDMAを使った一括サンプリングができなくて、プログラムループでポーリングする必要がある。5本サンプリングするのに75usくらいかかる。


 STM32F3の(F1とかも?)ADC、DMAで転送するとEOCがクリアされるんだろうか? EOC割り込みを有効にしても割り込みがかからないし、DMAで転送してからADC1->ISR & ADC_ISR_EOCを見てもクリアされている。ADCx.ISR.EOCはADCx.DRの読み出しでクリアされるらしいから、DMA転送時にクリアされるっぽい。ADCで1ch変換するごとに割り込みかけながらDMAで転送させれば楽かな、と思ったけど、そういう使い方はできないっぽい。まあ、ADCで割り込みかけるならそこでDRを読み出せばいい話だしな。


 とりあえず、COM+10接点のロータリースイッチをマイコンに入力する方法は完全に理解した。楽勝。まあ、COM+10接点って結構レアなやつなんだけどな。。。一般的にはロータリースイッチはBCDな気がする。BCDの場合は接点切り替えのタイミングがずれると困ることになりそう。10接点だと浮いていることさえ検出できれば過渡現象は除去できるけど、BCDはどうやって対策すればいいんだろう? よほど変なスイッチじゃない限りは一瞬で通り過ぎるだろうから、チャタリング除去と合わせて数十ミリ秒くらいの幅で静定を待てばいいのかな。

***

 電源はUSBから3端子レギュで3.3Vを作っている。

 5V側が4.83V±0.25V、3.3V側が3.31V±0.08Vくらい。120kHzくらいで発振している(周期はある程度の幅で振動している)。これはデスクトップPCに接続したものだけど、ACアダプタとかモバイルバッテリーでもVppに差はあれど同じくらいの発振がある。

 消費電力の変化に追いつけずにガタガタになってるんだろうけど、でもそれだともっとデジタル的な(矩形波的な)形になりそうな気がする。なんでのこぎり波みたいな形になってるんだろう? 上向きの傾斜ならインパルス的な消費電力の増加でキャパシタを放電して充電してみたいなサイクルで説明できそうだけど、向きが逆。


 別のレギュレータに変えてみたらこんな感じ

 5V側が4.83V±0.14V、3.3V側が3.26V±0.09V、くらい。むしろ若干悪化した感。こっちのレギュレータのほうが新し目の見た目なんだけどな。ただ、応答性が早くなった分で、低周波側は安定性が強い。オシロの20MHzのLPFを有効にすればノイズのVppは半減する。あとはインダクタとか低ESRキャパシタで頑張るしかないのかな。

***

 USBシリアル変換のやつ、FT234X(秋月108461)を使ってるんだけど、接続が不安定。開発に使っているデスクトップ(Win11)だと短時間(数秒とか数分とか)で通信ができなくなる。PCから切断して数分経って接続すればまたつながるけど、また短時間で通信できなくなる。試しにノートPC(Win10)に接続してみたら、当面安定して動いている。Win10もWin11もドライババージョンは同じ(TeraTermのバージョンは違う)。

 FT234Xは前面パネルのUSBポートに接続していたけど、試しに背面パネルに接続してあるUSBハブに接続したら、ある程度時間が経っても正常に動作している。うーん。謎い。前面パネル用のUSBヘッダと背面IOのUSBって特に違うところってあるんだろうか? あるいはハブを挟んでいるのが関係してるんだろうか。よくわからん。まあ、安定性が悪いUSBデバイスは端子を差し替えてみよう、ということで。その点デスクトップは選択肢が多くて有利よな。マザボの背面IOとか、フロントパネルとか、あるいはPCIe増設という手もあるし。

0 件のコメント:

コメントを投稿