• Home

Atmega 8 16 Вольтметр Амперметр

 
Atmega 8 16 Вольтметр Амперметр 7,7/10 3320 reviews
  1. (Atmega 8) Разместил. Высказанные к моей предыдущей статье «Вольтметр-амперметр.
  2. Вольтметр и амперметр на ATmega- 8. Вот в режиме измерения ампер! Добавлено (1. Все стабильно.
  3. Форум радиолюбителей » СХЕМЫ » ИЗМЕРЕНИЯ » Вольтметр и амперметр на ATmega- 8. Вольтметр и амперметр на ATmega- 8. Пн,, 20:22 Сообщение # 51. Файлы: Регистрация для просмотра. Отредактировал samor - Пт,, 16:44. Пт,, 17:45 Сообщение # 57.

И далее в статье, многоканальная измерительная схема, ATmegа8 LCD 16х2. Принципиальная схема А, (файлы в архиве А). Входная измерительная часть схемы вольтметра, традиционно проста, состоит из двух сопротивлений. Измерительная часть схемы амперметра собрана на ОУ, это дает пользователю возможность использовать свои шунты с различным диапазоном сопротивлений.. Три вольтметра 0-30V, амперметр 0-10A. (прошивки в архиве А). Работа схемы с разными типами индикаторов.. ATMEGA8A TQFP-32. 1602 ЖК (синий экран).

Собираю себе домой мини-лабораторный блок питания для питания всяческих поделок. Надобность в устройстве назрела давно. Хоть и собирается и отлаживается в железе все на работе (а там есть где разгуляться), все же иногда нужно пару разных напряжений и дома. Останавливаться подробно на самом БП не вижу особого смысла, это компиляция импульсных стабилизаторов собранных по даташитам (регулируемый 025в на TL494, импульсные “качественные” 5в на ноутбучном MAX798 и отрицательные слаботочные -5в на MC34063). А вот вольтметр-амперметр, как устройство довольно востребованное в радиолюбительском “блокопитаниестроении”, пожалуй заслуживает отдельной статьи. Повторять во-первых скучно, во-вторых места было мало. Габаритно мне очень подходил двухстрочный дисплей 2×8 символов на базе HD44780, как легко доставаемый, относительно недорогой и довольно удобный в эксплуатации.

Сначала хотел переделать на другой индикатор, но немного подумав решил пойти другим путем Как известно среди русскоговорящего (и не только) радиолюбительского населения бывшего СССР самыми популярными являются микроконтроллеры производства Microchip (семейство PIC) и Atmel (ATtiny, ATmega). И хотя в мире существует еще масса производителей МК (TI, Maxim, ST и т.д.), тем не менее именно Microchip и Atmel составляют 99% радиолюбительских (некоммерческих) проектов. Всегда считал это не совсем справедливым. Есть масса новых МК (и не только) о которых мы может быть и слышали, и даже в некоторых случаях интересовались и более того любим пообсуждать на любимых форумах. Но до конкретной реализации, готовых конструкций дело практически никогда не доходит. Вот и решено было собирать на чем-то отличном от вышеприведенных грандов. К семейству STM8 от ST Microelectronics приглядываюсь уже давненько, как и многие раздобыл комплект STM8-discovery для “моргания светодиодом”, почитал много чего интересного по форумам.

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

Как показала практика так научиться чему-либо проще. Сесть и бесцельно изучать работу, к примеру, АЦП тот еще подвиг Ну и конечно же значительно упрощало дело наличие некоторых познаний в AVR – все ж таки не с нуля изучать. Итак, что же понравилось, а что нет в новых МК. Не расценивайте это как обзор архитектуры STM8, а просто как вступление-размышление-сравнение программиста с подобными МК AVR.

Применительно к ASM, естественно. ЗА ПРОТИВ РАВЕНСТВО Удобный по подключению и использованию программатор / отладчик. При покупке в составе плат Discovery весьма умерен в стоимости. Хоть и протокол SWIM является открытым, STLink придется только покупать. Собрать самостоятельно не получится. В этом плане Atmel c великим множеством самодельных программаторов выглядит привлекательнее.

А еще показательнее в этом плане Microchip с полностью открытым Pickit2. Среда разработки ST Visual Develop примерно равна по «удобству», дизайну и структуре AVR Studio 4.1x. Соотношение цена / навороты (периферия, килобайты и т. д.) явно не в пользу Atmel. Да и в целом ценоформирование гуманнее. Один только STM8S003 за 0.5$ чего стоит.

Примерный аналог популярной mega8, а при этом в полтора раза дешевле. Практически отсутствует выбор корпусов DIP и с малым количеством выводов (tiny13, tiny24). Половина контроллеров с мелким шагом в 0.5мм, что очень неудобно для начинающих. Многие ругают ST Assembler за кривой синтаксис и т. д.

Я был бы более честен — он просто другой, не такой, как тот, к которому вы привыкли в AVR (или PIC). Пожалуй одно из основных достоинств: одно семейство — один мануал.

Регистр отвечающий за настройки, к примеру, АЦП во всем семействе STM8S имеет одно и то же название и биты расположены в нем одинаково. Atmel тут просто без комментариев Порты бывают разных типов: High Sink (до 20ма), обычные (низкоточные), и с открытым коллектором. И все бы ничего, если бы не такой нюанс. Например на 48-ногом STM8S105 я не обнаружил ни одного ПОЛНОГО порта с HS выводами. Затея с подключением семисегментного индикатора связана с довольно неприятным нагромождением в программе. Вывести значение в один порт было бы гораздо проще К слову в STM8S003K3 которому, я практически уверен, суждено стать бестселлером и прямым конкурентом mega8 такой полный порт есть.

В целом можно было бы сказать что грандиозного преимущества по производительности STM8 по отношению к AVR не предлагает. Потому они находятся в одной нише как по применению, так и по многим параметрам. Обращение к памяти, eeprom, регистрам происходит одними и теми же командами, т. е. Они все лежат в едином адресном пространстве. В случае AVR я делал так: inc r16. В случае с STM8, я просто могу «обозвать» ячейку памяти r16 и проводить с ней те же фокусы. Весьма и весьма впечатляет.

Немножко дико после AVR – ячейка из eeprom читается или пишется одной строчкой на ASM. На простых версиях STM8S семейства образцовое напряжение наглухо соединено с напряжением питания, что налагает определенные требования на источник питания и, возможно поставит острее вопрос об использовании ОУ c rail-to-rail выходом.

У AVR тут все несколько гибче и богатство выбора больше. Не решился писать этот пункт в «+» Славноизвестные фуз-биты в AVR есть конечно и у STM8, но практически все изменения доступны программисту изнутри программы, а потому повторяющему проект, об этих AVR-ужасах в 99% случаев можно забыть. Очень большая часть комманд является 16-бит ориентированными. МK то конечно восьмибитный, но, например сложение, двух 16-битных слов производится одной строчкой. Количество команд и примерный синтаксис во многом сходен с AVR, потому привыкание дается легко. Аппаратное деление.

Ну я «оттянулся» от души, скажу вам. Не то, чтобы нельзя было в AVR в столбик поделить. Но тут уж больно все шикарно происходит. Настраивается все, что только можно. Такого обилия настроек я себе даже представить не мог.

Например предделитель для таймера может быть любым числом от 1 до 32768. А сканирование и буферизация в АЦП чего стоит?!! Продуманные инструкции.

Есть много такого, чего в AVR откровенно хотелось бы. Например: BCPL перевернет битик в указанном месте на противоположный. Так просто светодиодом еще нигде не мигалось. Или BTJT (Bit Test Jump True) проверит бит в указанном месте и пошлет программу по указанному адресу если он true. У Atmel конечно это все реализуемо skip’ами Но осадок все равно, как говорится, остался.

Есть еще множество моментов которые и хотелось бы осветить, но для вступления, я думаю, более чем достаточно. Итак собственно о проекте. Амперметр-вольтметр на базе STM8S103F (STM8S103F3P6 в моем конкретном случае) и индикаторе WH0802A. Измеряемое напряжение 0100в, разбито на два диапазона 010в и 10100в. Измеряемый ток – 09.99A. Отличительной особенностью данного устройства является возможность отображения измеряемого тока не только в цифровом виде, но и в виде аналоговой шкалы с максимальным значением 1, 2, 5 и 10А.

Опытные радиолюбители не дадут мне соврать и подтвердят, что в некоторых случаях стрелочный прибор значительно информативнее и полезнее, чем цифровой. И если значение напряжения в блоке питания – величина абсолютная, точнее постоянная то потребляемый ток иногда полезно наблюдать “в динамике”. Чтобы было понятнее вот фото в интерьере: Шкала имеет 35 делений, цена деления для каждого диапазона соответственно разная.

Формат отображения “цифровой”, “шкала 1A”, “шкала 2A”, “шкала 5A”, “шкала 10A” переключаются циклически единственной кнопкой. Включение устройства с зажатой кнопкой – запустит процесс калибровки. Текущее отображение сохраняется в eeprom, нажатия озвучиваются динамиком. Вот в общем-то и все.

Конструктивно все собрано на плате размером в сам индикатор. В моем случае входной усилитель был расположен на основной плате блока питания, но возможный “полный” вариант платы также присутствует внизу в файлах. Для программирования МК используются четыре провода интерфейса SWIM. И если землю и питание можно припаять в произвольных местах, то для SWIM и RST предусмотрены “пятачки”. Хотел бы заметить что подключение VCC из разъема SWIM является обязательным и не является при этом источником питания для целевого устройства.

Это скорее вход. Также отдельно бы хотелось отметить о подключении устройства к целевому блоку питания. Участки цепей которые выделены на схеме жирным – должны быть выполнены максимально толстыми и короткими проводами. Динамик ставить вовсе не обязательно, на нормальную работу устройства он никак не влияет.

ОУ AD8542 можно заменить на любой (в том числе одиночный) с входами и выходами (!!!) Rail-to-rail. Как вариант подошел бы MCP6022. Налаживание устройства сводится к запуску калибровки для отсечения постоянной составляющей смещения ОУ (установка нуля) и подборе резисторов R10 для амперметра, R4 для нижнего диапазона и R6 для верхнего диапазона вольтметра. Хотелось бы обратить внимание на возможные “грабли” с фактическим номиналом стабилитронов VD1, VD2.

Поставив по привычке на 5,1в – я получил фактическое ограничение в районе 4,94,95в, т.е. Меньше чем напряжение питание, а значит и меньше чем образцовое напряжение АЦП, что конечно же исказило измерения. Потому стабилитроны указаны как 6.2в. Можно поставить и 5,6 но нужно обязательно проверить какой это окажется экземпляр.

Ну и как всегда на закуску фузов не будет Все уже учел программист в прошивке. А будет возможный рисунок печатной платы (отличается от моего “железного” экземпляра): Файлы. Программатором для данной конструкции может выступать любая плата STM8x-xx-discovery. Стоимость ее минимальная – около 1015$.

Конечно великого множества самодельных программаторов как для AVR и PIC нет, но цена и так вполне гуманная. Запрограммировать контроллер в корпусе TSSOP20 не впаяв в плату довольно проблематично (см.

Фото), хоть и нужно всего два провода, не считая земли. Очень велик риск отломать ноги. Если живете в Бердянске – без проблем приходите – зашью, если нет – увы без “знакомого” программатора не обойтись. Добрый день, Андрей. Интересно все описываете. И устройство нужное (как часть более сложного прибора или источника питания).

Но на сайт зашел несколько по другой причине. Пытаюсь освоить STM8L051 на ассемблере, специфика работы такая, что Си слишком шикарно по ресурсам. Работать с периферией и sleep(halt) слегка научился, хотел сразу реальный проект начать, да вот незадача: почему-то работать с байтом флагов выполненной команды (биты Z,N,V) подобно тому, как у микрочипа не получается, компилятор не признает такого байта почему-то, хотя в даташитах все расписано. Если не сложно, любой реальный проект или хотя бы часть кода можете прислать? Интересуют условные переходы и объявления переменных. В официальной документации что-то совсем “плыву”.

Или в общий доступ выложите, что не жалко. Примеров на Си в сети много, а вот на асме нашел только этот сайт и все. С благодарностью, Сергей.

Прошить точно можете ST Visual Programmer из комплекта STVD, при запуске выбираете Hardware: STLink, Programming Mode: SWIM и Device STM8S103. Этой программе ТОЧНО достаточно просто файла прошивки, никакой исходный проект ей не нужен. Ну и есть еще одни грабли Для тех кто вырос на Атмеле.

VCC провод на разъеме программирования – это НЕ ВЫХОД питания а ВХОД измерения наличия питания на программируемом устройстве. ОБЯЗАТЕЛЕН к подключению, без него никакого коннекта не будет. Запитывать программируемое устройство от программатора, как Вы уже надеюсь поняли – нельзя, только своим питанием. Вопрос о программировании на ST link v2 – пишет вот это: Не можете общаться с устройством! Проверьте подключение SWIM кабеля и проверить все необходимые разводка контактов на разъеме плавать.

Если код приложения использует Swim Disable и сброс штифт как выход или отключил SWIM делитель тактовой частоты: Попробуйте сейчас выключить и на применении питания в то время как NRST Сброс контактный вынужден низким. Тогда понятно 🙂 Ну насчет русский-английский не знаю, как по мне так даташиты и лучше читать на оригинальном (английском) языке, но некоторые нюансы это да.

Будучи даже описанными в даташитах – вчитаться внимательно именно в эту часть даташита – порой очень и очень сложно. У меня были грабли с “не вижу” контроллер, как я уже писал выше, с неподключенным VCC. Как Вы правильно сказали, я перенес в своей голове AVR на СТМ, естественно проигнорировав подключение VCC как “ненужное” и получил пару часов паники 🙂 Ну это в прошлом разумеется.

Теперь и у Вас на один “нюанс” больше в прошлом. Я в восторге от этого прибора. Кручу верчу не нарадуюсь. Правда заметил зависимость не сильно приятную – до 10 в сильная разбежность с напряжением на эталоне (БП-7в, АВ-метр -6,77 в) и тд.

После 10 вольт – точность приемлемая (БП-10,00, АВ-метр – 10,1 и так до 28,3 вольт все-что выдает мой БП). Я прочитал выше, что это может быть связано с индикатором? Не верю.Также заметил, что “ушли” настройки тока. Получается, что настройки верхнего, нижнего напряжения взаимосвязаны с настройками тока? Я понял насчет калибровки напряжения.

Калибрование или установка нуля при токе, это однократное действие? Зажав кнопку во время включения питания, сразу отпустить, прочитать “вайт”, нажать еще раз и все?

Извините, если выразился слишком образно. Спасибо, просто уж очень понравился прибор. А кстати, так как 20 мОм не нашел, поставил кусок шунта из прибора, где-то сантиметра 2, при подстройке пришлось поставить сопротивление около 480 Ком против 240 Ком на схеме – такая величина (480Ком) еще допустима? Как-то это все неправильно с вольтметром. 0.4в это не просто много – а очень много У меня разбежность с простеньким, но все таки более-менее породистым Mastech мультиметром не превышает 56 мв по всему диапазону 010в. Причем настраивал я бы сказал “без фанатизма”.

Субъективно мне даже показалось что АЦП у AVR – хуже. Рассмотрите такие варианты: 1. Вариант замены эталонного вольтметра (в том случае если своему не совсем доверяете). Будет реально обидно если причиной всех этих художеств с показаниями вольтметра окажется подсевшая батарейка в мультиметре. Внимательно просмотрите монтаж, мало ли какие варианты могут быть. Недотравленная дорожка и т.д.

Если использовался какой-то активный флюс хорошо промойте плату. Не забывайте что ИОН в мелкокалиберных STM8 – это фактически напряжение питания, потому внимательно проконтролируйте качество питания,достаточное количество блокировочных конденсаторов и т.д. Враг будет разбит,победа будет за нами! Лень и еще раз лень.Так как в Полтаве найти СМД стабилитроны нереально, то плата была разработана под стабилитроны с выводами. А, так как, еще в “кубышке” лежали стабилитроны двуханодные (КС162), то они были туда и поставлены.

А так как, потом сверху оделся индикатор, то замена стабилитронов – отодвигалась на самое последнее.Проще было перепаять МК, потом МСР602 (все перепахал-перепаял и промыл), потом радиолюбительский пыл угас, и все ушло в ступор. Поменял на капиталистические стабилитроны 6V2 – и линейность, как и предполагал разработчик, появилась. С необычайной точностью, до сотой. Хотя 6V2 выдержит ли французский МК? Еще раз спасибо.

Впрочем, остался вопрос о разности токов0,3 А на 1А (на БП и АВ-метре) при зарядке аккумулятора. Отдохнем, начнем “догрызать”. Хотите я Вам стабилитронов из Бердянска отправлю? Да Насчет КС162 это жестко Я начал догадываться, что что-то не так с отечественной радиоэлектронной промышленностью еще в возрасте 13 лет в начале 90-х годов. С того дня как в моей жизни 2SC945 полностью заменил отечественный КТ315 – граблей стало в разы меньше.

Ну а если серьезно – я думаю что у АЦП STM8 и так есть на входе какие-то стабилитроны, так что это подстраховка. Да и не думаю, что превышением напряжения на 20% можно спалить вход АЦП. Там ведь ток очень сильно ограничен до более, чем безопасного резистором делителя. Насчет тока – уточните тип примененного ОУ, а то после КС162 я уже ничему не удивлюсь 🙂. На не очень скрытую рекламу не обращайте внимания, то я так Все же стараюсь работу и хобби не мешать. И все таки касаемо ОУ Таки MCP602 или MCP6022?

Далеко не одно и то же, причем отличается как раз именно тем, что даст нелинейность в начале диапазона. MCP602 – rail-to-rail output, MCP6022 rail-to-rail input/output. Здесь очень важен rail-to-rail и там и там, т.е. ТОЛЬКО MCP6022. MCP602 можно применить, если организовать минусовое плечо питания на ICL7660. Но во первых уже поздно, я так понимаю, во вторых уж если и делать -5в, то тогда лучше и ставить OP07, балансировку нуля и программная калибровка нуля и даром не нужна. Здравствуйте вопрос по проге STVP можно ли сделать активными кнопки ERASE в настройках по умолчанию она отключена и как я понял опция должна быть доступна если ставиш галочку не чегоне меняется по устройству переделал плату поставил многооборотные резисторы 3296 в цепях подстройки напряжения выставляются хорошо а вот ток не очень на малых токах до 1А врет прогнал в протеусе понял что пришунте 0.01 не добьешься линейности поставил 0.04ом впротеусе все ок а на устройстве не очень а на промышленном бп АКИП 1101 от 0.1 до 5 А все отлично но схемы на измерительный узел нет борис.

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

Так или иначе нелинейность – дело рук связки шунт + ОУ, а не ПО микроконтроллера. Если несложно приведите 5-6 замеров формата 20ма = 27ма, 150ма = 162 ма (контрольный амперметр = собранное устр-во), если есть возможность замените ОУ на любой другой, но тоже rail-to-rail input/output. Помнится мне неплохо себя вел MCP6022, точно лучше чем дешевые ADшки. На 100% нелинейность в начале диапазона решается использование ОУ с двухполярным питанием (тогда 0 фактически перемещается в середину рабочего диапазона ОУ). Минусовое плечо проще всего получить применением преобразователя ICL7660.

Ради интереса перемеряю завтра и у себя показания. Уважаемый electra! Попрошу и я исходник, если на АСМе.

На СИ в инете много чего есть, и примеры тоже. Сам работаю с ПИКами. Сейчас изучаю STM8.

Нашел немного инфы на русском, от-туда и стартанул. ДШ перевожу on-line. Сечас сооружаю вольтметр на 7сег. Мучаю Дискавери на STM8 03k3. Среда STVD, ASM. Код от ПИКа переделываю под STM.

BIN2-10 на 3 разряда, динамику(просто тупые задержки). С таблицей была засада. В ПИКах все просто, работаем с програмным счетчиком РС, и нет проблем. В STM победить РС не смог, пока мало знаний. Сделал через адреса, привязка жесткая. Чую, это как микроскопом гвозди забивать главное в драку в ввязаться. Но все заработало как надо!

Начал прикручивать АЦП и тут случился тупик. Пример из ДШ не заоработал. В конечном итоге заставил АЦП работать. Тактовая частота по умолчанию 2, в примере 16. Правое выравнивание, в примере левое. После этих танцев АЦП заработал, кривовато, но заработал. Показывает уровни квантования от 0-1023.

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

Засветка частотой 5-10 мерцаний в секуду. Вот и хочу посмотреть Ваш код для сравнения.

Ваш комментарий: Отпишусь по предыдущему посту. Вольтметр запустил. Мерцание устранил путем дотошного читания ДШ. Там указано, что порядок считывания ADCDRL,ADCDRH(регистры результата АЦП)зависит от примененного выравнивания.

Программировал через STM8SVL Дискавери (STVP)по 4м проводам, без внешнего БП. С внешним работает тоже. Конденсатор С9-1мкф. 3.По поводу точности.

Автор не зря разбил на два диапазона, и поставил подстроечные резисторы для калибровки. Добиться приемлемой точности от 0,1-100В не получилось(у меня один диапазон). Поэтому калибровал до 10В.Подстроечник не применял(места нет, плата 15х33мм). Поставил ближайший постоянный, а подстроил программно.

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

В моём случае на старом компе дрова стали без проблем, но к устройству подключится не могу. А на втором, боевом компе, дрова становятся косо, в диспетчере устройств с желтым восклицательным значком. Как я не извивался не смог правильно поставить. Хотя до сноса Деймон тулза становились нормально.На одном форуме вычитал что ST-link конфликтует с виртуальными устройствами. Магия или сглазили.

С PICами и AVRами таких плясок не было. Так что уважаемый electra STMы не для широкого круга радиолюбителей. Мне очень понравился этот прибор. Со сборкой проблем нет, но с прошивкой полный швах. Внимательно изучил Ваши сообщения и обратил внимание вот на что: Программатор ST-LINK/V2 клон уже приехал,завтра заберу Клон как понимать?

Это китайский “аналог”? Может быть в этом дело и Ваше заключение о том, что STM8 это не для широкого круга не такое уж и справедливое? Имею дома Win7 x64 + TE-STLink (российский официальный клон ориг.ST-Link), на работе Win7 x32 + обломок discovery. На обоих компьютерах есть Daemon Tools, STVD всегда обновлена до последней версии. Никаких проблем с подключением / определением МК никогда не имел.

Все всегда работало как часы. Хотя как и не было проблем с PIC, AVR, ARM (J-link) и прочим Точнее проблемы были, но они всегда сводились к тому что я что-то делаю не так, осознанию и пониманию проблемы. Electra благодарю за советы. У меня есть STM32F103C8T6 попробую собрать программатор самодельный. Буду грешить на программатор. Хотел пойти лёгким путём, а получится как всегда 🙂 Вот цитата с одного форума: Натанцевался с STLink-ами до упаду с бубном. Короче смысл такой (по крайней мере как я все понял).

Софтина, которой вы программируете (STVP, STVD, ST Link Utility), обращается к dll-ке лежащей у нее самой в своих папках. А dll-ки почему то работают не все. Я нашел рабочую STLinkUSBDriver.dll версия 4.2.2.0. Положите ее в папку C: Program Files STMicroelectronics STM32 ST-LINK Utility ST-LINK Utility или где она там у вас стоит. Должно заработать.

А вообще глюкодром конечно выдающийся по программированию STM8 и STM32. STVP до падучей доводит.

Я использую его в связке с ST-LINK/v2 для мелкосерийного прошивания. Дак постоянно выдает сбой на ровном месте. Подцепляешься к новому устройству для программирования.

Он пишет типа не могу соединиться с таргетом. Проверяешь таргет – всё на месте, ни закороток, ни обрывов.

Берешь предыдущий таргет, только что запрограммированный – ОН ЕГО ТОЖЕ НЕ ВИДИТ!!! Спасибо за подсказку! Не ожидал, что этот контроллер так быстро шьется.Секунда и все, прошивка в нем.Приборчик заработал сразу, чему рад! Спасибо Автору! Единственно пришлось с делителем повозится.Напряжение показывает приемлимо.

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

И прибор можно настроить на идеальные показания, надо только терпение! Еще раз Спасибо!!! Добрый вечер. Смотрел я на PIC, порывался даже попробовать что-то написать – однако насмотрелся на этот гемор с переключением банков – да ну нафиг. Когда пересаживался с AVR ассемблер на STM ассемблер – было такое впечатление, что пересел с отечественной таврии на иномарку. AVR ассемблер в целом чуть проще, прощает больше ошибок.

В STM сначала бесила зависимость от регистра, метки разной длины, потом привык. С лихвой компенсируется кучей 16-битных команд, существенно упрощаются конструкции типа: увеличить на единицу двухбайтную переменную. У атмела это было несколько строчек с флагом “С”, тут же это одна строчка. В общем После ПИКа покажется самолетом. С СИ я тоже никак – на изучение совсем нет времени, да и мозги видать не так заточены.

Исходники отправлю, на пару действующих устройств, что есть на сайте. В том числе самодельную библиотеку для HD44780. С комментариями там не густо, но думаю разберетесь.

Использую исключительной родной STVD, есть на сайте у STM. Очень легкий, удобный, чем-то напоминает старую-добрую AVR Studio 4. Здравствуйте Андрей. Давно хочу повторить этот проект, уже года три лежат парочка контроллеров купленных у Вас, дисплейчик и STM8Svl discovery.

Наконец пару дней назад вытравил плату с Вашей разводкой, впаял МК и конденсатор на 8-ю ножку, и хотел залить прошивку, но – ( ). Мои действия по порядку – установил STVD и STVP, подключил к ПК дискавери, он определился как “STM32-STLink”. Отключил, выпаял перемычки, подключил – всё определилось, спаял шлейф для подключения внешнего контроллера, припаял к плате и подключил к дискавери. Запустил STVP, в конфигурации указал “Hardware – STLink”, “Port – USB”, “Pogramming mode – SWIM”, “Device – STM8S103F3”, открыл скачанную ранее прошивку, нажал кнопочку “Program all tabs” и программа выдала ошибку “Cannot communicate with the tool. Wrong tool selection or check tool power supply or check that a previous session is closed” – что я делал не так?

В комментариях Вы писали, что нужно подавать внешнее питание, я подал на плату питание от трёх пальчиковых батареек 4,75 вольта – результат тот же. Потом запаял перемычки назад, хотел прочитать из контроллера на дискавери записанную программу – выскочила та же ошибка. Я так понимаю, что STVP не видит мой STLink, подскажите что нужно/можно сделать чтобы всё заработало. С уважением Юрий. Здравствуйте, Андрей! Хочу сказать спасибо за этот прибор, всё заработало сразу, осталось подстроить показания напряжения и тока.

Усилитель тока я делаю выносной, шунт будет на клеммах БП и рядом усилитель. Небольшое отступление, мне приглянулся STM8L051F3P6, для “въезда” в STM8 хочу, используя Ваш конструктив, сделать AVметр на четыре разряда. У этого МК 12-ти разрядный АЦП и должно получиться сделать вольтметр до 40,00, и амперметр до 4,000 ампер.

К сожалению тяжеловато “въезжать” в программирование этих МК не зная английский. Хотя есть небольшой опыт написания программ под AVR и PIC, но отсутствие документации на русском немного затягивает процесс освоения этих МК. В интернете нашёл несколько ресурсов на которых есть статьи по программированию под STM8, но там, в основном, все примеры на языке “С”, а я пишу на асме “для дома, для семьи”. В связи с этим просьбочка, если не трудно, поделитесь исходником, обещаю использовать только для самообразования и ни в коем случае не для коммерции. С уважением Юрий.

Зробив вже четвертий екземпляр ВАметра для саморобного блока живлення. В якості дисплею використав великий індикатор від телефона панасонік(один ряд 16 символів). Виглядає прикольно, і зручно:регулятор напруги буде зноходитись під показометром напруги, а регулятор струму відповідно. Щоправда є один момент, виглядає все так наприклад: (U= 12.6VI= 0.75A) якби зливаеться, а хотілось би так (U=12.6V I=0.75A) Тіж самі 16 знакомісць,а вигляд був би зручнішим. Чи не знайдете час підкоригувати прошивку? Графічна шкала аналогового амперметра може бути так як є. А повинно бути 0.24в при 0.5а.

Я не даремно питаю про заміри (0.5в це до речі не замір, хотілося б ще як мінімум один знак побачити). Математика: Vref = VCC = 5в. АЦП – 10біт = 1024 значення. 1 значення = 0.00488в на вході. 0.5 на дісплеї = 050 відліків АЦП. 0.5а на дісплеї = 0.244в на вході. Порахуйте, це нескладно.

Тож маємо варіанти: 1. Маєте дуже неправильно налагоджений екземпляр з дуже зміщеним нулем, і одному богу відомою нелінійністю. Тут можу тільки порадити налагодження “з нуля”. Або ж рахуйте самі: амперметр каже Вам рівно те, що бачить на вході АЦП.

Маєте якусь чарівну прошивку, де ампери додатково ще діляться на два, тобто маєте верхню планку вимірювання на рівні 5а та фактичну роздільну здатність 9 біт. Нема жодних питань, я це можу влаштувати, але ж рекомендую зробити як у п.1.

Здравствуйте, Максим! А что Вас смущает? У Вас самый большой разбег три единицы младшего разряда. – погрешность АЦП, с учетом того, что простой Mastech не бог весть какой эталон – то добавляйте еще одну единицу как минимум. Теоретически возможно отклонение в две единицы (т.к. Имеем ДВА разных АЦП).

По факту имеем всего три в реальной жизни. Я считаю отлично.

В идеале еще бы проверить на токе 99.5а, ну то такое Особенно если не планируете измерять больше. Ну и спрошу на всякий случай: когда меряли амперметры последовательно включали оба одновременно? Если нет – то весьма плохую шутку могут сыграть китайские провода на щупах мультиметра. Изучаю stm8, после долгих раздумий выбрал вольтметр, как первое полезное устройство. Много интересного подчерпнул из обоих вольтметров. А если вместо 2х цепочек АЦП, одну, а на ещё ножку проца поцепить резистор, который когда она в 0 будет параллельным скажем так R15 и менять коэффициент делителя? Как первое устройство, думаю собирать на семисегментном индикаторе(3 или 4 цифры ещё не определился) для удешевления и ставить на все БП, которыми пользуюсь.

Сделать кнопочку ток-или напряжение. И платку маленькую как индикатор. Готовый китайский, что по очереди – неудобен и не информативен. И возможно кнопочку по циклу: текущее-минимум-максимум с момента включения устройства. Кренка по питанию тоже не особо радует, сейчас полно дешёвых микрух с меньшим потреблением или падением на себе. И тот момент, что точность измерения от неё зависит. Видел идею мерять напряжение на внутреннем источнике, пока правда не совсем разобрался на котором, вроде где-то внутри есть 1.22в, а есть и VCAP c 1.8в, и соответственно им по пропорции узнавать сначала размах напряжения АЦП.

А потом уже с этим коэффициентом мерять. Про резистор для изменения коэфф. Экономии пинов – 0. Также низкий уровень тоже понятие растяжимое. А может 50мв? А может 100мв?

Atmega 8 16 Вольтметр Амперметр

Дополнительный “раздражитель” для точности вольтметра. Немного не понял по поводу измерения Vcap и пропорций. Vcap – это всего лишь питание цифровой части. Оно никакое не прецизионное и не регламентирована ни точность ни пропорции.

Смысла его мерять – также ноль. Если планируете использовать АЦП – напряжение питания в общем-то все равно какое – 4.8, 4.9, 4.95 или 5.05 – единственное требование – стабильность и отсутствие пульсаций. В этом ключе использование импульсных преобразователей, скажем так, спорно.

У СТМ8 покрупнее вход ИОН выведен на отдельную ножку.

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

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

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

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

На точность преобразования могут очень сильно влиять наводки и помехи, а также скорость преобразования. Чем медленнее происходит преобразования – тем оно точней. С наводками и помехами следует бороться с помощью индуктивности и емкости, как советует производитель в даташите: В микроконтроллерах AVR как источник опорного напряжения может использоваться вывод AREF, или внутренние источники 2,56В или 1,23В.

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

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

Схема подключения: Обвязка микроконтроллера и стандартна. 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 мкФ для устранения шумов и наводок на АЦП на схеме не показан. Их наличие подразумевается само собой, если используется АЦП. Теперь дело за программой: Программа на языке Си. Программа проста.

В начале мы инициализируем порты ввода/вывода. Для того, чтобы служить входом АЦП, пин PC0 должен работать на вход. Далее проводим инициализацию ЖКИ и АЦП. Инициализация АЦП заключается в его включении битом ADEN в регистре ADCSRA. И выбора частоты преобразования битами ADPS2, ADPS1, ADPS0 в том же регистре.

Также выбираем источник опорного напряжения, биты REFS1 REFS0 в регистре ADMUX и вход АЦП: биты MUX0,MUX1,MUX2, MUX3 (в нашем случаем входом АЦП является PC0, поэтому MUX0.3=0). Далее, в вечном цикле, начинаем преобразования установкой бита ADSC в регистре ADCSRA. Дожидаемся окончания преобразования (бит ADIF в ADCSRA становиться равным 1). Далее вынимаем данные из регистра ADC и выводим их на ЖКИ. Вынимать данные из ADC нужно в такой последовательности: v=(ADCL+ADCH.256); если использовать v=(ADCH.256+ADCL); - в упор не работает. Так-же есть хитрость, чтобы не работать с дробными числами. Когда производиться вычисления входного напряжения в вольтах.

Мы просто будем хранить наше напряжения в милливольтах. Например, значение переменной voltage 4234 означает, что мы имеем 4,234 вольта. Вообще операции с дробными числами кушают очень много памяти микроконтроллера (наша прошивка вольтметра весит чуть больше 4 килобайт, это половина памяти программ ATmega8!), их рекомендуется использовать только при особой необходимости. Вычисления входного напряжения в милливольтах просто: voltage=Rdivision.2.56.u.1.024; Здесь Rdivision – коэффициент резистивного делителя R4-R5. Так, как реальный коэффициент делителя может отличаться от расчетного, то наш вольтметр будет врать. Но подкорректировать это просто.

С помощью тестера меряем некое напряжение, получаем X вольт, а наш вольтметр пускай показывает Y вольт. Тогда Rdivision = 4.X/Y, если Y больше X и 4.Y/X если X больше Y. На этом настройка вольтметра завершена, и им можно пользоваться. Видео работы устройства: Также можно доработать свой блок питания. Вставив в него цифровой вольтметр-амперметр на ЖКИ и защиту от перегрузки (для измерения тока нам понадобиться мощный шунт сопротивлением порядка 1 Ом). В свой блок питания я встроил еще защиту от перегрузки, когда ток превышает 2А, то пьезо пищалка начинает усердно пищать, сигнализируя о перегрузке. Просветите, пожалуйста, несколько моментов: 1 как долго происходит обработка АЦП?

Сколько тактов? 2 Если используется более одного АЦП показания считываются сначала с ADC0 потом с ADC1, соответственно затрачивается вдвое больше времени? Или это происходит одновременно? 3 Можно ли применять разные опорные напряжения для разных адаков, например 2,56 для нулевого (измерять напряжение ) и 1,23 для другого (измерять ток с достаточной точностью и малой просадкой)? И последний вопрос немного в сторону: не встречался ли более менее толковый даташит на мегу8 на русише?

1) Время преобразования = (Разрядность АЦП+1).время такта для АЦП, которое задается делителем. Чем длиннее преобразование - тем больше точность (до некоторого порога). 2) Одновременно встроенный АЦП не может преобразовывать более одного сигнала. Надо вдвое больше времени. 3) Можно применять разные опорные напряжения для разных каналов.

Меряем на одном канале, меняем настройки АЦП, меряем на втором канале, снова меняем настройки. Неа, русского даташита под mega8 не видел. Только аккуратно стоит русскими даташитами пользоваться, все-таки не официал. Часто встречался что проще было перевести с инглиша, чем понять машинный русский перевод документации.

А какое напряжение? Если постоянное, то проще всего сделать резистивный делитель. Например 20 кОм и 510 кОм. При достижении напруги 120В в АЦП будет 0х039А (если источник опорного АЦП 2,56В). Алгоритм работы простой: если не требуются сверхскорость реакции, то ставим вечный цикл, в котором будет опрашится АЦП, и если значение в ADC вышло 0х039А, то что-то делаем с реле.

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