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

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

08.05.2014, 20:56. Просмотров 6868. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2014, 20:56
Ответы с готовыми решениями:

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

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

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

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

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

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
08.05.2014, 22:24
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2014, 22:43

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

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

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


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

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

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