Тахометр и спидометр на ардуино. Помехи на прерывании.
- Войдите на сайт для отправки комментариев
Вообщем, имеется ардуино нано, 2 шаговых двигателя работающих без драйвера(напрямую к цифровым пинам) дисплей oled i2c 128*64. Перерыл тут кучу тем по вопросу помех, но не нашел того что нужно, ничего не помогает. Первый пин прерывания запрограммирован на считывание оборотов колеса, второй - оборотов. И вот незадача: при прикосновении к какому то пину отверткой или пальцем значения на дисплее сходят с ума! Обороты берутся из небес свыше 28к, уходит даже в минус. Со скоростью та же байда, скачет в районе 70 кмч. Пробовал подтягивать пины на землю(gnd) на палец реагировать перестает, но, показания все равно не верны. Я уже убрал всю навесную лабуду - вырвал дисплей и движки, написал короткий тестовый скетч для вывода в порт. Включаю - на порту значения 0. Подключил геркон и подтянул резистором пин к земле, подношу магнитик к геркону и на порту бешенство! Значения 19к и 28к... Может ардуино плохой мне прислал китаец? Помогите. Целую неделю не могу разобраться с проблемой.
Помехи на питании исключены - используются две батарейки 18650.
Радуйтесь, что ардуина не сгорел от движков прямо на пинах. На моторах обратный выброс и под сотню вольт может быть. Отцепляйте и подключайте, как положено.
slmvd, сфотографируйте все свои соединения, тот вариант, что "без лабуды" )) И ссылочку в студию. Посмотрим..
Попробуйте убрать дребезг геркона, как от кнопки обычно убирают - резистор 10к на плюс и ножку прерывания, конденсатор 1000 пикофарад на землю и ножку прерывания, геркон параллельно конденсатору. В прерывании поставить небольшую - микросекунд на 50 - задержку и очистку флага прерывания перед выходом из прерывания.
между пином прерывания и землей стоит сопротивление 10к. гиркон на +5в и пином D2. беда точно не в гирконе - использовал 2 штуки, с обеими такая фигня.
Радуйтесь, что ардуина не сгорел от движков прямо на пинах. На моторах обратный выброс и под сотню вольт может быть. Отцепляйте и подключайте, как положено.
эти моторы (vid29-06p) изначально использовались на приборке с камнем меги. их там было 5 штук и все они соединялись напрямую. нигде не видел чтоб такие слабенькие моторы подключали через драйвер. да и не в этом проблема, без моторов и дисплея проблема одна и та же.
slmvd. на фото не видно от чего вы питаете плату, вроде речь шла про аккумуляторы, а подключено к miniUSB. Не видно ни геркона, ни стягивающего резистора. А вот двигатели, которые вы отключали почему-то подключены к плате. В общем отпаяйте всё лишнее, подключите всё нужное. И снова сфотографируйте. Измерьте напряжение на пине Vcc в момент глюка.
slmvd. на фото не видно от чего вы питаете плату, вроде речь шла про аккумуляторы, а подключено к miniUSB. Не видно ни геркона, ни стягивающего резистора. А вот двигатели, которые вы отключали почему-то подключены к плате. В общем отпаяйте всё лишнее, подключите всё нужное. И снова сфотографируйте. Измерьте напряжение на пине Vcc в момент глюка.
ну так толку от того что я все убрал и запитал с батареи не оказалось, вот и подключил все обратно, и с юсб питание подключил. удобнее. могу отключить все, и резистор добавить. но повторюсь - какой от этого толк? разве что от резистора, хоть переставал на палец реагировать. только на геркон. и то неверно
slmvd, у вас очевидный аппаратный косяк. Поэтому просто покажите то, что нужно. Пусть включен от USB, хорошо. Но подключите всё как было в момент проверки, без двигателей. Что б все подключения были видны,каждый проводок полностью.
Разбить об голову того, кто эту приборку конструировал.
Никогда не поздно восполнить этот пробел. Вот картинка из даташита на vid29-06p:
Видите блок с надписью "motor driving circuit" ? Больше не говорите, что никогда не видели.
slmvd, у вас очевидный аппаратный косяк. Поэтому просто покажите то, что нужно. Пусть включен от USB, хорошо. Но подключите всё как было в момент проверки, без двигателей. Что б все подключения были видны,каждый проводок полностью.
синими проводами подключен гиркон. сейчас включил и проверил повторно. никаких изменении. гиркон случайно сломал. при замыкании проводов те же самые значения.
нашел код полностью работающего спидометра, тахометра и объединил их. в коде были лишние строки для 7 сегментного дисплея, удалил их и внедрил дисплей i2c.
slmvd, опять ничего не видно. Вывод резистора что, просто надет на пин и всё? Впрочем все остальные надетые проводки тоже не лучше. Тогда не удивительно..
не надет, а намотан как можно плотно. провода тоже нормально приделаны, там нет ничего такого что могло бы искажать показания. а вообще - не суть. меня интересует одно - почему он реагирует на палец, вместо того, что должен реагировать на 5 вольт?? что за магия? вот тупоо ничего не подключено, задел пин прерывания случайно и вот уже 28 тыс оборотов, что за конетель то такая.
slmvd, раз реагирует на палец -значит вход не стянут к земле, т.е. у резистора нет контакта.
выше я писал что притянутый к земне он не реагирует. но считывает все равно заоблачные значения
slmvd, это потому что вы ничего не делаете как положено.- На входе одного прерывания резистор болтается на соплях, на входе другого прерывания -вообще ничего, хотя оно в программе включено. Разумеется висящий в воздухе вход работает как антенна, и трещит своим прерыванием с большой скоростью.
а как же тот скетч который на картинке? там включено только одно прерывание, и с резистором оно так же реагировало, как я уже писал выводил заоблачные значения.
slmvd, просто сделайте всё как положено, что бы никаких надетых проводков. Все контакты -на пайку, или под винтовой зажим.
И всё заработает как надо.
завтра спаяю и отпишу. чую вот никаких изменений не будет.
я таки спаял. подключил 11кОм между 5в и d2. 3,6кОм между землей и d2. один вывод геркона на d2, второй на 5в.
загружаю скетч (кстати добавил несколько строк типа программной подтяжки, толку от этого тоже не оказалось)
открываю монитор порта
подношу магнит к гиркону и на мониторе это -
теперь то вы поняли что пайка не имела смысла? значение, кстати, меняется (проскакивают 17к, отрицательные значения тоже, есть и малые очень редко встречающиеся типа "620" которые всегда разные и далеки друг от друга) если теребить магнитик около гиркона. но самое первое и стабильное - то что на скрине выше.
в своей пайке уверен на все 100. ибо совпадении при "дребезге" такого сверхточного быть не может
slmvd, почему ж не имела, -имела смысл. По крайней мере про наводки от пальца вы уже не пишите, и вероятность проблем из-за неконтакта можно не учитывать. Остаётся одно -дребезг контактов. В принципе герконы для подобных целей лет 10 никто не использует, сразу на него не подумал, но сейчас это стало очевидным. Как лучший вариант поставьте вместо него датчик холла с цифровым выходом. У них нет дребезга как такового. Можно и с герконом, но придётся делать дребезгоподавление. Тут уж расписовать не стану -вариантов с десяток и аппаратных и программных. Самый простой подключить паралельно контактам геркона конденсатор, примерно 1мкФ. Должно помочь. Да, и в скетче есть мелкие косячки.
а что за геркон? у мой питается от 12в, на нем минимальное было 6 В и там вроде как 3 контакта. попробуй просто использовать его как кнопку . если все норм попробуй эту библиотеку <FreqCount.h>
А где конденсатор параллельно геркону? Где задержка в прерывании?
геркон нормальный, стоял такой в поверболле(штука для тренировки кисти руки) там есть тахометр и он идеально ровно показывает обороты. так что не в гирконе проблема. одно и то же значение (28к) не с проста.
slmvd, вы будете спорить или попробуете? Уберите все резисторы, оставьте только программную подтяжку. Поставьте конденсатор 1мкф паралельно, увидите результат.
"геркон нормальный", извини на такой даташит не найти. тебе нужна помощь или показать, что ты Д'Артаньян а мы все?
Здравствуйте!
Имею ту же проблему при создании СПИДОМЕТРА ТАХОМЕТРА
По железу: arduino nano v3+Nokia5110+датчик холла с цыфровой микросхемой питается все от USB порта
Все датчики это ARDUINовские модули. Второго датчика нет чистая нога (не антена)
Для функций прерыыания используются разные переменные
Суть остактся той же. При подносе магнита к датчику холла данные отображаются и в одной переменной и в другой, как будто второе прерывание не работакт так как нужно. Как я понимаю эту проблемму никто не решил? Это глюк ардуино, она не может работь с двумя прерываниями сразу?
NikKulik, Вы совершенно правы: эту проблему, а именно поиск ошибки в Вашем коде, еще никто не решал. Ардуино делает то, что ей приказывает программист, так что чей глюк - думайте сами.
Поделись кодом.
нашел код полностью работающего спидометра, тахометра и объединил их. в коде были лишние строки для 7 сегментного дисплея, удалил их и внедрил дисплей i2c.
Удалось решить проблему?
Плиз поделись скейчем под vid2905,схемой подключения если такого возможно
нашел код полностью работающего спидометра, тахометра и объединил их. в коде были лишние строки для 7 сегментного дисплея, удалил их и внедрил дисплей i2c.
Скетч и подключение в студио можно?
нашел код полностью работающего спидометра, тахометра и объединил их. в коде были лишние строки для 7 сегментного дисплея, удалил их и внедрил дисплей i2c.
Заинтересовала идея
А возможно как-то улицезреть скетч а то очень гочется позаморачиватся.