Posuvný registr s rotačním enkodérem a bat. napájením

Project owner: Cyberian
Interested:
Related:
License: Uveďte původ-Zachovejte licenci CC BY-SA
  • ESP8266 D1 mini
  • KY-040 rotační enkodér s tlačítkem
  • 8x LED dioda červená, ideálně čirá
  • 8x LED dioda žlutá, ideálně čirá
  • 8x LED dioda zelená, ideálně čirá
  • 1x RGB led, ideálně čirá
  • 2x rezistorová síť varianta B (oddělené odpory) 4x1K0, např. SIP08G102B
  • 2x rezistorová síť varianta B (oddělené odpory) 4x1K5, např. SIP08G152B
  • 1x rezistor 100K
  • kapacitor 47-100µF, elektrolytický, ideálně keramický s polaritou
  • 74HC595 nebo 74HCT595, posuvný registr s tří stavovým výstupem
  • Pevný VLDO stabilizátor na 3,3V. Např. NCP59151-33
  • Držák baterie 4xAA
  • 4x AA baterie, počítáno je s nabíjecími, které mají 1,2 V. Stabilizátor je do 13,5 V
  • cca 37 kusů propojek ;-) pro variantu s jedním posuvným registrem

Mým cílem je sestavit hračku pro syna a naučit se pracovat s kaskádou posuvných registrů. Původně mělo být jen několik LED a jedna RGB LEDka s rotačním enkodérem, kterým se se řídilo 8 LED diod, změny barvy RGB LEDky a zároveň přepínaly efekty s PWM modulací. Všechny GPIO piny ESP8266 podporují PWM modulaci. GPIO linek však není dostatek a dost jich obsazuje rotační enkodér. Řešením se zdál posuvný registr. Ten však neumí PWM modulaci :) Součástky, které toto umí řešit jsou pro mne zas zbytečně složité.

Napadlo mne tedy, zkusit PWM modulaci vyřešit nějakou rozptylovou funkcí, která by ji nahrazovala počtem 1 a 0 za sekundu a když už jsem u toho tak zkusit dát několik posuvných registrů do kaskády. Nejprve se však pokusím vyřešit rozsvícení LED přes pouze jeden posuvný registr, což se ukázalo podle různých návodů jako poněkuď nefunkční. Přečetl jsem si tedy datasheet k 74HC595 a udělal jsem si to po svém, což se vyplatilo :)

Na rovinu jsem o tomto obvodu nevěděl nic a z číslicové techniky mám sotva základ. Před měsícem jsem však o ESP8266 nevěděl také nic a je to teď úplně jinak. Takže Vás chci na tomto místě povzbudit, překonat své bloky a prát se sám se sebou o výsledky.

Tak tedy princip. Osobně chápu posuvný registr jako tři síta s 8 sloty.

  1. První síto je shift register, do kterého postupně posíláte jedním pinem DS, nebo také jinde pojmenovým jako SER, jednotlivé bity. Po zaslání každého bitu pošlete jedničku do pinu SHCP (je dobré se ujistit, že před odesláním bitu je pin SHCP na log. 0).
  2. Pin SHCP slouží jako hodiny, které taktujete při každém odesílání jednotlivého bytu
  3. Druhé síto je storage register. Skladovací register, do kterého propadnou data z posuvného regitru, když pošlete jedničku na pin STCP
  4. Třetí síto je výstupním sítem, kdy se objeví obsah skladovacího registru na výstupech Q0 až Q7. Aby se tak stalo, musí být pin OE (output enable) uzemněn. Tento pin je aktivní při log 0, takže ho stačí trvale uzemnit, pokud chceme aby se data ihned objevila na výstupu. Pozn.: třetímu sítu lze přepnout chování na vstupní síto.

Použité knihovny z Arduino IDE: Encoder by Paul Stoffregen verze 1.4.1

  • project/esp8266_shift.txt
  • Last modified: 2019/05/19 16:35
  • by cyberian