sobota 19. února 2022

Funkční rozhraní GPIB-USB s rozpočtem 300 korun...

    Měřící přístroje používají komunikační rozhraní GPIB. A je potřeba si s nimi povídat. Nemyslím, že by to správné získávání dat bylo focení obrazovky přístroje, taktéž potřebuji získat data pro další zpracování.
Takto vypadá GPIB konektor v měřáku [1]

Abych se k tomuto rozhraní mohl připojit potřebuji kabel, který bude mít správný protikus, ideálně pro připojení do USB.

propojovací kabel 

Existuje i originální redukce pro připojení GBIP-USB, třeba tato [2]
GPIB-USB, žel stojí naprosto nesmyslné peníze

    Čínská kopie je dostupnější, vypadá stejně, opravdu funguje, cenově za desetinu výše uvedeného originálu, ale pořád – ač jen desetina ceny – vyjde přes dva tisíce korun.

Lze takový komunikační kabel postavit doma?

    Konektor je to Centronix 24 pin. Dá se koupit, ale víme, že staré tiskárny používaly konektor Centronix, který má 36pinů. Dá se najít na sběrném dvoře nebo se vám válí někde v kanceláři. Ano, dá se i koupit [3], ale překročil bych výše zmíněný rozpočet.
zkrácený konektor ze staré tiskárny

    A pak chybí už jen Arduino Nano, nejlevnjější klon... Arduino Pro Micro[3]. Funguje i originální Arduino UNO. Žel se mně to nepodařilo rozběhnout s klony, které mají převodník CH340. Netvrdím, že to nejde, ale mně se to nepodařilo rozběhnout. Arduino Pro Micro je jistota a je tak malé, že může být součástí konektoru.

Jak to zapojit? A kde vzít program pro Arduino?

    Projekt AR488 na [github] nabízí řešení v jednom balíčku a to nejen pro USB, ale třeba i pro Bluetooth komunikaci. Projekt je výborně zdokumentovaný a funguje. 

Nebyl jsem si jist orientací konektoru

Použil jsem toto zapojení podle [návodu] str. 47 pro Pro Micro.  
   Arduino GPIB
   pin     pin   function
   --------------------
   A2      7     NRFD
   A1      6     DAV
   A0      5     EOI
   D5      17    REN
   D7      10    SRQ
   D2      11    ATN
   A3      8     NDAC
   D4      9     IFC
   D3      1     DIO1
   D15     2     DIO2
   D16     3     DIO3
   D14     4     DIO4
   D8      13    DIO5
   D9      14    DIO6
   D10     15    DIO7
   D6      16    DIO8
   GND     12    Shield
   GND     18,19,20,21,22,23 GND
    Protože mám o svůj měřák obavy a drže se přísloví dvakrát měř a jednou řež, raději pořádně zkontroluju zapojení konektoru GPIB k Arduinu. Napsal jsem malinký program[4], který umožní ruční otestování správného zapojení pin po pinu.
test zadrátování byl úspěšný

    Teď už jen nahrát správný program pro komunikaci. Dá stáhnou buď už zkompilovaný jako [hex] nebo ve formě zdrojového kódu [tady]. Volím zdrojový kód a během chvilky mám nahráno v Arduino Pro Micro. Není potřeba nic nastavovat, podle nastavení cílové platformy zvolí sám veškeré nastavení.

Komunikace s počítačem a stažení dat

    Velmi záleží na tom, k jakému zařízení se chceme připojit. V každém GPIB manuálu najdeme příkaz *IDN? – na který nám má zařízení vrátit svoje jméno a používá se k testu spojení. Jenže, ne každé starší zařízení tohle umí. Pokud má pro ukládání dat třeba moderní 3.5" disketu, tak to umět bude. Starší spíš ne.
Na úplný test rozhraní AR488 postačí, když se připojím sériovým terminálem, třeba z Arduino IDE,
přes které jsem nahrával do Pro Micro komunikační software. Příkaz s prefixem ++ je určený pro kontroler, bez prefixu pro adresované zařízení
    ++ver vrátí např. AR488 GPIB controller, ver. 0.51.04, 27/01/2022
    ++addr XX kde XX je GPIB adresa mého zařízení, pro mě je to ++addr 11
pak už všechny příkazy bez ++ budou posílány zařízení na dané adrese, pro další příkazy už záleží na zařízeníl, např. posílání příkazu, které mají něco vykonat
    DS
    L1HELLO
    DG
ale příkaz, který má vrátit nějaká data
    D3T3 – musí být následován příkazem ++read případně ++read eot – aby se přečetla všechna vrácená data

Nějaké programové rozhraní ke komunikaci

    Mám rád jazyk Python, protože je přehledný a schůdný i pro začátečníky. Takový Pascal dvacátého prvního století. Naprosto jednoduché rozhraní pro AR488 v Pythonu a i když z Pythonem nejste kamarádi, stačí nainstalovat prostředí Thonny[5], které je pro Mac, Linux i Windows a pokud sedíte u Raspberry Pi, tak je pravděpodobně již součástí prvotní instalace.
    Je ke stažení kód viz [6], který stačí vložit do editoru a spustit. Jediné místo, které musíme změnit je port="XXX" na adresu portu, kde mám svoje AR488 připojené. Je to vidět v Arduino IDE, kde jsem vybíral port, pro nahrání software.
Řádek 51 def __init__(self, port="COM9", baudrate=115200, timeout=1):
a or řádku 122 jsou vkládány první příkazy, opět výše zmíněný a oblíbený *IDN?
    Jiný způsob komunikace pomocí rozhraní VISA je zmíněná v tomto [youtube] videu včetně odkazů a funčního kódu v C#.
    Jsou i zajímavější řešení pro kombinaci starých měřících zařízení s rozhraním GPIB s moderními s LAN/LXI [7]; strýc Anubis to používá pro komunikaci se smečkou multimetrů a jednou to své řešení zabloguje.

A co krabička? 

    Možná ani není potřeba, ale pro Arduino Nano je ke stažení [model] k tisku. Tudíž Pro Micro se tam vejde, protože je asi poloviční velikosti. Dobře zajištěné tavným lepidlem funguje.

Víc profi řešení 

   Velmi elegantní řešení by bylo použít konverzní plošný spoj, kde z jedné strany je konektor a z druhé strany Arduino Pro Micro. Tuhle krásnou destičku[8] mně věnoval strýc Anubis, žel jsem ji zničil při pokusu o připájení na svůj zbastlený zkrácený konektor. A teď se stydím.
takové pěkné jsem to mohl mít

S čím vlastně chci GPIB komunikovat?

  HP3585A – viz [jiný článek] na blogu.

Zdroje:

[9] bakalářská práce podrobně rozebírající problematiku GPIB 
[10] první verze základní komunikace pomocí Arduina z roku 2014
[11] aktuální a živý projekt AR488 s podrobnou dokumentací na github, který jsem použil
[12] manuál s příkazy Prologix, který AR488 emuluje
[13] dobré youtube video na téma „GPIB - jak stahuji data ze starších měřících přístrojů.“
[14] GPIB pomocí Raspberry Pi

neděle 6. února 2022

Knihy, které mě...

Krátce
    Knihy zaměřené na počítače/programování/elektroniku viz [knihy.nic.cz]. Zajímavé na nich je, že jsou v elektronické podobě ke stažení zdarma, ač vyšly a dají se koupit i v tištěné podobě. 


Motivace   
    Na začátku byla otázku pana Chipa, který se mě zeptal: Jak to děláš? Když se něco nového chceš naučit? Odpověděl před více jak dvaceti lety můj kamarád, hudebník, virtuóz, skladatel, loutnista, absolvent AMU, svářeč na SUB viz [profil]. On řekl – na kytaru se naučí hrát každý. Stačí trochu chtít. Osm hodin denně, tři roky a je z tebe dobrý začátečník. A toho se držím. Ať název aktuálního projektu byla jízda na motocyklu nebo naučit se španělsky. Dělat něco jednou týdně dvě hodiny možná stačí jako udržovací trénink...


    Jsem přesvědčen o tom, že jestli nějaká znalost existuje a má být předána, tak byla podrobně zdokumentována a zapsána a dá se tedy najít stravitelný zdroj – pro mě kniha – pro mladší generaci třeba video – ze kterého se dá v rozumném čase naučit vše požadované. Znalost je možné zrekonstruovat a vstřebat. Škoda, že to zatím neumíme ve formě implantátu či prostým upgrade firmware. [sci–fi]
    
Nezajímavý úvod
    Jsem profesí IT a coby student jsem chodil čítávat do studovny na své alma mater knihy, které byly ve škole pouze v jednom exempláři – bylo to Umění programování (The Art of Computer Programming) od profesora Donalda Ervina Knutha z americké Stanfordovy univerzity, autora typografického systému [TeX], který byl v roce 1978 donucen naprogramovat jenom proto, že tehdejší kvalita sazby matematických textů nebyla dostatečně kvalitní. Umění programování má několik dílů, je to velmi výživné čtení a myslím, že některé díly vyšly i českém překladu. O tom se nám v devadesátých letech mohlo jen zdát.
    Jako školák před gymnaziálního věku jsem vstřebal knihu Algoritmy a štruktúry údajov od Niclause Wirtha; takový pěkný úvod do algoritmizace v jazyce Pascal. Žít s jazykem BASIC tehdy moc nešlo. Co počítač to vlastní dialekt jazyka. Co jsem si napsal doma pro ATARI, nefungovalo na základce na PMD 85 nebo v kroužku, kde byly stroje IQ 151 nebo na jiné ZŠ, kde měli síť počítačů Consul a obří osmipalcové diskety. Taky se mně nejednou stalo, že jsem začal psát program v BASICU a nedopsal jsem ho proto, že došla paměť. Přirozeně to vedlo k optimalizaci. Na dlouho jsem pak byl pohlcen assemblerem 65C02A a později jsem se snažil napsat občas něco v assembleru pro procesory Intel; dnes to vidím jako přínosné intelektuální cvičení, žel nebylo nadčasové a žádný ze svých tehdejších programů dnes nelze použít, protože byly z principu svázány s procesorem pro který byly napsány.
    Pascal pro mě přinesl krásnou standardizaci; program napsaný v Pascalu byl přenositelný na základě zdrojového kódu. Odladěný pro ATARI bez OS fungoval prakticky bez změn na počítači TNS se systémem CPM nebo na PC XT s DOSem. Pascal byl pro nás tehdy tím, čím je dneska jazyk Python.
    Z modernějších knih bych zmínil Dekompozice a rekurzivní algoritmy od Stanislava Dvořáka, kniha vyšla, když jsem byli ve druháku na gymnáziu a zatímco spolužáci řešili, jak získat přístup k dívčím zdrojům, já se snažil přemýšlet rekurzivně. Tato kniha mě později dovedla k jazyku PROLOG, neprocedurálnímu programování a teorii formálních jazyků, kterou bych dodnes prohlásil za velmi zábavný koníček. Později jsem objevil Smalltalk, ale to už se psal rok 1997 a já se chodíval do studovny prát o přístup ke knize Umění programování.
    Vtipnou stať z roku 1983 s názvem Opravdoví programátoři nepoužívají Pascal [1] znám a musím říci, že z toho pohledu jsem vždycky byl a budu zařazen v kategorii „pojídačů koláčů“. Je ještě jeden zajímavý příběh opravdového programátora [Mel].

„Krystalka“ digitálního věku 
    Jako kluk jsem vyrostl s knihou Od krystalky k modelům s tranzistory od Pavla Šraita. Její moderní verze vyšla před pár lety a jmenuje se Hradla, volty, jednočipy od Martina Malého. Zájemcům o úvod do elektroniky doporučuju. Má i vlastní web [elektrokniha.cz] a pak ještě další dva díly. Otcům ve svém okolí, bych doporučil, aby tu knihu četli se svými dcerami, či syny, kteří už umí na počítači hrát Minecraft a není jim cizí Merkur nebo Lego.  Věřte, spoustu nového se naučí obě strany. Pokud žijete v Brně a vidíte, že vaši drobotinu by mohlo zajímat něco technického, tak krom společného čtení zmíněné knihy, připomínám, že máte k dispozici pro děti i technický kroužek – [Robotárnu].
    V mé křivce učení mě moc baví zjišťovat, jak šel postupně vývoj a snažím se různá zapojení nejen odsimulovat, ale také reálně postavit. Ze začátku jsem se vyhýbal integrovaným věcem. Něž jsem použil poprvé integrovaný H-můstek, tak jsem ho odsimuloval, odladil a pak postavil z diskrétních součástek. Když všechno fungovalo, tak jsem se nebránil vzít příště integrovaný obvod. Stejně tak první Schmittův klopný obvod běžel v nepájivém kontaktním poli postavený z tranzistorů, pak s operačním zesilovačem a zenerou a teprve pak jsem ho začal běžně používat jako integrovaný obvod.
    Dobrá rada strýca Anubisa zní – jestli to lze postavit s mikroprocesorem nebo bez, použij mikroprocesor. Líp se to ladí.
    Ale stejně snažit se postavit nějaká zapojení čistě analogově má své kouzlo. A pokud to umím postavit analogově, můžu později použít digitální řízení analogové části a to je věc, která z mého pohledu řádově rozšiřuje možnosti použití. Ve výsledku jsem to zkusil postavit oběma způsoby a pak srovnat. Říkejme tomu třeba laboratorní úlohy. Je to časově náročná věc, mým cílem je integrál křivky učení a ten roste jen když je čas dobře investovaný.

Čtení o elektronice
    V březnu 2022 to budou už dva roky, co se „učím mluvit elektronicky“ – to slovní spojení jsem si vypůjčil od pana Martina Malého, jehož práci a nasazení fandím.  Nějakými knihami jsem se za tu dobu prokousal a rád bych tady zmínil ty, které považuji za hodnotné a zajímavé. Knihy možná nestačí přečíst jednou, protože jak postupně přibývají znalosti, tak si z nich odnesu pokaždé víc.
 
Přehledné základy
– Hradla, volty, jednočipy; Martin Malý [web] [pdf]
Napsáno čtivě, teorie je pouze nezbytné množství. Opravdu je to knížka, kterou můžete koupit nebo stáhnout svým mládežníkům, ale měli byste být připraveni, že bude lepší ji číst spolu. Obsahuje i nákupní seznam základního vybavení, se kterým se dá už spoustu zajímavých věcí zbastlit.

– Poznáváme elektroniku I - VIII; Václav Malina
Obsáhlé čtení, které zároveň umí udržet ideální hloubku výkladu. Už v prvním dílu si můžete postavit astabilní klopný obvod a je rámcově popsáno, jak funguje. Stačí to, protože sedmý díl věnuje třetinu knihy pouze konstrukci a ladění podobných obvodů. Poctivě přečíst, vstřebat a pak „přečíst“ znova.
 
– Moderní učebnice elektroniky I-VI; Jaroslav Doleček
Pamatujete staré učebnice fyziky nebo chemie, které byly napsány tak, že vše potřebné k pochopení látky nebo realizaci výpočtu či experimentu jste nalezli v samotné knize. Stačilo ji vstřebávat sekvenčně. Moderní učebnice elektroniky nabízí něco podobného. Není to úplně snadné čtení, ale je tam vše potřebné podrobně vyloženo.

Video zdroje
    Pokud máte raději výklad ve formě videa, tak doporučím tyto youtube zdroje
– česky [X] [X] ... [X] [X] [X] [X] ...ano, je toho pěkných pár desítek hodin
– anglicky [X]

Potud věci snadné ke čtení a videa snadná ke shlédnutí. Další knihy vyžadují angažovaného čtenáře, který se agilně doučí nebo alespoň dohledá informace, které budou nezbytné k pochopení výkladu.

Knihy rozsáhlejší, kvalitou srovnatelné s výše zmíněným The Art of Computer Programming 
– The Art of Electronics; Paul Horowitz, Winfield Hill [pdf]

Více digitální elektroniky
– Porty, bajty, osmibity; Martin Malý [web] [pdf]
– Data, čipy, procesory; Martin Malý [web] [pdf]

Více analogové elektroniky
    Celá problematika operačních zesilovačů a následně analogového zpracování signálů na mě stále působí jako magie. Následující knihy byly pro mě návštěvou Olivandersova obchodu na Příčné ulici a získání vlastní kouzelnické hůlky.

– Jednoúčelové analogové počítače; Karel Kabeš
    Vyrostl jsem v době číslicových počítačů, a to ještě nebyly rychlé. Složitější středoškolský matematický výpočet trval desítky minut. Číst o tom, že od padesátých let používáme analogové počítače, které zvládají velmi složité matematické výpočty v reálném čase je fascinující a taktéž zároveň osvobozující, protože teď umím postavit analogový počítač, který v reálném čase prakticky generuje řešení diferenciální rovnice, kterou sice umím sestavit a definovat vstupní proměnné, ale už jsem zapoměl, jak ji spočítat.

– Operační zesilovače v elektronice; Josef Punčochář
Skripta VŠB. 

Elektronky, doutnavky, knihy o věcech historických a ke zkoumání zajímavých
– Lampárna, aneb co to zkusit s elektronkami; Jaroslav Vlach, Viktorie Vlachová
Před otevřením této knihy doporučuju shlédnout přednášku o elektronkách obecně [2] a  krátké povídání o tom, jak funguje zesilovač s triodou [3].

– Doutnavky v technické praxi; Julius Strnad

– Tvarové kmitání; Chance, Hughes, Mac Nichol, Sayre, Williams
Překlad knihy MIT, shrnující vývoj modelování kmitání v radiotechnice zhruba od začátku druhé světové války do raných padesátých let.

Simulace, aneb ne všechno je potřeba sestavit v reálu
– naprostý základ, který používá ideální součástky a běží v prohlížeči. Stránky [elektrokniha.cz] odkazuje na [emulátor] a v menu „Zapojení“ jsou již připravené příklady ke knize.

– LTSpice – spousta mých dotazů k různým elektronických věcem na kolegu Anubise dostala stejnou odpověď: Odsimuluj si to v [LTSpice]. Program je dostupný zdarma, existuje k němu obří knihovna modelů, je dobře zdokumentovaný a mohu ho doporučit k samostudiu. Simulace je jen tak dobrá, jak dobré fyzikální modely součástek mám; jak si napsat vlastní se teprve učím.

Chcete půjčit knihu?
Všechny zde zmíněné knihy mám v knihovničce a pokud potřebujete, použijte kontaktní formulář; rád knihy zapůjčím. Tedy, pouze pokud je někdy zas vrátíte.

Lze odhadnout časové náklady?
Je to stejné jako s programováním, pokud to nebude hobby, těžko tomu dávat čas. Začal bych s časovým rozpočtem dva tisíce hodin a uvidím, jestli mě to pak ještě bude bavit.

středa 2. února 2022

Přesnost AREF napětí Arduina...

Krátce:
    Vliv kondenzátoru pro filtraci napájení je pro přesnost referenčního napětí naprosto zásadní. Samotné referenční je dostatečně stabilní. Pokud je napájecí napětí dostatečně vyšší než napětí referenční, není problém. Pozor! Při napájení 5V mikrokontroleru z USB bude referenční napětí výrazně nižší než předpokládaných 5V a to je závažný problém, protože třeba teplotu analogovým čidlem změřím s chybou 10°C.

Řešení je několik:
    – napájet vždy mikrokontroler z jiného zdroje, což je nejjednodušší
    – zavést vlastní přesnou napěťovou referenci nastavenou třeba jen na 4V

    Změřit aktuální hodnotu AREF napětí při napájení z USB lze a dá s ní v programu počítat, ale když připojím mikrokontroler k jinému zdroji, tak hodnota AREF vzroste budu měřit s chybou nebo musím přepsat program.

Podrobněji:

Vliv čistoty napájení na referenčního napětí Arduina

    Měřeno na italském originálu Arduino UNO a nikoli na čínském klonu. A realita? Nezáleží na tom, klony jsou v tomhle stejné. Mezi 5V a GND je připojen filtrovací kondenzátor 820μF. Bez něj by to bylo horší!
Na osciloskopu je hodně rušení. 
– žlutá stopa je čistota napájení 5V
– modrá stopa je AREF – referenční napětí
Po zapnutí funkce Highres vidím, co potřebuju. 
Přepínám rozlišení 500μV na dílek.
Napájení z USB.
Napájení z přesného zdroje 7V.

Pozor, vypadá to dobře a výstupem měření by mohlo být, že čistota napájení nemá vliv na stabilitu referenčního napětí. To je pravda. Jenže, co samotná velikost napětí AREF.

Velikost referenčního napětí v závislosti na druhu napájení 

 Napájení z USB bez připojeného filtrovacího kondenzátoru na napájení 
průměr 4,366V při napájení z USB, tedy jsme o 634mV mimo předpokládaných 5V

průměr 4,424V při napájení ze souosého konektoru 10V


Napájení ze souosého konektoru. Připojený kondenzátor 820μF mezi 5V a GND. 
průměr 4,9770V při napájení z USB
průměr 4,9820V při napájení ze souosého konektoru 10V
rozdíl je jen 5mV, všímám si střední odchylky Std dev – s kondenzátorem je to o řád lepší.

Vadí AREF o půl voltu nižší? Jakou to způsobí chybu měření?

    Problém není ve velikosti AREF, ale v tom, že referenční napětí je jiné než předpokládáme. 
    Analogové teplotní čidlo MCP9700 – 500mV při 0˚C citlivost 10mV/°C.  Příklad měření, reálná teplota je 50°C a čtení ADC ji spočteme pouze, pokud bude referenční napětí přesné. Zde předpokládám velikost 5V. Odchylka AREF jen desetinách voltu již způsobí obrovskou chybu měření.
         
    ADC = Analogově digitální převodník při čtení pomocí analogRead(Ax) vrací hodnotu v rozsahu 0–1023 má tedy 1024 kroků. Pokud bude nastaveno referenční napětí nižší, bude mít přesnější rozlišení. Zároveň platí, že nemůžeme měřit na vstupu vyšší napětí než je referenční napětí AREF.

   AREF    krok ADC
   5V      4,8828125mV    analogReference(DEFAULT);  
   1,1V    1,07421875‬mV   analogReference(INTERNAL);

Když vrací ADC hodnotu 512, měli bychom mít na vstupu polovinu referenčního napětí

    Vliv kondenzátoru pro filtraci napájení je pro přesnost referenčního napětí naprosto zásadní. Bez něj je chyba měření minimálně 6%. Vypočteno z průměrného měření. Aktuální hodnota AREF může být mimo předpoklad klidně i o 10%.

Vlastní zdroj přesného referenčního napětí

   AREF    krok ADC
  2,5V    ‭2,44140625‬mV   analogReference(EXTERNAL);    

    TL431 je levná[1] a stabilní napěťová reference. Chová se tak trochu jako programovatelná zenerova dioda. Bez nastavování a dalších přidaných součástek dává přesných 2,5V a nechá se nastavit od 2,5–36V. Pro Arduino můžu tedy použít 2,5–5V a napětí, které si nastavím a změřím reference opravdu drží.   
Přesné referenční napětí 2,5V pro Arduino.

Nastavitelná reference. Vždy je potřeba číst [datasheet]
 

Přepínatelná kombinace interní a externí napěťové reference

    Podle [2] může být externí AREF napětí může být pouze v rozsahu 0–5V. Před prvním voláním analogRead(); být nastaveno analogReference(EXTERNAL); jinak dojde k poškození MCU. 
    Externí a interní napěťovou referenci lze kombinovat a programově přepínat, stačí připojit externí referenční napětí na pin AREF přes odpor 5k. Jen je potřeba počítat s tím, že interní odpor na pinu AREF je 32k. Spolu pak fungují jako dělič napětí; tedy například pro naši referenci 2,5V přivedený přes rezistor 5k dá referenční napětí  2,5V × 32 / (32 + 5) = ~ 2,2 V AREF
    
    Související téma je teplotní stabilita napěťové reference[3].

Další čtení

[4] Podrobně o analogovém měření ardunem, referenčním napětí etc

neděle 30. ledna 2022

Teplotní závislost napěťové reference...

Teplotní stabilita různých referencí jednoduchého proudového zdroje 

 Jednoduchý proudový zdroj třeba pro LED, který potřebuje nějak získat referenční napětí.  
soubory LTSpice ke stažení [zde]

    Zleva: Použita přesná napěťová reference TL431, zenerova dioda, úbytek na dvou diodách a druhý tranzistor jako reference. Všechny modely součástek obsahují teplotní závislosti, takže lze spustit simulaci pro různé teploty. Použitý bipolární tranzistor je teplotně závislý, takže mít přesnou referenci, která se s tím umí vypořádat se hodí.
    Spuštěno pro několik teplot v rozsahu –10°C...150°C.

Jaká je teplotní stabilita zenerovy diody

    Použitím správné zenerovy diody se dá výrazně vylepšit její teplotní stabilita. Do asi 4.7V u zenerovy diody probíhá tunelový průraz, který vykazuje výrazný záporný teplotní koeficient. Nad asi 4.7V  probíhá lavinový průraz, který má kladný teplotní koeficient. No a u zenery kolem 4.7V se dějí oba a vzájemně se trochu stabilizují.
    Použití zenerovy diody jako napěťové reference není úplně vhodné, protože „průraz diody“ šumí mezi 1μV-1mV, což může být velký problém třeba jen pro běžný audio zesilovač natož třeba pro přesný DA převodník. Mělo by se to dát částečně eliminovat připojením kondenzátoru 1–100nF paralelně k zenerově diodě.
    Existují dva různé efekty regulace napětí, které se dějí při průrazu zenery. Pod asi 4,7 V dominuje tunelový průraz/zenerův efekt a má teplotní koeficient asi -3 mV/C. Kolem 8V zcela převládne lavinový průraz a ten má kladný teplotní koeficient a velikost koeficientu roste s průrazným napětím.

    Někde v rozsahu 4,7V až 6,8V jsou součástky, které lze nastavit na teplotní koeficient blízko 0 mv/C, ale pouze nalezením optimálního proudu. Dá se získat poměrně dobrou regulaci v rozsahu možná +/-5°C. 
    Simulace dala rozsah  55mV pro zeneru 4V7 a 66mV pro 5V6 v rozsahu 0–120°C.

Zdroje:

[1] wikipedie
[cvičení] nejlepší bude si to reálně změřit 
[3] [4] 
[5] jak to funguje při velmi nízké teplotě 300–93K
[6] řešení teplotní kompenzace zenery z roku 1967
[7] teorie a design

úterý 25. ledna 2022

Přesný usměrňovač, něco jako superdioda...


    Usměrňovací obvody se používají při návrhu napájecích obvodů. V takových aplikacích je usměrňované  napětí obvykle mnohem větší než úbytek napětí na diodě a tento úbytek není pro správnou funkci usměrňovače důležitý. 
    Jsou aplikace, kde tomu tak není. Třeba v měřících přístrojích může mít signál, který má být usměrněn, velmi malou amplitudu; klidně 100mV, což znemožňuje použití konvenčních usměrňovacích obvodů. Zároveň je ale nutné, zachovat velmi přesnou přenosovou charakteristiku.
    Na tento problém narazil, když jsem se snažil porovnávat a identifikovat vrcholy signálu bez použití mikrokontroleru. Stačilo zrcadlit záporné půlvlny do kladných hodnot; pro silný signál usměrnění diodami stačilo, jenže já potřebuju identifikovat signál ideálně od nuly nebo alespoň od 10–30mV; ale není problém velmi slabý signál malinko zesílit, pokud by citlivost začínala kolem 500mV.
   Řešení jsem našel v knize [The Art of Electronics] z roku 1989; třetí vydání 2015 str. 257, kapitola 4.5.4 Absolute-value circuit. 

    Precision full wave rectifier = absolute value circuit
    Přesný celovlnný usměrňovač vrací absolutní hodnotu signálu bez ohledu na polaritu.  
    Zajímavost: věc známá i v Československu, viz [patent] z roku 1987. V naší terminologii se toto zapojení nazývá obvod absolutní hodnoty.  Pro srovnání americký [patent] z roku 1971.

Všechny zde uvedené LTSpice simulace a modely v jednom balíčku ke stažení [tady].

Přesný „jednocestný“ usměrňovač (half wave/půlvlnný) – taková superdioda

    Základní implementace přesného půlvlnného usměrňovače je řešená pomocí operačního zesilovače, který má diodu ve zpětnovazební smyčce. Tohle řešení účinně řeší úbytek napětí na diodě, takže i signály velmi nízké úrovně (hluboce pod propustným napětím diody) mohou být usměrněny s minimální chybou.
Omezení
– Skutečný práh superdiody je celmi blízko nule, ale není nulový. 
– Na první pohled to nevypadá špatně, ale má to některá vážná omezení. Tím hlavním je rychlost. S vysokofrekvenčními signály to nebude dobře fungovat. Pro nízkofrekvenční kladný vstupní signály se v propustném směru diody použije 100% negativní zpětná vazba. Úbytek napětí na diodě je efektivně odstraněn zpětnou vazbou a invertující vstup sleduje kladnou půlvlnu vstupního signálu téměř dokonale. Když se vstupní signál dostane do záporné části, operační zesilovač nemá žádnou zpětnou vazbu, takže se záporný výstup operačního zesilovače dosahuje limitace. Když se vstupní signál zase dostane do kladné části, operačnímu zesilovači bude nějakou dobu trvat, než se vrátí zpět na nulu, pak přes úbytek v diodě a pak teprve bude něco na výstupu. Tato doba je určena hodnotou rychlosti přeběhu (slew rate) operačního zesilovače a i velmi rychlý operační zesilovač bude omezen na nízké frekvence.

drobná změna pouze použitím rail to rail operačního zesilovače, aby byla mezi půlvlnami opravdu nula

    Jiný přístup k řešení, operační zesilovač v invertujícím zapojení. Na výstup projdou pouze kladné půlvlny (odpovídající záporné části signálu). Dioda s přímou zpětnou vazbou přesměruje jakýkoli záporně jdoucí výstup zpět na invertující vstup a zabrání jeho přenesení. Mírný pokles napětí na diodě D2 řeší dioda D1. Dioda D2 tedy zajistí, že na výstup projdou pouze kladné půlvlny. 

Zajímavé použití super diody ke zbavení se záporného offsetu signálu. Nevím, jak se takovým obvodům říká správně česky, ale najdu je jako [clamper circuit]. 

„Dvoucestný“ přesný usměrňovač (full wave).

Asi správně česky bude celovlnný usměrňovač, též obvod absolutní hodnoty. Protože má na výstupu absolutní hodnotu vstupního signálu bez ohledu na polaritu.
Celovlnný usměrňovač může mít jiné zesílení než jedna, může dojít k útlumu nebo zesílení.
U obvodu absolutní hodnoty předpokládám jednotkové zesílení, protože  zde zmíněná zapojení, co jsem testoval jsou ovlivněna jak amplitudou vstupního signálu, tak jeho frekvencí, píšu raději celovlnný usměrňovač.
První pokus, jak by takový přesný celovlnný usměrňovač mohl fungovat. Na vstupu je sinus 100mV/2kHz.

Daleko jednodušší řešení, dostatečně dobré a stačí mu LM741. Pro vyhodnocení přesnosti průběhu je lepší simulaci spustit jako analýzu .dc V1 -5 5

Názorné řešení přímo Linear Technology.

    Co by byla simulace bez realizace. Postaveno s TL074, čtyřnásobný J-FET operační zesilovač. Dva jsem použil jako vstupní a výstupní napěťový sledovač a zbylé dva jako pokus o celovlnný usměrňovač. Prakticky funguje od amplitudy 10mV jako půlvlnný a od 250mV funguje jako přesný full wave.

1kHz / 250mV viz [měření]
20kHz / 100mV viz [měření]
Docela slušné výsledky pro čtyřnásobný operační zesilovač TL074 za 9 korun.



    Obvod, který používá diodu, ale neovlivňuje špičkové výstupní napětí. Toto řešení dostačuje pro nízké frekvence. A je zajímavé svou funkcí. Myslím, že to funguje nějak takto: Zpětná vazba přes diodu D1 – modrá stopa I(D1) – umožňuje operačnímu zesilovači U2 udržovat kladný vstup operačního zesilovače U1 – zelená stopa V(2) – na potenciálu (virtuální) země pro jakoukoli zápornou část vstupního signálu. Zesilovač U1 funguje jako invertující napěťový sledovač – fialová stopa V(V_out).
    Dioda D1 znemožní operačnímu zesilovači U2, aby ovlivňoval kladnou část vstupního signálu; v tomto případě mají tedy oba vstupy U1 stejný signál, který z U1 udělá neinvertující sledovač, takže výstup je opět kladný.

    Slabý signál na vstupu (1–15mV), frekvence 20kHz. 1000× zesíleno, usměrněno, invertováno a 1000× zeslabeno. Pro jakékoli reálné zpracování, bych použil signál před zeslabením. Na nerovnováhu mezi velikostí amplitudy kladné a záporné půlvlny má vliv napěťový offset operačního zesilovače. LM318 má kompenzační vstupy, tak bylo potřeba trochu nastavovat a povedlo se celé zapojení na stole odladit.

10mVpp při 100kHz
Další [měření] a schéma. Funguje slušně až do 200kHz. Testoval jsem 3 – 20mV.


Použité LTSpice modely ke stažení [tady].

Použité zdroje: 
– [1] [2] ti.com
– [3] The Art of Electronics, str. 257
– [4] řešení bez použití diody
– [5] velmi podrobně vysvětlený princip funkce zapojení 
– [6] [7] analog.com
– [8] podrobně zpracovaná laboratorní úloha
– [9] kapitola Precision rectifier v knize Signal generators and waveform-shaping circuits

neděle 16. ledna 2022

LM317 jako zdroj od 0V...

Lineární regulátor LM317 v katalogovém zapojení umí regulovat v rozpětí 1,2 – 37V. Obvod vyžaduje zatížení alespoň 5mA, aby fungoval správně. 
Otázka: Může to dobře regulovat i nižší napětí, když referenční napětí LM317 je asi 1,2 až 1,3V?
Odpověď: Může, ale musí mít adekvátně nastaveno referenční napětí.

Všechna zde uvedená schémata a modely pro LTSpice ke stažení [tady].

V principu jde přesně o to, odečíst od referenčního napětí (ADJ) přesně 1,25V. 
Pokud mám k dispozici napájení –1,25V je to takto snadné a LM317 bude regulovat od 0V. Jenže, takto snadné to většinou nebude.

V katalogu [onsemi] na str.8 je uvedeno následující schéma pro regulaci od 0V
Referenční napětí je získáno pomocí dvojice diod D1, D2. Funguje to, ale je to teplotně velmi nestabilní, reálně asi 2,5mV/K. Otázka zní, zda to lze vyřešit lépe. Použití TL431 jako napěťové reference zabrání teplotnímu driftu. Ale co když zrovna v šuplíku žádnou teplotně stabilní napěťovou referenci nemám. Jde to i jinak.

První pokus bylo získat referenční napětí díky zdroji konstantního proudu.
LM317 jako regulátor 0–3V

Konstantní zdroj proudu řízený tranzistorem Q1.
I = (VF - VEB0) / (R4+U4)
kde VF je propustné napětí D1, přibližně 2V a VEB0 je napětí emitor-báze tranzistoru Q1, tedy přibližně 0,6V. Proud je přibližně 1,32 / (R4+U4). 
Zdroj konstantního proudu vytváří na rezistoru R2 předpětí přibližně –1,25V. Trimr U4 mění proud a slouží k nastavení nuly. R4 chrání tranzistor Q1.
Trimr nebo potenciometr U2 nastavuje výstupní napětí V_OUT v rozsahu asi 0-3V.
V_OUT = VREF (1+U2/R1)-VR2
kde VREF je referenční napětí na vstupu ADJ a VR2 je kompenzační napětí na rezistoru R2.

Druhé řešení využije operační zesilovač.

LM317 jako regulátor 0–3V

Vždy potřebuji nějaký zdroj symetrického/záporného napětí.

Pěkný způsob jak získat záporné napětí je použití zdvojovače.


pozn. pro reálnou zenerovu diodu by bylo potřeba zadat víc parametrů
např. PH_BZX84C3V3 uvnitř vypadá takto: 
.MODEL PH_BZX84C3V3 D(IS=7.035E-16 N=0.9809 BV=3.3 IBV=0.005 RS=0.3487 CJO=3.162E-10 VJ=0.6687 M=0.3164 FC=0.5 mfg=Philips type=zener)

Je jasné, že takovýto zdroj V_OUT v případě zatížení bude pěkně kolísat
Vzhledem k tomu, že má sloužit jako vstup pro regulátor LM317, tak to nevadí a pokud řeším rozsah 0-3V, tak můžu použít transformátor s nižším napětím.

Všechna schémata a modely pro LTSpice ke stažení [tady].

Další čtení na téma LM317

[1] podrobný test
[2] skvělý nápad pro řízení s přesnější referencí TL431; str. 27, obr. 33 
    Přesný regulátor 5V/1,5A.

    Referenční napětí pro LM317 je opravdu 1,25V; ale ne vzhledem k zemi! Referenční napětí lineárního regulátoru je relativní k výstupnímu napětí, takže napětí pro pin ADJ.  LM317 je 5V – 1,25V = 3,75V.
Proud přes TL341 se sám upraví tak, aby poskytoval 3,75V na pinu ADJ, ten nastaví LM317 na 5V na Vout, což pak poskytne správné referenční napětí pro TL431 na jeho pin REF. Lepší by bylo dát rezistor 8k2 menší, aby bylo víc proudu pro TL431. 
Jestli je dropout 3V, tak minimální napětí je 5V+3V=8V. Proud přes rezistor 8k2 Ik = (8V–3,75V) / 8k2 = 0,5mA. TL431 má minimální katodový proud 0,4mA. Takže obvod reguluje těsně nad minimálním proudem TL431. Jestli dropout LM317 je 2,5V při maximální zátěži 1,5A. Pokud potřebuju minimální Ik pro referenci, musím zmenšit rezistor R3. R3= ((5V + 2,5V)-3,75) / Imin.

blog se přestěhoval...

Začátkem srpna 2026 se blog přestěhoval na novou adresu. Mělo by automaticky dojít k přeměrování na novou adresu, pokud se to nestalo, musít...