» » Универсальный вольтметр - амперметр на PIC16F676 с открытым программным кодом. Часть 1

 
 
 
10

Универсальный вольтметр - амперметр на PIC16F676 с открытым программным кодом. Часть 1

Разместил kotyk7 30 декабря 2012. Просмотров: 54 514

Универсальный вольтметр - амперметр на PIC16F676 с открытым программным кодом. Часть 1

Статья предназначена для широкого круга радиолюбителей, желающих освоить азы работы и программирования микроконтроллеров (МК), а также тех, кто желает «облагородить» свои радиолюбительские устройства. Конструкция базируется на PIC16F676, легко повторяется, изучается и видоизменяется.

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

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

В то время решить подобные вопросы мне было не под силу, но желание где-то «застряло» в моем подсознании. Дополнительным стимулом разобраться в теме и написать статью стало множество писем с вопросами от читателей моих предыдущих статей.
Предлагаю изучить и повторить известную в Сети конструкцию широкого применения — вольтметр на микроконтроллере фирмы Microchip PIC16F676. Хочу сразу предупредить, что данные разработки проверялись мной только на макетке, по сему привычных всем фоток не будет, только знания. В данном случае это не главное. Здесь главное – получение практических навыков программирования и симуляции того что наваяли.

Микросхема PIC16F676 отлично подходит для целей создания компактного вольтамперметра. Имея всего 14 ног, даже в наипростейшем исполнении, чип способен выдать стабильный результат на 3-разрядный светодиодный индикатор.

Во всемирной сети таких наработок несколько, но, в большинстве случаев, радиолюбителю редко подходит то, что подошло кому-то другому. Всегда есть какой-то нюанс, который не устраивает, да и просто ”попугайничать” далеко не всем интересно. Хочется все приспособить для своих, как всегда уникальных, условий. При этом в свободном доступе, за редким исключением, нет полных исходных текстов программ. Либо они написанные в стиле не всегда понятном для понимания начинающих осваивать программирование радиолюбителей. То немногое, что есть, написано на языке Ассемблер, которым на практике владеют ограниченный круг специалистов (да и не прост он в процессе отладки), либо СИ, но со сложными лексемами, структурами и прерываниями. То есть смотришь на программу… она такая маленькая, компактная, но чтобы понять, где что-то изменить/использовать для своих нужд, нужны хорошие знания языка, особенно в части годами накатанных эмбедерами всевозможных сокращений, а тем более тонкостей работы структур и массивов.

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

Схема 1

Для начала за основу возьмем наипростейшую схему вольтметра на МК PIC16F676, предложенную в (3).

Переделывать ее на свой лад нет смысла. Она отлажена и способна в динамическом режиме индицировать значение входного напряжения на 3 разряда светодиодных индикаторов. Здесь важно понимать, что из-за отсутствия буферных транзисторов не удастся подключить индикаторы с большим током потребления. В принципиальную схему заведомо заложено использования небольших индикаторов с малым током потребления. То есть во «главу угла» поставлена компактность готового изделия. От нее и оттолкнемся. Особенно в случае использования деталей в SMD исполнении. При желании, сможем конструктивно ”уложить” МК под сам гибридный индикатор на односторонней плате, даже если он в DIP корпусе.

Описание принципиальной электрической схемы вольтметра и логики его работы

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

IС1 выполняет две основные функции:
 — измерения входного напряжения с помощью встроенного аналогово-цифрового преобразователя (АЦП);
 — формирование динамической индикации для вывода результата измерения.

Сигналы для сегментов индикатора формируются на порте RC0 — RC5. К сожалению, в данном МК он не полон. На него невозможно возложить всю задачу формирования индицируемой цифры. Не хватает одной лини. Выход один: использование возможностей порта RA. Возьмем для этой цели RА2, как физически наиболее близко расположенного к соответствующей ножке индикатора в случае плотного монтажа. Формирование цикла последовательного ”зажигания” разрядов выполняют порты RА0, RА1 и RА5. Немного в разброс, но при монтаже самое то. Для формирования запятой в среднем разряде используется инверсия сигнала включения второго разряда индикатора с помощью отдельного транзистора, ибо свободных портов в микроконтроллере способных выполнить такую задачу уже не осталось. Порт RA3 – работает только на вход, о нем еще расскажем.

Измеряемое напряжение подается на порт RA4 МК, к которому подключен аналоговый вход с АЦП. В РIС16F676 модуль аналого-цифрового 10 разрядного преобразователя имеет восемь каналов, входы которых совмещены с портами ввода/вывода AN0/RA0, AN1/RA1, AN2/RA2, AN3/RA4. AN4/RС0, AN5/RС1, AN6/RС2, AN7/RС3. Физически в микроконтроллере преобразователь АЦП один, но он может поочередно коммутироваться к указанным входам. Модуль АЦП преобразует входное напряжение методом последовательного приближения, при этом возможно использовать опорное напряжение с вывода, совмещенного с портом Vref+/RA2 либо шиной питания Vdd. В нашем случае воспользуемся именно последним вариантом.

Помните, что на вход нельзя подавать напряжение больше 5 Вольт положительной полярности и ни в коем случае — отрицательной. Посему используется ограничительная цепь, состоящая из делителя напряжения на R14, R15, R16, сглаживающего конденсатора С2 и защитного стабилитрона VD1 на 5,1 Вольт. Предложенные на схеме номиналы резисторов рассчитаны на входное напряжение до 50 Вольт. В случае других измеряемых напряжений их надо соответственно пересчитать. По сравнению со схемой в (2) немного изменены номиналы резисторов делителя напряжения в сторону увеличения. Это уменьшит влияние вольтметра на измеряемую цепь в результате большего входного сопротивления.

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

На порт RA3 подсоединен резистор на плюсовую шину питания. Микроконтроллер имеет возможность вместо него присоединять так называемый внутренний резистор подтяжки, подключаемый программным способом, но учитывая, что мы идем от простоты понимания, пока ставим обычный резистор. О третьей причине такого решения станет понятно, когда захочется детально изучить работу схемы в симуляторе. Я указал оба варианта, а какой из них использовать, — решение за Вами в зависимости от уровня практических навыков и знаний. Важно помнить, что к нему по умолчанию подключена цепь VPP – входа напряжения программирования микроконтроллера, а значит, он играет важную роль в т.ч. при внутрисхемном программировании. Если сказать все это коротко – пока не используйте этот порт без крайней на то необходимости.

Не малым преимуществом микроконтроллера является встроенный тактовый генератор, возможностями которого мы и воспользуемся из-за малого количества ног МК.

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

Программная часть проекта

Самый важный и сложный для начинающих раздел. Не буду перечислять все виды существующих компиляторов и трансляторов разных языков программирования, а также их слабые и сильные стороны. Исходя из поставленных задач, предлагаю воспользоваться возможностями продукта фирмы MikroElektronika — ”MikroC PRO” любой доступной версии. При этом акцентирую внимание именно с окончанием ”PRO”. Ибо она имеет встроенную возможность автоматически формировать командный файл для симулятора с расширением типа «*.cof». Для этого необходимо выставить галочку в основных настройках компилятора. Поскольку объем памяти данного МК всего 1Кбайт, на законных основаниях воспользуйтесь бесплатной версией на официальном сайте (3).

Итак, запускаем компилятор, открываем файл проекта (см. раздел «Файлы»). Смотрим текст программы в листинге №1.
Листинг №1
Как видите, в программе нет сложных команд. Все числа и регистры в двоичном формате, который мысленно легко переносится прямо на выводы портов, в отличие от других систем исчисления чисел.

В начале объявлены функции подпрограмм (строки 1-3) и глобальные переменные (4-6). Сроки 7-15 – выведенные в отдельную функцию/подпрограмму команды настройки всех портов и регистров МК. Такая организация подготовки программы дает возможность искать либо изменять начальные команды только здесь, в одном месте, а не по всему телу программы. Практически всю работу с настройки внутренних регистров взял на себя компилятор.

Для удобочитаемости задача формирования динамической индикации выполнена с помощью двух взаимосвязанных функций. Первая – (16-40) генерирует цикл активации соответствующих портов RA (разряды индикатора). Строки 19-20 каждый раз инвертируют полярность выходного напряжения для четкого гашения индицируемой цифры. 25, 29 и 33 строчка — связующее звено с иной подпрограммой: ”void Cod_to_PORT (char DIGIT_NUMBER)”. Отвечает за вывод кода на порт RC для подключения соответствующих сегментов индикатора (формируются цифры измеряемого напряжения).

Самый сложный для понимания остался формат изменения конкретного значения бита в регистре порта в ”ноль”, например:
PORTA &= (~(1<<2)); //0 -> А2
и чуть попроще конструкция для формирования логической единицы. Смотри строку 26 и ей подобные. Используйте их на практике как готовый шаблон. Чтобы понять, как изменить конкретный разряд регистра, не вникая в суть происходящих логических операций, смотрите приложенное схематическое пояснение в ремарке.

Поскольку все операции циклические, а функция вывода кода сегментов шаблонна, последующих детальных объяснений не требуется. Присмотритесь только к способу подключения сегмента ”G” через отдельный порт порта RA с соблюдением временных интервалов.
Главная функция (62-74) в 64 строке обращается к подпрограмме инициализации портов и регистров. После чего переходит в цикл постоянного измерения и индикации полученного результата.

С помощью усилий программистов от фирмы MikroElektronika, в компиляторе работа с АЦП организована «скрытно», по умолчанию, и представлена всего одной строчкой — №66. Очень удобно для начинающих. Строки 67-71 демонстрируют принцип укладки полученных данных регистра АЦП в шкалу вольтметра, а также отделения каждой конкретной цифры из полученного результата для последующей их индикации.

В архивах вы также найдете файлы проекта для симуляции работы цифровых систем ”PROTEUS” от Labcenter Electronics. Используйте его возможности для пошаговой симуляции. При этом просматривайте исполняемую строчку на языке Си, а также выходной потенциал на нужном вам порте. (Смотрите папку «no_тр_ОE_50V»).

Вот в этом случае и станет понятно, зачем порт RA3 подтянут резистором на плюсовую шину питания и не использован внутренний подтягивающий резистор. Проблема кроется в том, что симулятор не станет симулировать работу данного МК, пока к указанному порту не будет приложено положительное напряжение. Чтобы акцентировать на этом внимание и не тратить время на поиски причин неверных сигналов симулятора, при макетировании этот элемент оставлен на схеме. В дальнейшем при желании, можете учесть внутренний резистор в программе (см. даташит).

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

Литература

1. Простой цифровой вольтметр от 0 до 30 Вольт на 3 сегмента
2. Лабораторный блок питания с микроконтроллерным управлением 0…25,5В с двойной защитой, «Радиоаматор» №3, март 2011 г., ст.26-30.
3. //alex-exe.ru/radio/microcontrollers/atd-pic16f676-7seg-old/
4. Официальный сайт компилятора MikroElektronika

Файлы

16f676.7z | Файл 73,75 Kb загружен 275 раз.

Продолжение следует!
Владимир (kotyk7)
Местоположение в тайне.
Профиль kotyk7
О себе автор ничего не сообщил.
 

Понравилось? Палец вверх!

  • всего лайков: 48

Поделись с друзьями!

Связанные материалы:


Схема на Датагоре. Новая статья Вольтметр переменного напряжения на PIC16F676. Прошивка с общим анодом и новая плата на SMD... В нашем журнале от 3 июля 2014 вышла статья Ивана Внуковского (if33) «Простой модульный вольтметр...
Схема на Датагоре. Новая статья Простой модульный вольтметр переменного напряжения на PIC16F676... Простой вольтметр переменного напряжения с частотой 50 Гц, выполнен в виде встраиваемого модуля,...
Схема на Датагоре. Новая статья Программирование микроконтроллеров в AtmelStudio 6. Часть 1. Первые шаги... Современное радиолюбительство невозможно представить без микроконтроллеров, и это очевидно....
Схема на Датагоре. Новая статья Блок питания с защитой + микроконтроллер ATMEGA16, ATMEGA8535, PIC16F877. Часть первая, лирическая... Вниманию сограждан Датагорода предлагаю мой вариант лабораторного блока питания с...
Схема на Датагоре. Новая статья Универсальный вольтметр - амперметр на PIC16F676 с открытым программным кодом. Часть 2... Продолжаем разбираться с вариантами реализации вольтметра — амперметра на базе микропроцессора....
Схема на Датагоре. Новая статья Современный станок с ЧПУ. А. Ловыгин, А. Васильев, С. Кривцов... От автора А. А. Ловыгина: Ни для кого не секрет, что на полках отечественных книжных магазинов...
Схема на Датагоре. Новая статья Простой цифровой вольтметр от 0 до 30 вольт на 3 сегмента... Здравствуйте, уважаемые Датагорцы! Делая разные полезные, а иногда и не очень, радиоелектронные...
Схема на Датагоре. Новая статья Сделай сам RMS-вольтметр на микроконтроллере ATMEGA8... Срочно понадобился RMS вольтметр. Облепил контроллер схемой: Решил сделать блок питания...
Схема на Датагоре. Новая статья В помощь радиолюбителю. Выпуск 12: Информационный обзор для радиолюбителей... В помощь радиолюбителю. Выпуск 12: Информационный обзор для радиолюбителей Автор: Сост. Никитин...
Схема на Датагоре. Новая статья 10 практических устройств на AVR-микроконтроллерах. Книга 2. Кравченко А. В.... 10 практических устройств на AVR-микроконтроллерах. Книга 2. Кравченко А. В. Издательство:...
Схема на Датагоре. Новая статья Цифровой двухканальный ампер-вольтметр для блока питания на МК PIC16F876... Подобные устройства часто встречаются в бескрайних просторах Интернета. Я решил изготовить свой...
Схема на Датагоре. Новая статья 10 практических устройств на AVR-микроконтроллерах. Книга 1. А.В. Кравченко... 10 практических устройств на AVR-микроконтроллерах. Книга 1. А.В. Кравченко Издательство:...
<
  • Гражданин
31 декабря 2012 12:18

Иван Внуковский / if33

  • С нами с 2.03.2010
  • Ушёл в реал Пользователь offline
  • 73 комментария
  • 14 публикаций
 
  • 0
Весьма интересное построение программы.
К сожалению в разделе «Файлы» не нашел файла с Листингом №1
Какая версия ”MikroC PRO” была применена. В mikroC PRO for PIC 2.50 я не смог найти, где включается формирование файла с расширением типа «*.cof».

<
  • Главный редактор
31 декабря 2012 18:21

Игорь Петрович Котов / Datagor

  • С нами с 25.02.2011
  • Ушёл в реал Пользователь offline
  • 1 638 комментариев
  • 261 публикация
 
  • 0
Скорее всего речь о файле проекта MyProject.c из папки no_тр_ОE_50V.
Про «*.cof» к сожалению не знаю.

<
  • Гражданин
1 января 2013 01:15

Владимир / kotyk7

  • С нами с 8.11.2009
  • Ушёл в реал Пользователь offline
  • 30 комментариев
  • 5 публикаций
 
  • 0
Какая версия ”MikroC PRO” была применена. В mikroC PRO for PIC 2.50 я не смог найти, где включается формирование файла с расширением типа «*.cof».

Использована: MikroC Pro v5.6.1. Но это не важно. Должно быть и у Вашей версии. Можно скачать и самую новую на их сайте.
Включение генератора "COF" происходит так:
Включаем компилятор. С главной странички входим в "Tools'' - "Options" - закладка "Output Settings" ставим галочку у опции "Generate COFF file". Apply - OK. Все. Будет работать.

К сожалению в разделе «Файлы» не нашел файла с Листингом №1

Все верно Mr.Datagor подметил. Первая часть описывает только файлы из папки "no_тр_ОE_50V" остальное в продолжении.

P.S.
Ссылка №2:
PORTA &= (~(1<<2)); //0 -> А2

у меня в тексте отображается с "глюком". А когда вставляю в коментарий отображается правильно. Не знаю что это.

<
  • Гражданин
1 января 2013 15:47

Иван Внуковский / if33

  • С нами с 2.03.2010
  • Ушёл в реал Пользователь offline
  • 73 комментария
  • 14 публикаций
 
  • 0
Спасибо, оказалось что формирование файла с расширением типа «*.cof» можно включить , начиная с версии MikroC Pro v3.2.
Индикатор вольтметра при различных количествах включенных сегментов будет светить с разной яркостью, так ка по резисторам R1, R10, R11 протекает сумма токов включенных сегментов. Необходимо замкнуть эти резисторы, а у резисторов R2-R9 изменить номинал на 430 ом и тогда ток через каждый сегмент будет не зависеть от других.
PORTA |= (1<<0); // 1 -> A0 - выражение довольно сложное. Есть смысл его заменить на более простое
PORTA |= 0b000001; или PORTA.b0 = 1;
Аналогично, {PORTA &= (~(1<<2)); включение сегмента g - заменить на
PORTA &= 0b111011; или PORTA.b2 = 0;
Я проверил все замены, работа программы не изменилась, а для понимания стала проще.

P.S. Эта тема мне довольно близка - я в прошедшем году собрал блок питания из компьютерного AT 200W с регулировкой напряжения от 0 до 30 вольт и тока от 0 до 11 ампер. При этом вольтметр-амперметр выполнен на PIC16F690 и имеет шкалы напряжения 0-32 вольта и тока 0-12 ампер, причем у амперметра шкалы переключаются программно 0 - 9,99А и 10,0 - 12,0А. Шкалы легко меняются на любые 3-значные. Если интересно можно выложить статью.

<
  • Гражданин
1 января 2013 22:12

Сергей / Chugunov

  • С нами с 30.09.2009
  • Ушёл в реал Пользователь offline
  • 309 комментариев
  • 29 публикаций
 
  • 0
я в прошедшем году собрал блок питания из компьютерного AT 200W с регулировкой напряжения от 0 до 30 вольт и тока от 0 до 11 ампер. При этом вольтметр-амперметр выполнен на PIC16F690 и имеет шкалы напряжения 0-32 вольта и тока 0-12 ампер, причем у амперметра шкалы переключаются программно 0 - 9,99А и 10,0 - 12,0А. Шкалы легко меняются на любые 3-значные. Если интересно можно выложить статью.

Интересно.

<
  • Гражданин
3 января 2013 01:31

Владимир / kotyk7

  • С нами с 8.11.2009
  • Ушёл в реал Пользователь offline
  • 30 комментариев
  • 5 публикаций
 
  • 0
PORTA |= (1<<0); // 1 -> A0 - выражение довольно сложное. Есть смысл его заменить на более простое
PORTA |= 0b000001; или PORTA.b0 = 1;

Как говорят мудрецы: "Не все то золото, что блестит"
Это лирика, а по сути, если так сделать, работоспособность не гарантируется, проверено на практике.
С виду по логике, эти команды близки даже какбуд-то взаимноодиннаковые. Но на практике результат не всегда совпадает с желаемым.
Возможно проблема в интерпритации управления ячейками регистра порта МК в самом компиляторе. Не даром же уважаемые эмбеддеры придумали такое "заумное" выражение. Пока я заметил, что предложенная IF33 метематика "сбивает" значения ячеек выходного регистра по линиям управления разрядов индикатора. Ведь оные совмещены в одном регистре. Почему? Пока не знаю, пользуюсь "как есть" и Вам желаю. Со временем ответ я найду.

<
  • Гражданин
4 января 2013 12:03

Игорь / AudioKiller

  • С нами с 10.01.2012
  • Ушёл в реал Пользователь offline
  • 293 комментария
  • 3 публикации
 
  • 0
Я не вникал в статью, но вопрос все же задам: а нельзя ли взять за основу надежный микроконтроллерный измеритель, а все "добавки", типа расширения пределов измерений делать аналогово? Если не нужно вычислять "правильное" RMS, то такой путь может оказаться проще.

<
  • Гражданин
5 января 2013 00:59

Владимир / kotyk7

  • С нами с 8.11.2009
  • Ушёл в реал Пользователь offline
  • 30 комментариев
  • 5 публикаций
 
  • 0
Mr.AudioKiller, безусловно можно "баловаться" с аналоговой частью и тем самым изменять предел измерения. Но к сожалению не кардинально. Тоесть в небольших пределах. Но стоит ли это делать? Например, если предел вольтментра расчитан на 30 вольт то измерять им 50 В уже не получится. Разве что в уме пересчитывать коэфициент и на 300 вольт как-то не с руки, одного нуля не хватает. Не говорю о милливольтметре на 3.00 вольт.
Хотя все это через одно место можно и делать, но зачем? Если есть готовое устройство с открытой программой. Подправил одну строку под себя и пользуйся на здоровье. А то еще предложите по входу подключть магазин штатных резисторов, такой удобный и большой толстой ручкой из учебной лаборатории. Шутка...

Mr.FOLKSDOICH предложенная Вами статья безусловно интересна. Но она, как по мне довольно избыточна по регистрам управления индикаторов. Зачем так много индикаторов сразу. Плюс дополнительные корпуса микросхем. Может автору это и подойдет, а Вам нужет такой же монстр?

Кстати уже упоминавшийся PIC16F690 действительно неплох. В одном корпусе можно сделать сбалансирований гибрид вольтметра и амперметра, если надо конечно. Но он чуток больше по габаритам и цене. Решать Вам. А программная часть легко адаптируется к этому чипу.

<
  • Гражданин
5 января 2013 03:24

Игорь / AudioKiller

  • С нами с 10.01.2012
  • Ушёл в реал Пользователь offline
  • 293 комментария
  • 3 публикации
 
  • 0
Цитата: kotyk7
изменять предел измерения. Но к сожалению не кардинально. Тоесть в небольших пределах. Но стоит ли это делать? Например, если предел вольтментра расчитан на 30 вольт то измерять им 50 В уже не получится.

Ну-ну, посмотрим, как вы подадите на микроконтроллер 300 вольт. bye После такого в программе только нецензурные строки останутся. blum

Дело в том, что любой АЦП, в том числе и встроенный в контроллер, имеет максимальный предел измерения, равный опорному напряжению (это либо напряжение питания, либо что-то типа 1,25 вольт). Т.е. если на вход АЦП подать именно такое напряжение, то выходной код будет "все единицы". Допустим для простоты, что опорное напряжение = 2 вольта и АЦП имеет 10 разрядов. Тогда напряжение 2 вольта он измерит с погрешностью (идеальный АЦП) 0,1%. А напряжение 0,2 вольта с погрешностью 1%. Напряжение 20 мВ измерит с погрешностью 10%, что уже никуда не годится. Напряжение 2,1 вольта он измерить не сможет. Это принцип АЦП и никакое программирование ничего не решит. Как же измерять? Способа 2:
1. Изменять опорное напряжение. Недостатки: а) оно не может быть больше 5 вольт, т.е. 5 вольт - это максимальный предел; б) при низком опорном напряжении (менее вольта) растут погрешности из-за неидеальности АЦП. Так что и нижний предел сильно изменить таким способом не выйдет.
2. Этот способ успешно используется более 100 лет: чувствительность собственно измерителя (АЦП) остается неизменной, а меняется усиление на входе. Это называется "расширение пределов измерения". Например: Чувствительность АЦП = 2 вольта, на вход ставим делитель 1:10 и измеряем напряжения до 20 вольт. Делитель 1:100 позволяет измерять до 200 вольт. Усилитель с Ku=10 или 100 дает предел измерения 200 и 20 мВ соответственно без потери точности (т.к. во всех случайх пределу измерений соответствует напряжение 2 вольта на входе АЦП). Если на вход поставить выпрямитель (на ОУ), то можно измерять переменное напряжение. Если преобразователь ток-напряжение, то получаем амперметр. Если преобразователь частота-напряжение (ну, это может и контроллер), то... , если емкость-напряжение ... Кстати, все измерительные приборы сделаны именно так. Только в дешевых эта самая аналоговая часть довольно паршивая, например, входной сигнал пропускается через примитивный переключатель (который как раз меняет добавочные резисторы вольтметра и шунты амперметра) на печатных проводниках самой платы. А в дорогих каждый предел может иметь свою собственную аналоговую часть с компенсированной электронной коммутацией.

Вот я и предлагаю: сделать максимально хороший вольтметр, и дооснастить его. На самом деле, контроллер позволяет не только АЦП+индикация, но и управлять измерительными схемами (тот же самый коммутатор входов, довольно "хитрый"), проводить компенсацию сопротивления проводов и дрейфа аналоговых цепей, запоминать результаты, делать измерения "минимум-максимум" и т.п. Это как раз то, что аналогом сделать практически невозможно.

<
  • Гражданин
5 января 2013 03:56

Владимир / kotyk7

  • С нами с 8.11.2009
  • Ушёл в реал Пользователь offline
  • 30 комментариев
  • 5 публикаций
 
  • 0
Идею дооснастки входной цепи вполне поддерживаю.
Открывайте ветку в форуме. Готов участвовать.

Информация
Вы не можете участвовать в комментировании. Вероятные причины:
— Администратор остановил комментирование этой статьи.
— Вы не авторизовались на сайте. Войдите с паролем.
— Вы не зарегистрированы у нас. Зарегистрируйтесь.
— Вы зарегистрированы, но имеете низкий уровень доступа. Получите полный доступ.