Двойной изолированный вольтметр для латра на atmega8-arduino

Содержание

Двойной изолированный вольтметр для латра на atmega8-arduino

Обычно при построении различных вольтметров на базе Arduino предполагают, что напряжение питания Vcc строго равно 5В. Но это далеко не так, точнее – совсем не так. Как результат – немалая погрешность в измерениях.

Малоизвестной особенностью Arduino и многих других AVR является возможность измерения внутреннего опорного напряжения 1.1В.

Эта возможность может быть использована для повышения точности функции Arduino analogRead ()или для измерения питающего напряжения (Vcc), что обеспечивает средство мониторинга напряжения питания (например, батареи) без задействования драгоценного аналогового входа.

В сети гуляют, кроме описываемого здесь, еще два способа «особо точного» измерения опорного напряжения. Один основан на изменении стандартной библиотеки wiring_analog.c и затем чтения analogRead(14). Другие «знатоки» считают, что указание analogReference(INTERNAL) или DEFAULTболее чем достаточно. Разброд и шатания в стане «специалистов» не желающих копнуть чуть глубже, чем первая страница выдачи поиска гугла.

Зачем всё это

Не проще ли просто мигать светодиодиками как все и радоваться жизни, что вы — крутые микроэлектронщики ?

Есть как минимум две причины, чтобы точно и правильно измерить напряжение, подаваемое на ваш Arduino (Vcc). Первая причина — если наш проект на батарейках или аккумуляторах и мы хотим следить за напряжением Vcc как мерилом уровня заряда батарей. Вторая — когда питание производится от батареи или от USB, Vcc не будет равно 5В, так что, если мы хотим сделать точные аналоговые измерения мы должны либо использовать внутреннее опорное напряжение 1.1В, либо внешнее опорное напряжение. Почему?

Предполагают, что при использовании analogRead () аналоговое опорное напряжение равно 5.0В, но в действительности оно может быть другим. Даже официальная документация по Arduino analogReadтакже приводит нас к этому неправильному допущению. Факт, что напряжение по умолчанию не 5.0 вольт. Если ваше питание не идеально отрегулировано или если вы работаете от батареи, это напряжение может немного изменяться. Вот пример, иллюстрирующий проблему:

Я экспериментальным путем выяснил, что на разных ПК при питании от USB напряжение пина 5V на Arduino составляет около 4.5В; при питании от аккумулятора типа «Крона» (8.4В) — 4.97В.

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

  • внутренний источник 1.1В (в некоторых 2.56В)
  • внешний опорный источник
  • Vcc

Внешний источник опорного напряжения является наиболее точным, но требует дополнительного оборудования. Внутренний reference стабилен, но имеет погрешность +/- 10%. Голый Vcc полностью ненадежен в большинстве случаев.

Выбор внутреннего reference оправдан, но в большинстве случаев мы бы хотели измерять более широкий диапазон, поэтому выбор Vcc является наиболее практичным, но потенциально наименее точным и в некоторых случаях полностью ненадежным!

Как правильно

Многие AVR чипы, включая серию ATmega и многие из ряда Attiny обеспечивают средства для измерения внутреннего опорного напряжения. Зачем это кому-то надо? Причина проста — путем измерения опорного напряжения мы можем определить точное значение Vcc.
Вот как это делается:

  1. Сначала устанавливаем опорное (reference) напряжение в значение Vcc
  2. Измеряем внутреннее опорное напряжение
  3. Рассчитываем величина Vcc

Наше измеренное напряжение

которое, как мы знаем равно 1.1В. Согласно даташиту на ATMEGA 328 оно может быть равно:

  • минимально 1.0В,
  • обычно 1.1В,
  • максимально 1.2В.

Забегая вперед скажу, что эта константа требует ручной калибровки, у меня она получилась равной 1.179В.

АЦП у Arduino имеет разрядность 10 бит, это означает, что входное напряжение от 0В до 5В преобразовывается в целочисленное значение от 0 до 1023. Вот откуда здесь число 1023.

Далее рассчитываем Vcc и получаем:

Другими словами, вся фишка в том, чтобы выяснить реальное напряжение питания Vcc, читая internal 1.1V reference и используя Vcc в качестве эталона. Затем с помощью простой математики высчитываем реальное Vcc.

Кусок кода функции выглядит так:

Примечание. Функцию analogReference() для смены опорного напряжения применять не нужно.

Подробности скетча будут ниже.

Где применять

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

Вы также можете получить правильное значение Vcc для использования с функцией Arduino analogRead () при установке использования опорного напряжения по умолчанию (Vcc). Если у вас нет стабилизированного источника питания, то вы не можете быть уверены, что Vcc составляет точно 5.0В. Эта функция обеспечит вам правильное значение.

Однако есть один нюанс.

Как я указывал выше, спецификация на чип дает номинальное значение напряжения 1.1В, но заявляет, что оно может варьироваться от 1.0 до 1.2В. Это означает, что погрешность измерения Vcc может составить целых 10%. А это уже много!

Как повысить точность

Просто измерим два значения Vcc: реальный Vcc с помощью вольтметра (на пине AREF или 5V) и Vcc с помощью нашей функции. Затем заменим нашу константу (1.1 * 1023.0 * 1000) на новую:

Vcc1 — значение Vcc измеренное вручную с вольтметром
Vcc2 — значение Vcc определенное с помощью нашей функции

Это эталонное значение будет индивидуальным для конкретного AVR чипа и будет зависеть от колебаний температуры. Не стесняйтесь экспериментировать!

Чуть подробнее про поделку и исходный код программы.

Вся поделка представляет собой элементарный вольтметр на Arduino с пределом измерений 0—50В, определяемым делителем напряжения на резисторах.

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

All-Audio.pro

Статьи, Схемы, Справочники

Atmega8 наклейка

Все Категория. Новое на dhgate? Примечание: В связи с возможной задержкой обновления обменных курсов, цены, указанные в разных валютах, предоставлены только для справки. Купоны новичкам Защита покупателей Обратная связь Помощь Сэкономь больше в нашем приложении! Skype : ru.

Поиск данных по Вашему запросу:

Atmega8 наклейка

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

Перейти к результатам поиска >>>

ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: Как сделать наклейки своими руками?!

Двойной изолированный вольтметр для ЛАТРа на ATmega8-Arduino

Объем бизнеса : auto IC, digital to аналоговая схема, single chip microcomputer, фотоэлектрическая муфта, хранение, трехклеммный регулятор напряжения, SCR, полевой эффект, Шоттки, реле, резисторы конденсаторов, Световая трубка, разъемы, и другие односторонние вспомогательные услуги!

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

Сроки доставки могут меняться, особенно во время курортного сезона. Если вы не получили посылку в течение 30 дней с момента оплаты, пожалуйста, свяжитесь с нами. Продукт : Быстрая Бесплатная Доставка 5 шт. Для небольшого количества чипсов они подвергаются воздействию воздуха после того, как они взяты из посылка Если вы выбираете Бесплатная Post Доставка с незарегистрированных, там не будет отслеживания в пункт назначения,Вы должны держать в touch с местном почтовом отделении все время до доставки.

Читайте также:  Таймер обратного отсчета на мк atmega8

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

Добро пожаловать в наш магазин Если вы покупаете больше, пожалуйста, свяжитесь с нами Почему вы непосредственно выбираете нас : С функцией индикации сбоя предохранителяFR4 стекловолокно PCB, двойные медные слоиПосылка включает в себя : Держатель предохранителя на dinрейке1 шт. Обратите внимание, что покупатели несут ответственность за все дополнительные сборы, брокерские сборы и es за импорт в вашу страну Мы предоставляем бесплатный ремонт услуг в течение одного года покупки Компания продает всемирно известные бренды электронных компонентов, интегрированные схемы приветствуются для вызова и заказа!

Надеюсь работать с вами! Запрос Добро пожаловать в посылка сотрудничества и консультаций! Гарантия r n r n1 Страхование в течение дней r n r n2 Товар гарантийный возврат доставка покупателем отвечает за Описание продукта шт.

Если нужно больше деталей, пожалуйста, нажмитеИ отправьте заказ Если вам нужно больше количества, пожалуйста, свяжитесь с нами Уно Proto Shield Prototype плата расширения с SYB минихлебом Описание : Используемый в сочетании с прототипом прототипа Duemilanove Proto Shield платформ duemilanove канал используется для создания прототипа, могут быть непосредственно привязаны компоненты на борту, вы также можете подключить вышеуказанную миниХлебопечь Вернуться на главную Интегральные схемы 2 шт.

Мы в социальных сетях. На складе. Похожие предложения. Новый Быстрый просмотр. Новый МГц высокой мощности трехфазный насосный 2 кнопки беспроводной пульт дистанционного управления В с антенный передатчик.

DC Описание : 1 Рабочее напряжение : 3,55,5 В. Бесплатная доставка шт. SLA интегральная схема. Посылка : Шт 50 шт фото светочувствительный резистор Фоторезистор GL

Генератор наклеек для клавиатуры ZX Spectrum

Микроконтроллеры далее МК прочно вошли в нашу жизнь, на просторах интернета можно встретить очень много интересных схем, которые исполнены на МК. Чего только нельзя собрать на МК: различные индикаторы, вольтметры, приборы для дома устройства защиты, коммутации, термометры… , металлоискатели, разные игрушки, роботы и т. Первую схему на микроконтроллере я увидел лет назад в журнале радио, и практически сразу же перелистнул страницу, подумав про себя “все равно не смогу собрать”. Действительно, в то время МК для меня были чем то очень сложным и непонятым устройством, я не представлял как они работают, как их прошивать, и что делать с ними в случае неправильной прошивки. Но около года назад, я впервые собрал свою первую схему на МК, это была схема цифрового вольтметра на 7 сегментных индикаторах, и микроконтроллере ATmega8. Так получилось, что микроконтроллер я купил случайно, когда стоял в отделе радиодеталей, парень передо мной покупал МК, и я тоже решил купить, и попробовать собрать что-нибудь. В своих статьях я расскажу вам про микроконтроллеры AVR фирмы ATMEL , научу вас работать с ними, рассмотрим программы для прошивки, изготовим простой и надежный программатор, рассмотрим процесс прошивки и самое главное проблемы, которые могут возникнуть и не только у новичков.

20 шт. 100 шт./лот Новинка ATMEGA8A-PU MEGA8A-PU ATMEGA8 ATMEGA8A 8A-8 DIP28

Процесс настройки программного обеспечения с помощью данного устройства упрощается. Код прошивки может быть скачан с сайта USBasp. Набор из 32 щупов для измерения зазора толщины 0. Тяговый мост PDR инструмент для удаления вмятин без покраски 7 грибков. Атомайзер флакон дорожный мини для парфюмерии духов 5мл заправляющийся. Звездное небо, светящиеся наклейки на потолок и стену шт. Педаль ножная моностабильная переключатель FS-1 10А В. Комплект для ремонта сколов трещин лобового стекла. LED IP65 лента с датчиком движения, подсветка для кухни, шкафа 2м.

Микроконтроллеры AVR для начинающих – 1

При проектировании или ремонте таких приборов как ИБП и стабилизаторы напряжения, очень часто возникает необходимость проверки рабочего диапазона напряжений. Также при опознании неопознанных трансформаторов, удобнее работать с маленьким напряжением. Столкнувшись с данной проблемой, я решил сделать цифровой блок индикации, на семисегментных индикаторах и МК AtMega8. На макете был опробован светодиодный индикатор и проведены эксперименты с АЦП. Для работы с семисегментным индикатором была выбрана библиотека SevenSegmentLibrary.

Спидометр-одометр на МК ATmega8 + ЖКИ 16х2 или 16х4.

Есть в наличии. Это даёт возможность программировать устройства в собранном виде без отключения от питания, а также существенно упрощает отладку программного обеспечения. Программирование можно осуществлять многократно. Данный модуль выполнен на плате из фольгированного стеклотекстолита и построен на микроконтроллере серии ATmega8 с несколькими пассивными элементами. Две нераспаянные перемычки — JP2 и JP3 — позволяют выставить медленный режим lazy mode программирования для микроконтроллеров, работающих на частоте менее 1. К программируемому устройству модуль подключается через гибкий шлейф, идущий в комплекте.

5 шт./лот Новый ATMEGA8 ATMEGA8-16PU DIP-28 8-бит с 8 К байт в Системы программируемый Flash

Здесь приведен перевод замечательного на мой взгляд руководства Sparkfun [1], которое поможет начинающим радиолюбителям окунуться в занимательный мир микроконтроллеров автор Nathan Seidle. Эта часть посвящена общим вопросам и источнику питания. Я предполагаю, что Вы знакомы с понятием электричества, и знаете, что такое радиодетали. Все остальное будет разъяснено как можно подробнее. Прошу также прощения за некоторый беспорядок в изложении. Когда это руководство было подготовлено и многие фотографии были сделаны, то использовались микроконтроллеры ATmega8, но сейчас мы переходим на более современный ATmega Вы найдете всю необходимую информацию об ATmega на страницах этих туториалов, однако картинки будут показывать ATmega8.

Спидометр-одометр , идея стара как мир, а вот реализация для того чтобы устройства имеют различные варианты, предлагаю вашему вниманию, несложную схему на распространенном МК ATmega8 , к схеме имеется два вида прошивок под индикаторы ; 16х2 и 16х4. Схема данного спидометра-одометра ,. Коэффициенты под датчик скорости, возможно настраивать прямо из пользовательского меню, под любой датчик скорости с любым с числом импульсов от 1 и до …… , и задается и корректируется из пользовательского меню, количество импульсов на километр.

Решил восстановить свой старый компьютер ZX Spectrum 48 и первой проблемой стала клавиатура – компьютер наглухо висел, как оказалось, из-за того, что часть клавиш оказалось замкнутой. После чего была спаяна новая клавиатура из тактовых кнопок и возник вопрос ее оформления. Было решено распечатать рисунки клавиш на листе бумаги, заламинировать его с одной стороны и приклеить к листу пластика от блистерной упаковки с другой для прочности. Однако, все попытки найти готовый рисунок клавиатуры в хорошем качестве, в цвете и подходящих размеров результата не дали. Пришлось озадачиться рисованием клавиатуры в векторном формате. Заодно был написан генератор, позволяющий настраивать размеры, отступы и цвета.

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

Ученые научились управлять сверхпроводимостью при помощи света. Бортовой компьютер на микроконтроллере ATMega8. Омметр , измеритель ёмкости , осциллограф , генератор и частотомер — это функции которыми наделено устройство схемой которого я хочу с вами поделиться. Ведь такой универсальный измерительный прибор очень нужен в практике каждого радиоаматора.

Двойной изолированный вольтметр для латра на atmega8-arduino

Идея устройства для измерения напряжения, тока, емкости, разряда, а может и заряда возникла давно и не только у меня. Можно найти немало игрушек под названием USB Tester (Doctor) для тестирования различных устройств с USB. Мне же интересно несколько более универсальное устройство, независимое от интерфейса, а просто рассчитанное на определенные напряжения и токи. Например, 0 – 20.00в, 0 – 5.00а, 0 – 99.99Ач. Что касается функций, то я вижу так

  • Отображение текущих напряжения и тока, то есть вольт-ампер-метр. Впринципе, можно и мощность сразу отразить.
  • Подсчет и отображение накопленной емкости. В ампер-часах и всего скорее в ватт-часах.
  • Отображение времени процесса
  • И, всего скорее, настраиваемые нижний и верхний пороги отключения по напряжению (ограничения разряда и заряда)
Читайте также:  Советчик в кармане

Разработка

Для реализации расчетов и измерений нам понадобится контроллер. Я вспомнил эту идею в рамках знакомства с Arduino, поэтому контроллером будет простая популярная Atmega328 и программироваться она будет в среде Arduino. С инженерной точки зрения выбор наверно не самый хороший – контроллер для задачи слегка жирноват, а его АЦП не назовешь измерительными, но. будем пробовать.

  • Паять в этом проекте много не будем. В качестве основы возьмем готовый модуль Arduino Pro Mini, благо китайцы готовы их поставлять по $1.5 в розницу.
  • В качестве устройства отображения будет выступать дисплей 1602 – еще $1.5. У меня вариант с интерфейсным модулем I2C, но в этом проекте он не сильно нужен ($0.7).
  • Для разработки нам понадобиться макетная плата. В моем случае это небольшая BreadBoard за $1.
  • Разумеется понадобятся провода и некоторое количество резисторов разного номинала. Для дисплея 1602 без I2C нужен также подбор контрастности – делается переменным резистором на 2 – 20 кОм.
  • Для реализации амперметра понадобится шунт. В первом приближении им может быть резистор 0.1 Ом, 5 Вт.
  • Для реализации автоматики отключения понадобится реле с контактами рассчитанными на максимальный ток устройства и напряжением равным напряжению питания. Для управления реле нужен npn транзистор и защитный диод.
  • Устройство будет питаться от внешнего источника питания, очевидно, что не менее 5 в. Если питание будет сильно варьироваться, то так же потребуется интегральный стабилизатор типа 7805 – он и определит напряжение реле.
  • В случае Arduino Pro Mini для заливки прошивки потребуется USB-TTL конвертер.
  • Для наладки понадобится мультиметр.

Вольтметр

Я реализую простой вольтметр с одним диапазоном примерно 0 – 20в. Это замечанием важно, тк АЦП нашего контроллера имеет разрядность 10 бит (1024 дискретных значения), поэтому погрешность составит не менее 0.02 в (20 / 1024). Для реализации железно нам нужен аналоговый вход контроллера, делитель из пары резисторов и какой-нибудь вывод (дисплей в законченном варианте, для отладки можно последовательный порт).

Принцип измерения АЦП состоит в сравнении напряжения на аналоговом входе с опорным VRef. Выход АЦП всегда целый – 0 соответствует 0в, 1023 соответствует напряжению VRef. Измерение реализовано путем серии последовательных чтений напряжения и усреднения по периоду между обновлениями значения на экране. Выбор опорного напряжения важен, поскольку по умолчанию оно равно напряжению питания, которое может быть не стабильно. Это нам совершенно не подходит – за основу мы будем брать стабильный внутренний опорный источник напряжением 1.1в, инициализируя его вызовом analogReference(INTERNAL). Затем мы откалибруем его значение по показаниям мультиметра.

На схеме слева – вариант с прямым управлением дисплея (он просто управляется – смотрите стандартный скетч LiquidCrystalHelloWorld). Справа – вариант с I2C, который я и буду использовать дальше. I2C позволяет сэкономить на проводах (коих в обычном варианте – 10, не считая подсветки). Но при этом необходим дополнительный модуль и более сложная инициализация. В любом случае, отображение символов на модуле надо сначала проверить и настроить контрастность – для этого надо просто вывести после инициализации любой текст. Контрастность настраивается резистором R1, либо аналогичным резистором I2C модуля.

Вход представляет собой делитель 1:19, который позволяет при Vref = 1.1 получить максимальное напряжение около 20в (обычно параллельно входу ставят конденсатор + стабилитрон для защиты, но нам пока это не важно). Резисторы имеют разброс, да и опорное Vref контроллера тоже, поэтому после сборки надо измерить напряжение (хотя бы питания) параллельно нашим устройством и эталонным мультиметром и подобрать Vref в коде до совпадения показания. Так же стоить отметить, что любой АЦП имеет напряжение смещения нуля (которое портит показания в начале диапазона), но мы пока не будем в это углубляться.

Также важным будет разделение питающей и измерительной “земли”. Наш АЦП имеет разрешение чуть хуже 1мВ, что может создавать проблемы при неправильной разводке, особенно на макете. Поскольку разводка платы модуля уже сделана и нам остается только выбор пинов. “Земляных” пинов у модуля несколько, поэтому мы должны сделать так, чтобы питание в модуль заходило по одной “земле”, а измерения по другой. Фактически для изменений я всегда использую “земляной” пин ближайший к аналоговым входам.

Для управление I2C используется вариант библиотеки LiquidCrystal_I2C – в моем случае указывается специфическая распиновка модуля I2C (китайцы производят модули с отличающимся управлением). Так же отмечу, что I2C в Arduino предполагает использование именно пинов A4, A5 – на плате Pro Mini они находятся не с краю, что неудобно для макетирования на BreadBoard.

Мультитестер на Arduino своими руками

За универсальным тестером будущее. Всего лишь при подсоединении щупов, универсальный пробник определяет сопротивление, ёмкость, ЭПС, диодную проводимость, распиновку и коэффициенты усиления транзисторов, прозванивает лампочки и светодиоды, сообщает на дисплее о повреждении электронного элемента. Работает подобный тестер автоматически, без переключения селектора или кнопок.

Для работы мультитестера нужен микроконтроллер минимум с 8 кБ флеш-памяти, такой как ATmega8, ATmega168, ATmega328.

Электрическая схема мультитестера на Arduino

Характеристики тестера электроэлементов на Arduino:

  1. Сопротивление: 0…50 МОм, точность до 0.01 Ом (на ATmega8 точность 0.1 Ом).
  2. Ёмкость: 25 пФ…100 мФ, точность 0,1 пФ.
  3. ЭПС (эквивалентное последовательное сопротивление) определяется для емкостей 90нФ…100 мФ.
  4. Биполярные транзисторы: нахождение базы, коллектора, эммитера (BCE) при проводимости NPN, PNP.
  5. Полевые транзисторы: N-канальные, P-канальные.
  6. Диоды, диодные сборки: кремниевые, германиевые, Шотки, определение анода катода.
  7. Стабилитроны: обратное напряжение пробоя менее 4,5 В.
  8. Тиристоры, семисторы: только маломощные.

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

Список комплектующих

  1. Плата Arduino nano V 3.0, можно Pro mini.
  2. LCD дисплей графический WH1602A на контроллере HD44780. Используйте только дисплей, поддерживающий кириллицу(сообщения на русском языке на экране). Прошивки на английском языке для примененной схемы подключения и задействованных функций не существует.
  3. Стабилизатор (на схеме IC1) — прецизионный LM336-Z2.5, MCP1702-5002, можно обычный 7805L.
  4. Кнопка с фиксацией SW1.
  5. Кнопка без фиксации SW2.
  6. Резистор переменный R7 — 10 кОм, 0.5 Вт.
  7. Резисторы R1, R3, R5 — 680 Ом, 0.25 Вт.
  8. Резисторы R2, R4, R6 — 470 кОм, 0.125 Вт.
  9. Резистор R8 — 100 Ом, 0.25 Вт.
  10. Резистор R9 — 22 кОм, 0.125 Вт.
  11. Резистор R10 — 10 кОм, 0.125 Вт.
  12. Резистор R11 — 3.3 кОм, 0.125 Вт.

Подключение питания

Для точности измерений тестера рекомендуется, но не обязательно, запитать его от прецизионного стабилизатора напряжения 5.00 В, например от MCP1702-5002.

При невыполнении этого условия, в случае использования менее точного стабилизатора типа 7805, настоятельно советуем подключить источник опорного напряжения (ИОН).

Стабилизированный ИОН на 2.5 В надо подсоединять к выводу А4 микроконтроллера. На приведенной электрической схеме это подключение не показано. Благодаря подключенному ИОН, мультиметр будет более точно измерять напряжение на батарейках VBAT, наибольший положительный потенциал на полупроводниках VСС.

В программе самодиагностики микроконтроллера ATmega заложено определение отсутствия ИОН. Эта функция самодиагностики активна только при подключении ножки А4 к напряжению 5 В через резистор 47 кОм.

Можно таки случайно закоротить ножки микросхемы А4 и А5. После этого начнутся проблемы с точностью измерения VBAT и VСС. Поэтому удаляйте несанкционированные мостики между выводами, смывайте сгоревший флюс с платы.

Читайте также:  Простая си-би антенна

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

При организации питания прибора от сетевого адаптера 220/9–12 В, следует позаботиться об экранировании микроконтроллера, устранить пульсации на входе с помощью конденсатора. Нельзя близко располагать, как в одной плоскости, так и сверху снизу, входные цепи питания к плате Arduino.

Сборка измерительной схемы

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

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

Подключение к аналоговым выходам Arduino:

  • A0 — «минусовой» черный щуп.
  • A1 — «плюсовой» красный щуп.
  • A2 — «прозвоночный» желтый щуп.

Подключение к цифровым выходам Arduino:

  • D0 — получение RX на Arduino nano или mini.
  • D1 — передача TX на Arduino nano или mini.

Прошивка микроконтроллера

Загрузить прошивку в Arduino можно как с помощью программатора USB, так и применив другой Arduino nano для перепрограммирования. Мы же воспользуемся программатором USBasp и приложением SinaProg, о чем расскажем подробно.

  • Скачиваем и устанавливаем на ПК приложение SinaProg 2.1.
  • В поле Programmer находим свой программатор USBasp и нажимаем кнопку Search для поиска подключенного контроллера.
  • После определения контроллера, скачиваем Aрхив с прошивкой для мультитестера на Arduino и распаковываем.
  • В архиве две прошивки: TransistorTester.eep для работы памяти EEPROM микроконтроллера, TransistorTester.hex непосредственно для микроконтроллера. Сначала загружаем TransistorTester.eep в память EEPROM микроконтроллера.

Иконка выбора пути к прошивке

  • Загружаем аналогично TransistorTester.hex в микроконтроллер и запускаем Program.

Об успешном завершении прошивки дается сообщение в описании процесса установки

  • Загружаем TransistorTester.hex в микроконтроллер,аналогично как делали ранее.

  • После удачно осуществленной прошивки, отключаем программатор.

Дабы не было проблем с полным отсутствием отображения на дисплее, заливать в память EEPROM следует файл с расширением HEX, а не BIN.

Начинать работу с тестером надо после сброса на кнопке SW2 Reset.

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

Как пример свой мультитестер на Arduino можно засунуть в корпус испорченного модема.

Автор: Виталий Петрович. Украина

Урок 10. АЦП в AVR микроконтроллерах. Простой вольтметр на AVR.

АЦП — Аналого-цифровой преобразователь. Из названия можно догадаться, что на вход подается аналоговый сигнал, который преобразуется в число.

Первое о чем нужно сказать — АЦП микроконтроллера умеет измерять только напряжение. Чтобы произвести измерение других физических величин, их нужно вначале преобразовать в напряжение. Сигнал всегда измеряется относительно точки называемой опорное напряжение, эта же точка является максимумом который можно измерить. В качестве источника опорного напряжения (ИОН), рекомендуется выбирать высокостабильный источник напряжения, иначе все измерения будут плясать вместе с опорным.

Одной из важнейших характеристик является разрешающая способность, которая влияет на точность измерения. Весь диапазон измерения разбивается на части. Минимум ноль, максимум напряжение ИОН. Для 8 битного АЦП это 2^8=256 значений, для 10 битного 2^10=1024 значения. Таким образом, чем выше разрядность тем точнее можно измерять сигнал.

Допустим вы измеряете сигнал от 0 до 10В. Микроконтроллер используем Atmega8, с 10 битным АЦП. Это значит что диапазон 10В будет разделен на 1024 значений. 10В/1024=0,0097В — с таким шагом мы сможем измерять напряжение. Но учтите, что микроконтроллер будет считать, величину 0.0097, 0.0098, 0.0099… одинаковыми.

Тем не менее шаг в 0,01 это достаточно неплохо. Однако, есть несколько рекомендаций, без которых эта точность не будет соблюдена, например для измерения с точностью 10бит, частота на которой работает АЦП должна быть 50-200 кГц. Первое преобразование занимает 25 циклов и 13 циклов далее. Таким образом, при частоте 200кГц мы сможем максимум выжать
200 000/13 = 15 384 измерений.

В качестве источника опорного напряжения можно использовать внутренний источник и внешний. Напряжение внутреннего источника (2,3-2,7В) не рекомендуется использовать, по причине низкой стабильности. Внешний источник подключается к ножке AVCC или Aref, в зависимости от настроек программы.

При использовании АЦП ножка AVCC должна быть подключена. Напряжение AVCC не должно отличаться от напряжения питания микроконтроллера более чем на 0,3В. Как было сказано, максимальное измеряемое напряжение равно опорному напряжению(Vref), находится оно в диапазоне 2В-AVCC. Таким образом, микроконтроллер не может измерить более 5В.

Чтобы расширить диапазон измерения, нужно измерять сигнал через делитель напряжения. Например, максимальное измеряемое напряжение 10В, опорное напряжение 5В. Чтобы расширить диапазон измерения, нужно уменьшить измеряемый сигнал в 2 раза.

Формула для расчета делителя выглядит так:

Подставим наши значения в формулу:

т.е. можно взять любые два одинаковых резистора и подключить их по схеме

Следовательно, когда мы измеряем напряжение через делитель, нужно полученное значение АЦП умножить на коэффициент=Uвых/Uвх.

Полная формула вычисления измеряемого напряжения будет выглядеть так:
U=(опорное напряжение*значение АЦП*коэффициент делителя)/число разрядов АЦП

Пример: опорное 5В, измеренное значение АЦП = 512, коэффициент делителя =2, АЦП 10разрядный.

(5*512*2)/1024=5В — реальное измеренное значение напряжения.

Некоторые программисты пишут программу так, чтобы микроконтроллер автоматически вычислял коэффициент делителя, для этого выходной сигнал измеряют образцовым прибором и заносят это значение в программу. Микроконтроллер сам соотносит истинное напряжение каждому значению АЦП, сам процесс однократный и носит название калибровки.

Перейдем к программной реализации. Создаем проект с указанными параметрами. Также подключим дисплей на порт D для отображения информации.

Измерение будет производиться в автоматическом режиме, обработка кода в прерывании, опорное напряжение подключаем к ножке AVCC. По сути нам нужно только обрабатывать получаемые данные. Измеренные данные хранятся в переменной adc_data[0]. Если нужно опрашивать несколько каналов, то выбираем какие каналы сканировать, а данные будут для ножки 0 в adc_data[0], для ножки 1 в adc_data[1] и т.д.

В основном цикле добавим строки:

result=((5.00*adc_data[0])/1024.00); //пересчитываем значение АЦП в вольты
sprintf(lcd_buffer,»U=%.2fV»,result); //помещаем во временную переменную результат
lcd_puts(lcd_buffer); //выводим на экран

Небольшое замечание, чтобы использовать числа с плавающей точкой, нужно в настройках проекта изменить (s)printf Features: int, width на float, width, precision. Если этого не сделать десятые и сотые мы не увидим.

Таким образом, мы всего лишь перевели значение АЦП в вольты и вывели на дисплей. Результат в протеусе выглядит так:

Резистором можно менять напряжение, измеряемое напряжение выведено на дисплей. При сборке на реальном железе к ножке Aref нужно подключить конденсатор на 0,1мкФ. Урок получился немного сложным, но думаю он вам понравится.

Файл протеуса и прошивка:

Update:
Измерение тока:

250 комментариев: Урок 10. АЦП в AVR микроконтроллерах. Простой вольтметр на AVR.

Уважаемый админ пожалуйста приведите пример таблицы напряжения, последние цыфры на дисплее прыгают и не понятно какая цыфра отображается
спасибо Вам за уроки, помощь и подсказки…

Большое спасибо за урок! Больше 20 сайтов перерыл, 2 вечера времени впустую, пока не нашел ваш. Сразу все заработало!

Добрый день! А как реализовать дифференциальный режим измерения с выводом минуса (если такой появляется)?

возьмите инструментальный усилитель и не мучайтесь

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

Добрый день.
Уважаемый Админ, подскажите пожалуйста, как можно вывести покозания, если АЦП=512 должно отображать «0», АЦП=1023-30?
Покажите пример…
Спасбо

проверяете значение АЦП если ниже 512 то обнуляете, если больше, то отнимаете 512. ну а дальше пропорцией пересчитываете

Доброе утро админ. Как я понял, получается так?
….
read_adc(0);
for(i=0;i … 5 6 7

Рейтинг
( Пока оценок нет )
Загрузка ...
Adblock
detector