Digitálny potenciometer MCP41100

Page

Stránky / Súčiastky ku Arduinu /

MCP41100 je digitálny potenciometer s jedným kanálom a rozlíšením 8 bitov. Ovláda sa pomocou rozhrania SPI. Potenciometer má hodnotu 100k a má lineárny priebeh. Existuje ešte aj rada MCP42XXX, kde je k dispozícii to isté s dvomi kanálmi. Výrobca predpokladá použitie ako ovládanie hlasitosti, nastavovanie kontrastu LCD, alebo ovládanie operačných zosilňovačov.

Popis

 
 Pin Názov  Popis 
 1  CS  Chip select. Pripojením logickej nuly sa aktivuje zapisovanie do obvodu.
 2  SCK  Serial clock. Pripojí sa pin 13 z Arduina.
 3  SI  Serial data input. Pripojí sa pin 11 z Arduina.
 4  Vss  Pripojí sa GND.
 5  PA0  Terminal A connection for pot 0. Pripojí sa na +5 V.
 6  PW0  Wiper connection por pot 0. Tu sa nachádza výstup.
 7  PB0  Terminal A connection for pot 0. Pripojí sa na GND.
 8  Vdd  +5 V
Po pripojení napájania je PW0 nastavené v polohe 0x80, čiže presne v polovici možného rozsahu. Hodnoty sú v rozpätí 0-255.

Zapojenie na skúšobnom poli

Programovanie

Obvod sa ovláda pomocou rozhrania SPI. Možno vyjsť z príkladu ku SPI, kde sa nachádza ovládanie podobného potenciometra. V tomto prípade máme k dispozícii iba jeden kanál. V dokumentácii možno nájsť trochu presnejšie informácie o výpočte čísla. Pre naše potreby je ale jediná použiteľná hodnota 0x11. Pomocou SPI treba preniesť dve hodnoty:
  • Adresa - 0x11
  • Hodnota - 0-255

MCP41XXX má iba 1 kanál. MCP42XXX má 2 kanály.

// set pin 10 as the slave select for the digital pot:
const int slaveSelectPin = 10;
// little delay
const int dl=50;
// channel
// watch datasheet, why there is only one usable value
const byte chnl=0x11;

///
/// Main loop
///
void loop() {
  Serial.println("from 0 to 255");
  // change the resistance on this channel from min to max:
  for (int level = 0; level < 256; level++) {
    digitalPotWrite(chnl, level);
    delay(dl);
  }
  ...
}

///
/// Modify wiper
///
void digitalPotWrite(byte address, byte value) {
  Serial.println(value);
  // take the SS pin low to select the chip
  digitalWrite(slaveSelectPin,LOW);
  //  send in the address and value via SPI
  SPI.transfer(address);
  SPI.transfer(value);
  // take the SS pin high to de-select the chip
  digitalWrite(slaveSelectPin,HIGH);
}

V súbore mcp41100.ino nájdete vzorový príklad. Je to klasická demonštrácia možností, kde najprv stúpa hodnota od 0 po 255 a následne zase klesá od 255 po 0. Aby sa dalo sledovať čo sa tam deje, pridal som aj výstup na sériový port. Na výstupe, ktorý je na schéme označený ako Wiper je možné voltmetrom merať výsledné napätie.

Ukážkové video

Vo videu je vidno výstup zapojenia, ktoré je prepojené na voltmeter.


Download

02.10.2015


Menu