Автомобильные часы

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




Часы — больно банально, будем творить супер часы=) В основе лежит МК ATmega88P-32pin, эта та-же 8 Мега только у ней имеется еще два АЦП. Для начала сделаем наши часы на специальной микросхеме DS1307. Это микросхема представляет собой часы реального времени с календарём до 2100года, имеестя учет високосного года. Точность хода +/-1 секунда в месяц при условии что емкость кварца 2.5pF (Из часов) и правильно разведена плата(нужно вокруг кварца по периметру провести дорожку и её посадить на корпус, более подробная информация имеется в Даташите). Еще один плюс — они не сбиваются при отключении питания, т.к. имеют резервное питание от батарейки напряжением 3V. Если напряжение пропадает она сама переходит на режим питания от батарейки, одной батарейки хватает на 10 лет. С такой точностью нам и кнопки не нужны. Но как же установить часы первый раз? Легко. Сначала в специальной прошивке ставим сегодняшнюю дату и время, но на минуты три побольше. Компилируем. Прошиваем. И в тот момент когда установленное время совпадает с реальным — включаем питание МК и все, время установлено. Далее зашиваем снова МК нормальной прошивкой и пользуемся.

Кликабельно.


После недолгих раздумий — было решено что нужен вольтметр и термометр. Вольтметр сделан на внутреннем 10 битном АЦП с делителем на резисторах. Термометр сделан на цифровом датчике температуры DS18B20.
Немного о конструкции. Все выполнено на двух платах — плате индикации и плате МК, расположены в виде «бутерброда».



Индикаторы семисегментные светодиодные. Стабилизатор — 7805. Конденсаторы — танталовые. Резисторы в цепи катода индикаторов у меня стоят на 220 Ом, хотя их можно не ставить. Кнопка — переключение режимов дата, время/температура, напряжение. Вход зажигание нужен для того что бы часы светились только во время включенного зажигания и последующие 5 минут после его выключения. Когда часы «потухнут» для пробуждения достаточно нажать кнопку, и они проснутся еще на 5 минут.
Fuse выставлены на тактирование МК от внутреннего генератора на частоту 8МГц. Осталось не использовано еще два входа АЦП, так что можно контролировать напряжение еще в двух точках (где мерить — подскажет фантазия). Батарейка используется от материнской платы ПК. Термометр выносится под бампер или устанавливается после воздушного фильтра(рядом с ДМРВ). Разводку печатной платы не привожу, т.к. разрабатывалась под конкретные индикаторы, которые Вы скорее всего не достанете уже(раритет).



Лицевое стекло было заменено на новое орг.стекло, на которое с внутренней стороны была наклеена обычная тонировка. Плюсы этого «заклеивания» — не видно внутренностей и цифры видны в любую погоду, даже когда солнце падает прямо на часы.



P.S. В последствии добавлен расход на 100км и в час, напряжение, температура двигателя, скорость.
Так же сделана установка часов(все той же одной кнопкой). Алгоритм установки времени немного трудноват, но разобратся можно.



В прикрепленном архиве — исходник и оригиналы схем, может кому нибудь пригодится.
  • +6
  • 01 марта 2012, 22:50
  • AtXmega
  • 1
Файлы в топике: VAZ.zip

Комментарии (69)

RSS свернуть / развернуть
Неплохой девайс у вас получился.
P.S. В последствии добавлен расход на 100км и в час, напряжение, температура двигателя, скорость.
Зря скромничаете. Это уже не автомобильные часы, а вполне себе «бортовой компьютер » :)
0
Зачётный девайс получился!
Но всё же думаю что кнопки нужны, DS1307 любит баловатся, собирал на ней неодни часы и невсегда она ведёт себя хорошо хоть и разведено всё по рекомендациям и керамики хватает возле неё.
Сложно ли вместо датчика скорости добавить две кнопки (+часы и + минуты)? Сам я писать неумею поэтому и прошу, девайс бы пригодился. Спасибо
0
Не забывайте — у нас МК же! =) А значит вполне можно и 1 кнокпой обойтись! А она есть!
Например: при обычном нажатии меняем режимы по кругу.
При удержании, скажем 2 секунды — переходим в режим установки часов. При этом мигают часы — нажимание на кнопку приводит к увеличению часа на 1, таким образом ставим час нужный, снова держим кнопку 2 секунды — переходим к редактированию секунд, ну и, думаю, идея ясна.
На многих велокомпьютерах одной кнопкой обходятся ;)

Автор — молодец! Микроконтроллер тоже молодец — как же все-таки много полезного можно на их основе собрать.
0
А значит вполне можно и 1 кнокпой обойтись!
Именно так тут и сделано.

Микроконтроллер тут работает на 100% =) (Ни свободной ножки, ни свободных 100 байт, ни свободных тиков)
0
Но всё же думаю что кнопки нужны
Забыл в статью дописать что функция установка времени в последствии была добавлена.
0
Ммм, что-то я упустил, что вы «писать» (понимаю — программировать) не умеете? Тогда да, тогда только если автор докодит, ну или может кто-то еще добрый возьмется. В любом случае одной кнопкой можно много дел наворотить :)
0
Дописать в статью=)
Процесс установки таков: Нажимаем кнопку и держим 3 секунды, загорается точка около часов и последующим удержанием инкрементируются часы, при истечении 20 секунд загорается точка около минут, и при удержинии кнопки прибавляются минуты.
0
Ммм, а вот на предпоследней фото — это там оно и есть «новое орг.стекло с тонировкой»? Просто как-то смотрится странновато — уголки какие-то отклеились чтоли? Я к чему спрашиваю, сам хочу кое-что из оргстекла поклеить, мне интересно посмотреть, как оно смотрится, тем более в тонировке.
0
На предпоследнем — это только индикаторы с заводской защитной пленкой, которая отдирается.
А оргстекла на предпоследней фотке нет. Оно накладывается на индикаторы «следующим слоем»
0
Тогда можно фото потом будет, когда доберетесь до него, прямо в машине можно (покрупнее только), так, чтобы видно было, как оно смотрится на свету?
0
ОК
0
Жаль я проголосовать не могу, спасибо! Буду собирать
+1
Будте поаккуратнее при сборке, многое проектировалось под конкретные детали и марку автомобиля. Если не знаете программирование — врят ли что получится.
0
измеряется то больше мне и ненадо ничего, без датчиков топлива и скорости работать будет?
А плату я обычно рисую сам, привычка, всегда в готовой печатке либо что то ненравится либо деталей подходящих габаритов нет
0
Не всё скопировал)) сначала коммента там так — Ну если напряжение измеряется, часы идут и температура отображается
0
Ох щи, АЛС324 (или 338, или подобный) :) Действительно, раритет. Помнится, в радиокружке руководитель еще в конце прошлого века эти индикаторы недобрым словом помянул, за неравномерное и тусклое свечение. Хотя красные хоть как-то видно :)
0
  • avatar
  • Vga
  • 02 марта 2012, 00:54
Ага, сразу на них внимание обратил, ну если есть запас оных то почему бы его неиспользовать:)
0
У меня с прошлого века тоже 4 штучки лежат + 176 серия — когда-то хотел часы сделать :)
0
long int ml;
long int e;
int rr,rs,uv;
int w,p,z,i,j,a,b,k,v,q,s;
int r,r1,r2,r3,r4,pp;
int a1,a2,a3,a4;
int zz,n,pt,ro,ag,at;
int pp1,pp2,pp3,pp4;
  int ll;
 long int m,vc,rk;
    int vn;

Ндаааа. Код, честно говоря, ужасен.
0
  • avatar
  • Vga
  • 02 марта 2012, 01:03
Такая, может не очень хорошая привычка, переменные обзывать как можно короче…
0
не очень хорошая привычка
Мягко сказано, очень мягко. И это не единственная проблема. В общем, на мой взгляд — переписать с нуля проще, чем твои исходники понять)
0
Ну так кто мешает? Пишите :)
Автору, на сколько я понял, ближе асм, и с него он перешел на си. Ничего плохого в этом не вижу. Главное что сам автор свой код понимает, и более того смог доработать. А писание «красивого кода» прийдет со временем.
0
Это он его сейчас понимает. Через пару недель это пройдет.
+1
Через пару недель этот проект может спокойно перейти в статус завершенных. Всё че надо сделано — чё его ковырять то.
0
Например, попадется другой похожий проект и захочется использовать что-то или вспомнить как делалось.
0
Не бывает полностью завершенных проектов :) Где гарантия, что через неделю/месяц/год Вам не потребуется доработать проект?

Плюс, правильно говорит evsi – есть еще такая вещь как повторное использование кода. Есть еще работа над одним проектом в команде.

Так что давать переменным осмысленные имена – это необходимость, а не просто «украшательства». Лучше изначально себя к этому приучать. А еще лучше выработать «code style» и всегда ему следовать.
+1
Ну так кто мешает? Пишите :)
Мне этот проект не нужен, у меня и автомобиля-то нет.
Главное что сам автор свой код понимает, и более того смог доработать.
Это ненадолго. А к проектам иногда приходится возвращаться — баг пофиксить, новую фичу внести, посмотреть как что-то было сделано.
А писание «красивого кода» прийдет со временем.
Вот для этого и надо критиковать код. Сейчас правда он настолько нечитабален, что даже критиковать нечего, кроме имен (и глобальности) переменных и форматирования — я все равно ничего больше без вдумчивого курения понять не могу.
0
Ну, на самом деле на счет кода я с Vga полностью согласен :) AtXmega , уж без обид :) Но сам по этому поводу писать не стал, потому что:
а) автор наверняка сам знает это все и отдает себе отчет (вот если не знает, чем это чревато — тогда хуже конечно);
б) таки автор пишет для себя, а не для кого-то еще, а для себя, как говорится — свое личное дело.

В общем, если самого AtXmega такой код никак не смущает (я вот, например, сам в своем коде через месяц не разберусь, если его так напишу), то кому какое дело? ;) Важно: автор не просил «покритиковать, посоветовать», как я обычно делаю :)

Я вот программировать в школе, помню, начинал, у нас там все дружно на программирование положили, кроме меня — извращенца, поэтому вникать в суть и все эти тонкости оформления приходилось самому. Зато потом было забавно очень в универе — у нас там тоже программирование было (по мне так мало, но по мнению остальных — черезчур много), и вот народ такой код генерировал, что пипец :) Но там у нас преподы были правильные по большей части — отправляли переписывать. Сурово, но справедливо. Ибо таки уметь правильно писать надо — если потом предполагается это все в проф. деятельности применять.
0
«This program was produced by the CodeWizardAVR ...»

Я так понимаю что код был сгенерирован автогенератором.
0
Что, вместе с именами переменных? Не говоря уже о том, что все переменные глобальные.
Да и отформатирован код плохо. Так что глубже вникать в него я даже не стал.
0
Скажу сразу, код не оптимизирован, даже не думал что кто нибудь его увидит…
0
Ну лично я косо смотрю уже на это, так что...) Ну и я обычно даже «код на выброс» пишу относительно аккуратно — под нож идет архитектура, но не стиль кодирования — он очень сильно влияет на читабельность и самодокументируемость кода.
0
Как вариант вместо DS1307 можно применить DS3231(или 3232, но там SPI) — она правда значительно дороже, но имеет встроенный термокомпенсированный кварц, что исключает возможные свистопляски с подбором внешнего кварца к 1307, плюс там есть еще пара удобных фишек типа двух будильников и датчика температуры, но это скорее полезно для настольных часов или для дергания контроллера по расписанию
+2
+1 к DS3231, собирал недавно на такой: просто сказка. и автотрим под разные температуры, и кварц сразу внутри откалиброванный.
0
ух-ты. закажу-ка и я себе такую. а какой у вас уход получился с ней?
0
с октября ушли примерно на 1 минуту. по даташиту обещали 2 или 4 в год вроде-бы.
0
У меня часы на ней(все никак не напишу про них сюда) за полгода ушли на 40 секунд
0
А я вот себе заказал M41T56M6F потестить в чип-нн, она конечно не термокомпенсированная, но при этом софтверная проверка есть.
Хотя, может таки термокомпенсированная?
Software clock calibration to compensate crystal deviation due to temperature
В общем, вроде как хвалят ее. Вот и я решил попробовать, тем паче цена всего 55р. (Есть и с будильником M41T81M6E — еще дешевле.)
А так да DS3231 — термокомпенсированная точно (140р. в чип-нн).
0
насколько я понял, M41T56 требует кварц. а у ds3231 всё внутри, снаружи нужна только батарейка и подтяжка i2c
0
Да, там смысл коррекции в том, что у него внутри кварц, и снаружи еще один подцепляется, и он по этим двум кварцам как раз и компенсирует как-то хитро :)
Все внутри — это круто, но цена в три раза дороже — фиг знает :)
0
Я бы питание сделал импульсным на 34063 или lm2576. А то слишком много на 7805 рассеивается.
0
  • avatar
  • PRC
  • 02 марта 2012, 08:54
В масштабе автомобильно аккумулятора это не принципиально=)
0
Дело не в потреблении, а в ненужном нагреве 7805.
0
Как это ухудшает работу прибора? Не примите за придирку, просто проектирую устройство с автомобильным питанием.
0
Я не знаю сколько потребляет эта схема, допустим 100мА. Тогда на 7805 выделится больше пол ватта тепла. Плюс еще она может нагреться летом, на солнце.
0
А если 7805 греет кварц, от этого у него еще может поехать частота, не?
0
Не только может, но и обязательно это сделает!
0
Я вот тоже подумал, а не вымрет ли 7805 летом?.. У меня при питании от 12 вольт (в машине 13,8+) дома она греется прилично…
А помнится тут лето недавно такое адское было, да в машине, да на солнышке… Да когда стоит она… Ух… Но фиг знает. Это нам автор расскажет после тестов летом в машине ;)
0
LM2576 — отличная штука, немного обвязки и ток до 3А, ненамного дороже 7805
0
Согласен, как раз сам пытаюсь на импульсники переходить.
0
А еще ее можно в сборе уже со всем обвесом заказать у китайцев за 60 рублей :)
0
Часы работают уже второй год, проблем замечено не было.
0
А, ну вот и славно.
0
Многие сигналки сделаны на 7805. Вы в них не сомневаетесь?
0
Я их не разбирал, если честно =) Но теперь буду! :)
0
Есле точнее то 78L05
0
А как расход и скорость меряется? На схеме видны какие-то импульсные датчики.

Эпичнее было бы доработать штатные механические часы с использованием шаговых двигателей :)
0
Расход — С ЭБУ выходит сигнал расхода топлива(вроде 25000 импульсов на литр израсходованного бензина)
Скорость — с датчика скорости(тоже импульсы на пройденный метр)
Все развязано через оптопару(можно и резисторами поделить)
0
Добавлю, скорость у большинства машин — это 6 импульсов на метр.
+1
А где внешний вид получившихся часов?
Я тоже типа таких часов хочу делать. Машина когда в гараже, всегда отключаю массу, соответственно часы никогда правильное время не показывают.
Только, мне кажется, лучше в автомобиле использовать часы с термокомпенсацией, перепады то там получаются огромные.
0
Внешний вид
Как до машины доберусь — сфотографирую.
0



Фотографировалось в солнечный день.

P.S. У тройки не горит сегмент «А» — замкнуты две дорожки около индикатора, ни как руки не дойдут исправить.
0
Здорово! прям часовой бум )) я тоже часики жене на днюху делаю на кухню ) почитал эту темку с комментами, много чего исправить в них захотелось ) правда я не сам придумал, переделываю уже готовый проект. да там собстно нового ничего не придумаешь только дизайн и мелочи ))) хотя у меня уже все не как у автора но идея все равно не моя ) Здорово получилось спасибо всем Автору и тем кто писал комменты… буду все переделывать нахрен…
0
Переделывать все с нуля — полезно! Для тренировки, так сказать. У меня в программировании частенько так бывает: пишешь-пишешь что-то, потом наступает некий критический момент — понимаешь, что проще все переписать с нуля, и переписываешь, с учетом всех набитых шишек и прочих проблем — получается очень хорошо. Ну это (по крайней мере у меня) обычно от недостатка знаний в той или иной области :)
Главное — не увлекаться и сдать проект во время (в вашем случае — вовремя подарить ;)
0
я взял с запасом )) день рождение 21 апреля )) если к 8 му марта не успею )
0
«Что-бы Вы не разрабатывали на микроконтроллере — все равно получаются ЧАСЫ»(С)
+4
  • avatar
  • Zov
  • 02 марта 2012, 14:16
Хорошая штучка получилась! Про расход интересно.
Конечно, с только целью замены часов на часы, мне кажется, приступать к возне с детальками не стоит, а вот если с прибамбасами — хорошо.
Меня штатные десятовские часы устраивали полностью =)
0
К блогу AVR этот пост отношения не имеет. Перенесите в свой персональный.
0
Перенес в автоэлектронику
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.