Translate

2009年10月31日土曜日

関数(4)PIC16F84AでPWM制御

[実験 MikroC Pro PIC16F84A_LED_0022]


前回の実験のLEDを点滅するプログラムで 点灯する時間と消灯する時間が、
チカチカではなく滑らかに薄暗くなるプログラムを考えなさい。


( 例 1)





MikroC PROの関数
Delay_ms( )
Delay_us( )
Vdelay_ms( )
を使えないのでwhile(ms1--), while(ms2--)で時間稼ぎしています。

ミリ秒の単位では、どうしてもチカチカしてしまいます。
Delay_us( )
で、プログラミング出来ないことは、ありませんが
引数が、扱えないので例のように短く出来ないと思います。




( 例 2)




while(ms1--), while(ms2--)の代わりに
Delay( )関数を作ってみました。

PWM(Pulse Width Modulation)制御は、パルス幅変調とも呼ばれています。
PIC16F84AはCCP(Compare/Capture/PWM)機能のPINがありませんが、
プログラムでPWM制御は可能です。


ということは
PIC16F84AでPWM方式を使えば、DCモータで回転数制御も出来ますね。

回路としては、
PICとDCモータの間にトランジスタ、MOSFETなど入れれば動きます。


if文でも考えて下さい。
少しプログラムが長くなるだけで、難しくはありません。







mikroC PRO for PIC

2009年10月29日木曜日

関数(3)PWM制御の考え方(2)



[実験 MikroC Pro PIC16F84A_LED_0021]

前回の実験のLEDを点滅するプログラムで徐々に点灯する時間と
消灯する時間が、変化するプログラムを関数を使って考えなさい。




(例 1)







duty比が、変化しているようなプログラムです。

Delay_us()
で、プログラムを書き直せば、PWM(Pulse Width Modulation)制御と同じですね。

だだ、mikroC PROには、Vdelay_us( )関数はありませんので
それに換わるプログラムを考えなければ出来ません。




ビデオの画像よりPIC16F84Aは、正確に点滅が変化しています。
撮影しているカメラが、点滅の変化に対応できないようです。
(例 2)











mikroC PRO for PIC

2009年10月28日水曜日

関数(2)PWM制御の考え方(1)

[実験 MikroC Pro PIC16F84A_LED_0020]

下記のプログラムで無限ループのLEDが点滅する部分を関数を作ってプログラミングし直しさい。





(例)





P1(50,200)
P1(点灯時間,消灯時間)
関数を使うことによりスッキリしたプログラムになりました。



前回までのプログラムは、「点灯(ON)時間=消灯(OFF)時間」でしたが
今回のプログラムは、「点灯(ON)時間 ≠ 消灯(OFF)時間 」ですね。
このONとOFFを少しずつ速く繰り返すとどうなるでしょうか?




P1(1,200),P1(5,200)....P1(200,5),P1(200,1)
数字をいろいろ変えてみて下さい。
どのくらいでLEDが点灯しなくなりますか?
また、どのくらいでLEDが消灯しなくまりますか?


mikroC PRO for PIC

2009年10月27日火曜日

関数(1) Vdelay_ms( )関数

[実験 MikroC Pro PIC16F84A_LED_0019]

LEDを点滅する下記のプログラムのDelay_ms(100)を

wait( )関数を作ってプログラムを書き換えなさい。



(例 1)

(例 2)

この例は、下記のようなエラーが出ます。






Deley_ms( )
の( )の中はunsigned long しか入れることは出来ません。
0 .. 4294967295の整数以外入れてはいけません。
つまり、変数(引数)を定義しては、いけないのです。


mikroCでは、変数(引数)を入れても良い、関数が用意されています。
void Vdelay_ms(unsigned time_in_ms);


(例 3)








mikroC PRO for PIC





2009年10月26日月曜日

バーサライタを作ってみました



バーサライタを試作してみました。



[仕様]


PIC16F628AまたはPIC16F88
中心(左)からRB0-7,RA0-3,RA6,RA7
LED 14個
電池 LR44(1.5V) 3個(黄色いのが、電池ボックス)

回転用モータ 5V(電源は5V用アダプタからPICとは別)
濃い灰色の円筒形の中に旋盤加工で埋め込み。

LEDに対して電池でバランス調整。
透明アクリル3mmの円盤でフライホイールの役目。

プログラムは、今まで勉強した簡単な”H ”のプログラム。


[反省]

回転する部分の重さに対して、モータが小さすぎた為、回転が不安定。

円筒面にLEDを取り付けた方が、文字が歪まなくて良い。



















mikroC PRO for PIC


2009年10月23日金曜日

mikroC Pro for PIC (3.20) のInstall と設定

mikroC PRO for PIC 2009 [17.7MB](current build 3.20)をInstall します。

mikroC PRO for PICは、mikroElektronika社のCコンパイラです。

解凍してmikroC_PRO_PIC_2009_Build.3.20.exe
をダブルクリック



OK



Next



Check



Next



Next



Next




Install






Finish




いいえ




いいえ




いいえ




はい






これでInstallは、終わりです。

ツールバーのHelp→About





この画面 Version 3.2 が表示されれば、OKです。


このままだと、日本語が使えません。




Tools→Options




Whidbey



左上のEditor




Editor Settings



Open options dialog



右上のFont



フォント名  JS明朝(MS明朝)
サイズ    12(10)
文字セット  日本語

OK



右下のFont も同様




フォント名  JS明朝(MS明朝)
サイズ    12 (10)
文字セット  日本語
OK




Tab Width 2
してOK


以上で設定終わり。


2009年10月22日木曜日

回数指定ループでLEDの点滅(8) 多重ループ

[実験 MikroC Pro PIC16F84A_LED_0018]

無限ループと回数指定ループを使っていろいろなパターンでLEDを点滅させなさい。














今回のプログラムで、Used ROM 986(96%)Free ROM 44(4%)
PIC16F84AのROMが目一杯です。

PIC16F84AやPIC16F628AやPIC12F675やPIC12F683なら
2KワードまでなのでMikroC PRO無料体験版で充分ですね。

PICをC言語で始めたいと検討されているなら、
フリーで2kワードまで試用できるCコンパイラはどうでしょうか?
製品版ご検討の方は、下記のサイトへ。

または、





mikroC PRO for PIC