Arduino – Digitale Potmeter MCP41xxx
Hardware:
De MCP41xxx zijn digitale potmeters van 10, 50 en 100 KOhm, te regelen in 256 stappen (8-bit) via SPI, ze zijn eenvoudig aan te sluiten op een microcontroller.
Functie
Pinout
Pin: | Afkorting: | Functie: |
1 | CS | Chip Select |
2 | SCLK | Serial Clock |
3 | SI | Data |
4 | Vss | GND |
5 | PA0 | Potmeter kant A |
6 | PW0 | Potmeter wiper |
7 | PB0 | Potmeter kant B |
8 | Vcc | +5V |
Weerstand berekenen
Weerstand berekenen van een 100K ohm versie:
Ra-b is volgens de datasheet 100K en de wiper weerstand is “standaard” 125 Ohm.
Als we bijvoorbeeld 222 schrijven naar cd MCP41100 dan is de weerstand RWA gelijk aan
Rwa= (100*10^3)*(256-222)/256 – 125 = 13.41K ohm .
Aansluiten op de Arduino
Sluit het volgende aan via onderstaand schema:
MCP41xxx pin: | Arduino pin: | Functie: |
---|---|---|
1 (CS) | D10 | Chip Select |
2 (SCLK) | D13 | Serial Clock |
3 (SI) | D11 | Data |
4 (Vss) | GND | GND |
5 (PA0) | +5V | Potmeter kant A |
6 (PW0) | Uitgang naar apparaat (Anode van LED) | Potmeter wiper |
7 (PB0) | GND | Potmeter kant B |
8 (Vcc) | +5V | +5V |
Script
Onderstaand script laat zien hoe je een LEDje kan dimmen door de digitale potmeter in te stellen met een getal tussen de 0 en 256.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include <SPI.h> byte address = 0x11; int CS= 10; int i=0; void setup() { pinMode (CS, OUTPUT); SPI.begin(); // adjust high and low resistance of potentiometer // adjust Highest Resistance . digitalPotWrite(0x00); delay(1000); // adjust wiper in the Mid point . digitalPotWrite(0x80); delay(1000); // adjust Lowest Resistance . digitalPotWrite(0xFF); delay(1000); } void loop() { for (i = 0; i <= 255; i++) { digitalPotWrite(i); delay(10); } for (i = 255; i >= 0; i--) { digitalPotWrite(i); delay(10); } } int digitalPotWrite(int value) { digitalWrite(CS, LOW); SPI.transfer(address); SPI.transfer(value); digitalWrite(CS, HIGH); } |
Bron:
instructables.com
[#/datasheets/mcp41xxx” ]