前回はマイコンがどうやって動いているかをみてみました。またFMマイコン「MB9BF568R」を例にLEDを光らせる方法を説明しました。今回は、さらに「MB9BF568R」の周辺機能を利用して、もう少し複雑にLEDを光らせる方法を説明します。そして、これまで説明してきたマイコンが私たちの生活にどのように役立っているか考えてみましょう。
前回(第3回:マイコンはどうやって動くのか? 〜LEDを光らせてみる〜)は、「汎用I/Oポート」を制御し、Hレベル/Lレベルを出力させLEDを点けたり消したりしました。今回は、LEDをただ光らせるだけではなく、一定の間隔で点けたり消したり、また明るさをゆっくり変えたりといったもう少し複雑な制御をFMマイコン「MB9BF568R」を例として説明します。
まず、"LEDを一定間隔で点滅させる制御"について考えてみましょう。
LEDを一定間隔で点滅させるということは、ある一定の時間が経過した後Hレベルを出力し、さらに一定時間が経過した後Lレベルを出力させるという繰り返しの制御が必要です。その一定時間の計測や、H_Lレベルの出力をさせるために周辺機能の中のタイマを使用します。
MB9BF568Rにはさまざまなタイマが搭載されおり、今回はその中でも「ベースタイマ」の「PWMタイマ」機能を使用してLEDの点滅制御を行います。
LEDの制御を説明する前に、「PWMタイマ」とはどういう機能なのかを説明します。
PWMタイマは、ある一定の周期の中でHレベル出力を行う期間とLレベル出力を行う期間の比率を変えたパルスを出力できます。このHレベルとLレベルの期間の割合をデューティ比といい、このデューティ比を変えることにより、モータなどさまざまなものを制御することができます。また、PWMタイマ出力をローパスフィルタに通すことで簡易的なD-Aコンバータとして使用することもできます。
さて、このPWMタイマを使ってどのようにLEDの点滅制御をするのかを、具体的に説明していきます。
プログラムを作成する前に決めなければいけないことは、点滅を繰り返す周期とその周期の中でLEDを点灯させておく期間(Hレベルの期間)です。
ここでは点滅を繰り返す周期を10秒とします。また、LEDを点灯させる期間を5秒とします。
また、今回はMB9BF568Rの24ピン(24番目の端子)「P3A」にLEDを接続します。
前回は「P30」にLEDを接続したのに、なぜ今回は「P3A」に接続するのでしょうか?
それは、前回は「汎用I/Oポート」の機能を使用してHレベル出力/Lレベル出力をしていました。「汎用I/Oポート」の機能は電源以外の端子のほとんどに割り当てられていますが、今回のPWMタイマの出力を行える端子は特定の端子に割り当てられているため、PWMタイマ出力機能を持つ「P3A」に変更しています。
ここまで決めれば、後はプログラムを作成するだけです。
まずは、ベースタイマをPWMタイマとして使用するようにプログラムします。次にPWMタイマに周期(=10秒)とHレベルを出力する期間(=5秒)を設定します。PWMタイマの設定が終わったら、PWMタイマが動き始めるようにプログラムします。最後にP3AにPWMタイマの波形を出力させるようにします。これでプログラムは完成です。作成したプログラムをマイコン内部のフラッシュメモリに書き込みましょう。
そして、マイコンに電源を入れると、5秒間隔でLEDが点いたり、消えたりすることが確認できると思います。
次に"LEDの明るさをゆっくり変える制御"を説明します。
さて、まず考えなければいけないのは「どうやって明るさを変えるのか」ということです。
簡単な方法として、「LEDにかける電圧を下げる」(LEDに流れる電流を少なくする)があります。ただ、汎用I/Oポートの出力は、電源電圧と同じぐらいの電圧(Hレベル)と0V(Lレベル)を出すだけで、その他の電圧を出力することができません。そのため他の方法を考える必要があります。
例として使用しているMB9BF568Rにはデジタル信号をアナログ信号に変換するD/Aコンバータ(D/AC)が搭載されており、これを利用することでさまざまな電圧を出力できますが、今回は、先ほど説明をしたPWMタイマを使った制御方法を考えましょう。
では、どうやってPWMタイマを使用して明るさを変えるのでしょう?
明るさを変えるには、PWMタイマの周期とHレベルの期間を変え、LEDを光らせる時間を調整します。
例えば、図2のように周期を10ミリ秒、Hレベルの期間(LEDの点灯期間)を9ミリ秒にすると、1周期の間ほとんど点灯しているのでずっとHレベルの場合と比べて明るさは少し暗いかなという程度になります。
ここで周期10ミリ秒の間でLEDが消えている1ミリ秒の期間はどうなるか。一瞬消えてしまうのではないかと思われがちですが、人間の目には10ミリ秒(100Hz)未満で点滅してもほとんど分かりません。
次に図3のように周期を10ミリ秒、Hレベルの期間(LEDの点灯期間)を3ミリ秒にすると、1周期の間で30%しか光っていないため、人間の目にはずっと点灯している場合に比べてかなり暗く感じます。
このような人間の目の特性を利用してHレベル期間を変更することによって明るさを変えることができます。
この特性を応用して、LEDの明るさをゆっくり変える制御を行います。
図4はだんだん暗くなるような設定したPWMタイマ出力波形です。このように1周期が終わるごとにHレベルの期間を9ミリ秒、7ミリ秒、5ミリ秒と短くしていくことによりだんだん暗くすることができます。
これまで、4回に渡ってマイコンとはどういったものか、どのように使うかをみてきました。
最後に、このマイコンが私たちの身の回りでどのように使われているのかをみてみましょう。
マイコンが使われているものとして最初に思い付くのは電化製品です。洗濯機、冷蔵庫、エアコン、テレビ、DVD/Blu-rayレコーダー、デジタルカメラなどほとんどの電化製品に使われています。
このような製品でマイコンはどのような役割を担っているのでしょうか? エアコンを例にとって説明します。
エアコンは主に室内機と室外機、リモコンがセットになっていて、この3つそれぞれにマイコンが使われています。室内機/室外機では、温度センサーの値を取り込むA-Dコンバータ、先ほども説明しましたがファンやコンプレッサなどのモータを制御するPWMタイマなどの各種タイマ、室外機との通信を行うシリアル通信インタフェースとしてマイコンが使われています。またリモコンでは、ボタン入力の取り込みや液晶ディスプレイの制御にマイコンが使われています。
また、電化製品以外に自動車ではエンジン制御、パワーウィンドウ、ステアリングなどに多くのマイコンが使用されています(多いものでは1台の車に100個以上ものマイコンが使われているようです)。
このようにマイコンはさまざまな分野で使用されており、私たちの暮らしをマイコンが支えているといえるのです。
本連載では、マイコンとは何か、どのように使われているかをみてきました。次の段階としては、実際にマイコンを手に取り使ってみるとよいでしょう。
ぜひ、今回の連載を機会にマイコンを手に取って、使いこなしてみませんか?
※この記事は電波新聞社発行の電子工作マガジンの2014春号に掲載されたものです。許可を得て転載しています。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:Spansion Inc.(スパンション)
アイティメディア営業企画/制作:EE Times Japan 編集部/掲載内容有効期限:2014年6月28日
大容量かつ機能安全適合が求められる車載環境に特化して設計されたSemper NORフラッシュが、次世代ADASシステムのさらなる進化に向けて東芝の先進運転支援システムViscontiファミリに採用。
12月9日13時(アメリカ東部時間)よりハンズオンワークショップを開催。超低電力かつ柔軟性と安全性を兼ね備えたPSoC 6 MCUの他、Modus 2.0とArm Mbedを用いてクラウド接続のIoTエッジノードの開発方法を解説します!
Modus Toolbox 2.0では、1つのプラットフォームでPSoC MCUとBLE、Wi-Fi、MeshなどCypressソリューションの設計が可能。MbedやFreeRTOSもサポートしており、GitHubでサンプルコードのダウンロードが可能
メインストリームおよびエントリーレベルのノートPC/デスクトップPC向けに、コスト効率に優れたシングルポートUSB-Cコントローラーを発表!従来のUSB Type-AポートからUSB Type-Cポートに移行する必要があるシステムに最適。
多くのHMIが容量センシング技術と誘導センシング技術に移行しています。サイプレスのCapSense容量センシングとMagSense誘導センシングを活用して、HMIアプリケーションの設計方法を解説します。ぜひご参加ください。
弊社の販売代理店よりサンプル品をオーダーすることが可能です。上記サイトより、ご希望の代理店を選択してください。
PSoCやCapSence、USBコントローラーなど、Cypress製品を使ったデザイン設計が可能なソフトウェアおよびドライバーを無償でダウンロードいただけます。
Cypress製品のあらゆるドキュメントをダウンロード可能なサイプレス ドキュメント マネージャー (CDM) を提供しています。CDMソフトウェアは上記よりダウンロードが可能です。