Posouzení jednotky TC420
Jelikož nebylo zapotřebí jednotku vracet, rozhodl jsem se do ní podívat. Po otevření jsem zjistil, že jednotka je řízena pomocí MCU Nuvoton NUC120LE3AN. Na internetu jsem našel informaci, že se jedná o součástku s jádrem ARM Cortex M0. Bohužel, ARM jádra jsou v dnešní době součástí mnoha procesorů. Instrukční sada ARM Cortex M0 není nic převratného.
Předpokládal jsem, že MCU jednotky zastává následující funkce: generace pěti PWM, ovládání displeje, čtení tlačítek, komunikace s PC přes USB a udržování data a času. NUC120LE3AN je v pouzdře LQFP48, které má pouze čtyři kanály PWM. Pro pátý kanál je možno použít timer. Na ovládání displeje je třeba asi 10 pinů a na čtení stavu tlačítek je třeba 4 pinů. Pro udržení času, je možno použít modul RTC (real-time clock). Malý reproduktor mi připadá jako nadbytečnost.
Avšak tvůrce jednotky měl jiný názor. Když jsem jednotku analyzoval, nestačil jsem se divit. První záhada byla, jak se generují PWM. Našel jsem signál pouze čtvrtého kanálu (pin 25), který je generován pomocí PWM 3. Na výstupních pinech PWM 0, 1, 2 žádné PWM signály nebyly. Potom jsem našel signál pátého kanálu PWM (pin 48), který je generován pomocí timeru (TM0). Avšak na MOSFETech bylo všech 5 PWM signálů. Hledal jsem dále a zjistil jsem, že z pinu 9 (TXD1), který funguje jako sériový port s rychlostí 9600 baud, cyklicky posílá 6 bytů do nějakého čipu na desce. Tento čip má svůj vlastní krystal přibližně 11 MHz. Z těch 6 bytů je první vždy nula a pak následuje 5 PWM hodnot, které jednotka posílá čipu. Čip generuje 5 signálů PWM. Jinými slovy, místo toho, aby autor použil periferie NUC120LE3AN pro generaci 5 PWM, posílá přes sériovou komunikaci 5 bytů s hodnotou PWM jinému čipu, které generuje PWM.
Hodnoty jsou posílány do druhého čipu následně: 0 % koresponduje s 0, 100 % se posílá jako 250. Při této hodnotě můžeme na výstupu naměřit PWM asi 98 %. Takže 100 % není 100 %. Proč? Čip generující PWM je pravděpodobně naprogramován, aby generoval PWM 100 % při hodnotě 255 (max. hodnota 8bitového čísla). Důkaz: 250 / 255 x 100 = 98. Otázka je: Proč autor nepoužil 255 jako maximum? Pravděpodobně pouze použil hodnotu z tabulky, 1krát shift doleva a k tomu přičetl hodnotu z tabulky odshiftovanou jednou doprava. Tzn. vynásobil 2,5krát. V jazyku C by ten řádek vypadal následně:
u8PWM = (u8TableValue << 1) + (u8TableValue >> 1);
kde u8PWM je výsledná hodnota PWM (0 – 250, typu uint8_t) a u8TableValue je vstupní hodnota z tabulky (0 – 100, typu uint8_t).
Přitom by stačilo použít násobení 2,55krát způsobem, že číslo 2,55 se posune do horních 8 bitů uvnitř 16bitové proměnné. Vypadalo by to následně:
u8PWM = (uint8_t)(((uint16_t)u8TableValue * (uint16_t)655) >> 8);
Konstanta 655 vychází z maximálního 16bitového čísla (65535) poděleného 100 (maximum PWM). Jednoduše si to můžeme ověřit pro hodnotu 100: 100 x 655 = 65500. Toto číslo se posune 8krát doprava, tzn. děleno 256 (neboli 28): 65500 / 256 = 255. Je fakt, že dva shifty a sčítání je na některých procesorech mnohem rychlejší než násobení, ale to není případ Cortex M0. Zvláště pokud se PWM aktualizuje max. jednou za minutu. Cortex M0 použije pro násobní jednu instrukci MULS a pro shift ASRS. Kdežto v prvním případě budou dvě instrukce pro shift ASRS a jedna pro součet ADDS.
Nicméně, při současném řešení (za použití 8 bitů pro hodnotu PWM) by bylo možno dosáhnout rozlišení 0,5 %, nikoliv 1 %. Ale k tomu by bylo třeba upravit trochu aplikaci na straně PC.
Kdyby autor využil periferií NUC120LE3AN: PWM nebo timer, mohl by dosáhnout mnohem vyššího rozlišení PWM. K tomu je třeba znalosti frakční aritmetiky: PWM frekvence jednotky TC420 je 540 Hz. Pokud je vstupní frekvenci periferie 22,1184 MHz (jak uvádí NUC100/120 Technical Reference Manual), výsledná perioda PWM bude 22118400 / 540 = 40960 inkrementů. Periferie má 16bitový čítač, tzn. počítá do 65535. Tudíž, výsledná perioda je dosažitelná. Pokud podělíme základ 100 % touto periodou, dostaneme rozlišení PWM v procentech, tzn. 100 % / 40960 = 0,0024 %. Řekl bych, že je to hodně daleko od rozlišení 1 %, není?
Další věc, co mě překvapila, je existence součástky Maxim DS1302Z. Má za úkol udržet datum a čas. Jak jsem uvedl výše, NUC120LE3AN má modul RTC, který je pro datum a čas možno využít. Je možné také MCU uspat, aby se snížila spotřeba, a probudit jej pomocí RTC na okamžik, provést operaci a znovu uspat. Proč asi autor použil DS1302Z, které vyžaduje sériovou komunikaci s NUC120LE3AN? Navíc potřebuje další krystal.
Změřil jsem komunikaci mezi MCU a DS1302Z. Musím se přiznat, že jsem nemohl uvěřit tomu, co jsem viděl. Autor chtěl nejspíš použít periferii I2C, protože MCU využívá právě piny periferie I2C pro komunikaci s DS1302Z. Jenže komunikace, kterou DS1302Z používá, jen I2C připomíná. Ve skutečnosti to I2C není. Autor mohl použít periferii SPI s vykrácenými piny MOSI (master out, slave in) a MISO (master in, slave out) . V případě čtení z DS1302Z by se pin MOSI přepnul do stavu vysoké impedance po odeslání 8 bitů (komand), aby pin MISO mohl přečíst informaci.
Autor však zvolit softwarové ovládání pinů pro clock a data ovládáním pinů přes GPIO (general purpose input output). Na obrázku je možné vidět vyšší frekvenci clock signálu a nějaké kolísání během prvních 8 bitů. V tomto místě šlo o komand 0x81 – přečtení sekund. Následuje úplně jiná frekvence clocku s kolísáním. V tomto okamžiku DS1302Z odpovídá a posílá sekundy v BCD soustavě. Autor nebyl schopen ani vytvořit smyčku s konstantní periodou pro tak primitivní komunikaci.
Výstupy PWM jsou připojeny na MOSFETy v pouzdru DPAK. Neviděl jsem na nich žádné filtry. Takže LED pásky mohou rušit. To jsem však netestoval. USB používá třídu HID (human interface device) pro komunikaci s PC, proto není nutno instalovat ovladač do Windows. HID je základní třída, která již v systému Windows existuje. Toto nejspíš okopíroval z nějakého příkladu použití USB HID device.
Jednotka by mohla být menší, levnější, s nižší spotřebou, a hlavně rozlišení PWM by bylo mnohonásobně větší. Jinými slovy, pokud by se rozlišení PWM rozšířilo, přechody mezi intensitami LED by byly mnohem jemnější. Pro vylepší jednotky by nestačilo pouhé přeprogramování, znamenalo by to i změny na desce. Myslím, že by autor měl zvážit spíše kariéru v politice.
Komentáře
Přehled komentářů
Zdravím,
předem bych rád složil poklonu k vědomostem, které máte a jak detailní rozbor jste udělal, společně s návrhy na zlepšení pro autora.
Všiml jsem si, že desku, kterou vyvíjíte už testujete a pravděpodobně se blížíte k finálnímu řešení i se softwarem.
Můj záměr je použít TC420 na napájení 24V LED pásků v bytě z jednoho místa, které je díky vedení kabelů vzdáleno cca 20m.
Je to velká vzdálenost a chtěl bych použít stávající rozvod 1,5mm2 drátů. Aby nebyly ztráty vedením vyšší jak 2%, musím napětí zvýšit na 72V a na konci spojím 3ks pásku do série. Je nějaká možnost, jak zvýšit výstupní napětí na kanálech na tuto hodnotu? Předpokládám, že zvýšením napětí na vstupu bych to celé odpálil. Výměna MOSFETů jistě stačit nebude..
Napadla mě i možnost upravit něco vytvořeného někým jiným - něco jako vaše deska, ale nevím zda by k tomu byla vhodnější.
Předem děkuji za odpověď.
Re: 48V výstup
Pavel, 19. 4. 2024 18:32Přepsal jsem se v názvu, opravdu myslím zvýšení napětí na výstupu z TC420 na 72V
Re: 48V výstup
Jarek, 22. 4. 2024 20:27
TC420 má MOSFETy na 25 V a 50 A (jestli jsem našel správný datasheet). Dali to dost na hraně. Určitě tam nemůžete připojit více než 24 V. Nevím, jaké to má další součástky. Tím neříkám, že po výměně MOSFETů na takových 100 V, by jimi nešlo spínat vyšší napětí než 24 V. Otázka je, zda větší MOSFET jednotka vybudí.
Jednotku zapojíte na běžné napětí, které snese 12 - 24 V. Pro LED použijete zvlášť napětí, které připojíte pouze na + pro LED. Ne na svorkovnici jednotky! Na svorkovnici zapojíte pouze konce - od LED kanálů. Oba napájecí zdroje napětí musí mít spojené země. Teoreticky by to mělo fungovat. Akorát po proražení MOSFETu vám může skončit plné napětí v jednotce, která je kovová. Tudíž by měla být za nějakou zábranou.
Napadají mě ale další problémy, na které můžete narazit:
1. Kabel 20 m vedený možná ve zdi již nasbírá nějakou indukčnost. Takže budete muset MOSFETy chránit diodami. Diody musí být co nejblíže MOSFETům. Ne na druhém konci u LED.
2. Kabel 20 m se může chovat jako slušná anténa. Když do něj pustíte spínání výkonu v obdelníku 600 Hz, budou tam harmonické. Takže to může rušit sousedům rádio. Nutno dát + a - vodiče co nejblíže k sobě, aby bylo vyzařování co nejmenší, a vést je po celou cestu u sebe.
3. Vedení kabelu poblíže rozvodů v domě může zanést impulsy do jednotky. Např. zapnutí/vypnutí varné konvice, bojleru, pračky, nějakého motoru aj. může vyvolat impuls v kabulu pro LED. Nutno tedy vést v dostatečné vzdálenosti o takových vodičů.
Co se týče mé jednotky - ano, již dodělávám více méně sw. MOSFETy jsem dimensoval na 40 V, jsou tam součástky, které snesou méně. V celku nepočítám, že by měla spínat LED nad 24 V. Teoreticky by měla snést 30 V. Možná trochu víc. Aby fungovala na vyšší napětí, musel bych předělat desku.
Re: Re: 48V výstup
Pavel, 2. 5. 2024 10:02
Děkuji za odpověď a spoustu informací jak na to.
Těch potenciálních nevýhod je poměrně hodně, ale vyzkouším jestli to bude fungovat.
Mosfet
Ivo, 4. 2. 2024 14:17
Zdravím, měl bych dotaz - jdou někde sehnat koncové - výstupní mosfety DTU 09N03DG31U.
Na mé jednotce TC420 jsou stále sepnuté kanály 4 a 5 i bez programu. Mám dojem, že koncáky jsou v háji.
Díky předem za info.
Re: Mosfet
Jarek, 4. 2. 2024 19:27
Myslím, že ty MOSFETy jsou na 50A. Může být i vadný pre-driver. Zkusil bych dát odpor na gain a source a podívat se jestli pokračují sepnuté.
Jinak nemělo by být složité sehnat takové MOSFETy, stačí zadat MOSFET, N channel, DPAK, 30 V a 5 A proud by měl stačit. Např. toto tady: https://www.tme.eu/cz/details/fdd6690a/tranzistory-s-kanalem-n-smd/onsemi/
Tento mosfet má napětí gain-source 20 V. Nevím, jakým napětím jsou buzeny. Chtělo by to zjistit, jestli to není plné vstupní napětí. Jestli to ale používate na méň jak 20 V, tak je to není asi třeba řešit.
Re: Mosfet
Ivo, 9. 2. 2024 5:46
Zdravím ještě jednou, děkuji za odpověď. Již jsem mosfety objednal. Až dorazí, tak budu řešit dál jejich výměnu.
Když už do toho přístroje budu hrabat, napadla mě otázka, jak vyřešit, aby se jedním výstupem dalo ovládat relé,třeba na 12V DC, které by spínalo 230V na ovládání CO2. Na výstupech se dá nastavit skokové spínání, ale co se děje na výstupu ? Nyní mám pro tuto funkci spínací hodiny. Pokud by s tím byl problém, zůstanu u těch spínaček. Předem děkuji za info.
Re: Re: Mosfet
Jarek, 11. 2. 2024 18:46
Vaše otázky mi připomněly doc. Patočku z výkonovky. Za špatnou odpověď vyhazoval od zkoušky…
Ale k vašemu problému. Předpokládám, že chcete spínat relé, které je tvořeno cívkou. Tudíž má indukčnost. Problémy bych tam viděl dva. Jeden je, že výstupy nikdy nejedou na 100 %, tzn. trvale sepnuty, tudíž to bude pulzovat do cívky. Díky indukčnosti, by to neměl být zas takový problém, možná by to jen trochu zpívalo. Co je ale hlavní problém, je, že tvůrce jednotky tam nedal ochranné diody. Hold neměl doc. Patočku. Takže při zapnutí nebude problém, ale při vypnutí se cívka musí vybít přes diodu. Napětí na cívce odpovídá L * di / dt, kde L je indukčnost, i proud, t čas. Když si dosadíte např. indukčnost 10 mH, proud 40 mA, čas vypnutí mosfetu 100 ns, vyjde: 4000 V. Což vám ten mosfet prorazí. Parametry relé si můžete zjistit z datasheetu, stejně tak vypínací dobu mosfetu. Tak nějak funguje zapalování u benziňáku: neprouděná cívka se přeruší a indukované napětí vyhodí jiskru. Takže bez hlubších znalostí vám to nedoporučuji.
Shodou okolností v poslední době řeším (nyní spíš jen testuji) podobnou věc s jednotkou, kterou vyvíjím. Kde jsem pro to vytvořil extra výstupy, které jde spínat i podle proudu LED. To má výhodu, že když světlo přestane fungovat, CO2 se vypne. Můžete si o tom přečíst v mém posledním příspěvku: https://www.jarekunderwater.com/clanky/aquasky/pomocne-vystupy-a-ochrana-proti-otrave-co2.html
Re: Mosfet
Ivo, 12. 2. 2024 5:56
Děkuji za jasné vysvětlení.
Dále jsem hloubal nad prací vědeckou / jak jednoduše vyřešit spínání CO2 /a zkusil jsem výstup kanálu připojit na Led bílou diodu přizpůsobenou odporem na 12V. Fotorezistorem snímám zapnutí a vypnutí led diody. Z děliče fotoodporu a pevného odporu vedu signál na bázi tranzistoru / vytáhl jsem ze šuplíku NPN - KF 508 / a tranzistorem ovládám relé s ochrannou diodou 1N4007. Při sepnutí kanálu sepne i relé a naopak při vypnutí relé odpadne. Ještě musím diodu a fotoodpor vložit do nějaké trubičky, aby fotoodpor nebral postranní světlo.
A budu testovat. Myslím, že je to řešení, bez toho, aby se něco upravovalo v TC420.
Ještě jednou děkuji a jsem s pozdravem.
Ať se dílo daří
Ivo
Re: Re: Mosfet
Jarek, 12. 2. 2024 8:20
To, co popisujete, stačí vyřešit jednou součástkou: optotriak nebo optomosfet. Ten první v případě střídavého relé, ten druhý půjde i na DC. Ten odpor tam budete muset ještě přidat. A pro DC i tu diodu.
Problém ale bude, že ten výstup jednotky nejde dát na 100 %. Takže vám led v opto bude blikat na 600 Hz.
Důležité dodržet alespoň 5 mm bezpečnostní vzdálenost mezi 230 V a 12 V.
TC420App
Stefan, 16. 6. 2023 10:20Ahoj, ak by niekto, chcel k TC420/TC421 lepsi software, vytvoril som free alternativu: https://tc420app.ubrothers.eu/
Způsob stmívání
Jiří, 5. 11. 2021 20:18
Zdravím
Prosím vás tento stmívač stmívá proudově a nebo nepěťově?
Re: Způsob stmívání
Jarek, 14. 11. 2021 19:06
Toto je napěťové řízení pomocí PWM. Pásky LED jsou na 12 - 24 V většinou rozdělené na kousky po 3 - 6 diodách s odporem. Tyto kousky jsou paralelně, tudíž nejdou řídit proudově.
Pro proudové řízení by všechny diody musely být v sérii. Pak by se dalo řídit proudově. Ale budeme-li počítat úbytek na diodě při plné intensitě 3 V, pak pro 50 diod by tam už bylo 150 V. Takže vznikne další problém k řešení a to je bezpečnost takového osvětlení. Určitě se takový měnič dá vytvořit.
škoda lásky
Jirka, 10. 1. 2019 14:29Je to všechno moc hezké. Bohužel na trhu není alternativa. Hledal jsem opravdu hodně dlouho, protože tu vidím také hodně nedostatků. Lehce ovládat více světel najednou a s přechody, to je v 21 století asi kumšt. Nezbývá než poděkovat bývalému politikovi že něco podobného zbastlil.
Re: škoda lásky
Jarek, 20. 1. 2019 16:13
Ovládání LED pomocí PWM není nic složitého. Jen tvůrce musí chápat více věcí: Jak funguje PWM (frekvence, rozlišení), timery, frakční aritmetiku, problémy integrace a potom další oříšky, jako je udělat interface a komunikaci s dalším zařízením. Lidské oko jede na frekvenci 25 Hz a k tomu stačí teda stačí udělat i update PWM s o něco vyšší frekvencí při přechodu. Je to prakticky jedno až dvě čísla na kanál za 0,01 s. Algoritmus inkrementace je pouze sumace. Je třeba to udělat ve fixu, ne ve floatu, což by hodně neznalých odborníků asi svádělo. Ve floatu to vypadá jednoduše, ale může to být ošidné. Float má rozlišení 24 bitů. Ale pokud chceme integrovat, může to být na desetinná místa. Proto určitě integrovat ve fixu a s desetinnými místy, aby to neujíždělo. Řídil jsem motory, kde algoritmy jsou hodně složitější a musí se updatovat 3 PWM ve stejný okamžik a to každých za 0,0001 (10 kHz) někdy i 0.0005 s. Samozřejmě výrobce by dá na 5 kHz, bude to pištět trochu a řízení bude horší. Trochu to sníží spínací ztráty (minimálně), ale v džungli značení A+, A++, A+++ se umístí lépe (lépe pro konkurence, nikoli pro zákazníka a kvalitu produktu). Ale zpět k LED, LED je banalita v porovnání s motorem.
Začal jsem vyvíjet něco a zvládám při frekvenci PWM 600 Hz rozlišení 17 bitů, tzn. s přesností PWM na méně než tisícinu procenta. Soudruh z Číny dosáhl ani 7 bitů (0 - 100).
Můj problém je, že mám dost málo času. Tak nevím, jak dlouho mi to ještě zaberete. Kdybych byl student, asi bych toho času měl více.
Proč to nikdo nevyrábí? První by někdo musel nadefinovat, co to všechno má dělat a jak. Sehnat na to člověka, tzn. je tam hardware, software v jednotce a software ve Windows a znalost periferií. Ten, kdo dělá s PWM nemusí rozumět programování ve Windows a komunikacím. Řekněme, že to bude trvat jednomu inženýrovy 2 měsíce. Plat bude tak 100000 (za dva měsíce, což je dost podhodnocení i v ČR), k tomu firma vyvalí 35 procent SZ a ZP. Také bude muset zaplatit manažery, personalisty, recepční. A výbava počítač, licence, analyzátory atd. tak 50000. A nějaké malé náklady na výrobu jednotky. Náklady tedy můžou být 200000 (v Německu možná dvojnásobek). Kolik si bude firma muset dát marži a kolik těch jednotek prodá, aby nebyla ve ztrátě? Firma to nedělá pro sebe, ta to dělá pro zisk.
Zbývá tedy nadšenec jako já, který to dělá pro své akvárium. Ale nemyslím, že mi kdo kdy ty hodiny zaplatí.
Re: škoda lásky
Jan, 14. 9. 2020 21:17Dovolim si upozornit na nas produkt www.intaqo.com nielen s pwm sme sa dokladne vyhrali
Re: Re: škoda lásky
Jarek, 15. 9. 2020 8:47Vypadá to hezky. Má to dost funkcí. Otázkou je, zda cena kolem 10 000 bude pro lidi přijatelná. A v mém případě by to znamenalo další investici dobrých 10 000 - 30 000, abych si koupil něco s iOS nebo Androidem.
Ako ´ďaleko je preprogramovanie TC 420
Julo Sebok, 21. 12. 2019 14:12
Dobrý deň.
Náhodou som naďabil na článok o stmievači TC 420 a priznám sa veľmi ma zaujal,hoci v elektrotechnike som laik.
Chcem sa opýtať či je už vami navrhovaný prístroj v ponuke a kde sa dá zohnať/ak je/. Totiž ja si chcem zakúpiť Programovateľný stmievač pre LED osvetlenie tc421 - Wifi.No po prečítaní Vášho článku som na pochybách či to stojí za to.Poprosil by som za odpoveď.
Prajem Vánm príjemné prežitie vianočných sviatkov.
Re: Ako ´ďaleko je preprogramovanie TC 420
Jarek, 10. 1. 2020 20:00Na jednotce stále pracuji, ale nemám tolik času, jak bych si přál. Dnes jsem přidal další ukázku vývoje. Jestli nějaké řízení světla potřebujete již nyní, kupte si zatím TC421 s tím, že ji případně vyměníte. Já stále používám TC420 a pak ji nahradím. Štve mě, že nemám víc času.
Přeprogramování TC420
Lukáš, 4. 7. 2019 10:34
Dobrý den,
klobouk dolů před vašimi znalostmi a posouzením jednotky TC420 :o)
Myslíte, že je možné upravit její programování tak, aby byly skokové spínací intervaly ve vteřinách a případně v týdenním programu? Používám skokové přechody, ale chtěl bych je na určitý počet minut+vteřin a kdyby to šlo nastavit i na určité dny v týdnu, tak by to bylo úplně super.
Předem moc děkuji za odpověď.
48V výstup
Pavel, 19. 4. 2024 18:31