پتانسیومتر دیجیتال رابط آردوینو

  • ۹۳ بازدید

مقاومت متغیر یا پتانسیومتر محدوده متفاوتی از مقدار مقاومت را در مدار می دهد و در بسیاری از کاربردها مانند کنترل صدا برای مدارهای صوتی، تلویزیون، نوسانگرها، لوازم برقی خانگی و غیره استفاده می شود.
در این مقاله توضیح می دهیم پتانسیومتر دیجیتال چیست؟ و نحوه ارتباط آن با برد آردوینو چگونه است.
پتانسیومتر دیجیتال چیست؟
پتانسیومتر دیجیتال در یک بسته مدار مجتمع (IC) عرضه می شود و مقاومت متغیر مکانیکی فیزیکی یا پتانسیومتر را با کمک سیگنال های کنترل تقلید می کند.

پتانسیومتر دیجیتال MCP41xx

MCP41XX یک دستگاه پتانسیومتر دیجیتال تک کاناله است و در بسته بندی PDIP یا SOIC 8 پین توسط شرکت میکروچیپ ارائه می شود، آی سی MCP41XX یک پتانسیومتر دیجیتالی دارای 256 حالت و در نسخه های مقاومت 10 کیلو اهم، 50 کیلو اهم و 100 کیلو اهم موجود است. MCP42XXX برای ارائه پتانسیومترهای دیجیتال دو کاناله هم موجود است. مقاومت MCP41XXX/42XXX به صورت خطی متفاوت است و از طریق یک رابط SPI استاندارد صنعتی کنترل می شود. [در برگه اطلاعات بیشتر بیابید].

پتانسیومتر دیجیتال

پتانسیومتر دیجیتال معمولی دارای پین با مقدار مقاومت بالا، پین با مقدار مقاومت پایین و پایه برای ترمینال متغیر است و خروجی توسط پین های کنترل دیجیتال کنترل می شود. در اینجا نمودار عملکرد MCP41xx با مقایسه ارائه شده است، PB0 نشان دهنده High، PA0 نشان دهنده Low و PW0 نشان دهنده پایانه های متغیر است. با تغییر سیگنال های کنترل، می توانیم مقدار مقاومت متفاوتی را در ترمینال متغیر (PW0) بدست آوریم.

رابط آردوینو با دیجیپت MCP41xx

در این مدار ارتباط یک LED به عنوان دستگاه هدف در نظر گرفته می شود و به مقدار پتانسیومتر دیجیتال توسط کنترل کننده آردوینو کنترل می شود. در این مدار با تغییر مقدار مقاومت در داخل پتانسیومتر دیجیتال MCP41xx، شدت نور LED تغییر می کند.

کد آردوینو

#include <SPI.h>

byte address = 0x00;
int CS= 10;

void setup()
{
pinMode (CS, OUTPUT);
SPI.begin();
}

void loop()
{
for (int i = 0; i <= 128; i++)
{
digitalPotWrite(i);
delay(10);
}
delay(500);
for (int i = 128; i >= 0; i--)
{
digitalPotWrite(i);
delay(10);
}
}

int digitalPotWrite(int value)
{
digitalWrite(CS, LOW);
SPI.transfer(address);
SPI.transfer(value);
digitalWrite(CS, HIGH);
}