Operácie

Implementácia funkcie map()

Zo stránky SensorWiki

Záverečný projekt predmetu MIPS / LS2026 - Dariia Svystak


Zadanie

Implementácia funkcie map()] V prostredí ArduinoIde máme možnosť použiť funkciu map(). Prepíšte túto funkciu tak, aby sme napätie merané v rozsahu 0 až 5V pomocou 10 b-ého A/D prevodníka vedeli zobraziť s presnosťou na „0,01V“. Použite celočíselnú aritmetiku. Výstup A/D prevodníkom filtrujte pomocou filtra kĺzavého priemeru – priemer s 8, resp. 16 vzoriek.

Vývojová doska ACROB.

Literatúra:


Analýza a opis riešenia

A/D prevodník je 10-bitový, preto vracia hodnoty v rozsahu 0 až 1023. Túto hodnotu program najprv filtruje pomocou kĺzavého priemeru z 8 alebo 16 vzoriek.

Následne sa hodnota prepočíta pomocou vlastnej funkcie map(). Funkcia prepočítava interval 0 až 1023 na interval 0 až 500. Hodnota 500 predstavuje 5,00 V, pretože napätie je v programe uložené v stotinách voltu. Vďaka tomu je možné vypísať napätie s presnosťou 0,01 V bez použitia typu float.

Potenciometer je zapojený ako delič napätia. Krajné vývody sú pripojené na VCC a GND, stredný vývod je pripojený na analógový vstup ADC4 mikrokontroléra ATmega328P.


Schéma zapojenia.

Na meranie napätia bol použitý laboratórny modul s potenciometrom, ktorý bol pripojený k vývojovej doske. V programe sa využíva iba výstup z potenciometra, preto je v schéme zapojenia znázornený len potenciometer. Ostatné prvky modulu použité neboli. Pri otáčaní potenciometra sa mení vstupná hodnota A/D prevodníka, ktorá sa v programe načítava z kanála ADC4.

Celkový pohľad na zariadenie.


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: Implementácia_funkcie_map().zip

Overenie

Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku hotového zariadenia.

Aplikácia.

Video:

Čo by som urobil inak

Zamyslite sa spätne nad problémom, ktorý ste riešili a napíšte, čo sa vám nepodarilo a nabudúce by ste spravili inak.


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