25.6.2001 Tento monitorovací systém je určen pro novější základní desky, které však z úsporných důvodů těmito obvody nebyly vybaveny. Pro overclockery je ale údaj o teplotě systému důležitý a tak jsem přemýšlel, jak jednoduše desku senzorem dovybavit. Jedinou podmínkou je, že na desce musí být řadič sběrnice SMBus např. i82731 (PIIX4), který je velice rozšířený jako součást čipových sad intel TX, LX, BX, ZX... nebo novější i82801 (ICHx) na deskách s chipsety i8xx. Další možnou alternativou je využití DDC kanálu na VGA kartě, což je v podstatě také I2C sběrnice. Softwarově se ale ovládá zcela jinak.
Sběrnice SMBus je intelácká modifikace sériové sběrnice I2C a používá 3,3V logiku. Tvoří ji 3 (4) vodiče: SMBData - obousměrná data, SMBClk - hodiny, GND - zem a popř. SMBAlert. Na sběrnici lze připojit až 127 zařízení, každé má svou jedinečnou 7-bitovou adresu (zbývající bit LSB je využit pro rozlišení operace čtení/zápis). Na základní desce jsou už osazena některá SMB slave zařízení, např. hodinový čip PLL je na adrese 69h, na 50h - 53h jsou sériové SPD EEPROM na modulech DIMM, na 2Dh může být LM79, na 18h MAX1617 a další (výrobci nabízejí poměrně široký sortiment obvodů s SMB/I2C rozhraním pro různé účely). Přehled o připojených zařízeních vám dá můj prográmek SMB.
Idea je tedy velice jednoduchá - připojit na SMBus nějaký monitorovací obvod o který nás výrobce desky "ošidil". Těch existuje celá řada a lze je zhruba rozdělit do dvou skupin:
1) pouze s interním čidlem teploty (LM75, LM77...)
2) s interním čidlem a vstupem pro externí čidlo (LM79, LM80, LM84, MAX1617...).
V případě, že máte procesor v pouzdru FC-PGA, nabízí se možnost připojení snímací diody v jádru CPU na vstup příslušného obvodu, proto jsem použil druhý typ senzoru. Takto získané hodnoty mnohem lépe odpovídají skutečnosti než hodnoty získané měřením na povrchu chladiče nebo spodku pouzdra.
Bohužel situace v pražských obchodech s elektronickými součástkami je zoufalá a tak si můžete jejich obíhání ušetřit, neboť nikde nemají ani jeden z těchto obvodů. Takže se budete muset poohlédnout po nějakých zásilkových službách. LM75 jsem viděl tuším u CONRADu asi za 120 Kč (minimální objednávka je asi za 300 Kč). Já jsem koupil MAX1617A za 311 Kč u Spezial Electronic, kteří dovážejí z Německa celý sortiment Maximu. Proto se budu blíže věnovat tomuto obvodu.
Zapojení nevyžaduje žádné vnější součástky. Na vývody Vcc a Gnd se připojí napájení, na DXP anoda, DXN katoda snímací diody, /STBY se spojí s Vcc, SMBClk a SMBData se připojí na sběrnici, /Alert je možno nechat nezapojený. Vývody N.C. jsou nezapojené. Pomocí vývodů ADD0 a ADD1 lze měnit dva dolní bity SMB adresy zařízení, ostatních 5 bitů je nastaveno natvrdo. Proto lze na jednu sběrnici připojit maximálně 4 tyto obvody. Pokud připojujeme jeden obvod, doporučuji oba vývody spojit se zemí. Adresa pak bude 18h. Zde je ukázkové zapojení:
* 2 měřicí kanály
* není třeba kalibrace
* programovatelný alarm
* identifikační kódy
* přesnost +/- 3°C
* odběr 70/3 uA
* napájení 3 - 5,5 V
* datasheet ZDE
Nyní k otázce praktického provedení:
(click on)
1) potřebujeme se někde připojit na SMBus - to lze buď na desce poblíž obvodu PLL nebo patic na moduly DIMM, ale málokomu se chce asi vrtat do základní desky. Lze také použít vadný modul DIMM, ze kterého odstraníme paměťové čipy a vyvedeme signály z místa kde byla sériová EEPROM. Já jsem na svůj 256MB modul přilepil 4-pinový konektor ke kterému jsem přivedl odpovídající signály z SPD EEPROM (kterou jsem tam samozřejmě nechal). Z pohledu shora je na pinu 4 zem, na pinu 8 Vcc, na pinu 6 SMBClk a na pinu 5 SMBData. Pro jistotu si ještě stáhněte datasheet k vaší EEPROM (obvykle 24C02).
2) Vlastní obvod jsem umístil na destičku plošného spoje velikosti 15 x 20 mm (viz foto 1,2), kde dole je protikus ke konektoru na DIMMu a nahoře 2-pinový konektor pro externí čidlo. Jelikož obvod je velmi mrňavý (rozteč pinů méně než 1 mm), chce to při kreslení obrazce a pájení pevnou ruku :-).
3) Anoda snímací diody v jádru CPU je vyvedena na pin AL31 a katoda na pin AL29 FC-PGA pouzdra procesoru (viz obrázek patice výše). Zde bude potřeba připájet kousek kroucené dvoulinky (viz foto 3). Výhodu mají ti, co mají procesor v redukci - tu je možno pohodlně vyndat, vyjmout CPU a bez obav připájet kablík mikropájkou. V případě že pájíte přímo na desku vyndejte pro jistotu CPU a uzemněte hrot mikropájky. Paralelně ke kablíku je možno připojit u vstupu snímače malý kondenzátor (max. 3,3 nF) pro filtraci vysokofrekvenčního rušení. Já jsem použil 1,5 nF. Pokud by byl kablík delší je vhodné použít stíněnou kroucenou dvojlinku a v jednom bodě spojit stínění se zemí.
K mému překvapení obvod pracoval na první zapojení. Pro komunikaci s obvodem jsem pod DOSem rozšířil svůj program SMB o čtení teplot z MAX1617. Pod Windows jsem použil program Motherboard Monitor, který MAXe automaticky detekoval. Umožňuje zobrazování teplot v systray, nastavení alarmů, logování a spoustu dalších věcí. V mém případě po ustálení teplotních poměrů v PC (tak po hodině práce) mám uvnitř kolem 33°C a procesor (intel Celeron 850@1054) na 45°C.
Thermosenzor s LM75
20.6.2002 Od jednoho maníka (Lukáši díky) se mi podařilo sehnat LM75 CIM3 (provedení SMD SO8 s napájením 3,3 V) a tak jsem ho vyzkoušel. Jako nejjednodušší způsob připojení mě napadlo ho napájet přímo na SDP EEPROM na modulu DIMM. V zapojení pouzder obou integrovaných obvodů se shodují vývody Vcc a GND za které zároveň spolu mechanicky drží. Ostatní vývody jsou propojeny tenkými drátky z dolní EEPROM na horní LM75. Na fotografii je zrovna odstrašující příklad pájení, věřím, že každý z vás to zvládne lépe, ale jednalo se o rychlovku, takže rozhodující je funkčnost ;-). Vývod O.S. (Overtemperature Shutdown, totéž /ALERT u MAX1617) slouží jako signál překročení nastaveného rozsahu teplot. Lze ho například přes jednoduchou logiku připojit k ATX zdroji a automaticky tak vypnout PC. Protože LM75 používá jiné SMB adresy, může být připojen současně s MAX1617. Jeho podporu jsem též přidal do programu SMB. Jako další univerzální monitorovací program můžete použít např. SpeedFan pracující i pod Windows NT/2000/XP či lm-sensors pro Linux.