goo blog サービス終了のお知らせ 

寝ても覚めてもPSoC

電子工作とマイコンをやりはじめました。
ど素人ですので配信する情報の取り扱いには十分注意してください。

PSoCで温度送信機 その後[LM60 24C512]

2010年01月25日 | PSoC
電池電圧を測定してみました~!

室温と車内で計測し、グラフにしてみました。
・電源は単四エボルタx3
・回路の消費電流は18mA
・計測期間は約18時間(1分間隔)

まずは室内です。(AM2:00計測開始。電池フル充電)


次に車内です。(AM1:00計測開始。電池フル充電から2日放置状態)


えー、どんどん温度が下がって、日中は17℃ぐらいまで上がって、その後は徐々に温度が低下。
電圧については、朝方の0℃付近から10℃ぐらいになったとき、若干電圧が回復しています(10mV程度)。
やっぱ低温音は電池は弱くなる!?いや、エボルタ君すげ~!のか!?
次はアルカリ電池でやってみよっかなぁ。

回路図です。

※2/5追記 回路図のレギュレータ部分が間違っていたので修正しました。

回路図では6Vになっていますが実際は違います。フル充電直後なので1.4Vx3で4.2Vです。
TA48M033Fの必要電位差0.65Vって事は最低4Vは必要なのに...出力はちゃんと3.3V出てたのかな。特に車内の方は最初から4V切ってるし
あと電池電圧を分圧して3.3V内に収めていますが、100KΩはちょっと大きすぎるかな~とか。よくわかりません。
データの記録は秋月で売ってるシリアルI2C EEPROM 24C512を使いました。
64KBで小さい(?)ですが、ログ記録としては便利ですよね。

うーむ、今回...俺は...何を...やってんだろ orz
って感じですが、電池の電圧が監視できるようになったのは嬉しいなぁ\(^o^)/
目指せ!はやぶさ探査機だ!
『ほら来た。(キリッ)』って言ってみてぇーーーwwww

PSoCで温度送信機 成功[LM60 XBee]

2010年01月16日 | PSoC
計測に成功しました!

[2日目]
天気:雪
最低気温:-2.6
電源:単三6本

[3日目]
天気:曇
最低気温:-3.5
電源:単四3本

両日凍てつく寒さだった事がわかります。

消費電流を測ってみると、
計測時:79.6mA
スリープ時:4.3mA
でした。(20℃、レギュレータOUT端子の直後)
XBeeだけでも50mA程度使うらしい。
ちなみにGlobalResourceのAnalogPower、Op-Amp Bias、A_Buff_Powerを Low にすると、スリープ時は 0.4mA になりましたが、High の時と比べて温度が2℃近く差が出ました。
うーむ、回路が悪いのかな
まぁとにかく、今回は過酷な環境下で長時間稼働させる難しさを実感しました。(といっても電池で一晩だけどw)


■センサー側(PSoC XBee LM60)回路図

PSoC XBee LM60回路図


■受信側(XBee AE-UM232R(FT232RL))回路図

XBee AE-UM232R(FT232RL)回路図


プロジェクトです。
デザイナ: 5.0 SP6
デバイス: CY8C29466
コンパイラ:ImageCraft
PSoC_TempTransmitter[XBee_LM60.lzh


低温時のバッテリー電圧の変化が知りたくなった!次はこれを作ってみようかな!

※3.3V版のMiniProgが欲しいと思う。間違えてPowerCycleで書き込んでしまい、あやうくXBeeを壊すところだった...orz


PSoCで温度送信機 失敗[LM60 XBee]

2010年01月13日 | PSoC
寒い。寒いぞ!
しかも冬将軍が来ているらしい。厄介なことに雪が降るというのだ。
こりゃ氷点下になるな...

おっ!?
そういえば氷点下の温度もお手軽に測れる温度センサを買ったのを思い出した。
秋月で売っているLM60です。

いつも使っているLM35DZは、0℃までしか測れない。
しかし、こいつならマイナス温度を測れる!いいぞ、フラウボウ、否、LM60!
LM60は424mVのオフセット電圧があり、そこが0℃を示すらしい。
あとは6.25mV/℃でリニアに変化するのでLM35DZのように簡単に扱えそうだ。
ブレッドボードで作成すると、LM35が示す温度と多少違うけど、ICの特性という事でとりあえず了解w

さて、これを外に...と思ったけど、2つの問題点が発生。
1.結露が怖い
2.現在の気温が知りたいけど、外に出て確認するのは寒くて嫌だ

1は、やっぱ素人なので状況を予測できない。ケースってどれぐらいの密閉度があるんだろう。
という訳で、ヘタレな僕は車の中に入れることにした。
2は、これまた衝動買いしたXBeeモジュールを使って通信させる。これで家の中から計測値を取得することができる。通信距離は、まぁ大丈夫だろう。
念のため、最低温度をE2PROMモジュールを使用して記録するようにしておいた。

センサー側は、
・PSoC: CY8C29466
・温度センサ: LM60
・通信: XBee
・電源: 単四エボルタx3 TA48M033F
・備考: 5秒間間隔で計測し、計測時以外はモジュールをストップさせ、PSoCをSLEEP。XBeeも同様にSLEEP。

XBeeが3.3VなのでPSoCも3.3Vにして統一。
そうそう、LM60がLM35DZより優れているのは3.3Vでも動作可能って所もありりますね。(しかし、以前ColdFireでやったときは3.3VでLM35DZをむりやり使ってましたが...)

クライアントは、とりあえずPCを使う事にして、
・ターミナル: TeraTerm
・シリアル: FT232RL USBシリアル変換モジュール
・通信: XBee
・電源: USB
としました。
FT232RLモジュールは3.3Vを出力(PIN17)してくれるので、こいつをXBeeの電源へ。
TXRXはレベルシフトが必要だけど、XBeeからFT232RLへは直結。FT232RLからXBeeへは5.1Kと10Kの抵抗分圧にしました。
実はFT232RLのJP1を切り替えることで、IOの電圧を5Vと3.3Vの切り替えができます。ナイス!ですね。しかし、ここは男は黙って抵抗分圧(勉強のため)。

LM60 XBee
10cm程度の距離で通信確認をして、センサーブレッドボードを車内へ。うーさぶっ!
家に戻り、ターミナルを見ると(車内)温度が送信されてきている。
20℃程度から10℃ぐらいの場所へ一気に移動させたけど、温度の変化は思ったより緩やかですね。
これで、朝方にマイナス温度を記録するだろう。果たして、マイナス何℃なのか!?


が、計測は失敗に終わった。
最後に計測した温度は0.9℃だった。外は大雪。そんなはずは...
むむむ、一生懸命作った温度計が動作しないのは、何故だ!?
『坊やだからさ...』
ガルマが死んだのはそうかもしれないが、どうも解せない。
PSoCもXBeeもエボルタも氷点下でも稼動すると書いてある。
何故だ!

原因は....たぶん電池 (まぁ実際、車の中では氷点下にならないかもしれないけど)。
低温時は思った以上に消耗するらしい(電圧がかなり落ちる?)。
エボルタの説明には
----------------------------------------------------------------
●寒い場所での使用に強い!!
幅広い使用温度に対応。特に低温に強く、-20℃でもご使用いただけます。
(ただし、常温使用に比べると 電池の使用時間は短くなります。)
----------------------------------------------------------------
と書いてあるけど、零度近くから減りが極端に早くなってたりして。


明日は最低気温-4℃で雪のようだし、フル充電の単三エボルタ6本と計測1分間隔にしてやってみよう。車の窓も少し開けておくか。
なんとしても氷点下表示をキシリア様にお届けしたいのだ!

いやしかし、たかが温度計なのに思ったより大事(おおごと)になってるな~。
されど温度計ってことか...反省。

君は、氷点下を見る事ができるか!?


※プロジェクトファイル、回路図等は後日にします。



リンクを追加

2010年01月08日 | その他

ふと、ブログのリンク(ブックマーク)を見たら何か違和感を感じた。
うーむ......。

そうだ
まだ全くPSoC・電子工作というものがわかっていなかった頃、めちゃくちゃ参考になったサイトが無いのだ!
そのサイトとは『dinop.com』。
大変お世話になったサイトを忘れているとは....orz
ソースコード、設定も画像付きで説明されていて、
キタ━━━━━━(゜∀゜)━━━━━━ !!!!!
って感じでした。
このサイトが無ければ、PSoCを使っていなかったでしょう。挫折寸前でしたからw

という訳で、リンクしました



PSoCでDTMFデコーダIC[CM8870PI]を使う

2010年01月07日 | PSoC
年末に作成したやつです。
少し前にPSoCでDTMFエンコーダとデコーダをやりましたが、秋月を見ていたらDTMFのデコーダICを発見したのでPSoCでやってみました

回路図です。




DTMF信号の解析に成功するとCM8870PIのStD(pin15)がHighになるので、PSoCはGPIO割り込み(立ち上がり)で4bitデータを取得します。
実はICに付属している3端子の3.58MHzの発信素子の使い方がわからなくて、ICよりもこれに時間がかってしまったw
いやほんと、こういう基本的なものはすんなり使えるようにしておきたいものです
UPしたプロジェクトにはDTMFエンコードも入っていますが....
void main(void)
{
	const char *pcPhoneNumber = "987654321015739";
	
	M8C_EnableGInt;

	PGA_1_Start( PGA_1_HIGHPOWER );

	DTMFDialer_1_Start( DTMFDialer_1_HIGHPOWER );
	DTMFDialer_1_StartSamples();
	DTMFDialer_1_DialFromRom( pcPhoneNumber );
}

 
とりあえず鳴らすなら、モジュール配置して上のコードを書くだけ。
これでドラマ24でジャックバウアー達が使っている携帯電話のダイアル発信音が(発信間隔を倍速に設定すれば)再現できますwww
それにしてもCTUが使っている携帯端末ほしいなぁ。万能さに感激しました。それでいて電池の持ちも素晴らしい!
話が脱線しましたが、実用の際には発信音の長さや間隔を調整し、それにあわせてデコーダICの方もR1やC1を調整しなければならないようです。
僕は趣味で遊びレベルなのでこれでOKですけど。


プロジェクトです。
デザイナ: 5.0 SP6
デバイス: CY8C29466
コンパイラ:ImageCraft
PSoC_DTMF[CM8870].lzh





PSoCでグラフィックLCD[SG12864A] for ImageCraft

2010年01月04日 | PSoC
明けました!!

今年最初はグラフィックLCDです。そういえば、ブログの最初の記事もLCDだったw
前回の記事はコンパイラがHi-Techだったので、ImageCraft用に変更しました。
ついでに、VRAMをメモリで保持するようにしました。ドットを多く処理する場合は少し速く描画できます。そのかわり、メモリを多少使います。
処理内容によってはもっと最適化(まとめて描画して更新場所だけ転送等)できるので、速度は出せると思います

動画(YouTube)です。このブログはobjectタグで直接貼れないらしい...



※1/6追記
ブログパーツ化する事で表示可能でした。


回路図です。前回と変更ありません。


プロジェクトです。
デザイナ: 5.0 SP6
デバイス: CY8C29466
コンパイラ:ImageCraft
PSoC_SG12864AII.lzh