Zdroj: http://prochazka.clanweb.eu/index.php?a=hw/itronove_hodiny • Vydáno: 13.4.2018 21:36 • Autor: hacesoft
Kompletní katalogové listy použitých součástek stáhněte zde: ItronoveHodiny_datasheety.
Kompletní podklady Itronovích hodin pro EAGLE 6.1. (schéma, DPS) stáhněte zde: ItronoveHodiny_eagle.
Kompletní FW, včetně zdrojovích kódu pro PIC18F8720 stáhněte zde: ItronoveHodiny_FW_PIC18F8720.
Srdcem celého zapojeni je mikrořadič PIC18F8720-I/PT, taktovaný extérním oscilátorem na 20MHz. Cela digitální elektronika je napájená napájecím napětí 3.3V. Pro žhavení itronů je použito napájecí napětí 1V, který je omezen odporem 2R. Odpor v cestě žhavícího vlákna je použít aby zdroj nebyl tak moc tvrdý. Cele zapojení je koncipováno tak, že každý segment je ovládaný samotným PINem procesoru. Veškeré segmenty itrónů jsou ovládány přes spínače tvořeny dvojitým tranzistorem PMBT3946YPN v jednom pouzdře. Odpor 220K dovírá tranzistor PNP. Itróny mají i ovládání mřížky, které je v programu využito jen při startu programu.
Resetovací obvod je tvořeny D1, C6 a R135 je dobré osadit až po naprogramování mikrořadiče. Odpor R135 osaďte. Zbytek až po naprogramování. Případně, pokud budete upravovat FW, tak až vše proběhne. Pokud osadíte D1 a C6, nepůjde PIC naprogramovat.
Konektor EXT-DCF a EXTERTN_I2C je pro budoucí použiti anebo pro ladění FW. Na konektoru EXTERTN_I2C jsou dvě i2c sběrnice, jedna je kompletně ovládaná HW mikrořadiče a druhá je realizována čistě SW, z toho důvodu se nesmí osazovat odpory R146 a R148.
Mezi itronáma jsou dvojtečky realizované pomoci LEDek, kde každá LEDka je zvlášť ovládána z IO PCA9633 DP2. Každý itrón má pod sebou RGB ledku, která je každá zvlášť taktéž ovládána přes IO PCA9633 DP2. I ve FW je moznost si u každého itrónu zvolit individuální barvu. U obvodů IC6 a IC7 je použita SW I2C rozhraní. Protože PIC 18F720-I/PT má pouze jeden HW I2C bránu. Obvody PCA9633DP2 mají pouze dva adresovací vstupy a tudíž lze na jedno I2C, připojit pouze čtyři obvody. V elektrickém schématu je u každého obvodu komunikujícího po I2C sběrnici, uvedena adresa ve dvojkové soustavě.
Klávesnice je připojena k IO PCA9555 PW, kde je využito jen pět vstupu z konektoru X1. Zbytek lze použít libovolně, třeba jako triger na spouštění časomíry atd. Patřičnou funkčnost je třeba do FW doprogramovat. IO PCA9555 PW generuje /INT signál, při jakékoliv změně na vstupech.
Napájecí zdroj, na vstupu obsahuj filtračních kondenzátory, i usměrňovač, který zabrání přepólování. Pro stabilizaci napájecího napěti na 3,3V je použito traco TEL5-1210-3,3V.
Napětí 24 voltů je nejprve stabilizováno na 12V a posléze zvýšeno DC/DC XL6009 STEP UP měničem na 24 voltu. První stabilizátor provede základní stabilizaci vstupního napájecího napětí. I když modulu DC/DC XL6009 STEP UP nastavíte žádané výstupní napájecí napětí, tak při změně napájecího napětí na vstupu se výstupní napájecí napětí mění. Není to sice dramatické, ale zbytečně si zkracovat životnost itronů nemusíme.
Jako DC/DC UP STEP konvertor, je použit standartní komerční produkt XL6009, kde se provede úprava pouze potenciometru P1. Ten se nahradí pevným odporem o hodnotě 17.96K. Což je jeho výpočet. V reálu jsem zjistil, že tento potenciometr je dosti stabilní a netřeba ho měnit. Ale může se kus od kusu lišit, proto doporučuji P1 nahradit pevným odporem, respektive odpory. Modul je k DPS připojen pomoci oboustranného koliku S1G36 2,54mm.
Napájecí větev 1 volt, pro žhavení vlákna itronů je taktéž nejprve stabilizovaná na rozumné napájecí napětí, v tomto případě trackem TEL5-1210-5V na hladinu 5 voltu. Posléze je DC/DC STEP DOWN konvertorem sníženo na asi jeden volt. V mém případě na 0,95 voltu. Zde je třeba nahradit nepřesný trimr pevným odporem o hodnotě 2K. Při zkouškách zatížitelnosti tento měnič snese proud až 2A. Více jsem nezkoušel, nemám větší zátěž. Jako ochrana žhavícího vlákna itronů je použít odpor 2R. Také tento modul je klasicky komerční modul pod označením MP1584EN. Desku je propojena k hlavní napájecí desce pomoci oboustranného koliku ASS12038G. Označeni dle GME.CZ.
U modul RTC DS3231 je na konektor RTC_MODULE hlavni desky vyveden pin 7 z IO DS3231. Po zapnutí napájecího napětí FW vygeneruje resetovací puls, který da IO DS3231 do definovaného stavu. Na stav hodin a kalendáře tento reset nemá vliv. Modul ještě obsahuje EEPROMku 24C02ASM na adrese %1010111, která není vůbec využita. Veškeré nastaveni času a datumu se ukládá do DS3231, která je na adrese %110100 a jakékoliv jiné nastaveni, především nastavení RGB ledek se ukládá do vnitřní EEPROM paměti mikrořadiče PIC18F8720-I/PT. U modulu RTC je původní propojovací kolík vyměněn za oboustranný kolík ASS11020G.
Celé hodiny se ovládají NAVI CURSORem zakoupený od Navimecu. Nebo lze použít cokoliv jiného, kde je minimálně pět tlačítek bez jakékoliv další elektroniky. Potom je podle toho potřeba upravit propojovací kabel. Ošetřeni zákmitů tlačítka je částečně ošetřeno obvodem PCA9555PW. Po jakékoliv změně na vstupu IO PCA9555PW je generován /INT, který je v PICu přednostně ošetřen a ihned je stav vyčten po I2C sběrnici. V této prodlevě, než se vygeneruje obvodem klávesnice přerušení a začne se z PCA9555PW číst, tak už stisknuté tlačítko je ustálené a negeneruje další zákmity. Případné další náhodné zákmihy jsou ještě ošetřeny ve FW v programu PICu.
Při objednáváni materiálu na propojovací kabel pro modul od Navimecu, nezapomeňte na PINu JST SPH-002T-PO.5S ten je třeba objednat zvlášť. Nepřijdou s konektorem JST PHR-10.
Veškeré kabely jsou použity M16878/4BDEx, kde x je číslo požadované barvy. Jsou to kabely se silikonovou izolací, které nejdou stáhnout běžným naradí, ale je třeba použít elektrické tavné stahovací mechanické kleště.
Sice je to patrné z grafického schématu, ale přidám k tomu několik slov. Po zapnutí napájecího napětí se inicializují veškeré obvody, některé pomoci signálu RESET (PIC mikrořadič) a jiné po I2C pomoci FW v PICu. Při stisknutí tlačítka dolů se zobrazí datum. Na segmentech hodiny se ukáže číslo týdne (Pondělí – 1, Úterý – 2… Neděle – 7). Segmenty minut zobrazí číslo dne a segmenty sekund číslo měsíce. Tento údaj je zobrazen cca 2 sekundy a následně se zobrazí rok. Hodnota pro rok lze nastavit až do 2199. To celé se zobrazí ještě jednou.
Do nastavení se dostanete dlouhým stisknutím tlačítka OK. Desetina téčka dole indikuje, co se právě edituje. Krátké stisknutí tlačítka OK, potvrdíte zvolenou volby nastavení. Toto neplatí u funkce zobrazení teploty, která zobrazí teplotu ihned. Ukáže se teplota RTC CHIPu, ten obsahuje teplotní senzor, který lze použít pro kalibraci hodin, ve FW toho není využito. V budoucnu plánuji synchronizaci hodin přímo z internetu pomoci Wi-Fi. Dlouhé stisknuti tlačítka OK se z menu/pod menu vejde na vyšší úroveň. Pokud jste třeba v editaci času, a stisknete dlouze OK, nastavené údaje se uloží a zároveň program skočí do menu funkci (o úroveň víš). Při opětovném dlouhém stisku tlačítka OK jste opět v základním režimu a to je zobrazeni času. Další podrobnosti najdete v grafickém zobrazení menu. Ještě za zmínku stoji nastavení podsvětlení itronů. To se děje pomoci RGB ledky, která je přímo pod každým itrónem zvlášť. Každá LEDka obsahuje vlastní driver. Tím pádem lze natavit pro každý itrón individuální barvu. Desetinná téčka ukazuje který itrón se právě edituje a zároveň se mění i barva RGB LEDky a na itrónech se v šestnáctkové soustavě zobrazují hodnoty. Pozice pro hodiny ukazuje hodnotu HUE – odstín. Pozice pro minuty zobrazuje LIGHTNESS – světlost a na pozice pro sekundy se edituje hodnota SATURATION – sytost. Když blikají všechny desetinné tečky, tak se edituji všechny LEDky podsvětlení itronů naraz. V tomto případě se počáteční hodnoty vezmou z LEDky pro první itrón. Veškeré nastaveni hodnot pro LEDky se ukládají do EEPROMky v PICu. Při startu FW se opět načtou hodnoty z EEPROMky a data se pošlou po I2C do driveru LEDky.
Většina zvláštností už byla zmíněna. Ovládaní klávesnice se děje v přerušení. Klávesnice má ve FW vlastní nesdílené funkce pro vlastní běh. I když ve FW je už stejná funkce, tak přesto obsluha klávesnice má vlastní identickou funkci. To je z důvodů případných kolizí se zásobníkem. Sice kód se protáhne, ale zase je přehlednější a nejsou takové nároky na zásobník. Nepoužívají se funkce v ASM PUSH a POP. Každá funkce, která pracuje s HW implementaci I2C na začátku zakáže přerušení a na konci činnosti ho opět povolí. Kdyby se toto nedělo, tak přerušeni, nenávratně poruší komunikaci na I2C sběrnici a různé obvody budou v nedefinovaném stavu. To samé platí i o funkcích které periodicky vyčítají čas anebo posílají data do LED driveru.
PIC je obsazen z cca 20 procent. Takže je tu dost prostoru na další rozšířeni. Tomu i nasvědčují konektory pro externí synchronizaci, v budoucnu uvažuji o použití esp8266. Kód do esp8266 mam, jen stačí provést implementaci do intronových hodin. Tak i vyvedeni obou I2C sběrnic. U obvodu klávesnice je 8 dalších volných linek, pro různé I/O použití. Jednotlivé PINy lze konfigurovat jako vstupy a i výstupy.
Pokud nenajdete nějaký zde uvedeny modul, tak zadejte nějaký Arduino obchod a tam je mají běžně. Pravděpodobně se setkáte s odpovědí ze jsou to speciální moduly na Arduino, hlavně u DS3231 a ze potřebujete k tomu knihovnu, jinak to nepojede a že PIC není arduino, tak to nepojede…Toto se proste nebojte….Je to HW a je jen otázkou SW co do něho naládujete…Vše jede jak má a tyto hodiny jsou toho důkazem, že i moduly výsostně pro arduino jedou jinde, jen si musíte k tomu stáhnou datasheet a tam prostudovat komunikaci obvodu a celou komunikaci od základu napsat.