テーマ:マイコンプログラミング

100円 DIP ARMでタッチセンサ

 11月号のトラ技特集でDIP ARMの応用編を書くにあたって、このLPCマイコンは、価格からいってPICなどの8ビットマイコンの対応なので、PICに出来てLPCマイコンで全く実施例を見たことが無いアプリケーションとして、タッチセンサを選んでみました。タッチセンサは、今年6月号のPIC特集でも取り上げましたが、PICにはタッチセンサ専用…
トラックバック:2
コメント:1

続きを読むread more

トラ技11月号付録組み立て

ずいぶん長らく更新をさぼっていました。 10月10日発売のトランジスタ技術の特集11月号を執筆していた関係で、全くブログ更新ができなくなっていました。やっと11月号が発売されたので解禁です。 それにしても、NXPのDIPタイプのARMマイコンが、約100円の値付けになるとは思いませんでした。200円以下なら良いなと思っていま…
トラックバック:1
コメント:0

続きを読むread more

新しいF1シリーズPICを使ったラジアルタッチスライダーの製作

 前回は、PIC18F14K50のAD変換回路を使った、CVD方式のタッチセンサでリニアスライダーを試してみましたが、今回は、新シリーズのPICにも内蔵されているCSM方式のタッチセンサ回路を試してみました。タッチセンス用のパッドも8枚の電極をラジアル型に並べた構成にして、iPODのような操作を意識してみました。  PIC16F193…
トラックバック:0
コメント:1

続きを読むread more

PIC18F14K50を使ったリニアタッチスライダーの製作

 前々回に紹介したDCDCコンバータにI2Cスレーブの機能を実装して、外部からの出力電圧の制御と出力電圧を外部から読み出せるようにしました。これらの外部からの制御の実験のために、USBから色々な機能を使えるように考えている(USBガジェット)18F14K50を使ったマイコンボードにI2Cマスタの機能を組み込みました。DCDCコンバータの…
トラックバック:0
コメント:0

続きを読むread more

新しいF1ファミリPICを使った昇圧DCDCコンバータ

 長らく更新をしていなかった「からくり玉手箱」のSTM32Discoveryを使ったマイコンプログラミング4の更新を一時中断しましたが、これに代えて、新たに新PICを使った電子工作を始めることにしました。  PICは、2輪倒立振子ロボットで18F2550と18F14K50を使いましたが、ポピュラーなPIC16F84より高速、高性能、高…
トラックバック:0
コメント:0

続きを読むread more

STM32マイコンボード(STM32VLDISCOVERY)を動かしてみる

 IAR Embedded Workbenchが動かせるようになったので、まずは、LEDとスイッチを動かす簡単なプログラムを作ってみました。普通のタイマカウンタは、まだ仕様が読み切れていないので、比較的簡単に動かせるシステムタイマ割り込みでLED表示を制御しています。初めて使うマイコンは、ハードウェアの初期化やタイマ割り込みの設定など使…
トラックバック:0
コメント:0

続きを読むread more

ThinkPad X41 HDDアクセス高速化とバッテリのいたわり設定

 今まで使っていたVAIO R505のディスクが突然いやなシークを繰り返す音がしたと思ったら、お亡くなりになってしまいました。ディスクの異常音がしてからUSBメモリで大事なWORD文章とかJUDEのデータとか抜き出していましたが、それもつかの間で、青画面になってWindowsが落ちてしまいました。再度立ち上げても非情にも「アロケーション…
トラックバック:0
コメント:0

続きを読むread more

マイコン装置の設計とユースケース

 ホームページのからくり玉手箱の倒立振子ロボットのドキュメントを書き終わったので、ペンディングにしていた、「マイコンシステム設計」の目次を作り書き始めました。事例は記憶に新しい倒立振子ロボットを題材にするつもりです。マイコンプログラミング3を書き進めているときは、こんなロボットを作るのは初めての経験だったので、早く結果が見たくて、試作の…
トラックバック:1
コメント:0

続きを読むread more

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

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

続きを読むread more

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

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

続きを読むread more

2輪倒立振子ロボット 一応完成!

 完成した電源(DCDCコンバータ)を組み込み、モータ制御ボードに、この電源を繋ぐ改造をして、バッテリ(Ni-MH単三4本)駆動出来るようにしました。取り急ぎ動かしてみた感じは上々です。特に新たにGain調整はしていませんが、モータのパワーが上がった感じで、負荷無しで(ロボットの上に何も乗せないで)動かすと細かく振動して、Gainが上が…
トラックバック:0
コメント:0

続きを読むread more

2輪倒立振子ロボット(LIBRA)の電源(DCDCコンバータ)の製作

 LIBRAを赤外線リモコンで操縦できるようになったので、そろそろACアダプタで動かしているのが気になっています。元々、Ni-MHバッテリ4本(1.2V×4本=4.8V)からDC-DCコンバータで必要な電圧を作るつもりで、電池ケースの下にその分のスペースを空けてあります。  必要な電源は、15V 0.6A程度(モータ用) 6V 0.…
トラックバック:0
コメント:0

続きを読むread more

2輪倒立振子ロボット(LIBRA)に負荷を掛けてGain調整してみました

 割込み周りを大分弄ったので、Gainの再調整をやってみました。このロボットのGain調整はあまりシビアではなく、動かしながら10刻みとか100刻みとか適当な値を放りこんでいますが、一度倒立すれば、多少値を変えてもそれほど挙動は変化しないようです。そこで、少しロボットに荷物を載せて、さらに最適なポイントがあるかどうか試してみました。結論…
トラックバック:0
コメント:0

続きを読むread more

PIC18Fの2レベル割込みを使ってみました。

 LIBRAの赤外線リモコンの受信処理は、タイマ割込みの時間を基準にデータの0、1を判断しているので、割込み時間が伸びるとデータ誤りとなってしまいます。そこで、前回のブログで書いたように、赤外線リモコンとついでにモータ制御を高レベル、それ以外の時間の掛かるジャイロ処理や倒立処理を低レベル割込みにしました。  C18コンパイラでのPIC…
トラックバック:1
コメント:0

続きを読むread more

LIBRA(2輪倒立ロボット)に赤外線リモコン処理を組み込みました。

 78K0で作った赤外線リモコン受信のモジュールをPIC用に移植して組み込みました。古いアナログテレビのリモコンで操作できるようにしました。行きたい方向のテンキーを押すと、直進、後進、右折、左折、後ろ右折、後ろ左折、右回転、左回転の8動作ができます。モータのスピードパラメータは、適当に以下のようにしました。    ・直進     …
トラックバック:0
コメント:0

続きを読むread more

PIC18F2550のEEPROMへのRead/Write

 2輪倒立ロボットのGainパラメータをPICのEEPROMにセーブして、電源立ち上げ時にリストアするようにしました。 PICのEEROMのアクセス(特にWrite)は、私の持っている解説本を見ると、このアセンブラで書いてあって、「その通りに記述すること」などと書いてあり、C言語でプログラムを作る上であまり気持ちよくありません。そこで…
トラックバック:0
コメント:0

続きを読むread more

倒立制御処理

 ジャイロ制御とモータ制御が出来れば、後は10数行の倒立制御のコードを書けば倒立を試すことができます。倒立制御のやりかたについては、からくり玉手箱のステップ1 倒立振子の制御 (http://www5.pf-x.net/~jr1wfhbbs/micom/text/miconlesson31.pdf)に書きました。これを書いていた頃は、…
トラックバック:0
コメント:0

続きを読むread more

LIBRA-ZEROのモータ制御処理の改善

 前回のブログで気が付いた2つの問題点を改善した、モータ制御関数を作り、ロボットに組み込みました。 低速域のトルクの増加は、1ステップ動かした後にモータをOFFしていた個所を約1.2ms間隔でON/OFFを繰り返すようにしました。この様子をMPLABのロジックアナライザの波形で示します。 必要なパルス周期を作…
トラックバック:0
コメント:0

続きを読むread more

角度算出処理(レートジャイロ)の積分誤差

 ジャイロの角速度出力を積分して角度を算出している処理で、ジャイロを振らせた後に元に位置に戻したときに、元の値に戻るかということで(繰り返し精度)、ここ数ヶ月悩んでいましたが、先日ふと閃いて先が見えました。多分、ネットの書き込みを見ると同じ悩みを持っている方は少なくないと思います。  結論からいうと、ジャイロの出力(アナログ値)をAD…
トラックバック:0
コメント:2

続きを読むread more

LIBRA(倒立振子ロボット)のGain調整

 連休で車体を作った倒立振子ロボット(LIBRAと命名)のGain調整を昨日に引き続いてやって、1分位は立つようになりました。この時のGain調整の方法を紹介します。 Gain調整のやり方は、Design Wave Magazine 2007 Augustの「加速度センサ、角速度センサの活用事例」の記事に書かれている「秘…
トラックバック:0
コメント:1

続きを読むread more

倒立振子ロボット(LIBRA)の車体完成!

 連休を使って、ロボットの車体を作りました。 シャーシは、カッターで簡単に切れる1mmのアルミ板を使いました。強度的にも特に問題はないようです。モータ制御ボードの横幅に合わせて幅75mm、高さは150mmにしました。モータを取り付けた下側は、35mmと40mmの六角スペーサを繋いだ物を2組み使って止めています。アルミ板の曲げの精度に自…
トラックバック:0
コメント:0

続きを読むread more

2モータ(StepperMotor)制御を実装しました(YouTubeビデオ追加)

 以前作ったプロトタイプのステッピングモータの処理をロボットで実際に使えるように、機能拡張しました。 仕様決定のための試行に、少し時間が掛かってしまいました。  概略、以下の仕様に落ち着きました。  ■外部仕様    ・2モータ(Steper Motor)制御    ・2-2相励磁、2-1相励磁 2-1-0相励磁を回転速度…
トラックバック:0
コメント:0

続きを読むread more

モータ制御ボードのジャイロ(積分による角度算出)を動かしました。

 前回、USBの先にハイパーターミナルを繋げて、データ出力が出来るようになったので、78K0マイコンボードに仮に繋いで、動作を確認したジャイロモジュール(AE-GYRO-SMD)部分の動作確認をしました。  ソフトウェアの処理は、78K0マイコンボードで動作確認済みですので、このソフトのPIC18F2550マイコンへの移植になりま…
トラックバック:0
コメント:0

続きを読むread more

USBシリアル(PIC18F2550のUSB USART)を動かす

 今回作ったモータ制御ボードには、表示としてLEDを4個、入力としてスイッチを2個載せましたが、今後、ロボットの制御のためには、運動方程式のパラメータの設定や、内部状態を表示したりする必要があると思っています。そこで、マイコンのプログラムの書き込みに使っているUSBインタフェースをユーザプログラムからもシリアルインタフェースとして使える…
トラックバック:0
コメント:0

続きを読むread more

ステッピングモータを回す

 前回作成したマイコンボードに、ステッピングモータを繋いで回すテスト用のプログラムを作ってみました。 今回、ロボットを駆動するモータ制御は、倒立制御の運動方程式が出力するモータ回転加速度を積分してモータ回転速度として、モータ制御部分に与えるように考えているので、回転数を入力パラメータとして、それに応じた回転数制御をするロジックを考えて…
トラックバック:0
コメント:0

続きを読むread more

UBW(Firmware-B)でのPICプログラム作成

 UBW環境でPICのプログラミングをするのは、既に色々な方が記事を書かれているので、新しい情報あまり無いのですが、下記のサイトのQ&Aやサンプルプログラムを読んで色々分からないことが解決できましたので、私が悩んだところをこれから始める方のご参考のためにまとめて置きます。 千秋ゼミ:UBW http://www-ice.yama…
トラックバック:0
コメント:0

続きを読むread more

モータ制御用マイコンボードが完成!

 モータ制御用マイコンボードの製作に連休明けから着手して、やっと完成しました。後は、ステッピングモータをつなぐケーブルを作ればモータが動かせますが、その前に初めて使うPIC18Fに慣れるために、割り込みでLEDをインクリメント表示する簡単なテストプログラムを作って動作確認をやってみました。  このボードは、このUSB内蔵のマイコンを選…
トラックバック:0
コメント:0

続きを読むread more

最小二乗法予測でドリフト補正したときのビデオを撮りました。

 ドリフト補正(その5)でパラメータをチューニングした結果で傾斜角表示をさせたときのビデオを撮りました。同じようなビデオは、何回もここに載せており見た目はあまり変わっていませんが、以前のは長時間の平均値を使うやり方で電源を入れてから使えるようになるまで時間が掛かったので、長い初期化(1.5分程度)が終わってからビデオを撮りましたが、今回…
トラックバック:0
コメント:0

続きを読むread more

ジャイロセンサ(ENC-03R)のドリフト補正(その5)

 なかなか積分誤差が小さくならず、繰り返し精度が上げられなかったのですが、前回(その4)のドリフト補正の方式でセンサ出力のサンプル周期やセンサの静止を判断する敷居値を色々いじることで、かなり良い動きに追い込めたので報告します。  先ずは、前回と同じ、Excelのグラフを見て下さい。前回よりも長時間動かしていますが、積分出力が元の水平の…
トラックバック:0
コメント:0

続きを読むread more

赤外線リモコン受信プログラムの応用(プレゼンコントローラを作る)

 前回作ったプログラムを使うことで、赤外線リモコンのどのボタンを押すとどんなコードが出てくるか解析することが出来るようになったので、これを使って、応用プログラムを作ってみました。今までに赤外線リモコンを使ったリモコン自動車など作ったことがありますが、今回のマイコンボードにはモータは付けていないので、何か良い題材はないかと考えて、せっかく…
トラックバック:1
コメント:0

続きを読むread more