FC2ブログ

RS485データ送受信にバグ

PIC32MZとRX220との間でRSS485によるデータの送受信を行っているが,たまに通信にありえないデータが混じることがある.
差動通信なのでノイズの影響とは考えにくい.
となるとソフトのバグか.

PIC32MZの側からみて送信3bytex3のあと受信16bytex3で合計408usec(理論上は300usec)
通信速度は2Mbps

受信がわスレーブの応答速度に問題があるのかもしれない.
スポンサーサイト



距離センサのテスト

今週末はマブチカーに搭載れている距離センサの出力テストを行う




LIDAR-Lite v2をサーボで90°旋回させて周囲の距離を取得してみる.


かなりノイジーではあるが周囲環境のマッピングはできているようだ.

最近は2D-Lidarの安いやつ3D-Lidarの安いやつ が出ていて欲しくなるが,当分はこのセンサでがまんしようと思う.

4D-systems ViSiの使い方

今日はuOLED-128-G2をViSiで開発する手順をメモする.
ViSiとはボタンやゲージ等のアイコンGUIをドラッグ&ドロップして画面に表示させるツールである.
これを使うにはディスプレイ本体の他にuSDカードとプログラミングアダプタ基板が必要になる.

まずは開発環境一式を4D-SystemsのHPからダウンロードする.
WorkShop4IDEを起動する.

この画面になるので一番上の赤いアイコンをクリックする.

ディスプレイの選択画面になる.ここではuOLED-128-G2を選択する.
左のプレビュー画像をクリックすることで天地左右の反転ができる.
画面レイアウトが決まったら次へをクリック.


4つある開発環境からViSiを選択する.


サンプルコードと実機のプレビュー画面が表示される.


メニューリボンの中からWidgetsを選択してGaugesの中から図のものをプレビュー画面にドラッグ&ドロップする.
プレビュー画面の中で拡大縮小,配置位置設定がマウス操作でできる.
下のPropertiesから数値で入力したり,ゲージ方向を垂直,水平を切り替えたりできる.


アイコンの配置が決まったら,Paste codeボタンを押してプレビューに表示されているwidgetsを実機に表示させるプログラムが挿入される.(左のソース画面のカーソルを挿入位置に合わせておくこと.)
今回は0~100のゲージなのでゲージの位置を指定する変数をユーザで定義する.
ゲージの動きをアニメーションさせるために適当なウェイトを挿入する.


ViSiが生成したコード部分をコピペして増やし,ゲージの表示位置を変更する.


プログラムが完成したら,アイコンのデータをuSDに書き込む必要がある.
uSDをPCのドライブに挿入し,Compileボタンを押すとコードのコンパイルが始まり,次にuSDへ書き込むダイアログが開く.


uSDカードをPCのドライブから抜き,ディスプレイ本体に差し込み,DownLoadボタンを押す.
ダウンロードが終わり次第プログラムが実行される.
(uSDカード挿し忘れた場合はメッセージが出るので挿入すると画像が出る.)

サーボの発振を解決

サーボパルス信号をモータ用PWMで生成することで通信割り込みのジッタを回避できた.
16bitのPWMを使えば,約0.05degの位置決め分解能を確保できるため,RCサーボとしては十分だ.

PIC32MZにもPWM出力が付いているので直接RCサーボを駆動することもできるが,
現状は圧電ブザーの出力にのみ使っている.

いろいろな問題と格闘中


今週末はスレーブ基板RX220の駆動を続ける.机の上がかなりごっちゃりしてきた.
RCサーボ(首ふり)+センサ2,3種類の組み合わせだが,安定して動かない.

最初は電源レギュレータが落ちる問題に悩まされる.
12Vから5Vと3.3Vを生成するのだが,リニアでは発熱が多すぎて厳しい.ということでBP5293-33BP5293-50を使用してしばらく問題なく動いていた.
ところが子基板の消費電流が大きくなると,5V側のBP5293-50が頻繁に落ちる.
定常電流は500mA以下なので余裕はあるはずだが,どうも突入電流に対して保護回路が働いているようだ.
そこで5VレギュレータをV7805-1000に変えたら安定して動くようになった.
V7805-1000にもサーマルシャットダウンと短絡防止回路は入っているみたいだが,こちらは負荷の変動に強いみたいだ.
価格が高いのがネックだが,まぁ仕方がない.



次なる難題はRCサーボパルスへの通信割り込みの影響だ.
RCサーボパルスはタイマ割り込みでエッジ切り替えしているが,RS485の通信割り込みのほうが優先度が高くパルスが引き伸ばされてしまう.
前回まではSPIだったので通信時間そのものが短かったためあまり影響はなかったが,RS485にしてからサーボが目に見えて振動するようになってしまった.
これはプログラムで何とかしないといけない.アイデアとしてはサーボパルスをモータPWMで生成するか,通信割り込みをDMAでバックグラウンド処理に変更するかだが,いずれも大工事になりそう.


NEXT≫
プロフィール

もやね

Author:もやね
長野県在住の会社員(メカニカル・エンジニア).
ロボットは完全な趣味としてやってます.
E-mail:
mo_ya_ne[a]yahoo.co.jp
[a]⇒@

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
FC2カウンター
ブログ内検索
RSSフィード
リンク