Kérdés:
Digitális potenciométer nem halványodó LED
cgaubuchon
2014-11-11 20:32:29 UTC
view on stackexchange narkive permalink

Tehát megpróbálom kipróbálni, mi lesz végül egy Arduino, amely 3 110 V-os motort vezérel, és amelyeket jelenleg egy analóg pot vezérel. De erről később.

Megpróbálok kipróbálni egy digitális potot (még soha nem volt ilyen), és néhány problémával szembesülök az online tananyagok segítségével. Egyelőre egy LED-et szeretnék vezérelni a digitális fazékkal ( Spec Sheet), hogy a LED folytonos hurokban elhalványuljon és elhalványuljon.

Itt van a bemutató, amelyet követtem. Más chip modellt használ, de az általam használt bankból úgy tűnik, hogy a csapok megegyeznek. (Tévedhetek?)

Kétszer és háromszor ellenőriztem a vezetékeket, és ezek megfelelnek az alábbiaknak.

Wiring Diagram

Itt van a futtatott kód (az oktatóanyagtól kissé módosítva, az oktató kódot is megpróbálta)

  #include <SPI.h>byte address = 0x11; int CS = 10; int i = 0; void setup () {pinMode (CS , KIMENET); SPI.begin ();} void loop () {for (i = 0; i < = 128; i ++) {digitalPotWrite (i); késés (10); } késés (500); for (i = 128; i > = 0; i--) {digitalPotWrite (i); késés (10); }} int digitalPotWrite (int érték) {digitalWrite (CS, LOW); SPI.transzfer (cím); SPI.transzfer (érték); digitalWrite (CS, HIGH);}  

A fenti kettő eredményeként van egy LED-em, amely világít (kb. 50% -nak tűnik), és nem fakul ki / be minden.

Mivel viszonylag új a vezetékezés és az EE általában, létezik-e jobb módszer az analóg fazék reprodukálására digitális fazék használata nélkül? Használhatom csak a PWM-et a vezérléshez? Miért ne égne csak a LED?

Köszönöm!

Az Ön által megadott specifikációs lap nagyon általános, és a digitális edények nagyon különböző modelljeit fedi le. Mi a pontos referenciád?
Sajnálom, @jfpoilpret, az MCP41X1 referenciát használom, mivel a chip egy MCP4131 [Amazon] -on keresztül (http://www.amazon.com/Microchip-Digital-Potentiometer-10K/dp/B007R9UTMQ/ref=sr_1_1?ie=UTF8&qid=1415365 = 8-1 és kulcsszavak = MCP4131)
Igen, az Arduino PWM segítségével egyszerűen vezérelhet egy LED-et. Lásd: http://arduino.cc/en/Tutorial/Fade.
Egy válasz:
jfpoilpret
2014-11-15 15:24:18 UTC
view on stackexchange narkive permalink

Miután tanulmányoztam az adatlap különbségeket az MCP41100 (az oktatóanyagban használt digitális pot) és az MCP4131 (az általad kapott) között, két fő különbséget találtam mindkettő között:

  1. Különbség a megoldásban :

    • Az MCP41100 257 lépést tartalmaz erős > felbontás (8 bit + 1): láthatja, hogy az adatlapja elején
    • az MCP4131 csak 129 lépés felbontással rendelkezik (7 bit + 1): ezeket az információkat adatlapjának 2. oldalán találhatja meg
  2. Különbség a parancsformátumok ban SPI-n keresztül küldött; mindkettő egy "parancsbájtot" használ, amelyet egy "adatbájt" követ, de a parancsbájtja eltérő formátumú:

    • Az MCP41100 parancsbájt XX C1 C0 XX P1 P0 kód> ahol X nincs használva , a C1 C0 egyike a 4 lehetséges parancsnak, csak 2 érvényes parancs: 01 (Adatok írása), 10 (Shutdown), végül a P1 P0 értéknek mindig 01 kell lennie egy MCP41100 esetében.
    • Az MCP4131 parancs bájtja AD3 AD2 AD1 AD0 C1 C0 D9 D8 , ahol az AD3-AD0 annak a "regisztrációnak" a címe, amelyen parancsot adhat ki. Az MCP4131 esetében a legfontosabb cím a 00 , ami azt jelenti, hogy „illékony ablaktörlő 0” (ez lehetővé teszi a fazék ellenállási értékének megváltoztatását), a C1 C0 a 4 lehetséges parancs egyike (adatok olvasása, adatok írása, növekmény, csökkentés), példádban a parancsnak 00 (adatok írása) kell lennie; végül a D9 D8 az érték nagy sorrendű bitje, amelyet a regiszterbe kell írni, de a D9 nem használt, és mindig 0 értékűnek kell lennie. 257 lépéses edényeknél a D8 értéket használják a teljes ellenállási skálával, különben a 0
  3. ol értéket kell megadni. >

    Most, hogy tudjuk, mire számít az MCP4131 az SPI-n keresztül továbbított parancsokként, megnézhetjük, mit ad át az oktatóprogram:

      00010001 érték  

    Az első bájt így bontható:

  • 0001 a pot törlőregiszter 1 ( nem 0 ): ez az ablaktörlő nem létezik az MCP4131 hecne-n, ha hozzá írunk, akkor nincs hatása ...
  • 00 bitek, amelyek jelentése: "Az előző címben megadott regisztráció írása"
  • 01 nagyteljesítményű bit (D9-D8), amelyet az ablaktörlő regiszterbe kell írni.

Bár I nincs kéznél MCP4131, azt hiszem, a következőképpen kell adaptálnia a programot:

  byte address = 0x00;  

És ez rendben is legyen ! Valóban, mostantól a programod átmegy:

  00000000 value  

Ami azt jelenti, hogy „írj value -t ( 0 között code> és 128 amelyek pontosan megegyeznek a 129 lépés felbontással) a port törlő regiszteréhez ".

Ne feledje, hogy az MCP4131 a parancsokat tekintve több funkcióval rendelkezik, mint az MCP41100. , például használhatja az "inkrement" és a "decrement" speciális parancsokat, azzal az előnnyel, hogy csak egy bájtra (a parancs bájtjára) van szükségük, pl.

  void loop () {for (i = 0; i < = 128; i ++) {digitalPotIncrement (); késés (10); } késés (500); for (i = 128; i > = 0; i--) {digitalPotDecrement (); késés (10); }} void digitalPotIncrement () {digitalWrite (CS, LOW); SPI.transzfer (0x04); digitalWrite (CS, HIGH);} void digitalPotDecrement () {digitalWrite (CS, LOW); SPI.transzfer (0x08); digitalWrite (CS, HIGH);}  


Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...