2016年12月10日土曜日

mbed LPC1114FN28 で開発して単体LPC1114FN28に乗せ換えて使用するための工夫

これはmbed Advent Calendar 2016 12/10の記事です

初めに

LPC1114FN28はIC単体での入手が容易なので小さなシステムに向いています。ただプログラムの書き込み手段を用意する必要があります。




mbedLPC1114FN28は、ICを載せUSBからのプログラム書き込み、USB-Serialによるデータの送受信に対応したmbedボードになります。

開発時にはmbedLPC1114FN28を使い、開発完了したらボードからICを取り外しユニットに実装すればよいのですが、2点問題があります。

1.          mbedLPC1114FN28へのICの実装が通常のICソケットなので抜き差し時にPinを破損させる可能性がある。
2.          mbedLPC114FN28IC単体のLPC1114FN28Pin間隔が異なるのでそのまま実装できない

この2点を解消する方法を紹介します。

詳細

1.mbed1114FN28にゼロプレッシャーICソケットを載せる

mbed1114FN28ICソケットにゼロプレッシャICソケット(28Pin)を実装します。こうすれば、ストレスなくICを抜き差しできます。



で、800円でした。

























ゼロプレッシャーICソケットを載せたところ          その上にICを載せたところ


ゼロプレッシャーICソケットは通常のICソケットより一回り大きいので、下になるmbedLPC1114FN28のタクトスイッチなどと干渉しないかを確認してください。また、mbedLPC1114FN28の基板からもはみ出すので、ICを実装するユニット上での部品の干渉に注意してください。

2.mbedLPC1114FN28LPC1114FN28(単体IC)のピン間変換コネクタ

mbedLPC1114FN28PIN列幅は、LPC1114FN28より1Pin分内側に入っています。


開発するユニット側はLPC1114FN28のピン間に合わせるので、mbedLPC1114FN28はそのままでは実装できません。このため変換基板をユニットとmbedLPC1114FN28の間に挟みます。


左から、mbedLPC1114FN28,  LPC1114FN28(単体) , 変換基板



変換基板のピン間の違い。左がmbedLPC1114FN28, 右がLPC1114FN28(単体)


変換ソケットでもう一つ配慮する点があります。mbedLPC1114FN28を使う場合はmbedボード上のUSBから電源供給されますが、LPC1114FN28の場合は別電源を用意します。
mbedLPC1114FN28を使う場合は、mbedボードのUSBと、別電源の2方向から電源が供給される可能性があるので、変換基板のLPC1114FN2822Pinmbedボードから外にのみ電流が流れるようにダイオードをいれます。
こうすると、開発中はmbedボードからユニットに電源供給して、開発終了後はユニットからLPC1114FN28に電源供給することができ、電源に関して配慮が不要になります。




以下に全部を組み合わせたところと、使用例の写真を紹介します。



ゼロプレッシャーICソケット+mbed+変換基板を組み合わせたところ



















キッチンタイマーで使用しているところ




                                        キッチンタイマーとmbed



以上 

2016年10月23日日曜日

デジタルSW用ライブラリ

外部割込みを使うことで、2つ以上でも動くようになりました。(161204)
SW1つなら動きますが、2つ定義すると動かなくなります。原因わかりません。(161029)

タクトSWをmbedに接続して、チャタリングキャンセルを行い、SWレベルとOn/Offエッジを検出するライブラリを作りました。

mbed web


SWはよく使うと思いますが、ポート状態を直読みすることが主流のようで、チャタリングによる誤動作や、On,Offエッジ認識ができないことが不満でした。

ライブラリも探したのですが見つからなかったので作成しました。

<参考>
複数のデバイスを定義する方法 ”用語:クラスライブラリ”(161029)

ロータリーエンコーダのライブラリ作成

メジャーな部品なのでライブラリがあると思ったのだけど、うまく動くものがなかったので作成しました。

mbedのlibraryページとサンプルプログラムのページ


補足:

ライブラリを探していて見つけた資料。初心者にいいかも

mbedの利用方法

2014年2月23日日曜日

Buletoothモジュール(RN-42XVP)の青mbed(LPC1768)での動作確認


Buletoothモジュール(RN-42XVP)の青mbed(LPC1768)での動作確認

 

<概要>

 

この記事はmbed Webと同じ内容です。
 
トランジスタ技術20143月号 3章のBuletoothモジュール(RN-42XVP)LPC810を使った作例で、LPC810を青mbed(LPC1768)に変更して、配線とmbedプログラムを簡素化して動作確認をしやすくしました。

 

動作例動画:
 


 

 

<機材準備>


1.配線


Buletoothモジュールへの電源供給はmbedから行います。またシリアル通信線2本をmbedに接続します。

 

2.Androidアプリ


AndroidアプリはCQ出版社のwebからダウンロードします。


パソコンからandroidへのインストールはトランジスタ技術の記事を参照してください。
 



 

3.青mbed(LPC1768)のプログラム


Mbedwebからダウンロードしてください。


 

<動作>


Androidアプリはテンキー(09)と”LED ON/OFF”のボタンがあり、これらのボタンを押すとアスキーコードの’0’’9’,’+’,’-‘が送信されます。これを青mbedで受信して、mbed上の4つのLEDを制御します。また受信したデータをmbedUSB-Serialで外部に送信します。パソコンでターミナルソフト(TeraTarmなど)で確認できます。

 

以上

2013年12月28日土曜日

7セグメントLED出力Libraryのサンプルプログラムの説明

7セグメントLED出力Libraryのサンプルプログラムの説明

<概要>

8桁までの7セグメントLEDの表示制御を行うLibraryと、Libraryを使用したサンプルプログラムについて説明します。

Libraryとサンプルプログラムは次のアドレスからダウンロードできます。
Library:
http://mbed.org/users/suupen/code/SevenSegLed/

サンプルプログラム:
http://mbed.org/users/suupen/code/SevenSegmentLedSample/

サンプルプログラムの動作

http://youtu.be/jr09w8Pw0Lg



<Libraryについて>

7セグメントLED(正確には“ドット”を含めて8セグメントになります)をダイナミック駆動します。
8桁までの表示に対応しています。LPC1768なら、最初の端子設定で、1~8桁のいずれかを選択できます。(LPC1114FN28では、未使用になるCOM端子があると動作しませんでした。この場合はLibrary自体を修正して、COMの未使用端子部分のコードを削除する必要があります)
LEDは設定変更で、アノードコモン、カソードコモンどちらでも使用できます。また、表示変化方法も、1秒かけてスムーズに変化するものと、遅れ無しに変化するモードを選択することが出来ます。
COM端子の切り替え周期は1[ms]ですので、8桁表示(8本のCOM端子)の場合は8[ms]で全桁の表示を行います。
スムース表示は、10[ms]毎に表示輝度を変化させています。

このLibraryで使用するmbed機能

・ チッカータイマー(Ticker) 1[us]単位、1[ms]周期

使用可能な端子(LPC1768)
DigitalOut 設定が出来る端子。SEG端子、COM端子に割付の条件はありません。

使用可能な端子(LPC1114FN28)
DigitalOut 設定が出来る端子。
ただし、dp5,27 はopen drainなので、端子に電流を流し込む(アノードコモンのSEG端子、カソードコモンのCOM端子)の設定しかできません。

LPC1114FN28用の表示桁数変更
LPC1114FN28では、未使用のCOM端子があると動作しません。このため、4桁表示専用の定義を用意しました。
LPC1114FN28で4桁表示をする場合は、ヘッダファイルにある”USECOM4”の定義を有効にしてください。
(LPC1114FN28では、4,8桁以外では使えないことになります。これ以外の桁数の場合は、Libraryを改造してCOM端子の数を増減してください)

LPC1768では、上記の制限はありません。設定無しで、1~8桁表示のいずれかを選択できます。


SevenSegLed.hの設定箇所


 Libraryの使い方


サンプルプログラムより

7セグメントLED出力する端子の指定:SevenSegLed
7セグメントLEDへのデータ出力関数:sevenSegLed_main(数字部配列変数ポインタ、ドット部配列変数ポインタ)

表示データ格納用配列バッファは数字部、ドット部それぞれ用意してください。
サンプルプログラムでは、4桁表示なので、
数字部用 uint8_t D_7seg[4]
ドット部用 uint8_t D_dot[4]
としています。

<サンプルプログラムについて>

mbed(LPC1768)を使用しています。
7セグメントLEDは、秋月通商(http://akizukidenshi.com/catalog/g/gI-03673/)のOSL40562-LRを使用しています。
電流制限抵抗は、100[Ω]を8本(SEG端子数分)使用しています。

電源はUSBから供給します。




回路図




ブレットボードでの配線

プログラムの動作内容

USBから電源を供給すると、カウントアップ表示をします。
左側2桁が16進数表示、右側2桁が10進数表示です。左から2、4桁目のドットが1秒毎に交互に点滅します。

サンプルプログラムの設定は、スムース表示モードですが、端子設定か、設定変更用関数で、スムース表示と、ハード表示を変更できます。



表示変更方法

以上

2013年12月22日日曜日

SW認識Library(SWAnalog)のサンプルプログラムの説明

SW認識Library(SWAnalog)のサンプルプログラムの説明

<概要>

SW認識させるLibrary(SwAnalog)と、Libraryを使用したサンプルプログラムについて説明します。

Libraryとサンプルプログラムは次のアドレスからダウンロードできます。
Library:
http://mbed.org/users/suupen/code/SwAnalog_LPC1768/


サンプルプログラム:
http://mbed.org/users/suupen/code/SwAnalogInputLibraryExampleProgram/


サンプルプログラムの動作

http://www.youtube.com/watch?v=junEOuqq_RE&feature=share&list=UUBKFbjZziYG1M-dKWqTlUwA



<Libraryについて>

SWの状態を、抵抗による電圧の分圧比の変化で認識します。
使用する抵抗は、精度±1[%]のもの(金属皮膜抵抗)を使います。
(共立エレショップ:http://eleshop.jp/shop/c/c110312/)




SW認識回路

アナログポートから読み込んだアナログ認識値から、SWのON,OFF状態を判定します。この判定値を10[ms]毎に更新して、判定値が3回一致したら、その判定値を確定値として認識します。このため、SW操作をして認識値が変化するまでに30[ms]必要になります。
複数回のレベル認識をして確定値を決めるので、SW操作によるチャタリングノイズの除去が可能です。

このLibraryで使用するmbed機能

・ チッカータイマー(Ticker) 1[us]単位、10[ms]周期
・ アナログ入力(AnalogIn)

SW入力に設定可能な端子(LPC1768)

p15~p20 の内の6本
(各端子に3本のSW認識が可能で、合計18本のSW認識が可能)

SW認識処理の変更方法

SwDitital.h内の定義を変更することで、以下の条件を変更できます。
SW認識周期:Z_matchcycle  設定範囲:10[ms](10000)~100[ms](100000)  (1[us/count]) 
SW一致回数:Z_itchPattern 設定範囲:3~8[回]




SwAnalog.hの設定箇所

 Libraryの使い方



サンプルプログラムより

SW認識する端子の指定: swAnalog
SWのレベル認識関数  :checkLevel(swNo)
SWのONエッジ認識関数 :checkEdgeOn(swNo)
SWのOFFエッジ認識関数:checkEdgeOff(swNo)
 引数のswNoは、端子定義関数のswAnalogの第一引数には,0,1,2、第二引数には3,4,5と割り振られていきます。

<サンプルプログラムについて>

mbed(LPC1768)を使用しています。SWは3つ使用しており、
アナログポートの、P20に接続します。



回路図




ブレットボードでの配線

プログラムの動作内容

SW0、SW1では、SWのレベル認識(OFFなのかONなのかを判定)する例です。
SW0は、ONしている間、LED1を点灯させます。
SW1は、OFFしている間、LED2を点灯させます。

SW2では、SWのエッジ認識(OFF→ON、ON→OFF)する例です。
SW2のONエッジ(OFF→ON)の時に、LED3の出力を反転させます。
SW2のOFFエッジ(ON→OFF)の時に、LED4の出力を反転させます。

以上