Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 13
1

АЦП последовательного типа поразрядного уравновешивания

27.11.2019, 01:01. Показов 1432. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.

Задание: Создать программу реализации АЦП. При нажатии клавиши S2 запустить АЦП с соответствующим алгоритмом преобразования. Результат отобразить на семисегментном статическом индикаторе.

Вопрос: пытаюсь разобраться как работает алгоритм данной программы. Где-то добавил комментарии, но все равно до конца не понимаю что и как работает. Зачем нужен Reset? В каком случае переходим на метку m3, а когда на метку m1? Как вообще алгоритм работает. По теории(которая ниже) вроде все понятно.

Код
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
.include "m8515def.inc"
.include "board_8515.inc"
.dseg
.equ k1 = 0x9006
.equ k2 = 0x9005
.equ k3 = 0x9003
 
tmp:     
.byte 1
.cseg
.org $0
   rjmp reset
.org $18
 
reset:
        ldi         r16, HIGH( RAMEND )
        out         SPH, r16
        ldi         r16, LOW ( RAMEND )
       out         SPL, r16
 
       ldi      r16, (1 << SRW10) | (1 << SRE)
       out      MCUCR, r16
 
nachalo:
  
;Читаем клавиатуру
    lds r16, k2
    com r16         ;инвертируем значение регистра
    andi r16, 0x0F      
    cpi r16, 0b00000001 ;кнопка 2
    brne m
 
    cbi DDRB, 7
    ldi r17, 0
 
 
m3:
 
ldi r17, 0b10000000 ;загрузка старшего разряда
mov r18, r17
m0:
sts dac, r17 ;загрузка значений с r17 в ЦАП
mov r16, r17 ;загрузка r17 в r16
andi r16, 0b00000001 ;операция – «И» с 10000000 с 00000001 для обработки всех разрядов
cpi r16,0 ;пока r16 <> 0
brne mm
ldi     r19,0x10                         
 
m1:                                        
     nop                                   
     nop
     nop    ;цикл для задержки
     nop
                            
     dec     r19                              
     cpi     r19, 0                              
     brne     m1      
sbic  pinb,7 ;проверка компаратора 
rjmp m00
 
mov r16, r17
cp r16, r18
brne m000
 
lsr r17   ;сдвиг r17 в лево
mov r18,r17 ; и загрузка в r18, 
rjmp m0
 
m000:
eor r17, r18
lsr r18 ; сдвиг r18 влево
or r17, r18 ;и побитовое сложение с предыдущим значением которое находится в r17
 
rjmp m0
 
m00:
lsr r18
or r17, r18
rjmp m0 
 
mm: 
    sts right_7seg, r17    ;вывод на индикатор
     ;ldi r17, 0
     ;sts left_7seg, r17
 
     rjmp m3
m:
    rjmp nachalo

Теория


АЦП последовательного типа поразрядного уравновешивания

Преобразователи поразрядного уравновешивания характеризуются использованием определенного количества эталонов, веса которых пропорциональны 2 и, где i = 0,1,2, ... целое число.
Из имеющегося набора эталонов складывается сумма, составляющие которой меняются до тех пор, пока она с заданной точностью не станет равной входному напряжению.
Структурная схема АЦП поразрядного уравновешивания приведена на рис. 3.
Набор суммы эталонов производится ЦАП, управляемым триггерами Т2и регистра. Последовательность переключения триггеров регистра задается распределителем импульсов РИ в направлении из старшего разряда с весом 2m-1 к младшему с весом 20.

Вложение 1088216
Рис.3. АЦП последовательного типа поразрядного уравновешивания

В исходном состоянии триггеры регистра установлены в ноль. Первый импульс РИ устанавливается триггер Т21 в «1», в результате чего в компаратора подводится напряжение.
Uет = 2m-1ΔU, где m - число разрядов сравнения компаратора, ΔU - напряжение соответствующее минимальному стандарту.
Если Uх> Uет, то на выходе компаратора К логический ноль, логический элемент И1 закрывается. Импульс второго такта РИ не пройдет на вход Т21 и единичное состояние Т21 сохраняется. Если Ux <Uет, то на выходе компаратора К логическая единица и импульс второго такта, пройдя через вентиль И1, переведет триггер Т21 в ноль. Состоится исключения данного эталона из суммы. Аналогичным образом происходит анализ следующих стандартов (2m-2ΔU, 2m-3 ΔU и т.д.) путем установки или сброса соответствующих триггеров Т22, Т23 и т.д. Таким образом в течение n + 1 тактов распределителя произойдет подключение всех стандартов. Но в результате сравнения в сумме окажутся только те, набор которых равна величине превращается напряжения Uх с точностью ΔU. Выдача кода из регистра может быть организована в последовательной или параллельной форме.
На рис. 3 выдача кода из регистра осуществляется импульсом (n + 1) -го такта РИ в параллельной форме.
После выдачи кода триггеры регистра устанавливаются в исходное нулевое состояние и цикл преобразования повторяется.
Рассмотрим преобразования напряжения 91В семиразрядный (m = 7) АЦП с шагом квантования ΔU = 1В. Результаты преобразования приведены в табл. 1.
В результате преобразования будет получен код 1011011, что соответствует Uх = 91В.
Результаты преобразования.
Таблица 1
Вложение 1088217

Упрощенная схема АЦП приведена на рисунке 4.

Код формируется счетчиком, при организации жесткой логики или программно, если АЦП работает в составе вычислительного комплекса. Входной код превращается в аналоговый сигнал с помощью ЦАП. Напряжение с выхода ЦАП поступает на один из входов компаратора. На другой вход подается измеряемое напряжение Ux. В момент когда напряжение ЦАП равно измерения компаратора формирует сигнал «Stop», который свидетельствует об окончании цикла измерения.
Вложение 1088218
Рис.4. Упрощенная схема АЦП
При формировании кода используются различные алгоритмы. Самым простым методом является метод последовательного приближения (разворачивает уравновешивания). При этом методе код меняется от минимального путем увеличения единицы младшего разряда до тех пор, пока напряжение ЦАП не сравняли с измеряемым напряжением. Недостатком метода последовательного приближения является низкое быстродействие.

Для сокращения времени преобразования применяется метод поразрядного уравновешивания. Уравновешивания начинается со старшего разряда. В этом разряде устанавливается единица и читается состояние компаратора. Если напряжение ЦАП больше измеряемого, то разряд сбрасывается, а если меньше, то разряд сохраняет свое состояние. Далее таким же образом обрабатывается следующий разряд. Преобразование заканчивается тогда, когда будут обработаны все разряды.

В системах слежения за теми или параметрами часто необходимо непрерывно считывать состояние датчика. Это обеспечивается малым временем преобразования за счет применения следит АЦП. Суть данного алгоритма заключается в том, что сначала код формируется методом проб и ошибок или поразрядного уравновешивания. А после сравнения с измеряемым напряжением АЦП отслеживает изменение напряжения. Если напряжение растет, то код поразрядно увеличивается до тех пор, пока напряжение ЦАП не сравняли с измеряемым, и наоборот.

АЦП построен на микросхемах DD2 (десятиразрядный ЦАП) и DA1 компаратора с ТТЛ выходом. Младшая часть кода хранится в порту А микросхемы параллельного интерфейса и8255, старшая часть кода хранится в разрядах 0-1 порта С. Состояние компаратора можно прочитать на введении порта Р1.7 однокристальной микро-ЭВМ, об окончании цикла преобразования также свидетельствует свечение светодиода HL9. Измеряемое напряжение снимается с делителя построенного на резисторах R27, R28. Вращая ручку потенциометра R27 можно изменять измеряется напряжение.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2019, 01:01
Ответы с готовыми решениями:

Как поток данных с последовательного порта записать в массив типа char
Как реализовать запись символов приходящих с последовательного порта в массив char? Например при...

Организовать в программном файле типа PRG операции последовательного и индексированных поисков и фильтрации
ВСЕМ ПРИВЕТ!!!! работа выполняется в турбо паскаль 2,6... 1)организовать в программном файле...

Реализовать итератор для последовательного перебора участников проекта (объектов типа Person)
Необходима помощь в работе с итераторами, не знаю, как реализовать: 1) итератор для...

Определить какого типа АЦП используются во всех системах связи (с использованием STL)
Задание: Написать программу на языке С++. Использовать множества/мультимножества подходящего...

3
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,015
27.11.2019, 09:31 2
Цитата Сообщение от c1505072 Посмотреть сообщение
Зачем нужен Reset?
Чтобы обойти адреса векторов прерываний. Она здесь не используется, так что бессмысленно.
Цитата Сообщение от c1505072 Посмотреть сообщение
на метку m3
Основной цикл.
Цитата Сообщение от c1505072 Посмотреть сообщение
на метку m1
ВременнАя задержка.
1
0 / 0 / 0
Регистрация: 13.09.2019
Сообщений: 13
28.11.2019, 04:00  [ТС] 3
Цитата Сообщение от pyzhman Посмотреть сообщение
ВременнАя задержка.
Спасибо большое. А можете подсказать насчет меток m000, m00, mm и m?
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,015
28.11.2019, 07:47 4
Конечно могу. Но это потребует разбора алгоритма.
0
28.11.2019, 07:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2019, 07:47
Помогаю со студенческими работами здесь

Как сделать программу на VB для приёма данных с АЦП типа Е14-440?
Привет! Кто-нибудь вкурсе как сделать программу на VB для приёма данных с АЦП типа Е14-440?

Записать в файл f последовательного доступа N натуральных чисел. Получить в другом файле последовательного дос
Записать в файл f последовательного доступа N натуральных чисел. Получить в другом файле...

Как связать таймер с АЦП и АЦП с DMA?
Вообщем стоит такая задача: через определенные интервалы времени периодически запускать...

Расширение АЦП микроконтроллера и подключение к АЦП датчиков
Здравствуйте. У меня встала задача сделать устройство для элеватора, для контроля температуры в 864...

Алгоритм работы с ацп АЦП STM32F103
Здравствуйте, уважаемые форумчане. Подскажите пожалуйста алгоритм работы с ацп. Допустим мне надо...

Mega16 и неиспользуемый АЦП (питание ацп?)
Если я не использую АЦП контроллера нужно ли подавать на АЦП питание? Если нет, то просто оставить...

АЦП замена АЦП в AVR
Перешёл с AVR на STM32. И вот столкнулся с проблемой. Как подключить датчики с выходом 0-5В на АЦП...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru