Analog write function භාවිතය
ඕනෑම Arduino Board එකක ප්රධාන වශයෙන් pin වර්ග 2 ක් තියෙනවා. එනම් Analog හා Digital pin ය. මෙහි digital පින් නැවතත් කොටස් 2 කට බෙදෙනවා එනම් PWM පහසුකම ඇති හා නැති යනුවෙන්. සාමාන්යයෙන් PWM පහසුකම ඇති pin ඉදිරියෙන් ~ සලකුණ යොදා ඇති අතර Arduino UNO board එකක මෙවැනි පින් 6 ක් තිබෙනවා.
සාමාන්ය Digital output එකකින් ලබා ගත හැක්කේ 0V හා 5V යන අවස්ථා 2 ක පමණයි. එය උදාහරණයකින් දැක්වුවහොත් සාමාන්ය Digital output එකකින් කල හැක්කේ LED එකක් දැල්වීම හා නිවා දැමීම පමණයි.
නමුත් මෙම PWM(Pulse With Modulation) පහසුකම ඇති පින් එකක විශේෂත්වය වන්නේ LED බල්බයක දීප්තිය අඩුවැඩි කිරීමට (LED fade) මෙම PWM පින් යොදාගත් හැක. එසේම කුඩා DC Motor එකක වේගය පාලනයටද මෙය යොදා ගත හැක.
LED fade කිරීම
ඒ සදහා පහත පරිදි පරිපථය සාදාගන්න
අනතුරුව පහත කෝඩ් කොටස Arduino වෙත Upload කරන්න.
void setup() {
pinMode(3,OUTPUT);
analogWrite(3,200);
}
void loop() {
}
මෙහි Loop කොටස තුල කිසිවක් ලියා නොමැත්තේ වැඩසටහන ධාවනය වන අතරතුර අගයන් වෙනස් නොකරන බැවිනි.
මෙහි 2 වන පේලියේදී සිදු කර ඇත්තේ 3 වන පින් එක output pin එකක් වශයෙන් යොදා ගන්නා බව Arduino board එකට දන්වා සිටීමයි.
3 වන පේලියේ සිදු කර ඇත්තේ 3 වන පින් එකෙහි අගය 200 ලෙස සැකසීමයි. මේ සදහා 0 ත් 255 ත් අතර ඕනෑම අගයක් යෙදිය හැක. 0 න් 0V යන්නත් 255 න් 5V යන්නත් අදහස් වේ. ඒ මෙහි 200 යෙදීමෙන් +3.92 V විභවයක් 3 පින් එක හරහා ලබා ගත හැක.
මෙම Output volatage එක පහත පරිදි ගණනය කළ හැක.
Output volatage = (5/255)*200 = 3.92 V
වැදගත්
PWM පින් එකක්දී සිදුවෙන්නේ සැබවින්ම voltage එකේ අඩු වැඩි වීමක් නම් නෙමෙයි. එතනදී සිදුවෙන්නේ
5v හා 0v විචලනය වීමේ සංඛ්යාතය වෙනස් කිරීමයි. නමුත් මෙම ක්රියාවලියේ ප්රතිඵලය voltage එකෙහි අඩු වැඩි වීමක අනුරූපයි.
උදාහරණයක් විදිහට කිව්වොත් එහෙම උඩ මම ගණනය කරල තියෙන voltage එක use කරල LED එකක් පත්තු කලොත් LED එකේ ලැබෙන දීප්තිය analogwrite(200) දැම්මහම එනවා. නමුත් මෙතන්දී ඇත්තටම 3.92v output එකක් නම් එන්නේ නෑ.
පහල තියෙන video එක බලන්නකො
Motor Speed control කිරීම
ඒ සදහා පහත පරිදි පරිපථය සාදාගන්න
මේ සඳහා පහත කොටස් අවශ්ය වේ.
TIP 120 Transistor
1k Ohms Resistor
IN 4004 Diode
1mF Capasitor
අනතුරුව පහත කෝඩ් කොටස Arduino වෙත Upload කරන්න.
void setup() {
pinMode(11,OUTPUT);
analogWrite(11, 200);
}
void loop() {
}
මෙහි කේත පැහැදිලි කිරීම ඉහත පරිදිම වේ.
මෙහි 200 වෙනුවට වෙනත් අගයන් යෙදීමෙන් වෙනස් වේග වලින් මෝටරය කැරකැවිය හැක.
softwarelanthaya.blogspot.com