показометр U/I в Bascom-AVR

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
SolderC
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 28, 2013 20:39:28
Откуда: извне

показометр U/I в Bascom-AVR

Сообщение SolderC »

Здравствуйте, помогите разобраться с заморочкой. Понадобился мне в ЛБП показометр, т.к. старый приказал долго жить. Порывшись в нете решил сделать на контроллере, ещё чуть-чуть порывшись понял, что лучше сообразить прошиву самому, чтобы не иметь лишних фичь в показометре вроде регулируемых порогов отключения нагрузки при перенапряжении и КЗ, "привет от Васи" в момент включения прибора и прочей ебулды, да и прибор сделать именно на нужный диапазон измерения.
Вообщем, остановился на basic, потому что в школе изучал :) и это боле менее интуитивно понятный мне язык в отличие от C и asm. На просторах нета нарыл исходник и начал его коцать под свои нужды.
Написал, собрал(на макете), работает.
Работает-то работает, да не так как хотелось бы, без косяков ну не как!
Почему-то у меня измерения не линейные получаются(( В протеусе норм, а в железе хрена.
Без измерения тока погрешность
мой показометр / "Эталон"
14,9В 0,00А / 14,9В 0,00А
29,3В 0,00А / 28,7В 0,00А
в этом диапазоне уже разница 0,6В, а мне надо чтобы он до 50В мерил, думаю там погрешность будет страшная, к сожалению сейчас не могу 50В подать не откуда взять.
Ладно, теперь при измерении тока и напрежения:
мой показометр / "Эталон"
14,8В 0,21А / 14,8В 0,21А
13,8В 0,78А / 14,3В 0,69А
12,5В 1,54А / 13,5В 1,29А
10,8В 2,38А / 12,8В 1,89А
Вот такая вот фигня(( Помогите начинающему программисту. Вопрос один как добиться линейности, в чём мой косяк?
http://1drv.ms/1LSOB9Q - ссылка для скачивания исходника, проекта Proteus и фоток описанных выше измерений(архив VA).
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: показометр U/I в Bascom-AVR

Сообщение Мурик »

По ссылке пустая страница.
Аватара пользователя
SolderC
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 28, 2013 20:39:28
Откуда: извне

Re: показометр U/I в Bascom-AVR

Сообщение SolderC »

Proteus, source code.zip
(29.44 КБ) 194 скачивания


Извиняюсь, странно, пробовал с другого компа заходил вроде((

http://uploads.ru/?g=2FiwX.jpg фото
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: показометр U/I в Bascom-AVR

Сообщение Мурик »

Почему в качестве ИОН использовано напряжение питания?
Аватара пользователя
SolderC
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 28, 2013 20:39:28
Откуда: извне

Re: показометр U/I в Bascom-AVR

Сообщение SolderC »

Пробовал внутренний на 2.56В те же яйца только в профиль.
Еще пробовал усреднять данные с АЦП то же не помогло.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

Re: показометр U/I в Bascom-AVR

Сообщение просто КОТ »

А что за эталон? Может он сам +/- лапоть сообщает?
Изображение
И ты врёшь!!! © Vladisman
Изображение
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: показометр U/I в Bascom-AVR

Сообщение Мурик »

В коде уж слишком просто вычисляются напряжения и токи из данных АЦП. Возможно из-за этого погрешность.
Учтено ли напряжение питания, которое использовано в качестве ИОН? Какова его стабильность? Если отличается на пару милливольт от расчетного - будет погрешность.
Учтено что при 10-битном преобразовании, результат в диапазоне от 0 до 1023 (а не 0 - 1000, как некоторые думают)?
Правильно ли подобраны резисторы в делителе напряжения и насколько соответствует расчетному сопротивление шунта?
Аватара пользователя
Adagumer
Поставщик валерьянки для Кота
Сообщения: 2283
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

Re: показометр U/I в Bascom-AVR

Сообщение Adagumer »

Мурик писал(а):Правильно ли подобраны резисторы в делителе напряжения и насколько соответствует расчетному сопротивление шунта?

Надо вывести на экран значение АЦП и провести замер какого либо
эталонного напряжения, а потом сравнить полученное значение с расчётным!
Аватара пользователя
SolderC
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 28, 2013 20:39:28
Откуда: извне

Re: показометр U/I в Bascom-AVR

Сообщение SolderC »

просто КОТ писал(а):А что за эталон? Может он сам +/- лапоть сообщает?

Да :) он может, и лопочет, немного правда. Я его использовал просто для наглядности, чтобы в кадр влез :) , вся эта конструкция на фото которая "эталон" это моя самоделка - электронная нагрузка.
Хоть он и "лопочет", но суть всё-же показывает - нелинейность, замерял на GDM-8145 результаты схожи.
Мурик писал(а):В коде уж слишком просто вычисляются напряжения и токи из данных АЦП. Возможно из-за этого погрешность.
Учтено ли напряжение питания, которое использовано в качестве ИОН? Какова его стабильность? Если отличается на пару милливольт от расчетного - будет погрешность.

Просто не значит не правильно. Стабильность питания возможно и плавает на пару миливольт из-за нагрева, хотя вольтметр(GDM-8145) не показывает этого, но почему когда я использовал внутренний ИОН контроллера результат был тем-же? И ещё значение 14,8-15,2В прибор показывает точно с контрольным прибором, дальше идут расхождение как в сторону увеличения, так и в сторону уменьшения показаний, если бы виной был дрейф напряжения питания эти значения то же плавали бы, верно я рассуждаю?
Учтено что при 10-битном преобразовании, результат в диапазоне от 0 до 1023 (а не 0 - 1000, как некоторые думают)?

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

Шунт 0,1 ом, в качестве его резистор 3Вт с допуском 1%.
Но о нём позже, напомню что без нагрузки(измерение только напряжения) нелинейность не исчезает.

Хочу попробовать внешний ИОН на Aref повесить , как думаете TL431 с этой нелегкой задачей?
Вложения
7357.test.jpg-550x0.jpg
(20.15 КБ) 655 скачиваний
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: показометр U/I в Bascom-AVR

Сообщение Мурик »

SolderC писал(а):Хочу попробовать внешний ИОН на Aref повесить
ИМХО лишнее. Внутреннего для этой задачи достаточно.
На схеме есть несколько ОУ и возможно из-за них погрешность. Там переменников предостаточно. Все правильно настроено?
Хотя не понятно зачем нужны ОУ, если чувствительности АЦП должно хватить.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: показометр U/I в Bascom-AVR

Сообщение pavel1979 »

я тоже думаю что оу лишний,при 0,1 ом ток можно мерить без оу,и диоды зеннера смущают,я бы их выкинул
у меня попроще,измерение до 20,48 в и ток 2,048 ампер(там же частотомер нч),меряет норм

и avcc через дроссель бы к плюсу...
Аватара пользователя
SolderC
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 28, 2013 20:39:28
Откуда: извне

Re: показометр U/I в Bascom-AVR

Сообщение SolderC »

Максимальный ток, который мне надо мерить 3А, с шунта это 0,3В и сразу на вход АЦП, при опоре в 5В шутите?
Да и операционник не при чём, если PC2 посадить на землю, то лучше не станет, это я ещё раньше опробовал.
atmega подделки бывают? мож у меня такая или брак?
Это в протеусе диоды такие в жизни обычные стабилитроны на 5,1В чтоб порты не подпалить
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: показометр U/I в Bascom-AVR

Сообщение pavel1979 »

а если попробовать подать 0-2,56 в прямо на вход ацп меги и сравнивать с эталоном?
могут ли прерывания мешать измерению?(у меня прерывания мешали адекватному считыванию температуры с дс18б20,хотя в протеусе все было ок),в апноте AN #196 сначала отключаются таймеры,проводится измерение ацп,потом таймеры запускаются
Аватара пользователя
SolderC
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 28, 2013 20:39:28
Откуда: извне

Re: показометр U/I в Bascom-AVR

Сообщение SolderC »

pavel1979, скажите, а вы за Uref что брали?
То же грешил на прерывания, потом написал прошиву вообще без них, прибор работает точно так же как и с прерываниями, если надо могу выложить прошивку без прерываний.

Нашел у себя TL431 замерил напругу - 2,495В, ну попробую на ней, а что ещё делать :dont_know:

Кстати инфу по расчётам брал от сюда http://radioparty.ru/prog-avr/program-c/288-lesson-adc-avr-voltmeter
мож там не правильно описано?
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: показометр U/I в Bascom-AVR

Сообщение pavel1979 »

опорное 2,56 в

вот как у вас примерно http://avrproject.ru/publ/zadejstvuem_acp_voltmetr_na_avr/1-1-0-13
Последний раз редактировалось pavel1979 Вс окт 18, 2015 14:32:24, всего редактировалось 1 раз.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: показометр U/I в Bascom-AVR

Сообщение Мурик »

SolderC писал(а):Максимальный ток, который мне надо мерить 3А, с шунта это 0,3В и сразу на вход АЦП, при опоре в 5В шутите?
Поставить ОУ LM358 с коэффициентом усиления 10 и будет нормально. Множества перемеников не нужно. Достаточно жестко установить 10-ти кратное усиление.

SolderC писал(а):atmega подделки бывают? мож у меня такая или брак?
Попробуйте другую.

pavel1979 писал(а):в апноте AN #196 сначала отключаются таймеры,проводится измерение ацп,потом таймеры запускаются
Это для уменьшения шума. В данном случае, дело не в этом.

SolderC писал(а):Нашел у себя TL431 замерил напругу - 2,495В, ну попробую на ней, а что ещё делать
Чем это будет лучше внутреннего ИОН на 2.56В?

Скорее всего погрешность из-за неправильно рассчитанного коэффициента усиления ОУ.
Аватара пользователя
SolderC
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 28, 2013 20:39:28
Откуда: извне

Re: показометр U/I в Bascom-AVR

Сообщение SolderC »

Код: Выделить всё

Поставить ОУ LM358 с коэффициентом усиления 10 и будет нормально. Множества перемеников не нужно. Достаточно жестко установить 10-ти кратное усиление.

На макетке и так LM358 и переменник в её обвязке один, это в протеусе заморочи у меня просто.
Чем это будет лучше внутреннего ИОН на 2.56В?

Читал на форумах, не хвалили внутренний ИОН mega8. Просто чтоб убедиться.
Скорее всего погрешность из-за неправильно рассчитанного коэффициента усиления ОУ

Возможно, при измерении тока и напряжения одновременно. Да. Но я сажал PC2(АЦП ампер) на землю, выкидывал ОУ из схемы вообще, а нелинейность оставалась. Взгляните на первое фото которые я выкладывал, где 28,7В, а у меня показывает 29,3В, амперы по нулям. Да и если бы коэфф ОУ был бы причиной, тогда бы только амперы плавали, а напряжение было бы в норме, АЦП ведь разные, ОУ только на PC2/
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: показометр U/I в Bascom-AVR

Сообщение pavel1979 »

к сожалению не сохранился исходник от моего вольтамперметра,попробую перепаяю свой термометр http://img.radiokot.ru/files/89927/medium/r8ed9qrop.jpg и испытаю ваш исходник(там уже предусмотрены делители перед ацп-на будущее ставил),отпишусь о результате если надо
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: показометр U/I в Bascom-AVR

Сообщение Мурик »

Посмотрел еще раз исходник... По моему в нем неправильно преобразовывается данные АЦП в вольты. Не учитывается ни опорное напряжение, но то что максимум это 1023, а не 1000.

Попробуйте такой вариант.

Код: Выделить всё

Const Aref = 2.56                                 ' Напряжение ИОН.
Config Adc = Single , Prescaler = 128 , Reference = Internal ' Внутренний ИОН.
Dim x As Word
Dim y As Single

x = Getadc(0)                                   ' Опрос канала 0 АЦП.
y = Aref * x
y = y / 1024
y = y * 1000                                    ' Результат в милливольтах на входе АЦП.
pavel1979
Мучитель микросхем
Сообщения: 494
Зарегистрирован: Пн авг 12, 2013 19:07:47
Откуда: башкирия мелеуз

Re: показометр U/I в Bascom-AVR

Сообщение pavel1979 »

тоже странно-при входном напр 2,0 в показывает 1,98 в,при 5,0 в и до 20,0 в показывает ровно,общая ошибка не более 20 мв
делиталь ставил 10 ком и 91 ком
куски кода
Спойлер$regfile = "m8adef.dat" 'óêàçàòü íóæíûé
$crystal = 8000000 'óêàçàòü íóæíûé
$hwstack = 16
$swstack = 64
$framesize = 32
.................
For T = 1 To 64
Volt_1 = Getadc(0) 'îïðîñ ÀÖÏ 0
Volt_2 = Getadc(1)
Volt = Volt + Volt_2
Next T
Volt = Volt / 64
Volt = Volt_2 * 25.6
Volt = Volt / 1023
lcd Fusing(volt , "#.##")
Ответить

Вернуться в «AVR»