Например TDA7294

Форум РадиоКот • Просмотр темы - GPS-часы точного времени.
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вт янв 28, 2020 23:14:30

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: GPS-часы точного времени.
СообщениеДобавлено: Вт ноя 12, 2019 18:24:42 
Открыл глаза

Карма: -2
Рейтинг сообщений: -1
Зарегистрирован: Пт окт 25, 2013 17:13:03
Сообщений: 65
Рейтинг сообщения: 0
Решил вот сделать часы на основе китайского чипа topgnss gn-701, который выдает данные в формате UART/TTL.
https://ru.aliexpress.com/i/32947981053.html

Данные с чипа представляют собой пакеты с периодом в 1 Гц.
Выглядят они так

В строке GNRMC идут уже обработанные данные, содержащими точное время по Гринвичу, вычисленные координаты и дату.
Причем если спутники не найдены, чип все равно выдает информацию о времени. Видимо, там есть собственный таймер.
На Attiny2313 идет обработка принятых по UART данных.
Код был найден в Интернете и многократно переписан.
По сути алгоритма микроконтроллер просто ждет, когда в потоке данных появится буква R, после чего отсчитывает знаки времени и выводит их на индикаторы. Все остальное я выкинул в целях упрощения.
Индикаторы газоразрядные ИН-12. управление на оптронах TLP627
Код писался в БаскомАВР.

В-общем, если кому будет интересно повторить, добавлю исходники и печатные платы. Платы две. Плата для индикаторов отдельно. Питание схемы от 220 Вольт через блок питания на LNK304. Питание анодов тоже от 220 через резистор, чтобы преобразователь не лепить.
-----
Идея сделать часы, которые не надо было бы подводить, сама по себе интересна. Но я никак не могу победить странный глюк. Микроконтроллер сам по себе останавливается. Обычно это выглядит как остановка динамической индикации. Ярко горит одна цифра и все. Причем Watchdog не помогает. просто намертво останавливается и все. EEPROM тоже слетает.
Напряжение в норме, конденсаторы керамические по питанию есть, квар менял, другие МК покупал.. схему и печатку проверял.. Код много кратно переписывал, выкинув все, что можно..


Вложения:
kHkveoB.jpeg [91.39 KiB]
Скачиваний: 130
CajCJCw.jpeg [128.54 KiB]
Скачиваний: 102
Комментарий к файлу: печатные платы в спринтлайот
gps-test.zip [45.48 KiB]
Скачиваний: 72

_________________
GPS-часы на Attiny2313 и газоразрядных ИН-12
FuseBit Doctor


Последний раз редактировалось goldskif Вт ноя 12, 2019 22:59:20, всего редактировалось 1 раз.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Вт ноя 12, 2019 20:45:46 
Друг Кота
Аватар пользователя

Карма: 83
Рейтинг сообщений: 2439
Зарегистрирован: Пт мар 30, 2012 05:17:29
Сообщений: 8103
Откуда: Екатеринбург
Рейтинг сообщения: 0
Попробуйте писать в еепром отметки о прохождении каких-то ключевых точек. Есть в 2131 еепром? Если нет - может быть, внешнюю пока приделать? чтобы понять, на чём именно затыкается. Анализировать исходник, наверно, бесполезно.
Кстати, о птичках. Разбирая строку NMEA, игнорируйте две первые буквы, это прибавит универсальности. Американский Navstar даёт GP, наш ГЛОНАСС - не помню какие. вроде GL, но не уверен.
Свои часы, тоже с коррекцией по GPS, я делал на STM32 в порядке освоения семейства МК.

_________________
В гадюшнике "МЯЯЯУ" уважающему себя коту делать нечего.


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Ср ноя 27, 2019 03:36:44 
Открыл глаза

Зарегистрирован: Пт дек 18, 2009 23:17:35
Сообщений: 49
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Я когда разбирал NMEA- обратил внимание что там точное время ажно в двух строках бывает, в итоге решил вылавливать строку GPRMC. Точнее- я вылавливал строку, содержащую символы [RMC,], а дальше в этой строке вылавливал символы, стоящие на определенных позициях (с первой позиции после запятой).
Код вышел тупой и корявый, я писал в CodeVisionAVR, однако ж часы успешно работают уже второй год и совершенно не глючат. Даже с будильником. Даже умеют включать по будильнику нагрузку (лампочку). Даже с ИК-пультом (чтоб включать лампочку с дивана). Даже с памятью (внешней 24с02)- хранить данные о будильнике если вырубится электричество. Шикарные часики вышли! На Atmega8.
Обработку строк запихнул тупо в обработчик прерываний по факту приема чего-нибудь по UART. Никаких еепромов (он частенько слетает), никакой ненужной фигни. Принял, выловил символы, запихнул в глобальные переменные. Показал на индикаторе в определенный момент. Ну а потом еще чего-нить поделал- времени между посылками по уарту вагон.

Покажу кусочек кода, мобыть вам пригодится... пишу всегда с подробными комментариями, а то потом не помню нифига.
Схему, естественно, приводить не буду- во-первых у вас своя есть, а во-вторых её и не существует... не рисовал. Ограничился сразу разводкой ПП в Layout.


//некоторые глобальные переменные

unsigned char hrs=0; //часы
unsigned char min=0; //минуты

bit string_catch=0; //бит вылова заголовка нужной строки GPS
unsigned char symb_count=0; //счетчик количества нужных символов после RMC,
unsigned long int gprmc=0; //переменная символов вылова заголовка нужной строки GPS ($GPRMC, ловим [ RMC, ])
unsigned char seconds=0; //принятые секунды (для своевременной индикации)



//**********************индикация времени************************

void indtime(void) //индикация времени
{
//ваша процедура вывода глобальных переменных часов и минут на индикатор
}


// прием данных по USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
// никаких проверок с буферизациями не ведем. Если нужна проверка- смотрим флаги регистра UCSRA
unsigned char data=0;

if (string_catch) //если строку уже поймали
{
switch (symb_count) //смотрим сколько чего уже принято
{
//считывание текущего времени
// $GPRMC,,V,,,,,,,,,,N*76... - когда спутников нет и не было
// $GPRMC,042318.00,V,,,,,,,140217,,,N*76... - когда время таки приняли, а координат еще нет и нафиг не нужны

case 0:
data=UDR; //считываем содержимое регистра (считать обязательно в любом случае!)
if (data>0x2F&&data<0x3A) //если там не запятая или еще какой знак
{ //считаем что время принимается корректно и больше на эту тему не паримся
data-=0x30; //доводим до нормального состояния по таблице, данные передаются в ASCII, иметь в виду!
hrs=data*10; //десятки часов
symb_count++; //увеличиваем счетчик принятых символов (байт)
}
else //если приняли запятую или х-ню
{
symb_count=0; //обнуляем счетчик принятых символов
string_catch=0; //считаем что строка не принята
}
break;
//далее аналогично, уже без проверки принятого символа
case 1:
data=UDR;
data-=0x30;
hrs+=data;
symb_count++;
break;

case 2:
data=UDR;
data-=0x30;
min=data*10;
symb_count++;
break;

case 3:
data=UDR;
data-=0x30;
min+=data;
symb_count++;
break;

case 4:
data=UDR;
data-=0x30;
seconds=data*10;
symb_count++;
break;

case 5:
data=UDR;
data-=0x30;
seconds+=data;

if (seconds<1) //один раз в минуту в первую секунду
indtime(); //показываем принятое время
//если вы используете секунды в индикации- можете делать это ежесекундно. Мне секунды не нужны- я их не показываю.

symb_count=0; //обнуляем счетчик принятых символов
string_catch=0; //когда все принято- ставим флаг что можно опять ловить строку
}
}

if (!string_catch) //если нужную строку еще не поймали
{
gprmc=gprmc<<8; //cдвигаем влево на байт
gprmc=gprmc|UDR; //в младший байт пишем содержимое UDR
if (gprmc==0b01010010010011010100001100101100) //если выловили символы [ RMC, ]
string_catch=1; //ставим флаг что строка выловлена
}
}

void main(void)
{
//ваш основной цикл
}


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Ср ноя 27, 2019 07:59:05 
Мучитель микросхем

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 438
Рейтинг сообщения: 0
Народ, зачем вы заставляете GPS выдавать всю эту кучу пакетов? У GPS-модулей есть команды, которые позволяют "придавить" вывод той или иной информации.
Я в своем хронометре только RMC строку и принимаю - зачем мне остальные?
Ну, а прерывание PPS синхронизирует таймер Systick. Сделал на основе модуля L80-R (три с половиной бакса супротив вашего за червонец!).

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Molex: соединения, связь, инновации

Развитие техники предъявляет все более высокие требования к разъемам и скорости передачи данных. Соединения становятся прецизионными и наукоемкими изделиями. На сегодня Molex – это не только высокотехнологичные разъёмы, но и инновационные устройства передачи данных.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Ср ноя 27, 2019 15:24:01 
Открыл глаза

Зарегистрирован: Пт дек 18, 2009 23:17:35
Сообщений: 49
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Народ, зачем вы заставляете GPS выдавать всю эту кучу пакетов? У GPS-модулей есть команды, которые позволяют "придавить" вывод той или иной информации.

Затем, что во-первых надо городить ключ на выход уарта, бо модуль хоть и питается от 5 вольт, а на вход ему только 3.3 максимум подавать изволь. У меня VK2828U7G5 - потому что у него хорошая антенна сразу "на борту". Про ваш модуль я вообще не знал, а жаль... Во-вторых все равно надо еще в момент первого включения контроллера все эти команды в него запихивать, так что объем кода шибко меньше не становится. Посему я здраво рассудил что нехай говорит себе что хочет, а слушать мы будем только строку RMC. :))


Вернуться наверх
 
Как реализовать минимальное энергопотребление беспроводного микроконтроллера STM32WB55

Система питания беспроводных микроконтроллеров STM32WB55 выглядит непросто, но при этом каждый узел может быть запитан отдельным напряжением, величина которого будет являться наилучшим компромиссом для конкретной тактовой частоты. Это делает STM32WB55 идеальными для создания устройств с батарейным питанием.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Ср ноя 27, 2019 15:28:39 
Друг Кота
Аватар пользователя

Карма: 83
Рейтинг сообщений: 2439
Зарегистрирован: Пт мар 30, 2012 05:17:29
Сообщений: 8103
Откуда: Екатеринбург
Рейтинг сообщения: 0
И правильно. Я тоже в своём будильнике проверяю буквы в принимаемой строке; если она не RMC, то просто на неё плюю... тьфу, игнорирую её. Быстродействия STM32 на это хватает. :))

_________________
В гадюшнике "МЯЯЯУ" уважающему себя коту делать нечего.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Ср ноя 27, 2019 17:17:19 
Мучитель микросхем

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 438
Рейтинг сообщения: 0
Opamp писал(а):
надо городить ключ на выход уарта

Ничего не понял, какой ключ? STM32 питается от 3.3В.
Opamp писал(а):
Про ваш модуль я вообще не знал, а жаль...

Есть и еще более дешевые, но у них антенка совсем дохлая.
Правда, я недавно купил себе "удлинитель" GPS (получил вчера на почте): ретранслятор с пятиметровым шнурком. Проверил на кухне - кайф! Если без него вообще ни одного спутника лопата не видит, то с ним - уже десяток!!! Правда, удовольствие недешевое - 10 баксов. Возможно, проще внешнюю антенну своему GPS-модулю прицепить.
Opamp писал(а):
надо еще в момент первого включения контроллера все эти команды в него запихивать

А в чем проблема? UART же!
Opamp писал(а):
объем кода шибко меньше не становится

Там кода - с гулькин нос!

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Ср ноя 27, 2019 19:24:09 
Открыл глаза

Зарегистрирован: Пт дек 18, 2009 23:17:35
Сообщений: 49
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Ничего не понял, какой ключ? STM32 питается от 3.3В.

Там кода - с гулькин нос!


У вас от 3.3, а у меня от пяти. Гуглите "согласование логических уровней".

Да. Чтобы вылавливать нужную строку- кода тоже с гулькин нос. Но тут уже кому как удобнее...


Вернуться наверх
 
Распродажа паяльных станций ATTEN и аксессуаров!
Индукционная паяльная станция AT315D - 3 977 ₽, станция паяльная AT80D – 2177 ₽, станция паяльная AT936b – 1000 ₽!

Заходите в раздел акции и спецпредложения на сайте prist.ru, покупайте измерительные приборы, инструмент и паяльно-ремонтное оборудование по специальным ценам.
Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Ср ноя 27, 2019 19:43:40 
Мучитель микросхем

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 438
Рейтинг сообщения: 0
Opamp писал(а):
У вас от 3.3, а у меня от пяти

Ой, подумаешь - один транзистор и два резистора…

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Чт янв 16, 2020 20:47:14 
Открыл глаза

Карма: -2
Рейтинг сообщений: -1
Зарегистрирован: Пт окт 25, 2013 17:13:03
Сообщений: 65
Рейтинг сообщения: 1
я наконец-то разгадал загадку глюка. Во всем виноваты газоразрядные индикаторы.
Когда МК обрабатывает данные со спутника, туда иногда прилетает какой-то мусор. Или сам МК иногда ошибается. В-общем, в массив записывается не цифра от 0 до 9, а знак или буква..
А когда нецифра из порта попадает на дешифратор 155ИД1, то он не знает, какой вывод зажигать. И не зажигает никакой. А это - нештатный режим. ПРи работе газоразрядных индикаторов один из катодов всегда должен быть задействован, иначе на выводах 155ИД1 появляется очень высокое напряжение. А уже импульс этого напряжения пролетает либо по питанию, либо со входа дешифратора в микроконтроллер и сносит там все нахрен. Блокировочные конденсаторы не помогают. Питал дешифратор через диод - не помогло. Видимо, все-такие со входа дешифратора.
Ну и соответсвенно, пришлось изменить прошивку.
Добавил проверку на диапазон чисел при записи в массив
If B >= 48 And B <= 57 Then
и на всякий случай такую же проверку
If I(count) >= 0 And I(count) <= 9 Then
при зажигании анодов. То есть чтобы при крюкозябрах в массиве даже анодное не подавалось. Нет импульса -не будет и помехи.
Вот теперь часы заработали.
Правда, ЕЕПРОМ там все равно глючный. Иногда все-таки его сносит.
Так что такой глюк не проявился бы при использовании светодиодных или ЖКИ индикаторов.

_________________
GPS-часы на Attiny2313 и газоразрядных ИН-12
FuseBit Doctor


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y