Свежие обсуждения
Измерения

Одновременный LC метр на звуковой карте

1 3 15

можно упомянуть о специфике генератора опорной частоты в RLC-2
частота генерируется на цифровом выводе микроконтроллера, после чего с помощью дорогого и сложного фильтра получается синусоида очищенная от высших гармоник.Однако в сигнал с цифрового выхода походят и помехи с шины питания микроконтроллера, которые могут быть значительно ниже частоты фильтра(10кГц и ниже) и практически не фильтруются - учитывая не синхронность каналов АЦП и "стробоскопический" его характер - это может вносить дополнительную ошибку в результаты измерения и ужесточает требования к питанию микроконтроллера.
"Компьютерный" ЦАП этой "особенности" не имеет изначально.

 

http://kilobyte.com.ua/~mehalycha/Programs/LCtransf.jpg
Это про волновое сопротивление трансформатора. Есть ещё у меня две других книжки,
где постоянно упоминают об этом сопротивлении. В интернете наверняка ещё больше
можно найти...
Наступил момент для динамичеcкого выделения памяти.
Я не знаю наперёд, сколько какой пользователь LCmetrом захочет применять частот и
эталонных сопротивлений. Память нужно динамически выделять и удалять, а это один
из самых каверзных моментов в C++. Есть целые книжки по этому вопросу. А у меня в
книжках всё просто и кратко и мало на эту тему. Поэтому я буду идти от простого к
сложному.
Сделаю сначала фиксированное количество эталонных сопротивлений, штук
двадцать, например. И у каждого сопротивления двадцать разных применяемых частот.
Четыре сотни вариантов. В матлабе я меньше десяти сопротивлений применяю.
В RLC-2 три частоты и одно сопротивление и ничего, пользователям хватает.
И, наверное, сделаю один режим калибровки без запоминания на диске (на время работы
программы) - одно сопротивление и две частоты к нему. Сопротивление любое и частоты
любые до 32768/2Гц.

 

Михалыч А: и одно сопротивление

там 4 сопротивления и выбор коэфициента усиления - т.е. получается 8 диапазонов.
Диапазон, R range, Ку для тока, Ку для напряжения

0 100 Ом 1 100
1 100 Ом 1 10
2 100 Ом 1 1
3 1к 1 1
4 10к 1 1
5 100к 1 1
6 100к 10 1
7 100к 100 1

 

Окей, виноват, просто мало интересовался этим прибором и совсем не пользовался.

 

Михалыч А: Память нужно динамически выделять и удалять

Вы что, программируете под платформу с 640 КБ на борту?

 

Дело не в платформе, не в размере памяти. Дело в четком знании момента, когда динамическую память нужно освободить. Отладчик ругается не по детски. А в моих книжках только и сказано, что обязательно нужно память освободить. Если размер массива на перёд не известен, то два пути - делать огромный массив, или по частям память динамически добавлять.

 

Михалыч А погуглите по ключевым словам malloc и free. Это динамическое выделение и освобождение памяти в C.
Там же найдёте примеры как их пользовать.

 

Михалыч А: Если размер массива на перёд не известен

Михалыч А,
не заморачивайтесь и определяйте массив с запасом! Случай не тот, когда надо экономить (если только проект не в целях обучения).

 

Заработала запись параллельно с воспроизведением.
Сразу получился примитивный осциллограф на звуковой карте.
Неплохая зрительная проверка записи.
Можно взять фото любого девайса с экраном/монитором, вставить
это фото в LCmetr и на этом девайсе показывать две параллельных
синусоиды. Программировать ничего не надо, только LCmetr в
размере увеличится. Если никому картинка девайса не нужна,
будет две синусоиды на голом, белом окне представления.
Можно включить поддержку самодельного USB-осциллографа...
Определился (пока только в мыслях) с динамической памятью.
У меня эталонное сопротивление - это структура с двумя полями.
Одно поле - массив из частот, второе поле - массив из импедансов.
Количество структур наперёд неизвестно, в каждой структуре
размеры массивов наперёд неизвестны. Ничего не известно!
Но хранить на диске эти структуры обязательно, иначе люди
матюкаться будут. И решил я в качестве динамической памяти
использовать файл на диске, потому что этот файл компилятором
и отладчиком не проверяется. И подряд можно записывать
сколько угодно бла-бла-бла и никакой ошибки не будет.
Конечно, сначала будет LCmetr без записи на диск, а потом база
эталонных сопротивлений будет ограничена только размером диска.

 

1 - сделать несколько, например 8, кнопок выбора предустановленных значений эталонного сопротивления - типа переключателя диапазонов. для оперативного переключения диапазонов можно использовать не только мышку, но и клавиши - например, "стрелки"(на клавиатуре).
2 - сделать отображение реального пикового значения считанного АЦП(в десятичном и процентах от максимума) - позволит более "наглядно" делать выбор эталонного сопротивления(чтобы 50% было на детали и 50% на эталонном резисторе) и видеть реальную возможную точность измерения(кол-во задействованных разрядов АЦП). - поскольку в измерителе отсутствует автоматический выбор пределов измерения.