Список використаних джерел
Вступ
Сучасний світ повний новітніми технологіями, які базуються на використанні мікропроцесорних систем, що полегшують дослідження та рішення складних задач. Мікроконтролер або одно кристальна мікроЕОМ — виконана у вигляді мікросхеми, що включає мікропроцесор, блоки пам'яті для збереження коду програм і даних, порти вводу-виводу і блоки зі спеціальними функціями (лічильники, компаратори, аналого-цифрові перетворювачі (АЦП) та інші).
Використання аналого-цифрові перетворювачі надає можливість знімати інформацію з різноманітних датчиків, таких як температури, тиску, запиленості, освітлення. Мікроконтролер має цифрові порти вводу-виводу, які можна запрограмувати для керування різноманітними приладами в реальному часі. Мікроконтролер має менші габаритні характеристики та живиться незначною напругою порівняно з комп’ютерними системами, тому без нього неможливо обійтися в різних електронних приладах таких як підсистема телеметрії наносупутника. З їх допомогою створюються системи контролю і системи збору інформації, але мікроконтролер має незначні можливості порівняно з сучасними комп’ютерними системами, які мають більший об’єм пам’яті та вищу швидкість обробку даних, тому, використовуючи мікроконтролер паралельно з персональним комп’ютером, можна значно розширити коло задач, які вирішуються. Комп’ютер надає можливість збереження інформації, отриманої від мікроконтролера, яку в подальшому можна проаналізувати і зробити потрібні висновки з великою точністю.
1. Постановка задачі для реалізації випробувань ПТК
Ціль:засоби забезпечення випробувань підсистеми телеметричного контролю (ПТК) наносупутника.
Функції системи:опитування по циклограмі різноманітних дискретних або аналогових датчиків, вимір напруги та силу струму за допомогою вбудованого 12 бітного АЦП мікроконтролера. Передача виміряних даних на робочу станцію яка зберігає отриману інформацію в базу даних.
Вхідна інформація:аналоговий сигнал який поступає з аналогових датчиків або цифровий сигнал який поступає з дискретних датчиків.
Вихідна інформація:зняті дані з датчиків які перетворюються в цифрові дані, дані які можна в подальшому використовувати в роботі алгоритмів наносупутника чи передавати на наземну станцію.
Використання:штучні космічні наносупутники.
Засоби розробки:
· STM32 VL DISCOVERY - відлагоджувальна плата з мікроконтролером ST STM32F100RB (рисунок 1.1)
Рисунок 1.1 - STM32 VL DISCOVERY
· USB-USART перетворювач на FTDI FT232RL – проміжний пристрій, який з’єднує мк з робочою станцією через USB-USART інтерфейс (рисунок 1.2)
Рисунок 1.2 - USB-USART
· MS Visual Studio 2008 C# - середовище розробки програмних засобів для робочої станції яка буде з’єднана через USART інтерфейс з мікроконтролером;
· IAR Embedded Workbench – середовище розробки програмного забезпечення (прошивки) для мікроконтролера на мові С++.
2. Підсистема телеметрії наносупутника
Телеметрія - техніка вимірювань на відстані. У загальному випадку це - розділ техніки з прийому, передачі, обробки та реєстрації параметрів на відстані.
Телеметрія - сукупність технологій, що дозволяє вести віддалені вимірювання та збір інформації для надання оператору чи користувачеві.
Для збору даних зазвичай використовують дискретні або аналогові датчики які з'єднуються з мікроконтролером.
Аналогові сигнали від аналогових датчиків поступають на аналого-цифрові перетворювачі (АЦП), які приймають вхідні і генерують відповідні їм цифрові сигнали, придатні для обробки мікропроцесорами та іншими цифровими пристроями.
Для розширення кількості каналів аналого-цифрових перетворювачів використовуються мультиплексори.
Мультиплексори - схеми, які дозволяють вибрати один з декількох входів за вказівкою керуючого цифрового сигналу. За допомогою мультиплексорів, система телеметрії сприймає і ретранслює електричні сигнали від багатьох датчиків одночасно, завдяки процесу ущільнення даних, званому мультиплексуванням. Без них не обійтися в системах збору даних.
Підсистема телеметрії наносупутника призначена для:
· збору телеметричної інформації: температур, сили струмів і напруг;
· записи телеметричної інформації у власний записуючий пристрій;
· передача зібраної телеметричної інформації на наземну станцію управління.
Характеристики телеметрії наносупутника:
· мікроконтролер ПТК: STM32F105;
· кількість АЦП каналів з точністю 24 біт: 8;
· кількість АЦП каналів з точністю 12 біт: 16;
· напруга живлення 2.0 В - 3.6 В.
Як правило, там, де потрібно знімати аналоговий сигнал з більшою точністю, датчики будуть підключені до 24 бітного АЦП, всі інші аналогові датчики підключаються до вбудованого в мікроконтролер АЦП точність якого становить 12 біт. На рисунку 2.1 зображено взаємодію основних елементів підсистема телеметрії наносупутника.
Рисунок 2.1 – Взаємодія основних елементів підсистеми телеметрії
3. Апаратні та програмні засоби для реалізації випробувань ПТК
Найбільш складні сучасні системи телеметрії використовуються в аерокосмічних дослідженнях. Для того щоб досягти надійності та стабільності роботи телеметрії наносупутника, потрібно максимально можливо налагодити та протестувати систему в наземних умовах, перед запуском супутника в космічний простір, в якому складно ввести корекцію в роботі наносупутника.
Для налагодження роботи системи телеметрії використовується наступна схема (рисунок 3.1).
Рисунок 3.1 - Взаємодія основних елементів випробовувань ПТК
В даній моделі, підсистема радіо зв’язку замінена на робочу станцію з якою мікроконтролер з’єднується через USART інтерфейс. Таким чином можна точно проаналізувати обмін даними між пристроями, налагодити прикладний рівень протоколу передачі даних, який потім буде перенесено в наносупутник, в якому цей зв'язок буде організовуватися між мікроконтролером та системою радіо зв’язку, а система радіо зв’язку в свою чергу буде передавати дані телеметрії на наземну станцію.
За допомогою цієї системи можна налагодити аналого-цифровий перетворювач з роботою аналогових датчиків
3.1. Принципи побудови апаратури ПТК
Система телеметрії складається:
1) блок електроніки (БЕ);
2) телеметричні датчики.
Рівень надійності сучасних компонентів, вироблених для так званого «промислового» застосування досить високий і дозволяє застосовувати ці компоненти в бортових системах з 100% попереднім тестуванням.
Пропонується виконати ПТК на основі інтегральних мікросхем від компанії STMicroelectronics. Компанія STMicroelectronics є однією з провідних компаній-виробників електронних компонентів, в тому числі і компонентів для аерокосмічної галузі.
Блок електроніки складається з гальванічно розв'язаних модулів нормалізації вхідних сигналів і процесорного модуля. Живлення модулів нормалізації сигналів здійснюється від вимірюваного ланцюга, що дозволило виключити зі складу ПТК перетворювачі живлення.
Модулі нормалізації сигналів призводять величину і характер вхідного сигналу у відповідність з вхідними характеристиками АЦП процесорного модуля.
Так само модуль забезпечує захист ПТК від короткочасних перенапруг у вимірюваних ланцюгах і гальванічну розв'язку вимірюваних ланцюгів від процесорного модуля і один від одного.
Мікропроцесорний модуль забезпечує опитування модулів ініціалізації відповідно до заданої циклограми, зберігання отриманої інформації необхідний час і в необхідному обсязі. Так само забезпечує обмін інформацією і прийом команд по інтерфейсах стандарту USART.
Сигнальні датчики типу «незапитаний контакт» винесені в окрему групу і мають гальванічний зв'язок з процесорним модулем. Взаємодія модулів нормалізації сигналів і процесорного модуля показано нижче (рисунок 3.2).
Рисунок 3.2 - Взаємодія модулів нормалізації сигналів і процесорного модуля
3.2. Відлагоджувальна плата STM32 VL DISCOVERY
За основу булу вибрано відлагоджувальна плата фірмі STMicroelectronics (ST) STM32 VL DISCOVERY.
STM32 VL DISCOVERY – недорогий відлагоджувальний набір на базі мікроконтролера STM32F100, призначений для вивчення можливостей мікроконтролерів сімейства STM32 Value Line. Робота з платою підтримується в інтегрованому середовищі розробки компаній: IAR, Keil, Atollic.
На платі встановлений мікроконтролер в 64-вивідному корпусі LQFP працює на частоті 24 МГц. Плата має конектор розширення, який дозволяє підключати плату до інших відлагоджувальних платформ, для більш глибокого аналізу роботи периферії мікроконтролера, або до макетним плат для прототипування.
Для внутрішньосхемного програмування і відлагоджування на платі передбачено відладчик / програматор ST-Link, який може використовуватися і як окремий пристрій.
Особливості плати STM32VLDISCOVERY:
встановлений мікроконтролер STM32F100RBT6B:
· 32-бітне ядро Cortex-M3, робоча частота 24 МГц;
· Flash-пам’ять програм 128 Кбайт;
· RAM 8 Кбайт;
· таймер з розширеними функціями;
· шість таймерів загального призначення;
· комунікаційні інтерфейси:
· 2 × SPI, 2 × I2C, 3 × USART;
· 16-канальний 12-бітний АЦП;
· двоканальний 12-бітний ЦАП;
· напруга живлення 2.0 В – 3.6 В.
Додатково:
· живлення можливе від USB інтерфейсу або від зовнішнього джерела;
· два світлодіоди індикації стану;
· два користувальницьких світлодіода, призначена для користувача кнопка та кнопка RESET
· роз’їм розширення – доступні всі лінії вводу / виводу мікроконтролера, може використовуватися для підключення до макетної платі або інший налагоджувальної системі [1].
В таблиці 3.1 приведено опис частини виводів відлагоджувальної плати
STM32 VL DISCOVERY.
Таблиця 3.1 – Опис виводів відлагоджувальної плати
№ ніжки | № ніжки МК | Назва ніжки | ТИП | Головна функція | Альтернативна функції |
12/31/47/63 | GND | - | Vss | ||
- | NC | - | - | ||
3V3 | - | - | |||
VBAT | S | VBAT | |||
PC13 | I/O | Port C13 | TAMPER-RTC | ||
PC14 | I/O | Port C14 | OSC32_IN | ||
PC15 | I/O | Port C15 | OSC32_OUT | ||
PD0 | I/O | OSC_IN | |||
PD1 | I/O | OSC_OUT | |||
NRST | I/O | RESET | |||
PC0 | I/O | Port C0 | ADC1_IN10 | ||
PC1 | I/O | Port C1 | ADC1_IN11 | ||
PC2 | I/O | Port C2 | ADC1_IN12 | ||
PC3 | I/O | Port C3 | ADC1_IN13 | ||
PA0 | I/O | Port A0 | WKUP / USART2_CTS/ ADC1_IN0 / TIM2_CH1_ETR | ||
PA1 | I/O | Port A1 | USART2_RTS ADC1_IN1 / TIM2_CH2 | ||
PA2 | I/O | Port A2 | USART2_TX/ ADC1_IN2 / TIM2_CH3/ TIM15_CH1 | ||
PA3 | I/O | Port A3 | USART2_RX/ ADC1_IN3 / TIM2_CH4 / TIM15_CH2 | ||
PA4 | I/O | Port A4 | SPI1_NSS/ ADC1_IN4 USART2_CK / DAC1_OUT | ||
PA5 | I/O | Port A5 | SPI1_SCK/ ADC1_IN5 / DAC2_OUT |
Таблиця 3.1 (продовження)
PA6 | I/O | Port A6 | SPI1_MISO/ ADC1_IN6 / TIM3_CH1 | ||
PA7 | I/O | Port A7 | SPI1_MOSI ADC1_IN7 / TIM3_CH2 | ||
PC4 | I/O | Port C4 | ADC1_IN14 | ||
PC5 | I/O | Port C5 | ADC1_IN15 | ||
PB0 | I/O | Port B0 | ADC1_IN8/ TIM3_CH3 | ||
PB1 | I/O | Port B1 | ADC1_IN9/ TIM3_CH4 | ||
PB2 | I/O | Port B2 / BOOT1 | |||
GND |
Вище сказано, що плата базується на мікроконтролері STM32F100, але в наносупутнику планується використовувати мікроконтролер STM32F105, він може працювати на більш вищій частоті, має більший об’єм оперативної та програмної пам’яті ніж STM32F100, але ці мікроконтролери виробляє одна й та ж фірма, вони базуються на 32 бітному ядрі Cortex-M3, а це, каже про те, що значної різниці в їхньому програмуванні не повинно виникнути. Тому, відлагоджувальна плата STM32 VL DISCOVERY повністю задовольняє наші цілі, через що вона була і вибрана [2].
3.3. Середовище розробки IAR Embedded Workbench for ARM
IAR Embedded Workbench for ARM (рисунок 3.3) – представляє собою потужне інтегроване середовище розробки і налагодження програм для мікроконтролерів ARM за допомогою мови C, C++ і асемблера. IAR забезпечує розширену підтримку пристроїв ARM і створює дуже компактний і ефективний код. В неї входять компілятор мов С, C++, асемблера, компонувальник і відладчик, при цьому можлива взаємодія із зовнішніми програмами. Вбудований редактор спеціально налаштований на синтаксис мови С, а додаткові утиліти і хороша вбудована система допомоги додатково полегшують написання програм.
Редактор вихідного тексту:
· автоматичне виділення помилок;
· виділення директив C / C + +;
· розвинені засоби пошуку.
Компілятор мови C, C ++:
· один з кращих компіляторів по ефективності коду;
· повна сумісність з ANSI C;
· алгоритми оптимізації спеціально для ARM-мікроконтролерів.
Рисунок 3.3 – IAR Embedded Workbench for ARM
Симулятор і відладчик:
· налагодження в кодах C, C + + і асемблера;
· точки зупинки;
· перегляд областей CODE, DATA, EEPROM і регістрів введення / виводу.
Підтримуються ядра: ARM7 (ARM7TDMI, ARM7TDMI-S, ARM720T), ARM7E (ARM7EJ-S), ARM9 (ARM9TDMI, ARM920T, ARM922T, ARM940T), АРМ9Э ARM926EJ-S, ARM946E-S, ARM966E-S, ARM968E-S), ARM10E (ARM1020E, ARM1022E), ARM11, SecurCore (SC000, SC100, SC110, SC200, SC210, SC300), Cortex-M1, Cortex-M3, Cortex-R4, Cortex-M0, Cortex-M4, Xscale.
Через всі ці переваги було обрано використовувати середовище розробки IAR Embedded Workbench for ARM, серед Keil та Atollic.
3.4. Бібліотека CMSIS
Для програмування мікроконтролера використана бібліотека CMSIS (Cortex Microcontroller Software Interface Standard). CMSIS це стандартна для всіх Cortex-M3 бібліотека. Це єдиний стандарт опису ресурсів мікроконтролеру. Завдяки їй легко переносити код з одного виду ARM Cortex контролерів на інший. Звичайно периферія у всіх ARM контролерів різна, навіть у межах однієї лінійки, але от доступ до регістрів периферії з мови С, С++ стандартизований і описаний в CMSIS. А те, що єдине для всіх Cortex M3 – ядро, контролер переривань і системний таймер, єдине і у всіх CMSIS і при перенесенні з контролера на контролер правки коду не вимагається взагалі.
Бібліотека складається з наступних файлів:
Опис ядра стандартні для всіх Cortex M3:
· core_cm3.c;
· core_cm3.h.
Опис конкретного контролера (точніше сімейства), лежить в CMSIS бібліотеці конкретного сімейства і завантажується з офіційного сайту виробника контролера www.st.com, в нашому випадку програмується контролер STM32F100RB ось тут можна завантажити останню версію CMSIS для данного контролеру http://www.st.com/internet/mcu/product/164499.jsp. Приведемо короткий опис бібліотеки:
· stm32f10x.h – файл опису периферії, а також структури доступу до них. Все саме потрібне і важливе лежить в даному файлі.
· system_stm32f10x.c – функції CMSIS. Їх небагато (SystemInit, SystemCoreClockUpdate, SystemCoreClock), стосуються вони тільки стартової ініціалізації периферії і роботі з установкою тактової частоти. Вони стандартні для всіх CMSIS для M3 сімейства;
· system_stm32f10x.h – заголовні файли для функцій CMSIS [3].
Бібліотека CMSIS дуже корисна в розробці програмної частини для мікроконтролеру, вона значно спрощує процес програмування контролеру. Для того щоб підключити цю бібліотеку в середовище розробки IAR, потрібно спочатку завантажити та розпакувати архів CMSIS. В ньому знаходимо папку «STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\CoreSupport» файл «core_cm3.c», У своєму IAR проекті, в папці з вихідними файлами, створюємо папку CMSIS і копіюємо сюди файл core_cm3.c. Копіюємо туди ж файл «STM32F10x_StdPeriph_Lib_V3.4.0\Project\STM32F10x_StdPeriph_Template\system_stm32f10x.c».
Аналогічно описаному вище, створюємо групу CMSIS в групі src в дереві проекту і додаємо ці файли в проект в директорію src\CMSIS. У папці з проектом, створюємо папку «inc» і копіюємо в неї файли «stm32f10x.h» і «system_stm32f10x.h» з папки «STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\ CMSIS\CM3\DeviceSupport\ST\STM32F10x» і файл «core_cm3.h» з папки «STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\CoreSupport». Аналогічно додаємо групу і ці файли в дерево проекту. І, нарешті, створюємо в папці з проектом папочку startup, копіюємо в неї файл startup_stm32f10x_md_vl.s з папки «STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\DeviceSupport\ ST\STM32F10x\startup\iar» і додаємо групу і цей файл у проект.
Останній файл є програмою на мові асемблер яка містить в собі найбільшу низькорівневу ініціалізацію контролера. У ньому міститься таблиця векторів переривань, ініціалізація стека, виклик функції SystemInit() з бібліотеки CMSIS і наступний виклик функції main() нашої програми [4]. У підсумку, повинна вийти приблизно наступна ієрархія файлів проекту (рисунок 3.4)
Рисунок 3.4 – Проект з підключеною бібліотекою CMSIS
3.5. Бібліотека Standard Peripherals Library
При розробці програмної частини для мікроконтролеру було використано та підключено до проекту Standard Peripherals Library.
Standard Peripherals Library – це бібліотека представляється компанією ST Microelectronics для використання зі своїми мікроконтролера. Дана бібліотека, як випливає з її опису самим виробником, призначена лише в якості керівництва до робот з контролером, але може полегшити програмування і скоротити час розробки проекту.
Бібліотека поставляється в вихідному коді, і на даний момент доступна версія 3.4.0 від 15 жовтня 2010р.
По суті це просто набір функцій, які дозволяють набагато легше і простіше робити основні моменти програмування. В основному, упор зроблений на функції ініціалізації периферії, її вмикання / вимикання, опитування стану і т.д. У комплекті йде невеликий довідник у форматі «.chm». Також присутня директорія з різними прикладами використання периферії контролера, число яких досить велика. Приклади розбиті тематично за директоріями і непогано описані, що допомагає вивчати даний мікроконтролер. При використанні Standard Peripherals Library виділяються наступні переваги:
· код стає простіший, для програмування не потрібно знати назву регістри з якими потрібно працювати;
· код став зрозумілішим, тому що, ми використовували функції з назвами які логічно відповідають виконанню функції;
· написати такий код програмісту набагато простіше і швидше ніж читати технічну документацію, щоб довідатися, які регістри та як потрібно встановлювати.
Недоліки використання:
· код стає повільнішим (як мінімум на виклики функцій, передачу їм параметрів і повернення з них);
3.6. Аналого-цифровий перетворювач
Аналого-цифровий перетворювач (АЦП) — пристрій, що перетворює вхідний аналоговий сигнал в дискретний код (цифровий сигнал). Зворотне перетворення здійснюється за допомогою ЦАП (цифро-аналогового перетворювача). Як правило, АЦП — електронний пристрій, що перетворює напругу в двійковий цифровий код [5].
Розрядність АЦП характеризує кількість дискретних значень, які перетворювач може видати на виході. Вимірюється в бітах. Наприклад, АЦП, здатний видати 256 дискретних значень (0..255), має розрядність 8 бітів, оскільки 28 = 256. На нашій ідлагоджувальний платі встановлений мікроконтролер з 12 бітним АЦП, тому, він може максимально видати 4096 дискретних значень (0..4095).
Розрядність може бути також визначена в величинах вхідного сигналу і виражена, наприклад, в вольтах. Розрядність за напругою дорівнює напрузі, що відповідає максимальному вихідному коду, який ділиться на кількість вихідних дискретних значень.
Наприклад:
· Діапазон вхідних значень = від 0 до 10 вольт;
· Розрядність АЦП 12 бітів: 212 = 4096 рівнів квантування;
· Розрядність за напругою: 10/4096 = 0.00244 вольт = 2.44 мв.
На практиці розрядність АЦП обмежена відношенням сигнал/шум вхідного сигналу. При великій інтенсивності шумів на вході АЦП розрізнення сусідніх рівнів вхідного сигналу стає неможливим, тобто погіршується розрядність. При цьому реальний досяжна точність описується ефективною кількістю розрядів (effective number of bits — ENOB), яка менше, ніж реальна розрядність АЦП. При перетворенні сильно зашумленного сигналу молодші біти вихідного коду практично непридатні, оскільки містять шум. Для досягнення заявленої розрядності відношення С/Ш вхідного сигналу повинне бути приблизно 6 дб на кожен біт розрядності.
3.7. Використання АЦП мікроконтролеру STM32
Залежно від моделі, в мікроконтролері STM32 може бути вбудовано один або два аналогово-цифрових перетворювача. АЦП які живляться окремою напругою, що у залежності типу корпусу може перебувати в межах 2.4 … 3.6В. Джерело опорної напруги (ДОН) АЦП з’єднаний або внутрішньо з напругою живлення АЦП, або зі спеціальними зовнішніми виводами. АЦП характеризується 12-бітною роздільною здатністю і частотою перетворення 1МГц. У нього є до 18 мультиплексованих каналів, 16 з яких можна використовувати для вимірювання зовнішніх сигналів. Решта два канали пов’язані з вбудованим датчиком температури і внутрішнім ІОН [6].
Рисунок 3.5 –12-бітний АЦП мікроконтролера
АЦП підтримує можливість роздільного програмування часу перетворення в кожному з каналів (рисунок 3.6). Всього передбачена можливість вибору 8 дискретних значень з діапазону від 1.5 до 239.5 циклів.
Рисунок 3.6 – Частота перетворення задається індивідуально для кожного з каналів АЦП
Для конфігурації АЦП використовується Standard Peripherals Library бібліотека, яка представляється компанією ST Microelectronics. В ній використовуються наступні функції та структури:
Структура ADC_InitTypeDef яка включає наступні властивості конфікурації АЦП:
· ADC_ContinuousConvMode – встановлюється режим перетворення: багато разовий або одинарний, ENABLED / DISABLED;
· ADC_DataAlign – вирівнювання даних вліво або вправо;
· ADC_Mode – Налаштовує АЦП працювати в незалежному чи двоканальному режимі;
· ADC_NbrOfChannel – встановлює кількість каналів АЦП з яких буде відбуватися перетворення;
· ADC_ScanConvMode – автоматичне сканування доступних каналів
Використовується наступний функціонал:
· void ADC_StructInit(ADC_InitTypeDef * ADC_InitStructure) – функція ініціалізації структури;
· void ADC_Init(ADC1, &ADC_InitStructure) – ініціалізація АЦП 1 за допомогою структури яка ініціалізується завчасно;
· void ADC_TempSensorVrefintCmd(ENABLE) – вмикання вбудованого 17 каналу АЦП, до якого під’єднаний внутрішній ермоопір;
· void ADC_Cmd(ADC1, ENABLE) – функція вмикає АЦП.
3.8. Використання USART
Інтерфейс USART (універсальний синхронно-асинхронний прийомо-передавач (УСАПП)) – дуже гнучкий модуль послідовного зв’язку. USART підтримує повно дуплексну асинхронну або синхронну передачу даних. USART також може працювати в режимі «ведучий SPI» для роботи з шиною SPI.
Передача даних виконується посилками. Формат посилки може бути адаптований під різні стандарти. USART підтримує буферизацію даних в обох напрямках, що забезпечує безперервність передачі даних, без будь-яких затримок між посилками. Після завершення прийому і передачі, можуть генеруватися переривання по окремих векторах. Це дозволяє повністю керувати передачею даних по перериваннях. Помилки в посилці і переповнення буферу виявляються апаратно, про що сигналізують окремі прапори статусу. При необхідності, також можна використовувати функції генерації та перевірки паритету (парність або непарність).
Незважаючи на те, що порти послідовного зв’язку вже практично не використовуються в ПК, вони все ще залишаються популярними в багатьох вбудованих застосуваннях для організації простого інтерфейсу послідовного зв’язку. Його висока популярність обумовлена властивою йому надійністю роботи і простотою використання. У МК STM32 інтегрується до 3 модулів УСАПП, кожен з яких підтримує кілька розширених режимів роботи, що дозволяють використовувати МК в найсучасніших комунікаційних застосуваннях. Всі три УСАПП здатні передавати дані на швидкості до 4.5 Мбіт/сек. Кожен з них також повністю програмується, в т.ч. розмір переданих даних (8 або 9 біт), передача біта паритету чи стоп-біта, а також швидкість передачі. Один УСАПП підключений до шини APB2, яка здатна синхронізуватися частотою до 72 МГц. А решта пов’язані із 36-мегагерцевою шиною APB1.
Кожен УСАПП має власний генератор швидкості зв’язку з можливостями дробового розподілу частоти. На відміну від звичайних дільників частоти, такий генератор дозволяє отримати стандартні швидкості зв’язку при будь-якій частоті синхронізації шини. Також як і інші модулі послідовних інтерфейсів, кожен модуль УСАПП оснащений двома каналами прямого доступу до пам’яті (ПДП) для двобічної зв’язку з буфером даних. У конфігурації УАПП, модуль УСАПП може працювати в декількох режимах роботи. УСАПП має можливість роботи з одно провідною пів дуплексною лінією, використовуючи для цього тільки вивід Tx (рисунок 3.7). Для зв’язку з модемами, а також для апаратного керування передачею потоку даних, у кожного УСАПП передбачені додаткові лінії управління CTS і RTS.
Рисунок 3.7 - Робота з одно провідною пів дуплексною лінією зв’язку
Крім роботи в ролі високошвидкісного інтерфейсу УАПП, кожен УСАПП може бути переведений в режим синхронного зв’язку. Його можна використовувати для зв’язку з зовнішніми пристроями введення-виведення (ПВВ), оснащеними SPI-сумісним інтерфейсом, по 3-провідній лінії (рисунок 3.8). Працюючи в цьому режимі, УСАПП працює в ролі ведучого шини SPI і підтримує можливість програмування полярності і фази синхронізації. Завдяки цьому, можливий зв’язок практично з будь-якою SPI ІС.
Рисунок 3.8 – Синхронний режим УСАПП в ролі додаткових ведучих інтерфейсів SPI
Для конфігурації USART використовується Standard Peripherals Library бібліотека, яка представляється компанією ST Microelectronics. В ній використовуються наступні функції та структури:
· void USART_Init(USART_TypeDef * USARTx, USART_InitTypeDef * USART_InitStructure) – ініціалізує USARTx (USART1, USART2, USART3) інтерфейс відповідно до заданих параметрів в USART_InitStruct структурі.
· void USART_Cmd(USART_TypeDef * USARTx, ENABLE) – функція яка вмикає USARTx;
· void USART_SendData(USARTy, One_byte) – функція записує в USARTy інтерфейс, байт One_byte, для передачі;
· uint16_t USART_ReceiveData(USARTy) – функція отримує один байт з інтерфейсу USARTy;
· FlagStatus USART_GetFlagStatus(USARTy, USART_FLAG_TC) – перевірка на активну передачу даних через інтерфейс USARTy;
· FlagStatus USART_GetFlagStatus(USARTy, USART_FLAG_RXNE)– перевірка на активний прийом даних через інтерфейс USARTy.
Структура USART_InitStruct має наступні властивості:
· USART_BaudRate – швидкість передачі даних;
· USART_HardwareFlowControl – вказує на апаратне керування потоком. Режим може бути включений або виключений;
· USART_Mode – конфігурує дозвіл на прийом та передачу даних;
· USART_Parity – Установка режиму парності / непарності. Біт парності служить для контролю правильності передачі даних.
· USART_StopBits – Встановлює кількість стопових біт. Служать паузою між кадрами даних. Якщо стоповий біт один, то пауза між кадрами менша і швидкість передачі даних вища. Якщо їх два, то пауза буде довша.
· USART_WordLength – встановлює кількість біт даних. Може набувати 8 … 9 бітам даним.
3.9. З’єднання мікроконтролеру з робочою станцією
Для з’єднання мікроконтролера з робочою станцією було використано USB-USART перетворювач (рисунок 3.9). Інтерфейс USB був вибраний через те, що в сучасних персональних комп’ютерах та ноутбуках відсутній послідовний COM порт, через їхню застарілість.
Рисунок 3.9 – USB-USART
Даний USB-USART конвертер побудований на FT232R мікросхемі. Надійна, стабільна, яка підтримується усіма операційними системами за замовчуванням (рисунок 3.10).
Рисунок 3.10 – Принципова схема USB-USART
Якщо є можливість доступу до COM порта (RS-232 інтерфейс), можна обійтися без USB. Використовуючи мікросхему MAX232. По суті RS-232 і є UART (як в мікроконтролерах), тільки там 10-12 Вольт замість потрібних нам 5В, що потрібно узгодити. Для цього застосовується мікросхема MAX232 (рисунок 3.11).
Рисунок 3.11 – Принципова схема RS-232-USART
Робоча станція з мікроконтролером з’єднуємо хрест-навхрест приймач з передавачем (рисунок 3.12).
Рисунок 3.12 – З’єднання робочої станції з мікроконтролером
Після такого з’єднання мікроконтролера з робочою станцією можна організовувати надійний, неперервний, синхронний чи асинхронний обмін даними між пристроями.
4. Програмна реалізація системи
4.1. Програмне забезпечення мікроконтролеру
Як раніше було сказано, для розробки програми для мікроконтролера, вибрано потужне середовище розробки IAR Embedded Workbench використовуючи мову С [8].
При подачі напруги живлення на мікроконтролер він запускається та відбувається ініціалізація всієї периферії, що використовується для роботи телеметрії, з головної функції програми int main(void) виконується функція void InitAll(void), в якій послідовно виконуються функції void InitGPIO( void), void InitUSART( void), void InitADC( void), відповідно, ці функції ініціалізують цифрові порти введення-виведення загального призначення, універсальний синхронно-асинхронний прийомо-передавач (УСАПП) та аналого-цифрового перетворювача. Розглянемо основні моменти в ініціалізації периферії мікроконтролера.
Функція void InitGPIO( void) використовується для конфігурації цифрових портів введення-виведення загального призначення. Кожна цифрова лінія введення-виведення може бути сконфігурована як лінія на введення чи на виведення загального призначення або альтернативну функцію. Порти мікроконтролера позначаються буквами A … E і сумісні з напругою 5В. Передбачені відповідні регістри, що дозволяє конфігурувати ніжки порта. Після завершення конфігурації, доступ до зміни можна заблокувати. У кожного порта є два 32-бітових конфігураційних регістра. Спільно вони утворюють 64-бітний конфігураційний регістр. Ці 64 біта розділені на 4-бітні поля, що дозволяють налаштувати відповідну їм лінію введення-виведення. У свою чергу, 4-бітове поле конфігурації складається з 2-бітного поля режиму і 2-бітного поля конфігурації. Поле режиму дозволяє вказати, в якому напрямку працює лінія: на введення або на виведення, а поле конфігурації дозволяє налаштувати характеристики управління:
· якщо лінія налаштована як вхід, на неї можна подавати логічний нуль чи логічну одиницю, використовувати як АЦП вхід;
· лінія, налаштована на вивід, може бути або двотактною, або з відкритим стоком. Для ліній виводу можна також вказати її максимальну швидкодію: 2, 10 або 50 МГц.
Для того щоб налаштувати цифрові порти введення-виведення загального призначення, в нашому випадку, спочатку вмикається тактування порта «С» викликаючи функцію RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE). Після цього створюється та ініціалізується структура GPIO_InitStructure типу GPIO_InitTypeDef. В цій структурі вказується, що порти PC9 та PC8 працюють на вихід. До цих портів під’єднанні два вбудованих у відлагоджувальну плату світлодіоди. Використання цих двох ідбувається буде сигналізувати користувача про робочу дію системи, тобто, якщо світлодіоди блимають система працює. Структура GPIO_InitTypeDef має наступні властивості:
· GPIO_Pin – встановлює які саме ніжки порта будуть конфігуруватися. Цій властивості можна присвоїти як і конкретну ніжку, наприклад GPIO_Pin_6, так і перелік всіх ніжок GPIO_Pin_All;
· GPIO_Speed – максимальна швидкодія порта. Може набувати GPIO_Speed_2MHz, GPIO_Speed_10MHz, GPIO_Speed_50MHz, відповідно може працювати з максимальною частотою 2МГц, 10МГц, 50МГц;
· GPIO_Mode – встановлює режим роботи порта введення/виведення.
В нашому випадку GPIO_InitStructure структура налаштована наступним чином:
· GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
· GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
· GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP.
Для того щоб налаштування вступили в дію потрібно виконати функцію GPIO_Init( GPIOC, &GPIO_InitStructure), яка отримує два параметри, назву порту, що ініціалізується і структуру з налаштуваннями.
Також потрібно конфігурувати виводи мікроконтролера для роботи USART та ADC периферії, для цього створюються, ще структури типу GPIO_InitTypeDef.
Налаштування п’ятого вивода порта «С» як цифровий вхід, що використовується для аналого-цифрового перетворювача 15 каналу:
· GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
· GPIO_InitStructure.GPIO_Speed = (GPIOSpeed_TypeDef)0;
· GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
· GPIO_Init (GPIOC, &GPIO_InitStructure).
Конфігурація виводів Tx, Rx для USART1 інтерфейсу проводиться наступним чином. Для налаштування Tx виводу:
· GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; - конфігурується 9 ніжка порта «А». Це Transmitted Data (Tx), передавальний вивід, що буде використовуватися для передачі даних робочій станції.
· GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
· GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
· GPIO_Init(GPIOA, &GPIO_InitStructure).
Для налаштування Rx виводу, використовується та сама структура, що і для Tx вивода, змінюються наступні властивості:
· GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
· GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
· GPIO_Init(GPIOA, &GPIO_InitStructure).
Після цих дій конфігурація цифрових портів введення-виведення загального призначення завершена. Тепер можна приступити до налаштовувати USART та ADC периферію.
Функція InitUSART(void) використовується для конфігурації USART1 інтерфейсу до якого підключений USB-USART перетворювач. Після того як налаштовані порти, до яких буде під’єднаний USART кабель, можна налаштувати асинхронну роботу інтерфейсу, тобто налаштувати переривання яке буде викликатися при обміні даними між робочою станцією та мікроконтролером. Для цього потрібно налаштувати контролер вкладених векторних переривань (NVIC) – це стандартний модуль ядра Cortex. Спочатку створюється структура NVIC_InitStructure типу NVIC_InitTypeDef, яка згодом буде ініціалізувати переривання для USART1 інтерфейсу. Властивості цієї структури налаштовуються наступним чином:
· NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
· NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
· NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
· NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
Викликом функції NVIC_Init(&NVIC_InitStructure) ідбувається ініціалізація переривань. Після цього налаштовується система тактування, після якої відбувається конфігурація USART1 інтерфейсу:
· USART_BaudRate = 115200; - встановлюється швидкість роботи інтерфейсу 256000 бод;
· USART_WordLength = USART_WordLength_8b; - довжина даних однієї посилки 8 біт;
· USART_StopBits = USART_StopBits_1; - кількість стопових бітів дорівнює одному;
· USART_Parity = USART_Parity_No; - облік парності при передачі даних не ведеться;
· USART_HardwareFlowControl = USART_HardwareFlowControl_None; - апаратне керування потоком вимкнуте;
· USART_Mode = USART_Mode_Rx | USART_Mode_Tx; - налаштування режиму роботи USART інтерфейсу. В даному випадку, він працює як на прийом, так і на передачу даних.
Викликом функції USART_Init(USART1, &USART_InitStructure), структура USART_InitStructure ініціалізує інтерфейс USART1.
Після цього, при обміні даних між робочою станцією та мікроконтролером буде виконуватися переривання void USART1_IRQHandler (void) (рисунок 4.1), в якому перевіряється, якщо функція USART_GetITStatus(USART1, USART_IT_RXNE) повертає значення SET в цьому випадку йде прийом даних від робочої станції, відповідно, якщо USART_GetITStatus(USART1, USART_IT_TXE) повертає SET, йде передача даних робочій станції.
Рисунок 4.1 – Обробник УСАПП переривання
функція InitADC(void) використовується для ініціалізації та конфігурації вбудованого 12 бітного аналого-цифрового перетворювача. Спочатку конфігуруються виводи PC5 та PB0 мікроконтролера як аналогові входи. До цих виводів під’єднаний потенціометр та термоопір. Після того як ніжки контролера сконфігуровані, створюється та ініціалізується структура ADC_InitStructure яка і буде конфігурувати АЦП. Також виконується функція ADC_TempSensorVrefintCmd(ENABLE) яка вмикає 17 канал АЦП мікроконтролера, до якого під’єднаний вбудований термо датчик. Приведемо ініціалізацію властивостей структури ADC_InitStructure:
· ADC_Mode = ADC_Mode_Independent;
· ADC_ScanConvMode = DISABLE;
· ADC_ContinuousConvMode = DISABLE;
· ADC_ExternalTrigConv=DC_ExternalTrigConv_None;
· DataAlign = ADC_DataAlign_Right;
· ADC_NbrOfChannel = 1;
Потім викликається функція ADC_Init(ADC1, &ADC_InitStructure) яка ініціалізує аналого-цифровий перетворювач. Для вмикання АЦП викликається ADC_Cmd(ADC1, ENABLE).
Після того, коли вся периферія контролера сконфігурована, програма переходить на виконання нескінченого циклу while(1){}, в якому по черзі змінюється потенціал з високого рівня на низький, і навпаки, на виводах PC9 та PC8 до яких підключені світлодіоди, що заставляє їх блимати. Високий рівень на виводі встановлюється за допомогою функції GPIO_SetBits( GPIOC, GPIO_Pin_9), де GPIOC вказує на регістр порту С, а GPIO_Pin_9 вказує на 9 ніжку порта, відповідно низький потенціал встановлюється за допомого функції GPIO_ResetBits( GPIOC, GPIO_Pin_9). Щоб було помітно, що світлодіод блимає, потрібно виконати затримку між встановленням низького та високого потенціалу, тому між цими функціями виконується delay_ms(20), затримка в 20 мілісекунд.
Наступним йде перетворення аналогового сигналу, викликом функції GetADC1Channel(ADC_Channel_15) з 15 каналу АЦП, отримані цифрові данні ділимо на 4095 (максимальне значення 12 біт АЦП) і множимо на 3.3 (максимальне значення напруги, яке можна подати на вхідний канал АЦП) в результаті отримуємо величину напруги яка приходить на 15 вивід контролеру.
Таким самим чином виконуються два інших переретворення температур, викликом двох функцій GetADC1Channel(ADC_Channel_8) з 8 каналу АЦП та GetADC1Channel17( ADC_Channel_16 ) з 16, вбудованого в мікроконтролер термо датчика (рисунок 4.2).
Рисунок 4.2 – Виконання алгоритму роботи мікроконтролера
Коли від робочої станції надходять дані, виникає USART1 переривання void USART1_IRQHandler(void), в якому виконується прийом одного байту за допомогою USART_ReceiveData(USART1) функції. Контролер реагує і дає відповідь робочій станції, якщо він отримав «1», «2», «3» відповідно він відправляє по USART перетворенні дані з АЦП, в іншому випадку всі прийняті дані контролером ігноруються.
4.2. Програмне забезпечення робочої станції
Написання програми для робочої станції проводилося в середовищі розробки MS Visual Studio 2008 .NET на мові Visual C# [9].
Для організації зв’язку з мікроконтролером в програмі використовується клас SerialPort. Цей клас використовується для управління файловим ресурсом послідовного порту. Даний клас надає можливості керування введенням-виведенням в синхронному режимі або на основі подій, доступу до стану лінії і станом розриву, а також доступу до властивостей послідовного драйвера. Крім того, функції цього класу можна упакувати у внутрішній об’єкт Stream, доступний через властивість BaseStream, і передавати в класи, використовують потоки. В таблиці 4.1 наведені основні властивості класу. В таблиці 4.2 наведені основні методи класу [7].
Клас SerialPort підтримує наступні кодування: ASCIIEncoding, UTF8Encoding, UnicodeEncoding, UTF32Encoding, а також будь-яке кодування, яке підтримується бібліотекою mscorlib.dll.
Таблиця 4.1 – Властивості класу System.IO.Ports.SerialPort
Назва | Опис |
BaudRate | Отримує або задає швидкість передачі для послідовного порту (у бодах). |
BytesToRead | Отримує число байтів даних, що знаходяться в буфері. |
Таблиця 4.1 (продовження)
BytesToWrite | Отримує число байтів даних, що знаходяться в буфері відправки. |
DataBits | Отримує або задає стандартне число бітів даних у байті. |
Encoding | Отримує або задає кодування байтів для перетворення тексту до і після передачі. |
IsOpen | Отримує значення, що вказує стан об’єкта SerialPort – відкритий або закритий. |
Parity | Отримує або задає протокол контролю парності. |
PortName | Отримує або задає послідовний порт, зокрема, будь-який з доступних портів COM. |
ReadBufferSize | Отримує або задає розмір вхідного буфера SerialPort. |
ReadTimeout | Отримує або задає термін очікування в мілісекундах для завершення операції читання. |
StopBits | Отримує або задає стандартне число стопових бітів у байті. |
WriteTimeout | Отримує або задає термін очікування в мілісекундах для завершення операції запису. |
Таблиця 4.2 – Методи класу System.IO.Ports.SerialPort
Назва | Опис |
Close | Закриває з’єднання порту, привласнює властивості IsOpen значення false і знищує внутрішній об’єкт Stream. |
Open | Відкриває нове з’єднання послідовного порту. |
GetPortNames | Отримує масив імен послідовних портів для поточного комп’ютера. |
Read(Byte[], Int32, Int32) | Зчитує з вхідного буфера SerialPort певне число байтів і записує їх у айтів масив, починаючи із зазначеної позиції. |
Таблиця 4.2 (продовження)
ReadByte | Зчитує з вхідного буфера SerialPort один байт у синхронному режимі. |
Write(String) | Записує вказаний рядок в послідовний порт. |
Write(Byte[], Int32, Int32) | Записує вказане число байтів в послідовний порт, використовуючи дані з буфера. |
Після створення об’єкту «sp» цього класу, виконується його ініціалізація наступних властивостей:
· властивість BaudRate – задає швидкість передачі для послідовного порту (в бодах), в нашому випадку 115200;
· властивість StopBits – задає кількість стопових бітів (в байтах), в нашому випадку 1 стоп біт;
· властивість PortName – задає назву порта, до якого підключений мікроконтролер;
· властивість DataBits – кількість біт даних 8;
· властивість Parity – контроль парності вимкнено.
Після ініціалізації об’єкту можна відкрити порт за допомогою методу Open(), відповідно закрити порт можна за допомогою методу Close().
В програмі створено об’єкт «trd» класу Thread. Цей потік починає виконуватися, коли користувач з’єднається з контролером натиснувши кнопку «Підключитися». В цьому потоці виконується надсилання команд мікроконтролеру, за допомогою методу sp.WriteLine(«Command»), в нашому випадку «Command» може набувати: «1», «2», «3» (рисунок 4.3).
При надсиланні контролеру команду «1», він перетворює аналоговий сигнал з каналу АЦП ADC1_IN15 в цифрову інформацію, обчислює напругу і повертає робочій станції результат.
При надсиланні команди «2», контролер перетворює аналоговий сигнал з каналу АЦП ADC1_IN8 в цифрову інформацію, обчислює температуру і повертає робочій станції результат.
Рисунок 4.3 – Опитування мікроконтролера робочою станцією
При надсиланні команди «3», контролер перетворює аналоговий сигнал з каналу АЦП ADC1_IN16 в цифрову інформацію, обчислює температуру вбудованого термометра та повертає робочій станції результат.
Всі перераховані вище команди надсилаються послідовно.
Після надсилання команди контролеру, виконується затримка за допомогою функції Thread.Sleep(TimerInterval) де «TimerInterval» час затримки в мілісекундах, який може задавати користувач. Це потрібно виконувати через відсутність прикладного рівня протоколу обміну даними. Затримка дає час мікроконтролеру на перетворення аналогового сигналу в цифрові данні та на перетворення їх в потрібний результат.
Після затримки відбувається зчитування інформації з порту за допомогою методу sp.ReadExisting(). Всі прийняті данні присвоюються глобальним змінним «strgetV», «strgetT1», «strgetT2» відповідно. В подальшому всі ці змінні використовуються для виведення графіків.
Було написано клас «DrawGraphics» за допомогою якого будуються графіки. В цьму класі використовується системний класс «Graphics». Клас Graphics – це основний клас, необхідний для малювання. Перед тим як малювати лінії і фігури, відображати текст, виводити зображення і керувати ними, необхідно створити об’єкт Graphics. Об’єкт Graphics представляє поверхню малювання і використовується для створення графічних зображень.
Нижче представлені два етапи роботи з графікою.
1. Створення об’єкта Graphics.
2. Використання об’єкта Graphics для малювання ліній і фігур, відображення тексту або зображення і керування ними.
Після створення об’єкту Graphics його можна використовувати для малювання ліній і фігур, відображення тексту або зображення і керування ними. Нижче представлені основні об’єкти, що використовуються з об’єктом Graphics.
· Клас Pen – служить для малювання ліній, контурів і відтворення інших геометричних об’єктів.
· Клас Brush – служить для заливки областей, наприклад фігур, зображень або тексту.
· Клас Font – містить опис фігур, які повинні використовуватися при відображенні тексту.
· Структура Color – містить різні кольори [10].
Так як будується три графіки створено три об’єкта: «obj1», «obj2», «obj3» класу «DrawGraphics». В конструктор об’єктів передається об’єкт класу PictureBox на якому буде малюватися графік.
Для малювання графіків створений окремий таймер «TimerDraw» в якому послідовно викликається метод Draw(float new_y) обєктів «obj1», «obj2», «obj3» де new_y відповідна величина аналогового сигналу в конкретний момент часу (рисунок 4.4).
Рисунок 4.4 – Побудова графіків
Для збереження отриманих даних в базу даних формату Access 2002 – 2003, написаний клас BDAddapter. Було також створено, ще один таймер «TimerWriteToBD», який використовується для додавання нових записів в базу даних. Цей таймер виконується з інтервалом який встановлює користувач через графічне середовище програми. В таймері виконується метод AddToLog(string sensor_id, DateTime date, string value) класу BDAddapter, який і додає в базу даних новий запис, через кожний інтервал роботи таймеру.
5. Методика роботи користувача з системи
5.1. Підключення системи
Для підключення системи потрібно виконати наступні кроки:
· з’єднати USB-USART пристрій з відлагоджувальною платою STM32 VL DISCOVERY за допомогою двох провідного USART кабелю. Так як ми використовуємо USART1 мікроконтролеру на платі STM32 VL DISCOVERY ми підключаємо до виводів PA9 (USART1_TX) та PA10 (USART1_RX);
· Підключити аналогові датчики до входів мікроконтролеру. В даному випадку використовуються виводи PC5 (ADC1_IN15) до якого підключається потенціометр та PB0 (ADC1_IN8) до якого підключається термоопір;
· Підключити USB-USART пристрій до робочої станції за допомогою USB кабелю, через який буде проходити обмін даними між мікроконтролером та робочою станцією. Повинен загорітися червоний світлодіод живлення.
· Підключити відлагоджувальну плату STM32 VL DISCOVERY до робочої станції в USB інтерфейс, через який буде живитися плата з контролером. Повинен загорітися червоний світлодіод живлення.
5.2. Запуск системи
Спочатку потрібно запустити головний додаток на робочій станції UART.exe відкриється головне вікно (рисунок 5.1)
Рисунок 5.1 – Головне вікно програми
Після цього потрібно налаштувати USART з’єднання з мікроконтролером, для цього потрібно натиснути на кнопку «Налаштування USB – USART» з’явиться вікно (рисунок 5.2)
Рисунок 5.2 – Налаштування з’єднання
В цьому вікні потрібно вибрати порт до якого підключений пристрій та швидкість обміну даними по замовчуванню залишаємо 115200 та тиснемо кнопку «ОК».
Тепер можна налаштувати частоту запису прийнятих даних від мікроконтролеру в базу даних, для цього в головному меню вибираємо «History > Налаштування запису» (рисунок 5.3)
Рисунок 5.3 – Вибір «Налаштування запису»
Відкриється діалогове вікно «Налаштування запису в БД» (рисунок 5.4).
Рисунок 5.4 – Вікно «Налаштування запису в БД»
В цьому вікні встановлюється період запису в базу даних. Можна вимкнути запис в базу даних знявши галочку опції «Увімкнути запис телеметрії» яка знаходиться в головному мені програми в меню «History».
Після цього можна встановити період роботи потоку та таймеру в яких виконується опитування мікроконтролеру та промальовується графіки. Налаштування програми завершено, можна натиснути кнопку «підключитися» після чого відбудеться обмін даними з мікроконтролером.
В головному вікні програми є три вкладки: «Напруга», «Термометр 1», «Термометр 2 (вбудований)».
На вкладці «Напруга» малюється графік напруги від 0 до 3.3 Вольта, що знімає АЦП мікроконтролера до якого підключений потенціометр на 100кОм і включений як дільник напруги (рисунок 5.5).
На вкладці «Термометр 1» малюється графік зміни температури, що знімає АЦП мікроконтролера до якого підключений термоопір.
На вкладці «Термометр 2» малюється графік зміни температури, що знімає АЦП до якого підключений вбудований термометр мікроконтролеру. Цей графік показує температуру мікроконтролеру (рисунок 5.6).
Рисунок 5.5 – Графік зміни напруги
Рисунок 5.6 – Графік зміни температури
Якщо встановлена галочка «Увімкнути запис телеметрії», вся отримана телеметрія записується в базу даних формату «Access 2002 – 2003», файл «Log_telemetry.mdb». Використовуючи Microsoft Office Access ми можемо переглянути структури цієї бази (рисунок 5.7).
Рисунок 5.7 – Відображення інформації в базі даних
В базі даних є табличка «main» в якій є три поля: «id_sensor», «DateTime_», «value_».
Відповідно: «id_sensor» – назва датчика з якого отримано значення «value_» в конкретний час «DateTime_».
Висновки
В даній роботі було розроблено програмні засоби для комп'ютера на мові С#, програма відсилає команду мікроконтролеру через USART інтерфейс, отримує від нього данні і будує графіки температур, та програмні засоби для мікроконтролера на мові С використовуючи середовище розробки IAR Embedded Workbench. Було проведено з'єднання та обмін даними мікроконтролера з персональним комп’ютером через USB-UART інтерфейс. Мікроконтролер за допомогою аналого-цифрового перетворювача знімає інформацію з датчиків різних типів, яку передає комп’ютеру для збереження та аналізу отриманих даних. На основі останніх можна проводити дослідження і випробування, зробити певні висновки: правильно вибрати датчики, які в подальшому будуть використовуватися в підсистемі телеметричного контролю наносупутника, та налагодити роботу мікроконтролера з ними.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Отладочный набор ST Microelectronics STM32 VL DISCOVERY “Основные параметры” [Електронний ресурс]. — Режим доступу: http://www.rlocman.ru/op/tovar.html?di=66950&/STM32VLDISCOVERY
2. ST Microelectronics “STM32F 32-bit MCUs” [Електронний ресурс]. — Режим доступу: http://www.st.com/internet/mcu/subclass/ 1169.jsp
3. Электроника для всех “CMSIS и Standard Peripherals LibraryPrint” [Електронний ресурс]. — Режим доступу: http://easyelectronics.ru/ arm-uchebnyj-kurs-keil-cmsis-sozdanie-proekta.html
4. Электроника для всех “CMSIS”[Електронний ресурс]. — Режим доступу: http://easyelectronics.ru/arm-uchebnyj-kurs-iar-ewarm-sozdanie-proekta-chast-2-cmsis-i-standard-peripherals-library.html
5. Silicon Laboratories (SiLabs) “Как работают аналогово-цифровые преобразователи и что можно узнать из спецификации на АЦП?” [Електронний ресурс]. — Режим доступу: http://www.efo.ru/Silabs.pl
6. Справочные данные - электронные компоненты “АЦП”[Електронний ресурс]. — Режим доступу: http://www.gaw.ru/html.cgi/txt/doc/micros/ arm/cortex_arh/5_1_3.htm
7. MSDN “SerialPort - класс” [Електронний ресурс]. — Режим доступу: http://msdn.microsoft.com/ru-ru/library/system.io.serialport. aspx
8. Керниган Б., Ритчи Д. Язык программирования Си. // М.: Вильямс, 2007. — 304 с.
9. Кристиан Н.І., Карли У.Ю. Visual C# 2010: полный курс. // М.: Диалектика, 2010. – 696 с.
10. Трей Нэш C# 2010: ускоренный курс для профессионалов. // — М.: Вильямс, 2010. — 592 с.