GPS модуль NEO6MV2 сотые доли секунды

Тема в разделе "Arduino & Shields", создана пользователем santer, 23 мар 2017.

  1. santer

    santer Нерд

    Столкнулся с небольшой проблемкой.
    Имеем данный модуль NEO6MV2 необходимо отображать астрономическое время с сотыми долями секунд. В библиотеках TinyGPS++ и TinyGPS есть переменные возвращающие сотые, но отображают они только нули.
    hundredths - TinyGPS
    centisecond() - TinyGPS++

    В чем может быть подвох?
     
  2. sslobodyan

    sslobodyan Гик

    А как вы собираетесь использовать эти сотые? Ведь даже для передачи из модуля и отображения на экране нужно время, сравнимое с изменением этих сотых, не говоря уже о времени реакции человека. Если вам важна точная синхронизация с мировым временем, то используйте прерывание по секундному импульсу, который может генерить модуль. А в прерывании уже опрашивайте какая именно сейчас секунда. И не забудьте скорость обмена повысить, а то при 9600 можете не успеть.
     
  3. отображать? на чём???
    можно выход со светодиода подключить прерыванию и ардуиной отсчитывать эти сотые
     
  4. santer

    santer Нерд

    Это для системы старт-финиш. В любом спорте сотые важны.
    Когда финишный створ пересекается нужно брать текущее время включая сотые и отображать на экране.
    И очень важна привязка к реальному времени, поэтому решено брать время с GPS.
    Вот и пытаюсь побороть библиотеку.
     
  5. sslobodyan

    sslobodyan Гик

    Вы так и не поняли. Сотые секунды НЕВОЗМОЖНО словить ЛЮБОЙ библиотекой. Запоминайте миллисекунды, когда сработает прерывание от секундного импульса модуля. Потом берите миллисекунды во время финиша. Разница между ними - миллисекунды от начала текущей секунды, которую вы получите в библиотеке.
     
  6. santer

    santer Нерд

    понял. Т.е. каждая новая секунда запускает счетчик милисекунд заново, и когда финишный створ пересекают, останавливаем его и выводим значение. Принято, спасибо.
    Тогда зачем в библиотеке эта переменная непонятно?
     
  7. sslobodyan

    sslobodyan Гик

    Нет, не понял. Читайте еще раз.
    А лучше опишите полностью свою задумку, поскольку я так и не понял нужности синхронизации с GPS. Если нужны сотые секунды, то на минутных интервалах должно хватить точности кварца - стандартно там всего то около 30 миллионных долей погрешность.
     
  8. santer

    santer Нерд

    Задумка следующая. Авторалли. На старт и финиш выезжают разные бригады судей. Астрономическое время на старте и финише должно быть синхронизированно. Каждую минуту стартует по машине. На финише нужно фиксировать астрономическое время прохода финишного створа учитывая сотые доли секунд.
    Разницу времени т.е. результат вычисляют ручками между временем старта и финиша.
    Вот моя задача поймать эти сотые доли секунды.
    фишка в том что старт и финиш могут находиться друг от друга на расстоянии 5,15,25 км. и я никак не смогу оперативно передать на финиш инфу про старт машины. Поэтому привязываемся к спутникам. Если погрешность и будет, то она будет одинакова для всех и не дает преимущества какому-либо экипажу.
     
  9. sslobodyan

    sslobodyan Гик

    Теперь все понятно.
    1. Ждем старт (нажатие на кнопку). По прерыванию секундных импульсов с GPS запоминаем t1=millis() постоянно.
    2. В момент старта запоминаем t2=millis() и t3=текущая секунда из библиотеки.
    3. На финише также по прерыванию секундных импульсов сохраняем t4=millis() постоянно.
    4. В момент финиша запоминаем t5=millis() и t6=текущая секунда со спутника.
    Что имеем.
    а) t2-t1 дает количество миллисекунд с начала текущей в t3 секунды, которые прошли до старта
    б) t5-t4 аналогично миллисекунды с начала текущей t6 секунды до финиша
    в) t6-t3 количество полных секунд между стартом и финишем, осталось добавить миллисекунды из а)

    Разрисуйте себе шкалу времени и моменты когда срабатывает прерывание от секундных импульсов и кнопки старт и финиш, расставьте t1-t6 - так будет понятнее

    PS кстати, а как вы будете различать машины, то есть чье время засекается?
     
  10. santer

    santer Нерд

    У каждой машины есть контрольная карта в которой судьи пишут время старта на старте к примеру 12:26:00 На финише судья пишет время финиша 12:35:35:125. Результат вычисляется ручками 9м.35с.125сс.
    Ну и соответственно номер машины уже ясен ибо машина для контроля времени останавливается.
    И никаких кнопок никто не нажимает. Ту все гораздо проще.
    вот пример типичного допа. В конце ролика видны красные знаки - ето и есть финишный створ, который машина проходит ходом... а на следующем посту она останалвивается для отметки. Вотфинишный створ должен передать на пост отметки инфу о времени финиша с сотыми.



    Вашу идею с отсчетом я понял. Когда срабатывает финишный створ, считаем милисекунды до следующей новой секунды, потом считаем разницу и получаем нужные тысячные секунды.
     
  11. sslobodyan

    sslobodyan Гик

    Ясно. Две машины одновременно не приезжают. Или запоминается время каждого пересечение лазера, а уже люди эти времена сопоставляют с машинами.
    Идею уловили. Секунды со спутника, миллисекунды - как разница.
     
  12. santer

    santer Нерд

    Абсолютно верно. Судьи идентифицируют машины сами, и одновременный финиш двух и более машин в ралли шанс 1:1000000000