Ещё раз про В7-38...
На задней панели есть технологический разъём Ш3.
В связи с чем вопрос - кто нибудь пробовал снимать с него данные для дальнейшей обработки?
Да, есть небольшие наработки на 328й атмеге, программу писал в Arduino IDE. Я сделал эту систему, не зная про тему, которую упомянул Mickle, поэтому сделано всё довольно костыльно (программист из меня так себе), и способ замера отличается. Далее в теме упоминается прикручивание к системе МК, но я так понял, принцип всё так же отличается от моего.
Суть работы - первый таймер-счётчик атмеги используется, как вторая пересчётная дека.
В режиме внешнего тактирования, по приходу прерывания о начале измерительного интервала (RISING, по фронту), он начинает считать тактовые импульсы 200кГц. По окончании импульса счётного интервала (FALLING, по спаду), производится остановка счётчика, вычитание от посчитанного значения 20 тысяч (т.к. 100мс зарядки интегратора в длительность импульса всегда входят). Так получаются отсчёты.
По поводу согласования уровней. В текущей прототипной реализации, МК питается от внешнего 5в питания (от USB, подцепленного к свистку USB-TTL), землёй является шина -12В, соответственно, для конверсии уровней используются обычные делители напряжения 10к+4,7к.
Полярность определяется как-то так (я точно не помню при какой полярности какой импульс, поэтому могу попутать описания местами): при положительной полярности, после измерения на выходе "конец измерения" образуется иголка нулевого логического уровня, всё время сигнал положительный +2В. При отрицательной же, импульсы там по сути повторяют импульсы на "измерительном интервале" (по окончании измерения, на выходе нулевой уровень -12В). Таким образом, делается небольшая задержка на "устаканивание" и считывание уровня. Иголка в принципе идёт во время задержки, но на всякий случай, добавлен кондёр в 0,01мкф, который, в сочетании с резисторами согласования уровней, полностью её гасит.
Далее, определяем, где пихать запятую. К счётчику АВП подпаяны 4 провода, по ним устанавливается выбранный предел после измерения.
В коде я так и не понял, как бы "красиво" складывать биты, и поэтому поступил примитивно - switch() на все состояния АВП, подобранные вручную методом тыка. switch выбирает, на какое число умножить отсчёты - 0,1/0,01/0,001 и тд. Да знаю - очень "по-нубски".
Показания 1 в 1 совпадают с индицируемыми вольтметром - это следует из принципа счёта импульсов. Пытался сначала использовать кварц 16МГц как источник, запуская таймер на внутреннем тактировании - плавают последние разряды, забил.
А теперь о грустном: способ вывода. Вывод реализован через ардуиновский Serial, подключение к компьютеру осуществляется при помощи свистка на FT232 микросхеме. Данные идут с некоторым форматированием, которое позволяет через макрос PLX DAQ r2 (вторая версия, т.к. первая не работает на вин10) впихивать цифры в эксель. Принцип действия такой. Как только закончился цикл измерения, флаг готовности данных ставится в единицу. В цикле loop форматирование и вывод данных, при условии флага готовности равного 1.
Из недостатков:
1) вывод идёт по 5-7 раз в секунду, однако по паспорту у вольтметра скорость обновления показаний 2,5 раза в секунду. Поэтому, я подозреваю, имеется некоторая ошибка в моём коде. Программист из меня, повторюсь, очень плохой.
2) нет возможности узнать, что измеряется. Я не придумал, как бы "подцепиться" к П2К для определения рода измерений - постояннка/переменнка/сопротивление.
Из планов на будущее:
1) запитка через 78L05 от "земли" - т.е. от +0 -12В.
2) перевод интерфейса на шину I2C - мне в моих условиях так гораздо удобнее.
3) обязательная оптоизоляция выхода данных через ADUM1250, как во всех нормальных приборах.
4) возможно, интерфейс для ПК, для рисовки графиков и вывода значений, но лично для меня в этом отдельном интерфейсе толку ноль. Мне нужен "центральный контроллер" для ввода/вывода данных в/из целой группы (в основном I2C) устройств, а не дублирование отображения цифирей на ПК.
Mickle писал(а):Только сейчас, как мне кажется, всё это совершенно не актуально.
С одной стороны - с точки зрения эффективности получаемой конструкции, согласен, прибор старый. А с другой стороны - хоббийный интерес по апгрейду старичка. К тому же, это лучший из имеющихся в моей "общажной лаборатории" вольтметров. И первый из "пажылых приборов" в списке на получение/обновление интерфейса Д/У - второй на очереди Б5-44, с которым я вожусь уже почти год.
Немного картинок:
1) Изначально обработка планировалась "где-нить на стороне", поэтому пока до сих пор висит такой разъём, на который всё выведено.
2) Прототип на макетке
3) Показание вольтметра...
4) ...И соответствующая ему величина, отправленная в последовательный порт с отладочной инфой
5) Плата текущей версии. Как видно, тут буквально ничего нет - все делители снизу в SMD. По идее, может и на 8 мегагерцах тактироваться, но я поставил кварц во время кое-каких неудачных опытов с программой, и для дополнительной совместимости - можно прошивать как обычную ардуино Uno через свисток USB-TTL.
6) График измерения Д818Е относительно выхода 9В самодельного ИОНа на REF102C. Данные передаются с платки на комп напрямую, форматирование прописано в программе МК.
По итогу:
1) Мне конечно стыдно за говнокод, но может, кому-нибудь пригодится и такое, выложу тут в зипе (там же файлы схемы и ПП). Слишком много раз видел, как полезная статья с интересной конструкцией заканчивалась фразой "ну это всё сыро, исходники выложу, когда закончу проект", и далее "последний раз был в сети 15 лет назад". Написана программа пока что конкретно под меня, очень сырая, и не факт, что сдохшая на МК нога D8 не её вина.
Используйте с осторожностью. У меня битый контроллер, через USB-TTL свисток прошивка не грузится даже при наличии бутлодера, прошиваюсь через ISP. Но вывод через Serial пашет. Пояснения по коду давать - еще на пару листов будет, это надо делать для законченной финальной программы.
2) Нет универсальности. Доделаю новую версию платы, подрихтую код на вывод, добавлю I2C, библиотеку под ардуинку на 1 команду (запрос данных), и можно выпускать.
PS после написания поста пришла мысль, в чём ошибка в коде была. Отправка шла даже тогда, когда старые данные отправились, а новые ещё не пришли. По-быстрому добавил новый флаг, который поднимается при наличии новой выборки и опускается после отправки данных (таким образом, условие "есть готовое значение" в моменты холостого хода, когда вольтметр ничего не делает, но продолжает слать в порт данные, исключено). Обновлённый архив прикрепил тут же, отредактировав пост. Теперь в экселе всё красиво, в одну секунду приходит 2...3 измерения, что соответствует скорости в 2.5 измерения/сек.
И, раз уж тут поднималась тема нулевых показаний и входного тока - график сразу после включения (сначала включил платку интерфейса, потом вольтметр. Без наличия уровней и сигналов для счёта, флаги готовности не ставятся, и платка находится в эдаком "ждущем режиме", что удобно):
График такой странной волнистой формы из-за типа диаграммы в экселе. После "прогрева" значения выходят на что-нибудь в районе 5...40 знаков, когда как, и всегда в минус.
Ещё один график: небольшой разряд и заряд Li-ion АКБ (почему-то стартовое напряжение 4,34в, хотя я четко заряжал его до 4,18в при помощи тп4056):
PPS Докинул в архив PLX DAQ r2. Для моей схемы баудрейт стоит 19200 (настраивается в коде), COM порт определить можно через ардуино IDE.
- Вложения
-
- V7-38_connect.zip
- (536.87 KiB) Скачиваний: 48