Как записать в компьютер лог сигналов step?

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем iva2000, 2 дек 2019 в 16:05.

  1. iva2000

    iva2000 Нерд

    Ардуина стучит высокими уровнями по ногам step двум драйверам шаговых двигателей, и
    двигатели проворачиваются.

    Нужно в компьютере записать лог, чтобы было понятно в какую миллисекунду системного времени какой из контроллеров получил сигнал на ноге step. В общем, нужен надёжно привязанный к системному времени лог положений вала (пусть без учёта возможного пропуска шагов)

    Как это сделать? Может usb-uart преобразователь использовать?
     
  2. b707

    b707 Гуру

    ну например выводите в Сериал значение миллис и номер мотора. на который выведен сигнал step - это и будет "надежно привязанный к системному времени" лог

    Учитывайте только. что интерфейс Сериал довольно медленный - если моторы крутятся достаточно быстро - вам просто не хватит скорости порта для вывода лога на каждом шаге
     
  3. Asper Daffy

    Asper Daffy Иксперд

    iva2000 и parovoZZ нравится это.
  4. parovoZZ

    parovoZZ Гуру

    Подписаться на прерывания (PCINTх) на ногах STEP МК. Далее считать регистр IN и кинуть инфу в сериал.

    Если в комп выводить инфу через USB и в МК нет модуля USB, то - ДА.
     
  5. iva2000

    iva2000 Нерд

    Простите, но мне нужно именно к системному времени в компьютере привязываться. Ардуинное время неважно.
     
  6. iva2000

    iva2000 Нерд

     
  7. parovoZZ

    parovoZZ Гуру

    Цепляй часы RTC к ардруине и передавай значения вместе со временем. А если останется процессорного времени, то можно еще и шаговиками покрутить. Но штамп времени к данным я бы цеплял на компе.
     
    iva2000 нравится это.
  8. iva2000

    iva2000 Нерд

    А как привести в соответствие время на компе и время, переданное от RTC?
     
  9. b707

    b707 Гуру

    в этом случае время очень сильно потеряет в точности
    А в чем смысл отсчитывать время именно в компе? - ведь наверно для лога важно не абсолютное время, напримет 19час 53 мин 22 сек 345 мс, а относительное с момента старта процесса. А относительное время можно и нужно измерять на ардуине
     
  10. asam

    asam Гик

    Многие терминальные программы, например TeraTerm, могут не просто записывать принятое из сериал порта в лог, но и ставить TimeStamp в начале каждой новой стороки.

    Только надо учитывать, что на скорости 9600 один байт передается примерно миллисекунду, так что желательно порт настроить на 115200
     
    iva2000 нравится это.
  11. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Тут два варианта - либо Ардуино передает номер пина и время, например от RTC, либо комп присваивает время посылкам по своему системному времени. Для этого надо найти или написать прогу типа логгера. Чтоб не было путаницы - в ардуинной посылке должен быть пароль опознавания.
     
    Последнее редактирование: 2 дек 2019 в 23:55
    iva2000 и Daniil нравится это.
  12. Daniil

    Daniil Гуру

    При старте программы и периодически можно еще время "синхронизировать", чтобы ардуина передавала более корректные метки времени
     
    iva2000 нравится это.
  13. parovoZZ

    parovoZZ Гуру

    Она выдержит 9600 бит в секунду?
     
    iva2000 нравится это.
  14. iva2000

    iva2000 Нерд

    Товарищи, мне нужно точное время.
    Мотор перемещает датчик, а на компе есть лог значений датчика.
    Через общее системное время я придумал сопоставлять положение и показание датчика.

    Достаточно раз в секунду снимать показания и с датчика и с мотора, но желательно, чтобы рассинхронизация не была больше 0.1с.
     
  15. parovoZZ

    parovoZZ Гуру

    Нам отсюда не видно, что там на компе.
    Варианты решения предложены. Боюсь, что других решений нет.
     
  16. iva2000

    iva2000 Нерд

    Спасибо за подсказку про TeraTerm.

    А ещё я нашел, что в IDE, начиная с 1.8.8 есть чекбокс штампа времени. Жаль, что нет функции записывать лог-файл, а то бы и TeraTerm был не нужен.



    Наверное, решением будет записывать лог сериал порта со штампом времени компьютера. А в сериал порт дублировать команды на очередной шаг двигателя.
    Если задержки разной природы будут меньше 0.1 секунды, задача соотнесения показаний датчика и его положения будут выполнена.

    Скорость перемещений невелика - отсчеты нужно вести раз в секунду.

    Простите, что сразу не сказал про датчик на компе, сократил задачу для ясности.
     

    Вложения:

  17. akl

    akl Гуру

    как раз бякокодю виндос-программу типа монитор ком-порта. Приделал возможность добавления времени и даты в конец каждой принятой строки. Прямо перед концом строки дописывает время или время и дату (что записывать устанавливается галочками). Время дописывается только в файл, в окошко выводится без дописывания. Управление и настройки интуитивные, вирусов быть не должно, но возможны баги.

    так же программа содержит бонусный режим, позволяющий управлять роботами через ком-порт с клавиатуры и мыши (посылает цифровые коды клавиш, по нажатию ЛКМ посылает "LMB", если зажать на вылезшем окошке правую кнопку и тянуть мышь - посылает изменения координат мыши в формате xN yN
     

    Вложения:

    • com_mon.zip
      Размер файла:
      9,3 КБ
      Просмотров:
      9
    Последнее редактирование: 3 дек 2019 в 14:31
    iva2000 нравится это.
  18. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Могу попытаться нашлепать вам программу логгера для ПК на Визуал Бейсике, если пришлете мне строку данных, которые гоните в сериал. Я в него вставлю пароль и под него сделаю приём. Комп тут же присвоит им своё комповское время (не всемирное !!!) Но абсолютно ничего не обещаю заранее. Ага, меня уже опередили.
     
    Последнее редактирование: 3 дек 2019 в 14:30
    iva2000 нравится это.
  19. iva2000

    iva2000 Нерд

    Огромное вам спасибо, прекрасные люди, akl и Ariadna-on-Line !!
    Как получится сделать проект, отпишусь тут о результатах!!
     
  20. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Это CodeBlocks вроде редактор называется ?