LINUX.ORG.RU

Сообщения Vit

 

Нужна модель изменения сопротивления для коллекторника переменного тока

https://github.com/speedcontrols/ac_sc_grinder/tree/master/doc#motors-resista...

Делаем регулятор с бездатчиковой стабилизацией оборотов. Пока для коллекторников переменного тока (бормашинки, дрелики и т.п. без магнитиков). Обнаружился довольно мутный эффект - у мотора реально меняется активное сопротивление, в зависимости от оборотов и нагрузки. Именно активное, я не ошибся.

А поскольку от сопротивления мотора зависит вычисляемая скорость на низких оборотах, начинаются всякие нехорошие эффекты. В итоге в ПИ-регуляторе приходится расслаблять коэффициенты. Когда пытались на глаз сделать коррекцию сопротивления (почти от балды), то интегральный коэффициент уменьшился в разы. Хотелось бы подвести под это дело научную базу. Я конечно могу с умным видом потрындеть про искры в щетках, но нарисовать формулы и расписать алгоритм калибровки это не помогает.

Кто-нибудь разбирался с подобным эффектом?

 моторы,

Vit
()

Апргейд SSD в макбуке

У меня старый макбук (кажется mid 2014), и захотелось дешево и сердито проапгрейдить SSD. Это значит, взять карточку M2 и воткнуть ее через переходник. Может, кому пригодится, там не все гладко.

1. В любом случае, стоит сначала проапгрейдить макось, чтобы всосалась новая фирмварь. Там драйверы NVME. По той же причине, старую планку лучше сохранить. И на всякий случай сделать загрузочный USB.

2. В старые макбуки (до 2015) советуют ставить NGFF. Чтобы не было проблем с засыпанием. В любом случае, такое нашел только у KingSpec, и планка не заработала ни с одним из переходников. В один из них она нормально вообще не втыкалась - конденсатор мешал на обратной стороне платы.

3. Нормально заработал Kingston A1000 (NVME). Он не самый быстрый, зато жрет не очень много. Не гонитесь за понтовыми самсунгами.

4. Переходники бывают разной толщины. Места мало, надо тонкий. У меня взлетел вот такой.

5. Длина [переходник + Kingston] получилась чуть больше чем надо. Родным винтом не поджать, и шляпа наезжает на чип. Я взял другой винт, но можно наверное поджать скотчем на основе пенки, отрезав нужный кусок.

------------

6. Убунту ставил на весь диск, предварительно убедившись, что можно поставить макось с USB. Стандартно не работает вафля, причем если ставить с USB-стика, а не с CD-ROM, то ручками устанавливать драйвер гиморно - зависимости не цепляются. Нужен интернет. Подходящего WiFi-свистка у меня не было. К счастью, обнаружилось, что инет можно раздать с андроида через Bluetooth. Причем поскольку мобилка тянет инет с вафли, платный мобильный траффик не расходуется. Bluetooth поднимается на раз через менюшку, ставить ничего не надо.

Вроде все, нищебродский апдгрейд удался. По деньгам - 100$ за SSD 500Gb, и копеечные переходники. Ну еще я вроде как попал на кривой KingSpec, но обогатился знаниями :). С засыпаниями макоси не разбирался - не надо было. Но на моделях 2015+ пишут что вроде ок. На предыдущих можно подхимичить с режимами сна, тоже не особо вникал что как.

 ,

Vit
()

Посоветуйте алгоритм детектора автоколебаний

Хочется попробовать настраивать ПИ-регулятор, крутя коэффициенты до возникновения автоколебаний. Способ один из стандартных, все ок.

Вопрос - а как эти автоколебания детектить программно? Желательно дешево и сердито.

Пока в голову пришло только посчитать дисперсию (~ шумы) на выходе без регулятора, а потом включить регулятор и если дисперсия заметно выше - значит пошел возбуд.

 

Vit
()

Как бы покрасивее заменить отсутствующие генераторы?

https://github.com/speedcontrols/ac_sc_grinder/blob/master/src/calibrator.h

Как можно покрасивее записать бизнес-логику? В процессе калибровки надо проделать линейную последовательность действий. Местами иногда бывают циклы, но без фанатизма. Снаружи это все дергается через метод ".tick()", а дальше «крутись как хочешь».

Не нравится мне как выглядит код. Ни когда это был единый switch, ни после разбивки на мелкие функции. Суть простого алгоритма тонет в особенностях реализации. Что можно придумать, чтобы улучшить читаемость?

PS. Тащить ради этого RTOS как-то не хочется.

 , ,

Vit
()

Как «размазать» поиск медианы?

Нужно считать медиану на последовательности отсчетов длиной 8...128.

Т.к. за один раз считать долго, хочется апдейтить медиану после каждого нового отсчета (или можно заталкивать данные парами, чтобы четность не менялась).

Как это проделать наиболее эффективным образом (с минимумом обращений к памяти)? Можно сделать 2 массива (с нижней половиной и верхней половиной значений). Тогда добавление 2 новых элементов в худшем случае будет ~ 1/2 линейного скана (когда оба элемента попадают в одну половину).

Что-то еще можно придумать? Все для Cortex-m0/m3, где обращение к памяти - 5 тактов.

 median filter

Vit
()

Какие бы прописать заголовки кеширования для скриптов?

На http://fontello.com/ после апгрейдов юзерам иногда начинают валиться ошибки, которые лечатся по ctrl+F5. Хоть и не до конца понятно почему, но в кеше что-то-как-то неудачно застревает.

Я бы мог конечно насувать всяких no-cache, но не уверен что это самая удачная идея. Какие вообще есть варианты, если контент страницы генерится скриптом?

В принципе есть мысль добавить eTag и втыкать must-revalidate. Это самое удачное решение или есть лучше? Стримов нет, так что возможность влепить etag есть всегда.

 

Vit
()

Где взять рыбу договора с иностранным клиентом?

Надо корректно оформить получение валюты. С минимумом бумаг. За продажу рекламы. Многобукф про ответственность сторон и разрешение споров не надо - типа, «факт платежа означает что работы выполнены должным образом и договор закрыт». Судиться и предъявлять претензии точно никто не будет, бумажки только ради того чтобы на месте все провести.

Можно где-нибудь взять рыбу, желательно на английском, чтобы «заказчик» просто подписал и прислал фотку? Вроде на русском надо только для разрешения споров а их не будет. Напрягать вторую сторону с русским текстом и бегать с нотариально заверенными переводами не хочу.

PS. В валютном отделе банка говорят, что их подобный подход в принципе устраивает, просят прислать макет для окончательной проверки.

PPS. Если готовой рыбы нет, может кто сделает за мзду малую?

 договоры

Vit
()

stm32, нужна нормальная библиотека эмуляции EEPROM через FLASH

Есть App note 2954, в котором довольно понятно все расписано. Проблема в том, что нет готовой библиотеки, которую можно просто подключить и пользоваться. Обычно везде захардкожены хедеры, причем там что переменные нельзя перекрыть - вместо подключения библиотеки надо ручками копировать код и править файлы.

Из наиболее правдоподобного нашел это:

1. https://github.com/jeelabs/embello/blob/master/lib/driver/romvars.h

- Симпатично сделано, но нужен низкоуровневый драйвер FLASH (похоже что от ардуины, а у меня просто HAL)
- Нельзя уменьшить размер потребляемой памяти (она всегда выделяется под максимально возможное количество переменныx)

2. https://github.com/offchooffcho/STM32-1/tree/master/lib/EEPROMEmulation_AN

Тут код лежит в общей солянке, надо выдирать.

Еще непонятно, как сделать чтобы не хардкодить адрес свободного флеша на хвосте, а определять автоматически.

==============

Как-то утомляет ситуация с эмбедами. Вроде даже библиотеки кто-то пишет, но как копнешь - все через одно место...

Может кто знает или делал нормально оформленную библиотеку которую можно воткнуть в platformio как зависимость и не уродоваться с копированием/правкой исходников?

PS. Ну или может кто возьмется сделать нормально...

 , ,

Vit
()

stm32f103c8t6 - 220v на АЦП через делитель прокатит?

https://easyeda.com/speed/AC-speed-control-for-grinder

Нужно мерять положительный кусок синусоиды. Ну зафигачен делитель 301:1. И что-то у меня по мере отладки возникли сомнения насчет номиналов - не будет ли великовато входное сопротивление.

По мануалу у АЦП на входе должно быть 0.5-50K для 1/4LSB 12bit. Верхнее плечо делителя < 100K делать вообще нельзя (греться будет). Это получается что без буферного усилителя вообще никак что-ли?

На всякий случай, напоминаю вопрос: можно ли 220v втулить на stm32c103 через простой делитель и мерять хотя бы 10бит? Если совсем нельзя - чего-б такое придумать из говна и палок...

 ,

Vit
()

Посоветуте оптимальный алгоритм поиска медианы

есть stm32 c ацп, к которому хочется привернуть фильтр шума. Обычно советуют медианный.

Ну ок, допустим мне надо искать медиану для 5-9 отсчетов (uint16_t). Как это сделать наиболее быстрым образом? В идеале - просто ссылка на годную библиотеку, ну и какие-то бенчмарки минимальные, желательно для ARM Cortex M0-M3.

PS Вики и stackoverflow в общих чертах смотрел.

 , median,

Vit
()

Как правильно ждать прерываний в idle-цикле?

Есть прошивка для эмбедов, в которой все работает по прерываниям. Чтобы процессор меньше жрал, хочется в конце main() воткнуть что-то подобное:

while(1) {
  __WFI();
}

Но вроде в мануалах еще пишут про всякие DSB и т.п. для корректного завершения записи в память. А в линуксовом ядре навороты для совсем сложных случаев, которые сходу понять проблемматично.

Есть ли какой-то относительно простой и стандартный способ сделать бесконечный цикл ожидания прерываний, для ARM-одноядерников? Запутался уже.

 , , ,

Vit
()

Куда пропадает static const массив?

https://github.com/speedcontrols/ac_sc_grinder/blob/4cc29e5b15530b104045d4c02...

Есть проесть под stm32 в platformio. Объявляю массив констант. Все собирается. При этом в выхлопе размер PROGMEM/DATA не меняется никак. Размер .bin/.elf тоже. Ради эксперимента пробовал сильно увеличить размер массива - изменений нет.

Что я делаю не так?

Массив юзается, вроде оптимизатор его выкидывать не должен.

 , ,

Vit
()

Чем спаять k-термопару, чтобы без сварного шарика?

Хочется мерять температуру платы, которую жарит паяльная станция. Народ много чего перепробовал, но в итоге пришел к выводу, что надо выбирать самые мелкие и самые легкие термопары.

Моя гениальная идея заключается в том, чтобы взять самый голимый датчик от мультиметра, откусить шарик, сделать скрутку и пропаять тугоплавким припоем. Вроде есть припои на 450-550C (я в них не очень разбираюсь), должны хорошо подойти для нашего случая.

Собсная, вопросов два:

- Какой выбрать припой? Желательно поширпотребнее, типа «электрод для TIG-сварки алюминия».
- Чего еще надо иметь и уметь, чтобы успешно паять газовой горелкой/турбозажигалкой дома на коленке?

 термопара

Vit
()

Зачем в RTD три провода, если длина всего 30см?

https://ru.aliexpress.com/item/Three-wire-precision-platinum-resistance-tempe...

Есть RTD-датчики. Под них бывают 3/4-проводное включение, чтобы компенсировать сопротивление проводов. Вопрос - нахрена компенсация при маленькой длине провода (см фотачки по ссылке)? Это ж не 100 метров. На глаз ошибка меньше 0.1С должна быть.

Мне надо мерять температуру термостола, диапазон 100-300 градусов, точность 1-2 градуса (лучше точно не надо). Есть мысль взять PT1000, и просто как плечо делителя влепить на вход АЦП у stm32. Без всяких навернутых MAX31865, и даже без усилителя. Шоп дешево и сердито. Прокатит?

 rtd,

Vit
()

Зачем нужны SnPb припои c 2% серебра?

Расскажите, вот есть ПОС-61 (я о составе) с миллионом мелких вариаций и всякими примочками в виде флюсов.

А зачем в подобный (по составу) припой добавляют 2% серебра? Просто интересно. На температуру оно не влияет, механических и электрических свойств вроде радикально менять не должно. В чем смысл?

PS. Интересуюсь в разрезе пайки плат. Лудить кастрюли и чугунные унитазы не надо.

 

Vit
()

Как к регулировке оборотов привернуть ограничение мощности?

Допустим, надо регулировать обороты двигателя. Мы их вычисляем через BackEMF, или с тахогенератора если повезет. Короче, мерять параметры умеем. Дальше смотрим ошибку, подаем ее на ПИД и все зашибись.

Теперь хочется добавить еще одно условие - ограничить максимальную потребляемую мощности двигателя. Ну, чтобы если в нее уперлись, то обороты не росли (или даже сбрасывались). Двойной ПИД делать категорически не хочется.

Это можно реализовать на одном ПИД-е или задача не имеет внятного аналитического решения? Например, какой-то сумматор «оборотов с ваттами» слепить, на входе ПИД-а. У меня не получается формулу микшера нарисовать, чтобы ограничитель ваттов был «главнее», но перескок обратно на обороты происходил гладко, без рывка.

 

Vit
()

Помогите дописать фирмварь esp8266 конфигурилки девайсов

https://github.com/speedcontrols/wifi-configurator

По мотивам предыдущей темы. Хочется сделать девайс, который позволит легко конфигурировать всякие устройства с мобилки и сильно разгрузить написание прошивок. То есть, вместо того чтобы городить систему менюшек, просто описываем ее в формате JSON-форм и делаем очень простой строковый протокол а ля модем. Дальше подключаем по UART платку Wemos D1 mini, она выставляет наружу точку доступа и «делает все зашибись».

Уже сделана вся вебня, эмуляторы для вебдева, рыба прошивки с captive portal и раздачей вебни, мануалы и т.п.

Надо доделать на C:

- Перегнать дефолтный синхронный сервер на асинхронный.
- Привернуть software uart и сделать проброс команд (строк) из вебни и обратно + блокировки от одновременного запуска.

В принципе немного, но я не очень люблю C и не горю желанием в него погружаться. Я конечно в итоге осилю, если не будет выхода, но предпочел бы отдать на сторону. Т.к. опенсорсы, то надо делать качественно, не просрамить и всё такое.

Все детали есть в репе, старался делать понятно и подробно документировал.

Кто хочет поучаствовать - пишите на vitaly@rcdesign.ru и чего хотите.

 

Vit
()

platform.io под stm32. Куда выложить и как патчить firmware?

На platform.io пишется прошивка под stm32f103c8t6. Внутри есть емулятор EEPROM (стандартный append-only log на пару секторов FLASH).

Мне хочется сделать вебню, которая позволит юзеру поправить дефолтные настройки, подкрутив значения EEPROM (генерим веб-страничку прям с прошивкой внутри, она показывает формочку, патчит, и дает из себя бинарник скачать, без всякого сервера). Вопросы:

1. Как мне узнать адреса секторов FLASH, где лежит контент EEPROM? Сканировать по уникальным байтам - так себе идея :).

2. Прошивки собираются в подкаталогах `.poienvs`, которые заигнорены. В целом одобряю, но у меня всего один таргет, и я хочу готовый бинарник публиковать в репе в папке `/firmware`, чтобы юзерам не надо было ничего компилять. И чтобы platform.io мог его подхватить для аплоада. Как бы это покорректнее сделать?

 platform.io,

Vit
()

Hetzner ку-ку (24.05.2018)

https://www.hetzner-status.de/en.html

На хетцнере какой-то глобальный факап с питанием и в 3 сараях серверов что-то капитально повышибало. Кого еще задело? У меня 1 самый нужный сервер с 11 утра тю-тю и до сих пор в нефритовом сосуде.

PS. Уходить пока не собираюсь, это какой-то совсем большой форс-мажор, каких за 10 последних лет точно не было.

 ,

Vit
()

Расскажите как и чем нынче паяют с помощью фена

Поигрался тут с паяльным феном, очень понравился результат пайки. Есть вопросы:

- Надо ли на фен надевать насадку, или лучше без нее учиться платы запаивать? Мне показалось с насадкой удобнее - виднее куда дует, но возможно это из-за отсутствия практики.

- Стоит ли использовать Sn42/Bi58 пасту (T плавления = 130С)? Нигде не нашел про недостатки таких припоев.

- Какую температуру фена лучше выставлять, чтобы не повредить компоненты? Пока пробовал на 250С, SnPb пастой. Показалось что как-то неспешно нагревается.

- https://youtu.be/mDViWoll_eo?t=55s - вот тут чел запаивает феном пластиковую кнопку. Это как вообще? Почему пластик не течет?

 

Vit
()

RSS подписка на новые темы