fundamental.cz
ÚVOD
PIC18F24J50RHT03RS232GRAFICKÝ DISPLAYEXPANDÉR MCP23008EEPROM 24LC64FOTODIODARELÉ, PIEZOROTAČNÍ ENKODÉRHARDWAREHARDWARE 2PC SOFTWAREFUNKCE A OVLÁDÁNÍZÁVĚR

Univerzální časovač - úvod

3.12.2016

Před časem jsem dokončil začátečnický miniprojekt elektronické minutky a nyní bych se rád pustil do něčeho podobného, ovšem o trochu náročnějšího. Cílem bude vytvořit zařízení, které bude též umožňovat odměřování času typu kuchyňské minutky, ale bude poskytovat něco navíc. Motivací tohoto projektu je záměr, že si v průběhu návrhu, konstrukce a programování rozšířím a prohloubím své znalosti (nejen digitální) elektroniky, které jsou stále na nízké úrovni. Možná, že uvedené informace budou užitečné též někomu dalšímu, byl bych tomu rád. Pro vytvoření programu v jazyce C budu používat vývojové prostředí MPLAB X a překladač XC8.

Projekt bude sestávat z částí a poskytovat tyto funkce:

RHT03.jpg, 4,3kB

d82.jpg, 3,8kB

V dalších pokračováních popíšu jednotlivé části plánovaného zařízení a budu dokumentovat průběh konstrukce a též tvorby softwaru.

Aktualizace

18.12.2016

Začátek práce na projektu ukázal potřebu (nebo možnost) změn některých parametrů zadání, jsou to následující:

Použití přesně uvedených konkrétních typů komponent není pro projekt klíčové. Komponenty vybírám podle toho, co mám zrovna k dospozici a co alespoň v minimální míře vyhovuje zvolenému zadání.

Aktualizace č. 2

23.12.2016

V současné době mám provedené testovací zapojení všech komponent (s výjimkou zdrojové části s akumulátory) na nepájivém poli. Program je částečně hotov v tom smyslu, že zpracovává data ze senzoru RHT03 a fotodiody a odesílá je přes rozhraní RS232 do PC.

ut_vystup.JPG, 60kB

Celkový pohled na situaci je vidět na následujícím obrázku.

ut_celk.JPG, 121kB

Legenda k obrázku:

  1. Přívod napájecího napětí 5V z USB počítače pro testovací účely. Napájení je vedeno přímo k MAX232, relé a displeji, zbytek součástek je napájený ze stabilizátoru 3.3 V (viz. bod 17).
  2. ICSP header.
  3. MAX232.
  4. Grafický monochromatický LCD display Winstar WG12864B s rozlišením 182x64 a podsvětlením - paralelní rozhraní.
  5. Datový výstup RS232.
  6. PIC18F24J50.
  7. Osmibitový expandér Microchip MCP23008 číslo 1 (I2C sběrnice) - poskytuje datové rozhraní displeji.
  8. EEPROM Microchip 24LC64 64 Kbit (I2C sběrnice) - slouží jednak k trvalému ukládání nastavení zařízení a též k uložení fontu pro display.
  9. Piezoměnič.
  10. Osmibitový expandér Microchip MCP23008 číslo 2 (I2C sběrnice) - vyhodnocuje stisknutí tlačítek.
  11. Senzor MaxDetect RHT03.
  12. Fotodioda Excelitas VTP1220FBH. Na obrázku výše není vidět pod nánosem kablíků, zde je detail:
  13. ut_fotod.JPG, 67kB

  14. Flash paměť Winbond W25Q80BV 8 Mbit (SPI sběrnice) - slouží k ukládání snímaných dat (teplota/vlhkost/osvětlení). Na obrázku vypadá prapodivně, protože jsem k pouzdru nevhodném pro přímé zapojení do nepájivého pole připájel části pinové lišty, zafixoval lepidlem, načež piny trčí do všech stran. :-)
  15. Relé JV-5S-KT (5 V DC; 5A 250 VAC/30 VDC). Výstupní kontakty jsou na obrázku mimo kontaktní pole, protože rozteče si vzájemně neodpovídají.
  16. Inkrementální rotační enkodér 24 impulsů na otáčku s tlačítkem - slouží k rychlé navigaci v menu a nastavování hodnot.
  17. Ovládací tlačítka - pro zařízení počítám minimálně se čtyřmi tlačítky - tři zde + jedno je součástí enkodéru.
  18. Stabilizátor napětí LD1117V33 3.3 V. Jako výslednou variantu napájení uvažuju 9 V DC ze síťového adaptéru + 5 V stabilizátor pro display/relé/MAX232 + 3.3 V stabilizátor pro zbytek obvodu. Pokud by se mi nepodařilo uspokojivě vyřešit napájení z akumulátorů (např. kvůli nedostatečné kapacitě), nahradil bych je klasickou baterií 9 V.

Aktualizace č. 3

31.1.2017

Zjištění, že ani paměť 16 KB není dostatečná pro implementaci všech plánovaných funkcí, mě vede k redukci požadavků kladených na zařízení.

Změna se týká zejména možnosti záznamu dat, kdy jsem částečně zpracované operace s flash pamětí z kódu vypustil. Tím, že z návrhu vypadla flash paměť připojená přes SPI sběrnici, se uvolnily 3 piny, které jsem využil pro detekci stisku tlačítek. Ze zapojení tak bylo možné vypustit i jeden z 8mi bitových expandérů. Nicméně z důvodů omezeného počtu dostupných přerušení jsem snížil počet tlačítek ze 4 na 3 a vhodně upravil logiku ovládání.

Ve výsledku tedy sice nebude možné data ukládat do interní paměti, ale zůstala zachována funkce odesílání dat přes RS232 do PC (nebo jiného zařízení), kde je možné je následně zpracovat. Software pro Windows, který souběžně vytvářím, umí přijímat hodnoty teploty, vlhkosti a osvětlení. Taktéž zvládne nastavit čas v zařízení na základě systémového času v PC. Další rozšíření spolupráce se zařízením záleží na množství rychle ubývajícího zbytku programové paměti PICu.

S nedostatkem programové paměti souvisí i nevyužití plných možností grafického displeje, který tak v podstatě slouží jako víceřádkový znakový display.

Aktualizace č. 4

31.3.2017

Po menší pauze jsem se vrátil k práci na projektu. V současné době je software (jak firmware zařízení, tak i program pro PC) plně funkční, jen s potřebou doladění některých detailů. Pokud se jedná o hardware, vytvořil jsem testovací zapojení na několika univerzálních DPS vzájemně propojených kablíky. Praktické zapojení si vyžádalo změny v přiřazení některých pinů PICu k periferiím. Po běžných problémech s oživením zařízení je nyní vše funkční a zbývá tak už jen poslední krok - navrhnout (a následně vytvořit) vnější podobu zařízení a doladit software.

O zmíněných záležitostech píšu zde: