การทดลองที่ 7 เขียนโปรแกรม Interface กับ DigitalPot

MCP4011

MCP4011

อาจจะมีบางงานที่คุณต้องการจะควบคุณสัญญาณ Analog ด้วย Digital I/O เช่นควบคุม Gain แต่ไม่รู้ว่าจะใช้อะไรควบคุม ลองมาดูตัวนี้ครับครับ MCP4011 Low-Cost 64-Step Volatile Digital POT มีความละเอียด 6 บิต หรือ 64 สเตป ใช้ขาสัญญาณเพียง 2 ขาในการ Interface ขา CS และ U/D

Volatile Digital Potentiometer in SOT-23 packages

64 Taps: 63 Resistors with Taps to VSS and VDD Simple Up/Down (U/D) Protocol Power-up to midscale

  • Resistance Values: 2.1Ohm, 5kOhm, 10kOhm, 50kOhm
  • Low Tempco: – Absolute (Rheostat): <150 ppm (typ.) – Ratiometric (Potentiometer): <10 ppm (typ.)
  • Low Wiper Resistance: 70? (typ.)
  • Low-Power Operation: 1mA Max Static Current
  • Wide Operating Voltage: 1.8V to 5.5V Extended Temperature Range: -40C to +125C
ตำแหน่งขา

ตำแหน่งขา

การเขียนโปรแกรมให้ POT มีค่าลดลง

void increase_pot (unsigned char nstep)
{
unsigned char a,cnt;
UD_POT = 0;
CS_POT = 0;
for (cnt = 0;cnt < nstep;cnt++){ a = 8;
while(a)
a–;
UD_POT = 1;
a = 8;
while(a)
a–;
UD_POT = 0;
}
CS_POT = 1;
}

ให้ขา U/D เป็น “0″ ก่อนแล้วจึงดึง CS ลง “0″ จากนั้นก็ส่ง pulse ไปที่ขา U/D ส่ง pulse ไป 1 ลูกค่า POT จะลดลงไป 1 Step

การเขียนโปรแกรมให้ POT มีค่าเพิ่มขึ้น

void decrease_pot (unsigned char nstep)
{
unsigned char a,cnt;
UD_POT = 1;
CS_POT = 0;
for (cnt = 0;cnt < nstep;cnt++){ a = 8;
while(a)
a–;
UD_POT = 0;
a = 8;
while(a)
a–;
UD_POT = 1;
}
CS_POT = 1;
}

ให้ขา U/D เป็น “1″ ก่อนแล้วจึงดึง CS ลง “0″ จากนั้นก็ส่ง pulse ไปที่ขา U/D ส่ง pulse ไป 1 ลูกค่า POT จะเพิ่มขึ้นไป 1 Step

การทดลอง

การทดลอง MCP4011 DigitalPot
การทดลอง MCP4011 DigitalPot

ทฤษฎีก็ว่ากันไปแล้วมาถึงการทดลอง ผมได้ลองใช้ MCP4011 เป็นตัวปรับ Gain ของ AMP LM386 โดยให้ไมโครคอนโทรลเลอร์ 89S52 รับค่าจากสวิตช์ ถ้ากดสวิตช์เพิ่มเสียง MCP4011 ก็จะเพิ่มค่า R ทำให้เสียงดังขึ้น และจะมีตัวเลขแสดง Step ของ MCP4011 ใชว์ที่จอ LCD16x2 ด้วย ในทางตรงกันข้าม ถ้ากดสวิตช์ลดเสียงก็จะลดค่า R ทำให้เสียงค่อยลง ค่าสูงสุดที่กดได้จะเป็น 64/64 และค่าต่ำสุดเท่ากับ 0/64 สำหรับตัว MCP4011 ถ้าสนใจสามารถซื้อได้ที่ บ. Electronics Source

89S52 Port Define

  • P1.1 <—> CS (MCP4011)
  • P1.2 <—> U/D (MCP4011)
  • P1.3 <—> SW UP
  • P1.4<—> SW UP

Download Code MCS51 การทดลองที่ 7 เขียนโปรแกรม Interface กับ DigitalPotentiometer ควบคุมความดังของเสียงเพลงด้วยการกดปุ่ม