第9回 PICマイコンを理解する

今回から、PICマイコンの回路を作っていきます。最初はLEDを点滅させるための回路です。この回路ができたら、後からスイッチを追加、その後にブザーを追加していき、最後にタイマーとして完成させます。

本シリーズ記事の内容を改訂して、基礎編、応用編、実践編として以下のリンクに公開しています。以下のシリーズはさらにいろいろなPICマイコンの機能をご紹介しています!
PICマイコン電子工作入門 〜基礎編〜
PICマイコン電子工作入門 〜応用編〜
PICマイコン電子工作入門 〜実践編〜

目次

今回の説明

回路を完成させるために以下の順序で説明しています。このエントリの説明は(2)「PICマイコンのベース回路を組む」の部分の最初のステップになります。

  1. 発光ダイオード(LED)を電池と抵抗のみで光らせる回路を組む
    PICマイコンの回路を組む前に、まずは電池、抵抗、発光ダイオードのみを使って、ブレッドポード上に回路を組んで発光ダイオードを光らせてみます。ここでは電池、抵抗、発光ダイオードの回路記号、回路図と、回路図からブレッドボードに組む方法を説明します。
  2. PICマイコンのベース回路を組む
    はじめの一歩の回路は、発光ダイオードを1秒に1回光らせるだけの回路です。この回路を組みます。
  3. プログラムを作る
    発光ダイオードを1秒に1回光らせるプログラムを作成します。
  4. PICマイコンに書き込んで動作させる
    作成したプログラムをPICマイコンに書き込んで動作させてみます。
  5. ベース回路にスイッチを追加
    発光ダイオードの点滅をスイッチで開始させるために、ベース回路にスイッチを追加します。これまでは発光ダイオードを光らせる、という出力制御をしましたが、PICマイコンで外部から信号を入力する方法を確認します。
  6. ベース回路にブザーを追加
    スイッチ付きの1秒に1回光らせる回路を作りましたので、ブザーを追加してタイマーを作ってみます。

説明の進め方

今回から、PICマイコンを使って発光ダイオードを点滅させる回路の製作に入ります。説明が長くなりそうですので、まずどのように説明をするか俯瞰しておきたいと思います。

  1. PICマイコンを使った電子回路を開発する手順の復習
    PICマイコンのプログラム開発手順を復習します。次に、PICマイコンを使ってどのような回路を組んでいけばよいかを説明します。
  2. PICマイコンの説明
    PICマイコンそのものの説明を行い、1で説明した回路をどのように組んでいけばよいかを説明します。必要な回路をブロック毎に説明します。
  3. PICマイコン回路を完成させる
    2で説明したそれぞれ必要なブロックをひとつにまとめて、PICマイコンの回路を完成させます

なおこれらの説明は数回に分かれる予定です。

PICマイコンを使った電子回路を開発する手順

「MacでPICマイコン電子工作入門 第4回」で説明しましたが、再度PICマイコンを使った電子回路を開発する手順を確認しておきます。

Development steps

その手順ですが、PICマイコンの回路を作成し、Mac上のPICマイコンプログラム開発環境であるMAPABX上でプログラムを開発し、最後にそのプログラムをPICKit3経由で作成した回路に書き込みます。ここまでできたら、あとは作成した回路に電池を接続してスイッチを入れて動作させます。

この手順からわかることは、PICマイコンを使用した回路には、

  • プログラムを書き込む必要があるので、PICKit3経由でプログラムを書き込めるように、PICマイコンに書き込むための接続回路が必要なこと
  • 電池を接続して動作させるため、電源を接続する回路ことが必要なこと
  • 発光ダイオードを光らせるので、もちろん発光ダイオードをつなげる回路が必要なこと

ということになります。つまりPICマイコンを中心として、以下のような回路を作成していくことになります。

Block diagram

今後、電子回路を見る機会が増えてくると思います。結構複雑な電子回路になると、見ただけで「なんか無理」みたいな感想を持ってしまいますが、上の図のように電子回路は機能ブロックごとに読み解く、あるいは作成していけばそれほど難しくはありません。今回出てくるLEDを接続する部分も、この回路だけで使えるというわけではなく、例えばArduinoやRaspberry PiでLEDを点滅させたい場合も使えます。電子回路を読み解くポイントは、ブロックごとに解読していく、ということを覚えておいてください。

この後ですが、まずPICマイコンそのものについて説明し、そのあと「電源回路」「発光ダイオード回路」「プログラム書き込み回路」について順に説明していきます。最後はこれらをまとめて回路を仕上げます。

PICマイコン

PICマイコンには多くの種類があります。その中でもコンパクトで、機能はそれなりに搭載されている “PIC12F683” というPICマイコンを使用します。このPIC12F683の仕様や使い方が詳細に記載されたデータシートがMicrochip社からリリースされています。まだこのデータシートは読めなくてもまったく問題ありませんが、仕様書がある、ということだけ理解しておきましょう。

PIC12F683データシート(PDFファイルです)

またPIC12F683の主要な仕様は以下になります。

項目 仕様 補足
ピン数 8ピン PICマイコン本体から出ているリード線(「足」とも呼びます)の数です。
動作電圧 2.0V〜5.5V この範囲の電圧を与えれば動作しますが、早く動かすには(動作クロックをあげるには)高い電圧が必要になります。
動作クロック 最大20MHz MacやPCで「CPUの周波数(速度)」と言われているものにあたります。MacやPCの場合、2GHzとか3GHzが普通ですが、PICマイコンは数MHz〜数十MHz、という感じです。20MHzで動作させるには5.0V以上の電圧が必要となります。
プログラムメモリ 2kワード 2000命令分のプログラムが書ける、と理解してよいと思います。ただ、C言語の1命令がここでいう1命令ではありませんので注意が必要です。C言語1命令が実際には何命令になるかはちょっと高度な内容ですのでここでは説明を省略します。
SRAM 128バイト プログラム動作中の変数を保持するためのメモリ容量です。単位はメガバイトなどではなく「バイト」ですよ! このメモリに保持した内容は電源を切ると消えてしまいます(「揮発性メモリ」と呼びます)。
EEPROM 256バイト 電源を切っても消えないメモリです(「不揮発性メモリ」と呼びます)。ずっと保持しておきたい値はここに格納します。こちらも単位は「バイト」です。

それではまずデータシートに記載されているPIC12F683のピンの機能をデータシートでみてみましょう。

Pic12f683 pins
(Microchip社 PIC12F683データシートより引用)

???って感じですよね。これを解読するために、まずは「ピン番号」というものから覚えていきましょう。PICマイコンに限らず、このよなう形状のものはピンを区別するためにそれぞれのピンに番号が振られています。ピン番号がないと、

「どこにつなぐんだっけ?」
「ほら、右下から数えて3番目のピンだよ」
「それってどっち向きに置いたときなの?」
「え〜っと、、、」

と、かなり鬱陶しいやりとりが必要になってしまいますよね。そこで、ピン番号を決めるわけです。

PIC12F683を上から見ると、以下のようになっています。

Pic12f683 face

PICマイコンに限らず、このような形状のものは、片方の辺に半円の切り込みとその近辺に丸いくぼみが付いています。半円の切り込みが左にくるように置いたとき、丸いくぼみのピンから左回りに、1から番号を振っていきます。上の図では、

Pic12f683 in number

このように番号を振ることになります。先ほどのデータシートで、まずピン番号についてはわかりましたでしょうか。さらに上のデータシートの図では、各ピンがどのような機能をもっているかが書かれています。

1番と8番ピンは、なんとなく、VDDとVSS、という機能のピンだろう、ということが想像できると思います(VDD、VSS自体の意味は置いておいて)。それに比べて、2〜7番ピンはいろいろな文字がかかれています。

まず2〜7番ピンにいろいろな文字が書かれている理由ですが、それは、PICマイコンの設定を変更することにより(プログラムで設定を行います)、各ピンがいろいろな役割になることができるためです。ここでは意味までは説明しませんが、例えば、2番ピンであれば、プログラムで設定することにより、”GP5″、”T1CKI”、”OSC1″あるいは”CLKIN”のいずれかの機能を持つように設定できる、ということになります(それぞれの意味はわからなくても今は問題ありません)。他のピンも同様です。今回の製作では、このPICマイコンの各ピンを以下の機能として使用します。念のためデータシートのピンの機能説明の図と比較してみてください。

Pic12f683 usage

ピン番号は書きませんでしたので、どれが何番ピンかご自分で確認してみましょう。各ピンの意味は以下のようになります。

ピン番号 記号 意味
1 VDD このピンに電源のプラスを接続します。今回は約5Vの電池の電源を用意しますので、電池ボックスのプラス側をこのピンに接続します。
8 VSS このピンに電源のマイナスを接続します。電池ボックスのマイナス側をこのピンに接続します。
2, 3 GP5, GP4 電気信号の入出力ピンとして使用します。具体的には、3番ピン(GP4)は発光ダイオードを点滅させるための外部へ信号を出力するピン、2番ピン(GP5)はスイッチが押されているかを確認するために外部から信号を入力するピンとして使用します。
4, 6, 7 MCLR, ICSPCLK, ICSPDAT これらのピンは、MacからPICKit3を使ってこのマイコンにプログラムを書き込む際に使用します。PICKit3とのつなぎ方は後ほど説明します。
5 空き このピンは今回は使用しません。ただし使用しない場合でも何らかの機能として設定することになりますので、実際のプログラムを書くときにはGP2として設定しておこうと思います。この入門が終わったら、このピンを使って何か機能を追加してみるのもいいと思います。

繰り返しになりますが(しつこい…)、これまでに、PICマイコンに対して、

  • プログラムを書き込む必要があるので、PICKit3経由でプログラムを書き込めるように何らかの接続回路が必要なこと
  • 電池を接続して動作させるため、電源を接続する回路ことが必要なこと
  • 発光ダイオードを光らせるので、もちろん発光ダイオードをつなげた回路が必要なこと

ということを説明しました。また、先ほどPICマイコンの各ピンの役割を説明しました。なんとなくこれらがつながっていそうですよね。

それではこれから、PICマイコンに、

  • 電源関連の回路
  • 発光ダイオード関連の回路
  • プログラム書き込みの回路

をつけていきます。まずはこれら3つの回路を別々に説明して、最後にひとつの回路にしてみます。次回は電源関連の回路について説明します。

更新履歴

日付 内容
2015.9.20 新規投稿
2018.12.3 新シリーズ記事紹介追加
通知の設定
通知タイミング
guest
0 コメント
本文中にフィードバック
全てのコメントを見る
Masamitsu Konya
Masamitsu Konya
8 年 前

本当にわかりやすい記事で、まだ実践はしてないですが、大変面白く読ませてもらってます!

管理者
管理者
返信  Masamitsu Konya
8 年 前

Konyaさん、初めまして。
コメントどうもありがとうございます。
このシリーズは以前書いた記事を、最新情報にしたものなのですが、最近ちょっと見直していて、何かちょっとわかりづらいな、ってところもまだあります。
今、RaspberryPi入門シリーズを書いているので、それが終わったら、こちらのシリーズの記事の文章を全部見直す予定です!
今後ともよろしくお願いします!

目次