12.03.2013, 09:03 | #1 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
ACS712 Датчик тока
Вообщем в продолжении темы начатой еще на compcar http://www.compcar.ru/forum/showthread.php?t=8542, имеется датчик тока
Задача определяющие силы протекающего тока(для принятия решений -например о том, что прибор включился) и потребление тока. С постоянным напряжением все понятно. Вот с переменным начинаются засады. График выходного сигнала повторяет синусоиду волны переменного тока, т.е. колеблется с частотой 50 Гц. Т.е. чтоб знать действующую величину тока нужно ловить пик синусоиды. Допустим в схеме Диммера можно добавить в процедур обработку прерывания при пересечении нуля кроме запуска таймера для отсчета отрезания волны, еще и запуск таймера для отсчета времени после которого будет считываться значение аналогового входа т.е. при 50 Гц это через 5 миллисекунд, выборку можно производить не каждый период т.е 20 миллисекунд, а реже , чтоб сильно не грузить процессор. В общем схема понятна, дальше возникает вопрос что делать с этими данными и как их обрабатывать. Узнавать средний ток за секунду, за минуту. Наверное все зависит от того что с ними собираешься делать дальше. Допустим передавать на головное устройство средний ток за последнюю минуту, как оно определит за какую минуту это было или просто копить значение среднего того от передачи до передачи, а после подтверждения о передаче обнулить его и формировать новое? |
12.03.2013, 10:30 | #2 | |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Цитата:
1-я переменная, для хранения среднего значения тока за 1 сек. unt16_t или uint8_t 2-я переменная, пройденное время, с момента последнего прочтения данных тока центральным узлом или после обнуления. переменная типа uint32_t При таком подходе, можно хранить данные о потребления тока в удаленном узле, за последниз 1194444 часов или 49768 суток или 136 лет. Можно так же использовать EEPROM память, что бы не потерять данные тока при пропадания электроэнергии в сети |
|
12.03.2013, 12:26 | #3 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605 |
А что мешает поставить диодный мост.
|
12.03.2013, 12:54 | #4 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Ограничения по размерам например, плюс просто мост только сгладит в 4 раза кривую, дальше нужна катушка, кондер и т.п., т.е полноценный выпрямитель иначе придется решать ровно те же проблемы что и при измерении переменки иначе неточность просто в те же 4 раза уменьшится и ничего не даст
|
12.03.2013, 12:59 | #5 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Поправьте если я не прав - диммер срезает верхнюю часть синусоиды, т.е. при работе диммера мы можем не обнаружить пики, следовательно нужно измерять в нижней части синусоиды, на максимуме спада -её диммер не трогает
|
12.03.2013, 13:09 | #6 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Диммер отсекает как положительный так и отрицательный полупериод с боку по времени
|
13.03.2013, 11:54 | #7 | |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Цитата:
1. Просто передавать данные со времени последнего отправления -будет средняя, ну допустим головное опрашивает подчиненные раз в минуту -т.е. среднее за минуту, соответственно график будет минутный или десятиминутный в зависимости от количества подчиненных. Или передавать какой-то массив с посекундной тарификацией . А дальше уж головное определяет в какое время это было 2. В ведомых устройствах не критичных к габаритам можно поставить часы реального времени и передавать уже не количество секунд, а конкретные данные -потребление в конкретный момент Пока остановлюсь на варианте среднее за период между опросами, думаю память микроконтроллера использовать бессмысленно, данные за минуту роли не сыграют большой -высокой точности добиваться бессмысленно. Вот что имеет смысл то это подумать над тем, как будет считаться если в течении долгого времени головное не получает инфы от ведомого например с в связи с его неисправностью и вообще как согласовывать возобновление работы после отключений электроэнергии. |
|
13.03.2013, 12:23 | #8 | |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Цитата:
После отключения энергии, нужно продолжать считать дальше, так же как после первого запуска или после ребута Нет энергии или поломка, значит не будет потребления, так как контроллер не даст включится потребителю |
|
13.03.2013, 13:43 | #9 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Итак, исходные данные пока без учета использования диммера -просто измерение тока
при частоте сети 50 Гц синусоида от крайнего нижнего значения до крайнего верхнего поднимается за 10 миллисекунд. Соответственно на одно значение АЦП 1024 приходится почти 10 микросекунд( 9,7 если точнее) - это максимальная частота опроса которая будет наиболее точно отражать изменение уровня. Но я думаю такая частота не нужна, достаточно стандартных использованных в диммере 40 мкс, что даст возможную погрешность всего 0,4% что не просто приемлемо, а вполне приемлемо, по крайней мере для моих целей. Соответственно запускаем таймер со счетчиком с интервалом 40 мкс и выбираем максимальное за один период(счетчик до 500), после чего считаем средний максимум за секунду или другой период исходя из максимумов и согласно формуле Power = 220 x (Vout – 2.5) x 0.707 / 0.1 считаем потребление(для питания в 5 вольт и датчике на 20 Ампер). Щас чего нибудь напишу. P/S/ почитал темку про ускорение arduino - даже с либой analog_read требуется для преобразования 50 мкс, значит значение в 40 таймера не прокатит. Пусть пока будет 80 там посмотрим. Последний раз редактировалось Bulatovor; 13.03.2013 в 13:54. |
13.03.2013, 15:33 | #10 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Вот получилось что-то типа такого, на железе пока не проверял, не могу скачать новую версию nanopins а в моей, последней что скачивал таймера еще небыло.
По нажатию кнопки передаются средние значения от нажатия до нажатия PHP код:
Последний раз редактировалось Bulatovor; 13.03.2013 в 21:50. |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|