Mega 2560 и датчик тока ACS712

Igor_nf
Offline
Зарегистрирован: 07.12.2015

Доброго дня! Подскажите пожалуйста по такому вопросу:К меге 2560 подключен датчик тока ACS712 на 30А. данная цепочка измеряет скачек тока в цепи страйкбольного привода (там мотор взводит пружину для выстрела). При напряжении 8-11в. токи протекают достаточно большие. При напряжении близком к 11в. скачек тока в цепи (читай выстрел) происходит очень быстро и мега не успевает его засечь, вывожу в терминал значения с датчика тока и не вижу изменения значения в это время. Как только АКБ подсаживается до 8-9в. время нужное на взвод пружины увеличивается и значения с датчика тока прекрасно видны и обрабатываются мегой. Причем если в качестве нагрузки ставлю лампу накаливания или мотор от шуруповерта и вручную замыкаю цепь, изменения значения с датчика тока прекрасно видны.

Поскажите как можно добиться стабильного считывания повышения тока в цепи при коротких импульсах?

спасибо

__Alexander
Offline
Зарегистрирован: 24.10.2012

можно настроить ацп на побыстрее. хотя есть вероятность что всё это время съедает вывод в порт. попробуйте засветить диод, возможно мега всё прекрасно видит.

Igor_nf
Offline
Зарегистрирован: 07.12.2015

Вывод в консоль включил тогда, когда искал почему не реагирует на выстрел, а можно подробнее как настроить ацп на побыстрее.

спасибо.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Скорость сериала на 115200 ставите?

Igor_nf
Offline
Зарегистрирован: 07.12.2015

trembo пишет:

Скорость сериала на 115200 ставите?

вроде да, так если убираю вывод в консоль, то тоже очень часто пропускает.... уж не знаю что и делать....

MagicianT
Offline
Зарегистрирован: 03.10.2015

У меги памяти прилично, если 4-6 кбайт отдать под буффер, тогда надо на низком регистровом уровне настроить АЦП чтоб сэмплировало при превышении определённого порога в буффер, а передавать через сериал уже потом. Вот и погуглите прямой доступ к регистрам контроля АЦП  AtMega2560

vlad219i
Offline
Зарегистрирован: 05.03.2014

Если нужно просто зафиксировать бросок тока, без его измерения - стОит использовать встроенный аналоговый компаратор и прерывание по его срабатыванию. Навскидку не скажу, как это в ардуине сделать (думаю, нагуглить несложно), но в железе (Atmega256) эти возможности есть.

Igor_nf
Offline
Зарегистрирован: 07.12.2015

vlad219i пишет:

Если нужно просто зафиксировать бросок тока, без его измерения - стОит использовать встроенный аналоговый компаратор и прерывание по его срабатыванию. Навскидку не скажу, как это в ардуине сделать (думаю, нагуглить несложно), но в железе (Atmega256) эти возможности есть.

спасибо за совет, но в проекте используется 4 независимых канала, хоть напряжение и не большое, до 14в. но токи большие, до 30А. и дополнительно использую развязку по питанию. 

__Alexander
Offline
Зарегистрирован: 24.10.2012

а, т.е. вы еще мультиплексируете АЦП по четырем каналам? Тогда конечно можно не успеть отловить. Надо всё таки знать минимальную длину этого импульса и от него уже плясать.

Igor_nf
Offline
Зарегистрирован: 07.12.2015

пошел искать осцилограф, как найду отпишусь... :)

Гриша
Offline
Зарегистрирован: 27.04.2014

а цель какая? измерить ток или засечь выстрел??? если просто засечь выстрел:

можно через диод и низкоомное сопротивление заряжать емкость, а снимать на высокомном сопротивлении. если зарядка выстрела, скажем в 100 раз реже,  рассчитать делители в соотношении 50:1. тогда емкость успеет зарядится от выстрела и достаточно разрядиться во время перезарядки.

UPD. упс... вы там случайно не провал по току ловите? тогда инвертор нужен будет с компаратором, похоже я ошибаюсь :))))

таким способом засекают время между очень короткими импульсами т.е. умножают время на коэфф. соотношения заряда и разряда.

vlad219i
Offline
Зарегистрирован: 05.03.2014

Igor_nf пишет:

спасибо за совет, но в проекте используется 4 независимых канала, хоть напряжение и не большое, до 14в. но токи большие, до 30А. и дополнительно использую развязку по питанию. 

И всё же один вопрос остался - ток _измерять_ надо или просто отслеживать резкий бросок тока? Чем обусловлен выбор ACS712?

 

Igor_nf
Offline
Зарегистрирован: 07.12.2015

Цель просто засечь выстрел, и вроде проблема была в том, что на мегу навешано оч. много всего с чем она не справлялась и основное это при выстреле воспроизведение wav-ки (типа эмитация выстрела) с СД карты, как только убрали из кода этот функционал, пропуски почти пропали и ловить скачки тока в цепи стало стабильно. В моём случае основной тормоз это СД карта и особенно размер файла. Сейчас то я это уже понял.... буду мутить воспроизведение звуков на отдельном шилде.

Прошу сильно не пинать, нуб я ещё... это мой первый проект на ардуино, да и писать код мне помогают...

Гриша
Offline
Зарегистрирован: 27.04.2014

Igor_nf пишет:

Цель просто засечь выстрел, и вроде проблема была в том, что на мегу навешано оч. много всего с чем она не справлялась и основное это при выстреле воспроизведение wav-ки (типа эмитация выстрела) с СД карты, как только убрали из кода этот функционал, пропуски почти пропали и ловить скачки тока в цепи стало стабильно. В моём случае основной тормоз это СД карта и особенно размер файла. Сейчас то я это уже понял.... буду мутить воспроизведение звуков на отдельном шилде.

Прошу сильно не пинать, нуб я ещё... это мой первый проект на ардуино, да и писать код мне помогают...

ставьте ещ один контроллер и делитесь нагрузкой, микро - хватит. Может поставить RS триггер и настроить компаратор на Set, а ресетом скидывать после учета выстрела. Если 2 МК ставить, то ногами измерителя выставлять код сработки, а в обратку читать сброс...

в любом случае от АЦП нужно уходить, если величина тока не нужна!!!

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

Igor_nf
Offline
Зарегистрирован: 07.12.2015

Пока аппаратно в проекте ничего менять не хочется, после того как убрал с меги воспроизведение звуков впринципе стабильность устраивает. А ловить ток в цепи решил т.к. несколько приводов (4шт.) питаются от одного источника (АКБ 55АЧ) и чтобы не тянуть дополнительные провода к приводам, а считать выстрелы и обрубать питание приводов по истечении определённого кол-ва выстрелов автоматически решил что самый оптимальный способ - это ловить скачки тока в цепи.

По простому говоря этот проект - это пульт управления (со статистикой) страйкбольными приводами в тире.

Гриша
Offline
Зарегистрирован: 27.04.2014

Igor_nf пишет:

Пока аппаратно в проекте ничего менять не хочется, после того как убрал с меги воспроизведение звуков впринципе стабильность устраивает. А ловить ток в цепи решил т.к. несколько приводов (4шт.) питаются от одного источника (АКБ 55АЧ) и чтобы не тянуть дополнительные провода к приводам, а считать выстрелы и обрубать питание приводов по истечении определённого кол-ва выстрелов автоматически решил что самый оптимальный способ - это ловить скачки тока в цепи.

По простому говоря этот проект - это пульт управления (со статистикой) страйкбольными приводами в тире.

и все равно не понятно - мы то не видим всего устройства и не знаем расстояния. Ловить ток конкретного двигателя или двигатели одинаковые  и ловить ток какого-нибудь двигателя? И потом, звуки вернуться на контроллер или только одни ловушки тока на нем останутся? Вопросов меньше не стало... Если помощь более не нужна, напишите, что тему закрыли...

Олег М.
Олег М. аватар
Offline
Зарегистрирован: 22.11.2015

Что-то я не догоняю, господа...
В чем проблема "ловить" бросок тока дискретным входом как кнопку?
Можно даже попробовать от вашего датчика тока ловить, если он дает напряжение больше 3 В.
Дискретные входы ведь быстрее аналоговых.

Гриша
Offline
Зарегистрирован: 27.04.2014

Олег М. пишет:

Что-то я не догоняю, господа...
В чем проблема "ловить" бросок тока дискретным входом как кнопку?
Можно даже попробовать от вашего датчика тока ловить, если он дает напряжение больше 3 В.
Дискретные входы ведь быстрее аналоговых.

Гриша пишет:

в любом случае от АЦП нужно уходить, если величина тока не нужна!!!

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

почти ни кто не понимает, и похоже, ТС нас покинул... он немного выше писал, что его все уже устраивает.

Олег М.
Олег М. аватар
Offline
Зарегистрирован: 22.11.2015

Гриша пишет:
...почти ни кто не понимает, и похоже, ТС нас покинул... он немного выше писал, что его все уже устраивает.

"Кошка бросила котят, - пусть мяучат как хотят..." (С)

Igor_nf
Offline
Зарегистрирован: 07.12.2015

Олег М. пишет:

Гриша пишет:
...почти ни кто не понимает, и похоже, ТС нас покинул... он немного выше писал, что его все уже устраивает.

"Кошка бросила котят, - пусть мяучат как хотят..." (С)

Неее кошка никого не кинула... :) она уезжала не на долго... Всем спасибо за советы, как и писал выше после того как разгрузил мегу быстродействие устраивает. 

Тему закрываю.