PICで遊ぶ電子工作


更新日2012.6.24 

PICとは、1チップのマイクロコンピュータです。
1チップのICにCPU,メモリ,IOインタフェースが全て内蔵されていて、少ない部品で簡単に 電子回路を作る事ができます。

少しだけ道具を揃えれば、色々な実験が可能です。

 ・LEDの点滅制御
 ・3色(フルカラー)LEDで無限の色を表示
 ・モーターの制御
 ・バッテリの電圧チェック


実験で使い方を理解したら、次は実用品やオモチャ作りにチャレンジしましょう。

 ・夜、人が近づいたら明かりを付ける
 ・拍手で蛍光灯の点灯制御
 ・障害物を避けて走る自動車
 ・バッテリ放電器


色々なセンサーを組み合わせる事で、楽さは更に広がります。
このページでも幾つかの実験をします。
Cdsセル明るさを検出
フォトトランジスタ明るさを検出(Cdsセルより高速)
焦電型赤外線センサ人の動きを検出
超音波センサ(10cm〜5m)距離を測ったり障害物を検出したり
短距離センサ(10cm〜80cm)ロボット向け(高速に距離測定)
赤外線LED/センサテレビなどのリモコンとか
マイク音を検出
温度センサ温度測定
湿度センサ湿度測定
圧力センサ圧力測定(体重計とか)
加速度センサ加速度を検出



目次

1章から5章(5)までは、順に読み進めることを意識して作成しています。
それ以外は、興味があるページを自由にご覧下さい。

1章.PICの概要
(1)PICとは
(2)PICでできる事

2章.PICで遊ぶ手順
(1)概要
(2)最初に準備するもの
・開発ツール(MPLAB)やPICライタ
・工具
・最低限必要なパーツ
など

3章.第1ステップ(動かしてみる)
LEDを使った簡単な回路で、プログラムの作成,PICへの書き込み,実際の動作確認を行います。
(1)必要なパーツ
(2)実験回路を作る
(3)プログラムを作る
(4)プログラムをPICに書き込む
(5)さあ動作確認

4章.PICの基礎
(1)PICの仕組み(ピン配置,メモリ構造)<PIC16F84A>
(2)PICの命令とアセンブラ命令

5章.第2ステップ(色々な実験) <PIC16F84A>
(1)LEDを点滅させる
(2)2つのLEDを交互に点滅させる
(3)LEDの明るさを序所に変える (ソフトウェアでPWM制御)
(4)スイッチでLEDの点滅パターンを変更 (スイッチのノイズ(チャタリング)を除去)
(5)LEDを点滅させる (TMR0割込みを使用,割込みとは?〜プログラム作成)
(6)LEDの明るさを序所に変える (TMR0割込みを使用)
(7)暗くなったら明かりを点ける
(8)人が近づいたら明かりを点ける
(9)人が近づいたら明かりを点ける (RB0/INT割込みを使用:省電力待機)
(10)スピーカをつなげて音を出す
(11)スピーカをつなげて大きな音を出す (アンプで増幅,ドレミ〜を演奏♪)
(12)正弦波(sin波)を作る (ラダー回路でD/A変換)
追加実験1 64分割と128分割の波形比較
追加実験2 32分割,16分割,12分割の波形比較
追加実験3 CR発振回路との波形比較
追加実験4 周波数を可変にする(PIC16F88,PIC16F873) 
簡易版
(13)3色LED(フルカラーLED)を使う(動作確認)
(14)3色LED(フルカラーLED)を使う(イルミネーション)
(15)
EEPROMを使う 
簡易版
(16)7セグメントLEDを使う(3桁固定数字の表示)
(17)液晶ディスプレイを使う(まずは表示してみる(4ビット操作))
(18)液晶ディスプレイを使った時計(正確に時を刻む)
(19)ステッピングモータの制御(ユニポーラ型)
(20)簡単にできる簡易A/D変換(積分回路の応用)
(21)DCモータの制御(ON/OFF,スピード制御)
(22)DCモータの制御(正転/逆転,スピード制御)
(23)サーボモータの制御
(24)超音波を扱う(送受信の動作確認)
(25)超音波を使った距離測定(意外に正確)
(26)赤外線を使う
(27)フォトトランジスタ(光を検出)を使う
(28)照度センサ(明るさを周波数変換)を使う

6章.第3ステップ(実用品・おもちゃ・その他の実験)
(1)PICテストボード(スイッチ,LED) (PIC16F84A,PIC16F819,PIC16F88,PIC16F648Aなど)
(2)拍手スイッチ・音で電源ON/OFF<PIC12F683>
・ハードウェア編 (回路の考え方と実際の回路)
・ソフトウェア編 (プログラムの考え方,処理フロー,ソース)
・実践編 (蛍光灯に取り付け拍手で点灯制御を行う)
(3)バッテリ放電器 (バッテリを長持ちさせる)<PIC16F873> 
(4)夜、人の動きを検知したら明かりを点ける(単三乾電池1本のサイズ) <PIC12F683>
(5)1ピンで液晶ディスプレイを制御 (シリアル制御LCD)<PIC16F84A>(PICC-Lite)
(6)永久回転こま (一度回すと回り続けるふしぎなこま)<PIC16F648A>(PICC-Lite)

7章.基礎知識など
(1)使用する機能に対応して設定するレジスタ (PIC16F84A)
(2)PICの命令
(3)PICの種類とこのページで扱う機種 機能比較など
(4)PIC16F87xシリーズの比較
(5)18ピンPICの比較

(6)2進数と16進数(と10進数)
(7)ビットとバイトとワード
(8)論理演算(AND,OR,NOT,XOR)とPICの命令 
(9)オームの法則 (電流(A)・電圧(V)・抵抗(Ω)の関係)
(10)合成抵抗 (抵抗の直列,並列接続)
(11)直列,並列接続した抵抗と、電圧・電流の関係
(12)単位と記号 (V(ボルト),A(アンペア),Ω(オーム)や、m(ミリ),μ(マイクロ)など)
(13)ラダー抵抗回路によるD/A変換の仕組み

8章.機能が豊富なPICを使う(PIC16ファミリー)
PIC16F84Aは機能が少ない分扱いやすく、入門用としては最適です。
ですが、いずれ物足りなくなります。そうなったら、より多くの機能を持ったPICを使って実験をして見ましょう。
こちらでPICの種類と機種を簡単に分類しています。

1.PIC12F683 <小さな力持ち(省電力で小さく多機能)>
(1)PIC12F683のピン配置とメモリ構造
(2)PIC12F683を使うための準備と留意点
(3)内部クロックで動作させる (まずは動かしてみる)
(4)内部クロックで動作させる (追加実験)
(5)ひとの動きを検出したら明かりを点ける (省電力実用品,単三乾電池で1年動作)
(6)PWM機能を使ってスピーカを鳴らす (単音を出してみる)
(7)PWM機能を使ってスピーカを鳴らす (ドレミ〜を演奏)
(8)ピン変化割り込みを使う
(9)A/D変換を使う(ボリュームで音の高さ(周波数)を変える)
2.PIC16F88 <PIC16F84Aとピン互換でより多くの機能を持つ>
(1)18ピンPICの比較
(2)PIC16F84Aからの移行方法
(3)A/D変換を使う(結果を7セグメントLEDに16進表示)
(4)温度センサを使う(LM35D,A/D変換,7セグ)
(5)温度計に仕上げる(LM35D,A/D変換,7セグ,LM336-2.5,BCD変換)
(6)汎用PWMコントローラ(パルス幅と周期を自由に設定)
(DCモータ,サーボモータ,LED,スピーカなどの制御)
(7)RS232Cでパソコンと通信

9章.PIC18編
PIC16ファミリーの上位モデルであるPIC18ファミリーを使った実験です。
同じ8ビットコアであり、命令も下位互換があるため移行も容易です。
また、PIC16に比べ多くの面で使いやすくなっています。

PICライタやMPLABの使い方はPIC16と全く同じで、使う機種を選択するだけです。

PIC16よりも命令数が増えていたり、メモリ構造が変わったりと言う点はありますが、まずは単純な機能から実験して行きます。

1.PIC18F1320 <18ピン>
(1)18ピンPICの比較 (PIC16F88編の内容と同じ)
(2)スイッチ操作でLEDを点滅させる
(3)1秒毎にLEDを点滅させて見る
(4)40MHzで動作させる(250ミリ秒毎にLEDを点滅)
(5)内部クロックで動作させる(10秒毎にLEDを点滅)
(6)PORTレジスタとLATレジスタ
(7)TMR0割込みを使う(8ビットモードと16ビットモード)
(8)PORTBピン変化割込みを使う
(9)優先/非優先割込みを使う(割込み処理中の割込み)

2.PIC18F2320 <2550よりI/O数が多い、28ピン>
(1)液晶ディスプレイ(LCD)を使う
(2)A/D変換を使う
(3)2つのPWM機能を同時に使う

3.PIC18F2550 <最大クロック48MHz、USB内蔵、28ピン>
(1)48MHzで動作させる

C言語編
フリーのCコンパイラを使った実験コーナーです。
(1)MPLAB XC8編 (PIC本家のマイクロチップテクノロジ社,PICC/PICC18の後継)
下記PICCおよびMPLAB C18の後継コンパイラです。
(2)PICC Lite編 (HI-TECH Software,PIC10/PIC12/PIC16)
これからC言語を始める場合は、上記MPLAB XC8編を参照下さい。
(3)MPLAB C18編 (PIC本家のマイクロチップテクノロジ社,PIC18)


更新履歴 索引 ueno.mitt@gmail.com