|
Kategorie: Diplomové, bakalářské práce |
Tento dokument chci!
Práce popisuje principy a problémy při realizaci ultrazvukového anemometru. Je popsán princip výpočtu rychlosti větru a následné korekce výpočtu. Pro realizaci jsou využity ultrazvukové sensory a microcontrolér ARM Cortex-M3. Práce se zabývá generováním PWM signálu, jeho analogovou filtrací, zesílením a odvysíláním. Na přijímací straně jeto nízkonapěťový zesilovač a komparátor. Vyvíjený kód je popsán pomocí vývojového diagramu.
9 ADC peak peak function
The adc_peaktopeak function called after gpio_post_int from main function. It
calculate difference between maximum and minimum sampled sequence.
At first program clear max and put min high value. were discounting from 31250 (2,5 ms) and signal
takes 1,5 spread between sensor, has measure 18750. Values below correspond
with 170 m/s.4. This can happen for too low measured time. every step takes one value from adc_array and
store adc_value local variable. Than actual adc_value tested higher than max
28
.11: Flowchart GPIO post interrupt function
4. we
multiply this number 3,3 and divided 1000, had peak peak voltage of
received signal. Then tested flag parameter let know, which PWM generator
has switch off.8 GPIO post interrupt function
The gpio_post_int function called from main after adc_sample function. There are some correction
of this error later. first is
defined variable. flag fulfill
this condition, program exit from function.
At the end test value correct range.
After that get value from timer and calculate measured time as
a complement timer_load_set.4.4. Digital input interrupt pin level disabled and flag set next
state, X_WIND_CALC Y_WIND_CALC. Actually this value
can from 2500 5000 higher because another details.
Illustration 4. sampled 128 values,
program stay loop for 128 cycles. Then tested flag set X_PWM Y_PWM state. Program returns measured time and exit. 12500 clock cycles, timer has lower value than 15000, digital
input interrupt could happened because received noise some reflected signal. In
that case set flag for next measurement.
The function has adc_array address input argument. There are local variable on
the beginning