Статистика
Время:
Зарегистрированных: 89570
Последним зарегистрирован: 09virt
Рекорд посещаемости: 12585
Групп пользователей: 4
 Группы:
[Admin] [Cоучастник] [Автор] [Модератор]
 Сейчас на сайте
 Всего: 1238
 Гостей: 1234
 Анонимных: 0
 Пользователей: 4
 Зарегистрированные:
ur6ibx vvvv oleglm jr979

> Разное -> GPS-часы (atmega16)
как говорят, "Что не собирай, а в итоге получаются часы..." (с)

К чему это я...
Мной собрано около десятка различных часов: с будильниками, без будильников, даже сирену в качестве будильника прикручивал)) в качестве индикатора также собирал на СемиСегментниках, на ЖК дисплеях от магнитол, на ЖК дисплеях от мобильников, итд...
В качестве часов реального времени применял и DS1307, и PCF8583, и даже MK41T56 с корректором хода, и другие микрушки... Вобщем много всего перепробовал =)
Единственный недостаток всех этих часов- рано или поздно их надо корректировать, то на минуту, то и на три, а то и на 6 минут, что неудобно.

Сразу снимаю с себя всю ответственность за потраченное вами время, детали, деньги, итд, проект некоммерческий, а поэтому вы делаете всё на свой страх и риск!! Конструкция сделана для ознакомления с протоколом NMEA-0183, работой с передачей данных через UART, работой с регистрами, а также как пример использования графического дисплея в радиолюбительской конструкции. Если у вас что-то не заработало, то вините во всём свои кривые руки!!

Было решено сделать часы с какой-либо синхронизацией. Синхронизация через Интернет отпадает, т.к. у нас интернет частенько сбоИт, да и платный он. В качестве альтернативы был найден GPS-приёмник, работающий через NMEA-0183-протокол, который достаточно хорошо описан на просторах интернета.
Ссылка на описание NMEA-протокола
Но вот беда- в нашем городе нет ни одного радиомагазина, а ближайший- 260 км от наc. Но в то же время валяется без дела Bluetooth-GPS-модуль, который я когда-то покупал аж за целых 2500 рублей..... К чему это я? Да к тому, что модуль то у меня Bluetooth!! а как с него добыть данные ?

image

Решено было вскрыть корпус и осмотреть печатную плату. После визуального осмотра, на плате было обнаружено около 15-ти контрольных точек.

image

Подав питание, я "пощупал" выходные сигналы в контрольных точках, и.... на одной из них был найден нужный мне NMEA-сигнал.
Сразу скажу (кто не знает)- протокол работы приёмника обычный RS232, или UART, кому как нравится =)

image

Подобрал скорость, она оказалась аж 115200 бит/сек. Амплитуда логических импульсов- 2,8 вольта.
К счастью, вы можете не страдать такими бедами, а просто купить готовый GPS-модуль, со всей документацией, и не париться как я.
GPS-модуль L50 компании Quectel
image

GPS-модуль Lassen компании Trimble. Дорогая и надёжная вещь.....
image

Просто я хотел собрать девайс из того, что было под рукой. Да и сейчас GPS встроен практически во все телефоны, поэтому пользы от этого Bluetooth-GPS-модуля не было никакой- он просто провалялся на полке 2 года....
Ещё отмечу, что разные приёмники передают разное количество информационных "пакетов". Пакеты GPS-приёмник "плюёт" ежесекундно. Раз в секунду- пачка пакетов. Мой приёмник передаёт четыре разных пакета:
$GPGGA
$GPGSA
$GPGSV
$GPRMC

Ну а в моём проекте GPS-часов используется только один GGA-пакет. Его структура изображена ниже:

$GPGGA,hhmmss.ss,1111.11,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh

Из этого пакета нам и то нужны только четыре значения (остальные игнорируем):
-время UTC+0 (внимание!! время передаётся без привязки к часовому поясу, поэтому в часах нужно было сделать настройку часового пояса)
-количество спутников
-данные о фиксированном решении (или просто GPS-FIX)
-контрольная сумма

Ну а дальше дело техники- заводим UART в микроконтроллер, захватываем пакет, проверяем контрольную сумму, и если она верна, то потрошим "пакет" на отдельные составляющие.... Далее- вывод на дисплей от сотового всех настроек, и вывод на крупные сегменты, составленные из светодиодных лент жёлтого цвета:

image
image

Яркость светодиодных лент такая, что ночью лупит по глазам будь-здоров!! Поэтому я ещё присобачил к часам датчик света. Можно регулировать мин и макс яркость циферблата (по датчику света), а также отключать датчик света и регулировать яркость вообще вручную..... Также можно сделать например, чтобы:
-после AA часов BB минут яркость будет CC процентов.
-после XX часов YY минут яркость будет ZZ процентов.
например:
--после 07 часов 30 минут яркость будет 90 процентов.
--после 22 часов 50 минут яркость будет 05 процентов.
Все эти настройки выведены на дисплей от сотового телефона, который я разместил прямо внутри корпуса!! Дисплей я взял от сотика Siemens_S65_LPH88

image
image

Кстати так и не сказал, датчик света я спёр из сотика Nokia_N95.
image
Вот его даташит:
Ссылка на даташит
Аппликуха по использованию

При включении питания часов, алгоритм такой:
циферблат показывает:

это означает что подано питание. Связи с GPS-приёмником нет
Затем включается GPS-приёмник. После того как пошли первые пакеты, циферблат начинает показывать:
——
это означает что связь с GPS-приёмником установлена, приём 0 спутников.
Затем через какое-то время циферблат начинает показывать:
———
это означает что связь с GPS-приёмником имеется, приём 1 спутника.
Затем через какое-то время циферблат начинает показывать:
————
это означает что связь с GPS-приёмником имеется, приём 2 спутников.
Проходит ещё немного времени, и циферблат начинает показывать текущее время:
23-45
это означает что связь с GPS-приёмником имеется, приём 3 или более спутников.


Как только связь с GPS-приёмником нарушается (например обрыв кабеля, или выход приёмника из строя), на циферблате через 5 секунд пропадает время, и индицируется:

это означает что только подано питание. Связи с GPS-приёмником нет.

GPS приёмник находится на удалении 5-метров от часов (висит у окна), для связи используется 4-жильный провод (можно витую пару). После приёмника и перед часами стоЯт микросхемы MAX232, благодаря которым сигнал устойчиво передаётся по проводу длиной 10 метров.

Также в меню настроек можно изменить скорость работы UART'а, сделано это для того, чтобы можно было подключать различные GPS-приёмники, не прибегая к переделке "прошивки" (разные GPS-приёмники работают на разных скоростях, например, мне встречались модули, работающие на скрорстях 4800, 9600 и 115200 бит/сек!!).

Также имеется функция тестирования сегментов. При её включении зажигаются все сегменты, и можно найти "битые" светодиоды.

Подсветка внутреннего дисплея (который для настроек) автоматически выключается через 15 секунд бездействия (ну а чего внутри корпуса просто так светить?).
Внешний вид настроечного LCD-дисплея:

image

Для настройки у часов имеется всего 3 кнопки ("+", "-", "Ок"). Про настройки подробно в файле:
Скачать файл
Работа девайса в целом
Смотреть видео

Конструктивно я разбил печатку на 3 части: первая и вторая части управляют "часами" и "минутами" на циферблате (на них расположены микросхемы-регистры), а третья печатка получает данные с приёмника, и управляет первыми двумя печатками (циферблатом).
Фото третьей (управляющей) печатки (печатка кривая, такчто не пинать(((

image

Поставил матовое оргстекло, вот что получилось:

image

Схема+программа Splan 7
Скачать
Прошивка atmega16 (кварц 11,059200 мгц)
Скачать
Фьюзы atmega16 (кварц 11,059200 мгц) ВНИМАНИЕ!!!! ФЬЮЗЫ НЕ ИНВЕРТИРОВАНЫ!!!!! На некоторых программаторах они инвертируются!!!
Скачать

Исходный код проекта (написано в среде Flowcode 4.3.6.61 или 4.3.9.65)

Обсудить статью на форуме


С уважением, ваш Zlodey
© September-October 2012




  banner DIPTRACE - САМЫЙ ЛУЧШИЙ ТАКСИРОВЩИК ПЕЧАТНЫХ ПЛАТ
Portal-X