To mi takhle jednou zavolal kamarád Vojta a povídá: „Postavil jsem na Atmelu projekt na počítačem podporovaný experiment“. Inspirace mi opět naskočila. My se sešli, probrali jaké měření by ještě mohl udělat a já jsem zatoužil postavit také nějaký přístroj. Chtěl jsem, aby byl kompaktní, přenosný s displayem a jednoduchý. V té době jsem pročetl knihu Základy programování Arduina (někdy se opravdu donutím a přečtu beletrii) a myšlenka byla na světě.

Projekt jsem pak náhodou použil i v rámci projektu dalšího vzdělávání a trošku jej dopracoval i po formální stránce 🙂

Rozhodl jsem se sestrojit elektroskop, který by měřil velikost kladného i záporného elektrického náboje a jeho hodnotu zobrazil na displeji. Při návrhu jsem uvažoval, že by tuto konstrukci lidé se základními zkušenostmi z oblasti elektroniky mohli opakovat. Existují sice i elektroskopy které mají počítačem podporované měření, ale jejich cena je poměrně vyšší. Mají samozřejmě komfortnější zaznamenávání a zpracování výsledků v  pokusech s krátkou časovou délkou, například během vybíjení náboje. Pro základní měření je ale tento elektroskop založený na Arduinu Uno plně dostačující.

Zvolil jsem Arduino Uno. Je to nejčastěji používané Arduino, ale mohl jsem zvolit i jiné. Jeho klony jsou velmi levné a obsahuje vše potřebné pro naši aplikaci. Je založeno na mikroprocesoru ATmega328P architektury AVR, který má 8 bitovou datovou sběrnici a frekvenci 16 MHz. Flash paměť je velká 32 kB. Deska obsahuje 20 digitálních vstupních a výstupních  I/O pinů z toho 6 pinů s AD převodníkem a 6 PWM pinů. Pro měření elektrického náboje jsem použil jeden AD převodník, pro ovládání displeje 8 pinů a pro ovládání tlačítky 1 pin, prostě paráda 🙂 🙂 🙂 🙂

Troška teorie 🙂

Arduino Uno má 10 bitový AD převodník. Tento převodník převádí hodnotu napětí na pinu  v rozsahu 0 voltů až 5 voltů na číslo. Tento rozsah je tedy rozdělen na 1024 dílků v rozsahu  0 – 1023.

Bohužel nejde tento vstup přímo použít pro měření elektrického náboje, protože měřený náboj může být záporný, ale Arduino měří pouze hodnoty kladné. Bylo tedy nutné sestrojit vstupní obvod, který by při nulovém náboji přiváděl na pin AD převodníku napětí 2,5 voltů, tedy polovinu rozsahu. Měření na AD převodníku bude  probíhat od 0 – 2,5 voltů a 2,5 – 5 voltů. Hodnota 2,5 voltů bude představovat náboj 0 coulombů a bude nutné jí kalibrovat, kdyby docházelo ke kolísaní napětí a nebyla by  na AD převodníku hodnota přesně 2,5V.

Konstrukce elektroskopu byly zveřejněny již několikrát v odborných časopisech, jako je Amatérské rádio, ale tyto konstrukce pracovaly s analogovými ručičkovými voltmetry pro zobrazení náboje, s ručičkou uprostřed, kde nebyl problém se zápornými hodnotami napětí. Má konstrukce je částečně inspirována zapojením z časopisu Amatérské rádio – Praktická elektronika 08/2009 str. 7 , ale je doplněna z důvodu posunutí nuly na 2,5 voltů o další operační zesilovač. Celkové schéma je na obr. č. 1 a návrh plošného spoje je na obr. č. 2. pro návrh jsem použil návrhový systém Eagle v.6.5., který provádí kontrolu všech pinů, zda jsou propojeny a pomáhá i s návrhem plošného spoje podle nakresleného schématu a jeho kontrole. Využil jsem i funkci polygon, pro vylití plošného spoje zemí, což zlepší elektrické vlastnosti obvodu a ušetří finanční prostředky za leptací lázeň, protože se sníží množství leptané mědi. Plošný spoj je navrhnut jako jednostranná deska s propojkami z důvodu možnosti amatérské výroby doma. Výroba dvouvrstvých a vícevrstvých plošných spojů je v domácích podmínkám komplikovanější a náročnější na přesnost. Tímto rozhodnutím utrpěla estetika návrhu plošného spoje.

Schéma desky k arduinu
Plošný spoj PCB
osazení

Zdroj

Pří návrhu nastaly možnosti napájení dvěma bateriemi 9V, nebo malým zdrojem. Z praktického hlediska jsem zvolil malý zdroj.

Střídavé napětí 9 – 12 voltů je přivedeno na vstupní konektor J2. Kde pomocí dvou diod D3 a D4 je vytvořena kladná a záporná napájecí větev. Za diodami je dvojice elektrolytických kondenzátorů C5 a C8 pro vyhlazení pulzujícího napětí. Za nimi je pak dvojice keramických kondenzátorů C6, C9 a C17, C18 blokující kmitání stabilizátoru IC1 a IC2. Stabilizátory jsou na +8V a -5V. Původní zapojení obsahovalo stabilizátor na -8V ale maximální napětí pro  TLC271P je 16V, což je hraniční hodnota. Doporučuji proto zvolit nižší napětí. Napětí +8V je přivedeno na desku Arduina, kde je stabilizováno na +5V stabilizátorem Arduina a pak vedeno zpět na vstupní desku obvodů. Napájí tedy vstupní desku obvodů i Arduino.  Při zasunutí Arduina do USB portu, nebo napájení přes napájecí konektor Arduina při absenci napájení konektoru J2 je elektroskop nefunkční, protože mu chybí záporná napájecí větev. Stabilizátory jsou značně předimenzované a neměl jsem potřebu je chladit chladiči.

Elektrický náboj se měří jako napětí na kondenzátoru C1, odpor R2 a diody D1 a D2 (BAS34) mají ochrannou funkci a nejsou pro obvod nezbytné. Přesto je doporučuji zapájet. Měřené napětí prochází přes operační zesilovač IC3 (TLC271P) s velmi vysokým vstupním odporem, který je zapojen jako sledovač se zesílením rovno jedna. Na jeho výstupu je stejné napětí jako na vstupu.

AD převodník

A/D převodník vestavěný v Arduinu je napájen napětím 5 V které je zároveň i referenční napětí převodníku a vstupní rozsah převodníku je tedy 0 – 5 V. Z napájecího napětí 5 V je vytvořeno napětí -2,5 voltů pomocí operačního zesilovače v invertujícím zapojení IC4B.   Toto napětí se sčítá s napětím z IC3, které je úměrné el. náboji a pohybuje se v rozmezí 0 až +/- 2,5 V podle polarity elektrického náboje. Na výstupu součtového invertujícího zesilovače IC4A je při nulovém náboji napětí 2,5 voltů, tedy polovina rozsahu A/D převodníku. Při rostoucím kladném náboji toto napětí klesá 2,5 -> 0 V a při rostoucím záporném náboji toto napětí roste 2,5 -> 5 V. Toto napětí vede přes filtrační odpor R6 a kondenzátor C2 na vstup A/D převodníku Arduina.  Diody D5 a D6 (BAT42) mají ochrannou funkci. Vybíjení napětí na kondenzátoru C1 se provádí tlačítkem S1, které uzemní kondenzátor.

Zapojení displeje

Pro zobrazení dat je použit displej 1602 s řadičem HD44780 s šestnácti znaky a se dvěma řádky s podsvícením. Intenzitu podsvícení je možné regulovat změnou hodnoty rezistoru R1. Kontrast displeje se reguluje nastavením trimru P1. S nastavením těchto parametrů nebyl žádný problém, jen je potřeba dát při koupi pozor, aby displej měl anodu na pinu 15 a katodu na pinu 16.

Displej je zapojen ve 4 bitovém módu pomocí DB4-DB7 na pinech 11 až 14. Cena displeje je různá od 50 Kč na serverech Aliexpress až po 200 Kč v obchodech GES či TME.  Seznam pinů displeje :

Číslo pinu                     Symbol                                    Popis

1                                  VSS, GND                  GND napájení displeje

2                                  VDD, VCC                 +5V napájení displeje

3                                  V0                               Pin pro nastavení kontrastu LCD

4 – 6                            RS, R/W, E                 Řízení řadiče

7 – 14                          DB0 – DB7                  Datové piny

15                                LED+                          Anoda podsvícení displeje

16                                LED-                           Katoda displeje

Ovládání elektroskopu je pomocí tlačítka S2, které je připojeno na digitální pin 6. V nestlačeném stavu tlačítka je na pinu logická nula – LOW. Při stisku tlačítka stav logická 1 – HIGH. Program je navržen tak, aby načítal stav tohoto tlačítka. Při stisku tlačítka je provedena korekce napětí na pinu AD převodníku, aby elektroskop ukázal náboj 0 coulombů. Sekvence nastavení by měla být taková –  stisk tlačítka  S1 pro vybití kondenzátoru, poté stisk tlačítka S2 pro korekci hodnoty napětí v programu Arduina.

Stavba

Elektroskop jsem stavěl sám.  Při dodržení základních pravidel osazování součástek v pořadí patice, zalamovací piny, propojky, rezistory, kondenzátory, polovodiče nenastal žádný problém. Kontrola plošného spoje po zapájení je důležitá, pak rovněž očištění spoje. Následovalo sešroubování desky displeje s  Arduinem Uno. Displej je připojen vodiči. Všechny součástky jsou běžně dostupné ve specializovaných obchodech. Sestavení elektroskopu je na obrázku

Předloha pro výrobu spoje foto cestou – negativ
Vyvolání fotocitlivé vrstvy fotorezistu
Vyleptaný plošný spoj
osazení desky – display je zkušebně na vodičích

Cena

Seznam součástek a jejich cena

součástkahodnotacena součástkahodnotacena
KitArduino Uno135 Kč D5BAT421,5 Kč
C1220n3,5 Kč D6BAT421,5 Kč
C2470n3,7 Kč DISP1LCM1602DSL90 Kč
C3100n1,7 Kč IC12940T-8.030 Kč
C4100n1,7 Kč IC279059 Kč
C52200u4,6 Kč IC3TLC271P16,5 Kč
C6100n1,7 Kč IC4TL072P6,5 Kč
C7100u2,4 Kč J2JACK-PLUG22,6 Kč
C82200u4,6 Kč P120k7 Kč
C9100n1,7 Kč R150R0,2 Kč
C10100u2,4 Kč R210k0,2 Kč
C111u5,4 Kč R310k0,2 Kč
C17100n1,7 Kč R410k0,2 Kč
C18100n1,7 Kč R510k0,2 Kč
D1BAS341,4 Kč R610k0,2 Kč
D2BAS341,4 Kč R710k0,2 Kč
D31N40040,7 Kč R820k0,2 Kč
D41N40040,7 Kč R910k0,2 Kč
S1, S2Spínač nebo  mikrospínač21Kč krabičkaZ 18 KPZ653Kč
SlDistanční sloupek40 Kč konektorbanánek7 kč
SlDistanční sloupek15 Kč konektorZdířka banánek6 Kč
TrNapájecí zdroj Out 9V AC369 Kč Celkem 846 Kč

Zdrojový kód

Arduino má své prostředí pro vývoj. Systém není složitý a je spousta knihoven, které se mohou použít pro různé doplňky. Pro displej je jedna taková knihovna použita. Tato knihovna LiquidCrystal.h je automaticky přiložena v menu softwaru v záložce projekt – Include Library po instalaci  softwaru  Arduino do PC. Po načtení proměnných běží smyčka na načítání stavu tlačítka. Pokud je hodnota pinu tlačítka HIGH provádí se kalibrace, pokud je tomu jinak, je prováděno měření. Hodnoty se zobrazí na displej. Mezi každým měřením je nastavená malá prodleva.

// include the library code:

#include <LiquidCrystal.h>

// Initialize the library with the interface pins

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

  int sensorValue = analogRead(A0);

 float voltage = sensorValue * (5.0 / 1023.0);

     float hodnota = -1*(voltage – 2.5);

float korekce = 0;

      const int buttonPin = 6;     // číslo pinu tlačítka

int buttonState = 0;    // proměnná pro čtení stavu tlačítka 

void setup() {

// nastaveni poctu znaku a radku displeje

lcd.begin(16, 2);

 lcd.clear();

 delay (800);

    // inicializujte pin tlačítka jako vstup:

    pinMode(buttonPin, INPUT);

        lcd.setCursor(0, 0);

      lcd.print(„ELEKTROSKOP V.1“);

 delay (1500);

       lcd.setCursor(0, 1);

             lcd.print(„LEON VASINKA“);

             delay (1500);

             lcd.clear();

      lcd.setCursor(0, 1);

             lcd.print(„Ahoj zaci :-)“);

             delay (1500);

             lcd.clear();

    }

void loop() 

{

       buttonState = digitalRead(buttonPin);

        // zkontroluje, zda-li je tlačítko stlačené.

    // Je-li tomu tak, nastaví buttonState na HIGH:

    if (buttonState == HIGH) {        

        kalibrace();

             }

        else {    

       mereni() ;

            }

}

  void kalibrace() 

{

   int sensorValue = analogRead(A0);

    float voltage = sensorValue * (5.0 / 1023.0);

     float hodnota = -1*(voltage – 2.5);

      korekce = voltage – 2.5;

   lcd.setCursor(0, 0);

      lcd.print(„volty  korekce“);

       lcd.setCursor(0, 1);

       lcd.print(voltage);

       lcd.print(“     „);

       lcd.print(korekce);

      delay (300);

      lcd.clear();

     delay (300);

  }

     void mereni() 

{

 int sensorValue = analogRead(A0);

 float voltage = sensorValue * (5.0 / 1023.0);

 float hodnota = (-1*(voltage – 2.5))  + korekce;

 int naboj = 220 * hodnota; // zmena kondenzatoru za jinou hodnotu

if (naboj > 1) {

   lcd.setCursor(0, 0);

      lcd.print(„naboj: „);

            lcd.print(naboj);

      lcd.print(“ nC“);

         lcd.setCursor(0, 1);

      lcd.print(„kladny naboj    „);

    }

    else if  (naboj < – 1){

       lcd.setCursor(0, 0);

      lcd.print(„naboj: „);

      lcd.print(naboj);

      lcd.print(“ nC“);

         lcd.setCursor(0, 1);

      lcd.print(„zaporny naboj  „);

           }

     else {

 lcd.setCursor(0, 0);

      lcd.print(„naboj: 0“);

                  lcd.print(“ nC“);

               lcd.setCursor(0, 1);

      lcd.print(„DEJ Nabite Teles“);

    }

delay (500);

lcd.clear();

      }

Oživení

Oživení elektroskopu po nahrání kódu by neměl být problém. Je třeba nastavit kontrast displeje, jinak je možné že znaky na displeji nebudou čitelné. Stabilizátory by se neměly výrazně zahřívat. Poté je potřeba provést kalibraci a ověřit, zda elektroskop měří elektrický náboj. Při pokusech s měřením náboje, bylo zjištěno, že elektroskop je poměrně citlivý na nabitá tělesa blízko displeje a Arduina, což vede k chybě a na displeji se zobrazí nesmyslné znaky a je potřeba elektroskop vypnout a znovu zapnout. Je vhodné zabalit celou elektroniku do izolační fólie a poté do fólie alobalu, kterou je vhodné uzemnit, například použitím některých distančních sloupků z kovu, protože některé otvory na desce jsou spojeny se zemí. Na to je zároveň potřeba dát pozor při spojování s Arduinem, aby nedošlo ke zkratu cest Arduina sloupkem. Je vhodné použít kombinaci kovových a plastových sloupků m3 x 30mm a izolační podložky pod některé šrouby M3.

Dále bylo zjištěno, že původní hodnota kondenzátoru C1 1 uF je příliš velká a byly potíže s měřením kladného náboje skleněné tyče. Rozsah elektroskopu byl příliš velký a měl malou citlivost. Hodnota byla změněna na 220nF a je možné s ní dále experimentovat s nutností upravit program v příslušném řádku. Rozsah elektroskopu je s tímto kondenzátorem od ‑ 550nC do + 550 nC.  Pokud je náboj větší než 1nC zobrazí se na displeji nápis Kladný náboj a jeho hodnota, pokud menší než 1nC zobrazí se na displeji nápis Záporný náboj a jeho hodnota. V rozsahu -1 až + 1 nC je zobrazen pokyn k přiložení nabitého tělesa.

Mechanický a Arduino elektroskop

Kdo by chtěl celý projekt s daty v Eagle a Arduino kód, může mi napsat email na leonv(zavináč)seznam.cz