Автомобільний маршрутний комп'ютер


Останнім часом все більшу популярність здобувають змагання на позашляхових автомобілях. Один з найбільш цікавих етапів таких змагань – орієнтування по легенді. У цих змаганнях екіпажу необхідно пройти з заданим швидкісним режимом трасу, описану легендою. У легенді послідовно прописані орієнтири (розвилки, перетину доріг, будівлі) та відстані між ними. У заздалегідь невідомих точках на трасі знаходяться пункти контролю часу, в яких проводиться перевірка часу проходження траси і, у разі його відхилення від заданого швидкісного режиму, нараховується штраф. Для успішних виступів на таких змаганнях зручно мати спідометр, що дозволяє вимірювати відстані з точністю до 10 метрів, з режимом зворотного відліку (на випадок, якщо ви заблукали і змушені повернутися), і секундомір, щоб контролювати середню швидкість проходження дистанції.

Нижче запропонований простий, але достатньо ефективний варіант подібного приладу. Він забезпечує наступні функції: підрахунок пройденої відстані від трьох різних точок з точністю до 10 метрів (старт, останній пункт контролю часу і остання крапка легенди) і підрахунок часу руху від двох з них (старт і пункт контролю часу). Передбачені режими "заморозки" показань, зворотного відліку відстані, три різних режиму індикації даних.

Для підрахунку пройденої відстані використовується герконовий датчик Sw1. Датчик встановлюється поруч з Карданов, піввісь, маточиною або інший обертається частиною трансмісії, на якій закріплюється магніт. Імпульси з датчика надходять через схему придушення брязкоту, зібрану на таймер DD1 і DD2, на вхід T0 мікроконтролера DD1.

Для переведення числа імпульсів у пройдене відстань необхідно встановити параметр калібрування, відповідний числу імпульсів на 10 метрів. Цей параметр зберігається у двох байтах: Cal_Hi – ціле число імпульсів на 10 метрів і Cal_Lo – дробова частина з точністю до однієї сотої (у форматі BCD). Для підрахунку імпульсів використовується 8-бітний лічильник Timer/Counter0 і додатковий регістр Dst_Counter. Лічильник запрограмований на підрахунок імпульсів із входу T0 і генерацію переривання по переповнення. У початковий момент часу значення лічильника ініціалізується числом 256-calhi, a значення Dst_Counter – нулем. Таким чином, перше переривання від лічильника відбудеться після надходження числа імпульсів, рівного цілої частини числа імпульсів на 10 метрів. При обробці переривання регістр Dst_Counter збільшується на значення Cal_Lo. Якщо при цьому відбувається переповнювання, то в якості чергу ного значення для ініціалізації лічильника використовується не 256-Cal_Hi, a 256-Cal_Hi-1. Це призводить до того, що до наступного переривання від лічильника надійде на один імпульс більше. Цей алгоритм дозволяє враховувати і коригувати накопичуються похибка при обчисленні відстані. Процедура обробки переривання від лічильника також збільшує або зменшує (залежно від режиму) лічильники відстаней на одиницю.

Таблиця 1

Число 1

Режим 1

Загальний час гонки

Режим 2

Час від останньої точки перевірки

Режим 3

Час від останньої точки перевірки

Число 2

Відстань від старту

Відстань від останньої точки перевірки

Відстань на останньому інтервалі легенди

Для підрахунку часу використовується поділ частоти тактового генератора процесора (6МГц). Підрахунок імпульсів здійснює 32-бітний Timer/-Counter2. Він налаштований на підрахунок імпульсів, що надходять з тактового генератора через пределітель на 64. Таким чином на вхід таймера подається частота 93750 Hz. Початкове значення таймера встановлюється рівним 0xDB61 (0xDB61 = 65536 – 9375), що забезпечує генерацію переривань переповнення з частотою 10 Гц. Під час обробки переривання інкрементує лічильник Timer_Counter, і його значення порівнюється з константою Timer_Limit. При досягненні значення Timer_Limit мінлива Timer_Counter обнуляється і збільшуються значення лічильників часу. Константа Timer_Limit встановлюється дорівнює 6, що забезпечує збільшення лічильників часу кожні 0,6 с або 0,01 хв. Таким чином, прилад відображає час в сотих частках хвилини, що полегшує обчислення середньої швидкості. Якщо необхідно підраховувати час у секундах, то потрібно поміняти значення Timer_Limit на 10 і скорегувати процедуру збільшення лічильника часу так, щоб збільшення лічильника хвилин відбувалося при досягненні лічильником секунд значення 60, а не 100.

Індикація пройденої відстані і часу здійснюється вісьмома 7-сегментними світлодіодними індикаторами із загальним анодом, згрупованими в дві групи по 4 цифри. Залежно від режиму роботи кожна з цих груп відображає один з параметрів, що вимірюються відповідно до табл.1.

Висновок значень на індикатори виробляється з використанням динамічної індикації, так що в кожен момент часу відображаються по дві цифри. При цьому на базу одного з транзисторів VT1, …, VT4 подається негативний імпульс, чим забезпечується вибір однієї з груп цифр, а на виходах портів A і C встановлюються рівні, що забезпечують загоряння відповідних сегментів.

Для індикації поточного режиму роботи пристрою використовуються 5 світлодіодів HL1, …, HL5. Процедура відображення інформації послідовно виводить інформацію на 7-сегментні індикатори і цю групу світлодіодів. Так як час включення кожного індикатора в такому режимі мало, рекомендується використовувати світлодіодні індикатори великої яскравості зарубіжного виробництва, наприклад Kingbright DA56-11SRWA.

Після кожного циклу виведення інформації опитується стан кнопок SW2, …, SW8. Якщо стан виявляється постійним протягом п'яти опитувань (придушення брязкоту), то проводиться дію, відповідне натиснутим кнопках. Функції кнопок наведено в табл. 2.

Для живлення пристрою можна використовувати три батарейки AA або стабілізовану напругу бортової мережі. Схема стабілізатора на базі інтегрального стабілізатора 7805 показана на рис. 2.

Для установки пристрою на автомобіль потрібно вибрати місце, яке дозволяло б встановити магніт на який-небудь деталі, що обертається трансмісії, і розмістити поряд з ним герконовий датчик. Після установки слід переконатися, що датчик реагує на проходження магніту і при цьому ніякі деталі автомобіля при русі не будуть зачіпати датчик або магніт. Якщо передбачається експлуатувати машину в умовах бездоріжжя, то слід подбати про те, щоб місце установки датчика було захищене від можливих ударів різними предметами з боку дороги.

Після установки датчика прилад необхідно відкалібрувати, для чого потрібно визначити число імпульсів на один кілометр. Для цього спочатку значення калібрування потрібно встановити таким чином: Cal_Hi = 1, Cal_Lo = 0. Це забезпечить збільшення лічильника відстані після кожного імпульсу від датчика. З цими значеннями калібрування необхідно проїхати ділянку, налаштований як мірного кілометра, і запом нитка отримане число. Для збільшення точності рекомендується проїхати по цій ділянці кілька разів і Усереднити отримані значення. Потім значення константи Cal_Hi потрібно встановити рівним двом старшим розрядів отриманого числа, а Cal_Lo – двом молодшим (при цьому необхідно пам'ятати, що значення в Cal_Lo зберігатися в двійково-десяткового системі, CalHi – у двійковій). Програма прошивки мікроконтролера розміщена за адресою www.compitech.ru/data/shem/01_00/ # 2.

Таблиця 2

Кнопка SW2 SW3 SW4 SW5 SW6 SW7 SW8
Функція Перемикає режим прямого / зворотного відліку відстані Включає / вимикає режим заморозки показань Включає 1-й режим індикації, вимикає режим заморозки показань Включає 2-й режим індикації, вимикає режим заморозки показань Включає третій режим індикації, вимикає режим заморозки показань Скидає лічильник інтервалу відстані по легенді У 1-му режимі індикації скидає всі лічильники відстані і часу. В інших режимах скидає лічильники відстані і часу від точки перевірки часу і лічильник інтервалу за легендою

А нука хлопну правою кнопкою миші для перегляду
Рис. 1

Пристрій був вперше випробувано на змаганнях "Весняна бездоріжжя", проведених Тверським джип-клубом "Лебедушка" 21-23 квітня 2000 року в околицях м. Твері. Застосування даного пристрою зіграло велику роль в тому, що автору, вперше брала участі у подібних змаганнях, вдалося відразу зайняти 8-е місце на етапі "нічний орієнтування", пропустивши вперед тільки більш досвідчені московські екіпажі. Подальша експлуатація пристрою на тренуваннях і змаганнях джип-клубу "Лебедушка" підтвердила ефективність його використання.

Після мінімальних змін у програмі можливо "мирний" застосування подібного пристрою як електронного таймера / одометра з декількома незалежними лічильниками відстані і часу (наприклад, загальний пробіг за поїздку, пробіг від заправки, пробіг від останнього повороту).

Сергій Сорокін, Тверь