This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:sensor:accelerometer [2014/10/02 06:57] – rellermaa | et:examples:sensor:accelerometer [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~PB~~ | ||
====== Kiirendusandur ====== | ====== Kiirendusandur ====== | ||
+ | //Vajalikud teadmised: | ||
+ | [HW] [[et: | ||
+ | [AVR] [[et: | ||
+ | [LIB] [[et: | ||
===== Teooria ===== | ===== Teooria ===== | ||
- | [{{ : | + | [{{ : |
- | Kiirendusandurit | + | Kiirendusandurit |
- | Elektroonikas kasutatakse kiirenduse mõõtmiseks tihti MEMS (// | + | Tüüpiline kiirendusandur koosneb mikrofreesitud mahtuvuslikust andurelemendist |
- | [{{ : | + | ===== Praktika ===== |
- | Andur koosneb mikrofreesitud mahtuvuslikust andurelemendist (g-rakk) ja mõõte ning töötluselektroonikast. Mõõteelement koos elektroonikaga | + | Kodulabori lisakomplektiga on kaasas lihtne 3-teljeline MMA7361L kiibil põhinev kiirendusandur. Kiirendusandur võimaldab valida kahe erineva mõõtepiirkonna vahel, milleks |
- | Andurisse sisse ehitatud elektroonika tegeleb g-rakkude mõõtmisega ning analüüsimisega. Elementidest tulev informatsioon võimendatakse, | + | [{{ : |
- | ===== Praktika ===== | + | ^ Tähis plaadil ^ Signaali tüüp ^ Kirjeldus ^ |
+ | | 0GD | Digitaalväljund | 0G tuvastamise \\ signaal | | ||
+ | | X | Analoogväljund | X-telje väljundsignaal | | ||
+ | | Y | Analoogväljund | Y-telje väljundsignaal | | ||
+ | | Z | Analoogväljund | Z-telje väljundsignaal | | ||
+ | | G | Toide | Maa | | ||
+ | | + | Toide | Toide 3.0-3.6 V | | ||
+ | | G | Toide | Maa | | ||
+ | | SLEEP | Digitaalsisend | Puhkerežiim, | ||
+ | | GS| Digitaalsisend | Režiimi valik | | ||
+ | | ST| Digitaalsisend | Enesetesti funktsioon | | ||
- | MMA7361L 3-teljelise kiirendusanduri | + | Kiirendusanduri |
<code c> | <code c> | ||
- | // | + | // Kodulabori kiirendusanduri näidisprogramm |
- | // Kiirendus anduri testkood | + | // Loetakse kiirendusanduri kolme telje väärtused ja kuvatakse need ekraanil |
- | // Kiirendusanduri kanalid on ühendatud ADC1-3 portidesse | + | // X ja Y telje näidud |
- | // | + | |
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
- | #include < | ||
+ | // Väärtuste teisendusfunktsioon | ||
long map(long x, long in_min, long in_max, long out_min, long out_max) | long map(long x, long in_min, long in_max, long out_min, long out_max) | ||
{ | { | ||
Line 33: | Line 45: | ||
} | } | ||
- | // | ||
// Põhiprogramm | // Põhiprogramm | ||
- | // | ||
int main(void) | int main(void) | ||
{ | { | ||
- | //Käivitame | + | // LCD ekraani algseadistamine |
lcd_gfx_init(); | lcd_gfx_init(); | ||
- | lcd_gfx_write_string(" | + | lcd_gfx_write_string(" |
+ | // ADC muunduri algseadistamine | ||
adc_init(ADC_REF_AVCC, | adc_init(ADC_REF_AVCC, | ||
+ | |||
// Lõputu tsükkel | // Lõputu tsükkel | ||
- | while (true) | + | while (1) |
{ | { | ||
char buffer[60]; | char buffer[60]; | ||
+ | |||
+ | // x, y, z telgede analoogväärtuse lugemine | ||
uint16_t x = adc_get_value(1); | uint16_t x = adc_get_value(1); | ||
uint16_t y = adc_get_value(2); | uint16_t y = adc_get_value(2); | ||
uint16_t z = adc_get_value(3); | uint16_t z = adc_get_value(3); | ||
+ | // Kiirendusanduri telgede lugemite teisendamine ekraani | ||
+ | // mõõtkavasse, | ||
uint16_t x_map = map(x, | uint16_t x_map = map(x, | ||
uint16_t y_map = map(y, | uint16_t y_map = map(y, | ||
+ | // Lugemite teisendamine tekstiks ja LCD ekraanile kuvamine | ||
sprintf(buffer," | sprintf(buffer," | ||
lcd_gfx_goto_char_xy(0, | lcd_gfx_goto_char_xy(0, | ||
lcd_gfx_write_string(buffer); | lcd_gfx_write_string(buffer); | ||
+ | // Punktide joonistamine | ||
lcd_gfx_drawPixel(x_map, | lcd_gfx_drawPixel(x_map, | ||
- | _delay_ms(10); | + | sw_delay_ms(10); |
} | } | ||
} | } | ||
</ | </ |