Например TDA7294

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



Текущее время: Вт сен 29, 2020 14:53:19

Часовой пояс: 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]
Скачиваний: 213
CajCJCw.jpeg [128.54 KiB]
Скачиваний: 193
Комментарий к файлу: печатные платы в спринтлайот
gps-test.zip [45.48 KiB]
Скачиваний: 111

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


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

Карма: 87
Рейтинг сообщений: 2651
Зарегистрирован: Пт мар 30, 2012 05:17:29
Сообщений: 8306
Откуда: Екатеринбург
Рейтинг сообщения: 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
Сообщений: 69
Откуда: Санкт-Петербург
Рейтинг сообщения: 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 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

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

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

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

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


Вернуться наверх
 
Драйверы MOSFET/IGBT Infineon – силой нужно управлять!

Специалисты Infineon усовершенствовали традиционные кремниевые MOSFET и IGBT и выпустили компоненты на базе принципиально иных материалов – нитрида галлия и карбида кремния. Мы создали подборку полезных материалов, чтобы вы разобрались во всех тонкостях и стали экспертом по управлению силовыми приборами нового поколения CoolMOS, CoolGaN, CoolSiC!

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

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

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


Вернуться наверх
 
Снижена цена на DC/DC и AC/DC преобразователи Mornsun в Компэл!

Хорошие новости для покупателей источников питания! Компэл снизил цены на всю продукцию Mornsun. В ассортименте – как широко известные и популярные позиции, так и новинки. Доступны AC/DC, неизолированные DC/DC-преобразователи или импульсные стабилизаторы (семейство K78/R3), изолированные DC/DC, и новейшее поколение R4.

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

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

_________________
Кто замазался в "МЯВЕ", как отмываться будете?
Верующие - как геи: им надо не просто молиться, а чтобы все про это знали.


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


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

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

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

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

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

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

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


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


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

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

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


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

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


Вернуться наверх
 
Бытовой пирометр АКИП-9312 – просто удобно!

Диапазон 35 °С ...42°С (температура тела) погрешность 0,3 °С
Диапазон 0 °С ...100°С (бытовая сфера) погрешность 1,0 °С
Не в сети
 Заголовок сообщения: Re: GPS-часы точного времени.
СообщениеДобавлено: Ср ноя 27, 2019 19:43:40 
Вымогатель припоя

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 634
Рейтинг сообщения: 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 часа


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

Сейчас этот форум просматривают: andy077, shitter и гости: 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