Вольтметр переменного тока

Звуковые генераторы, фильтры и другие аналоговые устройства (кроме радиотехники и УНЧ)
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Вольтметр переменного тока

Сообщение СЦБист »

Решил собрать простенький вольтметр переменного тока.

В голову пришла такая идея.

Напряжение на АЦП МК подаю с делителя . На резисторе 1кОм будет выделятся амплитудное значение за счет конденсатора.

Это напряжение запоминаю МК, потом умножаю на 62 (коэффициент делителя) - и делю на 1,41 что=бы узнать действующее значение напряжения в сети.

Что скажите уважаемые коты?
Вложения
1.JPG
(19.88 КБ) 388 скачиваний
Реклама
Enman
Друг Кота
Сообщения: 7774
Зарегистрирован: Сб янв 29, 2011 00:28:48

Re: Вольтметр переменного тока

Сообщение Enman »

Это не амплитудное значение, а средневыпрямленное, коэф = Pi/ 2корня из 2х (1,11, где-то)....
Реклама
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Вольтметр переменного тока

Сообщение СЦБист »

на выходе моста будет пульсирующее напряжение с амплитудой 310 В

На резисторе 1к амплитудное значение будет 5В - потолок. ИОН для АЦП тоже 5В.

Кондер должен зарядится до этого значения. Действующее равно амплитуда на корень 2
Enman
Друг Кота
Сообщения: 7774
Зарегистрирован: Сб янв 29, 2011 00:28:48

Re: Вольтметр переменного тока

Сообщение Enman »

Это ты себя убеждаешь?.... :)
Тогда лучше ТОЭ в руки... :) ...и спать с такой книгой лучше...
Амплитуда у тебя будет, если конденсатор на 400 В поставишь.... :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Вольтметр переменного тока

Сообщение СЦБист »

Короче смысл в следующем.
Делаю в течении 20 мс через каждую 1мс оцифровку аналогового сигнала на резисторе 1 к.
Создаю массив и нахожу максимальное значение.
Зная максимальное значение (амплитудное) - нахожу действующее.

Так понятно ?


Кондер может даже и не нужен - поставлю керамику в качестве защиты от помех.
Реклама
Enman
Друг Кота
Сообщения: 7774
Зарегистрирован: Сб янв 29, 2011 00:28:48

Re: Вольтметр переменного тока

Сообщение Enman »

да мне. собственно, и ранее было понятно (правда, только для синуса. а не того, что в сети бывает)... :) ....не я же тему создавал...)))
Реклама
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Вольтметр переменного тока

Сообщение СЦБист »

Программу собираюсь писать на ассемблере.

Вот только не в курсах как создать массив с помощью ОЗУ.

Вроде там надо применять регистровую пару.

Знаю только, что-бы что-то записать в ОЗУ есть команда sts, что-бы считать в РОН lds.

Кто знает как это сделать? С помощью каких команд?
akl
Друг Кота
Сообщения: 4445
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Вольтметр переменного тока

Сообщение akl »

СпойлерИзображение
обмен с RAM.GIF
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Вольтметр переменного тока

Сообщение СЦБист »

Спасибо конечно за таблицу. И как теперь сварганить масив? Есть примеры использования этих команд?
С английским конечно туго.

Например я под переменную Digit занимаю 10 ячеек ОЗУ

.dseg

Digit: .byte10

Как записывать что-то в ОЗУ из РОН я знаю.

sts Digit, R16 - запись в 0-ю ячейку
sts Digit+1, R16 - запись в 1-ю ячейку
..................

Считывал так

lds R16, Digit
lds R17, Digit+1

Как пользоваться другими командами? :shock:

........

ldi ZH,High(Digit*2) ;загрузка начального адреса массива
ldi ZL,Low(Digit*2)

Правильно ли я загрузил начальный адрес массива Digit ? Нужно-ли писать Digit*2 ?
ДУРАК
Грызет канифоль
Сообщения: 274
Зарегистрирован: Вс дек 18, 2011 20:59:36

Re: Вольтметр переменного тока

Сообщение ДУРАК »

А готовый купить проблема? ;)
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Вольтметр переменного тока

Сообщение СЦБист »

хочу сам собрать воспользовавшись приобретенными знаниями в академии.
orinoko

Re: Вольтметр переменного тока

Сообщение orinoko »

СЦБист писал(а):
ldi ZH,High(Digit*2) ;загрузка начального адреса массива
ldi ZL,Low(Digit*2)

Правильно ли я загрузил начальный адрес массива Digit ? Нужно-ли писать Digit*2 ?
Неправильно. Тут на 2 умножать не надо. Поставим теперь вопрос по другому - а зачем нужен массив? Нужно просто суммировать получаемые данные. После получения, например, 20-го значения, произвести расчёт и обнулить сумму. И всё - ждём дальше. Не забываем, что число у нас будет 3-байтное
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Вольтметр переменного тока

Сообщение СЦБист »

СЦБист писал(а):3-байтное
АЦП буду использовать 8 разрядов. ОЗУ же 8 розрядное.
СЦБист писал(а):Тут на 2 умножать не надо.
почему не надо ? адрес ячейки ОЗУ же 2 байта :o

с помощью массива буду сравнивать значения м-ду собой и найду из них наибольшее.
orinoko

Re: Вольтметр переменного тока

Сообщение orinoko »

Умножать надо только при обращении к таблице в памяти программ. Это связано с особенностями адресации именно там. Для обращения к ОЗУ этого делать не надо, и это не зависит от двухбайтности адреса ОЗУ. Тем более, что проверяется это за 5 минут в Студии.
И, чтобы узнать максимум, незачем хранить все значения, а определять этот максимум в процессе получения данных.
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Вольтметр переменного тока

Сообщение СЦБист »

СЦБист писал(а):Тем более, что проверяется это за 5 минут в Студии.
всмысле ? :shock:
orinoko

Re: Вольтметр переменного тока

Сообщение orinoko »

набросать код, запустить на пошаговое выполнение, и посмотреть куда идёт обращение. Причём достаточно 3 команды
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Вольтметр переменного тока

Сообщение СЦБист »

Можно брать любые регистровые пары X, Y, Z ?

а можно сделать двухбайтные элементы массива ?
orinoko

Re: Вольтметр переменного тока

Сообщение orinoko »

пары любые. А элементы можно делать хоть 32-байтные. всё зависит от задачи и необходимости для программиста и умения работать с данными числами. У меня например были 5-байтные числа, которое мне нужно было делить на однобайтное.
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Вольтметр переменного тока

Сообщение СЦБист »

и как же считывать их из ОЗУ при помощи X Y Z ?

РОН ведь однобайтный.

к примеру элементы массива занимают два байта.

как в таком случае быть ?
orinoko

Re: Вольтметр переменного тока

Сообщение orinoko »

Регистровая пара X/Y/Z - это 16-битный указатель. В нём записывается адрес ячейки

ldi ZH, High(Digit) ;загрузка начального адреса массива
ldi ZL, Low(Digit)

Далее программист сам решает, в какой ячейке РОН хранить мл. байт, а в какой - старший. Это чистая условность. Например

sts Digit, R16 - запись в 0-ю ячейку <- пусть это старший байт
sts Digit+1, R17 - запись в 1-ю ячейку <- пусть это младший байт

lds R16, Digit
lds R17, Digit+1

Для удобства я наваял набор макросов для работы с 2-байтными числами и забыл про неудобства. Правда, работают только с X/Y/Z. Например

; Загрузка 2-байтного числа из памяти в парный регистр
.MACRO ldsw
lds @0L, (@1+1)
lds @0H, @1
.endm

; Сохранение 2-байтного числа из парного регистра в память
.MACRO stsw
sts (@0+1), @1L
sts @0, @1H
.endm

; Загрузка в стек регистровой пары (только для X, Y, Z)
.MACRO pushw
push @0H
push @0L
.endm

; Выгрузка из стека регистровой пары (только для X, Y, Z)
.MACRO popw
pop @0L
pop @0H
.endm
Ответить

Вернуться в «Аналоговая техника»