Обсуждаем контроллеры компании Atmel.
Ответить

Ампервольтметр на ATmega8

Ср дек 27, 2023 21:30:23

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

Re: Ампервольтметр на ATmega8

Ср дек 27, 2023 23:15:36

melandr писал(а):появляется ошибка. Понимаю, что это нелинейность. Но не могу понять, можно и как от нее избавиться.

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

Re: Ампервольтметр на ATmega8

Ср дек 27, 2023 23:25:37

Схему бы покрупнее. Есть зависимость показаний напряжения от тока или наоборот?

Re: Ампервольтметр на ATmega8

Ср дек 27, 2023 23:32:29

Вообще-то она нарисована достаточно крупно:
https://img.radiokot.ru/files/92054/3bvm031vfc.jpg
СпойлерИзображение

Re: Ампервольтметр на ATmega8

Ср дек 27, 2023 23:52:21

Алгоритм расчёта такой вот :
Изображение

Добавлено after 18 minutes 49 seconds:
так
Вложения
99.jpg
(179.91 KiB) Скачиваний: 32

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 02:26:24

Схему бы покрупнее. Есть зависимость показаний напряжения от тока или наоборот?

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

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 03:42:52

melandr писал(а):Меня смущает мельтешение показаний, по сравнения с китайским показометром.
А вы увеличьте номинал С3, С4 и С5- раз в 10, или даже в 100.. У мультиметра на входе АЦП стоит 0,01~0,1 мкФ (10~100 нФ), а у вас- 1000 пФ. К тому же, есть "шумные" конденсаторы..

зы.. Я делал "просто вольтметр"-
Изображение Изображение Изображение Изображение
Тоже на Мега8, кажется.. :dont_know: Он измерял 10 раз, потом считал "среднее" и выводил значение на индикатор..

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 04:48:07

считать среднее не совсем правильно: если хотя бы одно показание имеет очень большую ошибку, например, единственный 0 когда все остальные в диапазоне 9...10,что как бы намекает на среднее около 9,5, даст среднее около 8,5. Нехилая погрешность. Поэтому, надо исключать заведомо неверные значения.

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 07:35:51

1. убрать стабилитроны со входов АЦП - они своей утечкой искажают измерение и вносят нелинейность.
2. нет конденсатора на выводе AREF.

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 19:32:23

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)

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 20:59:30

Чё в итоге то ?

Добавлено after 3 minutes 31 second:
200 показаний - это плохо ! Нужно 128 или 256 , что бы быстро делить сдвигами .

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 21:06:48

Куда торопиться? Достаточно одного измерения напр. каждые 0,5 секунды? Ошибка из pdf: +/-1 младшая цифра остаётся. Например, 4 измерения и усреднение, и не отображается на дисплее.
Последний раз редактировалось veso74 Чт дек 28, 2023 21:09:35, всего редактировалось 2 раз(а).

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 21:12:57

И да, нет скачков писецких , хоть 128, хоть сколько ... Есть один последний бит, который будет скакать всегда .

Добавлено after 1 minute 12 seconds:
И это проблема !

Добавлено after 4 minutes 11 seconds:
Кто то говорит, что нужно скользящее ... какое то , куда то засунуть ...

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 21:15:09

И TL431 не является прецизионный источник напряжения. Можете с одинаковым успехом использовать блок питания или внутренний источник АТ-меги.

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 21:24:27

Возможно , изменение в пределах одного последненго бита АЦП , не замечать ... и выводить его

Добавлено after 2 minutes 50 seconds:
Всмысле , если изменение больше 1 бита , то не выводить, и считать прежним, а если больше то изннять показнание

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 22:52:24

Кто то говорит, что нужно скользящее ... какое то , куда то засунуть ...

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

Re: Ампервольтметр на ATmega8

Чт дек 28, 2023 23:07:05

Starichok51 писал(а):убрать стабилитроны

Ser60 писал(а):использовать лавинные диоды

"Ввинтить песдюльсов", как я это называю. То есть, использовать так называемые защитные TVS-диоды (подскажите наш термин) серии PESDLC. Попался в руки каталог с образцами и я был весьма впечатлён насколько ближе они к идеальным стабилитронам, чем обычные стабилитроны. Но в схемах таки использую диод с делителя на шину питания, а потом ещё защитный резистор на порт.
А вообще, всё никак код не посмотрю. Уж простите, под новый год у всех сракисроки горят, надо многое подремонтировать.

Re: Ампервольтметр на ATmega8

Сб дек 30, 2023 01:09:20

А вопрос по коду, у меня в основном цикле происходит вызов обработчика АЦП, далее происходит обновление дисплея с частотой 300 Гц и когда счетчик АЦП набирает 200 значений, происходит усреднение полученных значений и занесение в буфер экрана. Не подскажите, как часто обновляются значения в буфере? А то что-то я уже не могу вспомнить, как правильно посчитать период обновления значений АЦП. Может стоит обновлять где-то раз в полсекунды или чуть быстрее?
ЗЫ: на аналоговых входах стоят кондеры большей емкости. Просто когда рисовал схему, стояли маленькие, а потом по совету повысил емкость конденсаторов входных
ЗЫ1: попробую видео снять, чтобы показать как плавают показания, если получится сюда закинуть
показания на двух пределах измерения напряжения.
https://fex.net/ru/s/43cym4b
https://fex.net/ru/s/msovxkt

Re: Ампервольтметр на ATmega8

Сб дек 30, 2023 07:52:29

melandr писал(а):Не подскажите, как часто обновляются значения в буфере?
обновляются,
melandr писал(а):когда счетчик АЦП набирает 200 значений, происходит усреднение полученных значений и занесение в буфер экрана.
а когда счетчик АЦП набирает 200 значений, это ты сам должен знать, программа же твоя.

Re: Ампервольтметр на ATmega8

Сб дек 30, 2023 11:52:33

ISR(ADC_vect) имеет более низкий приоритет чем ISR(TIMER0_OVF_vect). Т.е. если программа находится в первом фрагменте кода, то индикация иногда прерывает расчет. Решение: При прерывании для ADC остановить возможность нового прерывания (cli(); sei();)) (дисплей будет мигать еще сильнее) или поднять только флаг готовности данных ADC. А расчет ADC – в main() (с соответствующим снятием флага). Бы даже убрал прерывание ADC. А его код – только в main (и ждем до завершения ADC conversion).

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

Изображение
Ответить