Коришћење дигиталног потенциометра МЦП41кк са Ардуином

Испробајте Наш Инструмент За Елиминисање Проблема





У овом пројекту ћемо повезати дигитални потенциометар са ардуином. У овом демонстрацијском потенциометру се користи МЦП41010, али можете користити било који дигитални потенциометар серије МЦ41 **.

Аутор Анкит Неги



УВОД У МЦ41010

Дигитални потенциометри су попут било којег аналогног потенциометра са три терминала са само једном разликом. Док у аналогном морате ручно променити положај брисача, у случају дигиталног потенциометра положај брисача се подешава према сигналу који се даје потенциометру помоћу било ког микроконтролера или микропроцесора.

ШИПАК. МЦ41010 ИЦ пиноут

ШИПАК. МЦ41010 ИЦ пиноут



МЦ41010 је 8-пински дуал-лине пакет ИЦ. Као и било који аналогни потенциометар, овај ИЦ долази у 5к, 10к, 50к и 100к. У овом колу се користи 10к потенциометар
МЦ4131 има следећих 8 терминала:

Пин бр. Пин Пин Мали опис

1 ЦС Овај пин се користи за одабир помоћног или периферног уређаја повезаног на ардуино. Ако је ово
Изабран је низак ниво МЦ41010, а ако је овај висок, МЦ41010 је поништен.

2 СЦЛК дељени / серијски сат, ардуино даје сат за иницијализацију преноса података са
Ардуино на ИЦ и обрнуто.

3 СДИ / СДО Серијски подаци се преносе између ардуина и ИЦ преко овог пина
4 ВСС прикључак за уземљење ардуино-а повезан је на овај пин ИЦ-а.

5 ПА0 Ово је један терминал потенциометра.

6 ПВ0 Овај терминал је терминал брисача потенциометра (за промјену отпора)
7 ПБ0 Ово је још један терминал потенциометра.

8 ВЦЦ напајање за ИЦ даје се преко овог пина.

Овај ИЦ садржи само један потенциометар. Неки ИЦ имају уграђена највише два потенциометра. Ово
Вредност отпора између брисача и било ког другог терминала мења се у 256 корака, од 0 до 255. Пошто користимо 10к отпорник, вредност отпорника се мења у корацима:
10к / 256 = 39 ома у кораку између 0 и 255

КОМПОНЕНТЕ

За овај пројекат су нам потребне следеће компоненте.

1. АРДУИНО
2. МЦ41010 ИЦ
3. 220 ОХМ ОТПОРНИК
4. ЛЕД
5. ПРИКЉУЧИВАЊЕ ЖИЦА

Успоставите везе како је приказано на сл.

1. Повежите цс ​​пин са дигиталним пином 10.
2. Повежите СЦК пин на дигитални пин 13.
3. Повежите СДИ / СДО пин на дигитални пин 11.
4. ВСС на уземљени пин ардуина
5. ПА0 до 5в пин ардуина
6. ПБ0 до тла ардуина
7. ПВО на аналогни пин А0 ардуина.
8. ВЦЦ до 5 в ардуина.

КОД ПРОГРАМА 1

Овај код исписује промену напона на терминалу брисача и масу на серијском монитору Ардуино ИДЕ-а.

#include
int CS = 10 // initialising variable CS pin as pin 10 of arduino
int x // initialising variable x
float Voltage // initialising variable voltage
int I // this is the variable which changes in steps and hence changes resistance accordingly.
void setup()
{
pinMode (CS , OUTPUT) // initialising 10 pin as output pin
pinMode (A0, INPUT) // initialising pin A0 as input pin
SPI.begin() // this begins Serial peripheral interfece
Serial.begin(9600) // this begins serial communications between arduino and ic.
}
void loop()
{
for (int i = 0 i <= 255 i++)// this run loops from 0 to 255 step with 10 ms delay between each step
{
digitalPotWrite(i) // this writes level i to ic which determines resistance of ic
delay(10)
x = analogRead(A0) // read analog values from pin A0
Voltage = (x * 5.0 )/ 1024.0// this converts the analog value to corresponding voltage level
Serial.print('Level i = ' ) // these serial commands print value of i or level and voltage across wiper
Serial.print(i) // and gnd on Serial monitor of arduino IDE
Serial.print(' Voltage = ')
Serial.println(Voltage,3)
}
delay(500)
for (int i = 255 i >= 0 i--) // this run loops from 255 to 0 step with 10 ms delay between each step
{
digitalPotWrite(i)
delay(10)
x = analogRead(A0)
Voltage = (x * 5.0 )/ 1024.0 // this converts the analog value to corresponding voltage level
Serial.print('Level i = ' ) // these serial commands print value of i or level and voltage across wiper
Serial.print(i) // and gnd on Serial monitor of arduino IDE
Serial.print(' Voltage = ')
Serial.println(Voltage,3)
}
}
int digitalPotWrite(int value) // this block is explained in coding section
{
digitalWrite(CS, LOW)
SPI.transfer(B00010001)
SPI.transfer(value)
digitalWrite(CS, HIGH)

ОБЈАШЊЕЊЕ КОДА 1:

Да бисте користили дигитални потенциометар са ардуином, прво морате да укључите СПИ библиотеку која се испоручује у самом ардуино ИДЕ-у. Само позовите библиотеку овом наредбом:
#инцлуде

У празном подешавању, пинови се додељују као излаз или улаз. Такође су дате наредбе за започињање СПИ и серијске комуникације између ардуина и иц које су:

#include
int CS = 10
int x
float Voltage
int i
void setup()
{
pinMode (CS , OUTPUT)
pinMode (A0, INPUT)
SPI.begin()// this begins Serial peripheral interfece
}
void loop()
{
for (int i = 0 i <= 255 i++)// this run loops from 0 to 255 step with 10 ms delay between each step
{
digitalPotWrite(i)// this writes level i to ic which determines resistance of ic
delay(10)
}
delay(500)
for (int i = 255 i >= 0 i--)// this run loops from 255 to 0 step with 10 ms delay between each step
{
digitalPotWrite(i)
delay(10)
}
}
int digitalPotWrite(int value)// this block is explained in coding section
{
digitalWrite(CS, LOW)
SPI.transfer(B00010001)
SPI.transfer(value)
digitalWrite(CS, HIGH)
}

У воид петљи, фор петља се користи за промену отпора дигиталног пота у укупно 256 корака. Прво од 0 до 255, а затим поново до 0 са закашњењем од 10 милисекунди између сваког корака:

SPI.begin() and Serial.begin(9600)

функција дигиталПотВрите (и) записује ову вредност за промену отпора на одређеној адреси иц.

Отпор између брисача и крајњег терминала може се израчунати помоћу ових формула:

Р1 = 10к * (256 нивоа) / 256 + Рв
И
Р2 = 10к * ниво / 256 + Рв

Овде је Р1 = отпор између брисача и једног терминала
Р2 = отпор између брисача и другог терминала
Ниво = корак у одређеном тренутку (променљива „И“ коришћена у фор петљи)
Рв = отпор терминала брисача (може се наћи у техничком листу иц)
Коришћењем функције дигиталПотВрите (), чип дигиталног потенциометра се бира додељивањем НИЗКОГ напона ЦС пину. Сада када је иц изабран, мора се позвати адреса на коју ће се подаци уписивати. У последњем делу кода:

СПИ.трансфер (Б00010001)

Позива се адреса која је Б00010001 за одабир терминала брисача ИЦ-а на који ће се уписивати подаци. И стога за вредност петље, тј., И је написано да промени отпор.

КРОГ РАДА:

Све док вредност и наставља да мења улаз на А0 пину ардуина, такође се мења између 0 и 1023. То се догађа зато што је терминал брисача директно повезан са А0 пином, а остали терминали потенциометра повезани су на 5 волти и на земљу. Сада, када се отпор промени, мења се и напон на њему који ардуино узима директно као улаз и тако добијамо вредност напона на серијском монитору за одређену вредност отпора.

СИМУЛАЦИЈА 1:

Ево неколико симулационих слика за ово коло при различитим вредностима и:

Сада само спојите лед у серију са отпорником од 220 охма на терминал ИЦ брисача као што је приказано на слици.

КОД 2:

for (int i = 0 i <= 255 i++) and for (int i = 255 i>= 0 i--)

ОБЈАШЊЕЊЕ КОДА 2:

Овај код је сличан коду 1, осим што у њему нема серијских наредби. Дакле, никакве вредности неће бити исписане на серијском монитору.

ОБЈАШЊЕЊЕ РАДА

Будући да је лед повезан између терминала брисача и масе, како се отпор мења, тако се мења и напон на њему. И отуда како отпор преко којег је лед повезан расте од 0охм до максимума, тако расте и осветљеност лед-а. Који опет полако бледе услед смањења отпора са максималних на 0в.

Симулација2

Симулација3




Претходно: Како управљати серво мотором помоћу џојстика Следеће: Направите овај напредни дигитални амперметар користећи Ардуино