čtvrtek 30. dubna 2015

Kapacitní palivoměr, part 1/2

Většina motorek, převážně sportovních, má pouze jedno/dvou stavový palivoměr. Některé ho nemají vůbec. U SV650 je "standardní" dvoustavový pomocí dvou NTC termistorů na tyčce, vzdálených od sebe pár centimetrů.
Dvoustavový SV650 palivoměr s NTC termistory
V reálu to funguje tak, že termistory prochází proud a ty se zahřívají. Vyhodnocovací jednotka poté měří úbytek napětí na těchto termistorech (termistor je polovodičová součástka, která s teplotou mění svůj odpor, v tomto případě u NTC termistoru hodnota odporu se zvyšující se teplotou klesá).
Ve chvíli, kdy jsou oba termistory ponořeny v benzínu, tak jsou ochlazovány a svůj odpor moc nesnižují. Ve chvíli kdy však jeden z termistorů je nad úrovní hladiny benzínu, jeho teplota rapidně vzroste (klidně na 70 °C a více) a v téhle chvíli má odpor velmi malý. Logika to potom vyhodnotí jako dosažení určitého minimálního množství paliva v nádrži.
Jelikož připravuji novou verzi palubního počítače, jenž plánuji dát i na svůj stroj, rozhodl jsem se pro konstrukci sofistikovaného palivoměru, konkrétně kapacitního.
Základem je symetrický válcový kondenzátor, kde právě dielektrikum tvoří palivo. S různým zaplněním kondenzátoru dielektrikem se mění i jeho kapacita (lineárně).
Stačí tedy vytvořit obvod, který ji bude měřit. Ideální v tomto případě se jeví multivibrátor vytvořený pomocí OZ, resp. komparátoru.
Princip multivibrátoru s OZ
Takhle se realizuje převodník kapacita-frekvence. Teď už jenom nějaké MCU, jenž bude frekvenci vyhodnocovat. Palivoměr začíná být už poměrně inteligentní, tak co tak mu přidat pár fcí navíc:
  • alarmový výstup typu open-drain
  • možnost nastavit parametry přes RS485
  • obslužný a kalibrační program pro PC
  • 6-42 V vstupní napájecí napětí
  • ochrana proti přepólování a zkratu
  • stabilita měřené veličiny ≤0,5 %
  • PCB o průměru 21 mm
  • odolnost proti EMI
Poměrně cool zadání ne? Teď přijde realizace...
Kompletní schéma kapacitního palivoměru
Pro tak široké napájecí napětí a hlavně zvětšení účinnosti stabilizace (jelikož použitý budič diferenciální sběrnice je poměrně žrout) jsem se rozhodl použít můj oblíbený IC pro step-down topologii. Pracuje asi na 1,5 MHz a proto umožňuje použití miniaturních komponent. Jelikož se celá elektronika musí vejít na PCB o průměru 21 mm (do díry uvnitř šroubu), je třeba poměrně velké miniaturizace.
Proto jsem zvolil MCU v QFN pouzdru (bez nožiček). Problém byl najít takto malý AVR MCU, který má všechny potřebné periferie v sobě (komparátor a UART). Pro oscilátor je použit interní komparátor AVRka (ATtiny841), který je velmi kvalitní (díky použité výrobní technologii).

Pro dosažení velké stability byl použit externí krystal pro hodiny MCU a pro nastavení offsetu oscilátoru kvalitní foliový WIMA kondenzátor. I když se zapojení zdá poměrně jednoduché, na PCB už nevyšlo místo pro programovací ISP konektor a tak jednotlivé piny jsou vyvedeny na test pointy.
Testování palivoměru ve vodě (relativní permitivita asi 80)
Pro ladění palivoměru jsem si v céčku napsal poměrně jednoduchý program pro komunikaci s palivoměrem. Umí z něj načíst patřičné konstanty, proměnné a nakalibrovat jej. Lze také nastavit threshold pro alarmový výstup (dosažení určitého minimálního množství paliva) a také nastavit filtr prvního řádu u měření (pro eliminaci přelívání se paliva ze strany na stranu v zatáčkách).
Obslužný program v céčku
Na programování jsem použil standardně Atmelu Studio pro AVR a potom C++ Builder od Borlandu (2006). Ano, je to oldschool, ale efektivní.
Zastavěná PCB ve šroubu (pujde pak zalít do nějaké sračky)
Pasivní součástky jsou převážně velikosti 0402 (1x0,5 mm), větší pak 0603.
Jednotlivé komponenty kapacitního palivoměru
Sestavený palivoměr
A jaké že jsou výsledky z měření a testování? Dost dobré...
Rychlost reakce na vytažení z vody a zpětné ponoření
Stabilita oscilátoru při konst. teplotě a integrační době 500 ms
Standardně palivoměr integruje (počítá pulzy) po dobu 500 ms. Tento interval jde ještě zvětšit, pokud by se chtěla zvýšit přesnost měření, což možná u benzínu nebude potřeba. Má sice relativní permitivitu pouze 2, což je 40x menší než v porovnání s testovací vodou, avšak následující souhrn parametrů jasně ukazuje, že dosavadní přesnost a stabilita dostačuje i pro benzín:
  • stabilita 10 ppm / 25°C
  • stabilita 200 ppm v rozsahu -10 až +60 °C
  • spotřeba 5 mA / 12V
  • doba měření 500 ms
  • odolnosti proti EMI
  • rychlost komunikace 38400 Bd (RS485)
Vzhledem k tomu, že u SV650 bude palivoměr asi 11 cm od zapalovací svíčky, bude vystaven poměrně intenzivnímu EM rušení. Musí být tedy správně navržen a odstíněn (převážně PCB).

Časem bude pokračování, part 2/2, kde dojde k již zfinalizování mechanické podoby elektrody (tohle byl pouze prototyp) a zabudování do nádrže...

2 komentáře:

  1. Tohle by mě asi zajímalo, palivoměr na mé xjr ukazuje cokoliv, jenom ne skutečný stav paliva. Výstup by mi stačil pwm pro připojení původního budíku, ať to nevypadá jak od komediantů...

    OdpovědětVymazat
  2. Ahoj, velice mě zajímá palivoměr, který jsi vyrobil. Bylo by možné 1 prototyp odkoupit ? V případě, že ne rád bych si ho vyrobil ale nespecifikuješ přesné hodnoty součástek atd... Předem díky za odpoveď :)

    OdpovědětVymazat