2007年11月30日金曜日

PSoC温度計を作ってみた(その4)

コードも載せときます。
プロジェクト全部は
こちら
から。


//---------------------------------------------------
// C main line
//---------------------------------------------------
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules

#include <stdlib.h>

#define ADC 4096.0
#define PGAGAIN 4.0
#define VREF 2.6
#define SUM 50


void main()
{
// Insert your main routine code here.

int data , i, j;
float temp ;
char *ostr ;

LCD_1_Init() ;
LCD_1_Position(0,0) ;
LCD_1_PrCString("PSoC Thermometer") ;
M8C_EnableGInt ; // global interrupt enabling macro

PGA_1_SetGain(PGA_1_G4_00) ;
PGA_1_Start(PGA_1_HIGHPOWER) ;
ADCINC_1_Start(ADCINC_1_HIGHPOWER) ;
ADCINC_1_GetSamples(0) ; // read AD convert continuously
for(;;) {
temp = 0 ;
for( i=0; i<SUM; i++) {
while(ADCINC_1_fIsDataAvailable() == 0 ) ;
ADCINC_1_iClearFlagGetData() ;
data = ADCINC_1_iGetData() ;
temp += (data * VREF * 100 ) / ( ADC * PGAGAIN) ; //calculate AD --> temp
}
temp /= SUM ;

ostr = ftoa(temp,&j) ;
ostr[5] = '\0' ;

LCD_1_Position(1,2) ;
LCD_1_PrHexInt(data) ;
LCD_1_Position(1,7) ;
LCD_1_PrString(ostr) ;
}
}

PSoC温度計を作ってみた(その3)

コーディングと動作確認、そして完成へ

プロジェクトファイルをおいておくのでそちらを参照してください。moduleのイニシャライズをしたら、ADコンバータのデータを読み込み計算結果を合計して、平均値を出して表示します。これを繰り返すだけですね。

ADCINC_1_Start() と PGA_1_Start()でパワー指定をするときに、 HIGH以外を選ぶとAD変換や増幅時の直線性に問題が出て、データがおかしくなることがあるので注意。特に LOWPOWERはわかっていない限り選ばないほうがいいです。

書き込んだら通電してみてください。液晶の濃さは半固定抵抗でかえられるので、見やすいように調整してください。僕が最初につくったモジュールは動かない!とおもったらとても薄くなっていただけでした。

あとは、電池駆動するなり、5VのACアダプタを刺せるようにすればそのまま使えます。リファレンスをバンドギャップ電源からとっているので、電源電圧が安定していなくてもかなり正確な温度が出るはずです。
必要パーツがコネクタ類をのぞけば、 液晶表示機と半固定抵抗、温度センサ、PSOCだけというのは面白いとおもいませんか?

まあ、実際にはこの基板は共著のYUO氏からデカップリングコンデンサが足りないという厳しい突っ込みをうけてしまったわけですが、いちおうこのまま作ってもよほどのことがないかぎり動くとは思います。

PSoC温度計を作ってみた(その2)

モジュールと論理配線

今回必要なのは ADコンバータのADCINCと 増幅用のPGA そして LCD液晶のモジュールです。ADCINCは2nd stageを選びました。それぞれ ADC / Amplifier / Misc. Digital のセクションにあります。

これらの配置は以下のとおりです。

  • ADCINC DBB00 / ASC10 / ASD20
  • PGA ACB00
  • LCD Port2
それぞれの設定は図にしてありますのでそちらをみてください。

アナログ入力の接続は、P0[7] を PGAの入力にするためにAnalogColumn_Inputmux01 を port0_7に設定し、PGAの入力をAnalogColumn_Inputmux01に設定します。PGAの倍率は4倍としました。

さらに ADCINCのPOSINPUT を ACB00にすることで、 PGAからの出力をAD変換することができます。単電源なのでNEGINPUTは使いませんが、今回はこちらも ACB00とつないであります。NeginputGAINのところで disconnected を選択しておけば大丈夫です。ADコンバータの設定は
formatが unsigned, Resolutionが12bit でクロックを VC2に設定しています。

デジタル側はADCのためのPWMだけなので アナログ側の配線だけ拡大したものを図にしておきます。


グローバルリソースは図のように設定しておいてください。VC2が1MHzなのは時間計算が楽になるからという理由ですが、今回はさほど意味がありません。

2007年11月29日木曜日

PSoC温度計を作ってみた(その1)

PSoCの開発は 物理配線 PSoC内部の論理配線と設定、コーディングとデバッグ という順番で進む。
物理配線
回路図のように P0[7] (1pin) に温度センサのLM35を接続します。もちろん VCC/GNDもひきまわします。

P2[0-6] を PSoCのモジュールの解説画面にしたがってLCDとつなぎます。LCDとのインターフェースは 4bitモードになります。これらのほかに VCC/GNDとコントラストをつなぐ必要があります。これはPSoCでLCDを使うときのデフォルトの設定になりますから1度準備しとくと便利です。



PSoC自体にもVcc/Gndを与えるのをわすれないようにしましょう。PSoCのチップはなぜか同じポートのピンが左右に散らばってるのですこし面倒かもしれません。ピン間を積極的に使うと上手に配線できるらしいですが、あまり深く考えずにラップ線かなにかでひきまわすのがよいでしょう。

余裕があればISSP用のヘッダピンをつくり、なければあとで書き込む方法を妄想しつつ実装します。僕のボードは図のようになっています。これはもともと赤外線通信のデバッグ用ボードなので、赤外線LEDと受光部、秋月で買ったフルカラーLEDなどがマウントされています。

続く

PSoC温度計


手持ちの赤外線解析用の冶具にLM35DZを足して温度計に加工した。たんに家があまりにも寒いのに室温を計る寒暖計が夏の猛暑で壊れてしまったからだ。

PICなどのマイコンで作ると、LM35の 1Vで100度という出力はあまりにも小さくオペアンプを足すのが普通だが、PSoCの場合には内蔵のPGAでそのまま増幅できるので実質温度センサとPSoCだけで完成する。あとはモジュールのLCDドライバで出力すればおしまい。50samplingして平均しているが、室温を見るには十分だ。非常に簡単かつ実用的で、練習再開にはもってこいともいえるかもしれない。

(追記)
どうせなら、作ったものだけじゃなく作り方も書けと怒られたので書いてみた。PSoCは設定項目が多いのでおもったより長くなったので3分割のわりにたいしたことをやっていない。実質の作業は、僕の場合温度センサを足してコードを書いただけなので、1時間もかかっていない。blogかくほうがよっぽど時間がかかっている。

キムワイプ

会社の机の上にキムワイプを置いてみた。するとどうだ、如何にも理系っぽい雰囲気になるじゃないか。今のオフィスでどうもなにかたりないなー、と思っていたけど、決定的に足りなかったのはキムワイプ分だったんだな、と納得。

(といって、同意してくれる人ってどのくらいいるのかなー)
と、冗談はさておき、やっぱりちょっとケミカルものを使うときにはキムワイプは便利ですね。あんまりその辺では売っていないけど、どこかで調達しておくと重宝するとおもいます。
(追記)用事があって行ってみた電通大の生協には当然うってました。ハンズとかにもあるそうです。一箱150円、ってところですかね。

2007年11月28日水曜日

書き込み機の先ふたたび


また書き込みの話で申し訳ないともおもうが、覚えておくと便利なのでこれも。
ブレッドボードに配線したときに書き込みをどうするかだが、ICクリップを作る前に
もっぱらやってたのがこの方法。
書き込み用端子をひきだして5ピンのヘッダをブレッドボードにたててしまう。1度
やりかたを覚えれば十分だし、汎用性もあるといえるだろう。
もう1つの案として、世間でやられているらしいのが、minievalのボードにZIFソケットを載せてしまう方法で、実はこれも試してみた。minievalが書き込み機っぽく見えるのが面白いけど、クリップのがスマートだなあ。

2007年11月26日月曜日

ある日のこびとさん

ある朝、会社にいくと机の上にきれいに巻かれた鈴メッキ線がおいてあった。なにがおこったのかなーと思ってみていると、秘書のお姉様が「ごめんなさいー」と。詳しく聞いてみると、机の上にあったぐちゃぐちゃにこんがらがった鈴メッキ線の束をどうにも許せなくなったらしく、正しくまき直そうとしたら破綻して結局2つに分断してしまったと。

どうせ切ってつかうものなので、分断したって何の問題もない。というか、逆にすごいうれしい。

2007年11月21日水曜日

PSoC書き込み器(の先)



PSoC にminiprogで書き込みをするときには、resetをいれて5本のラインをつなぎこむ。
基板にそのためのヘッダを立てるのをいつもやってきたのだが、
すこしでも基板を簡単にするために、ヘッダをサボって書き込む方法を考えた。
そこで思いついたのがICクリップを使って挟んでやる方法だ。28pinのクリップは高かったので、14pinのクリップに。実際は10pinでよかったらしい。
電源は別途テスト用クリップを伸ばすことで対応した。2520の端子を圧着してソケットに差したものをクリップのピンに差し込んで準備完了。分解できるので失敗しても無駄にならない。
反対側には、ピンヘッダを半田付けし、プログラマにさせるようにしておいた。

想像以上に簡単に作れたわりに、基板の配線が楽になって、いくつも基板同じような基板を作るときには重宝する。もっとも、DIP品でないPSoCの場合には別途やりかたを考える必要がある。

積算電力計

自分で作ってみたハードウェアの消費電力を計測したいときは結構ある。たとえば、「これバッテリー駆動でうごかしちゃおうかなー。どのくらいうごくかなー」と考えたときは、仕様値ではなく実測値がほしい。

電力をはかる方法はたくさんあるので、自分の好みの方法を使えばいいんだけど(デジタルマルチメータでもまあはかれないことはないだろうし)、つなげてすぐにわかるというのはそれはそれで便利だ。というわけで、最近愛用しているのがこの積算電力計Watt's UP。RC Electronics社製で、日本ではリトルベランカが販売している。製造者の名前をみてわかるように基本的には電動ラジコンを楽しむ人用の計測器として販売されているんだけど、
  • 累積電力(Wh), 累積消費電流量(Ah), 瞬間電力(W), 瞬間電流(A), 電圧(V)
  • 精度0.01A, 0.01V、MAX 60V/60A
  • 自分の電源は計測源からもとれるし、外付け電源もつく
というあたりで、だいぶ便利に使える。
組込機器の消費電力を計測、内部デバイスをenable/disableしたときに消費電力がどんなふうにかわるか、なんてあたりを眺めているとそれだけでなにかわかった気になるあたりもちょっと気に入っている理由かもしれない。

日本でかっても8000円弱、ってあたりなのでポケットに一ついれておいて損はしないはず。


新しい半田ごて


会社でずっと私物をつかっているのもなんだから、という理由で新しい半田ごてを買ってみた。右の画像が今までつかっていた HAKKO半田ステーション926 。買ったのはもう10年以上前で、ずいぶんお世話になっていた。たとえば、古い話では486SXのノートをAMDの486DX互換のチップに付け替えるために、208ピンのQFPのリプレースを行った、みたいな思い出もある(X11は浮動小数点演算を多用するので、SX->DXになると別物になったようなさくさく感を味わえる。)

使っている人にとっては言うまでもないことだとおもうけど、一度ステーションタイプの半田ごてをつかってしまうと、もう普通の半田ごてには戻れない。ましてや、DIYショップで売っているような温度調整機能がついていないものは論外だ。

で、新しく買ったのは同じくHAKKOのFX951 だ。実は長い間いまつかっている926で満足していて新しい半田ごてを検討したことはなかったので、単に新しい半田ごてをかった、くらいにしか思っていなかったのだが、手に取ってみるとあまりにも違うことにびっくりしてしまった。半田ごて自体の重さとバランスがずいぶんよくなっているし、温度調整も追従性が良いように見える。まだ、あまり使い込んでいないので、何ともいえないが、新しくした意味はあるように感じている。小手先もいろいろとあってずいぶん楽しいし。


とすると、古い926はどうしたもんかなーと思ってしまったりもするが、これはこれで活用の機会もあるだろう。大学の物作りの現場で道具に恵まれていない学生にでも貸し出すか。。

(2007/11/22追記)
そもそもこて先の構造からして違う、っていうのが一番驚いたところ。
あとは、こて台にスイッチが付いていてこてを置くとすぐにスリープにはいってくれるので、散らかった机の上でもちょっと安心できる。そのまましばらく放置しておくとオートパワーオフしてくれるのがとてもうれしい。時代に取り残されいた感じがするのは残念だけど、純粋にいい道具はうれしいな。

2007年11月20日火曜日

部品調達先(国内編)

秋葉原のすぐ近くに住んでいるとかオフィスが徒歩圏内にある、っていう場合でも、いまどきやっぱり困ってしまうことがあるのが「部品の調達先」。秋葉原でも部品屋さんは明らかに減っているし、結局店頭までいかないと在庫の確認や扱いの有無を確認できないことがほとんどだ。

で、このインターネット時代に役に立つのがWebでの通販サイト。
そんなときに役に立つサイトを列挙しておこう。

それぞれ、会社としての登録が必要だったり、事前審査が必要だったりするサイトが混じっていたりするけど、秋葉原までいって部品が見つからずにガッカリして帰ってくることをかんがえると、利用価値が高いと思う。

上のサイトをぐるっと回ると、だいたい入手性がわかるので、部品選択の役にもたつしね。
のせたいサイトはまだあるので次回にでも追加します。

2007年11月19日月曜日

続けます!いいえ、続けてみせます!



ってかんじでしょうか。 by 2人目の中の人。

とりあえず、ORFにむけてPSoCで赤外線飛ばしてます。
トランジスタアレイを駆動して、ピンヘッダの先に延ばした赤外線LEDを取り付ける予定。これをシリアルからコントロールします。

写真アップロード

ローカル画像をアップロードしてみる。
BloggerからPicasa Web albumへのリンクはできるらしいけど。。。両方からシームレスじゃないとあまりうれしくないな。

Youtube動画の貼り付け

Youtubeの動画を貼り付ける練習。

Blogger再チャレンジ

思うところあって、Bloggerに新しいblogをつくってみた。
今度は複数人のチームブログ。

さて、つづくかな。