「組み込み」タグアーカイブ

MSP430 マイコン温度ロガー ソースコード公開

MSP430G2553と、I2C接続の温度センサ、EEPROMを使用した、温度ロガープログラムのソースを公開します。

本プログラムの実行には、上記 周辺ICの接続された回路と、USB-シリアルなどの PCとの接続手段が必要です。
(回路図は 以前掲載したこれ。KiCad版。)
また、シリアル端末からのコマンドや取り扱い説明など、本来、色々ドキュメントが必要であり、それら無しでは単なる不親切なモノでしかないのですが、追々揃えていくつもりです。

ダウンロードページはこちら

これは、温度ロガー基板を冷凍庫に入れて測定した結果をダンプし、Excelでグラフ化したものです。 -18℃といった温度が記録できています。
リチウムコイン電池、CR2032 は、カタログ上は -30℃まで使用できるようです。

冷凍庫の温度ログ
冷凍庫の温度ログ

Lattice PLDのセミナーを受講

木曜日は、仕事先で集団受講のチャンスに加わって、LatticeのPLDの講習を受講しました。
講習の内容は Latticeの開発ツールの Diamondの使い方の説明と演習です。
Mach XO2は比較的 低価格な方のPLD (FPGA)なのですが、回路情報のFlashメモリは内蔵なので、外付けの必要は有りません。
また、SPIやI2Cなどは最初から内蔵されていて、HDLで自分で組まなくて良いなどの利便性があるなど、なかなか面白そうなデバイスでした。

MachXO2 breakout board
MachXO2 breakout board

演習で使った Mach XO2の評価ボードをそのままプレゼントで入手。

KiCad を試す

MSP430の温度ロガー回路、回路図をテキストファイルに罫線で描いていた物を、いいかげん 回路図CAD図面化しようと、とりあえず KiCad を使って入力してみました。

KiCad Screen Shot
KiCad Screen Shot

MSP430 温度ロガー 回路図 (PDF)

KiCad の回路図エディタの使用感ですが、OrCad や LTspice など、Windows上で動く、今まで色々経験してきた回路図エディタと比べると、操作性にクセがあって直感的になじめない感じ…というのが第一印象です。 慣れてくれば戸惑いは減るかも知れませんが。
DesignSpark もフリーで使えるので、試してみようと思います。

まだ、とりあえず入力してみただけなので、基板化を意識した入力になっていません。ゆくゆくは発注して作ってみたい所ですが、それには適当に選んでいた部品を、部品種も正確に選ぶ・・・例えば抵抗ひとつにしても、リード型かチップの1608か、等が必要になると思います。

MSP430 XCAP設定を動作中に切り替え可能か?

製作中の温度ロガーですが、内蔵時計 (RTC: Real Time Clock) をプログラムで実現しています。WDT (Watch Dog Timer)で、1秒毎のインターバル割り込みでカウントアップさせ、すぐさまLPM3モードに移行させる事で、コイン電池(CR2032)での長期間動作が可能になっています。 この時計、遅れ/進みはあります。
MSP430は、32K水晶の負荷容量をチップに内蔵しています。またその容量値をレジスタ設定で4種類に可変出来ます。
5pFの設定にしたら、一日あたり5秒ほど遅れる時計になりました。そこで、1pFに設定を変えた所、今度は一日5秒位進む時計になりました。

さて、アイデアですが、この状況で、例えば毎日 12時間だけ5pFに設定し、次に12時間 1pF設定にすれば、遅れ・進みは相殺されて、トータルとしては見かけの時計精度を上げられるのではないでしょうか?

水晶発振回路の負荷容量は、一般的に発振余裕度を考慮して、回路とのマッチングを見た上で決定します。コロコロ変えるなどとんでもない。と、教科書的な答えとしてはそうです。しかし、趣味の電子工作ならば、試してみても面白いのではないでしょうか。

この疑問、TI の e2e コミュニティの英語の方で質問しています。
Can I change XCAP setting while running MCU ?

MSP430 で温度ロガー 製作中

昨年末頃より、MSP430G2553 を使って秋月 Cタイプ基板に収まる温度ロガーを製作中です。

MSP430 温度ロガー基板 プロトタイプ
MSP430 温度ロガー基板 プロトタイプ

I2C温度センサーIC、STTS751 で温度を測り、シリアルEEPROMに書き込むことで数日間の記録を取り、あとでシリアル (USB-UART I/F)を接続してデータを読み出す仕組みです。

USB-UART I/F (CP2101基板, aitendo) を接続しているところ
USB-UART I/F (CP2102基板, aitendo) を接続しているところ。 右の 4pin SIPソケットはマイコンに書き込み・デバッグ用。

回路図は・・・全部 罫線で書いたテキストファイル! (^-^;;;)

回路図 (1/2)
回路図 (1/2)

回路図 (2/2)
回路図 (2/2)

MSP430 Launchpad ジャンパをDIP-SWで代替

MSP430 Launchpad でプログラミングしているとき、LPM3 の低消費モードに入れた場合に、「ちゃんと消費電流落ちているかな? コイン電池で動かすと何mAくらいかな?」と確かめたい場合があります。
その場合は、ターゲット部とエミュレータ部を接続しているジャンパプラグを全部取る必要があります。
これが、まぁ小さいし、頻繁に取り外しをしているうちに飛ばして紛失してしまったりと、色々不便なので、ジャンパ部の接続/切断を簡単にできるよう、DIP-SWで置き換えてみました(写真、基板裏面):
MSP430 Launchpad jumper to DIP-SW

写真の基板は rev.1.4 であり、TXD-RXDの接続をクロスさせないといけないので、その2本の信号はヒネッてつなげています。
また、VCCだけはスイッチでなく、表面のジャンパで接続/切断するよう、残してあります。DIP-SWが裏面にあることを忘れてしまい、「動かない!」と慌ててしまった事があり、オモテ面で接続/切断状態が目に見えるものをあえて残しておこうという意図です。

我々エンジニアにもできる、 「こんなこともあろうかと」

使うものがマイコンにせよ、FPGAにせよ、電子工作好きの人々の中には当然ながら現役のエンジニアがいる。古くはラジオ少年、無線少年の時代を経て、時代が変っても同じなのは、それなりの「技術」を応用して、何かを成し遂げる点にある。
今まで知らなかった物に触れ、できなかった事に取組む。調べても分かりにくかったり、習得に時間が掛かったりもするだろう。様々な困難を乗り越えた暁(あかつき)には、ついに、自分の手によって動く実物が目の前に現れる。今までは「できないこと」が「できること」に変っている。 それは何よりも喜びであり、自分の成長を実感できる瞬間でもある。

一方で、エレクトロニクスの開発の現場は、以前に比べて劣化の一途をたどっている。開発自体のオフショア化の推進により、国内の現場は空洞化が進んでいる。上司と部下、ベテランと若手といった関係で、徒弟制度のように設計やデバッグ手法が伝授され育てられていった以前に比べて、大企業ではコンプライアンス重視が進んで残業は制限されている。
指示された仕事だけをやっていればよい、それ以外を勝手にやるなんて行為はよろしくない、といった風潮が強まっている。現場で創造的に行動するエンジニアを見かけなくなったと感じている。

半導体などの部品を売り込みに来る営業さんと面会して話す機会がある。
以前はある傾向が顕著だった。売り込む部品 (商品)を、こちらが使う脈がありそうだと熱心に売り込むが、今現在は類似品を使っていないとか、使う可能性が少ないと分かると、途端に相手をしなくなる。 まぁ、商売で売り込みに来ているのだから、当然と言えば当然だ。無駄を省いて効率的に取れる商談をしたいのが本音だろう。

ところが最近、この傾向が変ってきたのかな? と感じる事がある。採用の見込みが少ない部品に関しても、結構丁寧に説明してくれたり、こちらの技術的質問に回答するなど、サポートしてくれたりするのである。

これは推測ではあるが、もう業界自体が、80年代、90年代のように、大量に製品開発して大量に売るという時代では無くなってきたから、各社部品営業も、たとえ小さな商談でも沢山取ろう。だから、たくさんの可能性に賭けて丁寧に売り込もう。そういう空気に変ってきたのだと思う。

半導体部品は、それ自体は高い物もあるが、安い物も多い。ARM Cortex-M0のマイコンが、もう100円前後とか、それ以下の値段で手に入る。FETやトランジスタなどの個別半導体はもっと安い。
しかし、簡単に使えるかというとそうではなく、知識や技術を必要とする。間違って使うと簡単に破壊する。 半導体メーカーが今までアマチュアに冷たかった(今も冷たい) のは、素人の質問に対応しきれないという実情があったのは間違いない。
一方で、そういう点を理解し、正しく使える相手は、ひょっとすると将来の優良顧客に化けるかも知れない。営業はそう考える事だろう。

このような環境の中で、我々エンジニアはどう振る舞うとよいのか。

ズバリ、「大いに利用しよう。」

目の前で開発されている機器の、もう何年も安定して動いているから、といって、改良しようなどと言うライバルは、いないのである。
(すごく沢山いるよ、という職場もあるかも知れない・・・そういう人は、恵まれています!)

こっそり改善案を考案し、実際に作って検証しておこう。そして、機が訪れたら、さっそうと出すのだ。
「こんなこともあろうかと」と言いながら。

MSP430 Launchpadを使った I2Cデバイス アクセスツール

I2Cデバイスはマイコン周辺の機能拡張に便利ですが、チョット試しにアクセスして挙動を見てみる、といったことが気軽に出来ません。
シリアル端末から簡単にread/writeを試せるツールを作りました。

i2c-access-tool

内容は以下:

MSP430 LaunchpadによるI2Cアクセスツール-web (トラ技通信 投稿原稿ほぼそのまま)

公開ソース類はこちら。

MSP430 Launchpad の Rev. 1.4 と 1.5 の違い

espyの日記:Launchpad の密かなアップデート
このスラド日記に書いた内容だが、改めて。 追加情報もあり。

MSP430 Launchpad は、途中で 同梱チップが変っている。
同梱チップの新/旧と、その仕様概要は以下の通り。

msp430-Lpad-old-new

そして、基板の版数も Rev. 1.4 → Rev. 1.5 と変っている。

Rev.1.5に変ったのは2012年。 この基板の更新と、同梱チップの変更とは、同時に行われているそうだ。(TIの営業さんに尋ねて確認した)
またRev 1.5以降は、パッケージの箱の表面に貼られたシールに書かれており判別ができる。

特に気になるのは、エミュレータ部にある UART機能と、マイコンチップの TXD/RXD信号との対応。
LaunchPadは、USBケーブルで Windows PCと接続すると、デバイスマネジャのポートに「Application UART(COMx)」といったポートが現れる。これはその名の通りCOMポートであり、TeraTermなどを使えばターゲットマイコンとシリアル通信が可能だ。
だが、マイコン側では UART機能は、上の表の 4種類のチップのうち、MSP430G2553 にしか内蔵されていない。 ただ、Launchpadのソケット自体は 20pinなので、 Rev. 1.4以前の基板にも G2553を刺して使用できる。
ところが残念な事に、エミュレータのUART機能の TXDと、G2553を刺した場合の RXDとが対応しておらず、両者のTXDどうしがぶつかっているのだった。

Rev.1.5基板ではこの点が改良されている。そのまま使うと、TXD同志,RXD同志がぶつかってしまうのは同様なのだけれど、 エミュレータ部とターゲット部をブリッジしているジャンパピンのところで、普通は縦向きに差し込むジャンパを、TXD/RXDの所だけ横向きに刺すことで、TXD/RXD信号をクロスさせることができるようになっている。

Rev.1.4では、マイコン側でソフトウェアUART (BitBang方式とも呼ばれている)を使って、エミュレータ部とシリアル通信するサンプルプログラムなどもあるので、Rev.1.5では Rev.1.4と互換を保ちつつ、クロス接続もできるという仕掛けにしたようである。 この点はよく考えられている。