• ホーム
  • このサイトについて
  • お問合せ
ublox neo m8t/m8pでチープコストな
rtkを

サイトマップ

  • ホーム
  • このサイトについて
  • お問合せ

NEO M8P × 2台
1)roverとbaseにM8Pを使って、baseのM8PからはRTCM3が出力されるよう設定したので
  baseは単純にデータをパケット単位に分割して送信。
  受信したパケットを元にもどしてroverのM8Pへ流し込む。
  ごく、ごく、たまにfixしました。
  920Mhzを経由せずでも、なかなかfixしませんでした。
  M8Pの設定がどこか変なのかなあ?

こんな画面で確認

  ステータス5のfloat状態です。極たまに4(fix)することもあります。
  baseからは920Mhzで送信。

  roverとbaseをusbで直接つないで920Mhzを経由せず再確認したら
  偶然fixしました。

NEO M8T と NEO M8P
 baseのM8TからRTCM3を送信。
 なんだかroverのM8PがRTCM3を受け付けられないみたい!!!
 M8Pのステータスが「1」になってる。
 baseのM8Tの使用衛星はGPSとBeiDouのみにして仰角,信号レベルでマスクしていません。
 RTCM3でも何かが違うのかなあ?
 チープなbaseの夢があ。残念。
 もう少し勉強しよう。

思う
 M8PはM8Tと同一サイズにしているのでこの辺の性能が限界かなと思う。
 armコアのどの辺なのかは不明ですが、rtkのエンジンには多くのramも必要です。
 動作速度と消費電力を考慮しても。
 
 M8PのroverのDynamic Modelを4-Automotiveにしてもfloat状態でブレがなさすぎる。
 floatでこんな安定しているなんて、どこかの設定が変なのかなあ。

 M8Tを常はオープンスカイでなく壁ドン(マルチパス)の状態でデバッグしています。
 たまにオープンスカイな場所で確認します。
 そのせいかfix中に位置が少しづつドリフトしたり、fixする度に絶対位置が変化しています。
 どうなんでしょうか?

 最近はチープコストで基板を起こせるようになりました。
 大変嬉しいです。
 チープなパソコンがあれば、フリーのPCB CAD、英語がダメでpay palできなくても。
 部品はDキーさん。M8P以外の世界中の部品が手に入ります。

こんな基板も一緒に
 同じMCUで9軸と気圧,温度センサを載せてます。
 このMCUは12-bit ADCや、もちろんのPWM出力があります。

すばらしいソフト「rtklib」を無償で公開してしている高須先生に感謝しております。
ソースコードを触っていると、色々と思うことがあります。
世の中には本当に頭の良い人がいるんだなあと。
難しい計算式を理解できる人がいるんだなあと。
そのような人は多忙な中ソフトまでも作っちゃうだあと。

920MHz FEP01 電界強度の測定方法
 送信出力:20mW サービスエリア:1200m 回線速度:50kbps

・M8Tの基板を2枚使用します。
・1枚をroverとしてtime pulsに同期して”GNRMC”データを送信します。
・もう1枚をbaseとしてroverから受信したデータをパソコンへ転送します。
 受信OKをroverへ返信してrover側でbaseが受信していることをモニタLEDへ表示しています。
 このLEDのおかげで走行中に電波が届いているか確認出来ます。
 また、baseのM8Tの”GNRMC”データもパソコンへ転送します。
 この時にbaseのFEP01から出力される受信電界強度も付加します。
・パソコンで2点間の距離を計算し、受信データと一緒にファイルへ保存します。
 ”GNRMC”は高度データがないので国土地理院の地図データ高度を使いました。
 坂も無く平坦な道路です。
 M8Tの位置誤差×2=5mは距離の最大誤差があります。
 画面はリアルタイムに表示されます。

・測定後にファイルをexcelで開いてグラフ化したものがこれです。

ちなみに920MHzの自由空間伝送損失は1kmで91dBです。

roverとbaseでおのおのtime pulsに同期しているので送受信の時間差がが30ms程度と測定されました。
FEP01の端子をオシロで確認しても30msでした。

FEP01は-100(dBm)まで受信可能なようです。
roverアンテナ高1m,baseアンテナ高4mです。
今回の測定場所は住宅街の6メートル幅の道路です。
道路沿いの家やマンションの影響があり、良い結果ではありませんでした。
フレネルゾーンをしっかりと確保すればもっと電波が届くでしょう。きっと。たぶん。
アンテナはFタバさんのオプション品のゲイン2dBi以下です。
最初はチープなアンテナ基台を使ったのですが、ケーブル損失が大きすぎたのでヤメました。
水平面に指向性が無いのでダイバーシティ機能も未使用です。
マルチホップせず2km届くと嬉しいのになぁ。

FEP01の通信復帰について 2016/12/13

おそらく通信断後にもFEP01へデータをおくり続けているのが原因だと思う。
REG17のパケットを保持する時間を1秒に設定。
プログラムで2.5秒間受信データがない場合に"BCL"送受信バッファクリアをFEP01へ送るようにした。
結果、通信断後も復旧するようになった。

 

住宅街ではこんな感じです。

M8P 静止状態でのfix
±2cmってとこでしょう。1度fixした後のfloatは±10cmぐらいに収まりそうな感じ。

M8P 移動体での実験
 baseからroverへ920MhzにてM8PからのRTCM3をパケットに分割して送信します。
 roverにて受信したRTCM3をM8Pへ送ります。また、roverの"GNGGA"をbaseへ送信します。
 baseにて受信したroverの"GNGGA"とbaseの"GNGGA"をパソコンへ送ります。

 緑=fix,黄=float,赤=single
 なかなかfixしないし、移動すると直ぐにfloatになってしまう。
 まあfloatからfixへ復帰するのは良い事です。
 M8Pの受信感度はM8Tよりかない高いようです。周囲の構造物の影響が大きいと思います。

思う
有料のVRS配信があるけど、国レベルで無料配信してもらいたいなあ。
この周波数はRTK用って決めて無線で配信。
順天からの補正よりそっちを考えて欲しい。
あと、920Mhzの出力20mWって低すぎない。

 

M8P基板の電源
 消費電流は220mAです。cpuが高速なので大きいです。
 5V/1500mAhのモバイルバッテリーで6時間は動作します。
 MP8ならRTK演算をcpuでしないので、もっと消費電流の小さなcpuを使えますが
 M8Tと同じ基板なので仕方ありません。

M8P×2のFEP01送受信タイミング
 信号のタイミングを測定するオシロはPicoScopeを使用しています。
 2CHのみです。外部トリガ付きを買えば良かったと常々思います。

 CH1(青) base→roverのRTCM3データは1秒あたり128バイト×3パケット。
 CH2(赤)rover→baseのGNGGAが200ms間隔の5パケット。
 無線モジュールは半二重通信のようなモノで、送信と受信を同時に出来ないみたいです。
 1秒間に計8パケットを送受信するよう125ms間隔になるようにroverとbaseで
 各々ppsに同期させて送信タイミングを調整しています。
 rover→baseのGNGGAは若干リアルタイム性が落ちますが、baseで見るrover座標はモニタや
 データ評価目的なので構いません。

 

 

PIC32MZ基板
 9軸センサと気圧,温度センサを搭載した基板です。
 サイズはM8T/M8P基板と同一の40×90mmです。

 

 趣味なので手ハンダしています。
 フラットパッケージは学研の双眼顕微鏡(5倍率)で2千円以下!を覗きながやっています。

 

 ドローンを制御します。
 今や人口知能や画像処理のドローンがありますが、
 目標はスタンドアローンのぶつからない、高精度?位置制御です。

 CPUにラズパイ用放熱器が付いています。
 部品が少なくてスカスカしています。パスコンは裏面です。

 ラジコンの6CHプロポを購入しました。
 今は2.4GHzなんですね。子供の頃に車を少し動かした程度の知識しかありません。

 受信機からの信号をCPUへ接続するのにPWMだと6本も必要になるので
 受信機の基板をオシロで調べると。。。やはりシリアル信号がありました。
 115200bpsで1000~2000のバイナリデータが13CH分出力されています。
 ヘッダ5バイト,データ2バイト×13CHの26バイトで計31バイトが1パケットです。
 それにしても送信頻度が高い。20Hz程度で制御するので間引きしよう。

 6CHって4CHとボリウムが2CHなんですね。
 制御パターンを切り替えるのにボリウムが使えます。

 

ドローンのキット購入。
 250サイズ。モータはMT1698 2300KV。
 このモータで浮上するのか?と思うほど小さい。
 まあ、アクロバティックな動きをさせるわけではないので良しとしよう。
 試しにフルスロットルの信号を加えると。。。結構力強い。
 20Hz周期で2msの信号。

 

 でもバッテリやアンテナを搭載して大丈夫か心配。
 デバック初期段階なのでプロペラ無し、安定化電源から有線で電源供給。

 

 取り込んだセンサ情報と受信機のデータをパソコンへ送信して表示させてみました。

 

今後の予定
 障害物検出のセンサを考えています。
 やはり超音波が良いと思うがセンサ単品だと高価です。
 車用の後付けバックセンサが使えそうです。
 防水タイプ4つのセンサが安い。
 駆動と受信増幅回路は軽量化のために作らないといけない。
 1つのスピーカ兼マイクを使って送信と受信を時分割制御。
 更に4方向を時分割。
 単一周波数なので干渉を避けるよう、とにかく時分割。

 


思う
 子供の頃の価格の何分の1かの価格で色々な物が買える時代になりました。
 グローバル化って凄いですね。
 デジタル化とアクチュエータ点数削減の電子化も影響しています。

 初めにマルチ・コプターを作った人は凄いですねえ。
 原理はシンプルなのですが、製品化出来たのはバッテリーの進化があってですね。
 それでもエンジンのヘリに比べて飛行時間が短い。
 飛行時間を延ばすためにバッテリを沢山積んで重くなるので更にバッテリが必要で。。。
 
 フィードバック制御をする時に倒立振り子を思い出します。
 何事も原理を理解すれば応用ができます。

 ラジコンが趣味ではなく、あくまで電子工作が趣味なので変な事が記載される時があっても
 大きな心で笑って許して下さい。

 

 

バックセンサ
 クリックすると次の日に荷物が届きました。
 日本の物流は凄いですね。
 そして価格、信じられません!2千円以下です。

 基板を調べると、よくある40kHz超音波センサ送受信回路でした。
 だたし、コイル?のようなものが載っていて高電圧で駆動していました。
 マイコンは型番が印刷されていませんでした。PICのような感じがします。
 C国製の基板はチップマウンタやリフローはしっかりしていますが、手はんだ部分がダメです。

 

 空気中における超音波の伝搬速度は 331.5+0.607T(m/s) です。
 2.2m×往復分2÷(331.5+0.607×20)=12.8ms

 

ch1(青):駆動信号 ch2(赤):受信信号  電圧×10レンジ

 12.8msのところに受信信号(ch2赤)が。。。無いですね。
 距離の表示が0.1m単位なので切り捨て表示とすると2.29mまでなので
 13.3msあたりに立下り信号が出力されています。
 対象物までの距離を変化させると、それなりの時間差で出力されました。
 やはり対象物の角度で未検出になるのはしょうがないかな。

 基板単体でみると40×80mmなので送受信回路として使用する事にしました。
 表示部への出力はシリアル信号ですが調歩同期では無く、表示部ロジックでのS/P変換で、
 表示ビット数しか出力されていませんでした。
 
 基板を改造して、受信アナログ出力(0-5Vのほぼデジタル)と
 出力順番を判別するためにch1の駆動信号を出力するようにしました。
 それと、電源5V仕様に変更して、長いセンサケーブルを短くする。
 
 音波距離測定モジュールを4個買うよりチープに済みました。

思う
 信号発信から受信までの時間差で距離を測る。
 第二次世界大戦中の電探が頭に浮かびました。
 測距離にVL53L0Xとかも考えたのですが、ビームの広がりがデータシートに記載されいますが、
 実際の指向性が不明だし、高分解能も不要なのでヤメました。

 

 

2017/01/04

ドローンのデバッグ
 チープな環境でデバッグしています。

 


 雑貨類は近所の百均で購入しています。
 へその緒が沢山繋がっています。
 前方にデバッガとシリアル、後方に電源。
 更に平ゴムの足かせ。ハンチングして暴れた時の安全対策です。

 10Aの外部電源を使っていますがスロットル開度60%で電流不足になってしまいます。
 また、モータのパワーはあるのにプロペラが悪いのか推力不足を感じます。
 3枚ペラのピッチが大きいモノに変更したいです。

 最初にジャイロを使わず素の制御をしました。
 スロットルの信号を4つのモータへそのまま出力すると。。。
 これが意外な事に浮上します。
 4つのモータの回転数とプロペラの推力が均等なのでしょう。
 
 次にヨー,ロー,ピッチをモータの配置と回転方向を考慮して分配しました。
 プロポのスティックの方向に前後左右ドローンが移動し、旋回しようとします。
 正常に動作しているようです。

 ここで9軸センサの登場です。
 姿勢角度推定にジャイロと加速度を使ってみましたが。。。
 ダメです。ハンチング、発散、上手くいかない。
 ここかポイントなので詰めていきます。


 制御周期はサーボ出力と同じ20ms(50Hz)に短く変更しました。
 角度推定はジャイロと加速度を合成しました。
 ヨーはドリフトを最小二乗法で補正しました。
 
 P(比例)制御しかしていません。
 パラメータを甘く設定して何とか水平?浮上しています。

 

 

 浮上中にリアルタイムでセンサ情報をグラフ表示しています。
 FR,FLとRR,RLのサーボ出力の差は繋がっているケーブルの重さの違いです。

 購入したドローン・キットにフライト・コントローラCC3Dが付いていました。
 制御出力がどの程度なのかを調べようとしましたが、パラメータの設定が上手くできなくて
 浮上すらしませんでした。(TT
 CC3DはMPU6000が載っていてDMPを使っているのかヨーのドリフトがありません。
 今回制作した基板はMPU9250を載せていますがDMPを使っていません。
 ネットではMPU6500のDMPにつては情報があるのですが。。。
 難しそうです。

 

思う
 ドローンは面白い題材ですね。
 とても勉強になります。
 まだ未完成ですが続けていきます。

 

xBee
 ドローン本体からのダウンリンクを無線化しようとxBeeを購入しました。
 2.4GHzの方が920Mhzよりデータレートが速いと思ったのです。
 xBeeは種類が沢山あったのですが、ZB S2C RPSMAにしました。
 まだ実験していませんが1200m届くようです。

 初めにZigBeeの機能でコーディネータとエンドデバイスの通信をしましたが、送信から受信までの時間が
 長くて1,000byte/秒ぐらいしかデータを送信できませんでした。
 結局、XBEE802のポイントトゥポイント(1対1)にして8,000byte/秒の通信が可能になりました。

青)送信信号 (赤)受信信号  20ms間隔 115,200bps

 


 側面にxBeeを取り付け。超音波センサも付けてます。左右の干渉を減らすよう角度を付けてます。
 正面のカメラが付く場所にも超音波センサが。
 お腹の下に超音波センサ駆動回路。
 基板とラジコン受信器はデバッグ中なので仮止めです。(^^;

 

パソコンに接続する側はUSB-シリアル変換と一緒にケースへ入れました。


SDカード
 PIC32MZ基板にはマイクロSDカードが載っていてデータを保存しています。
 本来は MPLAB Harmony に SD Card があるのですがSPIを制御してアクセスしています。
 SDカードはルネサス系のCPUでも使った事がありました。
 FatFSっていうChanさんの作成したすばらしいライブラリを使うと簡単にSDカードが使えるようになります。
 何かライセンスの様なのがあって2GBまでのSPIモードしか無料でアクセスできないと記憶しています。
 書込み速度を気にしていましたが10KB/秒以内なら余裕そうです。


MPU9250
 9軸センサにInvenSenseのMPU9250を使っています。
 フライトコントローラCC3Dも同メーカのMPU6000のDMPを使っていました。
 角度の推定にジャイロと加速度センサでセンサ・フュージョンしようとしましたが、
 振動で加速度が乱れて使い物になりませんでした。
 Kalman Filter や Madgwick Filter も調べましたが
 結局、MPU9250のDMPからクオータニオン(四元数)を取得してオイラー角に変換する事になりました。
 この変換は単純に行うと地面固定座標系になってしまい機体の方位(yaw)が90度変わった特に
 pitchとrollが入れ替わってしまいます、センサ固定座標系の変換が必要でした。
 加速度が乱れていても良い感じの角度が得られるし、gyroのドリフトも関係ありません。
 3KB程度のコードをMPU9250へ流し込むとDMPが動作するようになります。
 InvenSenseのHPからはドライバをダウンロードできなかったけど、SparkFunさんからゲットしました。
 Arduino用だったのでI2C部分を変更しました。
 クオータニオンはゲームなどの3Dプログラムや飛翔体の姿勢計算に使われています。
 やはり難しい計算式は理解せず、プログラムの実装のみをしています。
 

 良い感じの角度が得られたので姿勢制御もI制御を加えて偏差が残らないように変更。
 基板はリジットにマウントできないっぽいです。
 100均で購入した地震対策ゲルを使っています。
 9軸センサ部分だけ別基板にした方が良かったかなと思います。


思う
 2.4GHzのモジュールを使う事になってしまったので、ラジコンの送受信部分が無駄な様な気がします。
 プロポのケースとジョイスティック部分を使用してxBeeと手ごろなCPUを使いたくなります。

 受信器のアンテナは90度に設置してとなっていましたが、プロポのアンテナと平行になるんだろうか?
 フレネルゾーンを確保するようにプロポを垂直に持たないといけないのかな。
 基本的に水平飛行ですが多少の運動を考慮して受信器のアンテナは昆虫の触角のようにV字に配置してます。

2017/1/31

 

プロペラ
 ドローンのプロペラは消耗品です。
 足かせの付いた状態でデバッグしていても2枚折りました。
 キット付属は5045の2枚ペラでしたが、5045の3枚ペラを4セット購入しました。
 3枚ペラにしたら振動が劇的に減りました。
 やはり2気筒より3気筒の様にかなあ?

リポ・バッテリ
 2200mAhの2セル(7.4V)を購入。
 CPU基板とラジコン受信器に5Vが必要なのですが、DC/DCを使用せず3端子レギュレータにしたので
 あまりバッテリ電圧が高いと損失になるので2セルにしました。
 デバッグ中は外部電源ですが電流不足なので3セル相当の12Vを印可しています。
 実際にバッテリで動作させてみたら7.4Vで十分に動作しました。電流を流せるからでしょう。
 2200mAhで8分ぐらい飛びました。
 スロットルに余裕があるので一回り容量の大きいバッテリにして飛行時間を延ばしたいです。


GPS
 先ずはuBlox製チップのGM-8013(NaviSys Technology)を接続してNMEAを入力してみました。

 このモジュールはM8系で、RTKLIBを一番最初に実験しようとした時に購入したモノです。
 RTKLIBには使えませんでした。
 uBlox製チップなのですが、SAWがモジュールによって違い、GLONASS (GM-8013)とBeidou (GM-8014)があります。
 M8Nの様にGLONASSとBeidouの両方に対応出来ません。どちらか片方のみです。
 GLONASS版を買ってしまったのでアンテナもGLONASS対応にしてRTKLIBをしようとしましたがfixしませんでした。
 原因は不明です。カーナビ用のチープなアンテナとGLONASSだったのがいけなかったのかなあ。
 RTKLIBはGLONASSに対応していますが、なるべくBeidouを使った方が良さそうです。
 今は多くの国から衛星が上がっていますが、GLONASSは米国に対抗して方式が根本的に違うのです。冷戦時代でしたから。
 他の衛星はCDMAっていう1つの周波数にprnコードでスペクトル拡散しているのにGLONASSは衛星によって周波数を変えています。
 2台の受信を使うRTKLIBでは受信器クロックの誤算が影響するようです。
 日本ではBeidouを使うのが無難です。見える衛星も多いですしね。

 RTK精度のM8T基板とM8P基板がありますが、fixしていない状態の時にある程度の自己位置推定を行いたいと思っています。
 それで普通のGPSから始めました。

 

 浮上時に姿勢が乱れています。
 右側のドローンの絵はプロペラの回転数によって色が変わります。
 また、4つの平均との差も表示しているので、どのプロペラが強く回っているのかが一目瞭然です。
 下の方にGPSのGNGGA(位置情報)とGNVTG(速度情報)からのデータの一部を表示しています。
 パソコンへは送信していませんがGNZDA(日時情報)もモジュールから出力させています。

 

 7秒間で浮上と着地をしています。
 イイ感じです。

 ±2度の範囲で安定飛行しています。
 プロペラが良い音色を奏でています。

デバッグ進行中
 ドローン本体を縛っていた足かせから一本釣り方法に変更しました。
 バグやハンチングした時には咄嗟にスロットルをオフにして竿を引き上げます。
  ドローンが釣れましたよ。
 調子良く浮いている時には 犬の散歩状態 です。
 ドローンはプロポからの指令がニュートラルの時に姿勢を水平にする制御を行っています。
 しかし、水平だけと位置制御をしているのではないので前後左右に移動してしまいます。
 更に制御が甘いのか移動量が多い様な気がします。
 
 ヨー軸の制御も角度に対するPIDにしました。
 ジャイロだけのフィードバックでは進行方向がズレていってしまいます。

 距離センサはモータが回転すると動作しません。
  はあ。
 原因はモータからの電気ノイズでした。
 反射した超音波の受信信号レベルは凄く小さいのでオペアンプ2段で増幅しています。
 受信信号レベルと同じレベルのノイズなので誤動作していました。

 

MPU9250の地磁気センサ
 室内でもしっかりと方位を得られます。
 ジャイロベースのDMP演算らしいのですが細かい振動があるとクオータニオンを使っていてもyawが少しづつドリフトしていきます。
 そんな時に地磁気センサはありがたいです。

 

 
思う
 凄いチップが日本から出るようです。JRCのセンチメータ級精度を実現(RTK-PPP)。
 これが安く発売されれば屋外での測位が変わると思う。
 でも2018年4月より4機体制でサービス開始予定の準天頂衛星ってまだ1年以上先ですよね。
 チップは2018年秋ですかぁ。
 カーナビ向けなので更新レートは1秒かな?
 uBloxのM8系を使っていても10Hzだと遅いなあと感じます。
 20Hzが欲しいですよね。
 欲を言えばGPS航法メッセージ20msの50HzでRAWデータのみ出力して欲しいです。

 平和利用のみの衛星のは打ち上げに時間がかかるようです。
 C国の衛星数には驚きます。

 

2017/2/15

 

距離センサ

 初期の距離センサは超音波でしたが、ノイズの問題があり使用を断念しました。
 光学式のVL53L0Xにしました。測定距離は2m、分解能1mmです。
 これを4つ前、下、左、右に向けています。
 屋内での障害物検知とホバリング時の位置制御に使います。

 このVL53L0XはI2C接続なのですが、レジスタマップ等の資料が見つかりません。
 メーカからはAPIがダウンロード出来ます。
 同じI2Cに4つ接続が可能なのか不明です。面倒な回路の追加とsyundby機能で使えるみたいです。
 ここは距離センサ専用にCPUを使って測定値をシリアル出力だせることにしました。
 手持ちにあったCPUでI2Cが4つとシリアル1つなのはルネサスのRX220でした。
 SCIeなら簡易I2Cモード4つと残り1つをシリアル出力に使えるなあと思ったのですが。。。
 デバッグをE1エミュレータで行なっているのですが残りのシリアルがデバッグ用に使われています。
 ROM化した時にはシリアルとして使えるけどデバッグしながら確認をしたいし。
 仕方がないのでI/O ポートでを115200bpsでオンオフしました。
 I2C専用のRIICは表示器を接続した時に使います。

 

 

 

重量を軽くしたかったのでケースに入れませんでした。


 250×330のアマゾンの空き箱にセンサを入れて箱の中での位置を演算してみました。
 VL53L0Xは50ms間隔で出力させ、4回移動平均した値で演算しています。
 cosで計算するのでyawの角度は2つ存在してしまいますが、地磁気センサで何とかなります。
 狭い空間内における位置検出が出来ます。

 

思う
 もっと遠くの距離まで測定したいです。5mぐらい欲しい。
 光学レンズも無い変位センサでこの大きさだとこの距離が限界なのかなあ。
 
 

2017/02/21

 

やってしまいました。
 インフルエンザから復活しいない状態で「4方向距離センサ」をドローンに組み込んで電源投入したところ
 溶接のスパッタの様な火種と煙があああ。5V回路に12Vを10Aを流しました。
 CPUボードとVL53L0Xはパケージが溶けていました。


気分転換に
 昨年の夏に発注していたMAX10がやっと入荷しました。忘れられていたそうです。
 基板を起こしていたのでMAX10待ちだったのですが今となってはこの基板の出番はありません。
 PIC32MZに変わりました。

 

 例のごとく裏面にはパスコンとプルアップ抵抗を載せています。
 MAX10は144ピンなのですが、パッケージ裏面に金属パッドが露出していてGNDに接続しないと動作しません。
 一般のCPUと違って出力ピンを自由に割り当てられるのでパターンを引くのは楽です。


 MAX10はアルテラのFPGAの中でもコンフイグレーションROM内臓でADC入りで単電源です。
 CPUにNIOS2(フリーは100Mhz)を使うと良いかなと思ったのですが。
 やはりFPGAを使う目的はロジックをverilogで組む回路が必要な場合や
 CPU周辺のペリフェラルの数が極端な場合、例えばシリアルが10CH欲しいとか。
 基板には128MbitsのSDRAMを1つ載せましたが16bitアクセスなので遅くなってます。

 NIOS2を触って感じた事は割込みレスポンスが遅い事です。
 割込み信号から割込み処理ルーチンに飛んで来るまでの時間が掛かります。
 ロジックを組んでラッチ、もしくはFIFOを組込む必要があります。
 インターネット上にはFREEや参考になるverilog集が上がっています。ありがたいです。

 

 ちなみにデバッグツールはC国製の1200円のパチモンUSBブラスタです。
 NIOS2はeclipseでデバッグします。
 パチモンUSBブラスタは緑色の基板をゲットしないと動作しません。
 失敗して購入したモノとの違いは不明でした。

 I2CとUARTをverilogで組んでコンポーネント化してQSYS上でNIOS2へ接続しています。

 

思う
 ロジックをソフトウェアで組めるなんて凄いですね。楽ちんです。
 同期回路とかハザードとかを考えなくても良いです。
 無償環境で十分です。

2017/03/05

距離センサ
 距離センサを作り直してダウンリンクのデータに載せました。
 ボディの前方に設置しようとしましたが、左右のセンサのビームがモータに当たってしまいました。
 ギリギリ大丈夫かなと思ったのですが残念な事にボディ下に設置しました。
 PWM3(スロットル)を上げると距離D(高度)が大きくなっています。

 

 使用している気圧センサLPS25Hは1/4096hPaまでの分解能があります。
 しかし、距離D(高度)と気圧の関係を見ても300mm程度では使えません。

 


 ここから位置制御を行っていく予定です。
 ・高度を一定にするモード
 ・自動で浮上と着地
 ・障害物回避
 等を考えています。

思う
 一般的なフライトコントローラはGPSの高度と気圧センサを使用しています。
 何故高度センサ(距離センサ)を使用しないのだろう?
 普通のGPSでは高度の誤差が水平方向より大きいし、気圧センサは相対的な高度だし。
 浮上は良いけど着地がスムーズに行えないんじゃないかなあ。

 

2017/03/13

ぎり可聴音波の測位
 MAX10基板を起こす時に参考にMAX10-FB基板(CQ出版)を2枚も購入しました。
 なぜ2枚かと言うと、初めに基板単体で買ったのですがホームページ等を探しても回路図が無く、
 仕方なく雑誌の電子工作キットを買い、付属のDVDから回路図を得ました。
 入出力のピン番を知りたかっただけなのに無駄な出費をしてしまいました。
 結局2枚の基板が転がっていました。
 それと、何年も前にFPGA GPS用に買った DE0-Nano board(Terasic)もあったので何かに使えないかと思案したところ
 「スペクトル拡散ぎり可聴音波による屋内測位」とかに良いんじゃないかとなりました。

 原理はGPSと同じです。
 ぎり可聴音波18.6KHzを搬送波として、5bitのPN符号でスペクトル拡散します。
 受信側にMAX10-FBを1台、送信側にMAX10-FB+DACとDE0-Nano+DACを使います。
  18.6kHz(53.7us)×4パルス×31chip=6.67(ms)
  1chの測位誤差は1/2chipの107.5(us)で37(mm)
  3次元測位した時には誤差は大きくなります。
 ぐらいでどうでしょう。

 超音波にしなかった理由は出力するツーイータが高いからです。
 近所の100円均一で買ったMPプレーヤ用のアンプ付きスピーカでどこまで周波数が通るかを実験しました。
 DDSで20kHzを作りアンプ付きスピーカから出力、パソコン外付けマイクで入力した信号をFFTしてみました。
  減衰がありますが20kHzまで使えそうです。

 


 周波数が18.6KHzになったのは31chipの絡みです。
 verilogにてキャリア用NCOや相関器、CODEジェネレータ等を作っています。
 高さを一定としても送信側に3台必要なのでMAX10-FBをもう1枚買わないといけないかなあ。
 それと、3台の送信器の同期をどうするか。
 有線or赤外を使おうか。
 マルチパス問題が出そうですが試してみます。

 

2017/03/22

ぎり可聴音波の測位 その2
 周波数:18.6kHz
 送信,受信:32倍サンプル 595.2kHz 分解能12bit
 相関器:符号付8bit 3968サンプル=32×4×31
 搬送波4波/chip
 31chips/code
  5codes/bit
  メッセージ:30bps
 30bits/word
 frame = 2words = 2sec

 送信器のDA出力を1chだけの受信器のAD入力に接続してメッセージがデコード出来るようにしました。

 


  ch1:送信器code先頭 ch2:送信器DA出力

 搬送波4つで綺麗にBPSKしています。
 送信時に31chipのプリファードgold系列とメッセージにより送信波位相を180度変化させています。
 gold系列は複数の送信器を設置しても混信」しないようにしてくれます。


  ch1:送信器frame先頭 ch2:受信器メッセージのデコード信号
  受信器デコード信号は送信のタイミングから1bit(5code)分遅れます。

 受信器では31chip(1code)毎に割込み処理にて相関値を取得しています。
 GPSでのソフトウェアによるcode信号と搬送波信号の追尾をそのまま流用しています。
 フィルタの時定数もそのままです(^^
 搬送波移送のPLLが正常に動作すると相関値IP(同位相)にメッセージが現れます。
 5codeでメッセージ1bitとしてソフトウェアにてメッセージをデコードしています。
 メッセージのpriamble8bitとparity6bitはGPSの仕様と同じにしました。
 メッセージの内容は2秒カウンタ値と送信器の位置X,Y,Zです。
 このメッセージを秒単位で切りの良い値にするために31chipが絡んで搬送波が18.6kHzになっています。


 FLLの段階から相関値IPにメッセージが出ています。ドップラーが無い状態だからでしょうか。

 メッセージがデコード出来たのでcode数カウンタとcode位相カウンタを取得して音速を乗じると疑似距離が計算されます。
 4chの疑似距離と送信器座標から受信器座標とクロック誤差が計算されます。
 


 受信器4chでのFPGAコンパイル・サイズ
 


 贅沢な相関器だったのでサイズがギリでした。
 ch数を増やすなら相関器をスリムにしないといけません。

 

思う
 FPGAによる1周波GPSレシーバは外国の大学生が作りました。優秀ですねえ。
 このGPSレシーバはドップラ周波数とキャリア・カウントが出力されるので、かなり頑張ればRTKに使えるかもしれません。
 beidouへの対応が大変です。
 日本ではえびぬま先生がMAX2769にアレンジしたり、ソフトウェアでの信号追尾などをされていて雑誌RFワールドに載っています。
 DS-CDMAの大変良い勉強になりました。
 インターネットで超音波測位を調べると基礎実験の事はhitしますが、実用化されているのかは調べていません。
 アナログ信号に追従するスピーカが大変そうです。
 100円均一で購入したスピーカはサイン波なら18.6kHzでも追従しましたが、BPSKで位相が180度変化した時に正常動作しませんでした。
 やはり屋内測位には無線タグが良さそうです。

2017/03/28

ぎり可聴音波の測位 その3
 疑似距離の取込み用ハードウェアが正常に動作しているかを確認するために
 1台の送信器から4ch分の送信信号を合成した信号を出力するようにしました。
 簡易シミュレータですね。

送信機4ch FPGAコンパイル・サイズ

 

送信機4ch信号


 受信器座標と4ch分の送信器座標から各chの信号を遅延しています。
 距離に応じた信号レベルの減衰は行っていません。
 また、gold系列g2レジスタの初期値を変えて4chのコードを変えています。

 

ch1とch2のchip信号

 

 受信器内部時計と受信信号との時間差から4ch分の疑似距離を計算しています。
 受信器にはバックアップした時計が無いので測位した時の送信器メッセージ時刻から初期値を決めています。

受信機内部演算状態


 受信器からシリアルで演算状態を出力しました。
 sun(ms)に表示されている相対的な時間差は正しく演算出来ています。
 送信器でシミュレートしている受信器座標はx=3,500 y=6,000 z=500です。
 受信器座標の演算結果が間違っています。
 ガウスの消去法がいまいちで未知数4番目のクロック誤差が計算できていません。
 疑似距離に一定の値が加算された状態で未知数3の計算になっています。
 さらにepochカウンタの1bit誤差問題と信号追尾のロックが外れやすい問題も残っています。
 もう少し頑張ります。

 

思う
 今の世の中は高度な技術が細分化されているなあと思います。
 誰でも手にしている製品の中身は複雑で動作原理も全く理解出来ない物が多いです。
 自分はこの分野なら知っている場合でも、他の人がやっている分野は全く分からない。
 CDMAの基礎が理解できました。
 実際の製品ではもっと複雑で高度な技術が使われていると思います。

2017/04/03
ぎり可聴音波の測位 その4

 ◎3次元測位演算とクロック誤差
 未知数4のガウスの消去法は送信機の配置が関係していました。
 GPSの測位演算をそのまま使用しようとしましたが、送信機座標が長方形に配置されると演算出来なくなります。
 現状では2次元までの測位になっています。
 もう少し演算方法を調べてみます。
 それが解決すれば受信機時計の補正が出来て演算結果も3次元になります。


 送信機シミュレータ


 高さがダメです。
 ほんの少し受信機時計がズレていると高さが正しく演算出来ません。
 snrは相関値が最大の時を40(dB)として表示しています。
 dopplerは送信信号のドップラ周波数を表示しています。今回のシミュレーションでは0になりなす。
 rは演算結果の受信機座標で計算した送信機までの距離(mm)です。
 errorはrと疑似距離との差(mm)です。受信機時計がズレていると大きくなります。


 2次元での演算誤差


 受信機が静止した状態でX,Y測誤差は±25mmです。
 静止していると言っても送信機シミュレータからは静止状態の送信信号が連続して出力されています。
 その信号に常時追尾しているので疑似距離がバラつき、演算結果の誤差になります。
 まあ実際に音波の状態にすると信号の劣化やマルチパス等の誤差が増える要因がいっぱいです。

 移動体での検証をするには送信機を改造しないといけません。
 現状はシミュレーションする遅延時間分遅らせたリセット信号を各CHのモジュールに1回のみ入力しているだけです。
 移動体でのシミュレーションをするには受信機座標が変化した時の送信信号の変化をスムーズにしないといけません。
 それとドップラ周波数の変化もスムーズに。
 このスムーズっていうのが面倒です。
 少し試してみましたが、0.1m/sで移動開始すると信号追尾のロックが外れてしまいます。
 フィルタの時定数を変えてもダメでした。
 周波数の変化で遅延時間が変化しますが、各chの遅延時間の変化に誤差があり1点の座標を表せなくなります。
 この辺が簡易シミュレータです。

 ちなみに演算時間は300msです。
 NIOS2eの89.28MhzでFloting Point Hardware無しなので非常に遅いです。
 容量が足りず載せれませんでした。

 ドップラの検索範囲は30Hzステップで±300Hzです。
 搬送波18.6kHzに5m/sの速度で移動中の受信機を初期補足します。

 

思う
 MAX10はFPGAのconfigurationとNIOSのソフトを格納するFLASHが内臓されていますが、
 10M08SAE程度では直ぐに容量不足になってしまいます。
 あくまでFPGAに内臓可能なCPUってことで、単体のCPUと比べると色々劣ります。

 

2017/04/10
ぎり可聴音波の測位 その5

 なんとかなりました3次元測位。嬉しいです。
 フィルタ処理の無い生データでX,Y方向で±10mm、Z方向でも±15mm以内です。
 センチメータ級です。
 クロック誤差はー35usありますが、送信波18.6kHz(周期53.8us)ですので、この程度でしょう。
 受信機時計は20サンプルに1回の補正を行っています。
 GPSと違ってPPS信号を出力する訳では無いので受信機時計の補正は必要ないのですが。

 

 演算時間が300msだったので受信機をcyclone5 5CSEMA4U23C6へ載せ替えてNIOS2fへ変更しfloating point2を
 使用したところ、9.2msに短縮しました。33倍に速くなりました。
 20ms(50Hz)の測位ユニットの出来上がりです。
 Total logic elementsが4,466/15,880(28%)でした。


 cyclone5が手持ちにあったのを忘れていました。
 on chip ramの容量が大きくてプログラムが全て入りました。
 でもオーバスペックのFPGAです。cyclone5はARMを使用するシステム用なのです。

 ネットで調べるとUWBっていうナノ秒の短いパルスを広帯域で電波で送受信するシステムがありました。
 精度は30cmだそうです。
 電波を使うのには法律が絡むので、ちょこっと実験する訳にはいきません。

 

2017/04/18
ぎり可聴音波の測位 その6

静止状態で動作するようになったのですが、移動体での検証をしようと送信信号にドップラを加えると
直ぐにロックが外れてしまいます。
ハードウェアでは面倒なところがあるので、送受信の全てをソフトウェアでシミュレートする事にしました。
ソフトウェアなら任意のタイミングで送信と受信を停止して続きから実行できます。
ハードウェアで作った部分の動作も一時停止して確認できるようになります。


コード信号の位相とメッセージのデコードが表示されています。
4つの送信機信号に同じドップラを加えているので座標は正しくありません。
あくまで信号のロックとデコードのみ検証しています。

音波は電波と違い搬送波周波数が低いのでドップラの比率が大きくなります。
コード・ロックをシリアル・サーチからchあたり62相関器のパラレル・サーチにしました。


なお、静止状態ではクロック誤差が2us以下に収まりました。

 

2019/09/03

久しぶりに更新します。資金が底をついて停止していました。

 

超音波測位について
 良いツイータFT17H(FOSTEX)を1つとD級アンプを購入しました。
 試しにスピーカからの音を外付けマイクで受けてFFTしてみると18.6KHzでも余裕で通ります。
 でも耳には聞こえません。


 とりあえず、1個のスピーカから4ch分の合成信号を出力してマイクで受けた信号で測位が可能か調べる予定です。
 マイクは秋月の超音波センサ65Khzまでです。
 4つ別のスピーカを使う時には全方位マイクにしたいなあ。
 全方位カメラってあるけど、全方位マイクってあるのかな?
 マイクを水平に設置して、その上に円錐状のモノを逆さにおけば良さそうかな?
 音を90度方向転換させれるのか?
 周波数が高いので反射はし易そう。


FPGA画像処理
 最近、FPGAでの画像処理に興味があります。
 ターゲットにドローンを着地させる場合に画像処理がどうかなと思っています。
 ターゲットの重心を計算してX,Y方向の制御にフィードバックしたいよ、みたいな。
 モニタ用にHDMIでテレビに画像を表示しようと思ったのですが、仕様が難しくて諦めました。
 結局、FT232HのSyncronous245FIFOモードでパソコンへ送信する事になりました。
 640×480の画像を30fpsで送るのには17.6MB/secなのですが、パソコン側の受信ソフトで間に合わないのです。
 半分の15fpsに落としましが、FPGA内部での処理は30fpsで行ないます。

 1万円位の予算です。5千円でカメラとFT232Hを購入しました。
 MAX10の基板は超音波で使っているのを使い回しています。
 中身を書き換えると色んな事が出来るのって素晴らしいですね。
 画像のフレームメモリは基板上の32MBのSDRAMです。
 数百円のSDRAMですが、30フレーム以上入ります。


 QSYSでSDRAMコントローラをNIOS2のCPUとAvalonMMで接続しますが、ここに自作モジュールのAvalonMM Masterもくっ付けています。
 CPUからのアクセスはデバッグ時にメモリダンプするためだけなので支障はありません。
 何かセレクタが必要かと思ったのですが、QSYSでの接続は単純なワイヤードORでないようです。でも3ステートでもないし。謎です。
 ちなみにlineBuff1024は1ラインだけをDPMにして、uart_avalonで送信しています。
 I2C_avalonはavalon用に作ったI2CモージュールでOV7670のパラメータ設定に使ってます。
 そして、書込み&デバッグには「ぱちモン・ブラスタ」1200円。


 参考にしようとしたFPGAマガジンのはVHDLファイルでした。VHDLが流行ってるの?
 verilogしか知りません。ゼロから作る事になりました。
 モジュール毎に作るってはタイミングを検証するのにQuartus9.1でやってます。
 ちょこっとやるにはWAVファイルが楽ちんです。

 

 まだ、制作途中です。
 OV7670の設定がダメなのでカラーバー表示です。
 インクリメントのテストデータも表示来ているので、FPGAの回路はOKです。


 カラーバーと砂の嵐な生データ


思う
 先立つモノが無いと何も出来ません。
 そして時間も。
 お金があって、時間もある人が羨ましいです。

 500W程度の発電機を作ってみたいし。
 ハイブリッドなドローン用にね。
 エンジンで発電してモータで飛んでみたい。

 昨年ぐらいまでエヌえっちケーで「なんとか大実験」って番組がありました。
 好きな番組だったので何度も見ていました。
 何でも実験してみるって心意気が好きですね。
 やってみなくちゃわからない。

2017/09/17

FPGA画像処理 その2
 バラックでデバッグしていたのですが、基板を起こすことにしました。
 HDMI出力したいのですが、DIP化したHDMIコネクタ基板のパターンがあまりにも不等長だったのです。
 それなりの周波数なのに、信号線もペアになっていないし。
 たまに見かける「パターンが繋がっていれば良し」的な基板でした。
 2日かけてパターンを引いてSサイエンスさんに注文すると、何と5枚で2,469円(送料込み)でした。
 安いですねえ。送料と振込手数料が高くて基板に申し訳ないです。

 表と裏だけの2層基板なので、表をGND、裏をプラス電源にベタっています。
 裏面のVCCベタが特性的に良くないかも知れませんが、パターンを引くのに楽ちんなのです。
 Sサイエンスさんでは基板データをアップロードした時に基板のイメージが表示されます。
 ガーバービューワーと違って頑張ってパターンを引いた甲斐があったと感じる瞬間です。

 

 基板サイズは60×60です。
 残念な事にカメラを基板左右のセンタへ持ってこれませんでした。
 その辺が2層の限界なのかなあ。インナープレーンで電源繋ぎたいよう。
 1608サイズの抵抗を使うようにしました。2012は抵抗値を目視できたのですがねえ。

 FPGAは重心等の計算とHDMI出力に容量アップした10M25にします。
 ADCが入っていない10M25SCEは内臓FLASHが小さいようです。
 10M25SAFって無くなっているのか!
 MAX10は普通のCPUに対抗しようとしたみたいですが、
 内臓ADCは不要なのでその分をFLASHやRAM容量UPして欲しい。
 ADCが必要なら外付けのを使いますよ。
 CPUが必要なら普通のCPU使います。
 FPGAにはFPGAの仕事があります。
 MAX10の良いところは高いEPCSが不要なのとシングル電源なとこです。


思う
 BGAって趣味で手が出せないですよね。
 前は144ピンより多いピン数のもあったのになあ。
 144ピンでSDRM使うとピン数が足りなくなってしまいます。
 本当はADV7513を載せたかったのです。
 家庭用リフロー機が欲しいです。安いのが世の中に無いのかなあ?
 基板は目に優しい緑が一番です。パターンを追い易いし。
 自称「週末エンジニア」、緑色担当しています。

2017/10/01
FPGA画像処理 その3
 基板と部品が入荷したので早速マウントしました。
 ハンダの表面張力が強いのでフラックスを使えば普通の0.8mmでハンダ付け可能です。
 クリームハンダは不要です。
 肉眼では見にくいので学研の双眼顕微鏡を使っています。


 カメラは愛tendoさんです。
 写真の撮り方が悪くてカメラ基板がはみ出していますが、実際はシルクの位置に収まっています。

 シルクが見切れている箇所が多いです。
 パターンを引き終わった後で部品名や値を移動するのですが、その頃には疲れていて
 まあいいやモードになっています。

 電源を入れてFT232H、MAX10M25とSDRAMが正常に動作する事を確認。
 後はFPGAの中身作るのみ。

 今回はMAX10M25をDキーさんでなく、店頭受け取り可能な別のとこに頼んだのですが、
 高くて遅かったです。
 ざくっと部品代が1万円になってしまいました。高いです。

 

思う
 グローバル化の影響で日本の柱の一つである電気業界は残念な状態になってしまいました。
 日本メーカの製品でもメイドイン中国のがとても多く、日本製の方が少ないと感じます。
 残る自動車業界も電気自動車化の波に上手く乗れるか心配です。
 自動車業界はサプライヤのピラミッドが大きいので中国での生産を行うと、どうなってしまうのでしょうか。
 雇用問題もありますが、でも個人的には同じ商品なら安い方がありがたいです。

 

2017/10/08
FPGA画像処理 その4
 だぶんダメと思いつつもPソニック製テレビのHDMIへ信号を送ってみると
 「信号がありません。」と怒られてしまいました。
 やはりDVI仕様の信号じゃあテレビへの表示は無理でした。
 ワンクリックでラズパイ向けの7インチHDMIモニタを入手。安くて早い。
 そしてHDMIへの表示が無事にできました。


 OV7670からのリアルタイム画像をモニタへ表示しています。
 って、これはFPGAマガジン13の「MAX10+カメラ・モジュールで動き成分をディスプレイ表示」を
 移植しただけのものです。
 OV7670のレジスタ設定とモニタの動作確認のためです。
 オリジナルを頑張って作らねば。

 お、画像が90度回転していると思いきやカメラ基板の上方向を勘違いしていました。
 まあFPGA基板は60×60の正方形なので取り付け方向を変えればOKです。

 

思う
 ALTERAのデータシートって使用例が載ってないので理解できません。
 あの資料だけでIPを使える人って凄いですね。
 先人の能力に感謝します。

 

 

2017/11/17
FPGA画像処理 その5
 週末エンジニアは歩みがとても遅いカメさんです。
 どうしてもAnalonMMのSDRAMコントローラをバーストできませんでした。
 先人のSDRAMコントローラを使用させていただき、画像処理部分のみを作成しました。

 動作確認用にOV7670からのデータをテストパターンに変換させるロジックを作成しました。
 
 重心計算は面倒なのでターゲットのデザインで演算を簡素化しました。
 X方向は青色の積算最大値を、Y方向は赤色を使っています。


 X方向とY方向に各色で積算値を計算して、その最大値を中心としています。
 色成分として1つの画素で、純な赤色=赤色-(青色+緑色)÷2としています。
 これにより、白の場合は純な赤色=0になります。


 演算結果を黒色線で30fpsでリアルタイムに表示しています。
 この値をドローン制御基板へシリアル出力して、位置制御のループ処理をしようと思います。


思う
 C国のドローンへの力の入れ方に驚きです。若い社長さんに対して国が30億円も投資してくれるなんて。
 人材、資金、資源、トップの判断力、全てにおいて凄いですねえ。
 最近の日本の大企業の不祥事と比べるとですよねえ。
 本当に日が沈む国と日の上る国のようです。
 弁護では無いのですが、検査ってのは人の判断が入らないよう機械が良否を判断するようにしていると思います。
 機械の出した良否を見るだけなら資格は必要ないのではないでしょうか?
 その法律は1台1台を手作りしていた時代のモノです。
 正しい判断が出来るように機械の点検をさせるのが今の時代に合っています。
 そのあたりをニュースで取り上げて欲しいです。
 

2017/11/26
ぎり可聴音波の測位 改め 超音波の測位 その1

 ぎり可聴音波18.6kHzでBPSKした信号をスピーカから出力すると。。。なんか変な音が聞こえてしまいました。
 位相反転が盛んに行なわれると音になってしまいます。
 電波と違って可動するアクチュエータであるスピーカは急に方向転換できないんです。

 このスピーカで超音波が発生可能か調べてみました。
 マイクはSPM0404UD5を使用しました。超音波センサとして10kHZ~65kHzまでフラットな周波数特性です。

 

 屋内での測位を実験してみたいので基板を起こすことにしました。
 MAX10とPIC32MZを一緒にしました。
 いつものようにSサイエンスさんに発注、今ならクリスマス前に間に合いそうです。
 年末、年始で集中デバッグをする予定です。


 1種類の基板で送信と受信を兼用しています。
 FPGA+CPU基板と超音波センサ基板、オーディオ用アンプ基板が面付けしてあります。
 Vカットの最小サイズが70mmなので自分でアクリルカッターで溝を掘ります。

 送信基板ではMAX10とNIOS2を使います。
 4枚の基板の送信時刻の同期には屋内用のGPS再放射で NEO M8N の TIME PULS を使い、
 DAC(14bit 110ns)出力を安いオーディオ用アンプ(7.5W)の基板でスピーカをドライブします。
 NEO M8N は基板に実装せず、ドローン用に売られているモノを改造した方が安いです。

 受信基板はMAX10とPIC32MZを使います。
 測位演算をdoubleで高速に行いたいのと、CPUを200MHzで動作させたいからです。
 プラス1,000円でこの機能は魅力的です。
 NIOS2に外付けDRAMを付けるならFPGA+PICも有効だと思います。
 外付けCPUの分だけFPGAはロジックを詰め込めます。
 超音波センサとオペアンプの基板をスタックし、外付けADC(12bit 2Msps)から入力します。

 

思う
 屋外はRTKや準天のGPS補強、屋内は無線タグなどの電界強度が測位の標準のようですね。
 超音波をやってみたかったので。
 無線タグより位置精度が高いので。
 趣味なので自由にやってみたいのです。

 

2017/12/9

 待望のGPS再放射器を購入しやのですが、狭い場所では屋外からの通常の信号と再放射信号が干渉して

 GPSジャミング装置になってしまいした。

 実験中にアンテナを屋外に出したいのでNEO-M8基板を起こすことにしました。

 

 

 GLONASSを使用しないので安いGPSアンテナで十分です。それでもGPS,QZSS,SBAS,Beidou,Galileoが受信可能です。

 頑張ってNEO-M8Nのモジュールをゲットしなくては。

 

 

 

2017/12/29
 ぎり可聴音波の測位 改め 超音波の測位 その3
 部品が入荷したので手ハンダにて実装しました。


 送信基板                          受信基板

 今回はクリスタルにTCXOを使用しました。
 お値段は高いのですが良い精度です。
 
 時刻同期用NEO-M8基板が入荷しましたが、NEO-M8Nが間に合いませんでした。

 

 

思う
 世界地図を見ると日本って国は離島なんだなあって感じます。
 世界の工場のC国と陸続きでないので基板や部品が空か海からやってきます。
 海底トンネルがあったら嬉しいのですが、非現実的すぎです(^^
 今年もあと少しで終わりです。
 来年も地道に続けます。
 継続は力なりです。
  МH研究所

 

2018/01/04
ぎり可聴音波の測位 改め 超音波の測位 その4
 受信基板のPIC32MZとFPGAとの接続は50MHzのSPIを使用しました。
 FPGA内にSPI-AvalonMM Masterブリッジを作成したので標準ペリフェラルのpioが使えます。
 また、AvalonMM Slave接続で作成した各モジュールもAvalonMMへ接続できます。

 

 可聴音の発生問題で悩んでいます。
 FSKも試してみましたがダメでした。
 搬送波が超音波でも位相反転や周波数が変わった時に「音」となってしまうようです。

<FSKのFFT>

 

 近所のホームセンターでスピーカ・スタンドを作りました。
 木材を買うと電動糸ノコを替刃代50円で使わせてくれるサービスがあります。
 図面を予めA4サイズのシールに印刷しておいて、買った木材に貼り付けてから
 電動糸ノコで切断します。

 

思う

 新しい年になりました。

 新年早々ハマっています。

 電気と機械はセットで動くモノです。

 機械のスピーカに合った制御でなくてはシステムとして成立しません。

 

2018/01/06
 シリアルデータ保存基板 その1
 超音波測位の時刻同期に起こした「NEO-M8」の基板と接続して
 NEO-M8TのRAWデータをmicroSDカードへ保存する基板を起こす事にしました。
 シリアル・データを保存するだけなのでルネサスのCPUでRX110を選びました。
 1個350円程度のCPUなのですが、シリアル関係が充実している点と
 消費電力が小さいのが利点です。
 右半分はドローン基板の時の9軸センサと気圧センサです。


思う
 最近、基板を起こし過ぎだなあと思っています。
 超音波測位がとん挫しているので気分転換です。

 

 「ぱたなび」ってハンディタイプのGPS受信機を持っていますが、製造中止になっていました。

 携帯電話網との接続が無いと受信位置が計算表示されているのに現在時刻の表示ができません。

 また、ホットスタート、コールドスタートも異常に長くなります。

 困ったことです。

 

2018/01/13
 シリアルデータ保存基板 その2
 4枚の時刻同期用NEO-M8基板の中の2枚をNEO-M8Tで作りました。
 基板サイズは35×40とモノの割には大きいです。
 アンテナ信号を曲げたなかったこと、電池をLR44と大きくしたからです。
 次はケースに入れる時に楽なようにSMCコネクタからFLコネクタに変えようと思います。

 M8Tは昔作った失敗作品M8T+RX220+FEP01TJの基板から外して再利用しました。
 注文していたM8Nも無事届きました。
 消費電流を測ると書込み時に平均で 5V 80mAでした。
 小型のUSBバッテリでも2600mAhあるので24時間以上使えます。

 


 シリアルデータ保存基板が出来上がる前にソフトウェアを作成しておきます。
 手持ちのRX220で作り、後で足回りをRX110に変更します。
 ソフト的にもコンパクトでシリアル・データをSPIにてSDカードへFatFsにて書込むだけです。

 M8TのRMX-RAWX,RMX-SRFBXをUART1へ230400bpsで10Hzの出力するように設定します。
 衛星数が多いので230400bpsでないと間に合いません!
 書込み速度は10KB/sec程度になりました。


 また、保存データは保存開始、終了時に受信したUBXコマンドに同期することで中途半端なデータを無くしています。

 シリアルデータ保存基板でSDカードへ保存し、もう1枚のM8T基板をUSBでパソコンに接続しバイナリとして同時に保存しました。
 2つのファイルをRTKLIBで表示させました。
 例の如く、オープンスカイではなく壁ドン(最近聞かないなあ)です。
 FLOATにしかなっていません。


 あっ、よ~く見ると瞬間FIXしていました。
 基板が入荷したらオープンスカイで移動体のデータを取得して動作を確認する予定です。


 保存開始の時刻で「西暦6桁+月2桁+日2桁」のディレクトリを作成して「時2桁+分2桁+秒2桁.UBX」のファイル名で保存しています。
 更新日日は保存終了時刻になっています。
 RTC用クロックを載せないのでRMX-RAWXデータから開始時刻を取得してUTCオフセット9時間を加算、

 保存中は10msタイマでカウントアップしています。
 時刻は日本国内専用です。


思う
 RTK、リアルタイムの処理が必要なのは位置制御をする時ぐらいかなあ。
 大抵は後処理で十分だと思う。
 そんな時に今回制作したrawデータ保存基板はコンパクトで低消費電力なので役立ちそうです。
 そして、なにより安いです。

 

 SDカードのライセンスって厳しようですね。
 趣味で電子工作しているなら良いのですが仕事では「SDカードふう対応」ってなるのかなあ。。。。

 

 RX110を注文したのですが、出回ってないような感じです。
 RX100シリーズだけでも種類が多すぎです。
 少量他品種過ぎると、コスト高や遅い納期になっちゃいます。
 これしか種類が無い、って事ならその中から選ぶんじゃないかなあ。
 そのRAMサイズの違いが必要なのかって感じです。

 

2018/01/16

シリアルデータ保存基板 その2

 RX110の基板がまだ入荷していないのですが、PIC32MZでもシリアルデータ保存基板を注文しました。

 

 

 RAWデータをある程度デコードして衛星仰角マスクしてからSDカードへ保存しようと思います。

 RX62と比べるとPIC32MZの方が良いところが多いので。

2018/01/26
 何となくなんですがラジコン・エンジン用のEFIコンピュータを作ろうかと思いました。
 CPUにRX24Tを選んでみました。が、後で別のCPUに交換可能なようにCPUのみの基板にしてみました。
 センサ入力とバルブ出力を別の基板にします。
 これはライフワークみたいなものなので、ぼちぼちやります。
 世の中はEVシフトしているようなので、あくまでラジコン用ってことで。

 

2018/01/21

 PIC32MZでのシリアルデータ保存基板のソフトが出来ました。

 デバッグはドローンの制御基板を使いました。

 後は基板待ちです。

 今回はプラスティック・ケースに入れようと思っていますが、加工に超音波小型カッターが欲しいです。

 https://www.honda-el.co.jp/industry/usw334.html

 

 

2018/02/06
 超脱線、EFI ECU その2

 超音波測位をやらなくてはと思いつつも脱線しています。
 現実逃避です。


 バルブ制御基板を設計しています。
 CANの標準出力もあります。
 また、デバッグ用治具を箱型にするか基板にするかを検討中です。
 ソフトウェアはRX24T基板が出来上がってから作ります。
 80MHzクロックなのでC言語で作っても何とかなりそうです。
 以前H8/3048Fの25MHzのアセンブラで11,000r/min程度まで追従しました。
 
 今、クランク角センサってどうなっているんだろう?
 1歯欠けたやつなのかなあ?
 全空燃比って標準なのかなあ?これないと目安が立たないし。
 はあ、どこかにV6で15,000ぐらい回るエンジンと騒音苦情が来ない部屋がないかなあ。

 

つづきのページ
概要 | プライバシーポリシー | サイトマップ
ログイン ログアウト | 編集
Jimdo

あなたもジンドゥーで無料ホームページを。 無料新規登録は https://jp.jimdo.com から

閉じる