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

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

08.05.2014, 20:56. Просмотров 6706. Ответов 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 на движке скута
Приветствую. Для измерения температуры двигателя на скутере использую...

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

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

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

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

27
sohbtixhuk
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
08.05.2014, 21:41 2
Ткнуть осциллографом на предмет помех и смеха ради попробовать экранированные провода. Я прозреваю, что скут может весьма неплохо срать в эфир, сосбна, спидометр и ловит лишние импульсы на 10 км\ч чаще
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
08.05.2014, 21:57 3
Не смеха ради, а сигнал идет по коаксиалу, раньше вообще ппц было.
С осциллографом на перевес ибо в салоне нет места для него)))
А глюки, собственно появляются на скорости от 25-30км/ч.
А на 50-60 уже идет погрешность в 5-20км/ч.
0
koriprokrommyst
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,818
08.05.2014, 22:24 4
а сесть на скутер и ниточкой периметр измерить? вообще с чем сверяется скороть? у меня без всякого экрана с переднего колеса работало исправно.
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
08.05.2014, 22:57 5
У меня периметр колеса 1.375 метров.
Думаете, что криво измерял периметр?
Скорее всего, что не из-за этого. Так как на одной скорости реальной показания немного скачут, а при динамике - очень скачут.
0
koriprokrommyst
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,818
09.05.2014, 01:23 6
именно скачут - или какие-то стабильные привирания? я за программный глюк. генератор как устроен? плавное изменение частоты, или дискретно заданные величины?
сигнал тахометра кстати откуда берется? я без тахометра обходился - при скорости меньше пяти кмч просто показывал 0.
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
09.05.2014, 02:04 7
Стабильные скачки))) - тут думаю генератор крайним назначить.
+ стабильное завышение. Чем больше скорость, тем больше врет.
-------------
Генератор перемотан, реле-регулятор тоже сам сделал. Сильно пульсировать не может. Вот зажигание конденсаторное...
Сигнал для тахометра берется от катушки зажигания. Привязку к тахометру сделал из-за того, что бы избежать ситуации: движок заведен(вибрирует все), нигнит находиться не далеко от датчика холла, который генерит "зубцы" и скорость улетает.
--------------------------
Я вот тут чего подумал, пока писал...
Магнит же играет роль во всей этой красе...
Опыт 1: На входе в бортовой отсоединены спидометр и тахометр. "педаль в пол" из помех - 15-30об/мин на тахометре.
Опыт 2: Спидометр и тахометр подключены, ручка тормоза зажата. "педаль в пол" и скорость == 0(!) при оборотах 1500-1800. При том, что средне-максимальные обороты 2000-2300. Если бы ехал, а колесо крутилось бы, то уже была бы скорость + глюки.
Фото нигнита и датчика холла на колесе.
http://www.cyberforum.ru/savedimages/2014/05/09/5vquvjfdzqvbjhtzduvj.jpg
Может быть нигнит не тот?
0
koriprokrommyst
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,818
09.05.2014, 02:51 8
разделить проблемы: помехи (скачки)-одно, завышение -другое.
по первому: какой тип датчика? у меня был цифровой, и для импульса нужно было менять полярность нигнита (один оборот колеса - минимум два импульса). никаких ложных срабатываний.
про второе - окружность колеса бралась из справочника или замерялась в реале? где бралась эталонная скорость? не задумывался, что штатный спидометр может привирать?
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
09.05.2014, 03:25 9
Название датчика не помню сейчас. Цифровой, полярность нигнита подбирал переворотом датчика в его местоположении. Может сместился?
Один оборот - два импульса? У меня один нигнит на колесе. Надо два, обоснуйте.
Окружность колеса измерялась веревкой в реале, а дальше формулы из геометрии и физики.
Сравнение со штатным спидометром не было. Было сравнение со спидометром жигулей(ну-ну)...
Да и по собственному ощущению я не могу ехать 70км/ч, если "на глаз" еду 45-50мах. И все меня обгоняют. Думаю сравнить скорость по GPS. Но тут и к Глонасс не ходи, врет, зараза)
0
oomomstir
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,864
09.05.2014, 04:33 10
Тупой вопрос: а "дребезга" у датчика Холла быть не может? (для проверки можно засечь самый короткий интервал между двумя int1)

И, кстати, зачем сделано, что тахометр считает только при заведённом двигателе?
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
09.05.2014, 09:02 11
В датчиках Холла по определению не может быть дребезга. Разве что нигнит и метал колеса сдружились так, что появились дополнительные нигнитные поля.

Тахометр считает постоянно. От этих показаний зависит детекция состояния двигателя.
Если имели ввиду спидометр:
Помехи, которые создавались датчиком холла(нигнит остановился рядом - много импульсов) поборол через привязку к оборотам движка. Скут раньше 900-1000 оборотов ехать не начнет, следовательно на таких оборотах игнор.
0
oomomstir
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,864
09.05.2014, 11:51 12
Что значит "по определению"? Если ДХ аналоговый, потом к его выходу добавляем небольшой шум, а потом скармливаем компаратору - как раз аналог дребезга и получим. В цифровых эо решено введением гистерезиса.
Кстати, тот же гистерезис должен решить и проблему с остановившимся колесом (собственно, проблема ровно та же).
Да, вопрос "зачем" был именно про спидометр, просто перепутал.
0
koriprokrommyst
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,818
09.05.2014, 13:07 13
я бы попробовал отключить тах и убрать лишнюю пооверку из прошивки - что бы изменилось? (избавиться от потенциального источнрка помех). ну или посмотреть связку генератор импульсов+реальный тахометр.
про два нигнита - это я про свой опыт рассказывал. моему датчику для каждого следующего срабатывания нужна была противоположная полярность...
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
09.05.2014, 13:47 14
Сразу от катушки зажигания стоит CLC+транзисторный ключ.
Отключить тах. попробую, но сомневаюсь, что то измениться. Проверка "taho>9" влияет полезна только тогда, когда при статическом положении нигнита возле датчика Холла, последний начинает дурить. Это програмный игнор спидометра, если обороты еще не позволяют ехать. Это одно из последних изменений, и никак не повлияло на глюки. Так как при застопоренном колесе и оборотах 1300-1500 скорость нулевая. Хотел снять нигнит и половить на спидометр только помехи, но предыдущий опыт показал, что нет смысла.
Думаю стоит поставить еще нигнитов, ведь чем больше информации от колеса, тем точнее данные.
Коаксиальные проводники для тахометра и спидометра
http://www.cyberforum.ru/savedimages/2014/05/09/cwft4rrpycnyfbuydmxur.jpg
0
oomomstir
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,864
09.05.2014, 14:14 15
А датчик-то у вас аналоговый или цифровой? (полагаю, что аналоговый - цифровой вряд ли бы дурил при остановившемся колесе, у koriprokrommyst он вообще не переключался, пока не придёт другой полюс)
0
koriprokrommyst
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,818
09.05.2014, 14:47 16
кстати, как датчик к мк подключен? clc, транзисторный ключ - что это и для чего?
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
09.05.2014, 16:21 17
Наконец то нашел название ДХ. Выдержка из ДШ:
SS441A
SS400 Series Unipolar Hall-Effect Digital Position Sensor;
rodyal lead IC package

Подключение:
Питание: от бортовой сети - фильтр слс - ДХ.
Инфо: ДХ - транзисторный ключ - коаксиал - подтяжка на +5в - ИНТ1.\
Когда нигнит возле ДХ, на инфо_выходе ДХ 12в. Эти 12в поступают на базу BC847(?), транзистор прижимает подтяжку к земле. Земля детектиться на ИНТ1.
0
koriprokrommyst
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,818
09.05.2014, 16:54 18
а нафига питание от 12в? спецификации дх вынуждают? питать от 5 в - и никаких транзисторов не нужно...
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
09.05.2014, 20:08 19
Схема тогда нужна, чтобы ответить на ваш вопрос.
0
dsshooozzzi
0 / 0 / 0
Регистрация: 03.01.2011
Сообщений: 250
09.05.2014, 22:43 20
Питать от 12В позволяет ДШ, а до источника 5В нужно еще дотянуться в другой конец. Помех то будет... А так получается, что подтяжка к 5В возле ИНТ1, а в другом конце скута осуществляется "прижим" к земле.
Я сразу так и делал. После переноса транзисторного ключа поближе к ДХ помех уменьшилось прилично. Или вообще исчезли, если сабж окажется не помехой.

Схему я описал выше словами. Или я что-то недопонял. Просто _пока что_ не вижу смысла рисовать схему.
0
09.05.2014, 22:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2014, 22:43

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

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

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


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

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

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