Вольтметр, термометр с выводом параметров по rs232

Вольтметр, термометр с выводом параметров по RS232

Данное устройство было разработано для замены этой разработки

Примечание: Это устройство не умеет закрывать шибер при догорании твёрдого топлива.
Но это можно решить наличием 3 канала регулирования и гибкой настройкой управляющих выходов.

Это устройство является усовершенствованным проектом, оно имеет уже три термодатчика, имеет более гибкую настройку и также, имеет в своем составе возможность подключаться к ПК. В комплекте также поставляется ПО для работы с этим устройством. Из программы доступны практически все настройки прибора.

Схема устройства:

Внешний вид поставляемого ПО:

ПО предоставляется на двух языках: RU и UK.

Инструкция по настройке устройства

При включении устройства, сначала отображается версия прошивки. Потом устройство переходит в нормальный режим работы, и на дисплее выводится температура с датчиков и напряжение в сети.

Меню имеет линейную структуру, что упрощает изучение.
Для перемещения по меню необходимо нажимать кнопку “МЕНЮ”.

Меню: “OUTPUT1″ – настраивает температуру срабатывания первого выхода.
в диапазоне: от 1 до 100 градусов Цельсия .

Меню: “OUTPUT2″  – настраивает температуру срабатывания второго выхода.
в диапазоне: от 1 до 100 градусов Цельсия .

Меню: “OUTPUT3″  – настраивает температуру срабатывания третьего выхода.
в диапазоне: от 1 до 100 градусов Цельсия .

Меню: “DELTA1″ – настраивает дельту 1 выхода . Алгоритм следующий: при режиме нагрева – выход №1 подаёт лог. 1 если температура

привязанного датчика Td = T1уст. выход генерирует лог.0.

Меню: “DELTA2″ – настраивает дельту 2 выхода . Алгоритм следующий: при режиме нагрева – выход №2 подаёт лог. 1 если температура

привязанного датчика Td = T2уст. выход генерирует лог.0.

Меню: “DELTA3″ – настраивает дельту 2 выхода . Алгоритм следующий: при режиме нагрева – выход №3 подаёт лог. 1 если температура

привязанного датчика Td = T3уст. выход генерирует лог.0.

Внимание! Td – это датчики , которые работают в зависимости от запрограммированной логики в специальном меню (OUT TYPE) . Далее, я распишу подробнее об этом.

Меню: “OUT TYPE – выбор алгоритма работы датчиков температуры и выходов.
Значение “0” – выходы работают в классическом режиме.
Датчик №1 управляет выходом №1 , датчик №2 управляет выходом №2, датчик №3 управляет выходом №3.

Значение “1” – выходы работают в альтернативном режиме №1. Датчик №1 управляет выходом №1 и выходом №2 и выходом №3. Состояние выходов зависит от настроек температуры и дельты этих выходом.

Датчики №2,3 работают как термометр , без функции термостатирования.

Значение “2” – выходы работают в альтернативном режиме №2. Датчик №2 управляет выходом №1 и выходом №2 и выходом №3. Состояние выходов зависит от настроек температуры и дельты этих выходов.

Датчики №1,3 работают как термометр , без функции термостатирования.

Значение “3” – выходы работают в альтернативном режиме №3. Датчик №3 управляет выходом №1 и выходом №2 и выходом №3. Состояние выходов зависит от настроек температуры и дельты этих выходов.

Датчики №1,2 работают как термометр , без функции термостатирования.

Значение “4” – выходы работают в альтернативном режиме №4. Датчик №1 управляет выходом №1 Датчик №2 управляет выходом №2 и выходом №3. Состояние выходов зависит от настроек температуры и дельты этих выходов.

Датчик №3 работает как термометр , без функции термостатирования.

Меню: “HEAT/COOLING” – настраивается характер работы термостата. Значение “1” – режим охлаждения.

Значение “0” – режим нагревателя.

Меню: “VOLT LO – настраивается нижний порог реле напряжения.

Меню: “VOLT HI – настраивается верхний порог реле напряжения.

Меню: “OUT CTRL – меню управления выходом общего назначения. Также , выходом можно управлять с ПК и специальной кнопкой.

При управлении с ПК или с кнопки и если мы находимся в другом меню – выскакивает всплывающее меню , и отображается состояние выхода на несколько секунд. После, программа возвращается в прежний пункт меню.

Меню: “DOOR CTRL – меню управления электрозамком. Также, замком можно управлять с ПК и специальными кнопками.

При управлении с ПК или с кнопки и если мы находимся в другом меню – выскакивает всплывающее меню , и отображается состояние замка на несколько секунд. После, программа возвращается в прежний пункт меню.

Для перемещения по меню, нужно нажимать кнопку “MENU”.
Кнопками “+” и “-” – набирается необходимое значение в настройках.

Внимание! С ПК можно программировать устройство. Задавать значения температуры, дельты, режима работы термостата, алгоритма и т.д.

В заключение хотелось бы сказать что применение устройство найдет там, где необходим мониторинг и поддержание температуры.

К примеру:  – в квартире 

 – в частном доме

Дополнение статьи:

По просьбе трудящихся , выкладываю сюда два куска кода для обмена по RS232.
PS: Прошу только не критиковать код, особенно это касается кода приложения для ПК, опыта еще мало . Это было моё второе приложение под OS Windows. 

1) Со стороны МК. код написан на языке C.

2) Со стороны ПК код написан на C# (Си шарп).

Итак , со стороны МК:

void rx_tx_func() // функция обработки приема/передачи данных
{ unsigned char x=0; printf(“T= %d %d %d xf8C END

“, temp0/10, temp1/10, temp2/10); printf(“U= %dV

“, read_adc(0)); printf(“W

“); // отправляем запрос данных delay_ms(25); // ждем пока получим #asm(“cli”) if (rx_buffer[x] == 'P') // получаем настройки температуры { } else if(rx_buffer[0] == 'X') // нет данных для сохранения (ПК не хочет отправлять настройки) { printf(“OK ARTOS!

“);// устройство подключено к ПК и синхронизировано } else if(rx_buffer[0] == 'D') // ответ ПК “Данные корректны!” Температура и время циклов { printf(“OK ARTOS! SETTING TEMP

“);// подтверждаем что приняли ответ } else if(rx_buffer[0] == 'O') // включаем устройство { printf(“OK ARTOS! POWER ON DEVICES

“);// подтверждаем что приняли ответ if(power) power=0; else power=1; } else if(rx_buffer[0] == 'R') // сбрасываем / анулируем работу { printf(“OK ARTOS! RESET DEVICES

“);// подтверждаем что приняли ответ flags_start=0; } else if(rx_buffer[0] == 'E') // стартуем ! { printf(“OK ARTOS! START DEVICES

“);// подтверждаем что приняли ответ flags_start=1; } else if(rx_buffer[0] == 'A') { printf(“Devices connect!

“); // устройство подключено к ПК! } else { printf(“Devices disconnect!

“); // ERROR устройство не подключено к ПК! } for(x=0; x 100) { this.Controls[“button23”].BackColor = Color.FromName(“yellow”); timer_ = 101; } timer_1 = 0; } else if ((buffer[i + 9] – 23) == 48) { timer_ = 0; if (++timer_1 > 100) { this.Controls[“button23”].BackColor = Color.FromName(“grey”); timer_1 = 101; } } if (((buffer[i + 9] – 23) & 0x10) == 0x10) data_disp7 = “TEN ON!”; else data_disp7 = “TEN OFF!”; if (((buffer[i + 9] – 23) & 0x04) == 0x04) data_disp2 = “”; else if (((buffer[i + 9] – 23) & 0x04) == 0x00) { data_disp2 = “”; } if (((buffer[i + 9] – 23) & 0x01) == 1) end_process = true; else end_process = false; data_disp9 = Convert.ToString(buffer[i + 10] – 23); data_disp10 = Convert.ToString(buffer[i + 11] – 22); } else if (buffer_m == 50) { data_disp0 = “ERR!”; data_disp3 = “—“; data_disp4 = “—“; data_disp5 = “—“; data_disp1 = Convert.ToString((buffer[i + 4] + 16) + “V”); } else if (buffer_m == 49) { data_disp0 = “HOT!”; data_disp1 = Convert.ToString((buffer[i + 4] + 16) + “V”); data_disp3 = “—“; data_disp4 = “—“; data_disp5 = “—“; } else { data_disp0 = “FERR!”; data_disp1 = Convert.ToString((buffer[i + 4] + 16) + “V”); data_disp3 = “—“; data_disp4 = “—“; data_disp5 = “—“; } if (select_ == 5) { for (int x = 0; x < 15; x++) // принимаем настройки { data_text[x] = buffer[i + 12]-23; i++; } data_disp2 = "Read setting OK!"; flags_up = 1; select_ = 4; } flags_read = 0; flags_devices = true; } else if (buffer[i] == 'W' && buffer[i + 1] == '=' && buffer[i + 2] == ' ') { flags_read = 1; switch (select_) { case 0: Port.Write("O"); Flags_thread = 1; for (int x = 0; x < buffer.Length; x++) buffer[x] = 0x00; break; case 1: Port.Write("EEEEEEE"); Flags_thread = 1; for (int x = 0; x < buffer.Length; x++) buffer[x] = 0x00; break; case 2: Port.Write("RRRRRRR"); Flags_thread = 1; for (int x = 0; x < buffer.Length; x++) buffer[x] = 0x00; break; case 3: Port.Write("S"); // отправляем команду на запись настроек темп+циклы for (int x = 0; x < data_text.Length; x++) // отправляем настройки { data_port[x] = (byte) (data_text[x]+23); } Port.Write(data_port, 0, data_port.Length); break; case 4: Port.Write("A"); // отсылаем ответ: "устройство подключено" break; case 5: break; case 6: Port.Write("ooooooo"); // on light select_ = 4; break; case 7: Port.Write("fffffff"); // off light select_ = 4; break; case 8: Port.Write("nnnnnnn"); // one select_ = 4; break; case 9: Port.Write("ddddddd"); // off light select_ = 4; break; } flags_devices = true; } else if (buffer[i] == 'P' && buffer[i + 1] == 'O' && buffer[i + 2] == 'K') { select_ = 4; flags_devices = true; } }; Thread.Sleep(200); //Thread freeses for 200 ms before the next iteration Flags_thread = 1; flags_buff = 1; } } catch(Exception ThreadAbortException /*ex*/ /*ThreadAbortException*/){ //If there is abort exception Port.Close(); //Closes port to avoid access and dispose problems //MessageBox.Show("Ошибка СОМ порта! Пожалуйста, проверьте настройки"); flags_devices = false; } }

Полный проект для ПК можно взять с архива: “модификация! Основной код.rar”.

Возможен также вариант модификации как прошивки так и программного обеспечения для ПК по индивидуальному заказу.

В этой теме можно оперативно получить помощь по данной разработке

Список радиоэлементов

ОбозначениеТипНоминалКоличествоПримечаниеМагазинМой блокнотU1U2-U4U5Q1Q2, Q3D1-D7С1, С2С3С4-С6С7, С7R1, R4, R5R2R3R6R7, R10, R10R8, R9, R9R11RV1Х1LCD1BUZ1RL1, RL2
МК AVR 8-бит ATmega16 1 Поиск в Utsource В блокнот
Датчик температуры DS18B20 3 Поиск в Utsource В блокнот
Линейный регулятор LM1117-N 1 На напряжение 5 Вольт Поиск в Utsource В блокнот
MOSFET-транзистор IRLML2402TR 1 Поиск в Utsource В блокнот
MOSFET-транзистор AUIRL3705N 2 Поиск в Utsource В блокнот
Выпрямительный диод 1N4148 7 Поиск в Utsource В блокнот
Конденсатор 22 пФ 2 Поиск в Utsource В блокнот
Конденсатор 1000 пФ 1 Поиск в Utsource В блокнот
Конденсатор 0.1 мкФ 4 С5 в схеме именуется дважды Поиск в Utsource В блокнот
Электролитический конденсатор 100 мкФ 2 Также именуется дважды Поиск в Utsource В блокнот
Резистор 4.7 кОм 3 Поиск в Utsource В блокнот
Резистор 220 кОм 1 Поиск в Utsource В блокнот
Резистор 10 кОм 1 Поиск в Utsource В блокнот
Резистор 75 Ом 1 Поиск в Utsource В блокнот
Резистор 1 кОм 3 Поиск в Utsource В блокнот
Резистор 47 кОм 3 Поиск в Utsource В блокнот
Резистор 1 Ом 1 Поиск в Utsource В блокнот
Переменный резистор 22 кОм 1 Поиск в Utsource В блокнот
Кварцевый резонатор 12 МГц 1 Поиск в Utsource В блокнот
LCD-дисплей LM016L 1 Поиск в Utsource В блокнот
Тактовая кнопка 6 Поиск в Utsource В блокнот
Буззер 1 Поиск в Utsource В блокнот
Реле NTE-R24-12 2 Поиск в Utsource В блокнот
Моторизированный замок 1 Поиск в Utsource В блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Источник: http://cxem.net/house/1-367.php

СВ3010/1-232,-485 – вольтметр с интерфейсом передачи данных RS-232 или RS-485 (CB3010/1-232,-485)

Особенности

Описание

Спецификация

Комплектация

  • Класс 0,1
  • Предназначен для поверки приборов класса 0,3 и ниже
  • Межповерочный интервал – 2 года
  • С интерфейсом передачи данных (на выбор: RS-232 или RS-485)

Вольтметр СВ-3010/1 с пределами измерения 7,5 В–15 В–30 В–60 В. С интерфейсом передачи данных (на выбор: RS-232 или RS-485).

Класс точности 0,1. Производит точные измерения постоянного и действующих значений напряжения, и предназначен для поверки приборов постоянного и переменного тока класса точности 0,3 и ниже.

CB3010/1 индицирует измеренные значения напряжения на цифровом светодиодном индикаторе с высотой цифр 14 мм, имеющем пять десятичных разряда, плюс знак.

Переключение пределов измерения и рода измеряемого напряжения производится с помощью кнопочных переключателей с индикацией значений пределов.

Приборы не имеют дополнительной погрешности при воздействии внешнего магнитного поля с индукцией 0,5 мТл частотой (50±1) Гц при самом неблагоприятном направлении магнитного поля и при изменении напряжения питания и частоты сети в пределах норм.

Общие данные
Пределы основной приведенной погрешности приборов ±0,1% от предела измерения
Пределы измерений 7,5 В – 15 В – 30 В – 60 В
Частотный диапазон измеряемого напряжения от 40 до 1500 Гц
Входное сопротивление вольтметров не менее 100 кОм
входная емкость не более 100 пФ
Пределы дополнительной погрешности, вызванной изменением температуры окружающего воздуха от нормальной до любой температуры в рабочем диапазоне температур не более ±0,1% на каждые 10°С изменения температуры
Питание осуществляется постоянным напряжением от 9 до 18 В или через адаптер от сети переменного тока напряжением (220±22) В, частотой (50±1) Гц
Потребляемая мощность не более 5 Вт
Условия эксплуатации температура окружающего воздуха от 5 до 40°С;относительная влажность воздуха 90% при 25°С
Габаритные размеры не более 225х85х200 мм
Масса не более 1 кг
  • Адаптер сетевого питания – 1 шт.;
  • Комплект измерительных кабелей – 1 шт.;
  • Вольтметр СВ3010/1-232, -485 – 1 шт.;
  • Розетка DB-9F с корпусом DP-9C – 1 шт.;
  • Руководство по эксплуатации – 1 шт.;
  • Формуляр – 1 шт.;
  • Шнур низковольтного питания – 1 шт.

Документы, файлы, паспорт, инструкция СВ3010/1-232,-485

Источник: http://www.elizpribor.ru/catalog/elektroizmeritelnye-pribory/voltmetry/voltmetry-rossiya-i-sng/sv30101-232-485.htm

Ацп микроконтроллера atmega8, цифровой вольтметр

АЦП – аналогово-цифровой преобразователь (ADC- Analog-to-Digital Converter). Преобразует некий аналоговый сигнал в цифровой. Битность АЦП определяет точность преобразования сигнала. Время преобразования – соответственно скорость работы АЦП.

АЦП встроен во многих микроконтроллерах семейства AVR и упрощает использование микроконтроллера во всяких схемах регулирования, где требуется оцифровывать некий аналоговый сигнал.
Рассмотрим принцип работы АЦП.

Для преобразования нужен источник опорного напряжения и собственно напряжение, которое мы хотим оцифровать (напряжение, которое преобразуется должно быть меньше опорного). Также нужен регистр, где будет храниться преобразованное значение, назовем его Z.

Входное напряжение = Опорное напряжение*Z/2^N, где N – битность АЦП. Условимся, что этот регистр, как у ATmega8, 10-ти битный. Преобразование в нашем случае проходит в 10 стадий. Старший бит Z9 выставляется в единицу.

Далее генерируется напряжение (Опорное напряжение*Z/1024), это напряжение, с помощью аналогового компаратора сравнивается с входным, если оно больше входного, бит Z9 становиться равным нулю, а если меньше – остается единицей.

Далее переходим к биту Z8 и вышеописанным способом получаем его значения. После того, как вычисление регистра Z окончено, выставляется некий флаг, который сигнализирует, что преобразование закончено и можно считывать полученное значение.

На точность преобразования могут очень сильно влиять наводки и помехи, а также скорость преобразования. Чем медленнее происходит преобразования – тем оно точней.

С наводками и помехами следует бороться с помощью индуктивности и емкости, как советует производитель в даташите:

В микроконтроллерах AVR как источник опорного напряжения может использоваться вывод AREF, или внутренние источники 2,56В или 1,23В.

Также источником опорного напряжения может быть напряжение питания. В некоторых корпусах и моделях микроконтроллеров есть отдельные выводы для питания АЦП: AVCC и AGND.

Выводы ADCn – каналы АЦП.

С какого канала будет оцифровываться сигнал можно выбрать с помощью мультиплексора.
Теперь продемонстрируем примером сказанное выше. Соорудим макет, который будет работать как вольтметр с цифровой шкалой. Условимся, что максимальное измеряемое напряжение будет 10В. Также пусть наш макет выводит на ЖКИ содержимое регистра ADC.

Схема подключения:

Обвязка микроконтроллера и ЖКИ WH1602A стандартна. X1 – кварцевый резонатор на 4 Мгц, конденсаторы С1,С2 – 18-20 пФ. R1-C7 цепочка на выводе reset по 10 кОм и 0,1 мкФ соответственно.

Сигнальный светодиод D1 и ограничивающий резистор R2 200 Ом и R3 – 20 Ом. Регулировка контраста ЖКИ – VR1 на 10 кОм. Источник опорного напряжения мы будем использовать встроенный на 2,56В.

С помощью делителя R4-R5 мы добьемся максимального напряжения 2,5В на входе PC0, при напряжении на щупе 10В.

R4 – 3 кОм, R5 – 1 кОм, в их номиналу нужно отнестись тщательно, но если не возможности подобрать точно такие, можно сделать любой резистивный делитель 1:4 и программно подкорректировать показания, если это потребуется. Дроссель на 10мкГн и конденсатор на 0,1 мкФ для устранения шумов и наводок на АЦП на схеме не показан. Их наличие подразумевается само собой, если используется АЦП. Теперь дело за программой:

Программа на языке Си:

  1. #include<\p>

  2. #define RS 2 //RS=PD2

  3. #define E 3 //E=PD3

  4. #define TIME 10 //Константа временной задержки для ЖКИ

  5. //Частота тактирование МК – 4Мгц

  6. #define R_division 3.837524 //=R4/R5 константа

  7. unsigned int u=0; //Глобальная переменная с содержимым преобразования

  8. void pause (unsigned int a)<\p>

  9. {<\p>

  10. unsigned int i;

  11. for (i=a;i>0;i–);

  12. }

  13. void lcd_com (unsigned char lcd) //Передача команды ЖКИ

  14. {<\p>

  15. unsigned char temp;

  16. temp=(lcd&~(1

Источник: https://avrlab.com/node/94

Универсальная схема для построения измерительных устройств, МК Atmega8 – LED 2х3

На основе этой базовой схемы, можно сделать несколько устройств для автоматики:

освещения,  влажности, давления, термостата, вольтметра, амперметра, различные  варианты комбинаций 2 в 1. 

Базовая схема.

Эта схема представляет собой двухканальную измерительную схему, работающая с применением резистивных датчиков.

Каждый датчик управляет соответствующим каналом нагрузки с задаваемым порогом срабатывания, что делает эту схему реально полезной.

Практическое применение – измерение давления, уровня жидкости, освещенности, влажности, температуры, тока, напряжения и т.д. и их сочетаний,  два в одном устройстве.

Принципиальная схема базового блока выглядит так: (МК, кнопки, светодиодные индикаторы) и аналоговой части измерения. Порты МК PC5 и PC4 задействованы как аналоговые входы для датчиков. Можно подключать как отдельные резистивные датчики, так и схему с операционными усилителями.

По существу здесь изображена схема двух канального вольтметра.

Но не во всех измерительных приборах достаточно двух резисторов на измерительных входах чтобы получить полнофункциональную схему.

Поэтому дополнительно к этой схеме в зависимости от поставленной задачи добавляем некоторые части схем, вот несколько примеров:

Программа МК.

Программа для этой схемы создана  с помощью BASCOM-AVR. 

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

МАСТЕРок писал: описание функций и меню.

ОПИСАНИЕ:

* 2 независимые канала АЦП, управляющие соответствующим каналом нагрузки;

* 2 светодиодных дисплея, каждый отвечает за свой канал;

* программное переключение типа индикаторов (ОА или ОК);

* диапазон значений уставок от 0 до 100, от 0 до 999 (в отдельных файлах прошивок);

* при неверном вводе уставок, появляется сообщение ошибки на дисплее соответствующего канала;

* осуществлен автоматический выход из меню через ~5 сек;

* автоматическое определение рабочего режима (нагреватель/охладитель)  –    при tont>toff – режим охладителя (для варианта термостат);                        

* возможность изменения положения точки на обоих индикаторах (разделительная запятая);

* все настройки сохраняются в энергонезависимой памяти EEPROM.

УПРАВЛЕНИЕ:

В основном режиме осуществляется индикация показаний датчиков на соответствующем индикаторе.

Нажатием кнопки “Выбор”  происходит выбор уставок порога срабатывания каждого канала нагрузки. 

Кнопками “+” и “-” изменение значения уставок. Каждый пункт меню поясняется подсказкой (On1, Of1, On2, Of2).

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

Переход в основной режим поясняется подсказкой “—”. 

В случае неверного ввода уставок (On1 = Of1, либо On2 = Of2), появляется сообщение ошибки “Err” на дисплее соответствующего канала;

* В схеме применяются однотипные семисегментные светодиодные индикаторы как с ОА, так и с ОК.

Переключение типа индикаторов программное. Удерживая кнопку “Выбор” , подаем питание на устройство, переключение подтверждается зажиганием всех сегментов индикаторов. (Удерживать кнопку  “Выбор”  не менее 5 секунд , после подачи питания)

По умолчанию в прошивке установлен тип индикаторов с ОА.

* Для индикации дробной части показаний предусмотрена возможность изменения положения точки на обоих индикаторах.

Переключение по кругу для каждого индикатора.

Для первого индикатора: в основном режиме удерживая кнопку “+”, нажать на кнопку “Выбор”.

Для второго индикатора: в основном режиме удерживая кнопку “-”, нажать на кнопку “Выбор”.

Режимы уставок tontoff:

Рассмотрим работу уставок одного канала режим  для варианта термостат :  при ton< t t>toff – режим охладителя .     ( на выходе МК РС4(РС5)  подключен светодиод который имитирует включение нагрузки)                 

Пример нагреватель ton t = 2,0°С >  toff=24,0°С•    Текущая температура 22 градусов. (РС4(РС5) = 0, светодиод ВЫКЛ.)•    Такое состояние будет сохранятся пока температура не достигнет  ton = 26,0°С.

•    Когда температура достигнет 26,0°С состояние выходе МК изменится(РС4(РС5) = 1, светодиод ВКЛ.). •    Такое состояние будет сохранятся пока температура не опустится до toff. = 24,0°С.

•    Когда температура опустится до 24,0°С состояние выходе МК изменится (РС4(РС5) = 0, светодиод ВЫКЛ.)

•    И так далее….

Практическое применение схемы. 

Вольтамперметр 0 – 50,0V , 0 – 9,99А с раздельно настраиваемой защитой по напряжению и току ( здесь возможно изменение положения точки разрядности пользователем из меню,   светодиоды имитируют включение исполнительных устройств).

Схема:

Проект в протеус.

Плата для корпуса DIP-28:

Плата для корпуса TQFP-32 :

Для схемы приведенной выше, с данными печатными платами, вывод информации осуществляется так:

 – плата для корпуса DIP-28, верхний индикатор V, нижний индикатор  А
 – плата для корпуса TQFP-32, верхний А, нижний V

Детали: LED индикаторы 0.36″ (9мм) ОА или ОК, смд резисторы 1206, рекомендуемые подстроечные резисторы 3266 или 3296.

Архив файлов для  сборки Универсальной схема для построения измерительных устройств.

–    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    – 

Версия II вольтамперметра  с  автоматическим  выбором измеряемого диапазона силы тока, подробнее Вольтамперметр II МК Atmega8 

–    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    – 

# На основе базовой  схемы собран так же, Цифровой манометр  – на автомобильном датчике давления ММ393а и второй канал температура – датчик NTC термистор 640-10k. 

–    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    – 

# Применение базовой схемы с выводом на LED,

в статье Отрицательные показания на универсальной схеме, МК Atmega8 – LED 2х3.

–    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –    –  

FUSE:

Программа написана для работы МК на тактовой частоте 8 МГц. МК тактируется от внутреннего RS осциллятора.

Вообще-то количество практических схем  сделанных на основе этой схемы  разнообразно, поэтому чтобы легче было понять, варианты применения, воспользуемся такой таблицей.

                                         Таблица прошивок к устройствам  измерительных устройств.   

Источник: http://sxem.org/2-vse-stati/24-izmereniya/61-universalnaya-skhema-dlya-postroeniya

Часы – термометр – вольтметр

Источник: http://elwo.ru/index/86-609-5-3

СВ3010/2-232,-485

СВ3010/2-232,-485 ― вольтметр с интерфейсом передачи данных RS-232 или RS-485 (CB3010/2-232,-485)

СВ3010/2-232, -485 – вольтметр с интерфейсом передачи данных
Назначение вольтметра CB 3010/2

Вольтметр СВ-3010/2 с пределами измерения 75 В – 150 В – 300 В – 600 В. С интерфейсом передачи данных (на выбор: RS-232 или RS-485). Класс точности 0,1.

Производит точные измерения постоянного и действующих значений напряжения, и предназначен для поверки приборов постоянного и переменного тока класса точности 0,3 и ниже.

CB3010/2 индицирует измеренные значения напряжения на цифровом светодиодном индикаторе с высотой цифр 14 мм, имеющем пять десятичных разряда, плюс знак. Переключение пределов измерения и рода измеряемого напряжения производится с помощью кнопочных переключателей с индикацией значений пределов.

Приборы не имеют дополнительной погрешности при воздействии внешнего магнитного поля с индукцией 0,5 мТл частотой (50±1) Гц при самом неблагоприятном направлении магнитного поля и при изменении напряжения питания и частоты сети в пределах норм

Вольтметры Россия и СНГ Прайс-лист
Все модели  Новинки  Аксессуары 

Госреестр РФ

В1-18/1** вольтметр-калибратор цифровой постоянного тока (B 1-18/1)
цена 72 500 руб.    

В1-28 вольтметр-калибратор универсальный (B 1-28)
цена 265 000 руб.    

В2-38 ― нановольтметр (B2-38)
цена 48 900 руб.    

В2-39 ― нановольтметр постоянного напряжения (В 2-39)
цена 357 950 руб.    

В3-36 ― милливольтметр (B3-36)
цена 15 000 руб.    

В3-38А ― милливольтметр (B3-38A)
цена 17 000 руб.    

В3-38Б ― милливольтметр (B3-38Б)
цена 17 000 руб.    

В3-38В ― вольтметр-милливольтметр цифровой (В 3-38 В)
цена 17 000 руб.    

В3-43 ― милливольтметр (B3-43)
цена 10 000 руб.    

В3-48А ― аналоговый стрелочный вольтметр-милливольтметр (В 3-48 А)
цена 22 000 руб.    

В3-49 ― цифровой прецизионный вольтметр-милливольтметр (В 3-49)
цена 49 800 руб.    

В3-52/1 ― цифровой вольтметр-милливольтметр (В 3-52/1)
цена 27 800 руб.    

В3-55А ― милливольтметр (B3-55A)
цена 17 000 руб.    

В3-56 ― аналоговый стрелочный вольтметр-милливольтметр (В 3-56)
цена 21 000 руб.    

В3-57 ― аналоговый стрелочный вольтметр-милливольтметр (В 3-57)
цена 21 000 руб.    

В3-59 ― милливольтметр (B3-59)
цена 49 000 руб.    

В3-60 ― милливольтметр (B3-60)
цена 60 000 руб.    

В3-62 ― милливольтметр (B3-62)
цена 79 200 руб.    

В3-63 ― цифровой вольтметр переменного тока (В 3-63)
цена 268 000 руб.    

В3-71 ― цифровой вольтметр переменного тока (В 3-71)
цена 97 230 руб.    

В3-71/1 ― цифровой вольтметр переменного тока (В 3-71/1)
цена 143 190 руб.    

В4-24 ― цифровой вольтметр-милливольтметр импульсного напряжения (В 4-24)

цена по запросу запросить

В4-24 ― вольтметр импульсный (B4-24)
цена 169 900 руб.    

В4-24/1 ― вольтметр импульсный (B4-24/1)
цена 169 900 руб.    

В6-10 ― микровольтметр селективный (B6-10)
цена 48 000 руб.    

В6-9 ― микровольтметр селективный (B6-9)
цена 25 000 руб.    

В7-22А ― вольтметр (B7-22A)
цена 10 000 руб.    

В7-26 ― вольтметр (B7-26)
цена 21 000 руб.    

В7-27А ― вольтметр (B7-27A)

цена 22 000 руб.    

В7-30 ― вольтметр (B7-30)

цена 60 000 руб.    

В7-34А ― вольтметр (B7-34A)
цена 28 000 руб.    

В7-35 ― вольтметр (B7-35)

цена 26 700 руб.    

В7-36 ― вольтметр (B7-36)
цена 14 000 руб.    

В7-37 ― цифровой вольтметр-мультиметр (В 7-37) цена 24 000 руб.    

В7-38 ― вольтметр (B7-38)
цена 26 000 руб.    

В7-39 ― цифровой вольтметр-мультиметр (В 7-39)
цена 45 000 руб.    

В7-40 ― вольтметр (B7-40)
цена 70 000 руб.    

В7-40/1 ― цифровой вольтметр-мультиметр (В 7-40/1)

цена 172 930 руб.    

В7-40/3 ― вольтметр (B7-40/3)
цена 70 000 руб.    

В7-40/4 ― вольтметр (B7-40/4) цена 70 000 руб.     В7-40/5 ― цифровой вольтметр-мультиметр (В 7-40/5)

цена 70 000 руб.    

В7-41 ― вольтметр (B7-41)
цена 17 800 руб.    

В7-43 ― цифровой прецизионный вольтметр-мультиметр (В 7-43)
цена 47 810 руб.    

В7-45 ― вольтметр (B7-45)
цена 75 000 руб.    

В7-46/1 ― цифровой вольтметр-нановольтметр (В 7-46/1)
цена 65 000 руб.    

В7-47 ― вольтметр (B7-47)
цена 17 800 руб.    

В7-49 ― вольтметр (B7-49)
цена 66 000 руб.    

В7-50 ― вольтметр (B7-50)
цена 28 000 руб.    

В7-53 ― универсальный цифровой вольтметр (В 7-53)
цена 77 434 руб.    

В7-53/1 ― универсальный цифровой вольтметр (В 7-53/1)
цена 76 805 руб.    

В7-54/2 ― универсальный цифровой вольтметр (В 7-54/2)
цена 230 567 руб.    

В7-54/3 ― универсальный цифровой вольтметр (В 7-54/3)
цена 366 200 руб.    

В7-58 ― универсальный цифровой вольтметр (В 7-58)
цена 42 417 руб.    

В7-58/2 ― универсальный цифровой вольтметр (В 7-58/2)
цена 26 404 руб.    

В7-61 ― универсальный цифровой вольтметр-мультиметр (В 7-61)
цена 66 344 руб.    

В7-62 ― универсальный цифровой вольтметр-мультиметр (В 7-62)
цена 71 507 руб.    

В7-64/1 ― универсальный цифровой вольтметр-мультиметр (В 7-64/1)
цена 150 004 руб.    

В7-65 (В7-65/3) ― универсальный цифровой вольтметр-мультиметр (В 7-65, В 7-65/3)
цена 124 340 руб.    

В7-65/1 (В7-65/4) ― универсальный цифровой вольтметр-мультиметр (В 7-65/1, В 7-65/4)
цена 129 060 руб.    

Вольтметры Россия и СНГ
Госреестр РФ

В7-65/2 ― универсальный цифровой вольтметр-мультиметр (В 7-65/2)
цена 126 700 руб.    

В7-68 ― универсальный цифровой вольтметр-мультиметр (В 7-68)
цена 65 220 руб.    

В7-72 ― универсальный цифровой вольтметр-мультиметр (В 7-72)
цена 275 230 руб.    

В7-73 ― универсальный цифровой вольтметр-мультиметр (В 7-73)
цена 90 531 руб.    

В7-73/1 ― универсальный цифровой вольтметр-мультиметр (В 7-73/1)
цена 90 531 руб.    

В7-73/2 ― универсальный цифровой вольтметр-мультиметр (В 7-73/2)
цена 98 850 руб.    

В7-77 ― универсальный цифровой вольтметр-мультиметр (В 7-77)

цена 73 070 руб.    

В7-80 ― универсальный цифровой вольтметр-мультиметр (В 7-80)
цена 77 082 руб.    

В7-82 ― универсальный цифровой вольтметр-мультиметр (В 7-82)
цена 229 800 руб.    

В7-85 ― вольтметр универсальный (B7-85)
цена 231 570 руб.    

В7Э-42 ― универсальный электрометрический вольтметр (В 7-42 Э)
цена 596 000 руб.    

В8-8 ― измеритель (B8-8)
цена 45 000 руб.    

В9-12 ― преобразователь измерительный (B9-12)
цена 94 600 руб.    

В9-6 ― преобразователь напряжения (B9-6)
цена 44 000 руб.    

ВК3-61А ― вольтметр (BK3-61A)
цена 64 000 руб.    

К540 ― комплект измерительный (K540)
цена 368 813 руб.    

КВЦ-120А (0,25%) ― спектральный цифровой киловольтметр
цена 329 097 руб.    

КВЦ-120А (0,5%) ― спектральный цифровой киловольтметр
цена 329 097 руб.

КВЦ-120А (1%) ― спектральный цифровой киловольтметр
цена 329 097 руб.

РВ7-32 ― вольтметр (PB 7-32)
цена 26 000 руб.    

СВ3010/1-000 ― вольтметр без интерфейса передачи данных (CB3010/1-000)
цена 49 205 руб.    

СВ3010/1-232,-485 ― вольтметр с интерфейсом передачи данных RS-232 или RS-485 (CB3010/1-232,-485)
цена 60 680 руб.    

СВ3010/2-000 ― вольтметр без интерфейса передачи данных (CB3010/2-000)
цена 49 854 руб.    

СВ3010/2-232,-485 ― вольтметр с интерфейсом передачи данных RS-232 или RS-485 (CB3010/2-232,-485)
цена 61 506 руб.    

СВ3020 ― цифровой щитовой вольтметр (CB 3020)
цена 17 440 руб.    

СВ3021 ― цифровой щитовой вольтметр (CB 3021)
цена 15 437 руб.    

ЦВ8500 ― вольтметр переменного тока (ЦВ 8500)
цена 105 449 руб.    

ЦК4801 ― универсальный цифровой вольтметр-мультиметр (ЦК 4801)
цена 27 292 руб.    

Щ300 ― вольтметр универсальный ― комбинированный прибор (Щ 300)
цена 75 519 руб.    

Щ301/1 ― вольтметр универсальный ― комбинированный прибор (Щ 301/1)

цена 101 360 руб.    

Щ301/2 ― вольтметр универсальный ― комбинированный прибор (Щ 301/2)
цена 101 360 руб.    

Щ301/3 ― вольтметр универсальный ― комбинированный прибор (Щ 301/3)
цена 104 074 руб.    

Щ304/1 ― вольтметр универсальный цифровой ― комбинированный прибор (Щ 304/1)
цена 71 300 руб.    

Щ31 ― вольтметр универсальный ― комбинированный прибор (Щ 31)
цена 225 965 руб.    

Источник: https://xn--c1adscgddbcky1b.xn--p1ai/p134408561-sv30102-232-485.html

Вольтметр, термометр и часы на ATMega8

Читать все новости ➔

Устройство (назову его “VTC”), представленное в этом проекте, содержит в себе функции 3-х устройств: вольтметр, термометр и часы. Выполнено оно на микроконтроллере семейства AVR  ATMega8.
Фунционально VTC работает в одном из режимов, который выбирается нажатием кнопки:

  Цифровой вольтметр позволяет измерять постоянное напряжение от 0 до 25 вольт. В качестве контроллера используется ATMEGA8, которая тактуется внутренним RC-генератором 8мГц. Измерения постоянного напряжения производятся при помощи встроенного в контроллер 10-и разрядного АЦП.

Измеряемое напряжение, через делитель R9, R10 поступает на  вход ADC0 (PortC.0 выв.23). После соответствующих преобразований, результат измерения отображается на  4-х разрядном индикаторе  с общим анодом (в моём случае RL-C5620).

Обращайте внимание что они есть разного размера, могут отличаться цоколевкой, ну и включением (ОА и ОК).

  Термометр позволяет измерять тепературу от -50 до +85 гадусов. Хочу заметить, что т.к.

на индикацию температуры отведено 3 разряда, то десятые доли индицируются только в диапазоне −9.9…+85°С, а другие температуры отображаются уже без десятых долей.

При температуре от -10 и ниже, десятая доля больше 0,5 градусов отображается включением точки (как на четвертой картинке ниже).

   Измеритель, представленный в этом проекте, содержит в себе функции сразу 3-х устройств: вольтметр, термометр и часы.

Выполнено оно на микроконтроллере семейства AVR ATMega8 и датчике DS18B20. Управление осуществляется тремя кнопками.

Две для настройки часов, третья SB1 для выбора режима работы. Также присутствует кнопка SB3 которая нужна для вкл/выкл индикатора.

   Часы. Подсчет времени происходит, постоянно, независимо от того какой режим выбран. Настройка осуществляется кнопками “SB2” и “SB4”.

   Термометр. Он позволяет измерять тепературу от -50 до +85 гадусов. Датчиком термометра служит микросхемка DS18B20, считав из нее данные о текущей температуре и сделав необходимые преобразования выводим результат измерения на индикатор.

   Вольтметр. Цифровой вольтметр позволяет измерять постоянное напряжение от 0 до 25 вольт. В качестве контроллера используется ATMEGA8, которая тактуется внутренним RC-генератором 8 МГц.

Измерения постоянного напряжения производятся при помощи встроенного в контроллер 10-и разрядного АЦП. Измеряемое напряжение, через делитель поступает на вход ADC0 (PortC.0 выв.23). После соответствующих преобразований, результат измерения отображается на 4-х разрядном индикаторе с общим катодом.

Обращайте внимание что они есть разного размера, могут отличаться цоколевкой, ну и включением (ОА и ОК).

   Переключение между режимами вольтметра и термометра производится кнопкой SВ1: один раз нажали — термометр, ещё раз — вольтметр, ещё раз – часы и так по кругу. Схема проста в изготовлении и содержит минимум элементов. Прошивку на контроллер скачайте тут.

Принципиальная схема часов с термометром и вольтметром

   Перечень элементов часов:

  1.  Микроконтроллер AtMega8
  2.  Индикатор любой (с небольшим током потребления и с общим катодом)
  3.  Часовой кварц 32768 Гц
  4.  Датчик температуры DS18B20
  5.  Конденсатор 100 нФ
  6.  Резистор 4,7 кОм
  7.  Резисторы 1 кОм 4 шт
  8.  Резистор 11,1 кОм
  9.  Резистор 100 кОм

   Отдельно внимание следует уделить FuseBits. В нашем случае (для CodeVision AVR) они выставляются так как на картинке:

   После окончательной сборки и настройки, часы – термометр – вольтметр вместе с источником их питания (батарейки либо сетевой адаптер) размещаем в небольшом пластиковом корпусе. При необходимости, подбираем резисторами яркость свечения светодиодного индикатора.

   Сборка и испытания устройства: Шимко С.Н.

   Форум по измерительным устройствам на микроконтроллерах

   Схемы на микроконтроллерах

  Комнатная температура
  “плюсовая” температура, погашен незначащий ноль
  температура ниже нуля
  Температура -12,5 градусов
  Такую максимально низкую температуру мне удалось  померять (в морозилке холодильника)

Датчиком термометра служит микросхемка DS18B20, считав из нее данные о текущей   температуре и сделав необходимые преобразования выводим результат измерения на индикатор.

  Часы. Подсчет времени происходит, постоянно, независимо от того какой режим выбран. Кроме того, в случае отключения основного питания, VTC перейдем в эноргосберегающий режим, отключив индикацию и перейдя в режим сна. В этом режиме VTC потребляет 10мкА.

Переключение между режимами вольтметра и термометра производится кнопкой S1: один раз нажали – вольтметр, ещё раз –  термометр, ещё раз -часы и так по кругу.

     Кнопка S2 необходима для перехода из режима часов в режим установки времени. При переходе в этот режим, начинают  моргать разряды, отображающие часы, еще раз нажимаем – моргают минуты. Кнопками S3 (“+”) и S4 (“-” ) выставляем нужное время. Кнопка S5 резервная и в этом проекте пока не исспользуется, поэтому ее устанавливать не нужно.

Наблюдательный радиолюбитель может заметить несоответствие подключения разрядов индикатора. Дело в том что 3-й разряд индикатора это две точки, которые нужны для часов и они здесь исспользуются только в режиме часов. Поэтому я в программе сделал вывод информации сначала на первый разряд, потом на 2-й, 4-й, 5-й и только потом 3-й (только если это режим часов).

Кнопки управления подключены к казалось бы у же занятым индикатором порту, но так и есть, ошибки нет. Поясню: после того как произойдет последовательный выход информации на всех разрядах, порт переключает направление, т.е. становится входом и сканирует наличие нажатых кнопок, а потом опять меняет направление порта и становится выходом.

Этот процесс повторяется снова и снова.

    Для подпитки спящего режима можно применить любые элементы питания от 3 до 4,5 вольт. Наличие основного питающего напряжения контролируется процессором на входе порта PB.5 (вывод 17) через цепочку VD3 и R22.

    Транзисторы p-n-p малой мощности, можно применить BC558, подойдут также 2SA733 или наши КТ361. Диод VD4 необходимо применить с низким сопротивлением перехода, я исспользовал 1N5817, остальные можно поставить 1N4001 (1N4002-1N4007).

Отдельно внимание следует уделить FuseBits. В нашем случае (для CodeVision AVR) они выставляются так:

       

vtc.rar [185,23 Kb] (cкачиваний: 713)  Прошивка контроллера.
vtc_n.rar [176,61 Kb] (cкачиваний: 501) Прошивка контроллера с сигнализацией гололеда: при температуре от +1 до -3 градуса, моргает значек “градус”, привлекая тем самым дополнительное внимание.
vtc-1_v2.2b.rar [28,58 Kb] (cкачиваний: 519) Версия прошивки v2.2bВ этой версии измерение напряжения до 40 вольт
vtc-1-v2.2p.rar [18,38 Kb] (cкачиваний: 151) Версия прошивки v2.2pПо многочисленным просьбам, прошивка у которой в режиме часов моргает разделительная запятая (для тех кому не удалось найти часовой индикатор)
 pcb_vtc-1.rar [161,87 Kb] (cкачиваний: 614) Печатная плата в формате P-CAD.
pcb_igumich.rar [13,28 Kb] (cкачиваний: 271) Печатная плата в формате Layout для МК в DIP корпусе
pcb_boba.rar [31,9 Kb] (cкачиваний: 264) Печатная плата в формате Layout для МК в DIP корпусе

Я это устройство поставил в блок питания. Очень удобно. Вот видео:

Уважаемые посетители собравшие этот проект с МК в DIP корпусе, если Вы желаете поделиться своим вариантом печатной платы, выкладывайте в комментариях ссылки, файлы или фото.

Все вопросы задаем на форуме

первоисточник avrlife.pp.ua

Возможно, Вам это будет интересно:

Источник: http://meandr.org/archives/4028

USB-адаптер для цифрового вольтметра В7-28 на базе Arduino Mega

Наша лаборатория занимается, в числе прочего, измерением электросопротивления различных образцов. Основные рабочие лошадки нашей измерительной установки — цифровые мультиметры американской компании Agilent, такие как 34401A.

Кроме этого, долгое время лежали неиспользуемыми несколько стареньких, но рабочих вольтметров В7-28 (один из них на фото).

Данный вольтметр, правда, уступает по точности и быстродействию «американцам», но всё равно достаточно хорош: точность до 5 десятичных цифр, приемлемая шумность, экранированные входы, а главное — возможность дистанционного управления с ПЭВМ (которые теперь зовутся ПК).

Использовать их не получалось по следующим причинам:

  • Нестандартный аппаратный интерфейс: на задней панели имеются два разъёма с 56 и 22 контактами, по которым В7-28 принимает команды и возвращает результаты измерений.

    Непосредственно подключить вольтметр к ПК невозможно;

  • Отсутствие программного интерфейса, то есть какой-нибудь системы управляющих команд. Нужно включить режим измерения постоянного напряжения — извольте подать соответствующую комбинацию цифровых уровней на управляющий разъём.

    Нужно прочитать показания — к вашим услугам 21 цифровой сигнал на разъёме ЦПУ, и так далее.
    При этом программное обеспечение измерительной установки, написанное и отлаженное, использует SCPI команды для управления вольтметрами, и вносить туда поддержку нестандартных интерфейсов было бы слишком сложной задачей.

Таким образом, задача свелась к двум пунктам:

  1. Снабдить В7-28 каким-нибудь современным аппаратным интерфейсом, чтобы подключать его непосредственно к ПК;
  2. «Научить» его понимать SCPI команды, чтобы не трогать высокоуровневое ПО.

Почему Arduino Mega?

У нас нет штатных «электронщиков», которые могли бы разработать и спаять плату микроконтроллера, поэтому нужно было выбрать что-то готовое, и Arduino оказалась тем что нужно.

Не буду перечислять её известные достоинства, но нам она подошла тем, что позволила минимизировать объём пайки и обойтись без специальных программаторов. Из всего «ардуинового» семейства нам подошла только Arduino Mega 2560: только у неё оказалось достаточное количество цифровых входов и выходов.

Плата довольно дорогая, в российских интернет-магазинах итальянский оригинал стоит около 4 тыс. рублей (на момент написания статьи). К счастью, имеется множество китайских аналогов по цене $10 и даже ниже. Связь с ПК у Arduino осуществляется через USB интерфейс, и это решало задачу №1.

Осталось разработать прошивку, которая бы реализовывала бы подмножество SCPI команд и их трансляцию в управляющие сигналы для В7-28.

Реализация прошивки

В качестве отправного пункта мы использовали замечательную библиотеку scpi-parser, любезно написанную коллегой из Чехии. Эта библиотека взяла на себя всю «грязную работу», связанную с синтаксическим разбором SCPI команд, что сэкономило нам до 6 человекомесяцев.

Сердце прошивки — это библиотека scpi-multimeter, которая реализует логику SCPI команд и конечный автомат, занимающийся асинхронным считыванием и обработкой показаний вольтметра. Библиотека абстрагируется от аппаратной части, делегируя работу с портами ввода-вывода вовне, для чего использует некий абстрактный программный интерфейс.

Это позволяет использовать библиотеку практически с любым типом как микропроцессора, так и вольтметра.

И, наконец, сама прошивка — проект v7-28-arduino. Это небольшой по объёму кода проектик, который реализует абстрактный интерфейс библиотеки scpi-multimeter, то есть фактически пишет и читает в цифровые и последовательный порты на плате микроконтроллера.

Дела паяльные

Полностью обойтись без пайки нам, конечно, не удалось, но объём работ оказался довольно небольшой:

  • взять монтажную плату, совместимую с Arduino Mega по расположению контактных отверстий;
  • распаять на монтажной плате штырьковые соединители для установки на плате микроконтроллера;
  • двумя 30-проводными шлейфами связать монтажную плату с разъёмами В7-28;
  • наконец, воткнуть монтажную плату в микроконтроллер: из-за большого числа штырьковых контактов это не так уж просто.

Результат виден на фотографиях. Чтобы уберечь пайку от механических повреждений и «разбалтывания», мы поместили микроконтроллеры с установленными монтажными платами в «фирменные» коробочки. В результате наш адаптер приобрёл пусть не заводской, но довольно приличный вид.

Проверка адаптера

Опустим описание долгого процесса тестирования и отладки прошивки. Когда, наконец, всё было закончено, мы решили подключить В7-28 вместе с Agilent 34401A в одну измерительную установку.

Как говорилось выше, ПО высокого уровня управляет вольтметрами посредством SCPI команд.

В настройках программы мы указали виртуальный COM-порт, соответствующий микроконтроллеру, и:Программа заработала! Теперь у нас стало больше вольметров и мы можем одновременно измерять больше образцов. PROFIT!

Заключение

Кому, кроме нас, может быть интересна эта работа? Во-первых, это, конечно, гордые обладатели В7-28, получившие возможность за умеренные средства снабдить свои вольтметры адаптером, который позволяет их использовать так же просто, как и современные аналоги.

Интерфейсом USB сейчас оборудован любой ПК, а язык команд SCPI «из коробки» понимает LabVIEW и аналогичные средства разработки. Во-вторых, как говорилось выше, основная часть библиотеки не зависит от конкретной марки вольтметра или микроконтроллера. Например, достаточно просто модифицировать прошивку для поддержки других типов вольтметров, например В7-34А.

Всех заинтересованных лиц приглашаем на страницу проекта с исходными текстами, там же имеется ссылка на готовые бинарные сборки и документацию.

Спасибо за внимание!

Источник: https://habr.com/post/259919/

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}