mexanik | Дата: Вторник, 25.01.2011, 22:14 | Сообщение # 1 |
Радиолюбитель
Группа: Администраторы
Сообщений: 306
Статус: Offline
| Глава 1. Немного предистории, или как я люблю отечественный Автопром. После того, как на моей машине, а машина прямо скажем почти эксклюзивная (в смысле запчасти фиг найдешь), благополучно скончался очередной спидометр, то ли седьмой, то ли восьмой, я решил замутить электронный девайс, чтоб и скорость показывал и километры щелкал. Как обычно, начал поиск того, что уже натворили собратья по разум и коллеги по несчастью обладания данным типа авто. Пролистав не одну страницу и посетив не один форум, обнаружил что ничего подходящего для моего авто нет, либо девайс собран на PICе, у меня даже программатора нет и приходится просить друзей-знакомых, да и AVRки мне как-то роднее, либо состоит из 2х отдельных блоков, и у всех значения пробега пишутся во внутреннюю EEPROM, что не есть гут. Пораскинув мозгами, не широко так, чтобы потом можно было собрать в кучу, решился на отчаянный шаг - лепить самому. Что из этого получилось - решать вам, многоуважаемые коты. Фото 1. Общий вид: Фото 2. Основной блок: Фото 3. Датчик ДСА-9 + "двигло": Глава 2. О выборе компонентов, или "я его слепила из того, что было". Итак, за источник сигнала о продвижении авто по тернистому пути наших автодорог был выбран ДСА-9, имеющий: 6 импульсов на 1 метр пути, выход ОК и резьбовое соединение М22 х не помню на сколько, как раз по размеру, НО можно использовать любой датчик скорости с 6имп/метр, в зависимости от авто. С проциком было труднее. Любимой меге48 не хватало пары ног, но тут на глаза попалась старая макетка с мегой16, что ж так тому и быть. Итого: МП=ATmega16-16PI С выбором тактовой частоты долго мучаться не пришлось, после не больших подсчетов выяснилось, что период повторения импульсов при скорости 250 км/ч составляет 2,4 мс, или 2400 тиков при тактовой частоте в 1 МГц, маловато будет, было решено использовать кварц на 8 МГц, это уже 19200 тиков процессора, а для удобства подсчета, с помощью таймера Т1, использовать "предделитель на 8". Для отображения всего, что будет измерятся и подсчитыватся предназначены: KingDright BA56-12GWA (можно любые с ОА) - для отображения текущей прыткости МЭЛТ MT-08S2A-2YLG (опять же можно любой 8х2 LCD с аналогичным контроллером и тактовой не ниже 250 кГц) - для подсчета того, что будет пройдено по тем направлениям, что в России гордо именуется дорогами. Ну и AT24C04B (наследство от той самой макетки, но можно любую из серии 24Схх), чтобы "помнить" от тех незабываемых километрах пути. Глава 3. О самом главном, или без теории ни туды, и ни сюды. Переходим, собственно, к методике определения скорости. Как всем известно, если автомобиль движется, то с датчика скорости поступают импульсы, если никуда не движется - то и импульсов тоже не дождетесь! И что самое поразительное - частота (или кому удобнее - период повторения) прямо пропорциональна (обратно пропорциональна, для периода повторения) скорости движения, вот тут-то, не при котах будь она упомянута, собака и порылась. Что такое частота - это количество импульсов в секунду (просто гениально, спасибо Герцу) N(в секунду)=Fп, поэтому получаем: V=Fп/6 (м/сек) (мы же помним, что на 1 метр приходится 6 импульсов) Но минуточку, где вы видели спидометры со шкалой "М/СЕК"? Да и ГАИшники, (ДАИшники - это чтобы для тех, кто в Украине проживает, было понятно) штрафуют за лишние км/час. Отсюда вывод - надо пересчитать, а как? Все гениальное просто: умножаем на 3600 (это столько секунд в 1 часе) и делим на 1000 (столько метров в 1 км) после сложнейших математических преобразований получаем волшебную формулу: V=0,6*Fп (км/час) - то что доктор прописал. Из это формулы следует гениальное (жаль, что не я первый додумался) умозаключение - если организовать "временные ворота" длительностью 0,6 сек, в которые проталкивать импульсы от датчика, на выходе получим скорость! 1 импульс - 0,6 км/час, 10 импульсов - 6 км/час, 100 импульсов - 60 км/час и т.д. Но, опять это "НО", как сказал один из главных героев любимого фильма из детства "Айболит-66" - "Нормальные герои всегда идут в обход", вот этим путем пойдем и мы, т.е. заменим в формуле Fп на Тп (оно же 1/Fп), в результате получим: V=0,6/Тп (км/час) Возникает законный вопрос - "ЗАЧЕМ?". Напрашивается еще одна цитата: "А я объясню!" ("Ирония судьбы, или с легким паром"). Дело в том, что как любой цифровой прибор, нашему спидометру присущи те же недостатки - погрешность. Может кто помнит, обычно пишут: "+/- 2 знака мл.разряда" (например). Так вот, чтобы уменьшить, всякие там, погрешности умные люди придумали "складывать и умножать" (шучу), накапливать и усреднять. Теперь посмотрим, сколько нужно времени, чтобы усреднить 2 показания, ну скажем на скорости 60 км/ч. При первом способе получается: 2 временных отрезка по 0,6 сек - итого 1,2 сек, авто при этом проедет примерно 33м. (временем выполнения сложения-деления можно пренебречь) Второй способ нам дает: 2 интервала по 10 мс - итого 0,02 сек, авто проедет - 0,33м. Вот поэтому в программе происходит накопление и усреднение 8-ми отсчетов скорости. Почему 8? Просто удобнее усреднять, не мне - микропроцику. Тогда зачем я тут подробно описывал первый способ расчета? А чтоб было, вдруг кому-то понадобится! Что? Забыл про одометр? Ну, там все просто: считаем импульсы, делим на 6 - получаем метры, потом делим на сто - сотни метров (нужны для учета суточного пробега), еще на 10 получили - км. Как вы поняли в девайсе всего два счетчика пробега: полный и суточный. Опять же, количество счетчиков ограничено только моей фантазией (или ее отсутствием) и теми самыми 19200 тиками (по секрету скажу - тиков ушло примерно 1/3), можно конечно добавить счетчиков, прицепить часы на DS1307 и считать км за 1 час, скажем, или расстояние от работы до магазина с пивом, но зачем? Глава 4. Описание работы, или "а оно вам надо?" Основная часть схемы изображена на рис.1. И так, что у нас в наличии: таймеры: Т0, Т1, Т2 - отлично, аппаратный TWI - пригодится, 1 свободная нога от АЦП - вполне достаточно, есть еще ноги для организации внешних прерываний, ну еще куча всего - оно нам не пригодится, по крайней мере в этом проекте. Основную работу выполняет Т1, заполняет время между 2-мя нарастающими фронтами от приходящих импульсов датчика скорости, импульсами 1МГц (считать удобно: 1 импульс - 1 мкс) попутно подсчитывая их (импульсы от датчика). Работает он в режиме ICR, и использует 2-а прерывания, собственно Input Capture1 Interrupt Vector и Overflow1 Interrupt Vector, второй нужен только для расчета скоростей ниже 10 км/ч, к сожалению на таких скоростях Т1 успевает переполняться и не один раз, поэтому и переменная 3-х байтовая. На счетчике Т2, работающем в нормальном режиме, организовано формирование интервалов времени для динамического отображения информации на 7-ми сегментных индикаторах и вывода данных на LCD (здесь все понятно, пояснить нечего). Т0 - тоже, ничего особенного режим Fast PWM, управляет ключем регулирующим яркость свечения индикаторов. АЦП - меряет напругу на переменном резисторе R7, выравнивает результат влево, и записывает его в OCR0. Ну что еще? Гальваническая развязка входов МК от бортовой сети авто, так проще, ключ на элементах VT5,VT6 (если кому-то больше нравятся полевики, пожалуйста - можно и на полевике) нужен только для того, чтобы процик успел записать данные по километражу в 24С04, после выключения зажигания. Забыл пояснить Vп - цепь питания постоянно находящаяся под напряжение ботовой сети , Vз - цепь питания, на которой напряжение бортовой сети появляется после включения зажигания и соответственно пропадающее после отключения оного. Для эстетов на выводах PC3, PC4 организован вывод скорости до 200км/ч с дискретностью 2,5км/ч на линейку светодиодов (рис.3), всего-то: 10 - 74ALS164, 81- светодиод (один светится постоянно изображая "0км/ч), но это на любителя (кто надумает лепить сие безобразие - не забудьте поменять источник питании на более мощный, а если и яркость регулировать захотите - то и транзистор на ШИМе.) Питается все это безобразие от преобразователя (рис.2) на МС33063А, заменять на, что-то типа 7805, не рекомендую. Девайс кушает около 0,2А и на 7805 будет рассеиваться мощность около (14,5В-5В)*0,2А = 1,9Вт, многовато, греться будет как "собака", плюс еще тепловой режим под панелью авто, без радиатора не обойтись. Эпилог. Вот в принципе и все. Работка скромненькая, но я честно старался. Не пинайте слишком сильно - в конкурсе участвую первый раз, да и "писатель" я начинающий. С надеждой на вашу благосклонность. Прошивка МК. скачать
|
|
| |