2019-08-19 16:26:36 +03:00

145 lines
8.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

****** Распиновка ******
=== Интерфейсы I/O ===
- PA11/12 - USB
- PA9(Tx), PA10(Rx) - USART1 - прокси RMC-сообщений GPS.
- PA2(Tx), PA3(Rx) - USART2 - подключение GPS-приемника.
- PB10(Tx), PB11(Rx) - USART3 - подключение лидара.
=== Остальные порты ===
- PA1 - PPS сигнал от GPS; сюда можно подключать любой дополнительный высокоомный вход напрямую.
- PA4 - TRIG2 - подключен к каналу 12В.
- PA13 - TRIG0 - кнопка или створ, замыкающий контакты.
- PA14 - TRIG1 - так же, как и вход TRIG0.
- PA15 - подтяжка USB.
- PB0 - TRIG4 - триггер по АЦП.
- PB8, PB9 - индикаторные светодиоды.
- PC13 - пищалка.
=== Светодиоды ===
- LED0 (зеленый) - при отсутствии сигнала PPS просто горит, если PPS появляется - мигает (затухает на 0.25с на каждый сигнал).
- LED1 (красный) - индикатор GPS: не горит, если приемник не обнаружен, горит, если неуверенный прием времени (буква "V" во второй позиции RMC-сообщения), мигает при уверенном приеме (буква "A" во второй позиции).
Судя по эксперименту, даже через час после пропадания сигнала точность определения события - не хуже 1мс. Сам GPS-приемник выдает
PPS даже при отсутствии спутников - лишь бы он успел "подхватить" точное время и начать генерировать pps. Начинать работу можно сразу,
как только замигает зеленый светодиод после мигающего красного.
****** Триггеры ******
На прототипе распаяно два входа на триггеры: TRIG0 и TRIG2. К TRIG2 нужно подключать 12-вольтный сигнал, ток не меньше 10мА.
Если створ имеет открытый коллектор, то выход створа подключается к минусу TRIG2, а к плюсу подключается 12В с источника питания.
TRIG0 предназначен для подключения кнопки или концевика, просто замыкающего контакты. Никакого внешнего напряжения там быть не должно!
TRIG4 - аналоговый вход. Если будут ложные срабатывания на девбордах, порт PB0 нужно напрямую или через резистор до 10кОм посадить на землю.
Иногда бывают ложные срабатывания триггеров TRIG0..TRIG2, связанные с мощными источниками искр (зажигание, искрящиеся обмотки и т.п.).
В случае таких ложных срабатываний рекомендуется заземлить катод источника питания хронометра.
При подключении внешней кнопки желательно, чтобы она имела нормально замкнутые контакты - это предотвратит ложные срабатывания из-за электромагнитных помех.
****** Подключение ******
Хронометр эмулирует "китайский" преобразователь PL2303. В линуксе нужно, чтобы был скомпилирован соответствующий модуль ядра.
В андроиде работает "из коробки". В мастдайке новые драйвера PL2303 имеют защиту от подделок (те просто не работают с этими дровами),
поэтому для нормальной работы необходимо найти и установить старые драйвера.
К выходам PA9/PA10 можно подключить преобразователь USART<>USB или накинуть их напрямую на ноги Rx/Tx "малинки" (не забыв соединить
земли хронометра и малинки): PA9(Tx) соединить с Rx, PA10(Rx) - с Tx. Этот USART проксирует RMC-сообщения GPS-приемника (уже после
обработки микроконтроллером, поэтому если МК выключен, а приемник включен, сигнала все равно не будет).
Для подключения PPS сигнала к "малинке" нужно напрямую соединить соответствующую ногу GPIO "малинки" с портом PA1 девборды.
На прототипе нужно подпаяться к дорожке, выходящей с ноги PPS (отмечено маркером).
Подтяжка USB есть лишь на прототипе, на девбордах ее нет. Поэтому в случае перезагрузки микроконтроллера девборды для возобновления
соединения необходимо переткнуть шнурок USB. В этом плане прототип надежней: сбросить МК можно независимо от питания GPS.
На прототипе и девбордах отсутствует подсоединение пищалки. На девбордах при желании можно накинуть на PC13 что-нибудь для индикации
срабатывания створа (активный выход - "1" в течение 0.3с).
На девбордах не распаяны светодиодные индикаторы. Особого смысла в них нет, но если понадобится подключить, нагрузка должна висеть на
PB8/PB9. Активный выход - низкий. Нога МК настроена в режиме open-drain, но внешняя подтяжка не должна быть выше +3.5В. И потребление
не больше 5мА на ногу.
****** Конфигурация ******
Хронометр конфигурируется через USB. Ввод команд не сопровождается эхом (чтобы удобней было работать из внешних программ), поэтому
для удобства можно тексты команд копировать из окна текстового редактора.
Чтобы увидеть подсказку, достаточно отправить любую строку, начинающуюся с вопросительного знака. Появится справка:
adcmax - max ADC value treshold for trigger
adcmin - min -//- (triggered when ADval>min & <max
adcval - get ADC value
buzzerS - turn buzzer ON/OFF
distmin - min distance threshold (cm)
distmax - max distance threshold (cm)
gpsrestart - send Full Cold Restart to GPS
gpsstring - current GPS data string
ledsS - turn leds on/off (1/0)
mcutemp - MCU temperature
pullupNS - triggers pullups state (N - trigger No, S - 0/1 for off/on)
showconf - show current configuration
time - print time
store - store new configuration in flash
triglevelNS - working trigger N level S
trigpauseNP - pause (P, ms) after trigger N shots
trigtimeN - show last trigger N time
vdd - Vdd value
Из нужного здесь:
- gpsrestart - перезапуск GPS (если вдруг начнет глючить - у меня такого не случалось), делает "холодный" рестарт. Команда
проверялась лишь на прототипе.
- gpsstring - вывод очередного сообщения от GPS. Если все нормально, то появится строка RMC вроде
$GPRMC,124001.000,A,4340.9369,N,04127.5034,E,0.00,33.26,150819,,,A*5C
- pullupNS - включить или выключить внутренние верхние подтяжки для триггеров 0..3 (особо не нужно, т.к. подтяжки слабые, и если
будет нужна подтяжка, лучше сделать сильную внешнюю).
- showconf - отображение текущей конфигурации, например:
CONFIG:
DISTMIN=50
DISTMAX=1000
ADCMIN=1024
ADCMAX=3072
PULLUPS=255
TRIGLVL=0
TRIGPAUSE={400, 400, 400, 300, 300}
ENDCONFIG
пункты конфигурации: DISTMIN/DISTMAX относятся к лидару, ADCMIN/ADCMAX ко входу АЦП, PULLUPS - состояние подтяжек
(каждый бит, начиная с младшего - состояние соответствующей подтяжки; 0 - не активна, 1 - активна).
TRIGLVL - конфигурация уровней срабатывания, каждый бит, начиная с младшего (всего три младших бита, как и в PULLUPS),
равен нулю, если для соответствующего триггера срабатывание при перепаде 1->0, равен единице, если при
перепаде 0->1.
TRIGPAUSE - пауза между срабатываниями триггера: если после срабатывания произойдет следующее событие за интервал, меньший
данного, это событие учитываться не будет.
- time - отображает текущее время так, как оно бы отобразилось при срабатывании триггера, например,
55725.961 (15:28:45)
ВРЕМЯ ИЗМЕРЯЕТСЯ В UTC!!! Первое число - количество секунд и миллисекунд с начала суток по UTC, в скобках
указывается человекочитаемое время.
- store - сохранить новую конфигурацию во флеш-памяти МК.
- triglevelNS - рабочий уровень триггера. Здесь N - номер триггера (0..2), S - уровень (0/1). Скажем, чтобы триггер 0 срабатывал
при перепаде 1->0, нужно написать команду
triglevel00
а чтобы триггер 2 срабатывал при перепаде 0->1,
triglevel21
- trigpauseNP - задать паузу для триггера N, пауза в миллисекундах. Если написать 0, паузы не будет и каждое срабатывание
будет вызывать соответствующее сообщение. Эта пауза нужнад для защиты от "звона" и нескольких срабатываний на "дырках"
в объекте. Меньше 50мс лучше не делать.
- trigtimeN - отображение последнего времени срабатывания триггера N, например, на запрос trigtime0, может быть выведено:
TRIG0=45212.930 (12:33:32)
Если срабатываний с момента включения не было, выведутся нули:
TRIG4=0.000 (00:00:00)
После изменения конфигурации и ее сохранения необходимо нажатием на reset или отключением/включением питания перезагрузить МК,
т.к. некоторые параметры активируются лишь при старте.
****** Девборды и плата-прототип ******
На платках из девборд два канала опторазвязок подключены к триггерам TRIG0 и TRIG1.
Синий провод - земля, красные - +12В для каждого канала. Т.е. схема рассчитана на срабатывание по появлению плюса на одном из каналов.
В случае необходимости срабатывания по подтяжке к земле, нужно разорвать землю на входах опторазвязок и, наоборот, объединить плюсы.
На плюсы подать +12В, минусы подключить к сигнальным выходам створов.
На прототипе распаяны развязки только на два канала: TRIG0 - для подключения чего-то, замыкающего контакты, и TRIG2 - для подключения
чего-то, выдающего 12В. Я оставил такую конфигурацию: к TRIG0 можно подключить нормально замкнутую кнопку (triglevel01), а TRIG2
сработает при поступлении туда 12В (triglevel21).