От редактора EDN:
Этот программируемый калибратор и опорный источник будет прекрасным инструментом для вашей домашней лаборатории. Даны все проектные файлы аналоговой секции, в то время как выбор микроконтроллера оставлен за вами.
В этой статье описывается самодельный калибратор напряжения постоянного тока, обеспечивающий хороший баланс между сложностью, точностью и ценой. Вы можете использовать его для проверки оборудования, калибровки АЦП и везде, где может потребоваться точный источник напряжения.
Структура, компоненты, описание работы
Блок-схема калибратора показана на Рисунке 1. Пять кнопок и двухстрочный дисплей позволяют пользователю устанавливать напряжения от –5 В до +10 В с разрешением 100 мкВ. Аналоговая секция, которой управляет микроконтроллер (МК), содержит высокоточный ЦАП (цифро-аналоговый преобразователь), два аналоговых переключателя, два операционных усилителя и четыре согласованных резистора. Всей схеме требуются 12 линий ввода/вывода микроконтроллера. Для питания схемы используются напряжения ±12 В.
Рисунок 1. | Калибратор имеет простой пользовательский интерфейс, и в моем случае требует лишь 12 линий ввода/вывода микроконтроллера. При доступности большего числа линий ввода/вывода схему можно упростить. |
Аналоговая секция калибратора изображена на Рисунке 2. Ее центральным элементом является 16-битный ЦАП LTC2641 компании Linear Technology с типовыми значениями дифференциальной и интегральной нелинейности ±0.5 LSB (младший двоичный разряд). Максимальная величина ошибки смещения и типовая величина ошибки усиления равны 2 LSB и ±2 LSB, соответственно.
Рисунок 2. | Три прецизионные микросхемы, четыре согласованных резистора и микроконтроллер составляют основу калибратора напряжения постоянного тока с разрешением 16 бит и ошибкой 70 мкВ. |
Соответствующее качество должно быть и у остальных элементов схемы. Источник опорного напряжения MAX6225 имеет точность 1 мВ (200 ppm) и дрейф 2 ppm/°C. Максимальное напряжение смещения сдвоенного операционного усилителя OPA2277 равно 10 мкВ при температурном дрейфе 0.1 мкВ/°C. Элементы резисторной сборки MORN согласованы с точностью 0.01%, а температурный коэффициент сопротивлений равен 25 ppm/°C. Сопротивления открытых ключей TS5A3160 равны всего 1 Ом, – это 0.005% от сопротивлений резисторов, что особенно важно для резистора R4.
Аналоговые переключатели S1 и S2 устанавливают четыре диапазона 0…5 В, 0…10 В, ±2.5 В и ±5 В с разрешением 76.3 мкВ или 153 мкВ. Наилучший для требуемого выходного напряжения диапазон микроконтроллер выбирает автоматически.
Управляется калибратор просто и интуитивно понятно. Кнопка Reset (Rst) сбрасывает выходное напряжение в 0.0000 В. Кнопка Select (Sel) выбирает на дисплее символ (знак или цифру) и включает его мигание. Кнопки Up и Down (Dn) изменяют значение мигающего символа. При нажатии кнопки Go мигание дисплей прекращается. Конечно же, могут быть реализованы и другие механизмы управления.
Микроконтроллер вычисляет 16-разрядные коды и посылает их в ЦАП, а также управляет аналоговыми переключателями. Сообщения об ошибках выводятся при попытках установить напряжение ниже –5.0000 В или выше 9.9998 В.
Характеристики схемы проверялись 6.5-разрядным цифровым мультиметром фирмы Keysight. Как видно из Рисунка 3, максимальная ошибка равна ±70 мкВ – половине разрешения схемы 153 мкВ для ширины диапазона 10 В (0…10 В и ±5 В). Для диапазонов шириной 5 В разрешение падает вдвое, и максимальная ошибка уменьшается до ±40 мкВ. Это минимальные значения, которые можно получить с помощью 16-битного ЦАП и источника опорного напряжения 2.5 В или 5 В. Ошибки хорошо соответствуют разрешению 100 мкВ. Шум составлял менее 1 мкВ.
Рисунок 3. | 64 калибровочные точки показывают, что максимальная абсолютная ошибка равна ±40 мкВ при ширине диапазона 5 В, и 70 мкВ при ширине 10 В. |
Конструкцию калибратора я сделал модульной (Рисунок 4). Материнская плата имеет размеры 82 × 67 мм. На ней размещено большинство компонентов и два разъема: 16-контактный для дисплея и 20-контактный для платы микроконтроллера.
Рисунок 4. | В моей версии калибратора использована аналоговая материнская плата собственной разработки с установленными на ней покупными модулями ЖКИ и микроконтроллера. |
Сборка и программирование
Материнская плата была разработана в системе проектирования EAGLE. Если потребуется, 20-контактный разъем вы можете заменить другим, который будет соответствовать плате именно вашего микроконтроллера. Разъем можно вообще убрать, и установить микроконтроллер прямо на материнскую плату.
После сборки платы вы должны приступить к программированию микроконтроллера. Программа состоит из двух основных секций: инициализации и цикла опроса кнопок.
На этапе инициализации выполняется следующее:
- Конфигурируются порты ввода/вывода микроконтроллера;
- Инициализируется дисплей;
- На несколько секунд на дисплей выводится приветственное сообщение;
- На дисплей выводится значение 0.0000 V;
- На выходе аналоговой секции устанавливается напряжение 0.0000 В;
Опрос кнопок происходит в бесконечном цикле. При обнаружении отпущенной кнопки выполняются следующие действия:
Кнопка Reset:
- На дисплей выводится значение 0.0000 V и на выходе аналоговой секции устанавливается напряжение 0.0000 В;
Кнопка Select:
- При первом нажатии кнопки на дисплее начинает мигать знак числа;
- Если кнопка Select нажата вновь, начинает мигать следующий символ. Если уже мигает последний символ строки, начнет мигать символ знака.
При нажатии кнопки Up реакция зависит от того, какая из цифр мигает в этот момент:
- Если мигает знак, он будет заменен на противоположный;
- Если мигает цифра, ее значение увеличится на единицу. Если текущее значение равно 9, новым значением будет 0.
При нажатии кнопки Down реакция зависит от того, какая из цифр мигает в этот момент:
- Если это знак, он меняется на противоположный;
- Если это цифра, ее значение уменьшается на единицу. Если текущее значение равно 0, следующим будет 9;
Действие кнопки Go зависит от установленного напряжения. Все возможные варианты собраны в Таблице 1.
Таблица 1. | ||||||||||||||||||||||||||||||||||||
|
Последовательность шагов, инициируемых кнопкой Go, будет следующей:
- Игнорируя знак и десятичную точку, микроконтроллер преобразует дисплейную строку в число NLCD;
- В зависимости от знака числа, отображаемого на дисплее, и значения NLCD, определяется номер диапазона, представленный во второй колонке Таблицы 1;
- Когда номер диапазона от 1 до 4:
- На основании формул из третьей колонки Таблицы 1 вычисляется NDAC (число, которое должно быть послано в ЦАП);
- Число NDAC посылается в ЦАП;
- На аналоговые переключатели подаются управляющие сигналы, соответствующие двум последним колонкам таблицы;
- Возврат к началу цикла опроса кнопок;
- Когда номер диапазона равен 5 или 6, на дисплей выводится сообщение об ошибке и происходит возврат в начало цикла опроса кнопок.
Для написания кода используйте язык, к которому вы привыкли. Си делает вычисления простыми, а разработку относительно быстрой, хотя сгенерированный код может получиться достаточно большим. С языком ассемблера все наоборот: компактный машинный код и простой обмен с устройствами ввода/вывода, но вычисления сложнее, а время разработки больше.
Несмотря на высокую линейность ЦАП, ошибки усиления и смещения могут быть относительно большими. Чтобы характеристики вашего калибратора соответствовали ожидаемым, проверьте его хорошим цифровым мультиметром (от 6.5 разрядов). Если ошибки превышают 38 мкВ или 76 мкВ (в зависимости от диапазона), скорректируйте числа, посылаемые в ЦАП.
Для справки: я использовал плату микроконтроллера MicroStamp11 компании Technological Arts [1], а программный код написал на ассемблере. Машинный код потребовал 1550 байт EEPROM и 34 байта ОЗУ. Из-за большой разрядности чисел умножение и деление эмулируются инструкциями сдвига-сложения и сдвига-вычитания. Для минимизации ошибок выходного напряжения для трех из четырех диапазонов потребовалось включить небольшие смещения. Сигналы интерфейса SPI, управляющие ЦАП, эмулируются с использованием входов/выходов общего назначения.