Сгоревший драйвер L6208 я заменил, выполнил отладку всяких глюков. Осталось совсем немного (что-то подглючивает счет шагов после того, как я добавил ускорение на старте шаговиков, да и после этого же перестал работать поворот турелей на заданную позицию).
Итак, на сегодняшний день система умеет:
Еще у меня сделаны зачатки, необходимые для работы с 1-wire (я сделал почти полностью аппаратно — на таймере с DMA), но не завершен код более высокого уровня. Планирую при помощи DS18S20 измерять температуру внутри корпуса контроллера + температуру корпуса криостата (по разности температур криостата и воздуха можно судить о том, насколько хорош вакуум внутри криостата; хоть вакуумметр тоже в системе будет, но лучше иметь свой независимый способ).
Общее количество строк (включая комментарии, отладку и мусор) в проекте уже превысило 5000. Вот такая вот система управления. Вроде бы, никакого функционала, а черт-те сколько уже накатал...
Итак, на сегодняшний день система умеет:
- Двигать моторы на заданное число шагов, останавливая подвижки при упоре в концевик и приостанавливая турели на фиксированных позициях для точного определения номера позиции (напряжение с обмоток движка снимается и подпружиненный упор доводит турельку до нужного положения). На старте двигатели раскручиваются с ускорением (первый шаг — за 10 тактов, второй — за 9 и т.д.), чтобы преодолеть усилие пружины, фиксирующей турель.
- Устанавливать турели в заданные (по номеру) позиции, выбирая наиболее оптимальное направление вращения.
- Измерять сопротивление платиновых TRD. Кстати, я был приятно удивлен, произведя вчера калибровку АЦП: вот эти 0.1% резисторы (брались не из-за класса точности, а т.к. у них наиболее низкие температурные отклонения из аналогичных (за вменяемую цену) позволили измерять сопротивление в рабочем диапазоне (даже шире: я проверял от 78 Ом до 1520 Ом) с точностью не хуже 0.2% (я такого от АЦП микроконтроллера не ожидал).
- Работать с TRD в тестовом режиме — через внешний АЦП.
- Управлять затвором (с диагностикой обрыва, КЗ и перегрева). Кстати, мост TLE5205, через который я разряжаю кондер 2200мкФ на обмотку затвора, при усердном щелкании затвором вообще не нагрелся. И не выдавал ошибок (я боялся, что будут проблемы из-за того, что в первые микросекунды через мост течет высокий ток), кроме обрыва (при отключении затвора) и КЗ (я проверял несколько раз — все в порядке).
- Измерять напряжения питания (+12В на шаговики, +36В на кондее затвора).
- Сохранять во флеше калибровочные коэффициенты (жаль, EEPROM нет на STM32F103).
Еще у меня сделаны зачатки, необходимые для работы с 1-wire (я сделал почти полностью аппаратно — на таймере с DMA), но не завершен код более высокого уровня. Планирую при помощи DS18S20 измерять температуру внутри корпуса контроллера + температуру корпуса криостата (по разности температур криостата и воздуха можно судить о том, насколько хорош вакуум внутри криостата; хоть вакуумметр тоже в системе будет, но лучше иметь свой независимый способ).
Общее количество строк (включая комментарии, отладку и мусор) в проекте уже превысило 5000. Вот такая вот система управления. Вроде бы, никакого функционала, а черт-те сколько уже накатал...

no subject
Date: 2015-04-15 01:37 pm (UTC)Использую для подобных задач. Удобная штука. Правда, там рачик стоит, который уже года 3 не обновлялся. Лень трогать, пока работает. А то генту для него компилять в чруте под i386 — тот еще гемор.
А когда-то я эту штуку вообще в командировки таскал.