Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.92/37: Рейтинг темы: голосов - 37, средняя оценка - 4.92
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
1

Алгоритм спидометра скута кривавато работает...

08.05.2014, 20:56. Просмотров 6720. Ответов 27
Метки нет (Все метки)

Приветствую.
Спидометр, который должен в теории работать четко, не угадывает скорость...
Алгоритм:
1.Каждые 2мс. Срабатывает переполнение по таймеру T0
Код
// Прерывание при переполнении T0. 2мс
SIGNAL (SIG_OVERFLOW0)
{
TCNT0TCNT0=0x06;
// Если натикало 0,5 секунды
if(++Clock_m02Seconds == 250)
{
Clock_Half_Seconds++;
Clock_m02Seconds = 0;
if(TimeToSlip < MaxTimeToSlip)
TimeToSlip++;
}

// Каждые 250мс сохраняем значение спидометра
if(Clock_m02Seconds == 25 || Clock_m02Seconds == 150)
{
SpeedArray[SpeedArrayPointer++] = SpeedCounter;
SpeedCounter = 0;
if(SpeedArrayPointer == SpeedFilterN)
SpeedArrayPointer = 0;
}

// Каждые 250мс сохраняем значение тахометра
if(Clock_m02Seconds == 100 || Clock_m02Seconds == 225)
{
TahoArray[TahoArrayPointer++] = TahoCounter;
TahoCounter = 0;
if(TahoArrayPointer == TahoFilterN)
TahoArrayPointer = 0;
}
}
В прерывании INT1
Код
SIGNAL(INT1_vect)
{
//// Отлов спидометра
// Значение TahoOnDyspley поделенно на 100.
// Если обороты движка больше 10[00]
if(TahoOnDyspley > 9)
{
// Считаем количество оборотов колеса
OdometrCountOfRotation++;
SpeedCounter++;
vFlag5 |= _BV(1);
}
}
После этих двух прерываний каждые 250мс записываются данные в "зацыкленный" массив.
3. Где то в главном цикле void SpeedSotsAndDraw()
Код
void SpeedSotsAndDraw()
{
unsykned int NewSpeed = 0;
unsykned char cPointer;
// Сумируем насчитанные значения
for(cPointer = 0; cPointer < SpeedFilterN; cPointer++)
{
NewSpeed += SpeedArray[cPointer];
}
// Поскольку отсчеты по 0,25 сек,
// то при SpeedFilterN == 8 - Имеем скорось за последние 2 сек
// Переводим [обороты колеса/сек] в [10км/час]
NewSpeed = NewSpeed * 24.75;
// На случай, если показания не влезут в индикатор
if(NewSpeed > 999) NewSpeed = 999;

// Вывод на экран...
}
По логике этого должно хватать. При подаче от импульсов от генератора - все красиво, а вот на скуте... Показания скорости завышены на 5-20км/ч, чаще всего на 10 км/час.
Помехи, которые создавались датчиком холла(нигнит остановился рядом - много импульсов) поборол через привязку к оборотам движка. Скут раньше 900-1000 оборотов ехать не начнет, следовательно на таких оборотах игнор. Есть подозрения, что на проводник идут наводки...
На практике сделано так: нигнит на колесе, датчик холла на вилке, рядом CLC стабилизатор для датчика, транзисторный ключ, коаксиал, подтяжка к +5м, INT1.

Что посоветуете делать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 20:56
Ответы с готовыми решениями:

Как физически установить термодатчик LM135 на движке скута
Приветствую. Для измерения температуры двигателя на скутере использую термодатчик LM135. При...

Моталка спидометра
Имеется в наличии некий прибор для намотки пробега. Фото прилагаю. Помогите определить на какой...

Корректор спидометра мотоцикла
Хорошо получилось! Главное, доведено до оформленной конструкции. Уже давно приходилось заниматься...

Мотор стрелки спидометра
Всем привет, подскажите кто-нибудь как управлять этим мотором? 4 пина, на плате подписано +sin,...

Управление двигателем стрелки спидометра...
Переделываю спидометр на своем авто, возник вопрос с управлением двигателем стрелки т.к. он будет...

27
oomomstir
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,864
09.05.2014, 23:31 21
http://itistromyx.ru/forum/lofiversion/ ... 61806.html :
Нужно очень внимательно с зазорами и углами прохождения нигнита, иначе, несмотря на наличие гистерезиса, можно получить ложные срабатывания "на краях" - когда нигнит уже "уходит" от датчика.
Т.е. среди всяких разных возможных проблем надо смотреть и эту (думаю, на осциллографе увидите, если она есть, или лучше прямо на вашем девайсе записать сигнал с ноги INT1 - точнее, длительности интервалов между прерываниями)
0
koriprokrommyst
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,818
09.05.2014, 23:47 22
да уж. в этом плане удобно иметь датчик как у меня)
но имхо на больших скоростях наоборот вероятность такой помехи меньше, разве нет?
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
10.05.2014, 00:03 23
Проблема с углами - это вариант. Выше есть фото с ДХ и нигнитом. ДХ крепиться в резине и стяжками.
Ложные срабатывания можно побороть программно, игнорируя некоторые импульсы по таймеру.
На больших скоростях помеха стабильней. +15-20км/ч.
Есть вероятность, что у меня тоже ДХ с "защелкой" (Спасибо Калину за ссылку через ЛС)
0
koriprokrommyst
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,818
10.05.2014, 00:54 24
ну если грешим на нигнит, то вместо платы подключить к датчику светодиод и попробовать настроить крепление нигнита, чтобы не было ложных срабатываний.
0
okotimiv
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,382
10.05.2014, 00:59 25
Сделайте себе токовую петлю, и не мучайтесь, если уж по другому с помехами разобраться не получается.

Но вообще без осциллографа это все гадание вслепую.
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
10.05.2014, 01:06 26
Когда устанавливал, то не подумал о углах...
Точнее подумал, но не рассчитывал, что нигнит могут появляться ложные срабатывания.
Нужно будет переделать на жесткое крепление, а то я его резиной обмотал и стяжками прицепил.
Е-мае... Я там недавно гайку крутил... Провод от него туды-сюды ворочал...

okotimiv, Да тут проблема где то на верху. Уже столько насоветовали. В гараже придется применять советы по одному, а то если все сразу, то не пойму из-за чего стало хорошо)))
0
okotimiv
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,382
10.05.2014, 01:10 27
Сдаецца мне что без осцилла все равно не обойдется...
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
10.05.2014, 01:20 28
Тогда, придется искать у кого есть рядом(((
0
10.05.2014, 01:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2014, 01:20

Оцифровка сигналов спидометра, тахометра и т.д
Добрый день. Интересует такой вопрос вобщем по СТМ32. До этого раньше работал с АВР, и собственно...

Имитация вращения стрелки спидометра
Люди. ето самый ламерский вопрос, нo помогите. (сам я не прграммер, это хобби, а иногда просто...

Корректор частоты импульсов с датчика спидометра
Добрый день, уважаемые участники форума. С некоторого времени работаю автоэлектриком. Вчера...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru