start documentation writing

This commit is contained in:
eddyem 2019-01-18 11:21:44 +03:00
parent 9304f92664
commit f034d73637
14 changed files with 1491 additions and 249 deletions

734
Doc_rus/Readme.tex Normal file
View File

@ -0,0 +1,734 @@
\documentclass[a4paper,12pt]{extarticle}
\usepackage{listings}
\usepackage{/home/eddy/ed}
\def\lstref#1{(см.~листинг~\ref{#1})}
\lstset{basicstyle=\small\ttfamily,breaklines=true,extendedchars=true,aboveskip=1em,belowcaptionskip=5pt,
prebreak = \hbox{\normalfont\small\hfill\green{\ensuremath{\hookleftarrow}}},
postbreak = \hbox to 0pt{\hss\normalfont\small\green{\ensuremath{\hookrightarrow}}\hspace{1ex}},
commentstyle=\color{blue},showspaces=false,showstringspaces=false,
stringstyle=\bfseries\color[rgb]{0.6,0,1},
keywordstyle=\bfseries\color[rgb]{0,0.1,0.5},
tabsize=4}
\nocolon
\def\Z{Цейсс--1000\xspace}
\title{Многорежимный фотометр--поляриметр (MMPP) телескопа \Z. Техническая документация.}
\author{Емельянов~Э.В. \and Фатхуллин~Т.А.}
\graphicspath{{./imgs/}}
\begin{document}
\maketitle
\tableofcontents
\section{Описание прибора}
MMPP (Multi-Mode Photometer-Polarimeter) "--- многорежимный фотометр-поляриметр телескопа \Z
предназначен для проведения фотометрических и поляриметрических исследований. Прибор оснащен двумя турелями
USB-HSFW (Edmund Optics) с пятью позициями для 50-мм фильтров, анализатором линейной поляризации и
четвертьволновой пластиной. Основным светоприемником фотометра является ПЗС Eagle~V ($2048\times2048\,$пикс),
позволяющий проводить научные исследования в диапазонах от~300 до~1050\,нм с максимумом чувствительности
около 600\,нм. Данный ПЗС оснащен водяным охлаждением. Также прибор рассчитан на использование с быстрым
КМОП-светоприемником Andor NEO~5.5 ($2560\times2160\,$пикс) в режиме <<быстрой фотометрии>> и <<lucky
imaging>>.
В фотометрическом режиме в течение ночи без переоснащения прибора возможна работа в восьми фотометрических
полосах. Изменение рабочего набора фильтров выполняется посредством замены колес в турелях (пять наборов колес
описаны в конфигурации интерфейса управления прибором; нестандартные наборы потребуют изменения конфигурации).
На рис.~\ref{MMPP_optsch} приведена оптическая схема MMPP. Непосредственно на входном фланце закреплен
транслятор поворотной платформы фазовой пластины диаметром 25\,мм. Далее располагается транслятор поворотной
платформы анализатора поляризации диаметром 50\,мм. Последними в корпусе установлены турели фотометрических
фильтров. К задней стенке прибора крепится фланец светоприемника: ПЗС или CMOS.
\TODO[картинка]
\begin{pict}
%\includegraphics{}
\caption{Оптическая схема прибора.}
\label{MMPP_optsch}
\end{pict}
Исходные коды прошивки системы управления, утилит командной строки, принципиальные схемы и pdf-файлы с
чертежами прибора размещены в отдельном репозитории github\footnote{\url{https://github.com/eddyem/mmpp}}.
\section{Оптические характеристики}
\paragraph{Характеристики прибора}
\begin{list}{}{}
\item Теоретическое невиньетированное поле: $11.4'$~в режиме фотометрии, $10.9'$~в режиме линейной поляризации
(оба размера "--- диагонали ПЗС-светоприемника), $2.6'$~в режиме циркулярной поляризации;
\item диагональ светоприемников: ПЗС "--- $10.3'$, КМОП "--- $5.6'$;
\item кривые пропускания фильтров приведены на рис.~\ref{filters_curves};
\item
\end{list}
\TODO[картинки]
\begin{pict}
%\includegraphics{}
\caption{Кривые пропускания фотометрических фильтров системы Джонсона--Коузинса.}
\label{filters_curves}
\end{pict}
\comment[характеристики]{четвертьволновой и поляроида}
\paragraph{Характеристики ПЗС-светоприемника}
\TODO[Тимур]
\section{Механика}
Поворотные платформы фазовой пластины и анализатора поляризации установлены на цилиндрических направляющих,
позволяющих при помощи соединения винт-гайка вводить и выводить их из пучка посредством шаговых двигателей.
Шаг винтового соединения составляет 1\,мм, т.е. поворот шаговых двигателей на один шаг приводит к перемещению
трансляторов на 5\,мкм. Перемещение трансляторов ограничено датчиками Холла~A1101. Точность установки
нуль-пункта трансляторов составляет $\pm0.13\,$мм. В положении <<0>> оба транслятора полностью выведены из
пучка. Полный ход транслятора фазовой пластины составляет около $67.5\,$мм (13500~шагов), транслятора
анализатора поляризации "--- около $145\,$мм (29000~шагов). Положение <<в пучке>> определяется юстировкой
прибора, которую необходимо производить каждый раз после вмешательства в положение трансляторов или концевых
датчиков. В среднем для транслятора фазовой пластины оно составляет 11400~шагов, а для транслятора анализатора
поляризации "--- 16400~шагов.
Четвертьволновая фазовая пластинка приводится во вращение при помощи поворотной платформы 8MPR16-1 фирмы
Standa, в которой аналоговый датчик Холла (служащий для определения нуль-пункта) заменен на A1101 (с
встроенным компаратором и триггером Шмидта). Для вращения анализатора поляризации используется поворотная
платформа 8MR190-2-4233 фирмы Standa. В ней в качестве нуль-пункта используется концевой выключатель.
Конструктивные изменения данной платформы заключаются в удалении разъема типа DS9 и подключения проводки
напрямую (при помощи пайки).
Точность установки нуль-пунктов обеих поворотных платформ составляет~$\pm5'$. Дискрет поворотной платформы
фазовой пластины составляет~$0.75'$ (80~шагов на $1\degr$), дискрет анализатора поляризации "--- $0.6'$
(100~шагов на $1\degr$).
Монтаж фотометра на фланце телескопа \Z выполняется в соответствии с положением меток на фланцах
телескопа и прибора. Аналогично по расположению меток устанавливаются светоприемники. Для удобства
визуализации позиционный угол фланца телескопа должен быть установлен в положение~$337.5\degr$.
\subsection{Система управления}
Так как турели Edmund Optics представляют собой самостоятельные устройства с управлением по USB, система
управления прибором имеет модульную структуру. В приборе размещен USB-концентратор, к которому подключены обе
турели с фильтрами, а также преобразователь интерфейсов USB$\leftrightarrow$TTL для работы с модулями
управления парой шаговых двигателей.
\subsubsection{Турели}
Протокол управления турелями HSFW Edmund Optics не был документирован фирмой-изготовителем, поэтому был
восстановлен методом обратной разработки. Устройство работает через HID-интерфейс и не нуждается для работы в
правах суперпользователя.
Для управления устройством разработана утилита
\verb'HSFW_management'\footnote{\url{https://github.com/eddyem/eddys_snippets/tree/master/HSFW_management},
там же "--- примеры работы с утилитой} \lstref{hsfwman}, полностью реализующая возможности турелей: поиск
среди устройств по идентификатору, названию колеса или названию фильтра; перемещение заданного колеса в
требуемую позицию; реинициализация с перемещением в стартовую позицию; сохранение сведений о фильтрах в
различных колесах в EEPROM устройства.
Турели поддерживают до пяти разных колес с фильтрами. Маркировка колес выполняется при помощи постоянного
магнита, вклеиваемого в соответствующее отверстие на колесе. При подготовке нового колеса необходимо
убедиться, что маркирующий магнит вклеен в соответствии с полярностью магнита, задающего положение нуль-пункта
(см.~рис.~\ref{wheel_naming}).
\TODO[картинка]
\begin{pict}
%\includegraphics{}
\caption{Маркировка колес с фотометрическими фильтрами.}
\label{wheel_naming}
\end{pict}
\begin{lstlisting}[caption=Краткая справка по параметрам утилиты {\tt HSFW\_manage},label=hsfwman]
-H, --home переместиться в стартовую позицию
-N, --wheel-name=arg название колеса
-W, --wheel-id=arg буквенный идентификатор колеса
-h, --help отобразить эту справку
-i, --filter-id=arg идентификатор фильтра, например, "A3"
-n, --filter-name=arg название фильтра
-p, --f-position=arg номер позиции фильтра
-s, --serial=arg серийный номер турели (с начальными нулями)
--list список имен только присутствующих устройств
--list-all список всех сохраненных имен
--rename переименовать сохраненные имена
колес/фильтров
--resetnames сбросить все названия в значения по умолчанию
\end{lstlisting}
\subsubsection{Управление шаговыми двигателями}
Каждый линейный транслятор в совокупности с соответствующей поворотной платформой и управляющим контроллером
оформлен как отдельное устройство. Протокол управления приведен в приложении~\ref{MMPP_control}.
Все управляющие контроллеры размещаются на одной сигнальной шине UART (протокол: 8N1). Сигналы Tx контроллеров
подключаются по схеме <<открытый сток>> с использованием внешней или слабой внутренней подтяжки. Скорость
интерфейса задается в настройках контроллера, по умолчанию это 115200~бод.
Система управления построена на основе микроконтроллера STM32F030 (см.~рис.~\ref{MMPP_scheme}). Запись
микропрограммы выполняется посредством встроенного в микроконтроллер бутлоадера (для его активации на плате
размещены кнопки <<boot>> и <<reset>>). При помощи датчика тока MAX471 возможно измерение потребляемого
двигателями в процессе работы тока. Микроконтроллер формирует сигналы STEP\slash DIR, которые преобразуются в
силовые сигналы для шаговых двигателей при помощи модулей на основе драйверов DRV8825. В случае замены
драйверов, до подключения шаговых двигателей требуется выставить предельный потребляемый ток в соответствии с
таблицей~\ref{MotCurrents} в приложении. Драйверы работают в режиме дробления шага на~16, однако, система
управления не позволит переместить шаговый двигатель на дробное количество шагов, т.к. после окончания
движения двигатель обесточивается.
Система обеспечивает плавный разгон и торможение двигателей (кроме ситуаций наезда на концевик). Интерфейсы
подключения концевых выключателей различаются: для двигателя~1 концевики подключаются к аналоговым входам МК,
что позволяет параллельно ним установить дополнительные кнопки управления с сильной подтяжкой (резисторы
сопротивлением 47~кОм) к земле. Данные кнопки выведены на лицевую панель прибора и позволяют управлять
перемещением трансляторов без компьютера (для проверки работоспособности системы и перемещения транслятора
анализатора поляризации при замене нижней турели светофильтров).
Номер контроллера (по умолчанию "--- 0) хранится во внутренней флеш-памяти МК. Контроллер анализатора
поляризации имеет номер~1, контроллер фазовой пластины "--- 2. В случае замены контроллера до установки его в
прибор необходимо провести базовые настройки в соответствии со списком на стр.~\pageref{MMPP_basesettings}.
Сразу после включения питания контроллеры находятся в неинициализированном состоянии. Для их инициализации в
ручном режиме необходимо сместить все позиционные устройства в положительном направлении на небольшую величину
(для гарантированного съезда с нулевого концевика), а затем двигать их в отрицательном направлении на
количество шагов, превышающее рабочий диапазон "--- для установки на нулевые концевики. Далее до следующего
отключения питания эту процедуру проводить не нужно.
Для удобства управления устройствами MMPP разработана утилита
\verb'MMPP_control'~\footnote{\url{https://github.com/eddyem/mmpp/tree/master/MMPP_control}}
\lstref{mmppcontrman}.
\begin{lstlisting}[caption=Краткая справка по параметрам {\tt MMPP\_control},label=mmppcontrman]
-A, --absmove абсолютное движение (без этого флага заданное
количество шагов рассматривается как
относительное)
-L, --lin1=arg перемещение линейного транслятора поляроида на
N шагов
-R, --rot1=arg вращение поляроида на заданный угол (в градусах)
-S, --stop прекратить любое движение
-a, --sendraw=arg отправить в порт заданную управляющую
последовательность символов напрямую
-d, --comdev=arg имя устройства последовательного порта
-h, --help отобразить данную справку
-l, --lin2=arg перемещение линейного транслятора фазовой
пластины на N шагов
-q, --quiet не отображать никакой информации в stdout
-r, --rot2=arg вращение фазовой пластины на заданный угол
(в градусах)
-s, --status получение состояния устройства
-t, --temp отображение температуры (довольно условной)
микроконтроллеров
-w, --wait ожидание окончания движения узлов (если
предыдущая команда выполнялась с -y)
-y, --async не ожидать окончания движения
\end{lstlisting}
\section{Интерфейс системы управления}
\comment[Тимур]{конфигурационный файл колес}
\label{wheels_config}
\section{Приложения}
\subsection{Замена колес с фильтрами}
Доступ к колесам турелей осуществляется через лицевую панель фотометра. Для замены соответствующего колеса
необходимо ослабить винт, фиксирующий колесо в турели, открыть крышку турели, поменять колеса, затянуть
фиксирующий винт и закрыть крышку турели.
Расположение элементов указано на рис.~\ref{wheel_change}. Доступ к фиксирующему винту нижней турели
осуществляется через боковую крышку. Чтобы ослабить этот винт, необходимо сначала переместить транслятор
анализатора поляризации (контроллер \No\,1) на концевик~1. Это реализуется либо через интерфейс управления
прибором, либо посредством сервисных кнопок, расположенных над боковой крышкой.
\TODO[картинка]
\begin{pict}
%\includegraphics{}
\caption{Расположение элементов турелей.}
\label{wheel_change}
\end{pict}
Первая и вторая кнопки управляют транслятором анализатора поляризации, третья и четвертая "--- транслятором
фазовой пластины. В каждой группе нажатие левой кнопки вызывает движение транслятора в сторону концевика~0,
нажатие правой "--- в сторону концевика~1~(см.~рис.~\ref{buttons}).
\TODO[картинка]
\begin{pict}
%\includegraphics{}
\caption{Расположение кнопок управления положением линейных трансляторов.}
\label{buttons}
\end{pict}
Расположение фильтров в колесе должно быть указано в соответствующем конфигурационном файле интерфейса
системы управления прибором (см.~стр.~\pageref{wheels_config}).
После окончания замены колес турели находятся в неинициализированном состоянии. Для их инициализации
необходимо выполнить одну из процедур: либо проводить замену с отключенным питанием контроллера (в этом
случае инициализация турелей произойдет автоматически, однако, необходимо будет выполнить инициализацию
подвижных элементов MMPP), либо при помощи интерфейса системы управления или утилиты \verb'HSFW_manage'
установить оба колеса в положение <<home>>.
\subsection{Методика установки нуль-пунктов}
Для установки нуль-пунктов линейных трансляторов используются вспомогательные рамки с натянутыми на них
нитяными крестами (см.~рис.~\ref{aux_frames}). Рамки устанавливаются вместо оптических узлов: фазовой
пластины, анализатора поляризации и двух фильтров. Контрольный выходной крест натягивается также на фланец
ПЗС-светоприемника. Для контрольной засветки оптического тракта используется крестообразный лазерный
осветитель, устанавливаемый на специальном фланце во входном окне прибора. Регулировочными винтами необходимо
добиться совмещения центра изображения креста осветителя с центром нитяного креста на фланце ПЗС. Дальнейшая
юстировка производится визуально, либо при помощи вспомогательной видеокамеры с объективом-трансфокатором.
\TODO[картинка]
\begin{pict}
%\includegraphics{}
\caption{Вспомогательные юстировочные рамки.}
\label{aux_frames}
\end{pict}
Юстировка турелей фильтров производится следующим образом. При помощи интерфейса системы управления либо
утилиты \verb'HSFW_manage' в обеих турелях выставляются позиции с нитяными крестами. Далее путем регулировки
трех фиксирующих винтов турель центруется относительно удерживающего цилиндра
(см.~рис.~\ref{turrets_centering}). После центровки турелей оба колеса необходимо установить в положение
<<hole>>, чтобы освободить оптический тракт для установки нуль-пунктов линейных трансляторов.
\TODO[картинка]
\begin{pict}
%\includegraphics{}
\caption{Схема установки турелей с фильтрами.}
\label{turrets_centering}
\end{pict}
Для определения нуль-пунктов трансляторов можно использовать кнопки на боковой панели прибора, при помощи
которых необходимо грубо совместить перекрестие нити в соответствующем оптическом узле с изображением креста
осветителя. Точное совмещение выполняется при помощи интерфейса системы управления или утилиты
\verb'MMPP_control'. По данным \verb'MMPP_control' определяются положения нуль-пунктов \lstref{zeropoints}
транслятора анализатора поляризации (Pol: M0POS) и фазовой пластины (L/4: M0POS).
\begin{lstlisting}[caption=({\tt MMPP\_control -s}),label=zeropoints]
Pol: M0ST M0LEFT M0POS - M1ST M1LEFT M1POS || L/4: M0ST M0LEFT M0POS - M1ST M1LEFT M1POS
Pol: STOP 0 16400 - STOP 0 0 || L/4: STOP 0 11400 - STOP 0 0
ESW00 ESW01 ESW10 ESW11 || ESW00 ESW01 ESW10 ESW11
RLSD RLSD HALL RLSD || RLSD RLSD HALL RLSD
\end{lstlisting}
Для определения положений нуль-пунктов анализатора поляризации и четвертьволновой пластины необходимо
использовать дополнительное оборудование: осветитель, оснащенный поляризатором с известным направлением
поляризации, а также формирователь круговой поляризации с известным направлением вращения (поляризатор и
четвертьволновая пластина). Возможно также определение нуль-пунктов поляризационной оптики при помощи
наблюдения стандартов с линейной и круговой поляризацией.
Определение нуль-пункта анализатора поляризации производится при помощи вспомогательного поляроида,
осветителя с объективом и светоприемника (при достаточной яркости осветителя в качестве светоприемника
возможно использовать фоторезистор). Получить поляризованный в данной плоскости свет можно при помощи
куска поляризующей пленки из жидкокристаллических мониторов. Юстировка плоскости поляризатора производится
при помощи поляризационной стопы, поляризационной призмы (например, призмы Глана) или поляризатора с известным
направлением плоскости поляризации.
После юстировки осветителя необходимо осветить им оптический тракт прибора и сфокусировать на светоприемнике.
Далее требуется линеаризовать показания светоприемника. Это можно сделать, изменяя степень заполнения ШИМ
источника питания осветителя (осветителем может выступать светодиод, для минимизации влияния импульсного
характера осветителя на точность измерений рекомендуется задавать максимальную частоту ШИМ, от 100\,кГц и
выше). В случае использования фоторезистора освещенность хорошо аппроксимируется функцией $I =
a\cdot\exp(b-\ln R)$ (см.~рис.~\ref{photores_cali}). Далее строится зависимость освещенности светоприемника от
угла вращения и по аппроксимации параболой областей вблизи минимумов освещенности определяется положение
скрещенных поляризатора и анализатора, откуда можно определить положение нуль-пункта анализатора поляризации.
После определения нуль-пункта анализатора он выставляется в положение~$90\degr$ по отношению к осветителю, и в
пучок вводится фазовая пластина. Измеряя интенсивность прошедшего света в зависимости от угла вращения
четвертьволновой пластины определяются положения плоскостей ее экстремальных скоростей. Точные значения углов
определяются аналогично "--- из аппроксимации участков вблизи минимумов освещенности
(см.~рис.~\ref{phase_cali}). Для используемой в MMPP четвертьволновой пластины угол между плоскостями
экстремальных скоростей в полосе~R составляет $91.7\degr$. Определить, какая из плоскостей соответствует
максимальной фазовой скорости, можно при помощи источника циркулярно поляризованного света с известным
направлением вращения плоскости поляризации.
\TODO[картинка]
\begin{pict}
%\includegraphics{}
\caption{Пример графика зависимости сопротивления фоторезистора от интенсивности освещения.}
\label{photores_cali}
\end{pict}
\TODO[картинка]
\begin{pict}
%\includegraphics{}
\caption{Интенсивность излучения вблизи плоскостей экстремальных скоростей фазовой пластины.}
\label{phase_cali}
\end{pict}
\subsection{Порядок сборки и замены узлов прибора}
Распайка разъема питания:
1 - земля,
2 - нуль,
3 - фаза.
\TODO[Уйма фотографий со стадиями сборки прибора]
Подключение проводов: Rx/Tx преобразователя UART-USB к Tx/Rx контроллеров; дополнительно можно установить
сильную (около 4.7\,кОм) подтяжку между +3.3\,В и Rx преобразователя.
\subsection{Система управления линейными трансляторами и поворотными платформами прибора}
\label{MMPP_control}
\subsubsection{Принципиальная схема}
Разработанная на основе микроконтроллера STM32F030F4P6 система управления шаговыми двигателями имеет
модульную структуру. Один модуль управляет двумя биполярными шаговыми двигателями (напряжение питания 12\,В)
с опросом пары аналоговых и пары цифровых (активны при замыкании на нуль) концевиков. На
рис.~\ref{MMPP_scheme} приведена принципиальная схема одного модуля.
\begin{pict}
\includegraphics[width=\textwidth]{steppers}
\caption{Принципиальная схема модуля управления шаговыми двигателями.}
\label{MMPP_scheme}
\end{pict}
Суппрессор~D1 совместно с резисторами~R3 и~R4 (допустимо уменьшить при необходимости сопротивление резисторов
до $68\div100\,$Ом) обеспечивает антистатическую защиту входов микроконтроллера по линии UART.
Кнопки~SW1 (<<reset>>) и~SW2 (<<boot>>) обеспечивают выбор режима загрузки микроконтроллера и аппаратный
сброс при отладке (для перехода в режим встроенного загрузчика по UART необходимо нажать кнопку <<boot>>,
затем, удерживая ее, нажать и отпустить кнопку <<reset>>, после чего отпустить кнопку <<boot>>; далее при
помощи утилиты \verb'stm32flash' или команды \verb'make boot' можно записать файл прошивки во флеш-память
микроконтроллера).
Транзистор~Q1 на входе цепи питания обеспечивает защиту от переполюсовки (при подаче питания в правильной
полярности p-канальный MOSFET находится в открытом состоянии, при переполюсовке он закрыт).
Датчик~U2 (MAX471) служит для измерения тока, потребляемого шаговыми двигателями во время работы. Выход
датчика является источником тока (500\,мкА на каждый Ампер измеряемого тока). Резистор~R6 выступает в качестве
его нагрузки, в результате чего напряжение на выходе RC-фильтра на~R7 и~C8 изменяется по закону 0.75\,В на
каждый Ампер измеряемого тока.
Делитель на резисторах~R8 и~R9 позволяет измерять напряжение в цепи питания прибора. Стабилитрон~D3
ограничивает напряжение, подаваемое на вход АЦП микроконтроллера, величиной менее~3.5\,В. Фильтр на~R10 и~C9
обеспечивает сглаживание пульсаций и быстрых изменений напряжения. Выходное напряжение примерно в 5.7~раз
меньше входного.
Драйверы шаговых двигателей DRV8825 в виде чип-модулей устанавливаются в соответствующие гнезда. Подтяжка
контактов модуля M0$\div$M2 к питанию задает требуемый микрошаговый режим. Конденсаторы~C10 и~C11 (low ESR,
минимум 100\,мкФ) обеспечивают сглаживание пульсаций напряжения питания во время работы драйверов.
Разъемы~J3 и~J8 служат для подключения шаговых двигателей и концевых выключателей. Напряжение питания на
датчики Холла для защиты LDO~U1 подается через резистор~R11. Конденсатор~C7 обеспечивает потребление датчика
Холла во время переходных процессов. Антистатическая защита выходов концевых выключателей обеспечивается
резисторами~R12, R13, R15 и~R22 и суппрессором. Резисторы~R23 и~R24 обеспечивают подтяжку к питанию
аналоговых концевиков, имеющих три градации: 0, Vdd/2 и Vdd. Таким образом, кнопки управления линейными
трансляторами необходимо тоже подтянуть к земле резисторами сопротивлением 47\,кОм.
Отдельно назначение каждого вывода микроконтроллера рассмотрено в таблице~\ref{MCUpins}.
\begin{tbl}
\caption{Назначение выводов микроконтроллера. Тип: AIN~-- аналоговый вход, PUPD~-- выход push\slash pull,
OD~-- выход open drain, FIN~-- плавающий вход, FINPU~-- вход с подтяжкой к Vdd.}
\label{MCUpins}
\begin{tabular}{|c|c|l|}
\hline
\tabstrut\bf Pin & \bf Тип & \bf Назначение \\
\hline
PA0 & AIN & Ток шагового двигателя \tabstrut \\
PA1 & AIN & Напряжение питания (12\,В) \\
PA2 & AIN & Концевик~1 двигателя~0 \\
PA3 & AIN & Концевик~0 двигателя~0 \\
PA4 & PUPD & Такты драйвера двигателя~0 (TIM14\_CH1) \\
PA5 & PUPD & Подача питания на двигатель~1 \\
PA6 & PUPD & Такты драйвера двигателя~1 (TIM3\_CH1) \\
PA7 & PUPD & Направление вращения двигателя~1 \\
PA9 & OD & USART1 Tx \\
PA10& FIN & USART1 Rx \\
PA13& FINPU& Концевик~0 двигателя~1 \\
PA14& FINPU& Концевик~1 двигателя~1 \\
PB1 & PUPD & Управление питанием датчика тока \\
PF0 & PUPD & Подача питания на двигатель~0 \\
PF1 & PUPD & Направление вращения двигателя~0 \\
\hline
\end{tabular}
\end{tbl}
\subsubsection{Протокол управления}
Управление контроллерами производится по шине UART (8N1, скорость задана в конфигурации, по умолчанию
115200\,бод). Команды передаются в строковом режиме: признаком окончания команды является символ новой строки.
Микроконтроллер не обрабатывает принимаемые данные до формирования валидной строки. Символы пробела или
табуляции внутри строки игнорируются. Первым в строке следует номер контроллера (число int32). Данный номер
сохраняется во флеш памяти МК во время его инициализации. Каждый модуль обрабатывает лишь те команды, которые
адресованы ему, либо же имеют широковещательную адресацию (в этом случае в качестве адреса указывается -1).
Так как вывод данных микроконтроллером при получении широковещательного идентификатора не блокируется, не
рекомендуется использовать широковещательные посылки при наличии более одного устройства на линии связи (кроме
посылок экстренного останова, сброса и т.п.).
После идентификатора контроллера следует текст команды и (опционально) ее аргументы. В случае, если команда
валидна, контроллер возвращает строку <<ALL OK>>. Если команда не распознана, возвращается маркер ошибки
<<BADCMD>>. В случае же ошибок в аргументах команды возвращается маркер ошибки <<ERR>>. Если команда
возвращает какую-либо информацию, она следует сразу за маркером <<ALL OK>>. Данные, занимающие более одной
строки текста, завершаются маркером <<DATAEND>>. Если команда лишь требует выполнения определенного действия,
маркер <<ALL OK>> возвращается после установления возможности выполнения данного действия. В силу синхронного
характера интерфейса связи, команды, требующие длительного времени на исполнение (например, перемещение
объекта) не выводят в случае ошибки или достижения заданного положения никаких данных, процесс их исполнения
необходимо контролировать периодическим запросом состояния модуля.
Первым символом в строке команды должен быть один из следующих:
\begin{description}\def\itm#1{\rlap{#1}\phantom{(ничего)}}
\item[(ничего)] команда <<ping>>, в ответ на которую устройство выдает сообщение <<ALIVE>>;
\item[\itm{G}] команда-геттер;
\item[\itm{M}] работа с двигателями;
\item[\itm{R}] программная перезагрузка микроконтроллера (первый после перезагрузки геттер <<status>> вернет
значение <<SOFTRESET=1>>);
\item[\itm{S}] команда-сеттер;
\item[\itm{W}] команда записи во флеш-память значений конфигурации из оперативной памяти.
\end{description}
Программная перезагрузка контроллера может использоваться для повторной инициализации счетчиков положения
двигателей (по опорным концевикам нуль-пунктов). Команду записи данных во флеш-память необходимо вызывать
после изменения конфигурации параметров контроллера и проверки геттером <<configuration>> их значения (за
исключением скорости интерфейса UART все изменения конфигурационных данных сразу отражаются на поведении
контроллера).
\paragraph{Команды-геттеры.}
Данные команды предназначены для вывода в терминал определенной информации. Данные выводятся сразу за маркером
<<ALL OK>>. В случае, если они занимают лишь одну строку (возвращается только один параметр), маркер конца
данных не выводится, при выводе же более одного параметра конец вывода обозначается маркером <<DATAEND>>.
\begin{description}\def\itm#1{\rlap{#1}\phantom{XX}}
\item[\itm{A}] запрос результатов измерения АЦП:
\begin{description}
\item[\itm{D}] значение Vdd$\cdot100\,$В, например, {\tt VDD=330} ($Vdd=3.3\,$В);
\item[\itm{I}] потребляемый обоими моторами ток I$\cdot100\,$А, например, {\tt IMOT=70} ($I=0.7\,$А);
\item[\itm{M}] напряжение питания U$\cdot100\,$В, например, {\tt VMOT=1193} ($U=11.93\,$В);
\end{description}
\item[\itm{C}] получение текущих значений параметров конфигурации, например,
\begin{verbatim}
CONFSZ=36
DEVID=0
V12NUM=1
V12DEN=10
I12NUM=1
I12DEN=1
V33NUM=1
V33DEN=1
ESWTHR=150
MOT0SPD=60
MOT1SPD=60
USARTSPD=115200
REVERSE0=0
REVERSE1=0
MAXSTEPS0=0
MAXSTEPS1=0
DATAEND
\end{verbatim}
\item[\itm{R}] получение <<сырых>> данных с АЦП:
\begin{description}
\item[0] ток ШД;
\item[1] напряжение 12\,В;
\item[2] концевик~1 двигателя~0;
\item[3] концевик~0 двигателя~0;
\item[4] внутренняя температура;
\item[5] Vdd.
\end{description}
например,
\begin{verbatim}
ADC[0]=4095
ADC[1]=2340
ADC[2]=4095
ADC[3]=4087
ADC[4]=1665
ADC[5]=1532
DATAEND
\end{verbatim}
\item[\itm{S}] состояние двигателей (возвращает описанные ниже переменные \verb'MOTORx', \verb'ESWxy',
\verb'POSx' и \verb'STEPSLEFTx').
\item[\itm{T}] условная температура микроконтроллера, например, \verb'TEMP=365'.
\end{description}
\paragraph{Геттеры состояния.}\label{stategetters}
В переменных \verb'MOTORx' ({\tt x} "--- номер двигателя, 0 или 1) хранится текущее состояние конечного
автомата шаговых двигателей.
Ее значение может быть одним из следующих:
\begin{description}\def\itm#1{\rlap{#1}\phantom{STOPZERO}}
\item[\itm{ACCEL}] состояние разгона "--- начало движения;
\item[\itm{DECEL}] состояние торможения "--- окончание движения;
\item[\itm{MOVE}] движение с постоянной скоростью;
\item[\itm{MOVETO0}] бесконечное движение до достижения концевика~0;
\item[\itm{MOVETO1}] бесконечное движение до достижения концевика~1;
\item[\itm{MVSLOW}] движение с наименьшей постоянной скоростью (в случае перемещения на малое количество
шагов);
\item[\itm{SLEEP}] ожидание команд, движение отсутствует;
\item[\itm{STOP}] окончание движения (по запросу);
\item[\itm{STOPZERO}] окончание движения с обнулением положения;
\item[\itm{UNKNOWN}] неизвестное состояние "--- ошибка.
\end{description}
Переменные \verb'ESWxy', где {\tt y}~-- номер концевика (0 или 1), {\tt x}~-- номер двигателя (0 или 1)
отражают состояние концевых выключателей и кнопок.
\begin{description}\def\itm#1{\rlap{#1}\phantom{RLSD}}
\item[\itm{BTN}] (только для концевиков двигателя~0) нажата кнопка;
\item[\itm{ERR}] (только для концевиков двигателя~0) уровень вне допустимых диапазонов;
\item[\itm{HALL}] активен датчик Холла (логический~0);
\item[\itm{RLSD}] концевик неактивен (логическая~1).
\end{description}
Текущее положение (в шагах) двигателя характеризуется переменной \verb'POSx' ({\tt x}~-- номер мотора, 0
или~1). Если ее значение отрицательно, требуется инициализация данного двигателя (движение до концевика~0).
Во время движения геттер состояния возвращает также значение переменной \verb'STEPSLEFTx' "--- оставшееся
количество шагов.
В случае, если до вызова геттера состояния контроллера произошел его сброс (программный сброс, инициированный
пользователем, либо сброс, инициированный watchdog'ом), геттер вернет дополнительно одну из двух переменных:
\verb'SOFTRESET=1' или \verb'WDGRESET=1'.
Внимание! После вызова данного геттера переменные не завершаются маркером <<DATAEND>>!
Пример:
\begin{lstlisting}
SOFTRESET=1
MOTOR0=SLEEP
POS0=-1
ESW00=ERR
ESW01=BTN
MOTOR1=SLEEP
POS1=-1
ESW10=HALL
ESW11=HALL
\end{lstlisting}
\paragraph{Команды работы с двигателями.}
Следующим символом после этой команды должен быть номер двигателя (0 или 1), в случае ошибки будет возвращен
ответ \verb'Num>1'. В данной группе всего две команды:
\begin{description}\def\itm#1{\rlap{#1}\phantom{Mnum}}
\item[\itm{Mnum}] перемещение двигателя на \textbf{num} (положительное или отрицательное целое) шагов, в
случае ошибки возможны следующие варианты ответа:
\begin{description}\def\itm#1{\rlap{#1}\phantom{TooBigNumber}}
\item[\itm{BadSteps}] \textbf{num} не является числом;
\item[\itm{IsMoving}] двигатель находится в состоянии движения;
\item[\itm{OnEndSwitch}] двигатель находится на концевике, запрещающем движение в заданном направлении;
\item[\itm{ZeroMove}] \textbf{num} равно нулю;
\item[\itm{TooBigNumber}] значение \textbf{num} превышает системное \verb'MAXSTEPSx';
\end{description}
\item[\itm{S}] остановить двигатель.
\end{description}
\paragraph{Команды-сеттеры.}
При нормальном завершении команда-сеттер изменяет значение соответствующей переменной в оперативной памяти и
(за исключением скорости интерфейса UART) данные изменения сразу же отражаются на поведении контроллера. Для
постоянного сохранения изменений во флеш-памяти МК необходимо дать команду записи во флеш-память после всех
проведенных изменений и их проверки.
\begin{description}\def\itm#1{\rlap{#1}\phantom{M\#num}}
\item[\itm{C\#num}] изменение значения текущей скорости двигателя с номером \textbf{\#} на \textbf{num}
(данное изменение действует лишь до окончания движения двигателя);
\item[\itm{Dxnum}] установка знаменателя (\textbf{d}enominator) величины \textbf{x} (D, I или M~-- в
соответствии с геттером значения измерений АЦП) в \textbf{num};
\item[\itm{Exnum}] установка числителя (num\textbf{e}rator) (аналогично \textbf{Dxnum});
\item[\itm{I num}] изменение значения идентификатора (целое число) контроллера;
\item[\itm{M\#num}] установка максимального диапазона (\textbf{num} от~1 до~65535) шагового двигателя
\textbf{\#};
\item[\itm{P num}] включение (\textbf{num} равно нулю) или отключение (\textbf{num} отсутствует или любое,
кроме нуля) внутренней подтяжки на UART Tx;
\item[\itm{R\#num}] реверсивное движение двигателя \textbf{\#} (\textbf{num} равное нулю отключает реверс),
в режиме реверса меняется только направление вращения двигателя, но не обрабатываемые концевики;
\item[\itm{S\#num}] изменение значения максимальной скорости двигателя с номером \textbf{\#} на \textbf{num}
(максимальная скорость устанавливается после окончания движения с ускорением и не зависит от
текущей скорости, \textbf{C\#num});
\item[\itm{T num}] изменение пороговых величин (\textbf{num} в ADU) для градации состояний концевика
двигателя~0 (0..num~-- датчик Холла, 2048-num..2048+num~-- пользовательская кнопка,
4096-num..4095~-- свободное состояние);
\item[\itm{U num}] изменение скорости UART.
\end{description}
\paragraph{Сеттеры скорости двигателей.}
Для установки значения скорости в \textbf{N} шагов в секунду, используются сеттеры \textbf{C} или \textbf{S}.
Их аргумент имеет значение $3000/N$. Например, чтобы дать команду контроллеру с идентификатором <<0>>
изменить текущую скорость вращения двигателя~0 на 50~шагов в секунду, необходимо передать команду
\textbf{0SC060} (0~-- номер контроллера, S~-- сеттер, C~-- текущая скорость, 0~-- двигатель~0, $60=3000/50$).
\paragraph{Сеттеры числителя и знаменателя.} Сеттеры \textbf{Dxnum} (знаменатель) и \textbf{Exnum}
(числитель) устанавливают величины соответствующих аппроксимаций к коэффициентам перевода измеренных АЦП
величин из ADU в физические величины. Следует учитывать, что при расчетах используется беззнаковая
целочисленная 32-битная математика, поэтому во избежание переполнения не следует задавать слишком большие
величины. В качестве параметра \textbf{x} используется мнемоника из соответствующего геттера (\textbf{D}~--
Vdd, \textbf{I}~-- потребляемый ток, \textbf{M}~-- напряжение питания). Для преобразования числа с плавающей
точкой в несократимую арифметическую дробь можно использовать функцию Octave \verb'rat()'. Например, для
преобразования коэффициента~$1.23$ в несократимую дробь с точностью~$0.1$:
{\lstset{language=Octave}
\begin{lstlisting}
[N D] = rat(1.23,0.01)
N = 16
D = 13
\end{lstlisting}}
Полученное приближение~$16/13=1.2308$ лежит в заданных точностных рамках.
\paragraph{Сеттер идентификатора устройства.} Сразу после получения нового идентификатора, устройство
перестает откликаться на команды со старым идентификатором. Поэтому в случае проблем (устройство
<<потеряно>>) необходимо произвести перезагрузку устройства кратковременным нажатием на кнопку <<reset>> или
кратковременным отключением питания. Если же устройство является единственным на линии связи, можно
обратиться к нему по <<широковещательному>> идентификатору <<-1>>.
\subsubsection{Состояние устройства и базовые настройки}
Состояние устройства в \verb'MMPP_control' отображается четырьмя строками, например:
\begin{lstlisting}
Pol: M0ST M0LEFT M0POS - M1ST M1LEFT M1POS || L/4: M0ST M0LEFT M0POS - M1ST M1LEFT M1POS
Pol: STOP 0 16400 - STOP 0 0 || L/4: STOP 0 11400 - STOP 0 0
ESW00 ESW01 ESW10 ESW11 || ESW00 ESW01 ESW10 ESW11
RLSD RLSD HALL RLSD || RLSD RLSD HALL RLSD
\end{lstlisting}
Нечетные строки "--- название полей в четных строках. Две вертикальные линии разделяют поля первого и второго
контроллера (в первой группе они имеют соответствующие пометки: <<Pol>> и <<L/4>>).
\begin{description}\def\itm#1{\rlap{#1}\phantom{MxLEFT}}
\item[\itm{MxST}] состояние двигателей~0 и~1;
\item[\itm{MxLEFT}] количество оставшихся шагов;
\item[\itm{MxPOS}] текущее положение двигателей;
\item[\itm{ESWxy}] состояние концевика \textbf{y} двигателя \textbf{x}.
\end{description}
Значение полей описано в пункте <<Геттеры состояния>> на стр.~\pageref{stategetters}.
\paragraph{Базовые настройки.}\label{MMPP_basesettings}
Параметры текущей конфигурации контроллера можно получить при помощи геттера конфигурации. Например,
\begin{lstlisting}[caption=Базовые настройки контроллеров]
MMPP_control -a 1GC
Send raw string: 1GC
Receive:
CONFSZ=36
DEVID=1
V12NUM=605
V12DEN=94
I12NUM=3
I12DEN=4
V33NUM=1
V33DEN=1
ESWTHR=500
MOT0SPD=3
MOT1SPD=5
MAXSTEPS0=50000
MAXSTEPS1=50000
INTPULLUP=1
USARTSPD=115200
REVERSE0=1
REVERSE1=0
DATAEND
MMPP_control -a 2GC
Send raw string: 2GC
Receive:
CONFSZ=36
DEVID=2
V12NUM=605
V12DEN=94
I12NUM=3
I12DEN=4
V33NUM=1
V33DEN=1
ESWTHR=500
MOT0SPD=3
MOT1SPD=2
MAXSTEPS0=50000
MAXSTEPS1=50000
INTPULLUP=1
USARTSPD=115200
REVERSE0=0
REVERSE1=1
DATAEND
\end{lstlisting}
В случае замены контроллера необходимо записать в новый чип конфигурацию, соответствующую заменяемому.
Важными параметрами являются \verb'DEVID' (идентификатор устройства), \verb'ESWTHR' (порог реакции на
изменение уровня на концевиках двигателя~0, \verb'MOTxSPD' (предельные скорости соответствующих двигателей),
\verb'MAXSTEPSx' (максимальное количество шагов данного двигателя), \verb'INTPULLUP' (при отсутствии внешней
подтяжки шины~Tx контроллеров отключенная подтяжка приведет к неработоспособности), \verb'USARTSPD' (скорость
шины UART) и \verb'REVERSEx' (направление вращения двигателя).
\paragraph{Значения предельных токов DRV8825.} \label{MotCurrents}
Предельные токи определяются по уровню напряжения на подстроечных резисторах DRV8825.
\TODO[ТОКИ!]
\end{document}

BIN
Doc_rus/imgs/steppers.pdf Normal file

Binary file not shown.

View File

@ -5,8 +5,9 @@ MMPP (Multimode photometer-polarimeter) for the telescope Zeiss-1000 of SAO RAS.
## Directory structure
- **metal** --- all drawings for elements made in SAO
- **Doc_rus** --- some documentation
- **electronics** --- schematics and PCB (in kicad) of control system
- **metal** --- all drawings for elements made in SAO
- **MMPP_control** --- simple CLI for moving parts control
- **STM32** --- firmware sources

View File

@ -48,7 +48,7 @@ void adc_setup(){
/* (3) Wait HSI14 is ready */
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; /* (1) */
RCC->CR2 |= RCC_CR2_HSI14ON; /* (2) */
while ((RCC->CR2 & RCC_CR2_HSI14RDY) == 0) /* (3) */
while ((RCC->CR2 & RCC_CR2_HSI14RDY) == 0){}; /* (3) */
/* (1) Ensure that ADEN = 0 */
/* (2) Clear ADEN */
/* (3) Launch the calibration by setting ADCAL */
@ -62,7 +62,7 @@ void adc_setup(){
/* (2) Wait until ADC ready */
do{
ADC1->CR |= ADC_CR_ADEN; /* (1) */
}while ((ADC1->ISR & ADC_ISR_ADRDY) == 0) /* (2) */;
}while ((ADC1->ISR & ADC_ISR_ADRDY) == 0); /* (2) */;
/* (1) Select HSI14 by writing 00 in CKMODE (reset value) */
/* (2) Select the continuous mode */
/* (3) Select CHSEL0..3, 16,17 */

View File

@ -119,7 +119,7 @@ int main(void){
//def EBUG
if(msgctr > Tms || Tms - msgctr > 4999){ // once per 5 seconds
msgctr = Tms;
txt = "hello";
txt = "hello, I'm alive!\n";
}
#endif
/*

View File

@ -338,15 +338,16 @@ static char *set_something(char *str){
return setDevId(str);
break;
case 'M': // set maxsteps
setmotvals('M', str);
return setmotvals('M', str);
break;
case 'P': // set pullup
omitwsp(str);
if(*str == '0') the_conf.intpullup = 0;
else the_conf.intpullup = 1;
return ALLOK;
break;
case 'R': // set reverse
setmotvals('R', str);
return setmotvals('R', str);
break;
case 'S': // set speed
return setMotSpeed(0, str);

Binary file not shown.

View File

@ -79,7 +79,7 @@ void USART1_config(){
/* Configure USART1 */
/* (1) oversampling by 16, set speed */
/* (2) 8 data bit, 1 start bit, 1 stop bit, no parity */
USART1->BRR = 48000000 / the_conf.usartspd; /* (1) */
USART1->BRR = 48000000UL / the_conf.usartspd; /* (1) */
USART1->CR1 = USART_CR1_TE | USART_CR1_RE | USART_CR1_UE; /* (2) */
/* polling idle frame Transmission */
while(!(USART1->ISR & USART_ISR_TC)){}

Binary file not shown.

View File

@ -1,11 +1,11 @@
EESchema-LIBRARY Version 2.3
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# +12V
# steppers-rescue_+12V
#
DEF +12V #PWR 0 0 Y Y 1 F P
DEF steppers-rescue_+12V #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "+12V" 0 140 50 H V C CNN
F1 "steppers-rescue_+12V" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
@ -16,14 +16,13 @@ X +12V 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# +3V3
# steppers-rescue_+3.3V
#
DEF +3V3 #PWR 0 0 Y Y 1 F P
DEF steppers-rescue_+3.3V #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "+3V3" 0 140 50 H V C CNN
F1 "steppers-rescue_+3.3V" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
ALIAS +3.3V
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
@ -32,11 +31,11 @@ X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# C
# steppers-rescue_C
#
DEF C C 0 10 N Y 1 F N
DEF steppers-rescue_C C 0 10 N Y 1 F N
F0 "C" 25 100 50 H V L CNN
F1 "C" 25 -100 50 H V L CNN
F1 "steppers-rescue_C" 25 -100 50 H V L CNN
F2 "" 38 -150 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -50,11 +49,11 @@ X ~ 2 0 -150 110 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CP
# steppers-rescue_CP
#
DEF CP C 0 10 N Y 1 F N
DEF steppers-rescue_CP C 0 10 N Y 1 F N
F0 "C" 25 100 50 H V L CNN
F1 "CP" 25 -100 50 H V L CNN
F1 "steppers-rescue_CP" 25 -100 50 H V L CNN
F2 "" 38 -150 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -73,11 +72,11 @@ X ~ 2 0 -150 110 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CP_Small
# steppers-rescue_CP_Small
#
DEF CP_Small C 0 10 N N 1 F N
DEF steppers-rescue_CP_Small C 0 10 N N 1 F N
F0 "C" 10 70 50 H V L CNN
F1 "CP_Small" 10 -80 50 H V L CNN
F1 "steppers-rescue_CP_Small" 10 -80 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -93,11 +92,11 @@ X ~ 2 0 -100 73 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_01x02
# steppers-rescue_Conn_01x02
#
DEF Conn_01x02 J 0 40 Y N 1 F N
DEF steppers-rescue_Conn_01x02 J 0 40 Y N 1 F N
F0 "J" 0 100 50 H V C CNN
F1 "Conn_01x02" 0 -200 50 H V C CNN
F1 "steppers-rescue_Conn_01x02" 0 -200 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -117,11 +116,11 @@ X Pin_2 2 -200 -100 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_01x03
# steppers-rescue_Conn_01x03
#
DEF Conn_01x03 J 0 40 Y N 1 F N
DEF steppers-rescue_Conn_01x03 J 0 40 Y N 1 F N
F0 "J" 0 200 50 H V C CNN
F1 "Conn_01x03" 0 -200 50 H V C CNN
F1 "steppers-rescue_Conn_01x03" 0 -200 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -143,11 +142,11 @@ X Pin_3 3 -200 -100 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_01x08
# steppers-rescue_Conn_01x08
#
DEF Conn_01x08 J 0 40 Y N 1 F N
DEF steppers-rescue_Conn_01x08 J 0 40 Y N 1 F N
F0 "J" 0 400 50 H V C CNN
F1 "Conn_01x08" 0 -500 50 H V C CNN
F1 "steppers-rescue_Conn_01x08" 0 -500 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -179,11 +178,11 @@ X Pin_8 8 -200 -400 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_02x05_Odd_Even
# steppers-rescue_Conn_02x05_Odd_Even
#
DEF Conn_02x05_Odd_Even J 0 40 Y N 1 F N
DEF steppers-rescue_Conn_02x05_Odd_Even J 0 40 Y N 1 F N
F0 "J" 50 300 50 H V C CNN
F1 "Conn_02x05_Odd_Even" 50 -300 50 H V C CNN
F1 "steppers-rescue_Conn_02x05_Odd_Even" 50 -300 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -207,6 +206,7 @@ S 150 5 100 -5 1 1 6 N
S 150 105 100 95 1 1 6 N
S 150 205 100 195 1 1 6 N
X Pin_1 1 -200 200 150 R 50 50 1 1 P
X Pin_10 10 300 -200 150 L 50 50 1 1 P
X Pin_2 2 300 200 150 L 50 50 1 1 P
X Pin_3 3 -200 100 150 R 50 50 1 1 P
X Pin_4 4 300 100 150 L 50 50 1 1 P
@ -215,15 +215,14 @@ X Pin_6 6 300 0 150 L 50 50 1 1 P
X Pin_7 7 -200 -100 150 R 50 50 1 1 P
X Pin_8 8 300 -100 150 L 50 50 1 1 P
X Pin_9 9 -200 -200 150 R 50 50 1 1 P
X Pin_10 10 300 -200 150 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# D_Zener
# steppers-rescue_D_Zener
#
DEF D_Zener D 0 40 N N 1 F N
DEF steppers-rescue_D_Zener D 0 40 N N 1 F N
F0 "D" 0 100 50 H V C CNN
F1 "D_Zener" 0 -100 50 H V C CNN
F1 "steppers-rescue_D_Zener" 0 -100 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -242,11 +241,11 @@ X A 2 150 0 100 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# GND
# steppers-rescue_GND
#
DEF GND #PWR 0 0 Y Y 1 F P
DEF steppers-rescue_GND #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "GND" 0 -150 50 H V C CNN
F1 "steppers-rescue_GND" 0 -150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
@ -255,11 +254,11 @@ X GND 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# LM1117-3.3-RESCUE-steppers
# steppers-rescue_LM1117-3.3-RESCUE-steppers
#
DEF LM1117-3.3-RESCUE-steppers U 0 10 Y Y 1 F N
DEF steppers-rescue_LM1117-3.3-RESCUE-steppers U 0 10 Y Y 1 F N
F0 "U" -150 125 50 H V C CNN
F1 "LM1117-3.3-RESCUE-steppers" 0 125 50 H V L CNN
F1 "steppers-rescue_LM1117-3.3-RESCUE-steppers" 0 125 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -277,11 +276,11 @@ X VO 4 300 -100 100 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# MAX471
# steppers-rescue_MAX471
#
DEF MAX471 U 0 20 Y Y 1 F N
DEF steppers-rescue_MAX471 U 0 20 Y Y 1 F N
F0 "U" -300 350 50 H V L CNN
F1 "MAX471" 0 350 50 H V L CNN
F1 "steppers-rescue_MAX471" 0 350 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -301,24 +300,24 @@ X OUT 8 400 -200 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# PWR_FLAG
# steppers-rescue_PWR_FLAG
#
DEF PWR_FLAG #FLG 0 0 N N 1 F P
DEF steppers-rescue_PWR_FLAG #FLG 0 0 N N 1 F P
F0 "#FLG" 0 75 50 H I C CNN
F1 "PWR_FLAG" 0 150 50 H V C CNN
F1 "steppers-rescue_PWR_FLAG" 0 150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
X pwr 1 0 0 0 U 50 50 0 0 w
P 6 0 1 0 0 0 0 50 -40 75 0 100 40 75 0 50 N
X pwr 1 0 0 0 U 50 50 0 0 w
ENDDRAW
ENDDEF
#
# Q_PMOS_GSD
# steppers-rescue_Q_PMOS_GSD
#
DEF Q_PMOS_GSD Q 0 0 Y N 1 F N
DEF steppers-rescue_Q_PMOS_GSD Q 0 0 Y N 1 F N
F0 "Q" 200 50 50 H V L CNN
F1 "Q_PMOS_GSD" 200 -50 50 H V L CNN
F1 "steppers-rescue_Q_PMOS_GSD" 200 -50 50 H V L CNN
F2 "" 200 100 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
@ -346,11 +345,11 @@ X D 3 100 200 100 D 50 50 1 1 P
ENDDRAW
ENDDEF
#
# R
# steppers-rescue_R
#
DEF R R 0 0 N Y 1 F N
DEF steppers-rescue_R R 0 0 N Y 1 F N
F0 "R" 80 0 50 V V C CNN
F1 "R" 0 0 50 V V C CNN
F1 "steppers-rescue_R" 0 0 50 V V C CNN
F2 "" -70 0 50 V I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
@ -364,18 +363,17 @@ X ~ 2 0 -150 50 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# SP0502BAHT
# steppers-rescue_SP0502BAHT
#
DEF SP0502BAHT D 0 40 Y N 1 F N
DEF steppers-rescue_SP0502BAHT D 0 40 Y N 1 F N
F0 "D" 225 100 50 H V L CNN
F1 "SP0502BAHT" 225 25 50 H V L CNN
F1 "steppers-rescue_SP0502BAHT" 225 25 50 H V L CNN
F2 "TO_SOT_Packages_SMD:SOT-23" 225 -50 50 H I L CNN
F3 "" 125 125 50 H I C CNN
$FPLIST
SOT?23*
$ENDFPLIST
DRAW
X A 3 0 -200 100 U 50 50 0 0 I
S -175 100 175 -100 0 1 10 f
P 2 0 1 0 -100 100 -100 50 N
P 2 0 1 0 0 -50 0 -100 N
@ -385,23 +383,23 @@ P 4 0 1 0 -100 0 -100 -50 100 -50 100 0 N
P 4 0 1 0 -100 50 -75 0 -125 0 -100 50 F
P 4 0 1 0 50 75 75 50 125 50 150 25 N
P 4 0 1 0 100 50 75 0 125 0 100 50 F
X A 3 0 -200 100 U 50 50 0 0 I
X K 1 -100 200 100 D 50 50 1 1 I
X K 2 100 200 100 D 50 50 1 1 I
ENDDRAW
ENDDEF
#
# SP0504BAHT
# steppers-rescue_SP0504BAHT
#
DEF SP0504BAHT D 0 40 Y N 1 F N
DEF steppers-rescue_SP0504BAHT D 0 40 Y N 1 F N
F0 "D" 300 100 50 H V L CNN
F1 "SP0504BAHT" 300 25 50 H V L CNN
F1 "steppers-rescue_SP0504BAHT" 300 25 50 H V L CNN
F2 "TO_SOT_Packages_SMD:SOT-23-5" 300 -50 50 H I L CNN
F3 "" 125 125 50 H I C CNN
$FPLIST
SOT?23*
$ENDFPLIST
DRAW
X A 2 0 -200 100 U 50 50 0 0 I
S -175 100 275 -100 0 1 10 f
P 2 0 1 0 -100 100 -100 50 N
P 2 0 1 0 0 -50 0 -100 N
@ -420,6 +418,7 @@ P 4 0 1 0 50 75 75 50 125 50 150 25 N
P 4 0 1 0 100 50 75 0 125 0 100 50 F
P 4 0 1 0 150 75 175 50 225 50 250 25 N
P 4 0 1 0 200 50 175 0 225 0 200 50 F
X A 2 0 -200 100 U 50 50 0 0 I
X K 1 -100 200 100 D 50 50 1 1 I
X K 3 0 200 100 D 50 50 1 1 I
X K 4 100 200 100 D 50 50 1 1 I
@ -427,26 +426,17 @@ X K 5 200 200 100 D 50 50 1 1 I
ENDDRAW
ENDDEF
#
# STM32F030F4Px
# steppers-rescue_STM32F030F4Px
#
DEF STM32F030F4Px U 0 40 Y Y 1 L N
DEF steppers-rescue_STM32F030F4Px U 0 40 Y Y 1 L N
F0 "U" -1600 925 50 H V L BNN
F1 "STM32F030F4Px" 1600 925 50 H V R BNN
F1 "steppers-rescue_STM32F030F4Px" 1600 925 50 H V R BNN
F2 "Housings_SSOP:TSSOP-20_4.4x6.5mm_Pitch0.65mm" 1600 875 50 H I R TNN
F3 "" 0 0 50 H I C CNN
DRAW
S -1600 -800 1600 900 0 1 10 f
X BOOT0 1 -1700 400 100 R 50 50 1 1 I
X PF0/RCC_OSC_IN 2 -1700 -200 100 R 50 50 1 1 I
X PF1/RCC_OSC_OUT 3 -1700 -300 100 R 50 50 1 1 I
X NRST 4 -1700 600 100 R 50 50 1 1 I
X VDDA 5 0 1000 100 D 50 50 1 1 W
X ADC_IN0/RTC_TAMP2/SYS_WKUP1/USART1_CTS/PA0 6 1700 600 100 L 50 50 1 1 B
X ADC_IN1/USART1_DE/USART1_RTS/PA1 7 1700 500 100 L 50 50 1 1 B
X ADC_IN2/USART1_TX/PA2 8 1700 400 100 L 50 50 1 1 B
X ADC_IN3/USART1_RX/PA3 9 1700 300 100 L 50 50 1 1 B
X ADC_IN4/SPI1_NSS/TIM14_CH1/USART1_CK/PA4 10 1700 200 100 L 50 50 1 1 B
X SYS_SWCLK/USART1_TX/PA14 20 1700 -500 100 L 50 50 1 1 B
X ADC_IN5/SPI1_SCK/PA5 11 1700 100 100 L 50 50 1 1 B
X ADC_IN6/SPI1_MISO/TIM16_CH1/TIM1_BKIN/TIM3_CH1/PA6 12 1700 0 100 L 50 50 1 1 B
X ADC_IN7/SPI1_MOSI/TIM14_CH1/TIM17_CH1/TIM1_CH1N/TIM3_CH2/PA7 13 1700 -100 100 L 50 50 1 1 B
@ -456,14 +446,23 @@ X VDD 16 -100 1000 100 D 50 50 1 1 W
X I2C1_SCL/TIM1_CH2/USART1_TX/PA9 17 1700 -200 100 L 50 50 1 1 B
X I2C1_SDA/TIM17_BKIN/TIM1_CH3/USART1_RX/PA10 18 1700 -300 100 L 50 50 1 1 B
X IR_OUT/SYS_SWDIO/PA13 19 1700 -400 100 L 50 50 1 1 B
X PF0/RCC_OSC_IN 2 -1700 -200 100 R 50 50 1 1 I
X SYS_SWCLK/USART1_TX/PA14 20 1700 -500 100 L 50 50 1 1 B
X PF1/RCC_OSC_OUT 3 -1700 -300 100 R 50 50 1 1 I
X NRST 4 -1700 600 100 R 50 50 1 1 I
X VDDA 5 0 1000 100 D 50 50 1 1 W
X ADC_IN0/RTC_TAMP2/SYS_WKUP1/USART1_CTS/PA0 6 1700 600 100 L 50 50 1 1 B
X ADC_IN1/USART1_DE/USART1_RTS/PA1 7 1700 500 100 L 50 50 1 1 B
X ADC_IN2/USART1_TX/PA2 8 1700 400 100 L 50 50 1 1 B
X ADC_IN3/USART1_RX/PA3 9 1700 300 100 L 50 50 1 1 B
ENDDRAW
ENDDEF
#
# SW_Push
# steppers-rescue_SW_Push
#
DEF SW_Push SW 0 40 N N 1 F N
DEF steppers-rescue_SW_Push SW 0 40 N N 1 F N
F0 "SW" 50 100 50 H V L CNN
F1 "SW_Push" 0 -60 50 H V C CNN
F1 "steppers-rescue_SW_Push" 0 -60 50 H V C CNN
F2 "" 0 200 50 H I C CNN
F3 "" 0 200 50 H I C CNN
DRAW

View File

@ -1,6 +1,259 @@
EESchema-LIBRARY Version 2.3
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# +12V
#
DEF +12V #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "+12V" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +12V 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# +3.3V
#
DEF +3.3V #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "+3.3V" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# C
#
DEF C C 0 10 N Y 1 F N
F0 "C" 25 100 50 H V L CNN
F1 "C" 25 -100 50 H V L CNN
F2 "" 38 -150 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
C_*
$ENDFPLIST
DRAW
P 2 0 1 20 -80 -30 80 -30 N
P 2 0 1 20 -80 30 80 30 N
X ~ 1 0 150 110 D 50 50 1 1 P
X ~ 2 0 -150 110 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CP
#
DEF CP C 0 10 N Y 1 F N
F0 "C" 25 100 50 H V L CNN
F1 "CP" 25 -100 50 H V L CNN
F2 "" 38 -150 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
CP_*
$ENDFPLIST
DRAW
S -90 20 -90 40 0 1 0 N
S -90 20 90 20 0 1 0 N
S 90 -20 -90 -40 0 1 0 F
S 90 40 -90 40 0 1 0 N
S 90 40 90 20 0 1 0 N
P 2 0 1 0 -70 90 -30 90 N
P 2 0 1 0 -50 110 -50 70 N
X ~ 1 0 150 110 D 50 50 1 1 P
X ~ 2 0 -150 110 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CP_Small
#
DEF CP_Small C 0 10 N N 1 F N
F0 "C" 10 70 50 H V L CNN
F1 "CP_Small" 10 -80 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
CP_*
$ENDFPLIST
DRAW
S -60 -12 60 -27 0 1 0 F
S -60 27 60 12 0 1 0 N
P 2 0 1 0 -50 60 -30 60 N
P 2 0 1 0 -40 50 -40 70 N
X ~ 1 0 100 73 D 50 50 1 1 P
X ~ 2 0 -100 73 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_01x02
#
DEF Conn_01x02 J 0 40 Y N 1 F N
F0 "J" 0 100 50 H V C CNN
F1 "Conn_01x02" 0 -200 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_??x*mm*
Connector*:*1x??x*mm*
Pin?Header?Straight?1X*
Pin?Header?Angled?1X*
Socket?Strip?Straight?1X*
Socket?Strip?Angled?1X*
$ENDFPLIST
DRAW
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 50 50 -150 1 1 10 f
X Pin_1 1 -200 0 150 R 50 50 1 1 P
X Pin_2 2 -200 -100 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_01x03
#
DEF Conn_01x03 J 0 40 Y N 1 F N
F0 "J" 0 200 50 H V C CNN
F1 "Conn_01x03" 0 -200 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_??x*mm*
Connector*:*1x??x*mm*
Pin?Header?Straight?1X*
Pin?Header?Angled?1X*
Socket?Strip?Straight?1X*
Socket?Strip?Angled?1X*
$ENDFPLIST
DRAW
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 105 0 95 1 1 6 N
S -50 150 50 -150 1 1 10 f
X Pin_1 1 -200 100 150 R 50 50 1 1 P
X Pin_2 2 -200 0 150 R 50 50 1 1 P
X Pin_3 3 -200 -100 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_01x08
#
DEF Conn_01x08 J 0 40 Y N 1 F N
F0 "J" 0 400 50 H V C CNN
F1 "Conn_01x08" 0 -500 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_??x*mm*
Connector*:*1x??x*mm*
Pin?Header?Straight?1X*
Pin?Header?Angled?1X*
Socket?Strip?Straight?1X*
Socket?Strip?Angled?1X*
$ENDFPLIST
DRAW
S -50 -395 0 -405 1 1 6 N
S -50 -295 0 -305 1 1 6 N
S -50 -195 0 -205 1 1 6 N
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 105 0 95 1 1 6 N
S -50 205 0 195 1 1 6 N
S -50 305 0 295 1 1 6 N
S -50 350 50 -450 1 1 10 f
X Pin_1 1 -200 300 150 R 50 50 1 1 P
X Pin_2 2 -200 200 150 R 50 50 1 1 P
X Pin_3 3 -200 100 150 R 50 50 1 1 P
X Pin_4 4 -200 0 150 R 50 50 1 1 P
X Pin_5 5 -200 -100 150 R 50 50 1 1 P
X Pin_6 6 -200 -200 150 R 50 50 1 1 P
X Pin_7 7 -200 -300 150 R 50 50 1 1 P
X Pin_8 8 -200 -400 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_02x05_Odd_Even
#
DEF Conn_02x05_Odd_Even J 0 40 Y N 1 F N
F0 "J" 50 300 50 H V C CNN
F1 "Conn_02x05_Odd_Even" 50 -300 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*2x??x*mm*
Connector*:*2x???Pitch*
Pin_Header_Straight_2X*
Pin_Header_Angled_2X*
Socket_Strip_Straight_2X*
Socket_Strip_Angled_2X*
$ENDFPLIST
DRAW
S -50 -195 0 -205 1 1 6 N
S -50 -95 0 -105 1 1 6 N
S -50 5 0 -5 1 1 6 N
S -50 105 0 95 1 1 6 N
S -50 205 0 195 1 1 6 N
S -50 250 150 -250 1 1 10 f
S 150 -195 100 -205 1 1 6 N
S 150 -95 100 -105 1 1 6 N
S 150 5 100 -5 1 1 6 N
S 150 105 100 95 1 1 6 N
S 150 205 100 195 1 1 6 N
X Pin_1 1 -200 200 150 R 50 50 1 1 P
X Pin_10 10 300 -200 150 L 50 50 1 1 P
X Pin_2 2 300 200 150 L 50 50 1 1 P
X Pin_3 3 -200 100 150 R 50 50 1 1 P
X Pin_4 4 300 100 150 L 50 50 1 1 P
X Pin_5 5 -200 0 150 R 50 50 1 1 P
X Pin_6 6 300 0 150 L 50 50 1 1 P
X Pin_7 7 -200 -100 150 R 50 50 1 1 P
X Pin_8 8 300 -100 150 L 50 50 1 1 P
X Pin_9 9 -200 -200 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# D_Zener
#
DEF D_Zener D 0 40 N N 1 F N
F0 "D" 0 100 50 H V C CNN
F1 "D_Zener" 0 -100 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
TO-???*
*SingleDiode
*_Diode_*
*SingleDiode*
D_*
$ENDFPLIST
DRAW
P 2 0 1 0 50 0 -50 0 N
P 3 0 1 8 -50 -50 -50 50 -30 50 N
P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N
X K 1 -150 0 100 R 50 50 1 1 P
X A 2 150 0 100 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# GND
#
DEF GND #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "GND" 0 -150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
X GND 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# LM1117-3.3-RESCUE-steppers
#
DEF LM1117-3.3-RESCUE-steppers U 0 10 Y Y 1 F N
@ -23,4 +276,203 @@ X VO 4 300 -100 100 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# MAX471
#
DEF MAX471 U 0 20 Y Y 1 F N
F0 "U" -300 350 50 H V L CNN
F1 "MAX471" 0 350 50 H V L CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
SOIC*3.9x4.9mm*Pitch1.27mm*
DIP*W7.62mm*
$ENDFPLIST
DRAW
S -300 300 300 -300 0 1 10 f
X SHDN 1 -400 -100 100 R 50 50 1 1 I
X RS+ 2 -400 200 100 R 50 50 1 1 I
X RS+ 3 -400 100 100 R 50 50 1 1 I
X GND 4 0 -400 100 U 50 50 1 1 W
X SIGN 5 400 -100 100 L 50 50 1 1 C
X RS- 6 400 200 100 L 50 50 1 1 I
X RS- 7 400 100 100 L 50 50 1 1 I
X OUT 8 400 -200 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# PWR_FLAG
#
DEF PWR_FLAG #FLG 0 0 N N 1 F P
F0 "#FLG" 0 75 50 H I C CNN
F1 "PWR_FLAG" 0 150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 6 0 1 0 0 0 0 50 -40 75 0 100 40 75 0 50 N
X pwr 1 0 0 0 U 50 50 0 0 w
ENDDRAW
ENDDEF
#
# Q_PMOS_GSD
#
DEF Q_PMOS_GSD Q 0 0 Y N 1 F N
F0 "Q" 200 50 50 H V L CNN
F1 "Q_PMOS_GSD" 200 -50 50 H V L CNN
F2 "" 200 100 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
C 65 0 111 0 1 10 N
C 100 -70 11 0 1 0 F
C 100 70 11 0 1 0 F
P 2 0 1 0 2 0 10 0 N
P 2 0 1 0 30 -70 100 -70 N
P 2 0 1 10 30 -50 30 -90 N
P 2 0 1 0 30 0 100 0 N
P 2 0 1 10 30 20 30 -20 N
P 2 0 1 0 30 70 100 70 N
P 2 0 1 10 30 90 30 50 N
P 2 0 1 0 100 -70 100 -100 N
P 2 0 1 0 100 -70 100 0 N
P 2 0 1 0 100 100 100 70 N
P 3 0 1 10 10 75 10 -75 10 -75 N
P 4 0 1 0 90 0 50 -15 50 15 90 0 F
P 4 0 1 0 100 -70 130 -70 130 70 100 70 N
P 4 0 1 0 110 -20 115 -15 145 -15 150 -10 N
P 4 0 1 0 130 -15 115 10 145 10 130 -15 N
X G 1 -200 0 200 R 50 50 1 1 I
X S 2 100 -200 100 U 50 50 1 1 P
X D 3 100 200 100 D 50 50 1 1 P
ENDDRAW
ENDDEF
#
# R
#
DEF R R 0 0 N Y 1 F N
F0 "R" 80 0 50 V V C CNN
F1 "R" 0 0 50 V V C CNN
F2 "" -70 0 50 V I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
R_*
R_*
$ENDFPLIST
DRAW
S -40 -100 40 100 0 1 10 N
X ~ 1 0 150 50 D 50 50 1 1 P
X ~ 2 0 -150 50 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# SP0502BAHT
#
DEF SP0502BAHT D 0 40 Y N 1 F N
F0 "D" 225 100 50 H V L CNN
F1 "SP0502BAHT" 225 25 50 H V L CNN
F2 "TO_SOT_Packages_SMD:SOT-23" 225 -50 50 H I L CNN
F3 "" 125 125 50 H I C CNN
$FPLIST
SOT?23*
$ENDFPLIST
DRAW
S -175 100 175 -100 0 1 10 f
P 2 0 1 0 -100 100 -100 50 N
P 2 0 1 0 0 -50 0 -100 N
P 2 0 1 0 100 100 100 50 N
P 4 0 1 0 -150 75 -125 50 -75 50 -50 25 N
P 4 0 1 0 -100 0 -100 -50 100 -50 100 0 N
P 4 0 1 0 -100 50 -75 0 -125 0 -100 50 F
P 4 0 1 0 50 75 75 50 125 50 150 25 N
P 4 0 1 0 100 50 75 0 125 0 100 50 F
X A 3 0 -200 100 U 50 50 0 0 I
X K 1 -100 200 100 D 50 50 1 1 I
X K 2 100 200 100 D 50 50 1 1 I
ENDDRAW
ENDDEF
#
# SP0504BAHT
#
DEF SP0504BAHT D 0 40 Y N 1 F N
F0 "D" 300 100 50 H V L CNN
F1 "SP0504BAHT" 300 25 50 H V L CNN
F2 "TO_SOT_Packages_SMD:SOT-23-5" 300 -50 50 H I L CNN
F3 "" 125 125 50 H I C CNN
$FPLIST
SOT?23*
$ENDFPLIST
DRAW
S -175 100 275 -100 0 1 10 f
P 2 0 1 0 -100 100 -100 50 N
P 2 0 1 0 0 -50 0 -100 N
P 2 0 1 0 0 -50 0 0 N
P 2 0 1 0 0 100 0 50 N
P 2 0 1 0 25 50 50 25 N
P 2 0 1 0 100 100 100 50 N
P 2 0 1 0 200 100 200 50 N
P 3 0 1 0 25 50 -25 50 -50 75 N
P 3 0 1 0 200 0 200 -50 100 -50 N
P 4 0 1 0 -150 75 -125 50 -75 50 -50 25 N
P 4 0 1 0 -100 0 -100 -50 100 -50 100 0 N
P 4 0 1 0 -100 50 -75 0 -125 0 -100 50 F
P 4 0 1 0 25 0 -25 0 0 50 25 0 F
P 4 0 1 0 50 75 75 50 125 50 150 25 N
P 4 0 1 0 100 50 75 0 125 0 100 50 F
P 4 0 1 0 150 75 175 50 225 50 250 25 N
P 4 0 1 0 200 50 175 0 225 0 200 50 F
X A 2 0 -200 100 U 50 50 0 0 I
X K 1 -100 200 100 D 50 50 1 1 I
X K 3 0 200 100 D 50 50 1 1 I
X K 4 100 200 100 D 50 50 1 1 I
X K 5 200 200 100 D 50 50 1 1 I
ENDDRAW
ENDDEF
#
# STM32F030F4Px
#
DEF STM32F030F4Px U 0 40 Y Y 1 L N
F0 "U" -1600 925 50 H V L BNN
F1 "STM32F030F4Px" 1600 925 50 H V R BNN
F2 "Housings_SSOP:TSSOP-20_4.4x6.5mm_Pitch0.65mm" 1600 875 50 H I R TNN
F3 "" 0 0 50 H I C CNN
DRAW
S -1600 -800 1600 900 0 1 10 f
X BOOT0 1 -1700 400 100 R 50 50 1 1 I
X ADC_IN4/SPI1_NSS/TIM14_CH1/USART1_CK/PA4 10 1700 200 100 L 50 50 1 1 B
X ADC_IN5/SPI1_SCK/PA5 11 1700 100 100 L 50 50 1 1 B
X ADC_IN6/SPI1_MISO/TIM16_CH1/TIM1_BKIN/TIM3_CH1/PA6 12 1700 0 100 L 50 50 1 1 B
X ADC_IN7/SPI1_MOSI/TIM14_CH1/TIM17_CH1/TIM1_CH1N/TIM3_CH2/PA7 13 1700 -100 100 L 50 50 1 1 B
X PB1/ADC_IN9/TIM14_CH1/TIM1_CH3N/TIM3_CH4 14 -1700 -500 100 R 50 50 1 1 B
X VSS 15 0 -900 100 U 50 50 1 1 W
X VDD 16 -100 1000 100 D 50 50 1 1 W
X I2C1_SCL/TIM1_CH2/USART1_TX/PA9 17 1700 -200 100 L 50 50 1 1 B
X I2C1_SDA/TIM17_BKIN/TIM1_CH3/USART1_RX/PA10 18 1700 -300 100 L 50 50 1 1 B
X IR_OUT/SYS_SWDIO/PA13 19 1700 -400 100 L 50 50 1 1 B
X PF0/RCC_OSC_IN 2 -1700 -200 100 R 50 50 1 1 I
X SYS_SWCLK/USART1_TX/PA14 20 1700 -500 100 L 50 50 1 1 B
X PF1/RCC_OSC_OUT 3 -1700 -300 100 R 50 50 1 1 I
X NRST 4 -1700 600 100 R 50 50 1 1 I
X VDDA 5 0 1000 100 D 50 50 1 1 W
X ADC_IN0/RTC_TAMP2/SYS_WKUP1/USART1_CTS/PA0 6 1700 600 100 L 50 50 1 1 B
X ADC_IN1/USART1_DE/USART1_RTS/PA1 7 1700 500 100 L 50 50 1 1 B
X ADC_IN2/USART1_TX/PA2 8 1700 400 100 L 50 50 1 1 B
X ADC_IN3/USART1_RX/PA3 9 1700 300 100 L 50 50 1 1 B
ENDDRAW
ENDDEF
#
# SW_Push
#
DEF SW_Push SW 0 40 N N 1 F N
F0 "SW" 50 100 50 H V L CNN
F1 "SW_Push" 0 -60 50 H V C CNN
F2 "" 0 200 50 H I C CNN
F3 "" 0 200 50 H I C CNN
DRAW
C -80 0 20 0 1 0 N
C 80 0 20 0 1 0 N
P 2 0 1 0 0 50 0 120 N
P 2 0 1 0 100 50 -100 50 N
X 1 1 -200 0 100 R 50 50 0 1 P
X 2 2 200 0 100 L 50 50 0 1 P
ENDDRAW
ENDDEF
#
#End Library

View File

@ -3,7 +3,7 @@
(general
(links 122)
(no_connects 0)
(area 37.924999 29.924999 92.075001 84.075001)
(area 25.150001 22.8 103.85 90.200001)
(thickness 1.6)
(drawings 27)
(tracks 422)
@ -83,8 +83,8 @@
(hpglpenoverlay 2)
(psnegative false)
(psa4output false)
(plotreference true)
(plotvalue true)
(plotreference false)
(plotvalue false)
(plotinvisibletext false)
(padsonsilk false)
(subtractmaskfromsilk false)
@ -2696,10 +2696,10 @@
(gr_text DRV (at 66.5 59.5) (layer F.SilkS)
(effects (font (size 3 3) (thickness 0.3)))
)
(gr_text Boot (at 48 80) (layer F.SilkS)
(gr_text Boot (at 45 65) (layer F.SilkS)
(effects (font (size 1.5 1.5) (thickness 0.3)))
)
(gr_text RST (at 44.4135 64.925) (layer F.SilkS)
(gr_text RST (at 49 80) (layer F.SilkS)
(effects (font (size 1.5 1.5) (thickness 0.3)))
)
(gr_line (start 92 84) (end 92 82) (angle 90) (layer Edge.Cuts) (width 0.15))

View File

@ -1,4 +1,4 @@
update=Вт 12 дек 2017 11:12:17
update=Ср 16 янв 2019 08:21:59
last_client=kicad
[pcbnew]
version=1
@ -36,20 +36,3 @@ version=1
[eeschema]
version=1
LibDir=
[eeschema/libraries]
LibName1=steppers-rescue
LibName2=conn
LibName3=device
LibName4=ESD_Protection
LibName5=linear
LibName6=microcontrollers
LibName7=power
LibName8=regul
LibName9=relays
LibName10=sensors
LibName11=stm32
LibName12=texas
LibName13=transistors
LibName14=switches
LibName15=drv8825
LibName16=a3212lh

File diff suppressed because it is too large Load Diff