Menggunakan Potensiometer Digital MCP41xx Dengan Arduino

Coba Instrumen Kami Untuk Menghilangkan Masalah





Dalam proyek ini kita akan menghubungkan potensiometer digital dengan arduino. Dalam demonstrasi ini potensiometer MCP41010 digunakan tetapi Anda dapat menggunakan potensiometer digital seri MC41 ** apa pun.

Oleh Ankit Negi



PENGANTAR MC41010

Potensiometer digital sama seperti potensiometer analog dengan tiga terminal dengan hanya satu perbedaan. Sedangkan pada analog Anda harus mengubah posisi wiper secara manual, Dalam hal posisi wiper potensiometer digital diatur sesuai dengan sinyal yang diberikan ke potensiometer menggunakan mikrokontroler atau mikroprosesor.

ARA. Pinout IC MC41010

ARA. Pinout IC MC41010



MC41010 adalah IC paket jalur ganda 8 pin. Sama seperti potensiometer analog lainnya, IC ini hadir dalam ukuran 5k, 10k, 50k, dan 100k. Di sirkuit ini potensiometer 10k digunakan
MC4131 memiliki 8 terminal berikut:

Pin no. Nama Pin Deskripsi kecil

1 CS Pin ini digunakan untuk memilih slave atau peripheral yang terhubung ke arduino. Jika ini
Rendah maka MC41010 dipilih dan jika ini tinggi maka MC41010 batal dipilih.

2 SCLK Shared / Serial Clock, arduino memberikan jam untuk inisialisasi transfer data dari
Arduino ke IC dan sebaliknya.

3 SDI / SDO Data serial ditransfer antara arduino dan IC melalui pin ini
4 VSS Ground terminal arduino terhubung ke pin IC ini.

5 PA0 Ini adalah salah satu terminal potensiometer.

6 PW0 Terminal ini adalah terminal penghapus potensiometer (untuk mengubah tahanan)
7 PB0 Ini adalah terminal lain dari potensiometer.

8 VCC Daya ke IC diberikan melalui pin ini.

IC ini hanya berisi satu potensiometer. Beberapa IC memiliki paling banyak dua potensiometer yang terpasang. Ini
Nilai resistansi antara wiper dan terminal lainnya diubah dalam 256 langkah, dari 0 menjadi 255. Karena kita menggunakan resistor 10k, nilai resistor diubah dalam langkah-langkah:
10k / 256 = 39 ohm per langkah antara 0 dan 255

KOMPONEN

Kami membutuhkan komponen berikut untuk proyek ini.

1. ARDUINO
2. IC MC41010
3. RESISTOR 220 OHM
4. LED
5. MENGHUBUNGKAN KABEL

Buat koneksi seperti yang ditunjukkan pada gbr.

1. Hubungkan pin cs ke pin digital 10.
2. Hubungkan pin SCK ke pin digital 13.
3. Hubungkan pin SDI / SDO ke pin digital 11.
4. VSS ke pin ground arduino
5. PA0 sampai 5v pin arduino
6. PB0 ke ground dari arduino
7. PWO ke pin analog A0 dari arduino.
8. VCC sampai 5 v Arduino.

KODE PROGRAM 1

Kode ini mencetak perubahan tegangan melintasi terminal wiper dan ground pada Serial Monitor Arduino IDE.

#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)

KODE PENJELASAN 1:

Untuk menggunakan potensiometer digital dengan arduino Anda perlu menyertakan library SPI terlebih dahulu yang disediakan di arduino IDE itu sendiri. Panggil saja perpustakaan dengan perintah ini:
#include

Dalam penyetelan kosong, pin ditetapkan sebagai keluaran atau masukan. Dan perintah untuk memulai SPI dan komunikasi serial antara arduino dan ic juga diberikan yaitu:

#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)
}

Pada void loop, for loop digunakan untuk mengubah resistansi pot digital sebanyak 256 langkah. Pertama dari 0 hingga 255 dan kemudian kembali ke 0 dengan penundaan 10 milidetik di antara setiap langkah:

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

digitalPotWrite (i) berfungsi menulis nilai ini untuk mengubah resistansi pada alamat ic tertentu.

Resistensi antara penghapus dan terminal ujung dapat dihitung menggunakan rumus berikut:

R1 = 10k * (256-tingkat) / 256 + Rw
Dan
R2 = 10k * tingkat / 256 + Rw

Disini R1 = tahanan antara wiper dan satu terminal
R2 = tahanan antara penghapus dan terminal lainnya
Level = langkah pada saat tertentu (variabel 'I' digunakan untuk loop)
Rw = resistansi terminal penghapus (dapat ditemukan di lembar data ic)
Menggunakan fungsi digitalPotWrite (), chip potensiometer digital dipilih dengan menetapkan tegangan LOW ke pin CS. Sekarang saat ic dipilih, sebuah alamat harus dipanggil dimana data akan ditulis. Di bagian terakhir kode:

Transfer SPI (B00010001)

Alamat yang dipanggil adalah B00010001 untuk memilih terminal penghapus ic tempat data akan ditulis. Dan karenanya untuk nilai loop yaitu, i ditulis untuk mengubah resistansi.

SIRKUIT BEKERJA:

Selama nilai i terus berganti input ke pin A0 arduino juga terus berubah antara 0 dan 1023. Hal ini terjadi karena terminal wiper terhubung langsung ke pin A0, dan terminal potensiometer lainnya masing-masing terhubung ke 5volt dan ground. Sekarang ketika resistansi berubah, begitu juga tegangan yang melewatinya yang langsung diambil oleh arduino sebagai input dan dengan demikian kami mendapatkan nilai tegangan pada monitor serial untuk nilai resistansi tertentu.

SIMULASI 1:

Ini adalah beberapa gambar simulasi untuk rangkaian ini pada berbagai nilai i:

Sekarang sambungkan saja led secara seri dengan resistor 220ohm ke terminal penghapus IC seperti yang ditunjukkan pada gambar.

KODE 2:

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

KODE PENJELASAN 2:

Kode ini mirip dengan kode 1 hanya saja tidak ada perintah serial di kode ini. Jadi tidak ada nilai yang akan dicetak pada monitor serial.

PENJELASAN KERJA

Karena led dihubungkan antara terminal penghapus dan ground sebagai perubahan resistansi, begitu juga tegangan yang melintasi led. Dan karenanya sebagai resistansi di mana led terhubung naik dari 0ohm ke maksimum begitu juga kecerahan led. Yang lagi-lagi perlahan memudar karena penurunan resistensi dari maksimum ke 0v.

Simulasi2

Simulasi3




Sepasang: Cara Mengontrol Motor Servo Menggunakan Joystick Selanjutnya: Buat Ammeter Digital Canggih ini menggunakan Arduino