Ампервольтметр на ATmega8
Ампервольтметр на ATmega8
Добрый вечер! Сделал для переделанного блока питания ампервольтметр. Но не устраивает работа прибора. Есть две проблемы, возможно кто подскажет, как их можно обойти. Первая: плавают показания тока и напряжения в пределах 1..2 десятых. Сравнивал работу прибора с китайским показометром. Там показания стоят как литые, на том же блоке питания. Возможно слишком часто произвожу измерение и вывод показаний на экран. Измеряю в основном цикле, усредняя 200 показаний. Используется внутренний кварц контроллера. Показания на дисплее обновляю с частотой 300 Гц. Код ниже. Вторая проблема: калибрую прибор на максимуме измеряемых показаний 20В и 10 А, но когда измеряемые значения меньше, появляется ошибка. Понимаю, что это нелинейность. Но не могу понять, можно и как от нее избавиться.

- Вложения
-
- VAmetr_7seg.zip
- (34.03 КБ) 169 скачиваний
- Реклама
Re: Ампервольтметр на ATmega8
Да , есть такая проблема , я её обходил применением канонических формул, ошибка уходила . Но в середине диапазона подстраивал потенциометром точные показания, а вниз и вверх уже расчётами МК , то есть компенсировал нелинейность , програмной нелинейностью.melandr писал(а):появляется ошибка. Понимаю, что это нелинейность. Но не могу понять, можно и как от нее избавиться.
Не спрашивай по ком звонит колокол, он звонит по тебе !
- >TEHb<
- Друг Кота
- Сообщения: 5742
- Зарегистрирован: Ср ноя 11, 2009 17:19:30
- Откуда: Воронеж
- Контактная информация:
Re: Ампервольтметр на ATmega8
Схему бы покрупнее. Есть зависимость показаний напряжения от тока или наоборот?
"Привет!" - соврал он.
- АлександрЛ
- Друг Кота
- Сообщения: 43880
- Зарегистрирован: Пн ноя 30, 2009 03:00:01
- Откуда: Нерезиновая
Re: Ампервольтметр на ATmega8
Вообще-то она нарисована достаточно крупно:
https://img.radiokot.ru/files/92054/3bvm031vfc.jpg
https://img.radiokot.ru/files/92054/3bvm031vfc.jpg
Спойлер

Re: Ампервольтметр на ATmega8
- Вложения
-
- 99.jpg
- (179.91 КБ) 115 скачиваний
Не спрашивай по ком звонит колокол, он звонит по тебе !
- Реклама
Re: Ампервольтметр на ATmega8
[uquote=">TEHb<",url="/forum/viewtopic.php?p=4523058#p4523058"]Схему бы покрупнее. Есть зависимость показаний напряжения от тока или наоборот?[/uquote]
зависимости нет. Может показывать ток адекватно, а напряжение занижать.
Меня смущает мельтешение показаний, по сравнения с китайским показометром. Насколько часто нужно проводить измерения и обновлять значения на экране? Показания на китайском ампервольтметра так не скачут, на том же источнике постоянного напряжения. вопрос стоит что лучше: усреднять показания АЦП или реже проводить измерения?
зависимости нет. Может показывать ток адекватно, а напряжение занижать.
Меня смущает мельтешение показаний, по сравнения с китайским показометром. Насколько часто нужно проводить измерения и обновлять значения на экране? Показания на китайском ампервольтметра так не скачут, на том же источнике постоянного напряжения. вопрос стоит что лучше: усреднять показания АЦП или реже проводить измерения?
- АлександрЛ
- Друг Кота
- Сообщения: 43880
- Зарегистрирован: Пн ноя 30, 2009 03:00:01
- Откуда: Нерезиновая
Re: Ампервольтметр на ATmega8
А вы увеличьте номинал С3, С4 и С5- раз в 10, или даже в 100.. У мультиметра на входе АЦП стоит 0,01~0,1 мкФ (10~100 нФ), а у вас- 1000 пФ. К тому же, есть "шумные" конденсаторы..melandr писал(а):Меня смущает мельтешение показаний, по сравнения с китайским показометром.
зы.. Я делал "просто вольтметр"-
Тоже на Мега8, кажется..
Re: Ампервольтметр на ATmega8
считать среднее не совсем правильно: если хотя бы одно показание имеет очень большую ошибку, например, единственный 0 когда все остальные в диапазоне 9...10,что как бы намекает на среднее около 9,5, даст среднее около 8,5. Нехилая погрешность. Поэтому, надо исключать заведомо неверные значения.
- Starichok51
- Модератор
- Сообщения: 19053
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Ампервольтметр на ATmega8
1. убрать стабилитроны со входов АЦП - они своей утечкой искажают измерение и вносят нелинейность.
2. нет конденсатора на выводе AREF.
2. нет конденсатора на выводе AREF.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
-
С.Н.
- Потрогал лапой паяльник
- Сообщения: 307
- Зарегистрирован: Пн окт 26, 2020 08:37:51
- Откуда: г.Волгоград
Re: Ампервольтметр на ATmega8
1. Источник опорного напряжения 2.5 В. Нелинейность, вносимая стабилитронами на 5.6В, на мой взгляд пренебрежимо мала. А вот пользы от этих стабилитронов "цельный вагон".
2. Источник нелинейности и ошибки или в программном коде (может быть например мультиплексор не вовремя "дергаете") или в схеме, которая тут не приведена (то место,куда J1-2 и J1-3 подключены).
J1-2 скорее всего двухдиапазонный вольтметр. J1-3 - для подключения к шунту?
3. "Показометры", как Вы называете, сделаны скорее всего на АЦП двойного интегрирования. Этот преобразователь не чувствителен к наводке с частотой, близкой к 50 Гц.
4. В контроллере АЦП последовательных приближений. В любом случае при индикации последний разряд должен "скакать" +/-1.
5. Если нет проблем по п.2, то усреднение по группе измерений должно все "устаканить". Если бывают не регулярные выбросы в измеряемых сигналах, то можно и более сложные фильтры применять - что-то типа медианного фильтра (https://alexgyver.ru/lessons/filters/?y ... 7286875341)
2. Источник нелинейности и ошибки или в программном коде (может быть например мультиплексор не вовремя "дергаете") или в схеме, которая тут не приведена (то место,куда J1-2 и J1-3 подключены).
J1-2 скорее всего двухдиапазонный вольтметр. J1-3 - для подключения к шунту?
3. "Показометры", как Вы называете, сделаны скорее всего на АЦП двойного интегрирования. Этот преобразователь не чувствителен к наводке с частотой, близкой к 50 Гц.
4. В контроллере АЦП последовательных приближений. В любом случае при индикации последний разряд должен "скакать" +/-1.
5. Если нет проблем по п.2, то усреднение по группе измерений должно все "устаканить". Если бывают не регулярные выбросы в измеряемых сигналах, то можно и более сложные фильтры применять - что-то типа медианного фильтра (https://alexgyver.ru/lessons/filters/?y ... 7286875341)
ФУОЗ на платформе Ардуино: https://radiokot.ru/forum/viewtopic.php ... 6#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"
Re: Ампервольтметр на ATmega8
Чё в итоге то ?
Добавлено after 3 minutes 31 second:
200 показаний - это плохо ! Нужно 128 или 256 , что бы быстро делить сдвигами .
Добавлено after 3 minutes 31 second:
200 показаний - это плохо ! Нужно 128 или 256 , что бы быстро делить сдвигами .
Не спрашивай по ком звонит колокол, он звонит по тебе !
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Ампервольтметр на ATmega8
Куда торопиться? Достаточно одного измерения напр. каждые 0,5 секунды? Ошибка из pdf: +/-1 младшая цифра остаётся. Например, 4 измерения и усреднение, и не отображается на дисплее.
Последний раз редактировалось veso74 Чт дек 28, 2023 21:09:35, всего редактировалось 2 раза.
Re: Ампервольтметр на ATmega8
И да, нет скачков писецких , хоть 128, хоть сколько ... Есть один последний бит, который будет скакать всегда .
Добавлено after 1 minute 12 seconds:
И это проблема !
Добавлено after 4 minutes 11 seconds:
Кто то говорит, что нужно скользящее ... какое то , куда то засунуть ...
Добавлено after 1 minute 12 seconds:
И это проблема !
Добавлено after 4 minutes 11 seconds:
Кто то говорит, что нужно скользящее ... какое то , куда то засунуть ...
Не спрашивай по ком звонит колокол, он звонит по тебе !
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Ампервольтметр на ATmega8
И TL431 не является прецизионный источник напряжения. Можете с одинаковым успехом использовать блок питания или внутренний источник АТ-меги.
Re: Ампервольтметр на ATmega8
Возможно , изменение в пределах одного последненго бита АЦП , не замечать ... и выводить его
Добавлено after 2 minutes 50 seconds:
Всмысле , если изменение больше 1 бита , то не выводить, и считать прежним, а если больше то изннять показнание
Добавлено after 2 minutes 50 seconds:
Всмысле , если изменение больше 1 бита , то не выводить, и считать прежним, а если больше то изннять показнание
Не спрашивай по ком звонит колокол, он звонит по тебе !
Re: Ампервольтметр на ATmega8
[uquote="Alex_641",url="/forum/viewtopic.php?p=4523436#p4523436"]Кто то говорит, что нужно скользящее ... какое то , куда то засунуть ...[/uquote]
Конечно обязательно надо, тогда и скачков не будет. См. здесь. И если действительно хотите защитить выводы МК, то вместо стабилитронов следует использовать лавинные диоды.
Конечно обязательно надо, тогда и скачков не будет. См. здесь. И если действительно хотите защитить выводы МК, то вместо стабилитронов следует использовать лавинные диоды.
- >TEHb<
- Друг Кота
- Сообщения: 5742
- Зарегистрирован: Ср ноя 11, 2009 17:19:30
- Откуда: Воронеж
- Контактная информация:
Re: Ампервольтметр на ATmega8
Starichok51 писал(а):убрать стабилитроны
"Ввинтить песдюльсов", как я это называю. То есть, использовать так называемые защитные TVS-диоды (подскажите наш термин) серии PESDLC. Попался в руки каталог с образцами и я был весьма впечатлён насколько ближе они к идеальным стабилитронам, чем обычные стабилитроны. Но в схемах таки использую диод с делителя на шину питания, а потом ещё защитный резистор на порт.Ser60 писал(а):использовать лавинные диоды
А вообще, всё никак код не посмотрю. Уж простите, под новый год у всех сракисроки горят, надо многое подремонтировать.
"Привет!" - соврал он.
Re: Ампервольтметр на ATmega8
А вопрос по коду, у меня в основном цикле происходит вызов обработчика АЦП, далее происходит обновление дисплея с частотой 300 Гц и когда счетчик АЦП набирает 200 значений, происходит усреднение полученных значений и занесение в буфер экрана. Не подскажите, как часто обновляются значения в буфере? А то что-то я уже не могу вспомнить, как правильно посчитать период обновления значений АЦП. Может стоит обновлять где-то раз в полсекунды или чуть быстрее?
ЗЫ: на аналоговых входах стоят кондеры большей емкости. Просто когда рисовал схему, стояли маленькие, а потом по совету повысил емкость конденсаторов входных
ЗЫ1: попробую видео снять, чтобы показать как плавают показания, если получится сюда закинуть
показания на двух пределах измерения напряжения.
https://fex.net/ru/s/43cym4b
https://fex.net/ru/s/msovxkt
ЗЫ: на аналоговых входах стоят кондеры большей емкости. Просто когда рисовал схему, стояли маленькие, а потом по совету повысил емкость конденсаторов входных
ЗЫ1: попробую видео снять, чтобы показать как плавают показания, если получится сюда закинуть
показания на двух пределах измерения напряжения.
https://fex.net/ru/s/43cym4b
https://fex.net/ru/s/msovxkt
- Starichok51
- Модератор
- Сообщения: 19053
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Ампервольтметр на ATmega8
обновляются,melandr писал(а):Не подскажите, как часто обновляются значения в буфере?
а когда счетчик АЦП набирает 200 значений, это ты сам должен знать, программа же твоя.melandr писал(а):когда счетчик АЦП набирает 200 значений, происходит усреднение полученных значений и занесение в буфер экрана.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Ампервольтметр на ATmega8
ISR(ADC_vect) имеет более низкий приоритет чем ISR(TIMER0_OVF_vect). Т.е. если программа находится в первом фрагменте кода, то индикация иногда прерывает расчет. Решение: При прерывании для ADC остановить возможность нового прерывания (cli(); sei();)) (дисплей будет мигать еще сильнее) или поднять только флаг готовности данных ADC. А расчет ADC – в main() (с соответствующим снятием флага). Бы даже убрал прерывание ADC. А его код – только в main (и ждем до завершения ADC conversion).
Попробовал ваш код в Arduino IDE + MiniCore -> Atmega8. Работает. Но показания в Протеус там "не скачут", не меняются. Там не могу проверить влияние дополнения. Нужна аппаратная часть. (частично пользуюсь переводчиком).

Попробовал ваш код в Arduino IDE + MiniCore -> Atmega8. Работает. Но показания в Протеус там "не скачут", не меняются. Там не могу проверить влияние дополнения. Нужна аппаратная часть. (частично пользуюсь переводчиком).


