eddy_em: (Default)
как я таки нарисовал хоть какую-то документацию к системе термомониторинга ГЗ БТА.
Крайне надеюсь, что она больше не будет меня беспокоить, и мне не придется в очередной раз заниматься не своими делами. А то любят у нас в обсерватории такое: коль уж ты разработал нечто, так уж будь по гроб обязан бесплатно это нечто обслуживать и модернизировать…
eddy_em: (Default)
Недавно начал глючить один из контроллеров термодатчиков на зеркале БТА: поработает минут 5, а потом начинает засорять шину (буквально флудит, не давая никому влезть) широковещательными командами "начать измерение температуры" (непонятно, с чего вообще эта дичь возникла). Вот, сел вчера радикально так заменил код USB на новый (о котором недавно писал), выкинул поддержку UART (ну его нафиг: больно тормозной). Сегодня поменял немного протокол, заменил базовый адрес идентификаторов на 0x680 (чтобы не пересечься случайно с какой-нибудь железкой на CANopen). Пока отлаживал, придумал еще несколько команд для удобства (в т.ч. "заткнись!" — чтобы контроллер ничего в шину не писал, пока разрешения не получит). Сам по себе USB-протокол оставил тем же, что и был (только запретил уже "широковещательные" команды). Как и раньше, если контроллер не находится в режиме "сниффера", реагирует лишь на посылки по его ID (а идентификатор равен 0x680 + номер, который перемычками на плате установили — от 0 до 15). Мастер (с номером 0) по умолчанию в роли "сниффера" выступает (чтобы и с другими устройствами в шине через него можно было общаться).
Поеду завтра на гору, перепрошью все шесть контроллеров. Заодно попытаюсь "глюкавого" найти — если он физически глючит, нужно будет заменить. Хотя, странно это: работает себе несколько минут, а потом вдруг начинается…
Репозиторий с кодом.
eddy_em: (Default)
Сегодня ночью опять "отвалилась" температура главного зеркала. Зато теперь стало понятно, что виной тому — какой-то из контроллеров. Ничто не предвещало, как вдруг в 2:37 в шину стало флудить одно и то же сообщение: ID=0x7f7 data="0xa5 0x01" (широковещательный запрос на начало измерения температуры). И флудит непрерывно: минимум каждую миллисекунду. В итоге бедняга мастер-контроллер ничего не может сделать, охреневает от этого и, т.к. в той прошивке у меня таки "пердыдущая" версия USB (которая на такой флуд не рассчитана, т.к. имеет небольшой буфер и отправляет сообщения с блокировкой, а не как в новой - из кольцевого буфера в прерываниях USB), то МК "помирает". А не помогала перезагрузка оного из-за того, что тут же начинался флуд и он опять помирал (и я не успевал даже в логах ничего увидеть).
Сижу, изучаю логи и исходники (как прошивок, так и демона мониторинга)…
Судя по всему, глючит какой-то из контроллеров: внезапно он начинает изо всех сил лупасить широковещательный запрос на измерение температуры. В общем, надо: а) запретить рабам широковещательные запросы, б) перепрошить весь набор контроллеров (на "внутриоправных" вообще самая старая прошивка: когда я глюки контроллера-господина исправлял, решил, что и так сойдет, пусть рабы пока на старых прошивках посидят). Механы будут очень "рады" вскрывать оправу… На весь день работа для 2-3 человек (с учетом того, что больше 3-4 часов в день они не работают обычно, или работают, но только за очень большие баксы).

Блин, вот был бы человек, который все мои материалы в кучу собрал, да написал вменяемую документацию на всю систему (для начала, хотя бы со 100% уверенностью знать, под какими крышками скрываются контроллеры - у меня неоднозначно на старом рисунке нарисовано, а заметок я почему-то не оставил). Даже технический отчет, лежащий в библиотеке, написан в 2018 году, а тогда система была почти совершенно другой (и датчиков меньше, и котроллеров, и код более дырявый).
eddy_em: (Default)
Не так давно опять "сдох" одноплатник, контролирующий сбор температур с зеркала. Сначала "отвалились" все порты USB, я подключил к UART и обнаружил проблемку. Потом он вообще не "взлетел" после перезагрузки…
Read more... )
eddy_em: (Default)
Решили мы таки попробовать меньшим количеством датчиков обойтись. Вот так выглядит график изменения сопротивления трех последовательно включенных датчиков (с интервалом в 5см):

Read more... )
eddy_em: (Default)
Вчера спаял две линейки (почти полуметровой длины) из полосы 0.8мм стеклотекстолита (шириной 1см). В нижней части через 1см напаял килоомных NTC (10 штук). Одну полосу сделал последовательно, вторую - параллельно. Но в обоих случаях факир был пьян: даже при параллельном соединении погруженная всего лишь на треть в азот линейка уже зашкаливала за пределы измерения мультиметра (30МОм).
Сегодня напаял туда платиновые pt1000. С ними получилось значительно лучше:

Read more... )
eddy_em: (Default)
Решили восстановить на БТА систему циркуляции воздуха внутри оправы. Первые опыты показали, что даже один верхний вентилятор неплохо снижает градиент температур. Разве что нужно ими всеми (всего их четыре) управлять. Для этого решили использовать CAN-шину системы сбора термоданных и управлять с того же Orange Pi, который данные собирает и графики выдает.
Сначала мне пришлось нарисовать сервер (на UNIX-сокетах, т.к. все равно только локально должно работать), который даст возможность с одним последовательным портом (в данном случае — переходником CAN-USB) работать нескольким демонам (заодно можно будет смотреть, что там в шине происходит, а то в оригинальном виде этого сделать нельзя было). Дальше — я переделал netdaemon (демон, который по CAN-шине собирает температуру и выдает ее по сети). Заодно перевел его на свою libusefull_macros для унификации.
Нарисовал элементарную управлялку двигателями (пре-пре-преальфа версия, пока просто для тестов), двигатель запускает, тормозит, скорость меняет.
И тут оказалось, что моя система сбора работает на 100кбодах, а SEW'овские приводы двигателей — на кратной 125кбод скоростях (честно говоря, я думал, что 100кбод — вполне себе стандартная скорость). И пришлось мне переделывать прошивку контроллеров термодатчиков. Ну и после тестов будет работа еще и механикам: снять декоративную крышку с "задницы" оправы зеркала и снять крышки разгрузок, где у меня контроллеры установлены (надеюсь, схему я составил правильно — главное теперь найти ее; почему-то в электронном виде ничего не нашел, надо сканировать все документы).
Заодно добавил новых команд для диагностики. Нужно еще подумать, что может понадобиться (а то доступ к контроллерам не так уж и прост, жаль, перепрошивку их по CAN я в ближайшее время не осилю, один только бутлоадер, наверное, минимум месяц писать буду; так что, оставлю это на далекое светлое будущее). Если на тестовом стенде все пройдет нормально и система сбора термоданных с управлением двигателями друг другу мешать не будут, можно будет перепрошивать контроллеры на БТА и переделывать схему на управление двигателями. А там, глядишь, может и еще каких датчиков/приводов добавим (скажем, то же управление створками зеркала, поворотом диагонального и т.д., и т.п.).
Следующим этапом у нас будет замена радиоудлинителя CAN-шины с БТА на купол на wifi-удлинитель. Тесты провели: при разнообразных взаимных положениях сигнал хоть иногда и ухудшается (доводя пинги до 20мс), но не пропадает. Можно будет добавить управление забралом и, наконец-то, убрать уродливый пульт с тумблерами со стола оператора СУ БТА.
eddy_em: (Default)
Потихоньку допиливаю контроллер. Забыл сегодня на работе взять платиновый терморезистор для аттестации терморезисторов, которые там используются (четыре штучки 10-килоомных китайских NTC), но решил, что для кулеров и тупого китайского термометра (на такой же NTC ☺) хватит. Налил в чашку кипятка, смотрю:

Read more... )
eddy_em: (Default)
В прошлом году я временно замерял температуру зеркала при помощи неказистой вундервафли, размещенной на беспаечной макетке. В этом году решил сделать нормальную плату:

Read more... )
eddy_em: (Default)
Для улучшения теплоизоляции "термостата" я оклеил коробчонку в несколько слоев фольгой и всякой дрянью (вспененный полиэтилен и пупырчатый полиэтилен):

Дальше )
eddy_em: (Default)
Завтра будем вешать MMPP на Z-1000 для определения его эффективности в разных полосах при помощи призмы Амичи (правда, в сходящемся пучке). Пока что грубо исследуем в лаборатории.
Спектр белого светодиода, на матрице синий конец внизу.

Дальше )
eddy_em: (Default)
Вчера смотался на БТА, чтобы снять термодатчики, пока ГЗ №1 не поместили в контейнер.
Сейчас зеркало стоит в моечной:

А опять сфотографировать телескоп без зеркала я что-то и забыл...
Еще фотографии )
eddy_em: (Default)
Работы по зеркалу как-то уж очень форсировали. Неожиданно оказалось, что завтра мне нужно ехать и отрывать старые датчики от зеркала №1 (и отрывать аккуратно, т.к. их нужно будет использовать на зеркале №2). Возможно, уже в понедельник будет произведена "рокировка" зеркал.
Я тем временем решил-таки сравнить показания тех термодатчиков, что у меня оставались, чтобы хотя бы по одной точке привести их к единой шкале.
Картинки )
eddy_em: (Default)
В свете замены ГЗ БТА обратно, мне пришлось снова заняться термодатчиками. Теперь их будет значительно больше: помимо старой конфигурации в верхних частях остальных углублений под разгрузки тоже будут стоять термодатчики!
В среду был выходной, я смотался на гору и снял кабели и контроллеры. Сегодня довел более-менее до ума код: в прошлом году я схалявил (в т.ч. и из-за нехватки времени) и обошелся без USB и измерения напряжений и токов.
Теперь же можно будет контролировать значения рабочих напряжений на разных контроллерах и токов, ими потребляемых. Самих контроллеров теперь будет не четыре (плюс пятый "нулевой" — мастер, который тупо является посредником между "апельсинкой" и всей CAN-сетью), а как минимум штук десять. Соответственно, пришлось расширить адресацию до четырех битов (благо, ног хватает), а для питания будет использоваться уже не три пары витухи, а отдельные две жилы по полтора квадрата (есть такой кабель — витуха + питание). И разъем будет уже не RJ-45, а DB9 (чтобы гарантированно там ток до ампера мог нормально проходить).
Поковырявшись с четырьмя имеющимися контроллерами обнаружил, что только один работает полноценно. У остальных где в некоторых гнездах контакта нет, где с датчиком тока проблема, где USB не работает, где питание с термодатчиков не снимается... Как они все это время проработали на трубе — поразительно. Ну, все равно будут новые контроллеры взамен большинства этих.
eddy_em: (Default)
Только что закончил написание демона, который по сети забирает среднюю температуру с моей системы и вносит ее в данные АСУ БТА. Можно сказать, что система уже практически в штатном режиме работает (разве что после того, как зеркало снимут на переалюминирование, провода нужно будет проложить в пространство между зеркалом и оправой и вместо проблемных разъемов соединить пайкой).
С понедельника я в отпуске, так что на работу буду ходить по необходимости (скажем, уже в понедельник придется к 11 прийти на совещание по ГЗ и рассказать о системе термомониторинга).
eddy_em: (Default)
Впору уже писать сочинение на тему "как я просрал лето".
Организовал сетевой доступ для возможности получения данных о температурах. Чтобы было удобней строить графики, вывожу данные в формате "X Y T t" (координаты, температура, UNIX-time). Таблички с последними данными можно получить по локальному запросу (хоть curl'ом, хоть wget'ом, хоть из браузера, хоть из самописной утилиты): mirtemp.sao.ru:4444/Tx, где x == 0 для термодатчиков вблизи поверхности зеркала (донышки углублений под разгрузки), 1 для термодатчиков на нижней поверхности и 2 — в Н2 (там два датчика, один измеряет температуру воздуха в помещении с компьютерами, а другой — в коробке с системой сбора).
При помощи нехитрого скрипта в гнуплоте можно построить такое:

set xrange [-30:30]
set yrange [-30:30]
set dgrid3d 100,100,50
set hidden3d
set xlabel "X, dm"
set ylabel "Y, dm"
set zlabel "T, degr C"
splot 'tdata' u 1:2:3 w l

Остается еще подправить прошивку (там не очень хорошая реакция на проблемы с I2С + какой-то косяк с контроллером №1, отзывающимся еще и на №2, хотя на сбор данных это не влияет), добавить в сетевой демон возможность получения средней температуры (а для этого сначала надо будет неправильные значения отсеять) и можно будет сказать, что хоть что-то у меня дошло до стадии штатной эксплуатации.
eddy_em: (Default)
Итак, термодатчики уже работают в опытном режиме эксплуатации. Пока что получить данные о температурах в режиме реального времени можно, лишь подключившись по ssh к машине mirtemp, но на следующей неделе я авось и добью сетевой демон. Тогда можно будет просто открыв сокет (или даже послав запрос в браузере) получить данные о координатах термодатчиков и полученных температурах.
Несколько штук датчиков так и барахлят. Ничего, когда вернем обратно нормальное зеркало, уйму грабель можно будет обойти. А пока пусть работают — заодно посмотрю, как вся система зиму перенесет и не будут ли датчики деградировать.
eddy_em: (Default)
Сегодня весь день прокорячился на горе, занимался подключением контроллеров термодатчиков. "Апельсинку" с основным контроллером еще вчера установил в металлический короб. Из-за невнимательности спалил (? пока не проверял) один контроллер: обжал витуху "наоборот", в результате вышла та самая переполюсовка, от которой должны были защищать выгоревшие транзисторы, замененные на перемычки. Что-то нормальное надо придумать с этой защитой от переполюсовки. И на всякий случай поставить предохранитель еще и на выход 12-вольтного блока питания, а то когда заглянул в короб после экспериментов, оттуда вышел "волшебный дым", но все почему-то продолжало нормально работать. И это заставляет напрягаться...
К оставшимся трем контроллерам подключил датчики. Подключил абы как, чтобы проверить, как они вообще себя вести будут. Опрос температур тоже пока через одно место: по ssh захожу на "апельсинку", запускаю терминал и через переходник на ch340 (т.к. с USB CDC я до сих пор не разобрался, уж очень там все запутанно) вручную могу посмотреть, где что намеряно. И у двух (из трех) контроллеров есть группы косячных датчиков. Кто-то отрицательную температуру показывает, кто-то уж очень завышенную, но никто не показывает ошибки → глючат чертовы контакты! Вот он — камень преткновения! Либо делай все на пайке, но имей гемор со сборкой/разборкой; либо используй контакты, но имей гемор всегда. Забавно, что некоторые косяки на высокой (100кГц) скорости I2C "проходят" (видимо, на проблемных датчиках совсем уж шум получается, вот и не воспринимаются как рабочие).
Обнаружил еще программный косяк: если считывание температур идет неуверенно, контроллер продолжает попытки, но при этом, сволочь, отсылает данные каждый раз! Переделаю, чтобы в этом случае просто отключал датчики и уходил в состояние "непроинициализирован".
eddy_em: (Default)
Что-то я давненько не писал.
Сегодня наконец-то собрал в миниатюре все контроллеры и проверил, как они будут работать "в куче":

Но начну с 1 августа.
Еще фотографии )
eddy_em: (Default)
Постепенно код для контроллера термодатчиками обрастает новыми функциями. Пока что он умеет лишь включать-выключать питание датчиков, вычислять температуры 16-ти датчиков и работать в режиме непрерывного сканирования, выдавая данные через USART. Вот такая получилась штука:

Дальше )

July 2025

S M T W T F S
  12345
6789101112
1314 1516171819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 17th, 2025 05:41 am
Powered by Dreamwidth Studios