Detektor búrok s obvodom AS3935
Napísal Administrator   
Sobota, 02 máj 2015

Detektor búrok založený na špecializovanom obvode AS3935

detector

Keďže ma odmalička fascinujú búrky a blesky, vždy som si chcel postaviť zariadenie na ich monitorovanie a detekciu. Začalo to tými jednoduchými, na báze rezonančného obvodu naladeného na frekvenciu cca 500kHz a pár tranzistormi slúžiacimi na vyhodnotenie signálu. Tieto zapojenia ale mali veľkú nevýhodu, že detekovali aj elektromagnetické rušenie z elektrických spotrebičov. Občas sa stalo, ?že sa mi blýskalo nad hlavou a detektor mlčal. Dávnejie som hľadal opäť ďalšie zapojenie na podobnom princípe a narazil som na obvod AS3935, čo je obvod navrhnutý práve na detekciu bleskov a s nimi spojeným výskytom búrok. Rozhodol som sa s ním skonštruovať jednoduchý detektor bleskov na báze Arduina.

Základné vlastnosti obvodu AS3935:

-vstavaný algoritmus na detekciu bleskov typu mrak-mrak a mrak-zem

-výpočet vzdialenosti zachyteného blesku v rozsahu 1-40km v 14-tich krokoch

-algoritmus na elimináciu rušení spôsobenými elektronickými zariadeniami

-možnosť nastavenia úrovní detekcie pre spoľahlivú detekciu bleskov

-možnosť nastavenia minimálneho počtu zachytených bleskov v priebehu 15 minút pre vyvolanie prerušenia

-vyvolanie prerušenia na základe zachytenia blesku, vysokého šumu na rezonančnom obvode alebo zachytenia elektromagnetického rušenia 

-komunikačné rozhranie i2c a SPI

-možnosť výberu až 4 komunikačných adries

-automatické ladenie pripojeného rezonančného obvodu pomocou vnútorných kapacít v obvode v krokoch po 8pF

-napájacie napätie 2.4 až 5.5V

-nízka spotreba

-16 PIN puzdro MLPQ s rozmermi 4x4mm

 

Keďže nedisponujem technológiou, aby som bol schopný zapájkovať tak malé puzdro samotného obvodu, rozhodol som sa použiť hotový plošný spoj s obvodom objednaný z Ebay-u, prípadne cez stránku uvedenú na plošnom spoji. Plošný spoj obsahuje okrem samotného obvodu AS3935 aj potrebné okolité súčiastky pre základnú funkciu obvodu AS3935. Okrem iného obsahuje potrebný rezonančný  obvod naladený na frekvenciu 500kHz na ktorej prebieha detekcia. Táto doska má nastavenú komunikačnú adresu i2c zbernice na 0, treba si na to dať pozor v programe (asi hodinu ma to potrápilo, kým som prišiel na chybu, prečo obvod nekomunikuje s programom). Komunikačná adresa i2c (0-4) sa nastavuje pinmi ADD0 a ADD1 (viď datasheet strana 3). Komunikačné rozhranie sa volí pripojením pinu SI buď na Vcc (i2c) alebo na GND (SPI).

 

board

 

Konštrukcia

Celý detektor búrok som sa rozhodol skonštruovať na báze Arduina. Arduino som použil hlavne z dôvodu jednoduchosti konštrukcie dostupnosti vzorových zdrojových kódov, z ktorých som vychádzal pri konštrukcii. 

 

Vlastnosti mojej konštrukcie:

-základ tvorí Arduino UNO

-zobrazenie údajov na LCD s radičom PCD8544 (LCD z NOKIE 3310)

-meranie teploty a barometrického tlaku pomocou snímača BOSCH BMP085

-zobrazenie vzdialenosti búrky, zachyteného blesku

-odosielanie údajov cez UART

-informácia na LCD o vysokom šume na rezonančnom obvode

-zobrazenie uplynutéo času od poslednej udalosti, ktorú obvod zachytil

-prepínanie režimu vnútri/vonku 

-zvuková informácia pri zachytenom blesku

-možnosť simulácie (ukážky správania obvodu)

 

Schéma zapojenia rozširujúceho modulu. Na konektore JP1 je pripojený modul s obvodom AS3935, konektor JP2 je určený na LCD s radičom PCD8544, konektor JP3 - výtup dát z UART-u, JP4 - modul so senzorom BMP080, JP5 - napájanie, max 5V. Reproduktor som použil zo starého PC case, priemer cca 12mm. 

schema

 

Čínska kópia Arduina osadená procesorom ATMEGA328. Keďže som nechcel použiť systém vrabčieho hniezda, rozhodol som sa vyrobiť osobitnú dosku ako rozširujúci modul pre Arduino.  Na doske je všetko potrebné, jej návrh je robený v programe EAGLE.

 

komplet

 

DPS vyrobená nažehlovaním toneru.

dps

 

Vlastnosti detektoru sa volia pomocou 4-násobného DIP prepínača priamo na doske. Prišlo mi to ako vhodnejšie riešenie než zakaždým meniť program a znovu ho napalovať do Arduina. 

 

Funkcie jednotlivých prepínačov:
1: režim, kedy detektor upravuje zosilnenie a vlastnosti podľa prostredia, v ktorom sa nachádza - vonku (ON) alebo vnútri (OFF)
2. simulácia ON/OFF - program náhodne generuje údaje a simuluje sa búrková aktivita
3. rozšírená diagnostika - cez UART sa posielajú doplňujúce informácie (adresa i2c, na ktorej sa nachádza obvod AS3935), v tomto režime je povolená funkcia "narušiteľov", tj. detektor na LCD vypisuje aj zachytené EMI rušenia. Túto funkciu zapnite, ak chcete zistiť, či je detektor zarušený EMI rušením (pri problémoch s detekciou)
4. reproduktor ON/OFF 

 

Napájanie a spotreba

Keďže som chcel celý detektor napájať aj z jedného LiION článku, potreboval som čo najviac znížiť spotrebu celého zariadenia. Keďže ATMEGA v Arduine beží za normálnych podmienok na frekvencii 16Mhz, odpovedá tomu aj spotreba.  Treba pamätať na to, že ak chcete použiť napájanie z jedného LiION článku, je potrebné vypájkovať 5V stabilizátor na doske Arduina a prepojiť jeho vstup a výstup. Tu ale treba dať pozor, lebo napájacie napätie nad 5V by zničilo detektor! Taktiež pri pripájaní Arduina na USB je potrebné odpojiť akumulátor inak by bol priamo pripojený na 5V z USB!

Spotreba sa dá znížiť aj pretaktovaním procesora na interný oscilátor s frekvenciou 8Mhz. Je to ale pre zdatnejších programátorov, návod sa ale dá nájsť na internete. Ďalších pár mA som ušetril vypájkovaním indikačných LED označených ON a L. Svietia zbytočne a tých pár ušetrených mA sa pri napájaní z batérie hodí :)

Spotreba pri 16Mhz: 5V: 24mA , 4V: 15mA , 3,3V: 12mA  

Spotreba pri 8Mhz: 5V: 17mA , 4V: 12mA , 3,3V: 9mA

Spotreba pri 8Mhz a vypájkovanými LEDkami ON a L: 5V: 11mA , 4V: 8mA , 3,3V: 7mA

 

Program pre procesor a zdrojový kód

Na internete sa mi podarilo nájsť vhodný zdrojový kód na už hotovú konštrukciu s obvodom AS3935. Autorom je Glen Popiel - KW5GP a je z jeho knihy Arduino pre HAM radio . Jeho zdroják som použil ako základ pre vlastnú konštrukciu a doplnil ho svojimi funkciami ako ovládanie DIP prepínačmi, zvukový výstup, komunikácia a zobrazenie údajov z čidla BMP085 a počítadlo celkového počtu zaznamenaných bleskov.  Celý zdrojový kód je prehľadne okomentovaný, tak sa dá v pohode prísť na to, čo ktorý príkaz robí a ako program funguje. 

 

Po zapnutí detektoru sa zobrazí úvodný screeen a za ním prebehne inicializácia čidla BMP085. Ak je čidlo nájdené a v poriadku, vypíše sa na LCD informácia "BMP080 OK". Za ním prebehne inicializácia obvodu AS3935, prebehne zápis do registrov obvodu a to konkrétne:


Noise floor level - najnižšia úroveň šumu na rezonančnom obvode (v programe nastavená na 2)
Spike rejection a Watchdog
- funkcie, ktoré ovplyvňujú detekčné vlastnosti obvodu AS3935 (v programe nastavené na 2)
Minimum lightnings (v programe nastavená na 1)  - minimálny počet zachytených bleskov v priebehu 15 minút, kedy sa vyvolá prerušenie. Je na výber zo 4 možností a to 1x (0), 5x (1), 9x (2) alebo 16x (3) bleskov.
Recomended_tune_cap - odporúčaná kapacita na naladenie rezonančného obvodu. Toto využijete hlavne, ak nepoužijete už hotovú a naladenú dosku. V programe je táto hodnota nastavená na 10, tj 10x8pF  = 80pF.

Pre viac informácií o jednotlivých funkciách a registroch pozrite datasheet.

 

Ak inicializácia obvodu a naladenie rezonančného obvodu prebehne v poriadku, na LCD sa zobrazí nápis "AS3935 OK" a režim detektoru. Zobrazí sa základná obrazovka s údajmi z čidla BMP080, ktoré sa obnovujú každú minútu.

 

lcd

 

Informácia o vysokom šume na rezonančnom obvode. V spodnom riadku sa zobrazuje čas od poslednej udalosti, tj zachytený blesk alebo vysoká úroveň šumu.

 

lcd2

 

A konečne! Prerušenie vyvolané na základe detekcie reálneho blesku :) Zobrazuje sa vziadenosť zachyteného blesku, jeho intenzita v rozssahu 1-10 a počítadlo celkového počtu zachytených bleskov pripočítava. Pri každej udalosti prebehne vyslanie dát cez UART. 

lcd3

 

Čo sa týka čidla BMP080, použil som tiež hotovú doštičku z Ebay-u, ktorá obsahuje samotné čidlo, Pull-up rezistory na zbernici i2c a LDO stabilizátor 3,3V. Tento stabilizátor je potrebné vypájkovať a prepojiť na doske pôvodný vstup a výstup. Na LCD sa zobrazuje aktuálny barometrický tlak, nie normalizovaný na hladinu mora.

 

Hotový detektor vstavaný do elektroinštalačnej krabice. Na bok príde ešte držiak LiION článku 18650, ktorý sa mi nevošiel do krabičky.

detector

 

Ďalšie vylepšenia a poznatky

Plošný spoj s obvodom AS3935 a senzorom BMP080 som nakoniec vyletoval z rozširujúceho modulu, umistnil ich do krabičky s vhodným krytím a túto umiestnil na balkón. Jednak som chcel merať vonkajšiu teplotu, ale druhý dôvod bol, že som narazil na problémy s detekciou bleskov pri umistnení vo vnútri z dôvodov elektromagnetického rušenia a vysokého šumu na rezonančnom obvode. Tieto javy spôsobovali elektrické zariadenia v miestnosti. Umiestnením mimo miestnosti som tieto problémy odstránil a aj detektor reagoval lepšie. Na prepojenie som použil tienený USB kábel.

 

 

Zdrojový kód pre Arduino, potrebné knižnice a návrh DPS pre EAGLE 

Zdroje:

http://www.w5obm.us/Arduino/ - Glen Popiel, autor pôvodného zdrojového kódu pre komunikáciu s AS3935
Mike Grusin, SparkFun Electronics - knižnica pre komunikáciu so senzorom BMP085
http://www1.futureelectronics.com/doc/AUSTRIAMICROSYSTEMS/AS3935.pdf - datasheet obvodu AS3935

 

 

 

Posledná úprava ( Streda, 01 júl 2015 )