Operácie

Metódy zvýšenie presnosti A/D prevodu: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentMIPS (diskusia | príspevky)
StudentMIPS (diskusia | príspevky)
Riadok 32: Riadok 32:
=== Porovnanie metod===
=== Porovnanie metod===
Kedze porovnam viacero metod, tu je ich teoreticke porovnaie.
Kedze porovnam viacero metod, tu je ich teoreticke porovnaie.
==== Jednotlice maranie ====
==== Jednotlive maranie ====
Tato metoda je najrychlejsia a zaroven najmenej presna. Je najrychlejsia vdaka tomu, ze berie iba 1 vzorku. Po odstatovani merania moze navyse procesor vykonavat ine instrukcie a vzorku vyhodnotit az po dokonceni A/D prevodu. Nepouziva sa pri tom ziadne opatrenie na zvysenie presnosti prevodu.
Tato metoda je najrychlejsia a zaroven najmenej presna. Je najrychlejsia vdaka tomu, ze berie iba 1 vzorku. Po odstatovani merania moze navyse procesor vykonavat ine instrukcie a vzorku vyhodnotit az po dokonceni A/D prevodu. Nepouziva sa pri tom ziadne opatrenie na zvysenie presnosti prevodu.


Riadok 54: Riadok 54:
! Merane napatie
! Merane napatie
! Metoda merania
! Metoda merania
! Stĺpec 3
! Priemerna hodnota
! Stĺpec 4
! Najvacsia odchylka
! Stĺpec 5
! Offset
! Stĺpec 6
! ISE
|-
|-
| rowspan="3" | Hlavný názov 1
| rowspan="3" | 0V (=0.XXV)
| Podriadený názov 1a
| Jednotlive merania
| Obsah 1a, stĺpec 3
| Obsah 1a, stĺpec 3
| Obsah 1a, stĺpec 4
| Obsah 1a, stĺpec 4
Riadok 66: Riadok 66:
| Obsah 1a, stĺpec 6
| Obsah 1a, stĺpec 6
|-
|-
| | Podriadený názov 1b
| | Meranie s usp. proc.
| Obsah 1b, stĺpec 3
| Obsah 1b, stĺpec 3
| Obsah 1b, stĺpec 4
| Obsah 1b, stĺpec 4
Riadok 72: Riadok 72:
| Obsah 1b, stĺpec 6
| Obsah 1b, stĺpec 6
|-
|-
| | Podriadený názov 1c
| | Priemerovanie 64 vz.
| Obsah 1c, stĺpec 3
| Obsah 1c, stĺpec 3
| Obsah 1c, stĺpec 4
| Obsah 1c, stĺpec 4
Riadok 78: Riadok 78:
| Obsah 1c, stĺpec 6
| Obsah 1c, stĺpec 6
|-
|-
| rowspan="3" | Hlavný názov 2
| rowspan="3" | 2.5V (=2.XXV)
| Podriadený názov 2a
| Jednotlive merania
| Obsah 2a, stĺpec 3
| Obsah 2a, stĺpec 3
| Obsah 2a, stĺpec 4
| Obsah 2a, stĺpec 4
Riadok 85: Riadok 85:
| Obsah 2a, stĺpec 6
| Obsah 2a, stĺpec 6
|-
|-
| | Podriadený názov 2b
| | Meranie s usp. proc.
| Obsah 2b, stĺpec 3
| Obsah 2b, stĺpec 3
| Obsah 2b, stĺpec 4
| Obsah 2b, stĺpec 4
Riadok 91: Riadok 91:
| Obsah 2b, stĺpec 6
| Obsah 2b, stĺpec 6
|-
|-
| | Podriadený názov 2c
| | Priemerovanie 64 vz.
| Obsah 2c, stĺpec 3
| Obsah 2c, stĺpec 3
| Obsah 2c, stĺpec 4
| Obsah 2c, stĺpec 4
Riadok 97: Riadok 97:
| Obsah 2c, stĺpec 6
| Obsah 2c, stĺpec 6
|-
|-
| rowspan="3" | Hlavný názov 3
| rowspan="3" | Vcc (=5.XXV)
| Podriadený názov 3a
| Jednotlive merania
| Obsah 3a, stĺpec 3
| Obsah 3a, stĺpec 3
| Obsah 3a, stĺpec 4
| Obsah 3a, stĺpec 4
Riadok 104: Riadok 104:
| Obsah 3a, stĺpec 6
| Obsah 3a, stĺpec 6
|-
|-
| | Podriadený názov 3b
| | Meranie s usp. proc.
| Obsah 3b, stĺpec 3
| Obsah 3b, stĺpec 3
| Obsah 3b, stĺpec 4
| Obsah 3b, stĺpec 4
Riadok 110: Riadok 110:
| Obsah 3b, stĺpec 6
| Obsah 3b, stĺpec 6
|-
|-
| | Podriadený názov 3c
| | Priemerovanie 64 vz.
| Obsah 3c, stĺpec 3
| Obsah 3c, stĺpec 3
| Obsah 3c, stĺpec 4
| Obsah 3c, stĺpec 4

Verzia z 11:20, 2. máj 2025

Záverečný projekt predmetu MIPS / LS2025 - René Roger


Zadanie

Porovnáme dve možnosti ako spresniť výsledok A/D prevodu v mikroprocesore. Výsledky porovnáme v tabuľke pre 3 rozličné vstupné napätia (0,2.5 a Vcc) pri jednom meraní, priemere zo 64 meraní a pri meraní s uspatými perifériami procesora. Meranie zopakujeme 100x a vyhodnotíme štatisticky.

Arduino NANO

Literatúra:


Analýza a opis riešenia

Cielom zadania je porovnat 3 odlisne metody ziskavania dat z A/D prevodnika. Po interakcii s uzivatelom, ktory mu zada napatie VREF (potrebne na prepocet nameranej hodnoty v bitoch na realnu hodnotu v mV) a realneho meraneho napatia (potrebne na statisticke vyhodnotenie posunu), program automaticky zoberie potrebne mnozstvo vzoriek z kazdej meracej metody a vykona aj statisticke vyhodnotenie ktore zobrazi uzivatelovi. Interakcia s uzivatelom prebieha prostrednictvom seriovej linky - cez terminal PuTTy.

Vyhodnocovacie metody

Pre vyhodnotenie dat vyuzijeme nasledujuce ukazovatele kvality namernaych udajov, aby sme mohli jednotlive meracie metody porovnat.

Priemerna hodnota

Je aritmeticky priemer nameranych hodnot, je vyuzivany pri pocitani otatnych ukazovatelov a hovori nam, aka bola priemerna namerana hodnota

Najvacsia odchylka

Je najvacsia odchylka nameranej hodnoty od priemernej hodnoty. (mensie = lepsie)

Offset

Je rozdiel nameranej priemernej hodnoty a realnej hodnoty napatia na meranom pine. (mensie = lepsie)

ISE

Je suma stvorcov odchylok. Casto sa pouziva ako ukazovatel kvality (mensie = lepsie)

Porovnanie metod

Kedze porovnam viacero metod, tu je ich teoreticke porovnaie.

Jednotlive maranie

Tato metoda je najrychlejsia a zaroven najmenej presna. Je najrychlejsia vdaka tomu, ze berie iba 1 vzorku. Po odstatovani merania moze navyse procesor vykonavat ine instrukcie a vzorku vyhodnotit az po dokonceni A/D prevodu. Nepouziva sa pri tom ziadne opatrenie na zvysenie presnosti prevodu.

Meranie s uspatym procesorom

Procesor ATmega 328P ma niekolko rezimov spanku, tato metoda vyuziva rezim "ADC Noise Reduction". V tomto rezime je vypnuty hodinovy signal pre procesor, flash a aj pre input/output. Tieto hodinove signaly su pri A/D prevode zdrojom rusenia, teda ich vypnutim toto rusenie odstanime a dostaneme menej zasumeny prevod. Navyse ma pocas prevodu procesor mensi odber prudu co moze byt uzitocne pri niektorych aplikaciach. Procesor sa prebudi zo spanku po dokonceni A/D prevodu (prerusenie). Medzi nevyhody (v niektorych pripadoch) patri napriklad to, ze pocas prevodu procesor spi, teda nemoze vykonavat instrukcie.

Priemerovanie 64 vzoriek

Pri tejto metode sa zoberie 64 vzoriek a tie sa aritmeticky spriemeruju. Vyhodou je velmi presne meranie, ktore filtuje napatove spicky vo vstupnom siganle (moze but aj nevyhoda, ked chceme tieto spicky detekovat). Hlavnou nevyhodou je, ze toto trvanie trva podstatne dlhsie ako meranie 1 vzorky.

Celkový pohľad na zariadenie.

Meranie

Zdroj Z2 sluzi na nastavenie meraneho napatia (na pine A7). Napatie z presneho (linearneho) zdroja je navyse filtrovane cez RC clen s casovou konstantou 0.7s, teda napatie je v case velmi stabilne. Ako napajanie je zvoleny zdroj Z1 a to z dovodu, ze napatie dodavane z USB portu moze vyrazne kolisat, s cim by kolisalo aj referencne napatie pre A/D prevodnik. Po pripojeni externeho zdroju napatia na pin VIN ide toto napatie do linearnecho regulatoru napatia pritomneho na doske Arduino NANO. Arduino NANO si v pripade, ze su pritomne 2 zdroje napatia (USB a VIN), zvoli vzdy VIN. Cela doska je teda napajana z linearneho regulatoru, ktory ma podstatne stabilnejsie napatie.

Schéma zapojenia.

Po zapojeni napajacieho napatia (Z1, U=9V) som zmeral napatie VREF (= napatie na 5V pine). Nasledne som nastavil napatie na zdroji Z2 podla zadania a pockal na jeho ustalenie. Ustalene napatie som tiez zadal mikroprocesoru. Namerane udaje su v uvedene v tabulke nizsie.

Tabuľka s hlavnými a podriadenými názvami riadkov a 6 stĺpcami
Merane napatie Metoda merania Priemerna hodnota Najvacsia odchylka Offset ISE
0V (=0.XXV) Jednotlive merania Obsah 1a, stĺpec 3 Obsah 1a, stĺpec 4 Obsah 1a, stĺpec 5 Obsah 1a, stĺpec 6
Meranie s usp. proc. Obsah 1b, stĺpec 3 Obsah 1b, stĺpec 4 Obsah 1b, stĺpec 5 Obsah 1b, stĺpec 6
Priemerovanie 64 vz. Obsah 1c, stĺpec 3 Obsah 1c, stĺpec 4 Obsah 1c, stĺpec 5 Obsah 1c, stĺpec 6
2.5V (=2.XXV) Jednotlive merania Obsah 2a, stĺpec 3 Obsah 2a, stĺpec 4 Obsah 2a, stĺpec 5 Obsah 2a, stĺpec 6
Meranie s usp. proc. Obsah 2b, stĺpec 3 Obsah 2b, stĺpec 4 Obsah 2b, stĺpec 5 Obsah 2b, stĺpec 6
Priemerovanie 64 vz. Obsah 2c, stĺpec 3 Obsah 2c, stĺpec 4 Obsah 2c, stĺpec 5 Obsah 2c, stĺpec 6
Vcc (=5.XXV) Jednotlive merania Obsah 3a, stĺpec 3 Obsah 3a, stĺpec 4 Obsah 3a, stĺpec 5 Obsah 3a, stĺpec 6
Meranie s usp. proc. Obsah 3b, stĺpec 3 Obsah 3b, stĺpec 4 Obsah 3b, stĺpec 5 Obsah 3b, stĺpec 6
Priemerovanie 64 vz. Obsah 3c, stĺpec 3 Obsah 3c, stĺpec 4 Obsah 3c, stĺpec 5 Obsah 3c, stĺpec 6

Algoritmus a program

Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... Výpis kódu je nižšie...


#include <avr/io.h>

int main(void)
{
  unsigned int measuredValue;

  while (1)
  {
    /*  relax  */  
  }

  return(0);
}
#include <avr/io.h>

void adc_init(void);                                   // A/D converter initialization

unsigned int adc_read(char a_pin);

Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:

Zdrojový kód: zdrojaky.zip

Overenie

Postup merania je v sekcii "Meranie". Vykonanie merania je intuitivne, nakolko uzivatel je navadzany textom v terminali. Fotohrafia hotoveho zariadnia nizsie.

Aplikácia.

Video:



Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.