電子工作基礎(PIC) 目次
■LEDを光らせる□LEDのお話
LEDは基本的には、豆電球と一緒です。ただし、LEDには極性というものがあって、線(はりがね)の長い方をプラス(+)側、短い方をマイナス(−)側につなぐと光ります。反対にすると光りません。とりあえず下図のように、電池を直列につないで、豆電球のように光らせてみましょう。ひかりましたか?光らない場合は極性に注意してください。それでも光らなかったら、電池を疑って見ましょう。
破裂せずにかけられる電圧(耐圧)が1.5V〜3Vぐらいなので、5Vにつなげると明るく光りますが、そのままにしておくと破裂したり、消えたりします。そうならないように5Vから電圧を下げます。種類によりますが、大体100〜300オームぐらいの抵抗をつっこみます。 □電源電圧の話
ここで、電源電圧のお話をしておきます。電子工作では基本的に直流で行います。しかし、家庭用のコンセントは100Vの60or50Hzの交流です。これを、電子回路につかうために、直流に変換しなければなりません。よく、電気製品をかうとACアダプタがついてきますが、これは直流を作り出すために使われています。ACアダプタをみると12Vだの7.2Vだの9Vだのという表示があります。これはACアダプタから出力されてくる電圧です。そして、接続する先の機器には、12Vだの9Vだの書いてあります。機械のほうが5Vと書いてあって、12VのACアダプタを突っ込むと大抵ぶっこわれます。反対に機械のほうが12で、5VのACアダプタを突っ込んでも電圧が足りなくて動きません。また、図のような表示がACアダプタにかいてあり、これの意味は、DCジャック(機械とつなげる部分)の中が+極、外側がー極であることを表しています。大体はセンタープラスという状態でDCジャックの中が+なのですが、時々、センターマイナスのACアダプタがあります。このプラスとマイナスの極性を間違えると電圧がいくらあっていても一撃必殺でほぼ壊れるので注意してください。
電子工作で良く使う電圧は5Vと3.3Vです。昔はICは5Vで動いていたので、5Vで電源電圧が良く使われていました。しかし、技術革新により3.3Vで動くICが出てきて、すべて3.3Vで動かす回路に現在は移ってきています。5Vから3.3Vになることで、消費電力をおさえることができます。しかし、まだ3.3Vで作られていないICもあり、まだ5Vと3.3Vは混在しています。5Vで作られた回路をTTL、3.3Vで作られた回路をCMOSと一般的にいいます。
レギュレーターを以下のようにつないでください。電解コンデンサの極性に注意して5Vの出力をつくってください。
趣味の電子工作室 http://www.hobby-elec.org/diode.htm 初心者のためのLED講座 http://www18.tok2.com/home/masa2000/led/index.html □PICでLEDを光らせる。 さて、いよいよワンチップマイコンPICを使ってLEDを光らせてみましょう。PICは見た目は完全にICです。いろいろと複雑な説明がありますが、PICは平たく言うと低機能なパソコンみたいなもので、プログラムを実行させ送り込むことができます。ただし入力が、PCのようなキーボードやマウス、出力がモニター、スピーカなどではありません。PICにたいして入力できるのは電流です。また出力できるものも電流です。
さて回路図を以下のようになります。PICにクロックと電源とグラウンドを正しい場所に繋げば、それだけで動き出します。非常に簡単な回路です。
長く説明してるとわからなくなってくるので、とりあえずやってみましょう。PCW.exeを立ち上げて、以下のような単純なプログラムをコンパイルしてみましょう。.HEXという拡張子のファイルが生成されます。これを、PICライターソフトを使ってPICに転送します。 #include <16F873.h> #use delay(clock=10000000) #fuses HS,NOWDT void main() { while(1) { output_high(PIN_B0); delay_ms(50); output_low(PIN_B0); delay_ms(50); } } すごい速さで、点滅すればOKです。このように簡単に、Cでプログラムをかいて出力を制御することが可能です。 また、PICはOSが無い状態でうごきます。これはOSが標準でPCについてる現在だと想像しにくいのですが、main()で書いたプログラムをコンパイルして、そのプログラム一個だけしか実行できません。Windowsのように、Wordとexcelと同時に実行することはできません。 □PCに文字列を送る(RS-232C通信)つぎにPICからPCに文字列を送るには、下図のような回路をつくって、前述の回路とくっつけてみてください。そのあと、以下のようなプログラム転送してやります。また、RS232CのコネクタをPCのシリアルコネクタと繋いで、Teratermやハイパーターミナルなどのシリアル端末で挙動を見てみましょう。 ![]() #include <16F873.h> #use delay(clock=10000000) #fuses HS,NOWDT #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7) void main() { while(1) { printf("pika\r\n"); } }□AD変換 ![]() #include <16F873.h> #use delay(clock=10000000) #fuses HS,NOWDT #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7) void main() { long data; setup_adc_ports(A_ANALOG); //ADポートの設定 setup_adc(ADC_CLOCK_DIV_32);//ADのそくど while(1) { set_adc_channel(1); delay_us(200); data = read_adc(); printf("pika %ld\r\n", data ); output_high(PIN_B0); delay_ms(500); } } |