реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Неверный результат измерения потреблённой энергии, Не могу найти ошибку
Motion
сообщение May 2 2008, 05:25
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Цитата
Угадайте что будет после возврата из этой функции...
прерывания будут разрешены ?


Верно, прерывания не будут разрешены. Спасибо.

Правильнее будет так:

#asm("cli");
EEPROM_read(....);
#asm("sei");
Go to the top of the page
 
+Quote Post
Motion
сообщение May 6 2008, 11:57
Сообщение #32


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Откалибровал таким образом:

Так как регулируемого источника питания у меня нет, в качестве постоянного напряжения использовал напряжение блока питания сканера (около 12В, максимальный ток 1.2А). Входной разъём (220В) к сети я не подключал. В качестве нагрузки использовал резистор номиналом 1кОм. Подал +12В на нагрузку и через 78L05 на питание МК (+5В). В итоге на нагрузке у меня +12В, на питании МК и ОУ +5В, на ножке МК Vref - 2.56В. На измерительных каналах - 1,23В(ADC1 - измерение тока) и 1,28В(ADC2 - измерение напряжения). Все напряжения мерял с помощью тестера. Далее померял с помощью МК "нули". Напряжение получилось 1.2749В. Ток получился - 1.2224В (подправил значение тока в программе, так как ранее считал, что оно должно равняться 1.28В). Потом нашёл ещё одну ошибку - при расчёте напряжения нужно домножать на 272, а не на 136 (там как в схеме не обычный делитель).

После этого померял ток и напряжение на нагрузке. По напряжению я получил 10.9В (при 12.1В входном), а значение тока получилось ещё точнее(сейчас не помню значения).

В итоге могу утверждать, что "нули" выставлены верно (с определённой погрешностью).


Снова провёл серию измерений при разной мощности. Вот что получил:
Прикрепленное изображение



Обновлённая версия программы:
Прикрепленный файл  programm.zip ( 73.09 килобайт ) Кол-во скачиваний: 102


Результат измерения (то, что получаю в ЕЕPROM) декодирую с помощью этой страницы

Ещё лампочка заметно мерцает. Когда устройство ещё ничего не меряло, а просто регулировало мощность - замерных мерцаний не было. Скорее всего мерцания за счёт того, что 200 раз в период меряю значения.

Вот так вот. Что делать дальше - не знаю.
Go to the top of the page
 
+Quote Post
singlskv
сообщение May 6 2008, 18:07
Сообщение #33


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Владимир_КПИ @ May 6 2008, 15:57) *
Откалибровал таким образом:
Калибровка это конечно хорошо, но обычно, если необходимо, это завершающая
стадия проекта.
Владимир_КПИ,
прога которая у Вас написана выглядит ужасающе...
Эээ, ну просто там и проэктированием в принципе не пахнет, все написано
в стиле "что вижу то и пою..."

Количество принципиальных ошибок при проектировании просто зашкаливает,
видимо поэтому никто и не может/сможет дать Вам рекомендации что с этим делать...

Можно конечно начать дисскусию по конкретным проблемам в Вашем коде, тока
это скорее всего будет малорезультативно, если Вы реально хотите разобраться как это все
нужно делать - упрощайте задачку(на первое время).
В качестве упрощенной задачки могу предложить Вам такое:
по одному каналу АЦП(подключенному к просто делителю) считаем скользящее среднее
показаний АЦП и раз в секунду пишем его в EEPROM.
Тока сделать это нужно так чтобы на время записи(много милисекунд) считывание показаний
АЦП не прекращалось...
После решения подобной задачки, многие вопросы отпадут, а те которые появятся, ну
мы Вам с ними попробуем помочь.

Удачи!
Go to the top of the page
 
+Quote Post
Motion
сообщение May 7 2008, 04:57
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Цитата
по одному каналу АЦП(подключенному к просто делителю) считаем скользящее среднее
показаний АЦП и раз в секунду пишем его в EEPROM.


Насколько я понял, необходимо постоянно измерять напряжение на канале ADC2 (измерение напряжения нагрузки). Но с какой частотой? И что такое "скользящее среднее
показаний АЦП"? Если это среднее значение, то оно будет приблизительно равно 0.

Сейчас у меня в программе частота измерения 200 раз за период. Может быть это много и из-за этого у меня проблемы. Возможно время измерения постоянно перекрывается с каким-то другим временем. И может из-за этого и мерцает лампочка...

Запись в EEPROM занимает 8.5мс (согласно документации). То есть почти полупериод.

Цитата
Тока сделать это нужно так чтобы на время записи(много милисекунд) считывание показаний
АЦП не прекращалось

Как такое возможно? Если я пишу в EEPROM, я никак в это же время не могу делать что-то другое.
Go to the top of the page
 
+Quote Post
vet
сообщение May 7 2008, 05:12
Сообщение #35


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Цитата(Владимир_КПИ @ May 7 2008, 08:57) *
Как такое возможно? Если я пишу в EEPROM, я никак в это же время не могу делать что-то другое.

почему бы нет? есть флаг готовности EEPROM, есть прерывание по завершению записи в EEPROM.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
Motion
сообщение May 7 2008, 07:26
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Цитата
почему бы нет? есть флаг готовности EEPROM, есть прерывание по завершению записи в EEPROM.


Запись будет происходить почти полупериод. За это время нужно провести минимум десяток измерений. Прерывать запись нельзя. Можно измерить одно значение и ждать пока закончиться запись и по завершению записи сохранить результат. Но только 1 результат измерения, а не несколько.
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение May 7 2008, 07:37
Сообщение #37


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(Владимир_КПИ @ May 7 2008, 12:26) *
Запись будет происходить почти полупериод. За это время нужно провести минимум десяток измерений. Прерывать запись нельзя. Можно измерить одно значение и ждать пока закончиться запись и по завершению записи сохранить результат. Но только 1 результат измерения, а не несколько.

"скользящее среднее" это когда у вас отсчеты АЦП записываются в кольцевой буфер, таким образом у вас в буфере хранится предистория отсчетов на длину буфера а среднее вычисляется для каждого отсчета, путем суммирования всех отсчетов и делением на число N - где N количество элементов в буфере. Кстати какой смысл в том что вы записываете данные в ЕЕПРОМ?


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
Motion
сообщение May 7 2008, 08:57
Сообщение #38


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Скользящее среднее - это среднее арифметическое?


Смысл записи в EEPROM - сохранение результата в случае выключения питания. Запись будет происходить лишь при понижении питании ниже, например, 4В. А так всё будет храниться в ОЗУ.

Сейчас я пишу в EEPROM, чтобы узнать, правильно ли всё подсчитывается.


По поводу кольцевого буфера - мозможна ли независимая работа АЦП и самого МК? То есть АЦП себе меряет и сохраняет результат, а в этот же момент времени происходит запись в EEPROM. Помню читал, что у АЦП существуют 2 режима работы - одиночное измерение и непрерывное. Вы имеете ввиду непрерывный режим измерения АЦП?
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение May 7 2008, 09:22
Сообщение #39


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(Владимир_КПИ @ May 7 2008, 13:57) *
Скользящее среднее - это среднее арифметическое?
Смысл записи в EEPROM - сохранение результата в случае выключения питания. Запись будет происходить лишь при понижении питании ниже, например, 4В. А так всё будет храниться в ОЗУ.

Да среднее, только оно считается для каждого отсчета, а не для скажем 8. Ну так и записывайте в ЕЕПРОМ, только в случае пропадания питания, это легко отлавливать.
Цитата
Сейчас я пишу в EEPROM, чтобы узнать, правильно ли всё подсчитывается.
По поводу кольцевого буфера - мозможна ли независимая работа АЦП и самого МК? То есть АЦП себе меряет и сохраняет результат, а в этот же момент времени происходит запись в EEPROM. Помню читал, что у АЦП существуют 2 режима работы - одиночное измерение и непрерывное. Вы имеете ввиду непрерывный режим измерения АЦП?

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


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
Motion
сообщение May 7 2008, 09:31
Сообщение #40


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Цитата
Да среднее, только оно считается для каждого отсчета, а не для скажем 8.


Не могу понять как это? У меня есть непрерывний меняющийся сигнал напряжения. И я должен периодически измерять мгновенные значения. С какой частотой? И что дальше с ними делать?
Go to the top of the page
 
+Quote Post
vet
сообщение May 7 2008, 09:31
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



я бы предложил при понижении напряжения питания ниже некоторого порога не дожидаться, пока сработает brownout detector, а приостанавливать работу с корректным сохранением всего необходимого.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
Motion
сообщение May 7 2008, 11:59
Сообщение #42


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Всё-таки я попробовал измерять мгновенные значения не 200 раз за период, а 20 и 40 раз за период. Вот что получил:
Прикрепленное изображение


Из результатов видно, что при измерении 20 раз за период результат измерения мощности максимально приближён к истинному результату. Ещё реже проводить измерения нет смысла, так как погрешность будет слишком велика(>10%).

К тому же лампочка перестала мерцать при измерении 20 раз за период(1кГц).

То есть получается, что если слишком часто мерять значения тока и напряжения - что-то происходит, что приводит к мерцанию лампочки и искажению результата.

Теперь нужно понять, почему так происходит.
Go to the top of the page
 
+Quote Post
bzx
сообщение May 7 2008, 12:14
Сообщение #43


Местный
***

Группа: Свой
Сообщений: 482
Регистрация: 5-07-05
Из: Санкт-Петербург
Пользователь №: 6 528



Цитата(Владимир_КПИ @ May 7 2008, 15:59) *
Теперь нужно понять, почему так происходит.

Ещё не надоело фигнёй страдать? Начните с малого, как Вам советовали.


--------------------
Для связи email: info собака qbit.su
Go to the top of the page
 
+Quote Post
Motion
сообщение May 7 2008, 13:18
Сообщение #44


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 23-07-07
Из: Киев
Пользователь №: 29 297



Цитата
Начните с малого, как Вам советовали.

Я не понял сути, что мне нужно делать.
Go to the top of the page
 
+Quote Post
galjoen
сообщение May 7 2008, 14:10
Сообщение #45


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Владимир_КПИ @ May 7 2008, 17:18) *
Я не понял сути, что мне нужно делать.

1. Почитайте теорию. Хотя-бы соседнюю тему про измерение RMS.
2. Разберитесь с временами. Узнайте чем занимается процессор в каждый момент времени. На что времени уходит больше всего и т.д. Вы пишите на C, поэтому это вам далеко не очевидно. Поставте на неспользуемые выходы процессора светодиоды и, например, в каждой задаче включайте свой и выключайте остальные (кроме обработчиков прерываний). Можно и без светодиодов - осциллографом. Но светодиоды нагляднее. Вообще светодиод очень мощное средство отладки, а у вас на схеме ни одного!
3. Задавайте конкретные вопросы.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 10:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.02056 секунд с 7
ELECTRONIX ©2004-2016