Тахометр и спидометр на ардуино. Помехи на прерывании.

slmvd
Offline
Зарегистрирован: 20.09.2016

Вообщем, имеется ардуино нано, 2 шаговых двигателя работающих без драйвера(напрямую к цифровым пинам) дисплей oled i2c 128*64. Перерыл тут кучу тем по вопросу помех, но не нашел того что нужно, ничего не помогает. Первый пин прерывания запрограммирован на считывание оборотов колеса, второй - оборотов. И вот незадача: при прикосновении к какому то пину отверткой или пальцем значения на дисплее сходят с ума! Обороты берутся из небес свыше 28к, уходит даже в минус. Со скоростью та же байда, скачет в районе 70 кмч. Пробовал подтягивать пины на землю(gnd) на палец реагировать перестает, но, показания все равно не верны. Я уже убрал всю навесную лабуду - вырвал дисплей и движки, написал короткий тестовый скетч для вывода в порт. Включаю - на порту значения 0. Подключил геркон и подтянул резистором пин к земле, подношу магнитик к геркону и на порту бешенство! Значения 19к и 28к... Может ардуино плохой мне прислал китаец? Помогите. Целую неделю не могу разобраться с проблемой.

slmvd
Offline
Зарегистрирован: 20.09.2016

Помехи на питании исключены - используются две батарейки 18650.

a5021
Offline
Зарегистрирован: 07.07.2013

slmvd пишет:
но не нашел того что нужно, ничего не помогает.

Радуйтесь, что ардуина не сгорел от движков прямо на пинах. На моторах обратный выброс и под сотню вольт может быть. Отцепляйте и подключайте, как положено.

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

slmvd, сфотографируйте все свои соединения, тот вариант, что "без лабуды" )) И ссылочку в студию. Посмотрим..

nik182
Offline
Зарегистрирован: 04.05.2015

Попробуйте убрать дребезг геркона, как от кнопки обычно убирают - резистор 10к на плюс и ножку прерывания, конденсатор 1000 пикофарад на землю и ножку прерывания, геркон параллельно конденсатору. В прерывании поставить небольшую - микросекунд на 50 -  задержку и очистку флага прерывания перед выходом из прерывания.  

slmvd
Offline
Зарегистрирован: 20.09.2016

slmvd
Offline
Зарегистрирован: 20.09.2016

между пином прерывания и землей стоит сопротивление 10к. гиркон на +5в и пином D2. беда точно не в гирконе - использовал 2 штуки, с обеими такая фигня.

slmvd
Offline
Зарегистрирован: 20.09.2016

a5021 пишет:

slmvd пишет:
но не нашел того что нужно, ничего не помогает.

Радуйтесь, что ардуина не сгорел от движков прямо на пинах. На моторах обратный выброс и под сотню вольт может быть. Отцепляйте и подключайте, как положено.

 

эти моторы (vid29-06p) изначально использовались на приборке с камнем меги. их там было 5 штук и все они соединялись напрямую. нигде не видел чтоб такие слабенькие моторы подключали через драйвер. да и не в этом проблема, без моторов и дисплея проблема одна и та же.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

slmvd. на фото не видно от чего вы питаете плату, вроде речь шла про аккумуляторы, а подключено к miniUSB. Не видно ни геркона, ни стягивающего резистора. А вот двигатели, которые вы отключали почему-то подключены к плате. В общем отпаяйте всё лишнее, подключите всё нужное. И снова сфотографируйте.  Измерьте напряжение на пине Vcc в момент глюка.

slmvd
Offline
Зарегистрирован: 20.09.2016

dimax пишет:

slmvd. на фото не видно от чего вы питаете плату, вроде речь шла про аккумуляторы, а подключено к miniUSB. Не видно ни геркона, ни стягивающего резистора. А вот двигатели, которые вы отключали почему-то подключены к плате. В общем отпаяйте всё лишнее, подключите всё нужное. И снова сфотографируйте.  Измерьте напряжение на пине Vcc в момент глюка.

ну так толку от того что я все убрал и запитал с батареи не оказалось, вот и подключил все обратно, и с юсб питание подключил. удобнее. могу отключить все, и резистор добавить. но повторюсь - какой от этого толк? разве что от резистора, хоть переставал на палец реагировать. только на геркон. и то неверно

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

slmvd, у вас очевидный аппаратный косяк. Поэтому просто покажите то, что нужно. Пусть включен от USB, хорошо. Но подключите всё как было в момент проверки, без двигателей. Что б все подключения были видны,каждый проводок полностью.

a5021
Offline
Зарегистрирован: 07.07.2013

slmvd пишет:
эти моторы (vid29-06p) изначально использовались на приборке с камнем меги.

Разбить об голову того, кто эту приборку конструировал.

Цитата:
нигде не видел чтоб такие слабенькие моторы подключали через драйвер.

Никогда не поздно восполнить этот пробел. Вот картинка из даташита на vid29-06p:

Видите блок с надписью "motor driving circuit" ? Больше не говорите, что никогда не видели.

slmvd
Offline
Зарегистрирован: 20.09.2016

dimax пишет:

slmvd, у вас очевидный аппаратный косяк. Поэтому просто покажите то, что нужно. Пусть включен от USB, хорошо. Но подключите всё как было в момент проверки, без двигателей. Что б все подключения были видны,каждый проводок полностью.

синими проводами подключен гиркон. сейчас включил и проверил повторно. никаких изменении. гиркон случайно сломал. при замыкании проводов те же самые значения.

slmvd
Offline
Зарегистрирован: 20.09.2016

нашел код полностью работающего спидометра, тахометра и объединил их. в коде были лишние строки для 7 сегментного дисплея, удалил их и внедрил дисплей i2c. 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

slmvd, опять ничего не видно. Вывод резистора что, просто надет на пин и всё?  Впрочем  все остальные надетые проводки тоже не лучше. Тогда не удивительно..

slmvd
Offline
Зарегистрирован: 20.09.2016

не надет, а намотан как можно плотно. провода тоже нормально приделаны, там нет ничего такого что могло бы искажать показания. а вообще - не суть. меня интересует одно - почему он реагирует на палец, вместо того, что должен реагировать на 5 вольт?? что за магия? вот тупоо ничего не подключено, задел пин прерывания случайно и вот уже 28 тыс оборотов, что за конетель то такая.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

slmvd, раз реагирует на палец -значит вход не стянут к земле, т.е. у резистора нет контакта.

slmvd
Offline
Зарегистрирован: 20.09.2016

выше я писал что притянутый к земне он не реагирует. но считывает все равно заоблачные значения

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

slmvd, это потому что вы ничего не делаете как положено.- На входе одного прерывания резистор болтается на соплях, на входе другого прерывания -вообще ничего, хотя оно в программе включено. Разумеется висящий в воздухе вход работает как антенна, и трещит своим прерыванием с большой скоростью. 

slmvd
Offline
Зарегистрирован: 20.09.2016

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

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

slmvd, просто сделайте всё как положено, что бы никаких надетых проводков. Все контакты -на пайку, или под винтовой зажим.

И всё заработает как надо.

slmvd
Offline
Зарегистрирован: 20.09.2016

завтра спаяю и отпишу. чую вот никаких изменений не будет.

slmvd
Offline
Зарегистрирован: 20.09.2016

я таки спаял. подключил 11кОм между 5в и d2. 3,6кОм между землей и d2. один вывод геркона на d2, второй на 5в.

загружаю скетч (кстати добавил несколько строк типа программной подтяжки, толку от этого тоже не оказалось)

#define pinDH    2
unsigned long lastflash;
int RPM;

void setup() {
  Serial.begin(9600);  //открыть порт
  pinMode( pinDH, INPUT );
  digitalWrite( pinDH, HIGH );
  attachInterrupt(0,sens,FALLING); //подключить прерывание на 2 пин при повышении сигнала
}
void sens() {
  RPM=60/((float)(micros()-lastflash)/1000000);  //расчет
  lastflash=micros();  //запомнить время последнего оборота
}

void loop() {
  if ((micros()-lastflash)>1000000){ //если сигнала нет больше секунды
    RPM=0;  //считаем что RPM 0
  }
  Serial.println(RPM);   //вывод в порт
  delay(80);  //задержка для стабильности
}

открываю монитор порта

подношу магнит к гиркону и на мониторе это - 

теперь то вы поняли что пайка не имела смысла? значение, кстати, меняется (проскакивают 17к, отрицательные значения тоже, есть и малые очень редко встречающиеся типа "620" которые всегда разные и далеки друг от друга) если теребить магнитик около гиркона. но самое первое и стабильное - то что на скрине выше.

в своей пайке уверен на все 100. ибо совпадении при "дребезге" такого сверхточного быть не может

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

slmvd, почему ж не имела, -имела смысл. По крайней мере про наводки от пальца вы уже не пишите, и вероятность проблем из-за неконтакта можно  не учитывать. Остаётся одно -дребезг контактов. В принципе герконы для подобных целей лет 10 никто не использует, сразу на него не подумал, но сейчас это стало очевидным. Как лучший вариант поставьте вместо него датчик холла с цифровым выходом. У них нет дребезга как такового. Можно и с герконом, но придётся делать дребезгоподавление. Тут уж расписовать не стану -вариантов с десяток и аппаратных и программных. Самый простой подключить паралельно контактам геркона конденсатор, примерно 1мкФ. Должно помочь. Да, и в скетче есть мелкие косячки.

James
Offline
Зарегистрирован: 26.02.2016

а что за геркон? у мой питается от 12в, на нем минимальное было 6 В и там вроде как 3 контакта. попробуй просто использовать его как кнопку . если все норм попробуй эту библиотеку <FreqCount.h>

nik182
Offline
Зарегистрирован: 04.05.2015

А где конденсатор параллельно геркону? Где задержка в прерывании? 

slmvd
Offline
Зарегистрирован: 20.09.2016

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

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

slmvd, вы будете спорить или попробуете? Уберите все резисторы, оставьте только программную подтяжку. Поставьте конденсатор 1мкф паралельно, увидите результат.

James
Offline
Зарегистрирован: 26.02.2016

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

NikKulik
Offline
Зарегистрирован: 06.03.2018

Здравствуйте!

Имею ту же проблему при создании СПИДОМЕТРА ТАХОМЕТРА

По железу: arduino nano v3+Nokia5110+датчик холла с цыфровой микросхемой питается все от USB порта

Все датчики это ARDUINовские модули. Второго датчика нет чистая нога (не антена)

Для функций прерыыания используются разные переменные

Суть остактся той же. При подносе магнита к датчику холла данные отображаются и в одной переменной и в другой, как будто второе прерывание не работакт так как нужно. Как я понимаю эту проблемму никто не решил? Это глюк ардуино, она не может работь с двумя прерываниями сразу?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

NikKulik, Вы совершенно правы: эту проблему, а именно поиск ошибки в Вашем коде, еще никто не решал. Ардуино делает то, что ей приказывает программист, так что чей глюк - думайте сами.

viris42
Offline
Зарегистрирован: 21.08.2013

slmvd пишет:
Вообщем, имеется ардуино нано, 2 шаговых двигателя работающих без драйвера(напрямую к цифровым пинам) дисплей oled i2c 128*64. Перерыл тут кучу тем по вопросу помех, но не нашел того что нужно, ничего не помогает. Первый пин прерывания запрограммирован на считывание оборотов колеса, второй - оборотов. И вот незадача: при прикосновении к какому то пину отверткой или пальцем значения на дисплее сходят с ума! Обороты берутся из небес свыше 28к, уходит даже в минус. Со скоростью та же байда, скачет в районе 70 кмч. Пробовал подтягивать пины на землю(gnd) на палец реагировать перестает, но, показания все равно не верны. Я уже убрал всю навесную лабуду - вырвал дисплей и движки, написал короткий тестовый скетч для вывода в порт. Включаю - на порту значения 0. Подключил геркон и подтянул резистором пин к земле, подношу магнитик к геркону и на порту бешенство! Значения 19к и 28к... Может ардуино плохой мне прислал китаец? Помогите. Целую неделю не могу разобраться с проблемой.

Поделись кодом.

Brat4791
Brat4791 аватар
Offline
Зарегистрирован: 13.02.2021

slmvd пишет:

нашел код полностью работающего спидометра, тахометра и объединил их. в коде были лишние строки для 7 сегментного дисплея, удалил их и внедрил дисплей i2c. 

Удалось решить проблему?

Плиз поделись скейчем под vid2905,схемой подключения если такого возможно

Brat4791
Brat4791 аватар
Offline
Зарегистрирован: 13.02.2021

slmvd пишет:

нашел код полностью работающего спидометра, тахометра и объединил их. в коде были лишние строки для 7 сегментного дисплея, удалил их и внедрил дисплей i2c. 


Скетч и подключение в студио можно?

Brat4791
Brat4791 аватар
Offline
Зарегистрирован: 13.02.2021

slmvd пишет:

нашел код полностью работающего спидометра, тахометра и объединил их. в коде были лишние строки для 7 сегментного дисплея, удалил их и внедрил дисплей i2c. 


Заинтересовала идея

slibb
Offline
Зарегистрирован: 11.06.2022

А возможно как-то улицезреть скетч а то очень гочется позаморачиватся.