Operácie

UART Metronóm

Zo stránky SensorWiki

Záverečný projekt predmetu MIPS / LS2026 - Karol Kilian


Zadanie

UART Metronóm

Cieľom projektu je vytvoriť jednoduchý elektronický metronóm riadený mikrokontrolérom AVR. Program komunikuje s používateľom prostredníctvom rozhrania UART, cez ktoré je možné zadať hodnotu BPM (beats per minute/počet úderov za minútu). Zadaná hodnota určuje rýchlosť metronómu.

Vývojová doska ACROB.

Literatúra:


Analýza a opis riešenia

Projekt bol realizovaný pomocou mikrokontroléra ATmega328P, ktorý zabezpečuje spracovanie vstupných údajov z počítača a generovanie zvukového signálu pre metronóm. Používateľ zadáva hodnotu BPM cez sériovú komunikáciu UART pomocou terminálu v počítači. Program následne vypočíta časový interval medzi jednotlivými údermi a v pravidelných intervaloch aktivuje bzučiak.

Komunikácia medzi počítačom a mikrokontrolérom prebieha pomocou rozhrania UART s prenosovou rýchlosťou 9600 baudov. Používateľ zadá číselnú hodnotu BPM do terminálu a po potvrdení klávesom Enter sa hodnota odošle do mikrokontroléra. Program prijaté znaky uloží do poľa znakov (buffer) a následne ich pomocou funkcie atoi() prevedie na celé číslo. Ak je hodnota v povolenom rozsahu, nastaví sa ako nová hodnota BPM.

Na generovanie zvuku bol použitý hardvérový časovač Timer0 v režime CTC (Clear Timer on Compare Match). Výstup OC0A automaticky prepína svoj stav pri zhode časovača s hodnotou registra OCR0A, čím vzniká obdĺžnikový signál vhodný na ovládanie piezoelektrického bzučiaka. Zvuk metronómu vzniká krátkym zapnutím generovania signálu na približne 50 ms, čím sa vytvorí krátke „tiknutie“.

Čas medzi jednotlivými tiknutiami sa vypočíta podľa vzťahu:

t = 60000/BPM​

kde: t je interval medzi údermi v milisekundách, BPM je počet úderov za minútu.

Napríklad pri hodnote 120 BPM bude interval medzi jednotlivými údermi:

t = 60000/120 = 500 ms

Program neustále kontroluje prítomnosť nových dát na UART rozhraní. Táto kontrola je realizovaná neblokujúcim spôsobom pomocou príznaku RXC0 v registri UCSR0A, takže metronóm môže pokračovať v činnosti aj počas čakania na nový vstup od používateľa.

Použité komponenty: 1.Piezoelektrický bzučiak: Piezoelektrický bzučiak slúži na generovanie zvukového signálu metronómu. Je pripojený na výstup OC0A mikrokontroléra (pin PD6). Mikrokontrolér generuje obdĺžnikový signál, ktorý spôsobuje vibrácie piezoelektrického prvku a tým vznik zvuku.

2. Časovač Timer0 Timer0 je 8-bitový hardvérový časovač zabudovaný v mikrokontroléri ATmega328P. V projekte bol použitý na generovanie obdĺžnikového signálu pre bzučiak. Použité nastavenia: -režim CTC, -prepínanie výstupu OC0A pri zhode, -prescaler 256.

Celkový pohľad na zariadenie.

Nezabudnite doplniť schému zapojenia! V texte by ste mali opísať základné veci zo zapojenia, samotná schéma nie je dostačujúci opis.

Schéma zapojenia.


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);


Zdrojový kód: Projekt_metronom_Kilian.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.

Metronóm UART.

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.