Jump to content

    

Xenia

Модератор FTP
  • Content Count

    4502
  • Joined

Community Reputation

0 Обычный

About Xenia

  • Rank
    Гуру
  • Birthday June 2

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

11133 profile views
  1. Наверное не на все, а на те, которые имеют контроллер на AVR. Мне должен прийти вроде с платой на STM32 (хотя полной уверенности нет). Или думаете - и в тех контроллерах 3D-принтеров, которые на ARM, там тоже абдуриновый код внутрях? Это было бы печально... По-видимому, вы поленились взглянуть на проект "Marlin" по ссылке, которую я вам давала. В этом случае мне придется для вас оттуда кое-что процитировать: Из них AVR только первые две строчки, а остальные - ARM.
  2. Кстати - и как успехи? В создании собственной? Сложно там? много? А то может тоже (если будет время и желание) поковыряю.... Довольно просто. За основу для ковыряния взяла проект "Marlin" с GitHub'а - https://github.com/MarlinFirmware/Marlin/ Почему его? А потому что, прочитав фабричную прошивку в бинарном коде невооруженным глазом, увидела в ней надпись "FIRMWARE_NAME: Marlin 1.1.6". Похоже, что китайцы на все свои 3D-принтеры эту прошивку ставят, т.к. ленятся сами ее писать. Код там написан на C++ без использования скетчей, а если и есть там скетч, то только один - чтобы Сишную программу запустить. Однако фундамент у нее ардуиновский - множество поддерживаемых контроллеров и материнских плат заданы таблично. Поэтому самое сложное дело - настройка, чтобы правильно файл Configuration.h создать под стать реальному железу. А дальше можно изощряться с кодом программы, как захочется. Стоит лишь перед этим убедиться, что 3D-принтер слушается команд. У меня же был особый случай (иначе программу ковырять не было бы причин) - мне хотелось из 3D-принтера сделать ... автосамплер. Т.е. вместо узла подачи филамента я установила перистальтический насос (тоже на шаговом двигателе). Вот такого типа: А вместо рабочего узла ставится игла от шприца, соединяемая гибкой трубкой с насосом. 3D-принтер брала самый дешевый и "голенький" (чтобы был свободный доступ ко всем его узлам): Обошлось не дорого - 8000 руб. То что у дешевых китайских 3D-принтеров руки немножко дрожат :), меня ничуть не волновало, т.к. как бы сильно ни дрожала игла, в пробирку диаметром 8-10 мм она не промахнется. Модификация программы свелась у меня к добавлению собственных команд ЧПУ, помимо тех, что используются 3D-принтерами. Это касаемо калибровки (чтобы запоминало координаты пробирок/флаконов и помнило их по номерам). Тогда как скорость работы устраивала меня та, что была, т.к. задача у меня была более простая: опустить игру до дна (тут пришлось-таки концевые выключатели для надежности поставить, т.к. изначально их не было), засосать заданное количество микролитров жидкости (коэффициент перевода микролитров в число шагов задается всего однажды на этапе той же калибровки), поднять иглу, переместиться в позицию другой пробирки, опустить иглу, выдавить тот объем, который прежде засосало. И так чтобы работало всю ночь без человека.
  3. Как раз на "MKS GEN" такая возможность есть, т.к. там дравера не впаянные, а на разъемах установленные. Я сначала думала, что это из-за того, что драйвера часто сгорают :), а оказалось, что для того, чтобы можно было выбирать драйверы на свой вкус. Именно ради этого в подвале разъема установлены джамперы (3 штуки), с помощью которых плата может быть адаптирована к драйверам разного типа (в том числе и к TMC2130). А оно всюду так и есть - удобство завсегда достигается за счет потери функциональности :).
  4. "14-битноый холловский датчик" это кто? Инфенионовский TLE501x?
  5. Вот это точно! :) Хотя драйверы шаговых двигателей нынче не просто мосфетные ключи, а уже довольно интеллектуальные устройства: Хорошо уже то, что шагом можно управлять импульсами (один импульс = один шаг), не задумываясь о необходимых двигателю таймаутах. Это дополнительный аргумент в пользу того, что STM32H7 здесь не нужен. Кстати и удерживание половинным током этот же драйвер тоже делает. К тому же на микроплате с драйвером еще "крутилка" (trimpot) есть: Поэтому запросто его не убить. Но радиатор на эту микросхему приклеивать обязательно (они входят в комплект, но приклеивать приходится самостоятельно), а лучше организовать еще и принудительную вентиляцию (на плате "MKS Gen V1.4" есть разъем для вентилятора). P.S. Говорят, что драйвер TMC2130 от TI еще круче (по SPI сопрягается), но я его не испытывала, тем более что он дороже. Сравнение этих двух драйверов здесь:
  6. А где вы такой шилд для Arduino Mega раздобыли? Самое дешевое, что вижу у китайцев - это: https://aliexpress.ru/item/10000066672988.html но в сумме с ценой за "Arduino Mega" получается заметно больше, чем рекомендованная мной плата "MKS Gen V1.4", где то и другое уже собрано воедино. Кроме того, драйверы шаговых двигателей в состав шилда не входят (их покупать придется отдельно), тогда как "MKS Gen V1.4" можно купить сразу со вставленными драйверами примерно за ту же цену. Плох там не Си (он в Arduino Studio из GCC взят), а встроенные функции, которыми приходится пользоваться. Тогда как у Arduino с этим плохая наследственность - так уж повелось, что Arduino-контроллер (обычно это была ATmega8) использовался, как "автомат", т.е. составлялась таблица его контактов (даже не портов, а именно номеров пинов!), которыми тот мог "дрыгать" (управлять уровнем), и задавалась команда (одна на всю таблицу), которой можно было этот уровень изменять. А дальше через эту таблицу всё и делали. При замене контроллера на другой заменялась таблица выводов, но всё остальное оставалось без изменений. Отсюда и та всеядность Ардуин ко всевозможным типам контроллеров - там по сути не было ничего, что зависело бы от их архитектуры. Как это дело обстоит сейчас, я не в курсе, т.к. в современные прошивки не лазила. Полагаю, что UART и USB-СDC все-таки сделаны на аппаратном уровне с использованием предназначенных для этого линий и аппаратной поддержки.
  7. Для Управления шаговыми двигателями ATMega2560 должно быть за глаза достаточно. А если она "тормозит", то это программа так криво написана :). Лично я сталкивалась с похожей проблемой на примере 3D-принтера, для которого пыталась создать свою прошивку, модифицируя фабричную. Для этой цели мне гораздо более понравилась специализированная плата "MKS Gen V1.4", которая представляет собой фактически ту же "Arduino Mega", только уже с готовыми драйверами под шаговые двигатели (5 штук) и питанием под них (12/24V). Она несколько дороже обойдется, чем "Arduino Mega", зато можно купить сразу с драйверами (я покупала в комплекте с A4988), они уже на адаптерах распаяны под DIP16. Сильно понравилось то, что у этой платы нет той дурацкой Arduino-разводки по краям, а вместо этого выводы контроллера ATMega2560 выведены на многочисленные разъемы различного предназначения. При желании можно вместе с ней купить еще дисплей TFT28 или TFT32 - в сумме обойдется дешевле, чем покупать по-отдельности, но этого уже я советовать не стану, т.к. дисплеем разочарована. Сейчас китайских 3D-принтеров развелось тьма тмущая, а потому управляющие платы для них выпускают огромными тиражами, а цены на них соответственно снизились. Теперь о программной части. По-хорошему так надо всю ардуиность из памяти этого контроллера стереть и писать самостоятельно. Т.е. чтобы без всяких скетчей. А главное - никаких таймаутов (!), импульсы для драйверов шаговикам надо создавать таймерами (в крайнем случае по прерыванию), но никак не временными задержками. Тогда при одновременной работе сразу нескольких шаговых двигателей они не будут друг друга тормозить. В продаже часто бывает уменьшенный вариант "MKS Gen L", он чуть дешевле, но покупать его я не советую, хотя для 3D-принтера он вполне годится. И наконец, бывает еще "MKS Robin" в разных вариантах - там уже STM32F103RCT6 стоит. Однако пишут что они хуже из-за их ... 3-вольтовости :), драйверы от 5 вольт якобы лучше срабатывают. А STM32H7 на такую работу ставить - полное кощунство :).
  8. Дело в том, что я сама такие программы пишу :), оттого и у меня к этому вопросу интерес. У меня самописная библиотека по образцу интеловской MKL, но с теми функциями, которые в MKL отсутствуют (т.к. к линейной алгебре прямого отношения не имеют). Однако приём у меня такой же как у Intel: библиотечные примитивы пишутся на ассемблере отдельно под каждый род инструкций (FP, SSE4, AVX, AVR2, написала бы с удовольствием и под AVR512, но, к сожалению, у меня нет машины на таком процессоре), а при вызове первой же библиотечной функции таблица входных адресов перестраивается в зависимости от того, на каком процессоре и операционной системе ее запустили. Однако под Windows XP я не могу воспользоваться "богатством" своей библиотеки, тогда как я рассчитывала ее применение как раз для тех случаев, чтобы ею можно было пользоваться на любой Windows-платформе (с Linux я работать не умею).
  9. Можно ли у вас узнать, где находится это "одно место", в котором якобы хранятся все обновления из этого списка? А то список велик, но к чему именно он относится, в этом вашем сообщении не указано. А попытка приложить этот текст в прошлым вашим сообщениям создает ситуацию неопределенности, т.к. можно предложить несколько разных версией, где всё это можно сыскать. Очень интересно! Если со временем набредете на инсталлятор Windows XP с таким включением, поделитесь пожалуйства! А то самой подменять ntkernel уж больно страшновато. Здесь причину вы сами правильно назвали: "прирост будет ощущаться в приложениях, скомпилированных с использованием инструкций AVX/AVX2". А поскольку программисты обычно стараются достигнуть максимальной совместимости своих программ малой кровью, то предпочитают компилировать float-арифметику на том "сопроцессоре", что был когда-то еще у процессора 386DX. Тогда как компилятору всё равно - какие инструкции разрешишь ему использовать, те и будет. В уж в отношении программ для Windows XP (у которых в PE заголовке прописано "O/S system 5.1" или меньше) инструкции AVX уж точно никто использовать не станет, т.к. всем известно, что эта ОС их не поддерживает даже в том случае, если процессор на это способен. А вот среди 32-разрядных приложений под Windows 7 (у которых в PE заголовке прописано "O/S system 6.0" или больше) встречаются и такие, что инструкции AVX в себе содержат. Но в целом AVX-инструкции - большое благо :), и дело широкими шагами идет к тому, чтобы в будущих моделях процессоров не только удалить FP-сопроцессор, но и поддержку SSE-инструкций во всех их вариантах.
  10. У меня в коллекции два китайских логических анализатора, пытающихся копировать Saleae: Но ни у одного из них такого симптома нет - оба показывают на высокоомном вольтметре между измерительными каналами и землей нулевой потенциал или очень близкий к нему. Однако по USB они от компьютера гальванически не развязаны, а потому в принципе могут что-то нехорошее показывать, если измеряемая схема имеет другую землю или присоединена к USB-разъему другого компьютера.
  11. В общем-то ситуация понятна - система неравенств дает иное решение, чем система уравнений с теми же коэффициентами. Однако в этом случае эта задачка уже не для 7-го класса...
  12. Из утверждения №1: "1. Если достать 27 фишек, то одна будет точно зеленой." следует, что остаток (Totаl - 27) должен быть на единицу меньше, чем число зеленых фишек. В противном случае мог получится вариант, когда все зеленые фишки оказались бы в остатке (Totаl - 27), и не одной из них достать не удалось. Отсюда: G = (Totаl - 27) +1 = Totаl - 26 аналогично для остальных утверждений №2, №3 и №4: G = Total - 26 R = Total - 24 W = Total - 21 (черный, т.к. буква B занята синим цветом) B = Total - 16 Подставляем вместо Total сумму R+G+B+W, получаем систему уравнений: R + 0 + B + W = 26 0 + G + B + W = 24 R + G + B + 0 = 21 R + G + 0 + W = 16 Решается легко исключением строк, поскольку коэффициенты при всех переменных всюду единичные (как раз для 7-го класса), но я возиться с этим не стала, а инвертировала матрицу в Matlab'е: >> m = [ 1 0 1 1; 0 1 1 1; 1 1 1 0; 1 1 0 1 ] m = 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 >> b = [26 24 21 16] b = 26 24 21 16 >> x = inv(m) * b' x = 5.0000 3.0000 13.0000 8.0000 Т.е. Red = 5 Green = 3 Blue = 13 Black = 8 Total = 5+3+13+8 = 29 (это я сложила в уме :))
  13. Red = 5 Green = 3 Blue = 13 Black = 8 Total = 5+3+13+8 = 29 Если результат верный, то расскажу, как решала :).
  14. Про фильтр-то мне ясно, а непонятно, откуда вообще высокие частоты тут берутся. Мне понятно, отчего у гитарной струны есть высшие обертоны. Понятно, откуда они берутся и у кварцевого резонатора. Но неясно, откуда этим частотам взяться, если напряжение выдает ЦАП строго по таблице, и ступеньки там незаметные из-за того, что кривая плавная, а выход ЦАП достаточно инерционен.
  15. А можно узнать откуда у вас эта информация? Мне казалось вы знаете что дискретный спектр периодичен. Давайте ещё об этом поговорим? Это не столько информация, сколько соображение здравого смысла :). Самая высокая частота, которую можно представить на дискретной сетке - это знакопеременный косинус, когда четные точки имеют значение +1, а нечетные -1. Это и есть частота Найквиста, для которой можно построить только косинус, тогда как синус той же частоты сливается уже в нулевую линию. Частоты, выше частоты Найквиста, при оцифровке через АЦП будут выглядеть на дискретной сетке "прореженными", как в стробоскопе. Обычно в виде разностной частоты между измеряемой частотой и частотой сэмплирования АЦП. Т.е. выглядеть они станут, как низкие частоты, а не как высокие. Но если рассматривать ситуацию вне дискретного случая, то одиночного импульса (а ля дельта-функция Дирака), меандра или пилообразного сигнала вполне достаточно, чтобы от него расползлись частоты по всему спектру, в том числе и за пределами частоты Найквиста. Но это уже не тот случай, который мне интересно обсуждать, т.к. я убежденная дискретница :).