А давайте о чем-нибудь спрошу в день московской промышленности

Вот например таким вопросиком я озадачился (да-да, я все про зуборезные станки):

Вот есть у нас прямоугольный треугольник, известен угол при вершине и противолежащий катет, который равен , а , в свою очередь, равняется ; , и уже известны (если что, то это соответственно модуль шестерни, угол наклона зубьев и их количество). Надо найти прилежащий катет — и все мои знания тригонометрии подсказывают, что для этого надо разделить длину противолежащего катета на . Выражаем тангенс через синус и косинус и получаем, что — а во всех книжках по зуборезному делу про квадрат косинуса в числителе забывают, считают, что , вот как тут написано справа от чертежа. Если — небольшой угол — то это более-менее простительно, в таком случае — можно считать достаточно близким к единице. Но с другой стороны — а почему в таком случае не заменить тупо на значение угла в радианах?

Ну и да, учитывая, что при подборе шестерен зуборезного станка стараются подобрать коэффициенты до четвертого знака после запятой — это все отдельно интересно.

Пацанский подгон электронной промышленности

Если вы думаете, что день работника электронной промышленности прошел мимо меня — вы ошибаетесь! В честь праздника отлаживал сегодня механику питателя для SMD-расстановщика (да, вот для этого мне и понадобились разнообразные шестерни). Разумеется, полностью оригинальной эту разработку назвать сложно — но я посмотрел на многочисленные варианты недорогих электрических питателей (Bing Feeder, Smart Feeder, T2 Feeder, LumenPNP, тысячи их) и понял, что их можно отнести к двум категориям:

— оверпрайснутое переусложненное говно;
— эконом-вариант с ФАТАЛЬНЫМИ НЕДОСТАТКАМИ.

Long story short, но я решился делать «свою» механику, и по первоначальным прикидкам, даже по цене оно может получиться вполне конкурентоспособным.

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

Про профессиональные праздники

В качестве хобби немного преподаю в МИЭМ, и вот что подумал — если это не только «Московский институт элегантных мужчин», но и «Московский институт электронного машиностроения», то я имею все основания отмечать профессиональные праздники непрерывно — от дня машиностроителя (последнее воскресенье сентября) до дня работника электронной промышленности (первое воскресенье октября). В общем, стоит накатить!

Про азиатский work-life balance

Вытащу из комментов в ЖЖ, потому что в очередной раз вспомнил, как один из коллег по Ху-ю (не Хундаю) пытался объяснить китайскому боссу, что он не хочет работать 5 дней в неделю, а хочет работать 4, а 3 отдыхать — а китайский босс искренне не понимал, что значит «не хочу так работать» (все осложнялось еще и плохим английским минимум у одной из сторон дискуссии). Для начала — само по себе представление о том, что «жизнь» и «работа» как-то разделяются — это штука довольно неочевидная. Да, у условного фабрично-заводского рабочего, или у офисного клерка такое разделение есть, но вот представьте себе крестьянина, или мелкого ремесленника, «кустаря-одиночку с мотором» — и внезапно окажется, что и «рабочее время», и весь новомодный work-life balance оказываются довольно сложной абстракцией.

Но это еще не все! «Крестьянская» прошивка у немалого числа китайцев довольно здорово отличается, скажем, от «русской». Наши основные сельскохозяйственные культуры, пшеница и рожь, даже в среднерусской зоне рискованного земледелия буквально «растут сами», требуя приложения сил дважды в год, в посевную и уборочную (да, я сознательно многое упрощаю, не надо писать злобные комменты). Отсюда, скажем, производят нашу тягу к авралам, штурмовщине, работе перед «дедлайном» — то есть максимальному напряжению сил «к нужному моменту». Вся же юго-восточная Азия возделывает рис, который, во-первых, дает несколько урожаев в год, сезонность там выражена слабее, а во-вторых, крайне сложен в посадке (растет не из зерен, а из этакой «рассады»), требует постоянного ухода и поддержания системы орошения. Из-за этого южнокитайский крестьянин вкалывает постоянно, без ярко выраженной сезонности (и не только китайский, кстати — подумайте о происхождении, скажем, «корейской системы крафта«).

Разумеется, Китай довольно неоднороден — но именно на китайцах можно наглядно увидеть разницу менталитета «хлеборобов» (к северу от Янцзы, меньшинство населения) и «рисоводов» (к югу от Янцзы)! Она проявляется во всякого рода психологических тестах, и в целом с таким разделением согласны и сами китайцы, вот достаточно «популярное» изложение «рисовой теории»:

https://scholarworks.gvsu.edu/orpc/vol4/iss1/7/

А теперь представьте, что мы имеем дело с потомками рисоводов в первом, если повезет — втором поколении, то есть умножаем отсутствие разделения «личного» и «рабочего» на вот такую вот закрепленную в пресловутом «менталитете» привычку к каждодневному труду (замечу, правда, что не всегда это положительная характеристика, как в том анекдоте — хули думать, дергать надо!).

Самодельный зубофрезерный станок в действии

И как это обычно бывает — только после сборки этого станочка, скомпонованного «по мотивам» полноразмерных зубофрезерных станков, наткнулся на Jacobs Gear Hobbing Machine, которая, возможно, немного удачнее в плане жесткости конструкции.

Настольный зубофрезерный станок

Для начала — хочу поздравить всех причастных с днем машиностроителя (отмечается в последнее воскресенье сентября), а заодно — показать маленький, буквально настольный зуборезный станочек, который понадобился для одного из прожектов (а построив этот станок — могу гордо причислять себя к машиностроителям и накатить коньяка в этот торжественный день!). Зачем мне понадобились в большом количестве шестерни — может, покажу через недельку, а сегодня — начну с того, почему я решил соорудить такой станочек, и почему не обратиться к более традиционным методам получения компонентов для этого прожекта, вроде закупки на алиэкспрессе или озоне.

Итак, начнем с того, что мне понадобились косозубые шестерни с модулем 0,5, вроде бы понятными количеством зубьев и толщиной — ну а прочие параметры пока что не столь критичны. Возможно, будь дело где-то в Америке из воспоминаний Фейнмана, я бы просто взял каталог фирмы Boston Gear (в распространенном переводе «Вы, конечно, шутите, мистер Фейнман» его обозвали «Бостонским каталогом шестерен») и нашел бы там нужную деталь; если бы дело было в Германии, то наверное, стоило бы воспользоваться аналогичным каталогом Zahnradfabric Friedrichshafen — но, конечно, не уверен, что это было бы достаточно дешево. А какие опции доступны «микропроизводству» в Москве в 2025 году? Конечно, можно купить какие-то компоненты на Алиэкспрессе — и для некоторых типов шестерней это самый понятный вариант. Да, если речь идет о сотнях-тысячах деталей, придется подумать о вариантах доставки из Китая — но это будет работать только в случае, если эти детали достаточно «стандартные» (всякие компоненты для тех же 3D-принтеров или хоббийных станков, например). Прямозубые шестерни для игрушек с тем же модулем стоят копейки — можно даже купить в Чип-и-Дипе набор игрушечных шестерен, и может быть, если бы мне подходили стандартные шестерни из этого набора, это было бы даже экономически оправдано в варианте «покупаем набор и 90% из него выкидываем» — но мне понадобились более сложные, косозубые. Их, к сожалению, не получится сделать на термопластавтомате (а я даже приценивался к мини-ТПА, это внезапно не так дорого) — так что пришлось смотреть на другие, более традиционные методы изготовления зубчатых колес.

Чаще всего в этом контексте упоминают нарезание зубчатых колес модульной фрезой на фрезерном станке с делительной головкой, или что-то аналогичное — метод простой, не требующий специального оборудования, подходящий, к примеру, для ремонтных работ — сделать на универсальном станке в одном экземпляре шестерню взамен сломанной — и абсолютно не подходящий для более-менее серийного изготовления, даже если оснастить станок какой-то системой ЧПУ. Если же нужно делать шестерни хоть какой-то серией — то единственно оправданным методом становится зубофрезеровка, и на первый взгляд, это сложно и дорого. «Взрослый» зуборезный станок, какой-нибудь 5К32 — это дура в две тонны весом, расчитанная на нарезку здоровенных крупномодульных колес. Можно, конечно, обратиться и к [info]bougaev, у которого в мастерской есть аж настоящий Pfauter — но что-то мне подсказывает, что партия шестерен фирмы «жадинка Михалыч» выйдет буквально золотой :) Впрочем, на другом «полюсе» есть нищебродские методы, наподобие нарезания червячных эрзац-передач метчиком с крупным шагом — о которых даже пишут на Hackaday!

Что же лежит между этим нищебродством и использованием «настоящих» зуборезных станков? Дело в том, что запатентованный герром Пфаутером в 1897 году метод нарезания зубчатых колес с помощью червячных фрез довольно сложен, требует согласованного вращения фрезы и заготовки, и сложной настройки передач зубофрезерного станка — у которого есть аж две гитары — соло и бас вращения заготовки и подачи фрезы, а для нарезания косозубых шестерен добавляется еще и дифференциал с еще одной гитарой. Если добавить еще и ударные инструменты (без кувалды и зубила ты не слесарь, а мудила) — можно играть heavy metal! Какой-нибудь «справочник зубореза» состоит в основном из таблиц настройки этих гитар — которые еще и здорово отличаются у разных станков!

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

Мелкомодульную червячную фрезу по ГОСТ 10331-81 удалось недорого найти на Озоне, а остальные компоненты станка — «общего назначения» — алюминиевый профиль, Hiwin-овские направляющие, энкодер, шаговые двигатели — в общем, ничего редкого и дефицитного. Изготавливать пришлось лишь несколько пластин из капролона (для этого использовал макет фрезерного станка под названием CNC 3018) и вал для фрезы, но при наличии токарного станка последняя задача несложная, даже если учитывать то, что точил хоть какую-то деталь я в первый раз (но резьбовую пластинку все же сломал дважды). А, ну еще и надо токарить всякие оправки для закрепления заготовок — но это даже особо внимания не заслуживает.

Компоновка станка — «по мотивам» настоящих, «взрослых» зубофрезерных станков. Справа — неподвижная стойка, по ней в вертикальном направлении ездит установленная на поворотном столе ось фрезы. Стойка слева, с приводом заготовки в трехкулачковом патроне, подвижная, может двигаться вперед-назад. Возможно, я где-то немного прогадал с размерами — но сейчас сюда влезают заготовки радиусом до 40 мм, мне это «за глаза», возможная высота заготовки — тоже порядка нескольких сантиметров, если буду обрабатывать по много одинаковых колес «пакетом» — пригодится.

«Электронная гитара» на Arduino — проект прикольный, я частично подсмотрел там работу с шаговиками и энкодером — но потом все равно все переделал, конечно же :) Как это выглядит? На вал шпинделя (или, в нашем случае, червячной фрезы) ставится энкодер, выдающий, стандартно, 600 импульсов на оборот. Все же зависящие от количества оборотов шестерни передачи оснащаются шаговыми двигателями со стандартными, знакомыми многим по 3D-принтерам, драйверами, у меня завалялось несколько A4988 и TMC2208 (опять же, в виде готовых модулей для тех же 3D-принтеров). В режиме «микрошага» x16 для полного оборота шагового двигателя необходимо выдать 16*200=3200 импульсов, да еще и привод заготовки оснащен редуктором 1:4. В прошивке «электронной гитары» для этого вычисляется целая и дробная часть коэффициента деления — скажем, если мы будем резать шестерню на 127 зубьев (специально подобрал не очень хорошее число — но такие шестерни иногда нужны), то надо сделать один оборот заготовки на 127 оборотов фрезы. Соответственно, 76 200 импульсов энкодера будут соответствовать 12 800 импульсам, которые надо выдать на шаговый двигатель. Делим, и получаем, что коэффициент деления нашей «электронной гитары» должен составлять 5,953125. В ардуиновской прошивке с Chipmaker для такого дробного деления заводятся две переменных, Ks_divisor, с целой частью коэффициента деления, и Km_divisor, с дробной — давайте я приведу здесь максимально упрощенный код, без учета направления вращения вала (можете найти подобное в обработчике прерывания от энкодера):

int Ks_divisor = 5;
int Km_divisor = 9531;
int Ks_counter = 0;
int Km_counter = 0;
void isr(void){
    Ks_counter++;
    if(Ks_counter > Ks_divisor){
        step();
        Km_counter += Km_divisor;
        if(Km_counter > Km_divisor) {
            Km_counter -= 10000;
            Ks_counter = 0;
        } else {
            Ks_counter = 1;
        }
    }
}

В общем, можно понять, что автор ардуиновской прошивки пытается с помощью целочисленных переменных имитировать вычисления с точность 1/10000 (или 4 знака после десятичной запятой). Метод, может, и работающий, но имеющий очевидный недостаток — вы видите в этой программе число 5,953125, полученное в ходе расчетов? Дробную часть пришлось округлить, и это не очень хорошо — при большом количестве оборотов, то есть медленной и печальной, с подачей 0,1 мм на оборот, обработке даже не очень длинной заготовки — скажем, длиной 10 мм — ваша заготовка сделает 100 оборотов, фреза — 12700, ошибка на один шаг уже вылезет. Может, это и немного — но учитывая жесткость станка, точнее, ее отсутствие, вытекающие отсюда небольшие подачи и такой же небольшой съем материала — накапливающаяся ошибка становится проблемой.

Увеличивать разрядность в расчетах можно (хотя на Ардуине это проблема), но давайте посмотрим на задачу с другой стороны. Нам надо на каждые 76 200 шагов по одной «координате» равномерно сделать 12 800 шагов по другой. Классический алгоритм для этого был предложен Брезенхемом из IBM в 1962 году (да, все хорошее в программировании было придумано либо IBM в 60-х, либо DEC в 70-х) — и в аналогично упрощенном виде целочисленный алгоритм Брезенхема будет выглядеть так:

int dx = 76200;
int dy = 12800;
int err = 0;
void isr(void){
    err += dy;
    if(2*err > dx){
        step();
        err -= dx;
    }
}

Конечно, переменнные dx и dy можно и даже, наверное, нужно сократить на общий множитель (заодно вычисления будут умещаться в меньшую разрядность, полезно, если у вас 16-битный int на AtMega), а умножение на 2, если вы не доверяете оптимизации компилятора, заменить битовым сдвигом — но в целом тут и вычисления проще, и, что важно, ошибка не превышает 1/2 шага и не накапливается. Таким же образом можно получить и любые коэффициенты деления, выражающиеся простыми несократимыми дробями — полезно, если вам надо заменить настоящую чугунную гитару.

Разумеется, все «наработки» по этому станочку (чертежи деталей и исходники софта) я выложу на какой-нибудь гитхаб — а может, и даже на его российский клон. Пока еще не все идеально работает, нужна, очевидно, некоторая наладка механики, надо все-таки поставить отдельный двигатель, а не изгаляться с шуруповертом — но сама идея, кажется, вполне себе жизнеспособна. Во всяком случае, заготовки из капролона станочек режет довольно бодро, есть мнение, что и с латунью сможет справиться.

UPD Латунь («сыпучку», ЛС59-1) станочек вполне успешно обрабатывает с вертикальной подачей 0,3 мм/оборот.

Если вы думаете, что я шутил…

Читаю в телеграме один женский канальчик про электронику и около (не этот), и там есть «нерегулярная рубрика» «Что я сломала и что проебала». Мне вести такую рубрику лень — но вот не могу не поделиться сгоревшим LDO на очередной Nucleo:

Очень удобно на таких бумажках вести «список покупок» взамен сломанных и проебанных деталей и инструмента! А если вы думали, что я шутил — то я не шучу, у меня и чувства юмора нет.

Нюансы произношения

Есть у нас на работе неновый сервер с какой-то весьма ностальгической убунтой (но LTS, правда, и тот уже подходит к концу). Подходит ко мне коллега и интересуется какими-то нюансами работы apt-get на нем, мол «хочу глипс обновить» (попытался максимально правдоподобно передать произнесенное слово). Ну я понял, что чел хочет обновить Eclipse, он там действительно старый, но вроде работающий (хотя сидеть в нем через xrdp — ну так себе занятие) — но ладно, показал нужные заклинания. Дальше чешем языками, мол, раньше-то все работало, зачем новая версия понадобилась? Оказывается, у чувака отвалился плагин Remote-SSH к vscode, и вот поэтому нужно обновить тот самый глипс. Еще минуточку трачу на выяснения, а какое отношение Eclipse имеет к vscode — и понимаю, что словом глипс чувак обозвал glibc — которую обновлять — совершенно дохлый номер.

А как вы произносите glibc?

PS Проблема с Remote-SSH от vscode и старыми версиями glibc действительно есть, только решается она не так — проще «заморозить» версию vscode и плагинов и запретить ей обновляться. Кажется, к идее обновить glibc чела подтолкнул какой-то чат-бот на базе нейронок, совет шикарный, буквально «если у вас скрипят тормоза, смажьте их солидолом».

А вот опросик

Какие из вариантов подписи вы считаете допустимыми для «корпоративного» чата большой международной корпорации Хуйсуньвчай (в чате присутствуют в разных пропорциях наши соотечественники, усредненные европейцы и китайцы)? И второй вопрос — расположите их в порядке убывания официальности.

1) буквенно-цифровой логин, используемый в конторе повсеместно, например, p00841488;
2) ФИО в таком порядке, латинскими буквами, например, Petrov Sidor Ivanovich;
3) Фамилия-имя — Petrov Sidor;
4) Имя-фамилия — Sidor Petrov;
5) Фамилия-имя с удобопроизносимым никнеймом в скобочках — Petrov Sidor (Xie);
6) Фамилия-имя с непроизносимым никнеймом — Petrov Sidor (zhoporazryvatel);
7) Непроизносимый никнейм — zhoporazryvatel;
8) Нечитаемый никнейм — }|{0n0Pa3PblBaTEJlb;
9) Нечитаемый никнейм неприличными символами — 米回冂回尸丹了尸劜乃丹卞乇几し;
10) ФИО русскими буквами — Петров Сидор Иванович.

Про идеи из твиттера

После просмотра на Авито и Циане разделов с «помещениями свободного назначения» (возникла мыслишка о небольшой, квадратов на 30-40 мастерской :) ) мысль из твиттера кажется даже не настолько дикой.

Пара заметочек про OpenPnP

Держатель для сопел Juki, который охуевшие канадцы продают за 50 баксов, а китайцы на алишечке — за 15, можно сделать самостоятельно за 5 минут — берем капролоновый пруток диаметром 10 мм, отрезаем заготовку нужной длины, сверлим сквозное отверстие сверлом на 4,5 мм (посадка на вал шагового двигателя будет прямо плотненькой, но в принципе так и надо), а потом — рассверливаем его вот такой зенковкой (слово «зенкер» на Озоне — неправильное) на нужную глубину. В идеале делать все на токарном станке, но и любая сверлилка подойдет, и даже прямые нетрясущиеся руки.

Заодно полистал книжку П. И. Орлова «Основы конструирования» и подсмотрел там идею, как сделать такой держатель лучше, надо будет попробовать. Ну и картинку прицеплю, чтобы совсем весело было.

Нечеловеческие стандарты

Чисто случайно наткнулся на ГОСТ 3.1103 — в версии 2011 и 1982 года. Конечно, хорошо, что ЕСКД и ЕСТД приводят к актуальным реалиям — когда все эти документы разрабатываются в разных САПРах, а олдскульное бумажное представление необязательно (а вот «программистскую» ЕСПД так и не обновили). Но! Старая версия документа была доступна для понимания буквально слесарюге с ПТУшным образованием, а новая начинается с довольно многословного введения с определением, что такое «документ», и какие у него бывают «атрибуты» и «реквизиты». И вроде бы ясно, для чего и зачем это все, но внезапно оказывается, что понять нововведения может только человек, как-то знакомый с принципами построения реляционных баз данных, например — а это даже не все специалисты с профильным высшим образованием осиливают (и это, конечно, можно отнести на счет качества этого самого «высшего образования»). Какой-то античеловеческий подход, если честно.

Как любят по такому поводу говорить в одном чате, «чувствуются вайбы психотехник Левенчука».

PS И все же нынешний вариант ЕСКД и ЕСТД по-своему прекрасен с исторической точки зрения, в стандартах прослеживаются «слои» из времен, когда документы можно было составлять от руки, и только очень важное что-то печаталось на машинке, в 80-х туда проникла аббревиатура АЦПУ — а в нынешней версии предполагается, что все эти атрибуты и реквизиты могут представляться только в виде «структурированного набора данных».

Играю во фрезеровщика

Решил немного «оживить» один старый прожект, и в процессе поисков подручных материалов набрел на композитные алюминиевые панели — или «алюкобонд», по названию одной из торговых марок. Вообще это материал для фасадных панелей, но в этом вашем DIY он как-то недооценен, а зря!

Оказывается, он прекрасно обрабатывается на игрушечном макете ЧПУ-фрезера, который на китайских сайтах продается под названием CNC 3018. Из листа алюкобонда толщиной 3 мм можно вырезать «плоские» детали — раз мы говорим про CNC 3018, то на Озоне сравнительно недорого можно купить нарезанные в формат А4 листы (здесь будут ссылки на озон, раз уж пользуюсь им), они как раз подходят по размеру на «стол» станочка (ясное дело, что надо проложить между столом и обрабатываемым материалом лист фанеры, точнее — «жертвенный стол»). Для фрезеровки границ детали я использую вот такую фрезу (но тут ничего необычного):

Настройки станка — 10000 оборотов шпинделя в минуту, скорость горизонтальной подачи 500 мм/мин, скорость врезания 50 мм/мин, заглубление я ставил 0,3 мм — возможно, можно и больше.

Но плоские детали — это не так прикольно, в конце концов, можно взять для этого дела и фанеру — но у алюкобонда есть еще одно прекрасное свойство — его можно гнуть по пазам, которые резутся специальной фрезой с хитрым углом при вершине, вот такой:

Если такой фрезой прорезать материал так, чтобы осталось немного «снизу» — то по линии выреза его можно согнуть примерно на 90 градусов, жесткости «лицевого» листа алюминия хватает, чтобы угол держался даже на довольно больших панелях. Обороты и подачи я использую те же, что и в первом случае. Резать нужно так, чтобы для сгиба оставалось примерно 0,6-0,8 мм, т. е. лист алюминия и тонкий слой «приваренного» к нему пластика.

Процесс фрезеровки выглядит как-то так:

— и получаются вот примерно такие детали: