<?xml version='1.0' encoding='utf-8' ?>

<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>eddy_em</title>
  <link>https://eddy-em.dreamwidth.org/</link>
  <description>eddy_em - Dreamwidth Studios</description>
  <lastBuildDate>Tue, 28 Oct 2025 09:00:50 GMT</lastBuildDate>
  <generator>LiveJournal / Dreamwidth Studios</generator>
  <lj:journal>eddy_em</lj:journal>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>https://v2.dreamwidth.org/17579374/2798292</url>
    <title>eddy_em</title>
    <link>https://eddy-em.dreamwidth.org/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/389739.html</guid>
  <pubDate>Tue, 28 Oct 2025 09:00:50 GMT</pubDate>
  <title>К СКН</title>
  <link>https://eddy-em.dreamwidth.org/389739.html</link>
  <description>В прошлой &lt;a href=&quot;https://eddy-em.livejournal.com/520725.html&quot;&gt;теме&lt;/a&gt; по поводу СКН БТА натолкнули меня на простейшую мысль решать систему уравнений совместно. &lt;br /&gt;Попробовал: вполне себе решается, и решение даже не очень сильно восприимчиво к шумам. Вот, например, беру реальные данные и добавляю разный шум:&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/389739.html#cutid1&quot;&gt;Результаты&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___2&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/389739.html#cutid2&quot;&gt;И сам скрипт&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___2&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=389739&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/389739.html</comments>
  <category>бта</category>
  <category>всячина</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/389626.html</guid>
  <pubDate>Wed, 15 Oct 2025 17:46:55 GMT</pubDate>
  <title>Модуль serial-ethernet на основе CH9121</title>
  <link>https://eddy-em.dreamwidth.org/389626.html</link>
  <description>Купил попробовать (брал на &quot;озоне&quot; за 363 рубля), получил еще на прошлой неделе. Сегодня решил, так сказать, его палочкой потыкать. Подключил к компьютеру через USB-UART на PL2303, воткнул сетевой шнурок…&lt;br /&gt;Поначалу ничего не получалось. Потом глянул в примере к протоколу: ну и шельмы эти китайцы, то, что они обозвали &quot;The format of the command code sent by CH9121&quot; на самом деле - формат отправляемых &lt;b&gt;ему&lt;/b&gt; команд. Т.е. все надо начинать с &quot;0x57 0xab&quot;.&lt;br /&gt;Чтобы войти в режим команд, нужно притянуть к нулю ногу CFG. В документации пишут про &quot;софтовый&quot; способ - передачей команды &quot;0x55 0xaa 0x5a&quot;, но никакой реакции на это я не получил. Работает лишь подтяжка CFG к нулю.&lt;br /&gt;Протокол - в файле &lt;tt&gt;ch9121_spcc.pdf&lt;/tt&gt;, можно найти в интернете.&lt;br /&gt;По мануалу настроил IP и порт (девайс little-endian, поэтому стоит это помнить при передаче данных вручную через терминал). Однако, ничего не произошло: коннект появился, в конфигурационном режиме на &quot;0x57 0xab 3&quot; вылезает в ответе единичка. Но &quot;прозрачной&quot; передачи данных не происходит. ОК, думаю: а попробую-ка я поменять &quot;destination IP&quot; на IP компьютера и порт - тоже на 2000. И - вуаля! Пошел &quot;прозрачный&quot; обмен данными: все, что пишу в терминале сокета, появляется в терминале порта, и наоборот.&lt;br /&gt;В общем, надеялся я совсем на другое: что к МК через эту штуку можно будет подключаться с любого компьютера и, скажем, или через TCP-сокет напрямую, или через веб-морду с ним взаимодействовать. А вот хрена с два! В протоколе не указано, как получить IP компьютера, который только что подключился. Т.о., получаем тупое p2p соединение. В принципе, конечно, и для этого можно найти применение (все ж удобней готовой инфраструктурой пользоваться, чем тащить витуху на 485 или оптику + покупать преобразователи 232/485 в оптику).&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=389626&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/389626.html</comments>
  <category>железяки</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/389239.html</guid>
  <pubDate>Sat, 11 Oct 2025 23:01:07 GMT</pubDate>
  <title>Как же в С не хватает указателя `this`!!!</title>
  <link>https://eddy-em.dreamwidth.org/389239.html</link>
  <description>Пока добавлял работу с SI7005, подумал: а ведь датчики AHTxx практически ничем не отличаются (если не заморачиваться, то вообще одним и тем же кодом можно &quot;обслуживать&quot; и AHT1x, и AHT2x), и если у меня их N на шине одинаковых, то будет проблема со статическими переменными в файле → все это нужно вынести в &quot;класс&quot;. А как скрыть члены &quot;класса&quot; от пользователя? Объявить typedef на некую структуру, которая будет объявлена &quot;с подробностями&quot; лишь в &quot;private-header&quot;. Собственно, даже в glibc такое делают!&lt;br /&gt;Правда, пришлось достаточно &quot;порефакторить&quot;. Еще и в &quot;класс&quot; добавить &lt;tt&gt;void*&lt;/tt&gt;, чтобы туда запихивать все нужные калибровки, промежуточные данные и прочее.&lt;br /&gt;Сильно надеюсь, что больше значимых полей (которые нужно будет не нулем проинициализировать) добавлять не придется. Все-таки, с наследованием в С вообще плохо (хотя, можно заморочиться: при &quot;наследовании&quot; от одного &quot;класса&quot; его можно прямо в начало производного подсунуть, а если нескольких - воткнуть union&apos;ы). А вот указателя &lt;tt&gt;this&lt;/tt&gt; вообще нет! Поэтому во все функции &quot;класса&quot; приходится первым аргументом писать ссылку на сам &quot;класс&quot;…&lt;br /&gt;&lt;a href=&quot;https://github.com/eddyem/eddys_snippets/tree/master/I2Csensors&quot;&gt;Вот такая дичь&lt;/a&gt; получилась.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=389239&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/389239.html</comments>
  <category>c</category>
  <category>рукожопие</category>
  <category>всячина</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/389057.html</guid>
  <pubDate>Fri, 10 Oct 2025 20:51:15 GMT</pubDate>
  <title>I2C&apos;шные датчики</title>
  <link>https://eddy-em.dreamwidth.org/389057.html</link>
  <description>Решил провести сравнительный анализ разных датчиков (прежде всего, измеряющих влажность воздуха). Для начала нужно свести к единообразному интерфейсу все наработки (ну и дописать для тех датчиков, с которыми я еще не работал). Пока три датчика едут с алиэкспресса (оказывается, у меня еще не весь &quot;зоопарк&quot; из более-менее распространенных есть; правда, более дорогие жаба задушила покупать, возможно, когда-нибудь попозже), решил начать с того, что уже есть — подготовить почву, так сказать.&lt;br /&gt;&lt;a href=&quot;https://github.com/eddyem/eddys_snippets/tree/master/I2Csensors&quot;&gt;Пока только BMP180&lt;/a&gt;. Зато уже основную &apos;ООПщину&apos; сделал. Если заменить i2c.c, можно и на микроконтроллере запускать.&lt;br /&gt;Для непосредственного доступа к датчикам по I2C &quot;в обход микроконтроллеров&quot; использую переходник на основе CP2112. Ну, а чтобы в одну шину объединить датчики с одинаковыми адресами (а таких, увы, достаточно много - и нет никаких ног, позволяющих хотя бы один младший бит адреса поменять), использую мультиплексор PCA9548A.&lt;br /&gt;Сначала думал подгрузить кернельный модуль, который вроде как создает 8 &quot;подустройств&quot;, но, во-первых, так и не понял, что за параметры нужно передавать в modprobe (как минимум, нужно его адрес указать и устройство, на котором он сидит), а во-вторых, таки проще им рулить напрямую, не плодя файловые дескрипторы (все равно нужно, похоже, закрывать один и открывать другой, чтобы не смешивать разные устройства с одинаковыми адресами в одной шине).&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=389057&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/389057.html</comments>
  <category>всячина</category>
  <category>железяки</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/388759.html</guid>
  <pubDate>Wed, 08 Oct 2025 12:03:42 GMT</pubDate>
  <title>Наблюдения</title>
  <link>https://eddy-em.dreamwidth.org/388759.html</link>
  <description>Сделал вчера немного фотографий.&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/388759.html#cutid1&quot;&gt;Фото&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;P.S. Да, оказывается, в &quot;альбомы&quot; ЖЖ можно поместить фотографии. Но за это я поплатился вменяемым дизайном: пришлось перейти на &quot;новый дизайн&quot;. Теперь буду страдать от ублюдского внешнего вида.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=388759&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/388759.html</comments>
  <category>всячина</category>
  <category>бта</category>
  <category>фото</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/388516.html</guid>
  <pubDate>Wed, 24 Sep 2025 20:59:48 GMT</pubDate>
  <title>5 MLX90640 на одном STM32F303</title>
  <link>https://eddy-em.dreamwidth.org/388516.html</link>
  <description>Таки &lt;a href=&quot;https://github.com/eddyem/stm32samples/tree/master/F3%3AF303/MLX90640multi&quot;&gt;оно у меня заработало&lt;/a&gt;!&lt;br /&gt;Проблему с &quot;остановкой&quot; I2C во время чтения DMA нашел: я сам накосячил в одном месте и просто отключал I2C… Остальное - дальше.&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/388516.html#cutid1&quot;&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;Остается еще дописать управление питанием, отсылку по RS-485, да промакетировать. Ну и сэмулировать проблемы на шине или временное отключение какого-либо датчика (пока что они у меня гроздью спаяны, нужно будет обжать их &quot;штекерами&quot; и на беспаечной макетке в кучу собрать). А потом - нарисовать печатную плату и корпус, ну и изготовить… И, конечно, нудная калибровка - чтобы сшить пять картинок воедино.&lt;br /&gt;Ах, забыл: ведь еще нужно добавить BME280 + один-два NTC + управление подогревом.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=388516&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/388516.html</comments>
  <category>железяки</category>
  <category>stm32</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/388127.html</guid>
  <pubDate>Thu, 11 Sep 2025 17:27:23 GMT</pubDate>
  <title>Запилил-таки тест MLX90640 на МК!</title>
  <link>https://eddy-em.dreamwidth.org/388127.html</link>
  <description>Итак, теперь код заработал &lt;a href=&quot;https://github.com/eddyem/stm32samples/tree/master/F3%3AF303/MLX90640test&quot;&gt;и на микроконтроллере STM32F303CBT6&lt;/a&gt;. Тесты занимают достаточно много места во флеше (да там еще и математическую библиотеку линковать пришлось ради sqrtf), так что вот:&lt;br /&gt;&lt;pre&gt;
Memory region         Used Size  Region Size  %age Used
             rom:         30 KB       128 KB     23.44%
             ram:        5616 B        40 KB     13.71%
          ccmram:          0 GB         8 KB      0.00%
&lt;/pre&gt;&lt;br /&gt;Чуть меньше четырех кБ флеша и 1кБ ОЗУ занимает USB. &lt;br /&gt;В принципе, пока что ОЗУ со свистом хватает для пяти датчиков. Еще и на буферы для передачи по USART останется, и на какие-нибудь дополнительные нужды.&lt;br /&gt;Цикл обработки одной &quot;подстраницы&quot; занимает примерно 4.2мс, т.е. целиком обработка страницы уложится в 8.5мс. Одна &quot;подстраница&quot; данных (при том, что там половина - ненужные! Уж не знаю, зачем melexis так нарукожопил…) по I2C на скорости 1МГц передается около 14мс. Следовательно, обработка предыдущей &quot;подстраницы&quot; выполнится быстрей, чем прием следующей (!!!). Вот уж не ожидал… Теперь понятно, как китайцы на экранчике &quot;видосики&quot; рисуют. Самое интересное, что в настройках датчика предельная скорость обновления - 64Гц. Даже если это - для одной &quot;субстраницы&quot;, а не полного кадра, период обновления около 16мс выходит - лишь немногим больше времени, за которое это обновление будет выдано в I2C. Интересно, как чип умудряется с такими скоростями справляться.&lt;br /&gt;Нам же все равно нужно максимум раз в 30с картинку обновлять. Ну, забавы для можно, конечно, и 1Гц поставить. Посмотрим, это нужно уже экспериментально выбирать наиболее оптимальный режим.&lt;br /&gt;&lt;br /&gt;Интересно было бы сравнить с быстродействием &quot;родной&quot; библиотечки от melexis. За какое время у них вычисляется полный кадр на том же самом МК?&lt;br /&gt;Я же, глядя в код, подозреваю, что можно еще немного оптимизировать.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=388127&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/388127.html</comments>
  <category>железяки</category>
  <category>stm32</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/387904.html</guid>
  <pubDate>Sun, 07 Sep 2025 13:43:19 GMT</pubDate>
  <title>Осень, однако!</title>
  <link>https://eddy-em.dreamwidth.org/387904.html</link>
  <description>В прошлую субботу пошел на разведку: вдруг летние опята уже вылезли. Нет, только в одном месте еле-еле проклевываться начали. А сегодня они уже превратились в монстров-переростков:&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;figure&gt;&lt;img src=&quot;https://iili.io/KoR6k0l.jpg&quot;&gt;&lt;/figure&gt;&lt;/div&gt;&lt;br /&gt;Ну, невелика беда: летние - дрянь та еще, потому что больно тонкие ножки и мариновать их как-то не очень…&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/387904.html#cutid1&quot;&gt;Еще немного фото&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=387904&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/387904.html</comments>
  <category>буково</category>
  <category>всячина</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/387664.html</guid>
  <pubDate>Wed, 06 Aug 2025 16:32:47 GMT</pubDate>
  <title>И опять про трапециевидный рамп</title>
  <link>https://eddy-em.dreamwidth.org/387664.html</link>
  <description>Покуда я простые примеры проверял на своей модели, проблем не было. А вот как начал это применять к коррекции положения телескопа в модели, стал получать уйму косяков — в случае, если для перехода в новую позицию нужно было бы остановиться и продолжить движение в противоположном направлении.&lt;br /&gt;Мучил-мучил &lt;s&gt;дикпик&lt;/s&gt; дипсик, но он мне постоянно нерабочие решения выдавал. А когда я в итоге выдал свое рабочее, он его изговнял так, что оно опять не работало (еще и сегфолты откуда-то брались) ☺&lt;br /&gt;В общем, вот код:&lt;br /&gt;&lt;code lang=&quot;C&quot;&gt;&lt;pre style=&quot;border-left: 4px solid; border-top: 1px dashed; border-bottom: 1px dashed; max-height: 300px; overflow: auto; padding: 5px&quot; title=&quot;Code block&quot;&gt;
// inner part of `calc`, could be called recoursively for hard case
static void unlockedcalc(movemodel_t *m, moveparam_t *x, double t){
    // signs
    double sign_a01 = 0., sign_a23 = 0., sign_vset = 0.; // accelerations on stages ACCEL and DECEL, speed on maxspeed stage
    // times
    double dt01 = 0., dt12 = 0., dt23 = 0.;
    // absolute speed at stage 23 (or in that point); absolute max acceleration
    double abs_vset = x-&amp;gt;speed, abs_a = m-&amp;gt;Max.accel;
    // absolute target movement
    double abs_Dx = fabs(x-&amp;gt;coord - m-&amp;gt;curparams.coord);
    if(m-&amp;gt;state == ST_STOP &amp;amp;&amp;amp; abs_Dx &amp;lt; coord_tolerance){
        DBG(&quot;Movement too small -&amp;gt; stay at place&quot;);
        return;
    }
    // signs of Dx and current speed
    double sign_Dx = (x-&amp;gt;coord &amp;gt; m-&amp;gt;curparams.coord) ? 1. : -1.;
    double v0 = m-&amp;gt;curparams.speed;
    double sign_v0 = v0 &amp;lt; 0. ? -1 : 1., abs_v0 = fabs(v0);
    if(v0 == 0.) sign_v0 = 0.;
    // preliminary calculations (vset and dependent values could be changed)
    dt01 = fabs(abs_v0 - abs_vset) / abs_a;
    double abs_dx23 = abs_vset * abs_vset / 2. / abs_a;
    dt23 = abs_vset / abs_a;
    double abs_dx_stop = abs_v0 * abs_v0 / 2. / abs_a;
    if(sign_Dx * sign_v0 &amp;gt;= 0. &amp;amp;&amp;amp; abs_dx_stop &amp;lt; abs_Dx){ // we shouldn&apos;t change speed direction
        if(fabs(abs_dx_stop - abs_Dx) &amp;lt;= coord_tolerance){ // simplest case: just stop
            //DBG(&quot;Simplest case: stop&quot;);
            dt01 = dt12 = 0.;
            sign_a23 = -sign_v0;
            dt23 = abs_v0 / abs_a;
        }else if(abs_vset &amp;lt; abs_v0){ // move with smaller speed than now: very simple case
            //DBG(&quot;Move with smaller speed&quot;);
            sign_a01 = sign_a23 = -sign_v0;
            sign_vset = sign_v0;
            double abs_dx01 = abs_v0 * dt01 - abs_a * dt01 * dt01 / 2.;
            double abs_dx12 = abs_Dx - abs_dx01 - abs_dx23;
            dt12 = abs_dx12 / abs_vset;
        }else{// move with larget speed
            //DBG(&quot;Move with larger speed&quot;);
            double abs_dx01 = abs_v0 * dt01 + abs_a * dt01 * dt01 / 2.;
            if(abs_Dx &amp;lt; abs_dx01 + abs_dx23){ // recalculate target speed and other
                abs_vset = sqrt(abs_a * abs_Dx + abs_v0 * abs_v0 / 2.);
                dt01 = fabs(abs_v0 - abs_vset) / abs_a;
                abs_dx01 = abs_v0 * dt01 + abs_a * dt01 * dt01 / 2.;
                dt23 = abs_vset / abs_a;
                abs_dx23 = abs_vset * abs_vset / 2. / abs_a;
                DBG(&quot;Can&apos;t reach target speed %g, take %g instead&quot;, x-&amp;gt;speed, abs_vset);
            }
            sign_a01 = sign_Dx; // sign_v0 could be ZERO!!!
            sign_a23 = -sign_Dx;
            sign_vset = sign_Dx;
            double abs_dx12 = abs_Dx - abs_dx01 - abs_dx23;
            dt12 = abs_dx12 / abs_vset;
        }
    }else{
        // if we are here, we have the worst case: change speed direction
        DBG(&quot;Hardest case: change speed direction&quot;);
        // now we should calculate coordinate at which model stops and biuld new trapezium from that point
        double x0 = m-&amp;gt;curparams.coord, v0 = m-&amp;gt;curparams.speed;
        double xstop = x0 + sign_v0 * abs_dx_stop, tstop = t + abs_v0 / abs_a;
        m-&amp;gt;state = ST_STOP;
        m-&amp;gt;curparams.accel = 0.; m-&amp;gt;curparams.coord = xstop; m-&amp;gt;curparams.speed = 0.;
        unlockedcalc(m, x, tstop); // calculate new ramp
        // and change started conditions
        m-&amp;gt;curparams.coord = x0; m-&amp;gt;curparams.speed = v0;
        m-&amp;gt;Times[STAGE_ACCEL] = t;
        m-&amp;gt;Params[STAGE_ACCEL].coord = x0;
        m-&amp;gt;Params[STAGE_ACCEL].speed = v0;
        DBG(&quot;NOW t[0]=%g, X[0]=%g, V[0]=%g&quot;, t, x0, v0);
        return;
    }
    m-&amp;gt;state = ST_MOVE;
    m-&amp;gt;movingstage = STAGE_ACCEL;
    // some knot parameters
    double a01 = sign_a01 * abs_a, a23 = sign_a23 * abs_a;
    double v1, v2, x0, x1, x2;
    v2 = v1 = sign_vset * abs_vset;
    x0 = m-&amp;gt;curparams.coord;
    x1 = x0 + v0 * dt01 + a01 * dt01 * dt01 / 2.;
    x2 = x1 + v1 * dt12;
    // fill knot parameters
    moveparam_t *p = &amp;amp;m-&amp;gt;Params[STAGE_ACCEL]; // 0-1 - change started speed
    p-&amp;gt;accel = a01;
    p-&amp;gt;speed = m-&amp;gt;curparams.speed;
    p-&amp;gt;coord = x0;
    m-&amp;gt;Times[STAGE_ACCEL] = t;
    p = &amp;amp;m-&amp;gt;Params[STAGE_MAXSPEED]; // 1-2 - constant speed
    p-&amp;gt;accel = 0.;
    p-&amp;gt;speed = v1;
    p-&amp;gt;coord = x1;
    m-&amp;gt;Times[STAGE_MAXSPEED] = m-&amp;gt;Times[STAGE_ACCEL] + dt01;
    p = &amp;amp;m-&amp;gt;Params[STAGE_DECEL]; // 2-3 - decrease speed
    p-&amp;gt;accel = a23;
    p-&amp;gt;speed = v2;
    p-&amp;gt;coord = x2;
    m-&amp;gt;Times[STAGE_DECEL] = m-&amp;gt;Times[STAGE_MAXSPEED] + dt12;
    p = &amp;amp;m-&amp;gt;Params[STAGE_STOPPED]; // 3 - stop at target
    p-&amp;gt;accel = p-&amp;gt;speed = 0.;
    p-&amp;gt;coord = x-&amp;gt;coord;
    m-&amp;gt;Times[STAGE_STOPPED] = m-&amp;gt;Times[STAGE_DECEL] + dt23;
}

/**
 * @brief calc - moving calculation
 * @param x - using max speed (&amp;gt;0!!!) and coordinate
 * @param t - current time value
 * @return FALSE if can&apos;t move with given parameters
 */
static int calc(movemodel_t *m, moveparam_t *x, double t) {
    //DBG(&quot;target coord/speed: %g/%g; current: %g/%g&quot;, x-&amp;gt;coord, x-&amp;gt;speed, m-&amp;gt;curparams.coord, m-&amp;gt;curparams.speed);
    if (!x || !m) return FALSE;
    pthread_mutex_lock(&amp;amp;m-&amp;gt;mutex);
    int ret = FALSE;
    // Validate input parameters
    if(x-&amp;gt;coord &amp;lt; m-&amp;gt;Min.coord || x-&amp;gt;coord &amp;gt; m-&amp;gt;Max.coord){
        DBG(&quot;Wrong coordinate [%g, %g]&quot;, m-&amp;gt;Min.coord, m-&amp;gt;Max.coord);
        goto ret;
    }
    if(x-&amp;gt;speed &amp;lt; m-&amp;gt;Min.speed || x-&amp;gt;speed &amp;gt; m-&amp;gt;Max.speed){
        DBG(&quot;Wrong speed [%g, %g]&quot;, m-&amp;gt;Min.speed, m-&amp;gt;Max.speed);
        goto ret;
    }
    ret = TRUE; // now there&apos;s no chanses to make error
    unlockedcalc(m, x, t);
    // Debug output
    /*for(int i = 0; i &amp;lt; STAGE_AMOUNT; i++){
        DBG(&quot;Stage %d: t=%.6f, coord=%.6f, speed=%.6f, accel=%.6f&quot;,
            i, m-&amp;gt;Times[i], m-&amp;gt;Params[i].coord, m-&amp;gt;Params[i].speed, m-&amp;gt;Params[i].accel);
    }*/
ret:
    pthread_mutex_unlock(&amp;amp;m-&amp;gt;mutex);
    return ret;
}
&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Решил написать с нуля, а не пытаться исправить старый код. Исписал формулами сегодня с десяток листов бумаги на работе, обкатывая каждый вариант. Вариант с трапецией с нулевой скорости и ненулевой по формулам — одно и то же, поэтому эти варианты не разделял, а выделил в вариант &quot;продолжи движение с бóльшей скоростью&quot;. Из &quot;нормальных&quot; еще есть вариант &quot;тормози с текущей скорости&quot; (но его вероятность околонулевая) и &quot;продолжи движение с меньшей скоростью&quot;. Разница с первым вариантом только в знаке ускорения в начале движения и ненужности проверять, нет ли вариантов, что указанная скорость недостижима.&lt;br /&gt;Ну и остается самый убогий вариант: тормознуть и продолжить. И тут меня осенило: ведь после останова мы движемся по полноценной трапеции или треугольнику. А почему бы не запустить функцию рекурсивно, начав с точки останова, а потом &quot;подрихтовать&quot; начальный этап? И, действительно, получилось!&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=387664&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/387664.html</comments>
  <category>математическое моделирование</category>
  <category>всячина</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/387338.html</guid>
  <pubDate>Thu, 31 Jul 2025 08:50:39 GMT</pubDate>
  <title>Вычисляем скорость наименьшими квадратами / Least square speed calculations</title>
  <link>https://eddy-em.dreamwidth.org/387338.html</link>
  <description>Все вожусь с СУ астросибовскими монтировками. Сначала вычислял скорость 1 раз в промежуток времени тупо как отношение разности координат к разности времен. Получалось очень шумно и ступенчато. Сейчас запилил &quot;плавающее&quot; вычисление наименьшими квадратами. Значительно красивше вышло. И по &quot;болтанке&quot; скорости на интервале, где она должна быть постоянна, сразу понял, что я неправильно настроил ПИД-регулятор sidservo (то ли I, то ли P задрал выше, чем нужно).&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/387338.html#cutid1&quot;&gt;Код&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=387338&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/387338.html</comments>
  <category>всячина</category>
  <category>роботелескоп</category>
  <category>математическое моделирование</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/387119.html</guid>
  <pubDate>Wed, 30 Jul 2025 08:32:43 GMT</pubDate>
  <title>ПИД - продолжение</title>
  <link>https://eddy-em.dreamwidth.org/387119.html</link>
  <description>Идея сделать 2 разных набора коэффициентов (для &quot;координатно-ориентированной&quot; и &quot;скоростно-ориентированной&quot; частей траектории) оказалась очень даже к месту. В первом случае I нам почти не нужен (т.к. только будет затягивать выход в следующее состояние), а во втором достаточно приличный по величине P (чтобы &quot;успевать&quot;, если быстро меняется траектория) и небольшие D/I (чтобы осцилляций избежать). Фактически, на маленьких скоростях (что обычно и есть) эмуляция себя показала отлично даже с сильным шумом (до 1 условной угловой секунды).&lt;br /&gt;Теперь остается &quot;всего ничего&quot;: добавить модель движения в нижний уровень СУ, да вогнать ПИД. И написать обертки подо все это, чтобы можно было тесты гонять. А там уж Тимур вернется, и пусть свой верхний уровень подключает, чтобы у нас и СКН были, и все эти расчеты положения объектов, запретных зон и т.д., и т.п.&lt;br /&gt;Вчера сверял реальные графики движения телескопа и модельные: &quot;тютелька в тютельку&quot;, разве что по какой-то причине движение телескоп стартует лишь через ~0.25с после получения команды. Нужно будет в модели это учесть, если не удастся понять причину задержки. Хоть там и убогий 8-битный МК используется, но я сильно сомневаюсь, что даже этот 8051 так долго будет рассчитывать новую траекторию при получении команды. Зато, к счастью, движение происходит таки по трапециевидному рампу (ну или &quot;углы&quot; немного сглаживают, но на общей картине это не заметно).&lt;br /&gt;&lt;br /&gt;На этой неделе ребята обещали закончить с осушителями в куполах 4/5, так что нужно будет туда по-быстренькому сеть организовать, да перенести компьютер с 3 телескопа. Как я уже писал, тестовые запуски 4/5 показали в процессе движения достаточно малые шумы, на уровне долей секунды. А вот третий по склонению болтается с размахом секунд в 15, когда его двигаешь по часовому углу на максимальной скорости! Пока что бороться с проблемами механики не хочется.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=387119&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/387119.html</comments>
  <category>роботелескоп</category>
  <category>всячина</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/386828.html</guid>
  <pubDate>Tue, 29 Jul 2025 08:44:00 GMT</pubDate>
  <title>ПИД</title>
  <link>https://eddy-em.dreamwidth.org/386828.html</link>
  <description>Все-таки дошло до меня, почему дипсик так упорно тыкал в меня &quot;классическим&quot; ПИД, где вычисляется именно скорость движения в следующем цикле, а не поправка. Ведь фактически &quot;воздействие&quot;, вычисленное по формуле ПИД, дает величину смещения, которое нужно пройти за следующий цикл. Соответственно, скорость на этом этапе должна быть равна отношению &quot;воздействия&quot; к длительности цикла, dt.&lt;br /&gt;А вот на мелких отклонениях, когда идем уже &quot;ноздря в ноздрю&quot;, такой расчет приведет к осцилляциям. Поэтому нужно брать какую-то небольшую часть отношения &quot;воздействия&quot; к dt и суммировать с текущей скоростью. Вот такая ошибка получается после выхода на режим сопровождения (ошибка &amp;lt; 0.1 условной единицы). Шум в пределах ±0.02 имитирует дребезг младших разрядов энкодера. Скачок на t=30 - тоже имитация реального скачка (например, от порыва). В промежутке t=20÷30 координата постоянна, далее опять возвращается к движению по синусоиде.&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;figure&gt;&lt;a href=&quot;https://freeimage.host/ru&quot;&gt;&lt;img src=&quot;https://iili.io/F8WeKqg.jpg&quot; alt=&quot;F8WeKqg.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;Ну не красота ли?&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/386828.html#cutid1&quot;&gt;Read more...&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=386828&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/386828.html</comments>
  <category>роботелескоп</category>
  <category>всячина</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/386643.html</guid>
  <pubDate>Thu, 17 Jul 2025 14:14:28 GMT</pubDate>
  <title>&quot;Модбасятина&quot;</title>
  <link>https://eddy-em.dreamwidth.org/386643.html</link>
  <description>Добавил в &lt;a href=&quot;https://github.com/eddyem/eddys_snippets/tree/master/modbus_params&quot;&gt;утилиту&lt;/a&gt; для работы с модбас-устройствами &quot;по словарю&quot; еще и &quot;псевдонимы&quot;. Позволяет вместо того, чтобы вспоминать, как там запустить мотор или сбросить ошибку, просто дать команду &quot;cw/ccw/clearerr&quot;… Параметров пока негусто:&lt;br /&gt;&lt;code lang=&quot;C&quot;&gt;&lt;pre style=&quot;border-left: 4px solid; border-top: 1px dashed; border-bottom: 1px dashed; max-height: 300px; overflow: auto; padding: 5px&quot; title=&quot;Code block&quot;&gt;
  -D, --dictionary=arg   file with dictionary (format: code register value writeable)
  -N, --node=arg         node &quot;IP&quot;, or path (could be &quot;\0path&quot; for anonymous UNIX-socket)
  -O, --outdic=arg       output dictionary for full device dump by input dictionary registers
  -R, --readc            registers (by keycodes, checked by dictionary) to read; multiply parameter
  -U, --unixsock         UNIX socket instead of INET
  -W, --writec           write new value to register by keycode (format: keycode=val); multiply parameter
  -a, --alias=arg        file with aliases in format &apos;name : command to run&apos;
  -b, --baudrate=arg     modbus baudrate (default: 9600)
  -d, --device=arg       modbus device (default: /dev/ttyUSB0)
  -h, --help             show this help
  -k, --dumpkey          dump entry with this keycode; multiply parameter
  -o, --outfile=arg      file with parameter&apos;s dump
  -r, --readr            registers (by address) to read; multiply parameter
  -s, --slave=arg        slave ID (default: 1)
  -t, --dumptime=arg     dumping time interval (seconds, default: 0.1)
  -v, --verbose          verbose level (each -v adds 1)
  -w, --writer           write new value to register (format: reg=val); multiply parameter
&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Я не утруждал себя отдельным флагом &quot;-S&quot; для запуска сервера, как в некоторых других: клиента все равно нет, а уж если указан &quot;node&quot;, то значит сервер. &quot;Псевдонимы&quot; только в серверном режиме работают. А в standalone-режиме можно писать в любые регистры без проверки (мало ли: вдруг не было в &quot;словаре&quot; этого предусмотрено).&lt;br /&gt;Дамп можно запускать в новые файлы (в этом случае автоматом закрывается старый). &lt;br /&gt;У самого сервера, помимо команд вида &quot;alias&quot; или &quot;register [= value]&quot;, есть и команды:&lt;br /&gt;&lt;pre&gt; clodump: stop dump and close current dump file
newdump: open new dump file or get name of current
list: list all dictionary (as getter) or given register (as setter: by codename or value)
alias: list all of aliases (as getter) or with given name (by setter)&lt;/pre&gt;&lt;br /&gt;Если сюда еще и добавить работу с &quot;read/write coil[s]&quot;, отпадет необходимость запускать терминал для тестирования какой-нибудь новой убогой релюшки со своим убогим протоколом...&lt;br /&gt;&lt;br /&gt;Как ни презираю я модбас, все-таки пришлось с этой дрянью поработать (и даже местами на своих железках реализовать).&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=386643&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/386643.html</comments>
  <category>всячина</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/386499.html</guid>
  <pubDate>Tue, 15 Jul 2025 17:57:56 GMT</pubDate>
  <title>Железяки и не только…</title>
  <link>https://eddy-em.dreamwidth.org/386499.html</link>
  <description>Что-то за последние пару недель с работой почти не продвинулся: сначала практически неделю были студенты питерского политеха: экскурсия, да 14 пар занятий. Понемногу вернулся к работе с новыми приводами БТА, ну и занимался &quot;Астро-М&quot;. Система управления оставшимися тремя телескопами в состоянии &quot;конь немного повялялся&quot;, хотя должны были уже к концу июня начать двигать телескопом.&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/386499.html#cutid1&quot;&gt;tl;dr&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___2&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/386499.html#cutid2&quot;&gt;БТА без зеркала&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___2&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=386499&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/386499.html</comments>
  <category>роботелескоп</category>
  <category>железяки</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/386280.html</guid>
  <pubDate>Wed, 04 Jun 2025 05:51:12 GMT</pubDate>
  <title>Новый контроллер энкодеров</title>
  <link>https://eddy-em.dreamwidth.org/386280.html</link>
  <description>Я про него &lt;a href=&quot;https://eddy-em.livejournal.com/504926.html&quot;&gt;писал уже&lt;/a&gt;, а намедни платы получил. 2.5 часа ушло, чтобы запаять на двух платах комплектуху. Еще минут 15 отмывал с кисточкой (пока нормальной УЗ-ванны нет, по-человечески вымыть не получается). Вот, что вышло:&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;figure&gt;&lt;a href=&quot;https://freeimage.host/ru&quot;&gt;&lt;img src=&quot;https://iili.io/FJp6TjR.jpg&quot; alt=&quot;FJp6TjR.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/386280.html#cutid1&quot;&gt;Дальше&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=386280&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/386280.html</comments>
  <category>железяки</category>
  <category>роботелескоп</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/386036.html</guid>
  <pubDate>Fri, 23 May 2025 05:46:24 GMT</pubDate>
  <title>Modbus-релюшка</title>
  <link>https://eddy-em.dreamwidth.org/386036.html</link>
  <description>На основе таких релюшек хочу организовать управление питанием на комплексе &quot;Астро-М&quot;:&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;figure&gt;&lt;a href=&quot;https://freeimage.host/i/3ZskaPS&quot;&gt;&lt;img src=&quot;https://iili.io/3ZskaPS.md.jpg&quot; alt=&quot;3ZskaPS.md.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/figure&gt;&lt;/div&gt;&lt;br /&gt;(подключая реле к питанию, не понял, зачем я заказал пятивольтовое, если все источники питания заказывал на 12В)&lt;br /&gt;Написал вчера &lt;a href=&quot;https://github.com/eddyem/eddys_snippets/tree/master/modbus_relay&quot;&gt;простейшую утилиту&lt;/a&gt; для работы с реле: получение значений дискретных входов и состояния реле, управление реле, смена идентификатора.&lt;br /&gt;Использовал библиотеку &lt;a href=&quot;https://libmodbus.org/&quot;&gt;libmodbus&lt;/a&gt;. Честно говоря, она мне не понравилась: совершенно нелогичные названия функций и очень много ненужного функционала. Похоже, надо в свою &quot;библиотеку сниппетов&quot; еще и работу с модбасом добавить. Там кода-то от силы страницы на 2 на все, про все! &lt;a href=&quot;https://github.com/eddyem/stm32samples/blob/master/F1%3AF103/FX3U/modbusrtu.c&quot;&gt;Вот здесь&lt;/a&gt; я уже чем-то подобным занимался (только на МК, поэтому больше половины кода - работа с регистрами и т.п.).&lt;br /&gt;&lt;br /&gt;На злополучном шлагбауме, на управление которым я пару &quot;малинок&quot; прикрутил, опять после отключения электричества отмерла флешка (точней, после fsck никаких проблем нет вроде, но во время загрузки возникают какие-то дикие маты на невозможность создания fstab, хотя зачем его создавать, если он фиксированный?). Решил, что хватит уже насиловать одноплатники без ИБП, поэтому на сервере подниму простейший демон и нарисую (попробую сначала, что мне ИИ предложит) простейшую веб-морду с огромными кнопками &quot;Open&quot;, &quot;Close&quot; и &quot;Stop&quot;. Нехай охранник через браузер открывает/закрывает. В качестве &quot;защиты&quot; можно сделать простейшую авторизацию в Nginx, но т.к. от нее толку полный 0 на http, то пусть будет вообще &quot;голой жопой наружу&quot;: авось, ушлые студенты не прознают, что можно таким образом шлагбаум &quot;взломать&quot; ☺&lt;br /&gt;&lt;br /&gt;А на &quot;Астро-М&quot; нужно, помимо системы управления оставшимися тремя телескопами, заново писать демоны метео и &quot;супердемона&quot;, который будет выдавать метеоданные со всех источников (2 локальные метеостанции, метеостанция БТА, датчик осадков и датчик грозы), да пасти датчик грозы: чуть ближе 5км, чтобы отправлял всем сообщения &quot;Emerge closing&quot;, а как компы поотключаются, отключал питание — сначала всего (кроме самих реле), что после каждого ИБП висит, а потом — во вводном щите все питание, исходящее &quot;наружу&quot;. Командами ИБП в данном случае нагрузку отключать нельзя: как ее после окончания грозы включать? А так - коль уж компьютер на &quot;купольном&quot; ИБП около двух суток может работать, то релюшке и конвертеру RS-485 в оптику и обратно питания надолго хватит (думаю, там саморазряд аккумуляторов значительно выше).&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=386036&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/386036.html</comments>
  <category>железяки</category>
  <category>роботелескоп</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/385741.html</guid>
  <pubDate>Tue, 08 Apr 2025 20:06:38 GMT</pubDate>
  <title>Графики с новым контроллером энкодеров</title>
  <link>https://eddy-em.dreamwidth.org/385741.html</link>
  <description>Добавил опрос нового контроллера (о котором недавно писал) в нижний уровень СУ телескопом. Теперь видно, что, как минимум, у контроллера не настроен ПИД-регулятор. Ну и болтается все нещадно, пока едет. Есть у меня подозрения, что если даже удастся добиться точностных характеристик сопровождения, из-за вибрации монтировки звезды будут кругляшами (а то и &quot;ромбиками&quot;) в 3-4&apos;&apos;…&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/385741.html#cutid1&quot;&gt;Графики&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=385741&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/385741.html</comments>
  <category>железяки</category>
  <category>роботелескоп</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/385298.html</guid>
  <pubDate>Fri, 04 Apr 2025 18:20:57 GMT</pubDate>
  <title>И еще одна железяка…</title>
  <link>https://eddy-em.dreamwidth.org/385298.html</link>
  <description>Редко так бывает, чтобы сначала код написал, а потом нарисовал плату, но сейчас почти так. Почти — потому как я все же решил еще добавить USART для возможности прямого подключения к контроллеру SidServo (пусть будет эдакая универсальная плата). Заодно можно будет проверить: действительно ли нужно слать туда данные не больше 20 раз в секунду, или можно почаще.&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/385298.html#cutid1&quot;&gt;Картинки&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;Теперь можно обратно вернуться к завершению разработки СУ монтировкой. Две недели уже прошло с последнего коммита… Там, правда, еще и БТА, но, как обычно: &quot;мелкие&quot; — по вечерам, &quot;большие&quot; — днем.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=385298&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/385298.html</comments>
  <category>stm32</category>
  <category>роботелескоп</category>
  <category>железяки</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/385097.html</guid>
  <pubDate>Wed, 02 Apr 2025 19:21:51 GMT</pubDate>
  <title>А дипсик немного исправляется…</title>
  <link>https://eddy-em.dreamwidth.org/385097.html</link>
  <description>На прошлой неделе я на макетке спаял модуль для снятия данных с 26-разрядных абсолютных угловых энкодеров по протоколу BISS-C. Отладил в четверг вечером код, чтобы уж точно оба SPI работали (поначалу не мог понять, что за дичь со вторым SPI, но тут заметил, что я оставил от USB-шаблона работу с USART1, который тот же самый канал DMA использует, что и SPI2); в пятницу установил этот блок (но, судя по всему, опять оторвал один из тонких проводков от энкодера; как только кончатся эти долбаные дожди, надо будет смотаться и перепаять все нормально, чтобы уж точно не рвалось). Напомню, что решение напрямую в USB считывать показания датчиков возникло из-за того, что родная астросибовская &quot;коробочка&quot; читает лишь каждые 50мс, а мне минимум 100 раз в секунду надо (а, может, и тысячу — это уж как покажут эксперименты после соединения всего воедино). &lt;br /&gt;В понедельник честно воспользовался выходным, а вчера и сегодня дорабатывал &lt;a href=&quot;https://github.com/eddyem/stm32samples/tree/master/F1%3AF103/BISS_C_encoders&quot;&gt;прошивку&lt;/a&gt; для работы с энкодерами.&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/385097.html#cutid1&quot;&gt;Дальше&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;Завтра еще подумаю, что нужно, чтобы &quot;добить&quot; код до хотя бы пре-релиза, а потом сяду очередную плату нарисовать. Многоканальный (7 каналов) преобразователь USB-serial с гальваноразвязками на каждый канал уже нарисовал, теперь надо вот это сделать (тоже с гальваноразвязками на энкодеры, чтобы не спалить их в случае чего). Ну и останется еще нарисовать платку для работы с ИК-датчиками (простой преобразователь I2C в RS-485 с развязкой) и датчиками грозы (там развязка не нужна, взял бы &quot;стандартный&quot; преобразователь I2C-USB, но в случае зависания датчика надо сбрасывать питание; удобней это по протоколу делать, а не отрубая USB — тем паче, не у всех компьютеров питание USB можно отключить).&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=385097&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/385097.html</comments>
  <category>железяки</category>
  <category>роботелескоп</category>
  <category>stm32</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/384810.html</guid>
  <pubDate>Wed, 02 Apr 2025 17:18:06 GMT</pubDate>
  <title>Решение проблемы с сетью.</title>
  <link>https://eddy-em.dreamwidth.org/384810.html</link>
  <description>Как оказалось, есть такие непонятные вещи, как MTU и MSS, о которых я впервые узнал как раз намедни (когда увидел, что этот самый MTU у ppp на 8 байт меньше, чем у остальных). &lt;br /&gt;И почему я сразу не наткнулся на &lt;a href=&quot;https://wiki.gentoo.org/wiki/Home_router/ru&quot;&gt;эту замечательную статью&lt;/a&gt; в генту-вики? Там как раз описываются все вещи, необходимые для организации домашнего маршрутизатора. &lt;br /&gt;Проблема синхронизации размеров MSS с MTU решается одной строчкой:&lt;br /&gt;&lt;pre&gt;iptables -A FORWARD -t mangle  -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu&lt;/pre&gt;&lt;br /&gt;Ну и т.к. в дефолтном ядре кальки все, что только можно, запихнули в модули, нужно добавить в &lt;tt&gt;/etc/modules-load.d/net.conf&lt;/tt&gt; автозагрузку модуля &lt;tt&gt;xt_tcpmss&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Вот почему все так сложно?&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=384810&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/384810.html</comments>
  <category>linux</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/384705.html</guid>
  <pubDate>Sun, 23 Mar 2025 19:57:35 GMT</pubDate>
  <title>Что ж я про бубен-то забыл?</title>
  <link>https://eddy-em.dreamwidth.org/384705.html</link>
  <description>А ведь лежит себе в ящике: купил когда-то, чтобы разукрасить и на стенку на работе повесить, да так и не дошли руки ☺&lt;br /&gt;Преамбула: еще с месяц назад на фоне падения курса зеленой туалетной бумаги я задался вопросом, что бы такое прикупить на алике. Ну и решил себе файлопомойку поменять. Пришло все достаточно быстро, но вот преобразователь питания с 12В на материнку оказался мертвым (увы, единственная материнка, что я нашел, оказалась на каком-то адски мощном процессоре, потребляющем аж 8Вт, из-за чего там даже вентилятор есть; ну и вместо обычного питания 12В, как на всех мини-материнках &quot;микрокомпьютеров&quot;, там полноценный ATX-разъем еще и с допом на 4 контакта). Поэтому заказал новый на озоне, он достаточно быстро пришел (но т.к. ездим мы в Зелик раз в неделю - по пятницам или субботам, то только в эту пятницу забрал). По всяким тестам и характеристикам сделаю отдельную публикацию, если не лень будет (там уж больно долгий tl;dr получится), а пока — просто про то, как сегодня страдал (подробности конфигураций тоже потом выложу, наверное).&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/384705.html#cutid1&quot;&gt;Дальше&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=384705&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/384705.html</comments>
  <category>всячина</category>
  <category>linux</category>
  <category>железяки</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/384434.html</guid>
  <pubDate>Thu, 20 Mar 2025 06:19:30 GMT</pubDate>
  <title>В kicad 9 полно новых улучшений!</title>
  <link>https://eddy-em.dreamwidth.org/384434.html</link>
  <description>Кое-какие полезные вещи, которые раньше были доступны только из плагинов и то работали, то нет, теперь вынесены в основной функционал кикада. Вот, как на картинке, например: для трех одинаковых листов нарисовал размещение, провел дорожки, а потом щелк-щелк, и три одинаковых позиции готовы! &lt;br /&gt;Экспорт и импорт теперь более широкий. С  теми же иерархическими листами удобней работать стало. У элементов появились альтернативные пины (в принципе, это было уже в поздних восьмых версиях): у того же МК щелкаешь по ноге, и выбираешь, что отобразится (и потом не получаешь, внезапно, что перепутал USB_DP и USB_DM — их уже явно видно). Более гибкая проверка правил (все равно ругается на невыровненные по сетке элементы, но теперь это хоть отключить можно). И т.д., и т.п.&lt;br /&gt;В генте пока нет, поэтому поставил из git, как появится в репах, снесу из git&apos;а и опять буду пользоваться stable.&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/384434.html#cutid1&quot;&gt;Большой скриншот&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=384434&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/384434.html</comments>
  <category>kicad</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/384240.html</guid>
  <pubDate>Fri, 07 Mar 2025 07:56:54 GMT</pubDate>
  <title>Как вам такое соседство?</title>
  <link>https://eddy-em.dreamwidth.org/384240.html</link>
  <description>Есть у нас в Черкесске &quot;центр дополнительного образования&quot; (или как-то так). И вот, несколько лет назад загорелись они пару телескопов установить. Естественно, им было предложено поставить телескопы у нас — рядом с нашим комплексом &quot;Астро-М&quot;. Однако, ребята решили &quot;пойти своим путем&quot; и установить их прямо в Черкесске…&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/384240.html#cutid1&quot;&gt;фотки&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;Основной проблемой является то, что у них нет человека, который бы телескопами на постоянной основе занимался. Я приехал туда (уже второй раз, и за 3 или 4 года ничего не изменилось), написал, что еще приобрести. Объяснил, что нужно подключить второй телескоп к питанию и тоже обязательно осушитель воздуха поставить. Ну и, естественно, восстановить информационную сеть (как я понял, кабель когда-то прокладывали, но потом оборвали где-то в подвале).&lt;br /&gt;&lt;br /&gt;Интересно: неужели в таком большом Черкесске нет ни одного астронома-любителя, кто мог бы следить за этими телескопами и иногда детям Луну/планеты показывать (понятно, что больше ни для чего другого эти телескопы не пригодны с таким-то местоположением)?&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=384240&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/384240.html</comments>
  <category>всячина</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/383832.html</guid>
  <pubDate>Sat, 22 Feb 2025 17:17:35 GMT</pubDate>
  <title>Power bank Hoko J102</title>
  <link>https://eddy-em.dreamwidth.org/383832.html</link>
  <description>У мелкой сегодня день рождения — теперь она уже официально может на переднем сиденьи ездить (но, учитывая то, что она и два года назад отнюдь не как 10-летка выглядела, спокойно уже тогда ездила, если мамы в машине нет).&lt;br /&gt;Ну, а в качестве &quot;подарка-сюрприза&quot; (т.к. основные подарки она заранее заказала) купил ей на &quot;озоне&quot; упомянутый аккумулятор. Понятно, что с 10А·ч там наврали (т.е. почти — всегда нужно делать скидку на китайские товары: у них и Вольты китайские, и Амперы, и Ватты, и иногда даже время). Фактическая емкость чуть меньше семи А·ч (что уже поражает, обычно нужно на 3 делить, чтобы реальное значение получить), остальное — под катом.&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/383832.html#cutid1&quot;&gt;Картинки-графики&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;P.S. Совершенно непонятно, зачем на аккумуляторе гнездо microUSB, где написано &quot;IN&quot;. Заряжать эти 6 с небольшим А·ч через это недоразумение — часов 14!!!&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=383832&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/383832.html</comments>
  <category>всячина</category>
  <category>железяки</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/383509.html</guid>
  <pubDate>Mon, 17 Feb 2025 19:08:53 GMT</pubDate>
  <title>&quot;Контроллер монтировок&quot; Sidereal Servo II</title>
  <link>https://eddy-em.dreamwidth.org/383509.html</link>
  <description>Потихоньку пишется система управления оставшимися тремя телескопами — уже чисто астросибовскими (т.е. и телескоп, и купол, и монтировка - &quot;Астросиб&quot;). Я уже писал, что там используется какой-то любительский контроллер от sidereal servo, и что там были проблемы с недетерминированностью получения координат осей по энкодерам через контроллер (контроллер эту информацию вообще никак не использует, являясь лишь посредником).&lt;br /&gt;По мере написания библиотеки нижнего уровня, пишу и разные вспомогательные утилиты-тесты, использующие ее функции.&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/383509.html#cutid1&quot;&gt;Картинки&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;Я уже писал, что производитель контроллера предлагает какое-то &quot;маздай-онли&quot; ПО. Честно говоря, видя такую дичь, я вообще не понимаю, как можно гарантировать хотя бы пятиминутные экспозиции на телескопах, пользующихся этим контроллером, при помощи этого ПО. Даже если очень аккуратно настроить ПИД-регулятор. Интересно бы пораспрашивать тех, кто пользуется &quot;из коробки&quot;. &lt;br /&gt;Начальство даже предлагало на одном из телескопе попробовать &quot;ПО от производителя&quot;, на что я ответил, что это уже совсем без меня. У меня на маздай такая же непереносимость, как на змеюку. Я уж молчу о том, что автоматизировать (а уж тем паче - роботизировать - такой телескоп будет просто невозможно).&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=383509&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/383509.html</comments>
  <category>негодую</category>
  <category>рукожопие</category>
  <category>железяки</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
