スキップしてメイン コンテンツに移動

投稿

ラベル(MSP430)が付いた投稿を表示しています

CAL.430FRの開発(7) ADXL362のテスト

CAL.430FRにはADIの3軸加速度センサ ADXL362を搭載してます。 SPI接続で、動作時でも数μAしか消費しません。 コイン電池にはうってつけです。 割り込み出力が2系統あり、振動トリガ、ジェスチャ検知といったレジスタが用意されています。ふるまい検知によってマイコンを起こし、タスクを実行させるといった使い方で、消費電力の削減ができます。 とりあえず、動作確認のために前回紹介したEnergia IDEを使い、ライブラリを利用してADXL362を動かしました。 画像は1Hzで各軸と温度センサの値を画面に表示させています。 Energiaで書いたプログラムを動作させる場合、特にスリープといった処理は入っていないので、CR2032で動かしてもそれほど保たないはずですが、この記事を書いている現在で2週間ほど動作し続けています。 電池電圧の降下率が上がりはじめたので、そろそろ放電カーブの曲がり角に近づいてきているみたいです。 電池からダイオードを挟んでいるため、0.3Vほど電圧降下している分、最後はやや使い切る手前でMSP430のBORが働くことになります。 CAL.430FRのセンサ情報ですが、ADXL362の3軸加速度、温度の他に、MSP430FR内蔵の温度センサ、分圧された電源電圧が取得できます。 外付け部品無しにコイン電池の電圧もわかるので便利です。 

CAL.430FRの開発(6) Energia IDEでうごかしてみる

製作中のCAL.430FRですが、MAKE:Japanのブログで取り上げてもらいました。 プログラマブルムーブメントという名称を頂いて、もやもやと作ってたものを一言で表現してもらえました。 ********** ちょっと忙しくて間があいてしまった。 一旦省電力化のための実装から脱線して、汎用マイコンとしての使い勝手を増してみた。 Energia IDEでの開発環境をととのえる  Energia IDEは、ArduinoAPIも1.0に対応していて、Arduinoライクにてっとり早く動かすのに向いている。  ただし、EnergiaにはCAL.430FRで載せたMSP430FR5949用の定義ファイルは存在しないので、自分で用意する必要があった。  (CCSv6では、Energiaを呼び出して、スケッチを編集する機能もついている)  実際は割と簡単で、FR5969との違いはI/O数だけなので、ボード選択をFRAM LaunchPadとしてビルドしてもアップロードできてしまう。  そのままではAPI上のピン番号定義がFR5969用のままなので、pins_energia.hを改変し、CAL.430FR用のボード定義を新しく作成した。 ということで、Energiaで試せるようになった。 ついでにピンマップを作成。  Energiaで編集したSharpMemoryLCD ライブラリのサンプルを動作させてみた。 これは単なるタイマ周期なので、RTCを使いこなさないといけない…。 ドライバを理解するには、Arduinoスタイルだととっつきにくい。 とりあえず、SPIバスにつないだ加速度センサを動作確認する予定。

CAL.430FRの開発(5) 組み上げ

基板が揃ったので、組み立てを完了。 ベース基板が到着。 CAL430FRは1mm厚の基板だったけど、こちらは構造部材としての強度確保のために一般的な1.6mm厚で発注したもの。  DF12コネクタにから引き出した端子を2mmピッチのコネクタに変換している。Arduinoのシールド的に、基板を積んで機能拡張を繰り返すとどんどん背が高くなるシステムだ。  この基板では部品面にはコネクタ以外の部品は無いけれど、CR2032のホルダが干渉する部分以外の場所には、高さ2~3mm程度の部品を実装する余地がある。 今回コネクタは4mmの高さのものを選択したので、高さ方向の余裕は少なめになっている。 G10ストラップを装着。問題はなさそうだ バネ棒を取り付けてみる バネ棒を取り付けるため、基板加工してみた。ストラップホールの長穴をカットして、出っ張りに1mm刃を取り付けたピンバイスで横穴あけを行う。 穴はセンターポンチで位置決めした。  刃を斜めにしか当てられないので、両側とも1ミリほど掘り下げた程度だけど、結構しっかりと取り付けることができた。これで20mm幅のバンドにも対応できる。 (まだ持ってないけれど) 2タイプ  中央の長穴は、コイン電池の押出し用に設けてみたもの。 よほど短期間にバッテリを消耗するプログラムを書かなければ、いらないかも。 MSP430は、多彩な電力モード、クロック源があり、まだDriverLibのマニュアル片手にサンプルプログラムを修正して触り始めたところだが、まずはサンプルにあった、グラフィックライブラリによる画面描画後、すべてのクロックを停止するLPM4に移行させた。デバッグ中、EnergyTraceにて、FreeRunさせた計測では、停止中はおよそ60μAほど流れている。 1Hzで何かを表示すると、120日以上は電池が保つようだ。 次はLPM3.5、RTCのレジスタ設定、カレンダー割り込みによる間欠駆動を試そう… 外装については、また後日考えることにする…。 

CAL.430FRの開発(4) メイン基板の到着

FushionPCBに発注したメインの基板が到着したので、MSP430FR周りだけ実装して動作確認をした。 最小の5x5cm枠なので、10枚(12枚入り)作ってもらって送料込みで13ドルほど。 36mm角の実物は小さいなぁ…  目視確認してみると、7mill、ドリル0.3、ビア0.6というデザインルールでギリギリな感じ。貫通穴の誤差は基板によってばらつきがある。もうちょっと余裕をもたせたほうが良いかも。 実装を始める。まだ発注してない部品は未実装。 反省点としては、マイコン周辺の1005抵抗とコンデンサを密集させすぎたので、やや置きにくかったこと。 たいていはちゃんとフラックスを塗って、ピンセットで少しずつつつけばセルフアライメント(手動)されるので問題はないけれど…。 QFNもフラックスと予備ハンダ、吸い取り線があれば大丈夫。 一応動作確認は完了。 コネクタと下駄基板が揃うまではUEW線でLaunchPadのデバッガと接続する。 仮組み  システム的にはPNLC方式とTFT方式のメモリ液晶どちらも対応しているが、PNLCのほうはやや寸法が大きいので、基板のネジ穴を掘って、ネジの頭を埋め込ませる必要がありそう。 腕時計ブレイクアウト基板の厚紙モックで大きさ確認 M2の0番ネジ、4mmスペーサによる仮組み。 G10ストラップは相変わらず装着するだけで様になる。

CAL.430FRの開発(3) 構造検討

基板を構造部材として使う。 ・風防、化粧板 (アクリル) ・CAL.430FR (PCB t= 1.0mm) ・ケース (ABS 3Dプリント? 4mm) ・Watch Breakout (PCB t=1.6mm) 電気的にはCAL.430FRで完結しているため、拡張基板が腕時計としての構造を担っている。 ケースは最初基板すべてを包む構造を検討していたけど、間にサンドイッチしてしまうことにした。 防水性などはあまり考えない方向で…。

CAL.430FRの開発(2) DIY腕時計のストラップ

紙モデルA メモリ液晶とくれば腕時計型デバイス(通信機能が未実装なのでスマートウォッチとは呼ばない) 腕時計と名乗るには、リストバンドなどを取り付ける機構が必要だ。 CAL.430FRはのんびりと海をわたっているようなので、今度は腕時計用のPCBパーツを設計して製造発注した。  MEMSセンサなどを実装する余地はたくさんあるのだけど、今回は諦めた。 ブレイクアウト基板なので、20ピンのコネクタは、2mmピッチのピンヘッダ2本で引き出している。  デバッグ用土台でもあり、構造部材でもある。 今回の試行錯誤ポイントだった、上下の長穴は20mm幅のストラップホール。 選択肢の20mm幅のストラップに対応。 紙モデルB  去年末頃、複数のアンティーク腕時計を預かったので、レストア沼に入りかけているのだけれど、お陰で時計全般の知識が少しずつ増えてきた。 腕時計のストラップには2種類の付け方があって、DIY的には、今回発注した基板のようにストラップを通す長穴をPCBに設ける例が多い。 このバンドはG10ストラップという名前がついていて、NATO軍の規格らしい。 バネ棒でバンドを取り付ける、一般的な腕時計に通すことができる。 写真のものは1000円台で正規品ではない。 (黒だと思って発注したらダークブラウンだった) バネ棒を基板に固定してみる PCBにバネ棒をはめ込む そもそも腕時計はバネ棒という棒でバンドを固定している。 これはバネ構造で両端が伸縮する金属棒で、専用工具などで着脱できる仕組み。 バネ棒を固定するなら、3Dプリンタで構造部材を設計して発注かなぁ、と思っていたけど、基板の紙モデルをいくつか試作していて思うところがあったので、すこし実験をしてみた。 写真はユニバーサル基板にバネ棒を固定したプロトタイプだが、横穴をうまいこと開ければかっちりはめることができた。 強度が心配だが、すこし引っ張っても問題なさそう。 これなら、PCBのみで構造が完結しそうだ。   とりあえず、基板が届いたらバネ棒バージョンも試作してみる。 残る検討点は風防(表面のスクリーン)とケース(外装)だろうか… 

CAL.430FRの開発(1)

KiCad(ビルド版 BZR5353)の練習がてら、最初の基板を作成 バッテリ: CR2032 MSP430FR5949 Sharp メモリ液晶(96x96 or 128x128) 加速度計(ADXL362)  テーマは時計的な物。 腕時計に倣って、 CAL.430FRという型式をつけてみた。  機能と用途を整理してみると、画面とボタンと加速度センサが付いたRTCモジュールと定義することができそう。   MCUはMSP430FR5949。最近遊んでいるMSP430 FRAM LaunchPadのターゲットであるMSP430FR5969と比べると、高速水晶発振子用の端子が無いのと、I/Oがやや少ない以外は共通した仕様。  拡張性は20ピンの基板間コネクタ(ヒロセのDF-12)で別基板へ逃がす。 UART2ch、SPI、ソフトウェアI2C、GPIO、プログラマ/デバッガ用の端子をまとめて結線する。  最終的に、5つのタクトスイッチを両脇に実装し、36x36mmの基板外形に落ち着いた。 CR2032の電極パターンとメモリ液晶のコネクタ、ドリル穴(M2)の位置が決め打ちなので、残りの配線、部品実装エリアは思ったよりも狭くなる。 ぐじゃあ  今回は習熟のために、部品ライブラリは全部自作した。 PCBエディタのライブラリの管理形態にかなり癖があるが、いずれ改良されそう。  PCB側の配線作業は、リアルタイムDRCや押しのけ配線が有効化されていてかなり楽だが、時々フリーズするのでCtrl+Sが必須だった。  PCBを引きながら回路図や部品サイズを修正し、その都度ネットリストを更新して使うことができるようになってきたので、KiCadを習得するという目的はほぼ達成できた。 3D表示ができて、実際の仕上がりに使いイメージで基板を眺められるのはとても良い。 ガーバービューワが標準で同梱されているので、発注時にガーバーファイルを点検できる。 特に問題なさそうだったので、FusionPCBにガーバーファイルを送って発注し、あとは到着を待つだけとなった。 7millで配線したけど大丈夫かな。   2枚目の足回り基板は用途別に作れることになったので、電源もいろいろなタイプ...

メモリ液晶を試す

スマートウォッチブームで、小型で省電力なディスプレイが注目されている。 このうち、割と入手しやすいものにシャープのメモリ液晶がある。 有名どころではPebbleが採用しているものだ。 Memory in pixcel という仕組みで、画面更新頻度を大幅に落とすことができるモノクロ液晶である。  (表示を維持するためにはわずかだが電力は必要で、電子ペーパーとは異なる) 参考 :メモリ液晶ディスプレイの構成と特徴   http://www.sharp.co.jp/corporate/rd/35/pdf/100_06_A4.pdf 今回、2タイプの液晶を取り寄せて比較してみた。 (Mouser) LS013B4DN04 96x96  ドットピッチ:0.252mm  画面保持6uW、1Hz更新 12uW  @3V LS013B7DH03 128x128 ドットピッチ0.18mm  画面保持50uW 1Hz更新 130uW @3V ※数値はデータシートより抜粋 96x96画素のものはPNLC(/散乱型液晶)とあり、液晶層は下層の鏡面を透過/不透過することでピクセルを構成している。完全に透過にすると鏡となる。 動作中に電源を切り離すと、画面は徐々に不透過に戻っていった。 128x128画素のものは後発のHR-TFT型で、視認性の高い黒いピクセルだ。ディスプレイ自体も薄くなっている。電源を断つと、表示はすぐ消える。 L: 96x96 PNLC                        R:128x128 HR-TFT PNLCタイプはガラス基板の配線が直接観察できて綺麗だ。 96x96の液晶は、MSP430LaunchPad向けの拡張基板で、Sharp ® Memory LCD BoosterPack として入手することができる  http://www.ti.com/tool/430boost-sharp96 この拡張基板を使えば、いろいろなメモリ液晶の評価が簡単にできるようになっている。 5V系大型ディスプレイ用にDC/DCが...

MSP430FR5969 LaunchPadの修復

MSP430FR5969 LaunchPadで最近遊んでいる。 低消費電力前提のアプリケーションや、FRAMに変数を置く使い方を試しているところ。デバッガに搭載されたEnergyTraceも、消費電流を細かく観測できて面白い。 手元のボードで問題が起きたのは、Energiaで試そうとして、デバッガをアップデートするという表示が出た時。 アップデートを選択したところ、失敗したというダイアログと共に、COMが消え、デバッガの緑色のLEDも消えてしまった。 USB経由ではケーブルを挿しなおしてもまったく認識されない状態に陥った。 裏のソフトウェアのバージョンが古かったのかもしれない。 もうすこし調べておくべきだった…。 USB経由のブートローダーが生きているはずだが、接続しても何も出てこない。 文鎮化していた。 仕方ないので、デバッグのインターフェースについていろいろ情報を集めた。 新しめのLaunchPadに搭載されたデバッグ部分は、ez-FET Liteというもので、いろいろなマイコンをデバッグ可能らしい。 調べるとオープンソース用のパッケージがあった。 リビジョンは1.1で、ソフトウェア、回路図、ドキュメントが含まれている。 http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430_ezFETLite/latest/index_FDS.html 部品発注も兼ねて、もう一台新しいLaunchPadを発注…。 (モノが届くまでに、UART BSLによる書き込みを試してみたが、上手く認識できなかった) 手順  ボードでの作業 MSP-EXP430FR5969 Hardware Design Filesの回路図、レイアウト図を参照 ・ターゲットとなるデバッグボードの、3ピンと7ピンのスルーホールにコネクタをはんだ付け ・書き込み側のLaunchPadのターゲット側のジャンパピンを全て外し、単独のデバッガとする。 ・書き込む側の EZfet-VCC, GND, TEST, RESET へ接続。 書き込み作業 (作業環境: Windows7) MSP-EXP430FR5969 Software Examples eZ-F...

energy harvesting testboard

太陽電池とキャパシタを電源にするために、MSP430LaunchPadで開発ボードを組んでみた。 ここ数ヶ月の発電実験で、規模的に余計だった要素を省いていった結果となる。 このシステムは屋外みたいな日照の安定しない、昼夜が存在する環境を想定している。 となると工場のように24時間光源が存在する特殊環境ではないので、発電した余剰エネルギーを貯めて、曇りと夜を乗り切らなくてはならない。 ・太陽電池(9直の単結晶シリコン) 4.5V 10mA出力 ・MSP430G2553 ・EDLC MSP430は下限電圧が1.8V、今回つけたEDLCは2.7Vが耐圧の規格上限なので、 おおよそ0.9Vの範囲内で動作するだろう。 それ以下の電圧のエネルギーはもったいないけど利用しない。 (実質3.3Fくらい) LiCが入手出来ればその点は改善されるだろう。 過充電防止はディスクリートでは設けず、電圧をモニタして、日照時の余剰電力を負荷に回すことでソフトウェア的に実現する。(ハイサイドスイッチでも良いがお手軽にしてみた)  具体的には数mA~数十mAのLED、無線系(XBee?)などなど。  電気二重層コンデンサは過放電については心配しなくて良いから、電源管理は稼働率の配分だけになる。 枯渇時はほとんどスリープ状態。 センサはI2Cバスにぶら下げて拡張しようと思う。 今ついてるのは ・S11059(I2Cカラーセンサ)  http://akizukidenshi.com/catalog/g/gI-06793/ ・BMP180(MEMS気圧センサ) ・TMP006(放射温度計)  LaunchPadはEneriga IDEで使っているけれど、最新の配布バージョンだとI2C周りのバグがとれていない。(2013/08/03現在) なので、以下の点に注意が必要。 ・MSP430のCoreライブラリをgithubの最新版に差し替える。 ・ピン定義と、サイトのPinMapで示されるSDAとSCLはなぜかMSP430G2553の実際のHWピンと逆なので注意。    正しくは、  P1.6: SCL P1.7: SDA ・ボード上でI2Cを有効化するときは、LED2(緑色)がSCLと干...