テーマ:ロボット

10月トラ技オフ会参加(XBee)

 先月に引き続き、10月16日(日)に開催されたトラ技オフ会に行ってきました。今回のお題は、「XBee」です。昨年作った2輪倒立振子ロボットの操縦を現在、安くてお手軽な赤外線リモコンでやっていますが、ロボットの向きによって操作できなくなることが多々あり、何とか安くて扱いやすい無線モジュールが無いか探していました。トラ技9月号が無線デバイ…
トラックバック:0
コメント:0

続きを読むread more

トラ技オフ会(STM32)の参加と頂いたSTM32L-Discoveryの紹介

 前回のブログでちょっと触れましたが、昨日(9月9日)に、初めて、トランジスタ技術主催の「トラ技オフ会」に参加しました。トラ技オフ会は、1ヶ月1回の頻度で、トランジスタ技術誌の発売日に合わせて、高円寺のガジェットカフェで開催しています。数か月前からトランジスタ技術の編集部の方から誘われていましたが、なかなか時間が合わず参加出来ていません…
トラックバック:1
コメント:0

続きを読むread more

STM32マイコン開発環境の構築(IAR IDE)

 ノートPCのHDD破損でSTM32マイコンボートの開発環境も壊れてしまったため、STM32用のIAR のIDEを再インストールしたのですが、元々動いていたworkspaceのコンパイルが通りません。そんなことからHPの更新もかなり滞っていましたが、STM32VLDiscoveryが9月9日のトランジスタ技術のオフ会で取り上げられ、これ…
トラックバック:3
コメント:1

続きを読むread more

USBケーブル接続の自動認識

 PCのHDD障害のため、PICの開発環境も壊れてしまったため、自分のHPを参照しながら環境構築を行いやっと、2輪倒立振子ロボットのソースがビルド出来るようになりました。LIBRA-ONEのソースは全て無くなってしまったため、再度LIBRA=ZEROのソースから、これも自分のブログを参照しながら、PIC 2550→14K50のソースの修…
トラックバック:0
コメント:0

続きを読むread more

Think pad X41のHDD交換で、2010:Postエラー

 Thinkpad X41のHDD交換で、オークションで手に入れたHDDが到着したので、早速HDD交換をやってみました。このPCのHDD交換は非常に簡単で、PC裏面のねじを1本外して、HDDを手前に引き出せば、簡単に外すことができます。あとは、取り出したHDDに付いているブラケットをねじ4本外して、新しいHDDに装着して、元の通りPCに…
トラックバック:2
コメント:0

続きを読むread more

再びノートPCがダウン

 先週の金曜日(6月10日)に使っていたノートPCのIBM(Lenovo)Thinkpad X41が突然青画面になりOSがクラッシュしたと思ったら、再立ち上げしてもしばらく使うと、頻繁にこの状態で落ちるようになってしまいました。Thinkpad X41は、昨年9月にそれまで使っていた、VAIOのHDDがクラッシュしまったので、急遽、秋葉…
トラックバック:0
コメント:0

続きを読むread more

STM32の倍精度浮動小数点演算速度の測定

 前回作成したprintfのLCDへの表示を使って、STM32マイコン(32bit)の色々な浮動小数点演算速度の測定をやってみました。元々STM32マイコンを選んだのは、ロボットの制御に浮動小数点演算を使いたかったためで、これがどの位のスピードで動くのか試しておきます。  測定に使ったプログラムは以下です。各演算を10000回ループさ…
トラックバック:0
コメント:1

続きを読むread more

printfのためのLCD出力用低レベルIOの実装

 前回でやっとLCD表示が出来るようになったので、78K0やPICのときと同じように、標準出力で使われる低レベルIOを実装することで、printfの出力をLCDに行えるようにしました。  IAR Embedded WorkbenchのC/C++開発ガイドによると、標準出力を自前のデバイス(今回はLCD)に行うためには、    siz…
トラックバック:0
コメント:0

続きを読むread more

STM32マイコンでのキャラクタLCD表示のテスト

キャラクタLCDを動かすのは初めてではないので、もっと簡単に動くかと思ったのですが、まる1日悪戦苦闘してしまいました。LCD初期化の処理は、何回もチェックして問題ないはずなのです。ネットで調べてみると、コマンドを送出するタイミングがかなりシビアであるとか、マイコンとLCDが離れているとNGだとか、パスコンが無いとうまく動かないとか色々…
トラックバック:0
コメント:0

続きを読むread more

STM32マイコンの開発環境(IDE)選び・・・その2

 前回のブログで、STM32の開発環境(IDE)を生成コード量の制限の無い、Atollic TrueSTUDIO/STM32にしようと思いましたが、簡単なプログラムを書いてみて、実際に使ってみると、78K0やPICで使っていたIDEに比べ、いくつか機能が不足しているところがあることが分かりました。   ①ブレークポイントが1カ所し…
トラックバック:1
コメント:0

続きを読むread more

STM32マイコンの開発環境(IDE)選び

 このマイコンの場合、PICのようにソフトの開発環境をマイコンベンダのSTMicroelectronicsが用意してくれているわけではないので、何を使うか迷います。無償で手に入るIDE候補として以下の3つの中から選ぶことにしました。   ①Atollic TrueSTUDIO®/STM32   ②マイコン徹底入門で提供し…
トラックバック:0
コメント:1

続きを読むread more

STM32VLDISCOVERYマイコンボードの組み立て

 STM32DISCOVERYモジュールを使ったマイコンボードの組み立てを始めました。まだ、グランドと電源周りをスズメッキ線で配線しただけですが、以下に現状の写真を載せます。  SDカードのホルダが表面実装のものしか無かったので、ユニバーサル基板にうまく載せられるか心配でしたが、ホルダの裏面にある出っ張り(位置決め用?…
トラックバック:1
コメント:0

続きを読むread more

新マイコンの選択(STM32VLDISCOVERY)

 今まで、安価な8ビットの78K0、PIC18Fマイコンを使ってきましたが、倒立振子ロボットの制御では、8ビットマイコンでは演算速度の関係でどうしても短いビット長での演算が必要となります。浮動小数点演算が使えればなあと思うところあったので、今年はマイコンを16ビットにレベルアップしようと色々調べていたところ、秋月通商にSTM32と呼ばれ…
トラックバック:0
コメント:0

続きを読むread more

18F14K50版倒立振子ロボットの車輪を変更

 先日、車軸が折れてしまった車輪の代わりに、径の小さい車輪に交換してみました。ステッピングモータにギア比の小さいSPG20-1362を使ったお陰で小径のタイヤでもゲイン調整で何とか倒立できるようになりました。タイヤが小さいので車体と床面にほとんど余裕がありませんが、床に触れない範囲の揺れで収まっています。以下に倒立している時の車輪の様子…
トラックバック:1
コメント:0

続きを読むread more

18F14k50版倒立振子ロボット(LIBRA-ONE)の動作電流の測定

 18F14k50版倒立振子ロボット(LIBRA-ONE)がゲイン調整で何とかそれなりに動くようになったので、動作時の電流測定をしてみました。前回、「偶に暴走する」と書きましたが、これは、ジャイロからの出力が変わった(AD変換の基準電圧5V→3.3V)ので、計算値をint型の範囲に収めるところのチューニングのミスで、偶にint型の範囲を…
トラックバック:0
コメント:1

続きを読むread more

LIBRA-ONE(18F14K50版倒立振子ロボット)を動かす

 LIBRA-ONEのPID制御のゲインを調節することで、LIBRA-ZEROと同様に倒立が出来るようになりました。ただし、18F14K50では、マイコンのフラッシュメモリが16KBしか無いため、LIBRA-ZEROのソフトをそのまま移植するとメモリオーバになってしまうようです。そこで、LIBRA-ONEでは、コードの大きい最小二乗法予…
トラックバック:0
コメント:0

続きを読むread more

LIBRA-ONE(18F14K50版Balancing Robot)完成

 LIBRA-ZEROで余ったアルミ板を使って、LIBRA-ONEの車体を作って、制御ボードとモータ(SPG20-1362)を組み込みました。下の写真を見て貰えば分かるように、ひと回り小さくなりましたが、車体の構造は、LIBRA-ZEROを踏襲しています。(単なる手抜き)バッテリに単4充電池を使ったのとDCDCコンバータを3回路から1回…
トラックバック:0
コメント:0

続きを読むread more

ステッピングモータ(SPG20-1362)を使ってみた

 秋月のHPを見ていたら、ステッピングモータのページに今まで載っていなかったステッピングモータ(SPG20-1362)が出ていたので仕様を確認してみると、コイル抵抗は68Ωと今までのSPG20-332と同じですが、ギアー比は、-332が1/24であるのに対して、-1362は1/18なので3割位回転が速くできそうです。値段も250円と-3…
トラックバック:0
コメント:0

続きを読むread more

18F14K50ボードへの倒立振子ロボット処理の実装(メモリ配置の調整その2)

 移植した倒立振子ロボットのプログラムの不要部分を整理していたら、USBデータ化けが再発してしまいました。最小二乗法の処理を削ったので、使っていた配列の削除でメモリの配置が変わってしまったためのようです。やはり根本的に調べないとまずそうです。  試しに、前回影響のあった高優先割り込みで動いている赤外線リモコンとモータ制御周りをコメ…
トラックバック:0
コメント:0

続きを読むread more

18F14K50ボードへの倒立振子ロボット処理の実装(メモリ配置の調整)

 18F14K50ボード(LIBRA-ONE)でCDCクラスの動作確認が出来たので、LIBRA-ZERO(18F2550マイコン)の倒立振子ロボットプログラムをポートなどを変えて移植しました。16KBのフラッシュは殆ど満杯ですが、コンパイルは無事に通りました。次にBootloaderでボードに書き込んで動かしましたが、どうもUSBがうま…
トラックバック:0
コメント:0

続きを読むread more

18F14K50ボード完成(CDCクラスの動作確認)

18F14K50を使ったLIBRA-ONE(倒立振子ロボット)ボードが完成しました。BootLoaderのテスト後残りの部品を実装してボードが完成しました。実は先週にはボードが出来上がっていたのですが、CDCクラスを動かすのに手間取っていました。18F14K50のUSB周りは、BootLoader(Bootクラス)が動いているのだから、…
トラックバック:1
コメント:0

続きを読むread more

PIC18F14K50のBootLoader(2KB版)を作る(実装編)

 18F14K50のマイコンボードをマイコン周りだけ作って(新しい倒立振子ロボの制御ボードになる予定)、前回のBootLoaderのテストをしてみました。いくつか問題がありましたが、何とか完成に漕ぎ着けたようです。18F14K50は、3.3Vで動かしていますが、USBは安定して動いています。 ■前回作ったソースからの変更点  ①…
トラックバック:1
コメント:1

続きを読むread more

PIC18F14K50のBootLoader(2KB版)を作る(準備編)

 PIC18F14K50は、USB内蔵で価格が安く(秋月で200円)、高速(48MHz)、おまけに3.3Vで動く等、電池で動かす機器を作るのに良さそうなマイコンです。そこで、倒立振子ロボットで使った18F2550でもやったように内蔵USB経由のBootLoaderがこの18F14K50でも使えると便利なので、少し調べてみました。  ま…
トラックバック:1
コメント:0

続きを読むread more

PIC USB FrameworkでのUSBケーブル接続の自動認識

 今回の倒立振子ロボット(LIBRA-ZERO)の様にUSBインタフェースは、ソフトのロードとデータの採取をするときにケーブルを繋いでPCに接続する使い方で、大半の動作時はケーブルを繋ぎません。しかし、USBケーブルが繋がっていないときに、USBシリアルの処理を呼んでしまうと、USBの動作がおかしくなり、最悪はストールを起こしてしまいま…
トラックバック:1
コメント:0

続きを読むread more

マイコン装置設計モデルの実装

 設計モデルができてユースケースに書いた機能が漏れなく実現できる目処が(自信が?)がついたら、IDE(PICならMPLAB)を使って、実装(コーディング)を始めます。UMLで書いたクラス図をC言語で実装するやり方は、以前このブログでも書きましたが、私は設計モデルを以下のようなルールで実装しています。  ①1つのクラスは、C言語ソー…
トラックバック:0
コメント:0

続きを読むread more

設計モデルのコミュニケーション図によるブラッシュアップ

 概略の設計クラス図を最初に書きあげた段階では、まだこのクラス図の構成で本当にユースケースに書いた機能が実現できるか分からないため、ユースケースに書いた個々の機能について、コミュニケーション図を書いて、機能が実現できるか一つ一つ確認して行きます。  JUDEを使うとコミュニケーション図はプロジェクトビューの構成ツリーからす…
トラックバック:0
コメント:0

続きを読むread more

マイコン装置のアーキテクチャの検討と機能設計

 78K0やPICなどのマイコンを使って何か作ろうと考えたとき(今回のロボットのような)どんなマイコンを使おうか、どんなハードウェア構成にしようかと言うことをまずは考えると思います。マイコンの選択は、「以前作った機器に使ったことがある」とか、「IDEが使いやすい」、「安い」、「性能が良い」とか、色々考えるところは多いと思います。そのほか…
トラックバック:3
コメント:0

続きを読むread more

ノートPCのディスクがダウン

 今朝、ブログをアップデートしていたら、マイコンの開発環境やらHPのデータやら入っているノートPCのディスクが異常音を出して、突然アクセス不可となってしまいました。ホームページにUPLOADしているデータ以外全部だめのようです。プログを半分位書きかけていたのですが、JUDEで書いた図など入れられなくなってしまいました。そもそも図の出力に…
トラックバック:0
コメント:0

続きを読むread more

倒立振子ロボットジャイロの傾斜角積分誤差(その2)

 ロボットを最初に置いた位置に留まらせる対策のその2です。  前回書いた原点からの距離をジャイロのオフセットにフィードバックする方法を試してみたところ、今までに比べて格段に良くなりましたので、紹介します。フィードバック部分のソースを示します。       d += mv_m;                 モータスピードを…
トラックバック:0
コメント:0

続きを読むread more

倒立振子ロボット(LIBRA)のジャイロの傾斜角積分誤差

 倒立振子ロボットを作る上で、当初から気になっていたのは、ジャイロの出力を積分して作る傾斜角度の精度でした。とにかく、ロボットは少しでも傾けば倒れてしまう構造だから、角度の精度は最重要と考えていました。色々資料を調べると、加速度センサと組み合わせて、精度を上げるやり方も見つけましたが、市販のBeauto BalancerやPuppyなど…
トラックバック:1
コメント:0

続きを読むread more