Секундомер на Attiny2313: создание точного таймера для гоночных соревнований

Как создать автоматический секундомер для гонок на выносливость. Какие компоненты потребуются для сборки устройства на базе микроконтроллера Attiny2313. Как запрограммировать микроконтроллер для точного отсчета времени и автоматического управления.

Особенности секундомера на базе Attiny2313 для гоночных соревнований

Создание секундомера на микроконтроллере Attiny2313 позволяет получить точное и автоматизированное устройство для измерения времени на гоночных соревнованиях. Основные преимущества такого решения:

  • Высокая точность измерения времени благодаря использованию кварцевого резонатора
  • Автоматический запуск и остановка отсчета при включении/выключении зажигания автомобиля
  • Отображение общего времени гонки и времени текущего заезда
  • Низкое энергопотребление и автономная работа от батарей
  • Простота сборки на базе доступных компонентов
  • Возможность кастомизации под конкретные требования

Необходимые компоненты для сборки секундомера

Для создания секундомера на Attiny2313 потребуются следующие основные компоненты:


  • Микроконтроллер Attiny2313
  • Кварцевый резонатор на 8 МГц
  • LCD-дисплей 16×2 символов
  • Кнопки управления
  • Батарейный отсек на 3 AAA батарейки
  • Макетная плата и соединительные провода
  • Программатор для прошивки микроконтроллера

Дополнительно могут потребоваться резисторы, конденсаторы и другие вспомогательные компоненты в зависимости от конкретной схемы.

Схема подключения компонентов секундомера

Базовая схема подключения основных компонентов секундомера выглядит следующим образом:

  • LCD-дисплей подключается к портам PB0-PB5 микроконтроллера
  • Кнопки управления подключаются к портам PD2-PD5 через подтягивающие резисторы
  • Кварцевый резонатор подключается к выводам XTAL1 и XTAL2
  • Питание 3-5В подается на вывод VCC, земля на GND

Более детальная схема с номиналами компонентов зависит от конкретной реализации устройства.

Программирование микроконтроллера Attiny2313

Для программирования Attiny2313 можно использовать язык С и компилятор avr-gcc. Основные этапы разработки программы:

  1. Настройка тактирования от внешнего кварцевого резонатора
  2. Инициализация портов ввода-вывода для кнопок и дисплея
  3. Настройка и запуск таймера для отсчета времени
  4. Реализация логики работы секундомера (старт, стоп, сброс)
  5. Вывод информации на LCD-дисплей

Ключевые функции для реализации:


  • Обработка прерываний от таймера для отсчета времени
  • Опрос состояния кнопок управления
  • Форматирование и вывод времени на дисплей

Особенности измерения времени на микроконтроллере

Для точного измерения времени на Attiny2313 используется встроенный 16-битный таймер. Основные моменты:

  • Настройка предделителя таймера для получения нужной точности
  • Использование прерываний по переполнению таймера
  • Программный счетчик для отсчета секунд, минут, часов
  • Коррекция ухода времени при длительной работе

При тактовой частоте 8 МГц можно обеспечить точность измерения времени до миллисекунд.

Подключение секундомера к бортовой сети автомобиля

Для автоматизации работы секундомера его необходимо подключить к бортовой сети автомобиля:

  • Питание устройства подключается через реле к цепи зажигания
  • Для защиты от помех используются стабилизаторы напряжения
  • Сигнал о включении зажигания подается на вход микроконтроллера
  • Корпус устройства заземляется на кузов автомобиля

Это обеспечит автоматический запуск секундомера при старте двигателя и его остановку при выключении зажигания.


Тестирование и калибровка секундомера

После сборки устройства необходимо выполнить его тестирование и калибровку:

  1. Проверка запуска и остановки отсчета времени
  2. Тестирование работы кнопок управления
  3. Проверка точности хода часов в течение длительного времени
  4. Калибровка частоты кварцевого резонатора при необходимости
  5. Тестирование в реальных условиях на автомобиле

При необходимости в программу микроконтроллера вносятся корректировки для повышения точности измерения времени.

Установка секундомера в автомобиль

При установке секундомера в гоночный автомобиль следует учитывать несколько важных моментов:

  • Размещение дисплея в поле зрения водителя
  • Надежное крепление устройства для защиты от вибраций
  • Защита электроники от влаги и пыли
  • Обеспечение удобного доступа к кнопкам управления
  • Прокладка проводов питания с учетом требований безопасности

Корпус устройства должен быть изготовлен из прочных материалов и надежно зафиксирован в салоне автомобиля.


Часы + термометр — Два выходных дня

Установка показаний времени на электронных часах – занятие, не отнимающее много времени, но, тем не менее, хотелось бы обойтись без этой процедуры.  В поисках конструкции электронных часов, работающих по принципу «Включил и забыл», я обнаружил интернет-сайт, на котором автор опубликовал конструкцию электронных часов с синхронизацией времени при помощи спутниковой системы навигации (GPS) и повторил её, добавив уличный термометр. 

Рисунок 1 —  Внешний вид устройства

           Функции часов:

  • счёт и отображение текущего времени;
  • ежечасная синхронизация текущего времени с временем спутника;
  • установка часового пояса;
  • режим «Будильник»;
  • режим «Секундомер».

Принцип работы часов

Основу устройства составляет микроконтроллер Atmega8-16PI, работающий под управлением программы, которая реализует все вышеупомянутые функции часов.

Приёмником спутниковых сигналов является GPS модуль «NEO-6M» с выносной антенной. Четырёхразрядный светодиодный индикатор в основном режиме отображает текущее время, минуты и секунды в режиме секундомера, а при настройке — номер часового пояса, индикацию включения/выключения и время установки будильника.

Звуковой излучатель BF1 служит для подачи сигнала будильника, а светодиоды HL1 и HL2 показывают процесс поиска информации со спутника. Кнопки SB1-SB3 служат для установки часового пояса, включения режима «Секундомер» и установки времени срабатывания будильника.

Рисунок 2 — Принципиальная электрическая схема часов 

При подаче напряжения питания микроконтроллер Atmega8-16PI инициализирует GPS модуль «NEO-6M», который, в свою очередь, ожидает поступления с любого найденного спутника информационной строки, содержащей текущее время, соответствующее нулевому часовому поясу. Этот процесс сопровождается коротким звуковым сигналом и появлением бегущей «змейки» в разрядах индикатора.

Для достоверности информационная строка принимается пять раз, после чего микроконтроллер запускает счётчик секунд, «змейка» исчезает и начинается отображение текущего времени.

Последующая синхронизация времени часов с временем спутника осуществляется каждый час и сопровождается кратковременным свечением светодиодов «SAT» и «GPS». Процесс синхронизации происходит в фоновом режиме и не влияет на ход часов. Если по каким-то причинам фоновая синхронизация времени не произошла, часы не остановятся, но точность показаний будет хуже.

Назначение кнопок управления

Кнопка «UTC«. Как уже упоминалось, при первичной синхронизации часы принимают время нулевого часового пояса. При нажатии этой кнопки на индикаторе отобразится «U — — -«, что значит переход в меню выбора часового пояса, а при отпускании — отобразится «U 3» (часовой пояс установленный по умолчанию). Далее, нажатием этой кнопки устанавливают необходимый часовой пояс в диапазоне минус 12 плюс 12.

Установка часового пояса осуществляется «по кольцу», с шагом «+1».

Кнопка «Alarm clock» или «Будильник». При нажатии этой кнопки произойдёт переход в меню установки будильника, при этом на индикаторе отобразится «A-.—«. После отпускания, если будильник выключен, на индикаторе появятся прочерки, а если будильник был включен, то отобразится время его срабатывания. Чтобы полностью выключить или включить будильник, нужно нажать кнопку «UTC», находясь в меню установки будильника.

Последующие нажатия кнопки «Alarm clock» и нажатия кнопки «Sec» в меню установки будильника позволяют установить будильник на нужное время, часы и минуты, соответственно. Установка возможна только «вперёд. При достижении числа «24» в часах и «60» в минутах происходит сброс показаний в «0» часов и минут соответственно.

При срабатывании будильника звуковой сигнал можно отключить до следующего срабатывания, которое произойдёт через сутки, нажатием на любую из трёх кнопок. Выход из меню установки будильника происходит автоматически, через 5 секунд после последнего нажатия кнопки.

Кнопка «Sec» или «Секундомер». Нажатие данной кнопки переведёт часы в режим секундомера, при этом на индикаторе отобразится «C-.—«, а при отпускании кнопки — начнётся отсчёт секунд. Максимальное время — 23:59:57. При превышении этого значения произойдёт автоматический переход в режим часов. До одного часа в 1 и 2 разрядах отображаются минуты секундомера, а в 3 и 4 разрядах отображаются секунды, после часа — часы и минуты.

Выход из режима секундомера осуществляется нажатием на любую из трёх кнопок.

          Функции термометра:

  • диапазон измерения температуры от — 55 до +125°C;
  • точность измерения составляет ± 0,5°C в диапазоне от — 10 до +85°C и ± 2°C на остальных участках диапазона измерения температуры;
  • проверка исправности линии связи термометра с датчиком;
  • проверка контрольной суммы информации, принимаемой с датчика.

Принцип работы термометра

Основу термометра составляет микроконтроллер ATTINY2313, работающий под управлением программы, которая реализует все вышеупомянутые функции термометра. Датчиком температуры служит микросхема DS18B20. Значение измеряемой температуры выводится на трёхразрядный светодиодный индикатор.

Рисунок 3 — Принципиальная электрическая схема термометра

При подаче напряжения питания микроконтроллер ATTINY2313 в течении одной секунды тестирует индикатор, засвечивая все его сегменты, после чего переходит к проверке исправности датчика и линии связи с датчиком.

При обрыве или коротком замыкании линии связи на индикаторе отображаются прочерки «—«. Далее производится проверка контрольной суммы информации, принимаемой с датчика. При ошибке контрольной суммы (CRC) на индикаторе появится сообщение «crc».

Если все проверки завершены успешно, то микроконтроллер перейдёт к чтению информации с датчика температуры и отправит измеренное значение температуры на индикатор. В диапазоне измерения от — 9 до +99°C в третьем разряде отображается символ «°».

Каких либо органов управления термометр не имеет и в настройке не нуждается, Диод VD1 предназначен для защиты от переполюсовки напряжения питания.

Конструкция устройства и применяемые радиоэлементы

В связи с единственностью изготовления печатные платы для монтажа радиоэлементов не разрабатывались. Все радиоэлементы установлены на макетных платах и соединены между собою собственными выводами и отрезками провода типа МГТФ при помощи пайки.

Считаю, что разработка и изготовление печатных плат устройств категории «Для себя» — это лишняя трата времени. Платы установлены на эбонитовых стоечках на дно корпуса из органического стекла толщиной 5 мм и крепятся винтами М2.

Рисунок 4 — Макетная плата

 

Рисунок 5 — Вид со стороны монтажа

 

Рисунок 6 — Вид со стороны радиоэлементов

 

Рисунок 7 — Индикаторы

 

Рисунок 8 — Плата кнопок и модуля GPS

 

Рисунок 9 — Вид со стороны гнезда питания

 

Рисунок 10 — Модуль «NEO-6M»

Плата кнопок управления использована готовая от отслужившего свой век электронного оборудования. Микроконтроллеры Atmega8-16PI и ATTINY2313 установлены на панельки. Применены индикаторы красного свечения с общим анодом размером символа 0.56 » для часов и 0.36 » для термометра. GPS модуль «NEO-6M» необходимо приобретать с выносной антенной. Без внешней антенны приём информации со спутника не происходит, хотя, по утверждению разработчика часов, в модуле имеется внутренняя антенна. Звукоизлучатель BF1 со встроенным генератором, напряжение питания на устройство подаётся через гнездо типа micro USB, расположенное на отдельной покупной плате.

Все вышеупомянутые комплектующие радиоэлементы, макетные платы, плата с гнездом питания приобретены в интернет-магазине Aliexpress. Конкретных ссылок на товар не даю, ибо они не долговечны, да и цена у разных продавцов отличается. Остальные радиоэлементы, резисторы, конденсаторы, диоды, светодиоды, транзисторы, кварцевые резонаторы в пояснениях не нуждаются.

   Часы+термометр помещены в корпус склеенный из органического стекла толщиной 3 мм и выкрашенный чёрной нитроэмалью. Передняя часть корпуса изготовлена из органического стекла оранжевого цвета. Для уменьшения яркости индикаторов добавлен светофильтр, вырезанный из пластиковой бутылки.

 

Рисунок 11 — Готовое устройство

 

Рисунок 12 — Элементы корпуса

 

Рисунок 13 — Светофильтр из пивной бутылки

 

Рисунок 14 — Задняя стенка устройства

В качестве источника питания применено зарядное устройство от сотового телефона с выходным напряжением 5±0,5В. и выходным током 0,55А., снабжённое штеккером типа micro USB. Также в источник питания входит устройство защиты от превышения напряжения. При увеличении выходного напряжения зарядного устройства выше верхнего предела открывается транзистор VT1, в результате чего перегорает плавкий предохранитель FU1, обесточивая часы+термометр. Радиоэлементы платы защиты смонтированы на макетной плате и помещены во всем знакомую упаковку.

 

Рисунок 15 — Принципиальная электрическая схема устройства защиты

  

Рисунок 16 — Источник питания устройства

 

Рисунок 17 — Устройство защиты от превышения напряжения

 

Рисунок 18 — Ток потребления устройства

 

Рисунок 19 — Часы+термометр+источник питания

Датчик температуры — микросхема DS18B20, с подпаянным к её выводам трёхпроводным кабелем, помещена в стеклянную трубку, заполненную белым герметиком, после высыхания которого обеспечивается защита микросхемы от атмосферных осадков. Датчик закреплён при помощи магнита на отливе за окном. Другой конец кабеля снабжён трёхконтактным разъёмом типа TRS (jack) 3,5мм, который вставляется в соответствующее гнездо на задней стенке устройства.

 

Рисунок 20 — Расположение датчика температуры за окном

 

Рисунок 21 — Подключение датчика температуры

 

Рисунок 22 — Расположение устройства в комнате

 

Рисунок 23 — Расположение устройства в комнате

Наладка правильно собранных схем часов и термометра не потребовалась. Оба устройства заработали сразу после подачи напряжения питания. Были опасения, что в предполагаемом месте размещения в квартире (2 метра от оконного стекла и 0,5 метра в сторону) приём информации со спутника будет затруднён, но всё обошлось.

После подачи напряжения питания «змейка» на индикаторе наблюдалась всего несколько секунд, после чего часы перешли в режим отображения текущего времени, что и делают в течение последних восьми месяцев с высокой точностью и без моего вмешательства.

   Управляющая программа для микроконтроллера часов Atmega8-16PI

   Управляющая программа для микроконтроллера термометра ATTINY2313

   Резервные ссылки

   Atmega8-16PI

   ATTINY2313

   Индикаторы с общим анодом

 

 

 

Приставка — секундомер к микрокалькулятору

Несложная доработка позволяет превратить микрокалькулятор БЗ-23 в секундомер-таймер. Функции калькулятора при этом сохраняются, и его можно использовать по прямому назначению. Схема соединения дополнительных деталей, позволяющих отсчитывать секунды и включать то или иное устройство через заданные промежутки времени, изображена ниже.

Доработка микрокалькулятора сводится к установке на его корпусе разъема XI и соединению исходных деталей микрокалькулятора с контактами разъема согласно схеме. В этом устройстве тактовой частотой служит частота сети, поэтому точность отсчета времени невелика. При необходимости получить более точный отсчет времени потребуется отдельный кварцевый генератор.

Схема приставки

Переменное напряжение 4 В с частотой сетевого напряжения поступает на выпрямитель, собранный на диодах V1—V4. С выпрямителя пульсирующее напряжение с удвоенной частотой сети поступает на вход триггера Шмитта, выполненного на элементах D1.1, D1.2. С его выхода отрицательные импульсы с частотой следования 100 Гц воздействуют на вход счетчика D2.

Рис. 1. Приставка — секундомер к микрокалькулятору.

В положении Пуск переключателя S1 счетчик считает эти импульсы. На его выходе 12 формируются импульсы с частотой следования 10 Гц и скважностью, равной 2, которые через инвертор D1.3 управляют реле К1.

Для работы устройства в режиме секундомера нужно в положении Стоп переключателя S1 набрать на клавиатуре калькулятора «+» и «0,1». Тогда в положении Пуск переключателя при каждом срабатывании реле К1 микрокалькулятор выполняет операцию сложения, отсчитывая время через 0,1 .с.

При работе устройства в режиме таймера в положении Стоп переключателя S1 необходимо набрать на клавиатуре нужное время выдержки в секундах, а затем «—» и «0, 1». После установки переключателя S1 в положение Пуск микрокалькулятор выполняет операцию вычитания, а его табло индицирует оставшееся время выдержки.

После показания, равного нулю, на индикаторе появится знак «—». При этом совпадают отрицательные импульсы на контакте 5 и положительные на контакте 6 разъема X1. На выход элемента D3.2 пройдут отрицательные импульсы тактовой частоты (около 300 Гц), формируемые в микрокалькуляторе.

Первый же тактовый импульс вызовет переключение RS-триггера на элементах D3.3, D3.4. При этом на вход элемента D1.4 поступит уровень «1» и сработает реле К2. Его контакты коммутируют цепь нагрузки, например, лампы фотоувеличителя, звукового сигнализатора и т. п. Такое состояние устройства сохранится до тех пор, пока на табло микрокалькулятора индицируется знак «—».

Если теперь установить перёключатель S1 в положение Стоп, набрать на микрокалькуляторе новое значение выдержки и снова включить устройство переключателем S1, RS-триггер возвратится в нулевое состояние отрицательным импульсом, сформированным дифференцирующей цепочкой R5, С4, R6. Это приведет к отпусканию реле К2 и новой выдержке времени. Конденсаторы С2, С3 гасят короткие импульсы, возникающие в результате переходных процессов в микрокалькуляторе.

Максимальный интервал времени, отсчитываемый секундомером, определяется емкостью индикаторного табло и для микрокалькулятора БЗ-23 равен 10 с. В Секундомере-таймере можно использовать и микросхемы серии К133; диоды —любые, выпрямительные; реле К1 и К2 — типа РЭС-55 (паспорт РС4. 569.603П2).

Детали

Для питания устройства можно использовать любой трансформатор с напряжением на вторичной обмотке 4 В и током нагрузки не менее 0,15 А. Можно применить имеющийся в продаже блок БП2-1 для питания микрокалькуляторов, предварительно удалив из него конденсатор фильтра. При этом выпрямительный мост V1—V4 в устройстве не нужен.

Источник: Борноволоков Э. П., Фролов В. В. — Радиолюбительские схемы.

НАСТРОЙКА ТАЙМЕРА0

Действие

Настройка ТАЙМЕР0.

 

 

Синтаксис ТАЙМЕР, ПРЕДВАРИТЕЛЬНАЯ ШКАЛА= 1|8|64|256|1024 [ ,КОНФИГУРАЦИЯ=ИМЯ]

КОНФИГУРАЦИЯ ТАЙМЕР2 = ТАЙМЕР | PWM , ASYNC=ON |OFF,PRESCALE = 1 | 8 | 32 | 64 | 128 | 256 | 1024 ,СРАВНИТЬ = ОЧИСТИТЬ | НАБОР | ПЕРЕКЛЮЧАТЬ | ОТКЛЮЧИТЬ, ШИМ = ВКЛ | ВЫКЛ, COMPARE_PWM = CLEAR_UP| CLEAR_DOWN | ОТКЛЮЧИТЬ, CLEAR_TIMER = 1|0 [КОНФИГУРАЦИЯ=ИМЯ]

 

 

Примечания

TIMER0 — это 8-битный счетчик. См. аппаратное описание TIMER0.

 

При настройке в качестве СЧЕТЧИКА:

EDGE

Вы можете выбрать, будет ли ТАЙМЕР считать по заднему или по нарастающему фронту.

 

 

При настройке в качестве ТАЙМЕРА:

ПРЕДВАРИТЕЛЬНЫЙ

В этом случае ТАЙМЕР подключен к системным часам. С помощью этого параметра вы можете выбрать деление системных часов.

 

Допустимые значения: 1, 8, 64, 256 или 1024

 

Обратите внимание, что некоторые новые микросхемы AVR имеют другие значения предварительной шкалы. Вы можете использовать их.

 

КОНФИГУРАЦИЯ необязательна. Когда вы добавляете configuration=mysetting, вы можете использовать эту настройку при запуске таймера: START TIMER0, mysetting

Если у вас есть несколько настроек, вы можете запустить таймер с этими разными настройками.

 

 

Обратите внимание, что Справка была написана с учетом таймеров AT90S2313 и AT90S8515.

 

 

При использовании оператора CONFIG TIMER0 режим сохраняется компилятором и устанавливается регистр TCCRO.

При использовании оператора STOP TIMER0 TIMER останавливается.

При использовании оператора START TIMER0 в регистр TIMER TCCR0 загружается последнее значение, сконфигурированное с помощью оператора CONFIG TIMER0.

 

 

Поэтому, прежде чем использовать операторы START и STOP TIMER0, сначала используйте оператор CONFIG.

 

 

Пример

‘——————————————————- —————————————————

‘название                   : timer0.bas

‘авторские права                : (c) 1995-2021, MCS Electronics

‘назначение                  : показывает, как использовать операторы, связанные с TIMER0

‘micro                    : 90S2313

‘подходит для демонстрации          : да

‘требуется коммерческое дополнение  : нет

‘——————————————— ————————————————— ———

 

$regfile = «2313def. dat»                                                              ‘ используемая кварцевая частота

$baud = 19200                                                        0003

$hwstack = 32                                                                  ‘ по умолчанию используется 10 для стека ПО

$framesize = 40                                             ‘ по умолчанию используется 40 для пространства кадра

  90 003

 

‘Первый вы должны настроить таймер для работы в качестве счетчика или таймера

‘Давайте настроим его как СЧЕТЧИК сейчас

‘Вы также должны указать, будет ли учитываться нарастающий или спадающий фронт

 

Config Timer0 = Counter , Edge = Rising

‘Config Timer0 = Counter , Edge = down счетчик по заднему фронту

 

‘Чтобы получить/установить значение таймера, обратитесь к регистру таймера/счетчика

‘сбросьте его на 0

Tcnt0 = 0

 

Do

Печать Tcnt0

Цикл до Tcnt0 >= 10

‘когда подсчитано 10 импульсов, цикл завершается

‘или используйте специальную переменную TIMER0

Timer0 = 0

 

 

‘Теперь настройте его как ТАЙМЕР

‘ТАЙМЕР может иметь системные часы в качестве вход или системные часы, разделенные

‘на 8,64,256 или 1024

‘Параметр предварительной шкалы, кроме 1,8,64,256 или 1024

Config Timer0 = Timer , Prescale = 1

 

9 0002 ‘ТАЙМЕР теперь запускается автоматически

‘Вы можете ОСТАНОВИТЬ таймер с помощью следующего оператора:

Stop Timer0

 

‘Теперь таймер остановлен

‘Чтобы снова ЗАПУСТИТЬ его в последнем сконфигурированном режиме, используйте:

Start Timer0

 

‘Снова вы можете получить доступ к значению с помощью регистра tcnt0

Print Tcnt0

‘или

Print Timer0

‘когда таймер переполняется, устанавливается флаг TOV0 в регистре TIFR

‘Вы можете использовать это для выполнения ан ISR

‘Для сброса флага вручную в режиме без ISR необходимо записать 1 в битовую позицию

‘в TIFR:

Set Tifr. 1

 

 

 

9000 2 ‘Следующий код показывает, как использовать TIMER0 в режиме прерывания

‘Код отмечен знаком ‘(  en ‘)

 

‘(

 

‘Настройте таймер на использование часов, разделенных на 1024

Конфигурация Timer0 = Таймер, Предварительная шкала = 1024

 

‘Определить обработчик ISR

On Ovf0 Tim0_isr

‘вы также можете использовать TIMER0 для OVF0, это то же самое

 

                            ‘ разрешить прерывание по таймеру

Разрешить прерывания                                           ‘разрешить прерывание

‘здесь идет ваша программа

Цикл

 

‘следующий код выполняется, когда таймер переворачивает

Tim0_isr:

Печать «*»;

Возврат

 

‘)

Конец

Гоночные часы – Blondihacks

Автоматический таймер для гонок на выносливость

My мы с сумасшедшими друзьями регулярно соревнуемся в чем-то под названием The 24 Hours Of LeMons. Это несколько насмешливая форма малобюджетных гонок на выносливость, включающая дешевые автомобили, героический ремонт, дурацкие темы и много серьезного вождения. Мы The B-Team, и наша текущая тема — «Убить Фила». Тема — это своего рода внутренняя шутка, от которой я избавлю вас от подробностей. В любом случае, LeMons — это отличный способ поучаствовать в настоящих гонках на выносливость по очень низкой цене в веселой атмосфере. Его назвали «Горящий человек с каркасом безопасности», что вполне уместно.

За последние пару лет мы участвовали в дюжине гонок, и одна из вещей, которую мы хотели, — это таймер в машине. Если вы не знакомы с гонками на выносливость, формат прост. Автомобили непрерывно мчатся по трассе в течение установленного периода времени (обычно 12 или 24 часа), и цель состоит в том, чтобы пройти как можно больше кругов за это время. Каждая команда состоит из четырех или около того водителей, которые берут смену продолжительностью до четырех часов (или один бак топлива, в зависимости от того, что наступит раньше). Когда водительский стаж заканчивается, он приезжает, и мы проводим «пит-стоп», при котором мы заправляемся, меняем водителей и освежаем машину по мере необходимости и как можно быстрее. Быстрые пит-стопы имеют решающее значение, потому что, пока ваша машина находится в пит-стопе, все остальные зарабатывают больше кругов.

Гонки на выносливость — это очень тяжелая работа. Представьте, что вы бежите марафон, выполняя деление в римские цифры. Когда вы едете в машине, важно расслабиться и двигаться в своем темпе. С этой целью приятно знать, как далеко вы продвинулись в своем отрезке и как далеко в гонке находится команда. С таймером в машине водитель может получить эту информацию в любое время, не беспокоя радиста (у которого и так есть о чем беспокоиться).

 

Итак, целью этого проекта было создание таймера, показывающего прошедшее время для этого сеанса и общее время дня. Это также должно стоить очень мало, потому что это LeMons, и все дело в том, чтобы делать вещи по дешевке. Вы можете сказать, что мы могли бы сделать это с помощью секундомера в машине, но проблема в том, что кому-то (механику или гонщику) нужно будет вручную сбрасывать его во время пит-стопов. Эти гонки буквально выигрываются и проигрываются по сумме секунд, проведенных в пит-стопе, поэтому любая дополнительная маленькая задача в контрольном списке пит-стопов будет серьезным бременем для производительности команды.

Необходимо, чтобы часы запускались автоматически при включении зажигания автомобиля (отмечая начало отрезка) и автоматически сбрасывались при остановке автомобиля (отмечая конец отрезка). Автомобиль всегда выключен во время пит-стопов, так что это удобный способ ограничить время гонок. Часы также должны работать от собственного источника питания, поскольку вся система питания автомобиля отключается во время пит-стопов в целях безопасности. В гоночных автомобилях есть нечто, называемое «выключателем», представляющим собой большой красный рычаг, который срабатывает во время заправки. Этот рычаг отключает все источники электричества во всей машине. Часы должны работать от батареек, чтобы не сбрасываться на полночь каждый раз, когда нажимается аварийный выключатель.

 

Коммерческие решения этой проблемы очень дороги — исчисляются сотнями долларов. Однако я нашел эти часы с двойным временем и секундомером за 20 долларов в Интернете:

 

Дешево! Кстати, около дюжины компаний производят точно такие же часы (те же функции, такое же расположение кнопок и т. д.), но их цена варьируется от 20 до 100 долларов. Поищите на Амазоне, и вы поймете, что я имею в виду. Очевидно, что все они покупают одну и ту же системную плату у какой-то азиатской компании и облепляют ее собственным пластиком. Остальное маркетинг. Зная это, вы можете с уверенностью купить самый дешевый, потому что внутренности идентичны, платите ли вы 20 или 100 долларов.

Эти часы были очень близки к тому, что мне было нужно — время суток сверху и секундомер снизу, все на одном дисплее с огромными числами. У него даже есть кнопки большого размера, которыми можно было бы управлять в перчатках Nomex (например, при вождении или заправке).

Все, что нужно было, это автоматизировать его. Время взлома!

Я начал с того, что разобрал часы, чтобы посмотреть, с чем мы здесь работаем. Это очень просто, как вы можете себе представить. Я был очень приятно удивлен, обнаружив, что все это скреплено винтами. Никакого клея или пластиковой сварки нигде. Ура! Как видите, на откидной нижней части есть небольшая плата для кнопок. Это выглядит как простой способ. Я могу просто управлять этими контактными площадками с помощью своей собственной схемы, получая таким образом полный контроль над таймером. Я проследил контактные площадки, чтобы выяснить, какая из них какая кнопка, и припаял небольшой жгут проводов, чтобы получить доступ. Мне нужен доступ к Start/Stop и Clear, чтобы дать устройству желаемое поведение. К счастью, схемы кодирования элементов управления нет, а на печатной плате даже есть маркировка. Спасибо, таинственный китайский системный поставщик, за создание устройства, которое можно взломать. Также обратите внимание, что я оставил оригинальные кнопки нетронутыми, чтобы часы можно было использовать вручную, если это необходимо. Я направил свою новую подвеску в удобное место и приклеил ее суперклеем для снятия напряжения. Я немного надрезал корпус ножом, чтобы обеспечить выход проводов. Готово! Одни двойные часы/секундомер с внешними функциями! Замыкание желтого или красного провода на оранжевый активирует Start/Stop и Clear соответственно.

Теперь, когда я знал, что могу управлять часами так, как мне нужно, пришло время разработать схему, которая действительно это сделает! Я решил управлять кнопками с помощью небольших DIP-реле, которые у меня были. Я купил их кучу в магазине излишков некоторое время назад, и они действительно хороши. Мне нравится, что схема управления будет физически изолирована от часов. Поскольку две цепи находятся на своих собственных землях и имеют собственные уровни мощности, это кажется хорошей идеей.

Операционная последовательность выглядит следующим образом: предполагается, что машина выехала на трассу, и таймер будет работать. Водитель заедет в бокс по окончании сессии. Когда они это сделают, они заглушат машину. Мне нужно обнаружить это, а затем остановить таймер. Когда следующий водитель приедет и будет готов к работе, он заведет машину. Мне нужно обнаружить это и отреагировать, сбросив таймер и запустив его снова.

Вот что я придумал для этого:

Он основан на ATTiny13A, управляющем парой реле (по одному на каждую кнопку часов). Слева находится регулируемый источник питания для управления логикой. Использование микроконтроллера только для управления простой синхронизированной последовательностью состояний реле кажется огромным излишеством. Тем не менее, чертовы вещи сейчас настолько дешевы, почему бы и нет? За пару долларов и горстку кода у меня есть то, что потребовало бы дискретной логики на несколько долларов и еще много часов разработки. Тем не менее, кажется странным использовать чип, который мощнее, чем первые три компьютера, которые у меня были, только для того, чтобы переключать несколько реле в заданной последовательности.

Вот схематический файл Eagle, если интересно. Как видите, логика расходует мощность автомобиля. Часы работают на батареях, чтобы защитить их от выключателя, но я хотел, чтобы это дополнительное устройство не требовало обслуживания. На одну ошибку меньше — это всегда плюс в гонках на выносливость.

Реле управляются напрямую от выходных контактов MCU, потому что они потребляют очень мало тока. Я поставил туда диоды, чтобы защитить микроконтроллер от индуктивной обратной связи. Напряжение зажигания автомобиля 12 В подается на делитель напряжения, чтобы снизить его до 5 В, а затем на транзистор, который переводит входной контакт в низкий уровень. Это сообщит MCU, когда машина работает и когда она остановилась.

После взлома часов я собрал логику на макетной плате и использовал ее для разработки кода для микроконтроллера. Все идет нормально!

Код на MCU тривиален:

[iframe_loader src=”http://pastebin.com/embed_iframe.php?i=KNFhKXq6″ height=”600″ scrolling=”yes” marginheight=”50″]

Если вы хотите использовать этот код, вот исходный код и скомпилированный двоичный файл. Это для ATTiny13A.

В коде следует отметить трехсекундную задержку в начале. Запуск автомобиля похож на электрический ураган. Эта задержка перед началом логической последовательности должна дать автомобилю время для запуска и время для того, чтобы электрическая система успокоилась. Вы также увидите небольшие задержки между импульсами реле. Часы — довольно примитивная штука, они не справляются с очень быстрыми нажатиями кнопок. Последовательность реле должна быть медленной, чтобы не перегружать логику дешевых часов.

Так как здесь важна надежность, была заказана протравленная печатная плата:

Вот файл печатной платы Eagle и ацетат трасс, если вы хотите выгравировать свою собственную. Я сам травил плату, используя этот процесс, с которым мне очень повезло в прошлом.

Вот моя травленая доска. Хорошо выглядишь! Ну-ну… почти. Немного увлёкся, тыкая в плату зубочисткой, пока она травилась. Мне удалось сломать пару следов, которые потребовали не очень красивого ремонта. Что я могу сказать — у меня было всего три вечера, чтобы собрать это, поэтому нет времени на любезности. Вот плата, все собрано и готово для микроконтроллера. Я уже запрограммировал ATTiny13A, пока дорабатывал схему на макетной плате, так что она была готова к работе.0002 Схема построена, микроконтроллер запрограммирован, так что мы готовы к работе, верно?

Подключил часы, подал питание, смоделировал зажигание автомобиля от внешнего источника 12В и…. нада. Я проверил выходы микроконтроллера и убедился, что код работает правильно. Он проходил через последовательность импульсов и правильно реагировал на входной транзистор. Это были просто реле, которые не срабатывали, несмотря на получение правильных сигналов от MCU.

 

Небольшая трассировка измерителем выявила проблему:

 

В спешке (в три вечера!) я неправильно подключил катушки реле на схеме в Eagle. Эти реле имеют поляризованные катушки. Подключение их в обратном направлении на схеме обычно было бы безобидной канцелярской ошибкой. Однако когда эта схема затем используется для создания печатной платы, начинается хаос. Упс. Я перерезал пару дорожек, установил несколько перемычек, чтобы поменять полярность на катушках, и снова был в деле. Я установил схему управления в маленькую пластиковую коробку, которая досталась из машины. Наша гоночная машина — переделанная 1987 БМВ 325е. Одна из первых вещей, которую вы делаете, превращая трамвай в гоночный автомобиль, — это удаляете все, что не является необходимым для быстрого движения автомобиля вперед. В этом маленьком черном ящике находилась плата управления силовыми замками или что-то в этом роде. Он хорошо подходил для моей печатной платы и имел монтажные отверстия, которые позволяли мне прикрутить его к задней части часов. Три коннектора, выходящие из разъема (также снятого с автомобиля), идут к массе шасси, основному питанию и питанию зажигания. Последний используется только для определения момента запуска и остановки автомобиля.

Вот небольшое видео работы устройства.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *