Jdi na obsah Jdi na menu
 


18. 1. 2017

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.

tc420---pwm.png

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.

 

tc420---deska.jpg

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.

tc420---ds1302z.png

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řidat komentář

Přehled komentářů

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:20

Ahoj, 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:29

Je 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:17

Dovolim 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:47

Vypadá 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:00

Na 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ěď.

Re: Přeprogramování TC420

Jarek, 10. 7. 2019 18:30

Ta jednotka neumožňuje naprogramovat změny po sekundách. Přeprogramovat ji může autor. Já programuji svou, která bude umožňovat změny po sekundách. První testy s videem můžete najít na mých stránkách.

30a zatazenie

ivan, 11. 12. 2018 22:42

dobrý deň zvládne tato jednotka povedzme ledky z celkovým odberom 30a ?

TC 420

Jan Daněk, 27. 6. 2018 7:41

Smekám Vaší odbornosti a i když jsem technik. Rád bych se zeptal, zda je možné něco podobného udělat aby na výstupu byla regulace proudu do LED bez nutnosti používat seriový odpor. Tedy aby se každý výstup choval jako zdroj proudu a zachoval si vlastnosti regulace.

Děkuji za odpověď můj email je Danekj.bk@gmail.com

Re: TC 420

Jarek, 28. 6. 2018 8:41

Tady je třeba si uvědomit, že LED je nelineární prvek. Zapojují se na pásku 3 LED a jeden odpor na 12 V a tím se při 12 V nastaví optimální proud. Při použití PWM 100 % tam bud určitý proud, který při PWM 50 % bude ve střední hodnotě také 50 %. Avšak zapojení 6 V na pásek LED nebude znamenat poloviční proud.

Aby se to dalo řídit proudově, bylo by třeba vyhodit ten sériový odpor. A bylo by třeba zapojit do série tlumivku. V takovém případě by bylo nutno zároveň zavést zpětnou vazbu měření proudu a počítat PI regulátor pro žádaný proud. Parametry tlumivky budou záviset od výkonu a frekvence PWM. Aby mohla být malá, bude třeba vysoké frekvence, čímž se zase sníží její rozlišení.

Dále je třeba si uvědomit, že pásek LED se skládá s kousků např. po 5 cm, která jsou připojeny paralelně na 12 V. Pokud budete chtít zavést zpětnou vazbu, budete je muset rozpojit a každý kousek regulovat zvlášť. Na každý kousek tedy budete potřebovat pin s PWM a pin pro měření s ADC. Dále procesor bude muset stihnout spočítat regulátor pro každý kousek.

Toto by se dalo vyřešit tím, že se nezapojí do série 3 LED ale více, např. tak aby jich bylo na 240 V. Pak by byla na takový kus jedna regulace. Dáte si ale do akvária 240 V?

Také je zde věc nelinearity LED, která se otevírá od určitého napětí. Tudíž může dojít k situaci, že LED začnou svítit třeba až od 50 % PWM, ale se zvyšující PWM se proud nemusí zvyšovat lineárně. Tím si opět sníží rozsah využití rozlišení PWM.

Ještě může dojí k nespojitému proudu při malých hodnotách PWM. Proud naroste trochu při sepnutí a pak spadne do nuly při vypnutí a tam zůstane do nového otevření. V takovém případě regulátor nebude fungovat dobře. Musel by se použít sofistikovanější způsob samplování proudu.

Možné to asi je, ale otázkou je, zda to má smysl.