| タイトル | 日 時 |
|---|---|
100円 DIP ARMでタッチセンサ
|
2012/10/13 07:40 |
トラ技11月号付録組み立て
|
2012/10/12 23:47 |
新しいF1シリーズPICを使ったラジアルタッチスライダーの製作
|
2011/12/04 00:29 |
PIC18F14K50を使ったリニアタッチスライダーの製作
|
2011/11/13 23:18 |
新しいF1ファミリPICを使った昇圧DCDCコンバータ
|
2011/10/13 21:44 |
STM32マイコンボード(STM32VLDISCOVERY)を動かしてみる
|
2011/04/25 21:14 |
ThinkPad X41 HDDアクセス高速化とバッテリのいたわり設定
|
2010/09/20 16:04 |
マイコン装置の設計とユースケース
|
2010/09/10 23:20 |
倒立振子ロボットジャイロの傾斜角積分誤差(その2)
|
2010/08/24 22:14 |
倒立振子ロボット(LIBRA)のジャイロの傾斜角積分誤差
|
2010/08/22 17:27 |
2輪倒立振子ロボット 一応完成!
完成した電源(DCDCコンバータ)を組み込み、モータ制御ボードに、この電源を繋ぐ改造をして、バッテリ(Ni-MH単三4本)駆動出来るようにしました。取り急ぎ動かしてみた感じは上々です。特に新たにGain調整はしていませんが、モータのパワーが上がった感じで、負荷無しで(ロボットの上に何も乗せないで)動かすと細かく振動して、Gainが上がり気味に感じます。 DDコンICの発熱を心配して、モータ電源を15V×2にしましたが、かなりぐりぐり動かして見た後に、ICを触ってもほとんど温度が上がっている... ...続きを見る |
2010/08/19 21:13 |
2輪倒立振子ロボット(LIBRA)の電源(DCDCコンバータ)の製作
|
2010/08/16 23:54 |
2輪倒立振子ロボット(LIBRA)に負荷を掛けてGain調整してみました
|
2010/08/07 20:44 |
PIC18Fの2レベル割込みを使ってみました。
LIBRAの赤外線リモコンの受信処理は、タイマ割込みの時間を基準にデータの0、1を判断しているので、割込み時間が伸びるとデータ誤りとなってしまいます。そこで、前回のブログで書いたように、赤外線リモコンとついでにモータ制御を高レベル、それ以外の時間の掛かるジャイロ処理や倒立処理を低レベル割込みにしました。 C18コンパイラでのPICの多重割込み使い方は、C18コンパイラのマニュアルの#pragma interruptの項を見れば書いてありますが、UBW上での書き方を含めて以下にまとめて置きま... ...続きを見る |
2010/08/06 23:56 |
LIBRA(2輪倒立ロボット)に赤外線リモコン処理を組み込みました。
|
2010/08/06 07:34 |
PIC18F2550のEEPROMへのRead/Write
2輪倒立ロボットのGainパラメータをPICのEEPROMにセーブして、電源立ち上げ時にリストアするようにしました。 PICのEEROMのアクセス(特にWrite)は、私の持っている解説本を見ると、このアセンブラで書いてあって、「その通りに記述すること」などと書いてあり、C言語でプログラムを作る上であまり気持ちよくありません。そこで、解説本のアセンブラをCで書き直してみましたが、特に問題なく動いているようなのでソースを紹介します。 特に注意しなければならないのは、書き込みタイミングが重要... ...続きを見る |
2010/07/31 22:16 |
倒立制御処理
ジャイロ制御とモータ制御が出来れば、後は10数行の倒立制御のコードを書けば倒立を試すことができます。倒立制御のやりかたについては、からくり玉手箱のステップ1 倒立振子の制御 (http://www5.pf-x.net/~jr1wfhbbs/micom/text/miconlesson31.pdf)に書きました。これを書いていた頃は、本当にこれで良いのか実感として理解できていませんでしたが、実物が出来て色々いじってみると、数学ではなく実感として、制御が分かるようになりました。 要は、ここに... ...続きを見る |
2010/07/30 21:13 |
LIBRA-ZEROのモータ制御処理の改善
|
2010/07/25 22:00 |
角度算出処理(レートジャイロ)の積分誤差
ジャイロの角速度出力を積分して角度を算出している処理で、ジャイロを振らせた後に元に位置に戻したときに、元の値に戻るかということで(繰り返し精度)、ここ数ヶ月悩んでいましたが、先日ふと閃いて先が見えました。多分、ネットの書き込みを見ると同じ悩みを持っている方は少なくないと思います。 結論からいうと、ジャイロの出力(アナログ値)をAD変換して、積分計算(累積加算)をする場合の計算精度の如何で、繰り返し精度が決まるという言うことで、至極当たり前のことでした。 それでは、doubleとかlon... ...続きを見る |
2010/07/22 12:59 |
LIBRA(倒立振子ロボット)のGain調整
|
2010/07/20 23:55 |
倒立振子ロボット(LIBRA)の車体完成!
|
2010/07/19 09:38 |
2モータ(StepperMotor)制御を実装しました(YouTubeビデオ追加)
|
2010/07/13 12:46 |
モータ制御ボードのジャイロ(積分による角度算出)を動かしました。
|
2010/06/19 12:26 |
USBシリアル(PIC18F2550のUSB USART)を動かす
|
2010/06/07 00:31 |
ステッピングモータを回す
|
2010/05/30 17:55 |
UBW(Firmware-B)でのPICプログラム作成
UBW環境でPICのプログラミングをするのは、既に色々な方が記事を書かれているので、新しい情報あまり無いのですが、下記のサイトのQ&Aやサンプルプログラムを読んで色々分からないことが解決できましたので、私が悩んだところをこれから始める方のご参考のためにまとめて置きます。 ...続きを見る |
2010/05/24 21:22 |
モータ制御用マイコンボードが完成!
|
2010/05/23 13:59 |
最小二乗法予測でドリフト補正したときのビデオを撮りました。
ドリフト補正(その5)でパラメータをチューニングした結果で傾斜角表示をさせたときのビデオを撮りました。同じようなビデオは、何回もここに載せており見た目はあまり変わっていませんが、以前のは長時間の平均値を使うやり方で電源を入れてから使えるようになるまで時間が掛かったので、長い初期化(1.5分程度)が終わってからビデオを撮りましたが、今回は約2.5秒で初期化が終わるので、初期化からビデオを撮っています。電源を入れて小さなLEDが消えれば初期化完了です。 このブログで書いた内容のまとめと、マイコ... ...続きを見る |
2010/04/29 08:59 |
ジャイロセンサ(ENC-03R)のドリフト補正(その5)
|
2010/04/27 00:14 |
赤外線リモコン受信プログラムの応用(プレゼンコントローラを作る)
|
2010/02/14 17:42 |
赤外線リモコン受信プログラムを作る
実際に以下の仕様で、赤外線リモコンの受信プログラムを考えて見ます。よく見かける大概のリモコンが読めるように、3種類のフォーマットを自動認識すると共に、この仕様で読めないデータ(タイミングやフォーマットの相違など)時でもフォーマットデータを表示出来るようにします。また、家電協フォーマットやSONYフォーマットの仕様にある可変データ長にも対応出来るようにします。 ...続きを見る |
2010/02/11 22:41 |
78K0マイコンボードで赤外線リモコンのコード解析・表示するプログラムを作る
|
2010/02/07 18:24 |
マイコンへのリバーシプログラムの移植
|
2010/01/31 15:29 |
マイコンでのfloat計算
前回このブログに書いたときに作ったシリアル通信処理やputchar(),getchar()のコーディングをブラッシュアップして、マイコンプログラミング教室のテキストのアップデートをしました。シリアル通信の解説も少し載せています。 今回使っている78k0/KB2は、I2CやRS232Cなどのシリアルインタフェースのハードウェア回路が組み込まれているため、比較的簡単に、これらのインタフェースを繋ぐためのプログラムが書けてしまいます。I2Cはスタートコンディションやストップコンディションを含めた... ...続きを見る |
2010/01/25 21:07 |
RS-232Cによるターミナル接続(printf,scanfを動かす)
|
2010/01/19 22:35 |
I2Cインタフェース温度センサ(LM73)を使った温度計プログラム(78K0/KB2)
|
2010/01/09 14:44 |
マイコンで音楽演奏(MMLオルゴール)
78K0のシミュレータで音が出せればマイコンプロ1でやりたかったのですが、今は無理なので、マイコンボードの課題に入れました。当然ハードウェアはシンプル過ぎるぐらいにシンプルなので、鑑賞に値する音はでませんが(家族からは騒音扱いされています)、電気工学的に音楽を演奏するにはどうするかと言うような部分で面白い題材だと思っています。 メロディを演奏するには、楽譜通りの音程と音長の音を電気的に作ってスピーカから出すようにすれば、曲がりなりにもメロディを奏でることが出来ます。 ...続きを見る |
2009/12/24 22:39 |
78K0マイコンボードで60分タイマプログラム
マイコンプログラミング1の課題で作った99秒タイマプログラムを拡張して、4桁表示の60分タイマプログラムをマイコンボードを使った課題にしてみました。シミュレータでは、ダイナミック点灯が辛いので、泣く泣く2桁表示に制限した課題にしましたが、実機ではLEDを6桁載せたので、4桁表示は余裕です。時間設定で+1、−1する押しボタンスイッチを長押しすることで、+10、−10する機能もシミュレータでは動きは確認出来るものの操作性は良くないので、このあたりも実際触って見たいところです。さらに、シミュレータで... ...続きを見る |
2009/12/07 21:56 |
78K0マイコンボードでスイッチ入力課題(早押しゲーム)
スイッチ入力のマイコンボードでの課題を考えてみました。スイッチ入力はCubeSuiteのシミュレータで出来てしまっているので、シミュレータでは出来ないリアルタイム動作が必要な課題になっています。 LED表示関数使って簡単なゲーム(早押しゲーム)を作って見ます。LEDに"push"が表示されたら極力速くボタンを押して反応時間を1/1000秒の精度で測るという全く面白みの無いゲームですが、自分がどの位の早さで反応できるか老化を測るには良いのではないかと。因みに、普通に押すと0.2xx秒程度、一生懸... ...続きを見る |
2009/12/05 15:24 |
マイコンボードでのスイッチ入力
マイコンプログラミング2で、実機のマイコンボードでスイッチ入力のテキストを書いてますが、スイッチ入力は、シミュレータではダイナミック点灯がきれいに出来なかったLEDとは違い、シミュレータでもそれなりにプログラムが作れたので、ここの課題をどう作るか悩みました。一つは、シミュレータでは絶対に起きないチャタリング対策を書きましたが、もう一つは、リアルタイム処理を作ることにして時間を計るプログラムを課題にしました。タイマを4つ、その内3つを割り込みリソースに登録して、細かい時間規定の要件を定義したゲー... ...続きを見る |
2009/11/30 12:48 |
3軸加速度センサーのテスト
先に紹介した、演習機材に搭載した3軸加速度センサーは、初めて使う部品なので、演習機材のテストを兼ねて少しプログラムを作って見ました。 この加速度センサー(KXM52-1050モジュール)は、X,Y,Zの出力がそれぞれ0Gの時に電源電圧の1/2が出力され、0G〜2G迄Gの大きさに応じた電圧が出てくる仕組みです。従って、それらの出力をマイコンのAD変換入力で受けてマイコンでAD変換すれば、ソフトウェアが扱えるデジタル値が取り出せます。 当然静的なGつまり重力加速度も検出出来るので、センサの傾き(... ...続きを見る |
2009/11/16 22:39 |
マイコンプログラミング2の演習機材完成
|
2009/11/16 22:21 |
電子工作
マイコンプログラミング2の教材用に実機を組み立てているが、自作PCや既成のプリント板での電子回路の組み立ては偶にやったが、ユニバーサル基板で部品を並べての組み立てはほんとに久々だ。ようは、エレキジャック付録のマイコン基板の周りにI/Oを付けるだけなので、特に回路図も作らず、簡単なブロック図と部品のマニュアルを見比べながら作業で、トランジスタ周りの抵抗値を決めるのに電卓を弾く位で論理がどうのというものではない。 トランジスタと言えば、今、2SA1015,2SC1815の2種類の部品を使ってい... ...続きを見る |
2009/11/10 23:52 |
マイコンプログラミング2実機の組み立て
|
2009/11/09 21:41 |
C言語プログラミングでのファイル分割
|
2009/11/08 12:51 |
マイコンプログラミングとアーキテクチャー
アーキテクチャーやアーキテクトという言葉を聞くと何か高尚なイメージを持つのは僕だけだろうか。マトリクスの最終回に出てくるアーキテクトは、白髪でちょっと恰幅が良くてそれでいて怖そうな人物がでてくるが、まさにそんなイメージである。オブジェクト指向の勉強のために、3アミーゴと呼ばれた、ヤコブソン、ブーチ、ランボーが書いた、「UMLによる統一ソフトウェア開発プロセス」という本を読んだが、ここで説明されているアーキテクチャーは、このイメージとは少し違っていた。 まずこの本に書いてあることは、ソフトウ... ...続きを見る |
2009/11/06 21:37 |
マイコンプログラミング1修了課題(デジタル時計)
|
2009/11/02 21:17 |
マイコンプログラミング2
そろそろCubesuiteのシミュレーション環境を使ったマイコンプログラミング1が終わりに近づいたので、本物のハードを使った講習(マイコンプログラミング2)の検討を始めた。 マイコンについては、これは当初から予定したマイコンプログラミング1でも使った、78K0/KB2でCQ出版のエレキジャックNo.8付録のモジュールを使う予定だ。このモジュールは外付けにRS232Cのインタフェースを付ければ、オンボードでプログラムの書き込みまで出来るようになる。そこでプロセッサ部分は、シミュレーションの時... ...続きを見る |
2009/11/02 20:51 |
マイコンプログラミングでのUMLの利用その0
初心者にプログラミングを教えていると、テキストの例題の解答を見れば分かるのだけれど、課題を見たときにどう書き出せば良いか分からないという人がたくさんいます。そんなときは、「いろんなソフトをたくさん読めばだんだん直ぐにどう書き出せば良いか分かるようになる」という話をします。このあたりの感覚はどういえば良いか分からないのですが、人の頭の中の高度な働きのように思えます。「芸術は爆発だ!」とかで芸術作品や文学作品を作り出す作業と似ているところもあるのだが、無から急にコードが書けるのかというと、まあそん... ...続きを見る |
2009/11/01 13:05 |
ステートマシン図と状態遷移表
|
2009/10/27 22:11 |
static修飾子の効用
C言語で使われる変数は、その変数が使用できるスコープをその変数を定義するときに決める仕様となっているのはご存じだろう。一番多く使われるのが自動変数(オート変数)でその変数が定義された関数の範囲内のスコープをもった変数である。当然この変数は同じ名前の変数であっても定義された関数が違えば別物として扱われるが、定義した関数から抜けると(スコープ範囲外)その内容は無効となる。この自動変数の対極にあるのが外部変数(グローバル変数)で変数を関数の外で定義することで、システム全体で1個のものとして扱われる。... ...続きを見る |
2009/10/25 10:26 |
CubeSuiteのシミュレータでAD変換プログラムを動かす
Cubesuiteのシミュレータで動かしたAD変換プログラムのPC画面をキャプチャしてYouTubeに載せてみました。やはり、ダイナミック表示と画面キャプチャを動かすのはきついらしくかなり7セグメントLED表示の切り替わりが遅く、かつランダムになってしまっています。シミュレータなので当然実物と同じとはいきませんが、実際はもうきれいに表示しています。 このプログラムは、ボリュームからの電圧をマイコンに入力してそれをAD変換して3桁で7セグメントLEDで表示しています。ボリュームの下に表示され... ...続きを見る |
2009/10/24 17:00 |
ポインタのポイント
C言語でのプログラミングのトピックで、ポインタに触れない訳には行かないので、入門者が良く間違える1、2、3(ワン、ツー、スリー)ついてまとめておく。 ...続きを見る |
2009/10/19 21:09 |
マイコンプログラミングへのUML活用その2
活用その1で詳細クラス図、詳細コラボレーション図、ステートマシン図ができたらこれをC言語で実装(プログラミング)するやり方を紹介する。 C言語ではクラスを使えないので、クラス図の1つのクラスをクラス名と同じ名前をつけた1つのファイルに対応させる。ファイルにはクラスで定義した属性をファイル内のみで有効とするようにstatic修飾子を付けた変数で表し、操作をユーザ関数で表す。このユーザ関数は他のファイル(クラス)から参照出来ようにヘッダにこの関数のプロトタイプ宣言を入れ、このヘッダを他のファイ... ...続きを見る |
2009/10/17 23:25 |
マイコンプログラミングへのUML活用その1
オブジェクト指向設計手法での記法を標準化したUMLは、町の小さな本屋さんのコンピュータのコーナでも何冊かの本が置いてあるほどポピュラーな存在であるが、ことマイコンプログラミングで積極的にこれを活用した内容にはあまりお目にかからない。これらの本の内容も組込みソフト系の例が載っていることが少ないせいもあるが、一番大きな理由は、マイコンプログラミングの言語がアセンブラ言語やC言語がほとんどで、クラスだとかオブジェクトだとかという概念がこれらのプリミティブな設計ツールの世界で馴染みがないことが大きいの... ...続きを見る |
2009/10/16 22:43 |
const修飾子
const修飾子について、今更説明は必要ないと思うが変数を参照だけに制限する修飾子である。マイコンの世界では、コンパイラの独自仕様になるが、この修飾子を付けると変数の置き場所を指定する働きがある。 ストアードプログラム方式のコンピュータは、プログラム自身やデータ、データを一時格納する変数などを読み書きできるメモリに格納する。マイコンは電源を入れたら直ぐに動きだす必要があることから、プログラムをフラッシュメモリなどの電源を落としても内容の消えない(不揮発性メモリ)に置く構造になっているものが... ...続きを見る |
2009/10/15 20:43 |
78KマイコンのAD変換
78Kマイコンには、AD変換器が内蔵されていて、マイコンのピンに入力されたアナログ信号ををデジタル値に変換することができる。CubeSuiteのシミュレータの入出力パネルに、ボリュームのような部品が用意されており、ボリュームを回す角度で、0〜5Vの電圧が出力できる。そこで、このボリュームをマイコンに繋ぎ、AD変換器を動かしてボリュームの電圧をAD変換して、変換したデジタル値を7ゼグメントLEDに表示すれば、AD変換プログラムを試すことができる。(全てシミュレーション上で) 昨日、マイコンプ... ...続きを見る |
2009/10/14 12:56 |
単細胞OS(その2)
単細胞OSには処理要求をキューしたり、キューを取り出してスケジューリングするような機能は無い。タスクのスケジューリングは、予めプログラムされたスケジューリング間隔でタスクを定期的に起動するだけ。(これでOSと呼ぶの?という意見があるかもしれないが、OSとアプリの境目ある意味合いで単細胞と命名)起動されたタスクで特に処理するものが無ければ(処理要求が無ければ)直ちにOSにリターンする動きとなる。(見ようによっては、各タスクに処理要求を問い合わせているとも言えるが。無理やりOSの仲間にしようと..... ...続きを見る |
2009/10/13 12:47 |
単細胞OS
WindowsやLinux等のPC向けのOSはさまざまな機能を取り込み高機能化している。その反面、高性能なCPUや大容量のメモリが無ければ動かない。生物の進化で言えば丁度「恐竜」のような存在に見える。そんな進化の袋小路から抜け出すために、近年ネットワークでの使用に特化することで、低コストで軽快動きをすることを目指したOSもgoogleなどから発表されていることは有名である。 そんな、超高級なOSとは無関係に組込みの世界には色々な姿をした、「リアルタイムOS」と呼ばれているOSがある。リアル... ...続きを見る |
2009/10/12 21:54 |
ビット操作の損得勘定
大体のマイコン用のコンパイラはそうであるが、78Kマイコンのコンパイラでも、ビットの扱いを簡単に出来るような仕様になっている。例えばP1レジスタの0bitだけに値を代入する場合などで、ANSI Cの書き方との比較してみると下記のようになる。 ...続きを見る |
2009/10/07 23:01 |
ステートマシンを作ろう
ステートマシンを作ろうといってもロボットを作るわけではない。 一般的に関数は入力に対してある決められた処理を行い結果を出力する。入力が同じなら結果はいつも同じである。マイコンプログラミングでは、このような関数とは少し毛色が違い、同じ入力でもその時々で違った結果が出てくる関数が良く出てくる。これがステートマシンである。ステートマシンは、関数が終了しても値を保持し(内部状態)、この内部状態よって入力に異なる処理を行うため、同じ入力でもその時々で違った結果が出てくる。このようなプログラム構造を使うこ... ...続きを見る |
2009/10/06 21:41 |
教材演習課題(デジタルタイマ)
ブログ紹介に書いてある「マイコンプログラミング1」のテキスト書きが、「タイマ割り込み」まで進んだので、ここいらで少し考える課題を用意してみようかと思い、課題の仕様を考えてみた。 ...続きを見る |
2009/10/06 12:41 |
再帰呼び出し(リカーシブルコール)
ちょっと変わったプログラムの書き方に再帰呼び出し(リカーシブルコール)というのがある。関数の中で自分自身を呼び出す部分があり、丁度合わせ鏡の中にいくつも自分自身が続くちょっと不思議な風情を感じる。C言語の入門テキストでも良く見るのでご存じ方は多いと思うが、テキストの例題では、階乗の計算をやっている例が多いと思う。書き方をちょっと紹介すると、以下のように、関数の中に自分自身を呼び出す部分があるが、必ず何かの条件判断で呼び出しを行わないでreturnする構造になっている必要がある。これは、当然この... ...続きを見る |
2009/10/04 14:23 |
データ変換処理の作り方
構造分析で使われるDFD(data flow diagram)は、プログラムの処理は入力データに何らかの変換を行い出力することを基本とするが、プログラムを書くときデータ変換が必要となることは多い。このようなプログラムは、大きく分けて以下の3つのやり方で考えると綺麗なプログラムを書くことができる。 ...続きを見る |
2009/10/03 22:34 |
割り算
一般的に機能の低いマイコンで、2進10進変換のような割り算を使う処理をやらせようとすると、ほんの1行のCのコードで驚くようなオブジェクトが生成されびっくりすることがある。また処理時間についても数msオーダの時間が掛かることもある。 そこで、今回の78K0/KB2で割り算を使う処理と同じ機能で割り算を使わない処理を2つ作り比べてみた。結果、オブジェクトは、割り算を使うほうが若干大きいものの大きな差は無い様子。そこでと思って、シミュレータで演算時間を測定してみた。4桁の0x270f→9999(... ...続きを見る |
2009/10/03 15:57 |
C言語のビット演算
組込みプログラミングをやると、どうしても避けて通れないのがビット演算である。ANSI Cにも出ているけれども入門Cでは、ほとんど取り上げられていない内容だ。 ...続きを見る |
2009/10/03 00:23 |
トップへ | みんなの「マイコンプログラミング」ブログ