Generovanie kódu z prostredia Matlaba/Simulink: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 19: | Riadok 19: | ||
V tejto časti rozoberieme, odkiaľ filter pochádza, ako sme ho pretransformovali do digitálnej podoby a prečo sme zvolili integer aritmetiku. | V tejto časti rozoberieme, odkiaľ filter pochádza, ako sme ho pretransformovali do digitálnej podoby a prečo sme zvolili integer aritmetiku. | ||
Spojitý model | |||
Máme spojitú prenosovú funkciu prvého rádu | Máme spojitú prenosovú funkciu prvého rádu | ||
G(s) = 1 / (0,5·s + 1), | G(s) = 1 / (0,5·s + 1), |
Verzia z 14:13, 12. jún 2025
Záverečný projekt predmetu MIPS / LS2025 - Meno Priezvisko
Zadanie
Na platforme Arduino Uno R3 (ATmega328P) implementovať diskrétny filter prvého rádu so spojitou prenosovou funkciou G(s)=K/(T*s+1), K=1[-], T=0,5 [s], so vzorkovacím časom Ts=0,01. Vstupom je jednorazový skok napätia z 0 V na 2,00 V (potenciometer na A0). Výstup má byť v celočíselnej aritmetike (integer), formátovaný ako text "x.yy\n" a odoslaný cez UART0 (115200 Bd). Grafické zobrazenie prechodovej charakteristiky sa vykoná v SerialPlot.

Literatúra:
Analýza a opis riešenia
V tejto časti rozoberieme, odkiaľ filter pochádza, ako sme ho pretransformovali do digitálnej podoby a prečo sme zvolili integer aritmetiku.
Spojitý model
Máme spojitú prenosovú funkciu prvého rádu G(s) = 1 / (0,5·s + 1), kde K = 1 a časová konštanta T = 0,5 s. Tento systém pri skoku vstupu vykresľuje exponenciálnu odozvu danú T.
2. Diskretizácia
Pre mikroprocesor sme zvolili vzorkovací čas Ts = 0,01 s (100 Hz) s metódou Zero-Order Hold (ZOH). Koeficienty sa vypočítajú podľa a = exp(–Ts/T) ≈ exp(–0,01/0,5) ≈ 0,98, b = 1 – a ≈ 0,02. Rozdielová rovnica tak znie: y[n] = 0,98·y[n–1] + 0,02·u[n].
3. Integer aproximácia
ATmega328P nemá hardvérovú podporu float operácií, preto násobíme koeficienty 100 a zaokrúhľujeme: K1 = 98, K2 = 2, deliteľ = 100. Výsledná implementácia: y[n] = (K1·y[n–1] + K2·u[n]) / 100. Tento prístup je rýchly a postačuje pre 16-bitové výpočty.

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.

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
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.

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