Digitální potenciometr je výstupní modul pro Arduino. Tento modul patří do série X9C, ve které se jednotlivé varianty liší maximálním nastavitelným odporem. Tento návod je věnovaný variantě X9C103S, u které lze nastavit na výstup maximálně 10 000 ohmů. Nastavení probíhá ve 100 krocích, tedy po 100 ohmech.
Pro napájení lze použít jak 3,3, tak i 5 Voltů z Arduina. Maximální hodnota napájecího napětí je pak 7 Voltů. Co se týká proudového zatížení na výstupu, tak to je omezeno do 4,4 miliAmpér a není tedy vhodné na výkonové použití.
Pro úspěšné propojení digitálního potenciometru a Arduino desky propojíme celkem 5 vodičů. Připojíme GND na zem Arduina, U/D na pin D5, INC na pin D4, CS na pin D3 a VCC na +5V Arduina. Pro digitální piny lze použít také jiné volné piny. Změnu je ale nutné provést také na začátku programu.
Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovny Fast a FastX9CXXX, návod, jak na to je uveden zde.
Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny, nastavení čísel propojovacích pinů a vytvoření objektu x9 z knihovny.
Ve funkci setup nejprve zahájíme komunikaci po sériové lince a poté provedeme nastavení pinů pro náš objekt x9.
Nekonečná smyčka loop v sobě obsahuje for smyčku, která postupně projde všech 100 kroků, přičemž tato informace je vytažena přímo z knihovny pomocí proměnné X9_STEPS. V této for smyčce tedy vždy nastavíme aktuální krok smyčky na výstup, vypíšeme přibližnou hodnotu nastaveného odporu na sériovou linku a vyčkáme delší čas mezi jednotlivými kroky, abychom stihli změřit výsledek. Po nastavení všech 100 kroků se následně celá smyčka loop opakuje.
// Arduino digitální potenciometr X9C103S // navody.dratek.cz // připojení potřebné knihovny #include <FastX9CXXX.h> // nastavení čísel projovacích pinů #define X9_CS 3 #define X9_INC 4 #define X9_UD 5 // vytvoření objektu z knihovny, // k dispozici jsou také nastavení: // FastX9C102, FastX9C104 a FastX9C503 FastX9C103 x9; void setup() { // zahájení komunikace po sériové lince Serial.begin(9600); // nastavení pinů modulu x9.Setup(X9_CS, X9_UD, X9_INC); } void loop() { // postupné nastavení všech dostupných kroků // X9CXXX::X9_STEPS = 100 kroků dle výrobce for (int i = 0; i < X9CXXX::X9_STEPS; i++) { // nastavení daného kroku modulu na výstup x9.JumpToStep(i); // výpis nastaveného odporu po sériové lince Serial.print("Priblizna hodnota nastaveneho odporu: "); Serial.print(x9.GetEstimatedResistance(), DEC); Serial.println(" Ohmu"); // pauza mezi jednotlivými kroky delay(4000); } }
Po nahrání ukázkového kódu do Arduino desky s připojeným digitálním potenciometrem X9C103S dostaneme například tento výsledek:
Priblizna hodnota nastaveneho odporu: 0 Ohmu Priblizna hodnota nastaveneho odporu: 100 Ohmu Priblizna hodnota nastaveneho odporu: 200 Ohmu Priblizna hodnota nastaveneho odporu: 300 Ohmu Priblizna hodnota nastaveneho odporu: 400 Ohmu
Digitální potenciometr X9C103S je zajímavým doplňkem nejen pro Arduino. Pokud totiž stavíte obvod například s operačním zesilovačem či nastavitelným napěťovým regulátorem, tak tento digitální potenciometr můžete vhodně využít právě pro nastavení výstupního zesílení či napětí, namísto fyzických potenciometrů. Malou nevýhodou tohoto digitálního potenciometru tak zůstává horší přesnost, kdy sám výrobce udává hodnoty až +-20%, což na maximálním rozsahu 10kOhm znamená 8-12kOhm. Ze svého měření pak mohu říci, že jsem narazil na odchylky spíše okolo 10-12% maximálně.
Pokud Vám tedy nevadí nižší přesnost a hledáte právě zmíněnou funkci „virtuálního“ potenciometru, určitě zkuste tento obvod.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/7703-digitalni-potenciometr-10-k-x9c103s-modul.html