Met behulp van digitale potentiometer MCP41xx met Arduino

Probeer Ons Instrument Voor Het Oplossen Van Problemen





In dit project gaan we een digitale potentiometer koppelen aan Arduino. In deze demonstratie wordt potentiometer MCP41010 gebruikt, maar u kunt elke digitale potentiometer van de MC41 ** serie gebruiken.

Door Ankit Negi



INLEIDING TOT MC41010

Digitale potentiometers zijn net als elke analoge potentiometer met drie aansluitingen met slechts één verschil. Terwijl u in analoge modus de wisserpositie handmatig moet wijzigen, wordt in het geval van een digitale potentiometer de wisserpositie ingesteld volgens het signaal dat aan de potentiometer wordt gegeven met behulp van een microcontroller of microprocessor.

FIG. MC41010 IC-pinout

FIG. MC41010 IC-pinout



MC41010 is een 8-pins dual-in-line pakket-IC. Net als elke analoge potentiometer is dit IC verkrijgbaar in 5k, 10k, 50k en 100k. In dit circuit wordt een 10k-potentiometer gebruikt
MC4131 heeft de volgende 8 terminals:

Pin nr. Pin Naam Kleine beschrijving

1 CS Deze pin wordt gebruikt om de slave of randapparatuur te selecteren die op de arduino is aangesloten. Als dit is
Laag, dan is MC41010 geselecteerd en als dit hoog is, wordt MC41010 niet geselecteerd.

2 SCLK gedeelde / seriële klok, arduino geeft klok voor initialisatie van gegevensoverdracht van
Arduino naar IC en vice versa.

3 SDI / SDO Seriële gegevens worden via deze pin overgedragen tussen arduino en IC
4 VSS Aardingsklem van arduino is verbonden met deze pin van IC.

5 PA0 Dit is een aansluiting van de potentiometer.

6 PW0 Deze klem is de wisser-aansluiting van de potentiometer (om de weerstand te veranderen)
7 PB0 Dit is een andere aansluiting van de potentiometer.

8 VCC Stroom naar IC wordt via deze pin gegeven.

Dit IC bevat slechts één potentiometer. Sommige IC's hebben maximaal twee ingebouwde potentiometers. Dit
De waarde van de weerstand tussen wisser en een andere aansluiting wordt in 256 stappen gewijzigd, van 0 tot 255. Omdat we een weerstand van 10k gebruiken, wordt de waarde van de weerstand gewijzigd in stappen van:
10k / 256 = 39 ohm per stap tussen 0 en 255

COMPONENTEN

Voor dit project hebben we de volgende componenten nodig.

1. ARDUINO
2. MC41010 IC
3. 220 OHM WEERSTAND
4. Leiden
5. VERBINDINGSDRAAD

Maak verbindingen zoals getoond in afb.

1. Verbind cs pin met digitale pin 10.
2. Verbind SCK pin met digitale pin 13.
3. Sluit de SDI / SDO-pin aan op digitale pin 11.
4. VSS naar aardingspin van arduino
5. PA0 naar 5v pin van arduino
6. PB0 naar de grond van arduino
7. PWO naar analoge pin A0 van arduino.
8. VCC tot 5 v van arduino.

PROGRAMMACODE 1

Deze code drukt de spanningsverandering af over de wisseraansluiting en aarde op de seriële monitor van Arduino IDE.

UITLEG CODE 1:

Om een ​​digitale potentiometer met arduino te gebruiken, moet u eerst de SPI-bibliotheek opnemen die in arduino IDE zelf wordt geleverd. Bel gewoon de bibliotheek met deze opdracht:
#inclusief

In ongeldige instellingen worden pinnen toegewezen als uitvoer of invoer. En er worden ook opdrachten gegeven om SPI en seriële communicatie tussen arduino en ic te starten, die zijn:

In void loop wordt for loop gebruikt om de weerstand van de digitale pot in totaal 256 stappen te veranderen. Eerst van 0 tot 255 en dan weer terug naar 0 met een vertraging van 10 milliseconden tussen elke stap:

digitalPotWrite (i) functie schrijft deze waarde om de weerstand op een bepaald adres van ic te veranderen.

De weerstand tussen wisser en eindterminal kan worden berekend met behulp van deze formules:

R1 = 10k * (256 niveaus) / 256 + Rw
En
R2 = 10k * niveau / 256 + Rw

Hier R1 = weerstand tussen wisser en een terminal
R2 = weerstand tussen wisser en andere aansluiting
Level = stap op een bepaald moment (variabele 'I' gebruikt in for lus)
Rw = weerstand van wisseraansluiting (te vinden in datasheet van de ic)
Met de functie digitalPotWrite () wordt de digitale potentiometerchip geselecteerd door LAGE spanning toe te wijzen aan de CS-pin. Nu de ic is geselecteerd, moet een adres worden aangeroepen waarop gegevens worden geschreven. In het laatste deel van de code:

SPI.-overdracht (B00010001)

Het adres wordt genoemd en dat is B00010001 om de wiper-terminal van de ic te selecteren waarop gegevens worden geschreven. En dus voor de waarde van de lus, d.w.z. i wordt geschreven om de weerstand te veranderen.

WERKING CIRCUIT:

Zolang de waarde van i blijft veranderen input naar A0 pin van arduino ook blijft veranderen tussen 0 en 1023. Dit gebeurt omdat de wisser terminal is direct verbonden met A0 pin, en de andere terminal van de potentiometer is verbonden met respectievelijk 5 volt en aarde. Wanneer de weerstand verandert, verandert dat ook de spanning erover die direct door Arduino als invoer wordt genomen en dus krijgen we een spanningswaarde op een seriële monitor voor een bepaalde weerstandswaarde.

SIMULATIE 1:

Dit zijn enkele simulatiebeelden voor dit circuit bij verschillende waarden van i:

Sluit nu gewoon een led in serie met een weerstand van 220ohm aan op de wisseraansluiting van het IC, zoals weergegeven in de afbeelding.

CODE 2:

UITLEG CODE 2:

Deze code is vergelijkbaar met code 1, behalve dat deze code geen seriële opdrachten bevat. Er worden dus geen waarden afgedrukt op een seriële monitor.

WERKUITLEG

Omdat led is aangesloten tussen de wisseraansluiting en aarde als de weerstand verandert, verandert ook de spanning over de led. En dus als de weerstand waarover led is aangesloten, stijgt van 0ohm tot maximaal, neemt ook de helderheid van led toe. Die weer langzaam vervagen door afname van de weerstand van maximaal naar 0v.

Simulatie 2

Simulatie 3




Een paar: Servomotor bedienen met behulp van joystick Volgende: Maak deze geavanceerde digitale ampèremeter met Arduino