КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Модернизация программы поиска резонансной частоты ⇐ ПредыдущаяСтр 8 из 8 После экспериментальной проверки канала связи, произведена модернизация программы для поиска резонансной частоты виброподвеса с целью вывода зависимости амплитуды датчика ускорения от частоты колебаний виброподвеса в виде графика на мониторе компьютера. После модернизации программа выполняет следующие действия: - после подачи напряжения питания на микроконтроллер, он производит настройку порта, а затем переходит в ожидание команды от ПК; - после получения команды, микроконтроллер начинает генерацию минимальной частоты колебаний виброподвеса (340 Гц) и измерение амплитуды датчика ускорения (его амплитуда пропорциональна амплитуде колебаний виброподвеса). Затем происходит сохранение во внешней памяти и в ячейке внутренней памяти. Далее увеличивается частота на 0,916 Гц, и измерение напряжения датчика ускорения и сохранение измеренного значения повторяется. Затем определяется какое из значений больше. Большее значение сохраняется в оперативной памяти. Далее цикл повторяется до достижения наибольшей частоты. В результате во внешней памяти записывается зависимость амплитуд
механических колебаний виброподвеса от частоты. Во внутренней памяти сохраняется значение частоты на которой амплитуда колебаний максимальна. Информация о частоте максимума определяется по смене знака разности последующего и предыдущего значения напряжений датчика ускорения. На время поиска резонанса прерывание от последовательного порта запрещаются; - затем производится передача сохранённых значений напряжения колебаний из внешней памяти в ПК по беспроводному каналу. Для этого разрешается прерывание от последовательного порта и выключается таймер-счётчик ноль, обеспечивающий синтез частоты. После завершения передачи данных таймер-счетчик включается и продолжается генерация колебаний на резонансной частоте. Одновременно микроконтроллер ожидает команду от ПК. Блок – схема программы изображена на рис. 3.11 Ниже приведён листинг программы.
$mod812 ; Программа генерации синусоид с шагом 1 Гц и определения резонансной частоты подвеса ; начальное значение частоты 340 Гц (h) ; конечное значение частоты 460 Гц (h)
;*********************************************************** ; Распределение ресурсов:
; ячейки внутренней памяти данных: accuml data 20h ;адрес ячейки для младшего байта аккумулятора ; фазы accumh data 21h ;адрес ячейки для старшего байта аккумулятора ;фазы dell data 23h ;адрес ячейки младшего байта кода текущей ;частоты delh data 24h ;адрес ячейки старшего байта кода текущей частоты ;30h - адрес предыдущего значения ДУСа, ;31h - адрес текущего значения ДУСа ;32h - адрес младшего байта кода частоты с большим ;значением ДУСа ;33h - адрес старшего байта кода частоты с большим ;значением ДУСа
; Регистры: ;R0 - адрес на странице внешней памяти при записи ;R1 - адрес на странице внешней памяти при чтении ;R3 - для сохранения аккумулятора при переходе к подпрограмме ;прерывания (можно хранить и в ячейке) ;R4 - для сохранения PSW при переходе к подпрограмме ;прерывания (можно хранить и в ячейке) ; R6,R7 - используются для создания программной задержки 142 мс ;ljmp m1 ;************************************************** ; подпрограмма прерывания от Т\С0 для выдачи значения sin org 000bh mov r3, a ;сохранение значения аккумулятора основной ;программы mov r4,PSW ;сохранение значения регистра PSW (сохр. бита С) mov a, accuml add a,dell ;сложение младших байтов аккумулятора ;и кода частоты mov accuml, a mov a, accumh addc a,delh ;сложение старших байтов аккумулятора и кода ;частоты с учётом переноса mov accumh, a movc a,@a+dptr mov DAC0L,a mov a,r3 ;возврат значения аккумулятора в основную программу mov PSW,r4 ;возврат значения регистра PSW в основную ;программу (возврат бита С) ; nop ; для того, чтобы во 2-м режиме таймера повторялось 92 цикла, иначе чередуются 91 и 93! reti ;**************************************************************;*******Подпрограмма прерывания от последовательного порта******** org 0023h jmp m11
;***************************************** ;Подпрограмма прерывания от АЦП ORG 0033H ; (ADC ISR) mov 31h,adcdatal mov a,31h movx @R0, a ;сохранение данных во внешнюю память inc R0 subb a,30h jc m4 mov 30h,31h ; загрузка большего значения ДУСа mov 32h,dell ;Сохранение младшего байта кода частоты с ;большим значением ДУСа mov 33h,delh ;Сохранение старшего байта кода частоты ;с большим значением ДУСа m4: reti ;**************************************************************** m1: ;***********Инициализация последовательного порта********** mov scon,#01010000b mov tmod,#00100000b mov th1,#00fdh setb tr1 mov IE, #10010000b jmp m5 m8: clr ti cjne r1, #131, m12 reti m12: movx a, @R1 ;отправка данных в ПК mov sbuf, a inc R1 reti m11: jnb ri, m8 ;проверка запроса прерывания от приемника clr ri ;очистка бита RI mov r1,sbuf ;запись в регистр r1 внешней команды reti m5: cjne r1, #10, $ ; ожидание команды чтения данных mov r1, #0 mov P2, #0 ;задание нулевой страницы внешеней памяти mov DAC0H,#0 ; Обнуление старшего регистра ЦАП0 mov DAC0L,#0 ; Обнуление младшего регистра ЦАП0 mov DACCON, #10101101b ; Включение ЦАП0 (DAC0) mov TMOD, #10b ; установка 2-го режима работы т\с0 mov TL0,#174 ;Задание интервала 100 мкс для 1-го ;срабатывания таймера (тактовая частота мк 11,059 мГц ) mov TH0,#164 ;Задание интервала 100 мкс для любого ;срабатывания таймера (тактовая частота мк 11,059 мГц) mov IP,#00000010b ;Задание приоритета прерываний от т\с 0 mov accuml,#0 ;задание начального значения младшего байта ; аккумулятора фазы mov accumh,#0 ;задание начального значения старшего байта ; аккумулятора фазы mov dell , #180 ;Задание начальной частоты (340 Гц), младший ; байт mov delh , #08 ;Задание начальной частоты (340 Гц), старший байт mov dptr, #0110h ;Начальный адрес таблицы MOV ADCCON1,#07Ch ; power up ADC, 14.5us conv+acq time ;(задание времени преобразования АЦП) MOV ADCCON2,#0 ; select channel to convert (Выбор 0-го канала ;мультиплексора) mov IP,#00000010b ; высший приоритет прерывания от Т\С0 mov IE, #11000010b setb tr0 ;Пуск таймера интервалов отсчётов ЦАП DELAY: ; Задержка 142 мс (48 периодов на частоте 340 Гц и ; 65 периодов на 460 Гц) MOV R7,#255 ; 2550 * 535us = 142ms DLY1: MOV R6,#255 ; 255 * 2.17us = 535us DJNZ R6,$ ; sit here for 535us DJNZ R7,DLY1 ; repeat 255 times (142 ms total) ;RET
SETB SCONV ; Запуск АЦП jb SCONV, $ ; Организация задержки на время работы АЦП ******************************* mov a, dell add a,#6 ; Изменение частоты на величину 0,916 Гц mov dell,a mov a,delh addc a,#0 mov delh,a cjne a,#11,DELAY ;Контролируем достижение старшим байтом ;приращения верхнего (11) значения mov a, #199 ; должно быть 199 subb a,dell ;Контролируем достижение младшим байтом ;приращения верхнего (199) значения jnc DELAY ;************************************************************** mov dell, 32h ;Загрузка младшего байта кода резонансной частоты mov delh,33h ;Загрузка младшего байта кода резонансной частоты clr TR0 ; остановка генерации синусоиды mov IE, #10010010b ; снятие запрета прерывания от ;последовательного порта setb ti ;начало передачи данных в ПК cjne r1, #131, $ ; определение передачи всех данных setb TR0 ;запуск генерации синусоиды на резонансной ;частоте cjne r1, #10, $ ;работа на резонансной частоте пока не ;поступит запрос на передачу jmp m5 ; возврат к определению резонансной частоты org 0110h ;Таблица 256 значений round(255/2*(1+sin(?)))
Моделирование программы в симуляторе ADSIM подтвердило её работоспособность. Ввиду недоступности виброподвеса испытания с применением виброподвеса не проводились. Заключение Данная работа направлена на создание беспроводного канала связи между персональным компьютером и микроконтроллером, расположенном на вращающемся стенде. Разрабатывалась схема приёмо-передатчика на основе использования инфракрасного излучения для передачи данных. Проводилось экспериментальное исследование схем приёмопередатчика. В среде программирования Delphi 7 разрабатывалась программа для управления микроконтроллером по беспроводного каналу связи. Была написана тестовая программа для микроконтроллера на ассемблере, которая осуществляла запись 10 байтов в оперативную память, а затем по команде с ПК начинала передачу байтов в компьютер. Отладка этой программы производилась в симуляторе ADSIM. Была проведена экспериментальная проверка канала связи при помощи разработанного устройства приёма-передачи, расположенного на монтажной плате, и управляющих программ для микроконтроллера и ПК, которая показала работоспособность канала связи. Проводилась модернизация программы поиска резонансной частоты виброподвеса. Данная программа обеспечивала обмен, обработку данных и представление данных в виде графика зависимости амплитуды датчика ускорения от частоты колебаний виброподвеса.
Основные результаты работы заключаются в следующем:
1. Разработан и создан беспроводный (инфракрасный) канал связи для обмена данными между персональным компьютером и микроконтроллером, расположенном на вращающемся стенде. 2. Написана работоспособная программа для персонального компьютера в среде программирования Delphi 7 для управления микроконтроллером и приёмом и обработкой данных. 3. Разработана тестовая программа для микроконтроллера на ассемблере для контроля работы канала связи. 4. Модернизирована программа поиска резонансной частоты колебаний виброподвеса, обеспечивающая передачу данных о настройке виброподвеса на персональный компьютер.
|