а на деле — около 2.4В. Причем, падение на стабилитроне меняется от напряжения! Вот такие стабилитроны я когда-то брал для защиты портов микроконтроллеров (резистор + стабилитрон — проще, чем резистор + 2 диода).
Дальше )
Как уже говорил, в понедельник я сделал 2 новые платы под контроллер системы термомониторинга. Неспешно просверлил, залудил и запаял перемычки в них и в более-менее получившихся платах под термодатчики:

Этой ночью закончился-таки мой сет технических ночей. И, к счастью, закончился успешно: и полей для СКН нащелкал, и работу нового привода поворотного стола проверил, и на проверку гистерезиса зеркала времени хватило. Как обработаю все, выложу результаты одной заметкой. Дальше — фотографии по относящимся к работе железкам.
Еще фотографии )
В пятницу пытался паять переходные, это жесть! Я не заметил, что в дефолтных настройках было 0.4/0.8, поэтому после сверлежки диаметром 0.6 от площадок почти ничего не осталось. Плюс слои смещены до 0.2мм.
Поэтому сегодня решил переделать (пусть 2 платы уже залудил и просверлил, лишними не будут). Вот, что получилось: сделал все дорожки минимум 0.5мм (кроме, понятное дело, дорожек около микроконтроллера — там стандартные 0.2); переходные сделал 0.6/1.5; убрал переходные из-под SMD (мультиплексоров и МК) — я бы намучился паять детальки поверх торчащих блямб припоя из-за переходных.
В общем, все вполне симпатично получилось с первого раза (!) и почти без брака (ни разу не пришлось переутюживать, небольшие проблемные участки подкрасил маркером). Жаль, сфотографировать нечем — не веб-камерой же 640х480!
Давно уже пора заняться прототипированием контроллеров для термомониторинга ГЗ БТА, да и на SCORPIO переделать систему управления. И основным затыком здесь является интерфейс CAN: я с ним еще не работал на микроконтроллерах. Так как работать буду вечером дома, решил сделать пару прототипов (pdf файл) ЛУТом. Намучился знатно: пару часов сегодня утром убил, пока, наконец, не дошло до меня, почему люди травят сначала одну, а потом другую сторону у двухсторонних плат. Дело в том, что совместить слои для одновременного травления можно лишь на сравнительно мелких или грубых платах. В данном же случае один слой постоянно выходил кривым. И я сделал как все: сначала более сложную лицевую часть (там больше тонких дорожек), заклеив заднюю скотчем, а затем заклеил лицевую и заЛУТил заднюю. Но все равно кривовато получилось, а дорожки 0.2мм с зазором 0.3мм почти невозможно подправить маркером: хоть он и тонкий, но рисует намного жирней, чем 0.2мм.
После чая пойду лудить и сверлить. Думаю, именно в такой последовательности и сделаю.
На будущее: дорожки лучше делать хотя бы 0.5мм, тогда их проще подправить, да и тонер надежней ляжет. 0.2мм лепить как можно короче — там, где более толстые нельзя (у ног микросхем). И переходные отверстия лучше делать не 0.6/1, а 0.6/1.5 — тогда и совместить стороны будет проще, и больше вероятности, что при сверлении не отвалятся контактные площадки.
Намедни ко мне пришел первый из заказанных драйверов шаговых двигателей — DRV8825. Он дороже, чем A4988, но зато может выдавать 2.5А (супротив 2А), имеет дробление до 1/32 (супротив 1/16), выход HOME, и выход nFAULT.
Дальше )
Сегодня утром я добил прошивку платформы (обновлю на гитхабе позже, лень мне в эти выходные на работу идти, тем более после экскурсий на БТА). И оно таки заработало!
Час назад, когда я еще проводил последнюю экскурсию, прибор привезли вешать на БТА.
Вот в таком хаосе всю последнюю неделю находилось мое рабочее место:

Подробней )
В общем, ждать, пока появится 100% рабочий микроконтроллер совсем нет времени.
Поэтому принято решение: из говна и палок при помощи ардуины (для которой прошивка готова и отлажена) на камаковской макетке собрать временную схему — до полной модернизации системы управления.
И впредь никаких чертовых AVRок!
Подумал о том, что надо бы заранее на алиэкспрессе купить кое-какие деталюшки для макетирования будущей системы управления SCORPIO, да и просто хочется универсальный модуль для шаговых двигателей сделать, чтобы уже не ваять на коленке из 555-й генератор STEP-импульсов под какой-нибудь неизвестный драйвер.
L6208N, которые я использовал в управлялке павшим в бою со мной IRBIS'ом, дороговат, требует много обвязки и отлично сгорает при падении высокого напряжения на входе. Управлять хочу обычными биполярными ШД, 12-24В питания, ток не выше 2.5А (обычно хватает и 1-1.5А).

Пробежавшись по популярным понял, что аж глаза разбегаются! Сразу загорелся SPI-ным L6470, но что-то цена кусается: 10 баксов за девборду. С другой стороны, обвес минимальный и управлять проще всего.
По току хочется иметь запас, поэтому такие штуки, как A3967 и L6258 отпадают.
A4988: 2А, 35В. $0.75 за девборду, если брать 10. Голые микросхемы, как ни странно, дороже девборд.
DRV8825: 2.5А, 45В. Чуть больше бакса за чип (если брать 10), девборды так же примерно.
TB6560 не рассматриваю на фоне более яркого TB6600: 4.5А, 50В. 2.5$ за микросхему, 6$ за девборду в корпусе.

Вот и сижу как буриданов осел. И денег много не хочется тратить (жене меньше 1000р обещал на железо спустить), и непонятно, что брать…
Сижу, пытаюсь понять логику работы блока управления платформой SCORPIO, чтобы перепрограммировать сгоревший микроконтроллер.

Это жесть! )
Надеюсь, что таки в схеме ошибка, и подтяжка реально выполнена к плюсу. Иначе надо будет резать дорожки и переделывать (но в этом случае я вообще не понимаю, как оно работало!).
Весь день убил (правда, было еще несколько отвлекающих факторов) на компиляцию avr-toolchain, запуск демо в среде ардуино (не зря, оказывается, я себе эту безделушку купил: на ней можно будет отлаживать код для динозавра ATmega8535) и запуск простейшей мигалки отсюда.
Ну да ладно: STM8 и STM32 намного тяжелее шли! Правда, здесь еще надо будет с архитектурой познакомиться, но, сдается мне, что хватит тупейшего ногодрыга (такого убожества, как плата управления первым SCORPIO, я еще не встречал! Надо же додуматься шаговиками рулить, формируя полную диаграмму, а вместо ключей используя ТТЛ-логику "И-НЕ"!).
Судя по схеме, больше одного ШД одновременно работать не может, импульсы подаются на все двигатели сразу, а выбор конкретного двигателя определяется подачей нуля на соответствующие логические элементы.
В пятницу посмотрю, что там нагородили внутри... Явно, в новой схеме нужно будет идти по пути миниатюризации (движки жрут мало, можно какие-нибудь совсем малюсенькие драйверы ШД использовать) и перво-наперво гигантские трансформаторы заменить на 15-амперный импульсный БП на 12 Вольт.
Сел я сегодня разбираться, почему после перестановки магнита из позиции 'A' колеса фильтров в позицию 'B' турель не опознала его. Оказалось банально — пока я его запихивал, не заметил, как он перевернулся. В итоге датчик Холла не срабатывал. Все заработало, но как я попытался своей утилиткой HSFW_management переименовать позиции фильтров в EEPROM турели, наткнулся на пару багов. И пришлось открывать старый код и исправлять. Напомню, это управлялка турелью High Speed Filter Wheel от Edmunds Optics. Я даже видео на тытрубу выкладывал.
Как же сложно ориентироваться даже в своем коде после того, как его больше полугода не видел! И более свежим взором смотришь, и видишь иной раз прямо-таки откровенный быдлокод! Кстати, из-за этого я, когда нужно будет сделать очередной автогид к очередному прибору, буду делать по максимуму с нуля; я уже и придумал, как более качественно смещения вычислять — по аналогии с алгоритмом astrometry.net (только будет все намного проще, т.к. постоянный масштаб и смещения незначительные). Это позволит избавиться от проблем на переполненных полях.
Ковыряясь в коде управлялки турелью, нашел кучу совершенно алогичных и противоречивых конструкций в разборе параметров командной строки. Исправил. Вроде работает нормально — по крайней мере, я проверил все возможные комбинации выбора нужной позиции, все было ОК. И переименование работает — но почему-то турель сыплет ошибками при попытке переименования колес G и H, хотя их фильтры переименовываются. Ну да черт с ними — мы будем работать только с A…E — это колеса на 5 50-мм фильтров (а оставшиеся три — на 8 более мелких).
Все, можно вечером с чистой совестью пить пиво.
Продолжаю размещать элементы будущего фотометра.

Рисование сразу в 3D имеет несомненное преимущество перед 2D: во-первых, значительно понятней, что куда удобней установить; во-вторых, подвижные части можно двигать и смотреть, ничего ли они по пути не будут задевать.
Получилось намного компактней, чем я изначально набрасывал эскиз в 2D, поле при измерении эллиптической поляризации будет больше 2'.
Долго думал над процессом сборки: надо не только обеспечить удобство сборки прибора, но и смену колес в турелях светофильтров. Придется в стенках делать лючки и предусмотреть парковку большой синей платформы для доступа к винту фиксации колеса нижней турели. Самым сложным будет доступ к четвертьволновой пластинке (нижняя платформа): вынуть/вставить ее можно будет либо "гинекологическим" способом через отверстие во фланце, либо полностью разбирая весь прибор.
Опять долго мучился с рисованием фотометра. Почти весь день убил на то, чтобы нарисовать турели, периодически посматривая на тытрубе видео. Вот что получается:

Ломаю голову, как крепить турели: уж очень у них туго со штатными посадочными отверстиями.
Полдня пробился в попытках поставить solidworks в виртуалбоксе, получилось. Но тормоза настолько нереальные, что работать в этом невозможно. Почитав сравнительные статьи, понял, что мне и "компаса" за глаза хватит.
Сижу, рисую фотометр для Z-1000 (большую часть времени, правда, смотрю ролики на тытрубе, как какую-нибудь операцию сделать; надо определенно найти учебник по этой штуке — это эффективней должно быть, чем ролики мотать). К счастью на стандовском сайте были чертежи ротаторов, а вот турели от edmund optics придется самому рисовать — никакого сервиса, очень негативное отношение у меня к этой фирме (напомню, управлялку пришлось писать, используя обратный инжиниринг).
Картинка:

Единственным недостатком запуска "компаса" в виртуалбоксе является то, что элементы меню, попадающие на окно вида, исчезают. Видимо, особенности проброса аппаратного видеоускорения через виртуалбокс.
Знание — сила, а незнание — мощный велосипедогенератор.
За 5 дней опытной эксплуатации демоны, обслуживающие болтвудовский датчик и all-sky почему-то наплодили уйму неотмерших потоков (хотя в коде выход из потока правильный), в результате несчастный кубитрак был загружен на 170%, и компиляция элементарного кода длилась две минуты! Эту проблему решил добавлением перезапуска демонов в cron.daily.
Вчера все это хозяйство разместили на Цейссе (но пока не устанавливали на крыше), включив во время отсутствия электричества (на Цейссе-то упсы, которые не меньше двух часов даже с рабочим телескопом выдержат). В итоге время на кубитраке получилось неправильным. По идее, это должно было устраниться, как только появится сеть — ведь на кубитраке запущен ntp-демон. Как бы не так! Решил опять велосипедно: отменой автозапуска бесполезного ntp-демона и добавления ntpdate в cron.hourly.
Удивился куче логов в /var/log (хотя это одноплатник — он вообще логи в оперативке должен хранить, или даже лучше в /dev/null). Т.к. проблема глубокая, решил ее лишь настройкой logrotate ротировать ежедневно, оставляя по 1 логу.
Ну и вообще, до сих пор негодую, что дебилиан перешел на systemd! Хоть у меня и есть репа генты для кубитрака, собранная в чруте, но очень проблематично обновляться: надо вынимать флешку и перезаливать образ. Что долго и совсем неудобно, когда эта флешка черт-те где. Пришлось вместо генты ставить эту дрянь. Судя по выхлопу systemctl, запущена толпа ненужных сервисов. Что-то поприбивал, но как бороться с автозапуском ненужного wpa_supplicant, не убивая идиотский нетворкманагер, не понимаю. Вообще логика создателей армбиана не ясна для меня: какой идиот на сервер будет пихать нетворкманагер или системД? А уж тем паче, если это — сервер на одноплатнике!

Тьфу! Выпустил пар. Отдохну, а после обеда продолжу накапливать гнев — мне еще на серваке с Scientific Linux (ага, тоже с поцтерошлаком) разворачивать логгирующие демоны и апач с proftpd настраивать… Ну почему наши информатики используют это порождение Красной Шапки? И сами же матюкаются на костыли с поцтерошлаком. Как те мыши с кактусом!
"Скрестить ужа с ежом" оказалось непросто, учитывая все косяки cfitsio. Но, все-таки, получилось. Я решил этого демона не выносить в отдельную репу, а засунул в директорию внутри репы с болтвудом.
Очень много времени убил, не понимая, какого черта inotify, как только обновится файл, перестает отслеживать. А все оказалось просто: cfitsio вместо того, чтобы сделать truncate имеющегося файла (когда имени файла предваряет "!") делает unlink. Понятно, что тут inotify уже не поможет. Сделал обновление дескрипторов каждый раз, как обновится файл.
Другим косяком cfitsio было то, что целые "записи" она пишет в зипованый фитс (using fits_write_record), а вот fits_write_key не хочет — говорит, что в зипованные файлы не может.
Я все больше и больше склоняюсь к тому, что нужно свою библиотеку писать для работы с фитсами! Как лет 5 (если не больше) назад начал в ней проблемы находить, так все не покидает мысля... А еще добавить туда мой fits_filter… В общем, мечты-мечты! Если клонироваться в 10 раз (и послать половину клонов работать там, где деньги платят), то, возможно, это все и будет реализовано.
А, совсем забыл! )
Сегодня попробовал пайку феном. Сделал две макетки с термодатчиками (TSYS01), чтобы помаленьку прошивку для термомонитора ГЗ БТА написать. QFN-16 паяльником вряд ли попаяешь, поэтому намазал жирненько флюсом, налепил датчики (а заодно и резисторы с кондрами), и запаял. Вот такое получилось:

Вполне удобно, если поток небольшой, то ничто никуда не разлетается. Главное — пожирней залудить плату, чтобы припоя хватило (нет у меня паяльной пасты). Но кондеры как-то не очень припаялись, пришлось паяльником довести.
Термодатчики еще не проверял. Возможно, где-нибудь и не будет контакта. Но, надеюсь, что все-таки все будет хорошо.
Потихоньку осваиваю F0, все-таки, надо будет разработать систему мониторинга температуры ГЗ БТА. Пока я не спаял платку для термометра, взял первый попавшийся в коробке девайс на I2C — датчик температуры/влажности HTU21-D. Я с ним, кстати, еще ни на STM32, ни на STM8 не работал.
Пару вечеров убил в обнимке с мануалом и даташитом. Позавчера скомпилялось, и я довольный пошел спать. Вчера была ночная экскурсия — не до этого, а сегодня решил прошить.
Делал, кстати, под STM32F030 — у меня две таких макетки и всякие дикие эксперименты стараюсь с ними проводить (хоть STM32F042 у меня с двукратным запасом, не хочется перепаивать на nucleo, когда флеш сдохнет). Прошиваю — и тишина в USART. И тут до меня доходит: у 20-ногого F030 PA9 и PA10 делят функции USART и I2C! Пришлось переделывать под STM32F042, и для начала научиться работать на нем с USART.
Потом решал проблему с зависанием на проверке while(!(I2C1->ISR & I2C_ISR_TXIS)), когда на линии нет ничего (даже подтягивающих резисторов). Оказалось, что в данном случае флаг не появляется вообще! Пришлось везде, где есть такие проверки, внедрить таймаут в 5мс. Ну, а потом я раскомментировал весь код и, как ни странно, все с первой же попытки завелось! Правда, я вместо умножения на 10 в вычислении влажности выполнил операцию деления. Но теперь все ОК, код на гитхабе.
В терминал 1 раз в секунду выдается то значение влажности, то температуры:
Temperature: 259/10 degrC
Humidity: 324/10 %

В комнате один термометр с гигрометром (тоже, наверное, на подобном чипе) и часы с термометром. Первый показывает 24°C и 37%, второй показывает 23°. Подогрев чипа по умолчанию отключен — похоже, либо саморазогрев у него такой, либо нагло врут в даташите про точность в 0.3°C!

Теперь надо будет спаять минимальную платку для TSYS01 и заняться им.
В рамках бодания с таймером на STM32F030 родил морзянку: фразы, пришедшие по USART1 (до '\n') выпискиваются в коде Морзе пищалкой, висящей на PA6 (TIM3CH1). Короткое видео паршивого качества.
Добавил в коллекцию еще один сниппет.
Казалось бы, в USART через DMA ничего особенного нет, но по сравнению с STM32F103 у нулевой серии есть замечательное прерывание USART: "character match".
В этом примере DMA организует прием-передачу данных (причем на прием стоит двойная буферизция), а прерывание character match позволяет определить, было ли окончание строки. Если было, то выставляется соответствующий флаг и буфера меняются местами; если же не было, то при переполнении буфера DMA прием возобновляется в тот же буфер и выставляется флаг overflow.
Принятая строка возвращается обратно "задом наперед", а каждые ~5 секунд выводится еще и надпись "dummy text". Например, если написать
Привет
Аргентина манит негра
1234567
на выходе получим:
тевирп
dummy text
арген тинам анитнегрА
dummy text
7654321

July 2017

S M T W T F S
      1
23 4 5 6 78
9 101112 131415
16171819 202122
23242526272829
3031     

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 20th, 2017 02:36 pm
Powered by Dreamwidth Studios