2015年12月30日水曜日

PICkit3でPICを焼くための汎用基盤を作ろうの巻

PICを焼くときにブレッドボードでやってるのですが、ピン配置とか面倒くさいしPICの種類によって作り変えないといけない手間がありました。
勉強がてらユニバーサル基板で回路を作っておこうということで調べた記録。

現状はこんな感じ。


他の方がやってる方法を調べる

ネット探すと沢山の人が同様の試みされているので情報は豊富。

・「PICマイコンの書き込みについて」ICソケットを1つ、コネクタを3つにする方法。(これを私もやることにした)

・「[PIC]全ピン数対応のライタ基板を製作(PICkit3使用)」こちらの方法は、ICソケットを3つ用意してコネクタを1つにする回路。


当初、「ICソケット x 1」「PICkitのコネクタ x 1」で出来るといいなぁと思っていたが難しそうなので「ICソケット x 1」「PICkitのコネクタ x 3」で作ることにした。なんでICソケット3つにしなかったかというと、「ゼロプレッシャーのICソケット」が1つ700~900円位して部品として高いから。それだけ。


回路図の作成

参考にした上記ページに載っていた回路図を見ながら自分で同じものを書いてみただけ。
DesignSpark PCBというフリーのCADを勉強がてらにちょうどいいなと思ってやってみた。
ちょっと苦労したけど、このくらいなら描けるぜ!


買うもの

自分用にメモ。
・4隅にネジ穴があるユニバーサル基板(7cm x 5cm位)
・ゴム足(or プラ足)x4 ※基盤の4隅にネジで取り付ける
・足を取り付けるネジx4
(・スズメッキ線)持ってる
(・10kΩ抵抗)持ってる
・ジャンパ線に使えるビニル線
 ※スズメッキ線だけでは辛い。全部ビニル線でも良い気もするが。
・40ピンゼロプレッシャーICソケット
・1列6ピンのピンソケット(2.54mmピッチ) x 3
・1列6ピンL型ピンヘッダ(2.54mmピッチ) x 3



年明けにでもネットで部品注文して作ってみよう。
良いお年を!

2015年12月23日水曜日

【PIC入門】MPLABとXC8をインストール、PICKIT3を接続など簡単な回路を動かすまでのまとめ

センサーのデータをインターネットでサーバに送信する仕組みを作りたいなと思ったところからこの壮大な記録がはじまります。(読み終わるまで5分)

PICというものを使うと幸せになれるらしいが全く分からなくていろいろ躓(つまず)いたことを折角なのでまとめる。

PICとは

PIC(Peripheral Interface Controller)とはマイコンの一種でMicrochip社が売っている製品。マイコンにはCPUやROM、RAMが搭載されておりプログラムを実行することが出来る。PIC用のプログラムはC言語で大体作ることができる。PICにプログラムを焼く時には専用のPICKITという道具が別途必要になる。

サイトとか本とか見た時に「PICにプログラム焼けるのは当たり前なので省略」ばっかで、全く理解できずに苦労したぜ。。

今回作る電子回路

もっと早くに見とけばよかった「はじめてのPICマイコン」というページ。。マルツが書いてくれているのだが、4部構成になっていて入門にちょうどいい。(ちょっと説明汚かったり、無駄な説明あったりするけど。)
このマルツに出てくる次の2つの回路を作る。

1. 基本編


2. 応用編

買ってくるもの一覧

電子部品とかコンビニで買えないからホントミス無く買い物した方がいい。
私なんかPICのプログラム焼くためにPICKIT3(またはPICKIT2)が必要になるって知らなかったしオンライン購入、秋葉へ買い物、秋葉へ買い物しましたからね。。ホント時間の無駄。
全部買っても1万円しないから次の物を買ってくるべし。


No. 名前 購入数 備考
1 PICKIT3 1 4200円で買ったかな?
2 ブレッドボード 2 ・PIC焼く用
・回路作る用
の2つがあるといいと思う。
3 ジャンパワイヤセット(コの字) 1 ブレッドボードとセットになってた。
回路作るときにあると便利。
4 ジャンパワイヤセット(曲がる奴) 1 PICKITとの接続に使った。
ピンヘッダっていう部品使うのが普通かも。
5 単3乾電池 3 「3Vでも動くっしょw」ってやったら動かない。
4.5Vになるように3つ使う。
6 単3電池3個用電池ボックス 1 直列に繋ぐときに電池ボックス使うべし。
これが無いと無駄に疲れる。
7 普通のLED 10 5個あれば足りるけど予備。
20mA位で光る普通のLED1個40円位。
8 220Ω抵抗 10 5個あれば足りるけど予備。
1個5円位。
9 10kΩ抵抗 2 1個あれば足りるけど予備。
1個5円位。
10 PIC12F683 2 1個あれば足りるけど予備。
1個250円位。
ベーシックなPICなので同じ型番探すこと。

PICプログラムの環境構築

分かってしまえばなんてこたぁ無いんだけど、情報少なくて分かりにくかった。Microchip社から販売されているPIC用のプログラムを作るため次の2つをインストールする必要がある。(ちなみに、Windows7環境で作りました。)
  • MPLAB X IDE (プログラム作るIDE)
  • XC8 (コンパイラ、有料版もあるけど素人は無料版で十分)

黙ってインストール!

PICプログラムの作成

MPLAB X IDEを起動してプロジェクトを作るところから。
手順。

1. メニューのFile -> New Project... を選択
2. Choose Projectでは標準のままNext

3. Select DeviceではPIC12F683を選択(Mid-Rangeでフィルタすると見つかりやすい)

4. Select HeaderではNoneのままNext

5. Select ToolではPICKIT3を選択してNext

6. Select CompilerではXC8を選択してNext

7. Select Project Name and Folderでは、プロジェクトのパスを適当に設定、エンコードはUTF-8にした

8. プロジェクトが作られた
9. Souce Filesの部分を右クリックして「New -> main.c」を選択

10. newmain.cというファイルを作成
11. だまって次のプログラム書くべし
(簡単な説明はマルツの第三回の記事に書いてある)
--------------------------------------------------
#include <xc.h>

__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_ON & BOREN_ON & MCLRE_OFF & CP_OFF & IESO_OFF & FCMEN_OFF);

#define _XTAL_FREQ 1000000

void main()
{
    OSCCON = 0x40;
    ANSEL = 0;
    CMCON0 = 0x07;
    TRISIO = 0x08;

    while(1)
    {
        GP2 = 1;
        __delay_ms(300);
        GP2 = 0;
        __delay_ms(300);
    }
}
--------------------------------------------------
この時にエラーが画面に表示されるんだけど気にしなくていいっぽい。
調べたけど意味わからんかったしそのまま動くから。。



以上でプログラム完成。

PICにプログラムを焼く

焼くのも難しかった。。USBに接続してるんだから勝手に電源供給すると思うやん。。
はい、手順説明しまーす。

1. PIC12F683にプログラムを焼くための回路を用意する
googleで「ブレッドボード pickkit」で検索すればいくつも見つかる、今回はこのページを参考にした。(ブレッドボードとPICKit3でPICに書き込む
上記サイトにおいてあるこの図の通りに回路作る。

実際に繋いだところがこんな感じ。


2. PICKit3をPCとブレッドボードに接続する

3. PICKIT3の設定を変えるためにレンチマークをクリック


4. PICkit 3 -> Option categoriesでPowerを選択して、「Power target circuit from PICkit3」を選択しOKを押す

5. ハンマーマークをクリックしてビルド
メッセージでエラーが出ない事を確認。


6. PICに矢印が向いてるマークを押して書き込む
メッセージでエラーが出ない事を確認。

完了!

回路を作って動かす

買ってきた部品を回路図通りに並べます。
(プログラムはLED1つを点滅させるものですが、回路は応用編のLEDを5つ点滅させるものでも動きますのでどっちでもいいです。)
4番に10Kの抵抗入れて繋ぐ意味などはマルツのページに書いてあるので後で読むとよいです。

あとは、間違えなければ動く!
応用編の回路で、LED1個のプログラム動かすとこんな感じ。


完成!

ちなみに、ココの下の方に書いてある5つのLEDを光らすプログラムを書いて実行したら次のような感じ。



いやー、大変だった。
ホント、素人には厳しいですわ。

私と同じくらいの知識の人がこのページを見たらきっと幸せになるはず。