Mega 2560 и датчик тока ACS712
- Войдите на сайт для отправки комментариев
Доброго дня! Подскажите пожалуйста по такому вопросу:К меге 2560 подключен датчик тока ACS712 на 30А. данная цепочка измеряет скачек тока в цепи страйкбольного привода (там мотор взводит пружину для выстрела). При напряжении 8-11в. токи протекают достаточно большие. При напряжении близком к 11в. скачек тока в цепи (читай выстрел) происходит очень быстро и мега не успевает его засечь, вывожу в терминал значения с датчика тока и не вижу изменения значения в это время. Как только АКБ подсаживается до 8-9в. время нужное на взвод пружины увеличивается и значения с датчика тока прекрасно видны и обрабатываются мегой. Причем если в качестве нагрузки ставлю лампу накаливания или мотор от шуруповерта и вручную замыкаю цепь, изменения значения с датчика тока прекрасно видны.
Поскажите как можно добиться стабильного считывания повышения тока в цепи при коротких импульсах?
спасибо
можно настроить ацп на побыстрее. хотя есть вероятность что всё это время съедает вывод в порт. попробуйте засветить диод, возможно мега всё прекрасно видит.
Вывод в консоль включил тогда, когда искал почему не реагирует на выстрел, а можно подробнее как настроить ацп на побыстрее.
спасибо.
Скорость сериала на 115200 ставите?
Скорость сериала на 115200 ставите?
вроде да, так если убираю вывод в консоль, то тоже очень часто пропускает.... уж не знаю что и делать....
У меги памяти прилично, если 4-6 кбайт отдать под буффер, тогда надо на низком регистровом уровне настроить АЦП чтоб сэмплировало при превышении определённого порога в буффер, а передавать через сериал уже потом. Вот и погуглите прямой доступ к регистрам контроля АЦП AtMega2560
Если нужно просто зафиксировать бросок тока, без его измерения - стОит использовать встроенный аналоговый компаратор и прерывание по его срабатыванию. Навскидку не скажу, как это в ардуине сделать (думаю, нагуглить несложно), но в железе (Atmega256) эти возможности есть.
Если нужно просто зафиксировать бросок тока, без его измерения - стОит использовать встроенный аналоговый компаратор и прерывание по его срабатыванию. Навскидку не скажу, как это в ардуине сделать (думаю, нагуглить несложно), но в железе (Atmega256) эти возможности есть.
спасибо за совет, но в проекте используется 4 независимых канала, хоть напряжение и не большое, до 14в. но токи большие, до 30А. и дополнительно использую развязку по питанию.
а, т.е. вы еще мультиплексируете АЦП по четырем каналам? Тогда конечно можно не успеть отловить. Надо всё таки знать минимальную длину этого импульса и от него уже плясать.
пошел искать осцилограф, как найду отпишусь... :)
а цель какая? измерить ток или засечь выстрел??? если просто засечь выстрел:
можно через диод и низкоомное сопротивление заряжать емкость, а снимать на высокомном сопротивлении. если зарядка выстрела, скажем в 100 раз реже, рассчитать делители в соотношении 50:1. тогда емкость успеет зарядится от выстрела и достаточно разрядиться во время перезарядки.
UPD. упс... вы там случайно не провал по току ловите? тогда инвертор нужен будет с компаратором, похоже я ошибаюсь :))))
таким способом засекают время между очень короткими импульсами т.е. умножают время на коэфф. соотношения заряда и разряда.
спасибо за совет, но в проекте используется 4 независимых канала, хоть напряжение и не большое, до 14в. но токи большие, до 30А. и дополнительно использую развязку по питанию.
И всё же один вопрос остался - ток _измерять_ надо или просто отслеживать резкий бросок тока? Чем обусловлен выбор ACS712?
Цель просто засечь выстрел, и вроде проблема была в том, что на мегу навешано оч. много всего с чем она не справлялась и основное это при выстреле воспроизведение wav-ки (типа эмитация выстрела) с СД карты, как только убрали из кода этот функционал, пропуски почти пропали и ловить скачки тока в цепи стало стабильно. В моём случае основной тормоз это СД карта и особенно размер файла. Сейчас то я это уже понял.... буду мутить воспроизведение звуков на отдельном шилде.
Прошу сильно не пинать, нуб я ещё... это мой первый проект на ардуино, да и писать код мне помогают...
Цель просто засечь выстрел, и вроде проблема была в том, что на мегу навешано оч. много всего с чем она не справлялась и основное это при выстреле воспроизведение wav-ки (типа эмитация выстрела) с СД карты, как только убрали из кода этот функционал, пропуски почти пропали и ловить скачки тока в цепи стало стабильно. В моём случае основной тормоз это СД карта и особенно размер файла. Сейчас то я это уже понял.... буду мутить воспроизведение звуков на отдельном шилде.
Прошу сильно не пинать, нуб я ещё... это мой первый проект на ардуино, да и писать код мне помогают...
ставьте ещ один контроллер и делитесь нагрузкой, микро - хватит. Может поставить RS триггер и настроить компаратор на Set, а ресетом скидывать после учета выстрела. Если 2 МК ставить, то ногами измерителя выставлять код сработки, а в обратку читать сброс...
в любом случае от АЦП нужно уходить, если величина тока не нужна!!!
UPD какой макс. код АЦП удалось засечь? какое опорное напряжение? т.е. сколько вольт при выстреле на датчике тока. И почему нельзя брать сигнал напряжения поданного на мотор при заряде? т.е. есть готовый сигнал заряда пружины, а мы ловим ток, зачем?
Пока аппаратно в проекте ничего менять не хочется, после того как убрал с меги воспроизведение звуков впринципе стабильность устраивает. А ловить ток в цепи решил т.к. несколько приводов (4шт.) питаются от одного источника (АКБ 55АЧ) и чтобы не тянуть дополнительные провода к приводам, а считать выстрелы и обрубать питание приводов по истечении определённого кол-ва выстрелов автоматически решил что самый оптимальный способ - это ловить скачки тока в цепи.
По простому говоря этот проект - это пульт управления (со статистикой) страйкбольными приводами в тире.
Пока аппаратно в проекте ничего менять не хочется, после того как убрал с меги воспроизведение звуков впринципе стабильность устраивает. А ловить ток в цепи решил т.к. несколько приводов (4шт.) питаются от одного источника (АКБ 55АЧ) и чтобы не тянуть дополнительные провода к приводам, а считать выстрелы и обрубать питание приводов по истечении определённого кол-ва выстрелов автоматически решил что самый оптимальный способ - это ловить скачки тока в цепи.
По простому говоря этот проект - это пульт управления (со статистикой) страйкбольными приводами в тире.
и все равно не понятно - мы то не видим всего устройства и не знаем расстояния. Ловить ток конкретного двигателя или двигатели одинаковые и ловить ток какого-нибудь двигателя? И потом, звуки вернуться на контроллер или только одни ловушки тока на нем останутся? Вопросов меньше не стало... Если помощь более не нужна, напишите, что тему закрыли...
Что-то я не догоняю, господа...
В чем проблема "ловить" бросок тока дискретным входом как кнопку?
Можно даже попробовать от вашего датчика тока ловить, если он дает напряжение больше 3 В.
Дискретные входы ведь быстрее аналоговых.
Что-то я не догоняю, господа...
В чем проблема "ловить" бросок тока дискретным входом как кнопку?
Можно даже попробовать от вашего датчика тока ловить, если он дает напряжение больше 3 В.
Дискретные входы ведь быстрее аналоговых.
в любом случае от АЦП нужно уходить, если величина тока не нужна!!!
UPD какой макс. код АЦП удалось засечь? какое опорное напряжение? т.е. сколько вольт при выстреле на датчике тока. И почему нельзя брать сигнал напряжения поданного на мотор при заряде? т.е. есть готовый сигнал заряда пружины, а мы ловим ток, зачем?
почти ни кто не понимает, и похоже, ТС нас покинул... он немного выше писал, что его все уже устраивает.
"Кошка бросила котят, - пусть мяучат как хотят..." (С)
"Кошка бросила котят, - пусть мяучат как хотят..." (С)
Неее кошка никого не кинула... :) она уезжала не на долго... Всем спасибо за советы, как и писал выше после того как разгрузил мегу быстродействие устраивает.
Тему закрываю.