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

Главная » Мастер классы — Hand made

085

Стол из двигателя особенно понравится любителям автомобильной тематики. Его не стыдно будет установить даже в доме, и он может быть наглядным пособием для ваших детей, которые будут изучать его вдоль и поперек, и вы не будете волноваться, что они вымажутся в мазуте.

Ну, а если ваша вторая половинка заподозрит вас в том, что вы пытаетесь из дома сделать гараж, то этот стол можно поставить и в самом гараже или во дворе своего дома. Кроме того, подобная мебель весьма будет кстати в автосалонах, СТО, автомойках и т.д. А зависимости от того где применяется данный журнальный стол (дома или в общественном месте), цилиндры можно использовать для хранения спиртных напитков, либо хранения для журналов.

Изготовление стола

Для изготовления журнального стола, нам понадобится непосредственно сам двигатель с V образным расположением цилиндров, а вернее только блок с цилиндрами. Эффектно смотрятся блоки от иномарок, но стоимость на них оставляет желать лучшего, поэтому стоит искать двигатель, пришедший в негодность вследствие ДТП на авторазборках. Если такового найти не удастся, то можно направить свой взор в сторону отечественного автопрома (ЗИЛ, ЗАЗ, ГАЗ и т.д.).

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

Чем отмыть двигатель от мазута

Очень хорошо с этим справляется стиральный порошок, растворенный в теплой воде (200гр на ведро воды). А чтоб добраться до самых укромных уголков понадобится щетка, либо мойка высокого давления.

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

Шатуны с поршнями будут служить опорой для крышки стола. Шатуны необходимо будет закрепить на цилиндрах двигателя. Поскольку в цилиндрах отверстий предостаточно, то для фиксации одного болта, шатуна, отверстие можно найти, а вот для фиксации второго болта, необходимо будет в цилиндре просверлить отверстие и нарезать резьбу.

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

Как вы понимаете вес такого журнального столика не малый, поэтому для удобства его перемещения, неплохо было бы установить колеса.

При желании, из остальных поршней можно изготовить пепельницы. Достаточно лишь отрезать юбку поршня и отполировать его.

Рейтинг

( Пока оценок нет )

Поделиться:

Поворотный стол. Часть 2 / Хабр

Привет, Хабр! В предыдущей статье я рассказывал о наших продуктах – поворотных столах для круговой фотосъёмки. За прошедшее время нам удалось серьёзно продвинуться вперёд и разработать новые устройства на базе Ардуино с использованием коллекторных и бесколлекторных двигателей.

Поворотный стол не такое уж простое техническое изделие как может показаться на первый взгляд. Например, в автоматическом режиме стол поворачивается на нужный угол, выдерживает паузу для того чтобы предмет съёмки смог успокоиться и стать неподвижным, автоматически делает снимок с фотоаппарата, затем некоторое время ожидает окончания экспозиции и переходит к следующему шагу. Так стол совершает полный оборот, и получается серия снимков предмета со всех сторон. Есть и другие режимы работы.

Мы выпускаем столы разных размеров. Самые ходовые – с диаметром столешницы 400, 600 и 900 миллиметров. Столы способны вращать довольно приличный груз, например, стол 600 выдерживает 150 кг, а стол 900 – 250 кг. Как-то приходилось делать по спецзаказу стол диаметром 2700 миллиметров, выдерживающий груз до 700 кг.

Как говорилось в части 1, стол с промышленным контроллером выходил слишком дорогим, поэтому мы решили переходить на Ардуино. Кроме того, мы хотели заменить шаговый двигатель коллекторным.

Почему мы решили менять двигатель? Шаговый двигатель – отличный вариант для программирования. Не надо заботиться о том, как переместить стол на заданное расстояние, всё уже сделано за нас. Шаговый двигатель оснащён логическим контроллером, просто используй нужные команды и ни о чём не думай.

Но есть один существенный недостаток. Шаговый двигатель сильно шумит. Иногда двигатель попадает в резонанс, и тогда тарахтение стола становится невыносимым.

Новая схема работы стола была простой: есть двигатель с питанием на 24 вольта и встроенным редуктором. Двигатель вращает столешницу и управляется через преобразователь ШИМа, так называемый драйвер двигателя. К вращающейся столешнице подсоединён оптический энкодер, передающий текущее положение в скетч Ардуино, который должен управлять двигателем посредством ШИМ-сигнала. И первой моей задачей было научить скетч перемещать стол из точки A в точку B.

Признаться, начинал я эту работу с некоторой робостью. Придётся ли погружаться в изучение ТАУ-регуляторов? Если да, то, скорее всего, надо будет оперировать значением мгновенной скорости. Позволит ли медленная и ограниченная ардуина проводить необходимые вычисления в реальном времени? К счастью, всё оказалось намного проще.

Наш первый макет. Arduino Uno, двустрочный дисплей, кнопки

Итак, скетч должен получать данные от энкодера и управлять двигателем посредством ШИМ-сигнала. Библиотека для энкодера сразу нашлась. Называется, как ни странно, Encoder, легко находится в менеджере библиотек Arduino IDE. Выводы энкодера подсоединяем к пинам 2 и 3, чтобы использовать прерывания – так значения текущего положения стола будут максимально близки к реальности.

Через какое-то время выяснится, что энкодер тем не менее слегка привирает. В чём дело? Плохой энкодер? Библиотека? Несколько отладочных скетчей, измерение импульсов, всё не то… Проблема в том, что мест, где может возникать ошибка энкодера, множество. Да и ошибка плавающая, то она есть, то нет. И вдруг совершенно случайно обнаруживается, что текущая конструкция стола несколько мм… шаткая что-ли. Раньше это было незаметно, ведь обратная связь в системе отсутствовала. А в новом изделии небольшой люфт приводил к большой погрешности в показаниях энкодера, так что потребовалось сделать конструкцию более жёсткой.

Ну что ж, теперь можно приступать к решению главной задачи по перемещению стола на заданное расстояние. Двигатель управляется ШИМ-сигналом. Это значение от единицы до 255, если не использовать большее разрешение. Сразу выяснилось, что двигатель с редуктором начинает вращать стол с некоторого минимального значения ШИМ. На первом макетном столе это значение равнялось 60.

Итак, попробуем реализовать самый простой алгоритм: первую половину пути линейно увеличиваем ШИМ, вторую половину – линейно уменьшаем:

Если значение ШИМ превышает 255, оно будет обрезано:

Угол наклонных прямых на графике можно сделать настраиваемым, тогда пользователь сможет регулировать движения и шаги стола: сделать их более резкими и быстрыми, либо плавными и медленными. И оказалось, что этот простейший подход даёт неплохие результаты!

Правда, иногда стол всё-таки слегка перескакивал через заданную точку. На этот случай мы предусмотрели коррекционное перемещение для возврата назад на минимальном ШИМе. Тем не менее, хотелось бы добиться того, чтобы стол совершал минимальное количество таких ошибок.

Если на минимальном ШИМе стол безошибочно переходит в нужную точку, то что надо сделать? Может быть, стоит использовать квадратичное замедление вместо линейного? Тогда стол будет подходить к концу движениях на скоростях, близких к минимальному значению. Можно и так. Но оказалось, что есть более простое решение. Достаточно начинать тормозить чуть раньше, как на картинке:

Большое значение имеет правильный выбор минимального значения ШИМ. Если значение слишком велико, стол будет часто ошибаться и перескакивать через заданную точку. Слишком маленькое значение приведёт к тому, что нагруженный стол не сможет тронуться.

Тут родилась идея о том, что столу с тяжёлым грузом надо помогать начать движение. То есть если стол в течение определённого промежутка времени не сдвигается с места, надо слегка увеличивать минимальный ШИМ. Но нужно также предусмотреть и верхний лимит увеличения, чтобы в случае короткого перемещения стол не перескочил через заданную точку.

В процессе тестирования выяснилась странная вещь: вроде бы стол вовремя останавливается, но затем оказывается, что текущая позиция немного смещена. Особенно это заметно, если на столе стоит тяжёлый и неустойчивый предмет, например, канистра с плещущейся водой. Стало понятно, что это происходит в результате вибрации в конце движения. Чтобы дождаться полного окончания движения стола и принять решение о необходимости коррекции, нужно подождать какое-то время. Я решил задачу так: делю время на короткие интервалы по 10 мс и дожидаюсь, пока в течении десяти последних интервалов стол не меняет своего положения. Это позволяет минимизировать время ожидания. Попробовал трясти стол с грузом в конце движения – и класс! Стол ждёт, пока тряска не закончится!

Итак, задача перемещения стола была решена. И решена, как выяснилось, неплохо: калибровочные скетчи и скетчи, измеряющие время и осуществляющие десятки и даже сотни циклов по перемещению стола на 360°, приводили стол в исходное положение с точностью до долей миллиметра.

Теперь можно было приступать к реализации режимов стола: автоматическому, ручному, безостановочному, режиму видео и вращению на 90°. Тут дело техники. Упомяну только о том, что в шаговых режимах, автоматическом и ручном, была реализована ещё одна стадия отслеживания ошибок перемещения. Если на предыдущем шаге обнаружилась ошибка, её надо учесть и скорректировать количество меток энкодера, на которое надо переместить стол на следующем шаге. Это важно, поскольку стол в процессе работы может быть случайно сдвинут фотографом.

Как мы и предполагали, новый двигатель работал гораздо тише шагового. Тем не менее, во время работы был слышен лёгкий звон. Дело в том, что стандартная частота ШИМ в Ардуино менее 1 кГц, именно она и ощущается при работе мотора. После того, как мы увеличили частоту ШИМ до 15 кГц при помощи библиотеки PWM, звон исчез. Звук работающего двигателя стал приятным и чем-то напоминал звук движений Робокопа из голливудского фильма. После изменения частоты пришлось немного подкорректировать минимальное значение ШИМ в скетче.

Коллекторный двигатель с редуктором, который мы использовали в первом экспериментальном столеДрайвер двигателя – устройство, преобразующее ШИМ в управляющие сигналы

Теперь об управлении. Мы предполагали, что стол будет управляться при помощи проводного пульта. Предыдущий опыт общения с пользователями говорил о том, что длина кабеля должна быть достаточно большой, не менее 5 метров. Когда-то мы пытались использовать беспроводные пульты, но этот опыт был не слишком удачным.

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

По ходу дела попался нам на глаза китайский бесщёточный двигатель. Вот такой:

Ему не нужен драйвер, контроллер у него внутри, и ШИМ можно подавать непосредственно на выходы. Кроме того, не нужно менять частоту ШИМ, он работает одинаково тихо на любой частоте. Позже стало ясно, что это тоже важно.

В один прекрасный момент посмотрели мы на наш пульт и подумали, что как-то он не слишком удобен. Надо крутить энкодер, чтобы попасть в нужный пункт меню, жать кнопку, проваливаться в подменю… Да тут ещё и проблема с дисплеем нарисовалась. Подсоединён он у нас был к двум пинам ардуинки и управлялся по протоколу I2C. Оказалось, что если быстро крутить управляющий энкодер и переключать пункты меню на экране, дисплей начинает глючить, пропускать или путать буквы, а через какое-то время и вовсе зависает.

А что, если вообще отказаться от пульта и использовать вместо него смартфон? Мобильное приложение может отображать движения стола в реальном времени и вообще сделает процесс управления очень удобным. Соединяться со столом можно через bluetooth, тут проблем нет. Кроме того, в мобильном приложении можно реализовать такие фишки пользовательского интерфейса, которые трудно сделать на пульте, например, поворот стола на произвольный угол. Так у нас начался второй этап разработки.

Со средой разработки вопросов не было, это должен быть Xamarin. Во-первых, у меня уже был опыт разработки на этой платформе. А во-вторых, нужно приложение и для Android, и для iOS. Многие фотографы – пижоны, и любят пользоваться айфонами.

Xamarin не предоставляет стандартных средств для работы с bluetooth, поэтому пришлось искать библиотеку. Я остановился на Bluetooth LE. Собственно, и выбора-то особого не было, да и где-то на форумах MSDN сотрудник Microsoft рекомендовал эту библиотеку для работы в Xamarin. На первый взгляд, плагин оставлял впечатление какой-то незавершённости, но потом оказалось, что он вполне рабочий.

О железе: вначале я использовал имеющийся у меня bluetooth модуль HC-6. Он не подходил для полноценной работы, поскольку нам был нужен bluetooth  не ниже 4 версии, то есть bluetooth low energy – iOS в отличие от Android не работает со старыми версиями. Но я набросал нечто вроде тестового фреймворка для первых экспериментов. Потом мы перешли на модули JDY-34, вот такие:

Архитектура была ясна с самого начала: приложение должно устанавливать связь со столом и посылать команды. Стол, то есть скетч, будет отвечать на команды и во время движения  информировать приложение о своём текущем положении. Протокол обмена лучше всего построить на основе коротких текстовых сообщений, так отладка будет проще.

Пришло время изучать Bluetooth GATT. И вот что я вам скажу: вроде и Интернет у нас есть, и информации море, а найти то, что тебе нужно, с каждым годом всё сложнее и сложнее. В общем виде оно вроде бы понятно: GATT как иерархическая структура, устройство, сервисы, характеристики, но вот детали…

Лирическое отступление

Вспоминаю прекрасные руководства пользователя по операционным системам, программам и библиотекам 30-летней давности. Любая библиотека имела исчерпывающее описание всех методов и возможностей, это было очевидно и даже не обсуждалось. Написаны они были простым английским языком, и там можно было найти всю необходимую информацию. Кроме руководств своевременно выходили объёмные учебники, детально объясняющие все тонкости и проблемы.

Сейчас всё не так. Фреймворки меняют друг друга с калейдоскопической быстротой. Гайды пишутся, скорее, для галочки, а то их и вовсе нет. Массу времени приходится тратить на сбор информации в Интернете по крупицам… Да, судари мои, куда катится этот мир?

Исходя из архитектуры приложения, мне были нужны две возможности – write, чтобы посылать команды, и notify, чтобы получать ответы и уведомления. Но какую GATT-характеристику следует выбрать? В модуле JDY-34 есть несколько подходящих. Где-то в одном из описаний я нашёл UUID сервиса как в моём модуле и решил, что эту характеристику и надо использовать для записи и нотификации.

В этом и заключалась моя ошибка. Сначала вроде бы всё работало, но потом я стал замечать, что иногда ответы от стола приходят в искажённом виде. Вскоре я понял, что проблема заключается в следующем: приложение отправляет команду столу, но в это самое время от стола приходит очередной токен, и данные в общем буфере портятся. Как оказалось, никакой синхронизации на уровне характеристики нет, то есть запись и чтение могут перекрывать друг друга, и другого выхода, кроме использования раздельных характеристик для write и update нет. К счастью, модуль JDY-34 позволяет сделать это.

Кстати, ещё во время работы с модулем HC-6 я заметил, что мои короткие текстовые сообщения буквально в несколько символов, приходящие от стола, могут иногда разбиваться. То есть сначала приложение получает нотификацию с первой частью сообщения, а потом – со второй. Я надеялся, что в Bluetooth LE этого не будет, но нет, поведение осталось таким же. Так что мне пришлось ввести в протокол обмена разделитель термов и реализовать стрим, куда поступает входной поток сообщений.

В итоге, мобильное приложение получилось таким:

И вот пришло время решать вопрос с комплектующими. Платы Nano были ненадёжны, среди модулей JDY-41 попадались бракованные. Предлагать недешёвое изделие с подобной начинкой – это неуважение к покупателю. Хотелось бы найти хорошие надёжные платы со встроенным bluetooth.

Первое, что мы попробовали, – это ESP32, но она нам не зашла. То ли плата была левая, то ли делали мы что-то неправильно, но нам никак не удавалось заставить работать энкодер.

Потом мы стали смотреть в сторону BLE Nano V3.0 Micro с интегрированным чипом Bluetooth TI CC2540 BLE. Тут вообще интересная история случилась: вроде как и характеристики были такие же, как в модуле JDY-34, вплоть до совпадения UUID, но характеристика для записи не работала. То есть нотификация и чтение работает, а запись – нет.

Хорошо, если найти подходящую плату со встроенным bluetooth модулем не получается, надо хотя бы заменить устаревшие китайские Nano на что-то приличное. Вот в Москве есть в продаже фирменная Nano Every, позиционируется как эволюция традиционной Nano. Но – парадокс! библиотека PWM на ней не работает, и, похоже, возможности устанавливать частоту ШИМ для отдельных пинов нет вовсе. Можно, правда, ускорить системное время, тогда и частота увеличится. Не слишком элегантно, но этот подход работает. Надо только увеличить все временные интервалы, использующиеся в скетче, ведь функции millis и micros будут выдавать ускоренное время.

Тем не менее, такой подход довольно стрёмный. Вот, например, функции чтения в классе Serial используют временную задержку. Выходит, надо её переустанавливать при помощи Serial.setTimeout. А сколько ещё подобных подводных камней?

Под конец нам всё-таки удалось найти плату с интегрированным bluetooth модулем. Это Nano 33 IoT. Эта плата позволяет программно сконструировать в скетче bluetooth-устройство со всеми его сервисами и характеристиками, используя библиотеку ArduinoBLE. Библиотека эта реализует полноценный GATT. Это здорово! Программисты меня поймут – я был впечатлён!

И напоследок о моторах. Бесколлекторный двигатель, конечно, предпочтительней. Он не требует драйвера, но самое главное – не нужно менять частоту ШИМ, двигатель не звенит на стандартной частоте. На самом деле, важнейшей характеристикой является передаточное число, чем оно больше – тем лучше. На достаточно большом передаточном числе стол работает очень устойчиво. Кроме того, можно добиться медленного перемещения стола на минимальном ШИМе, а это важно для безостановочного режима.

Наш финальный выбор – бесщёточный двигатель с передаточным числом 131 и плата Nano 33 IoT.

Кабели для соединения разных фотоаппаратов со столом

На всякий случай оставлю ссылки на исходники, вдруг кому-то будет интересно:

→ Ардуино: Github

→ Xamarin: Github

Этот журнальный столик с двигателем Ferrari V12 стоит столько же, сколько суперкар

Руководство может получать комиссию при покупке по ссылкам на нашем сайте.

Автор Джоэл Патель

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

RM У Sotheby’s был стол с двигателем Ferrari V12, на который заинтересованные покупатели могли сделать ставку во время одного из аукционов в Майами-Бич, Флорида. Ориентировочная цена продажи стола составляла от 30 000 до 60 000 долларов. По этой цене вы могли бы купить Toyota GR Supra с механической коробкой передач, которая действительно едет и все такое.

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

1 из 6

РМ Сотбис РМ Сотбис РМ Сотбис РМ Сотбис РМ Сотбис РМ Сотбис

Что ж, первоначальная оценка RM Sotheby’s в 60 000 долларов была слишком консервативной, потому что кто-то заплатил за стол 246 000 долларов. Это не опечатка. За эту цену кто-то мог бы купить Ferrari Portofino или Roma — или четыре шестицилиндровых GR Supra. Но они предпочли потратить свои деньги на стол с неработающим двигателем Ferrari V12. Это сбивает с толку, сводит с ума и как-то очень круто одновременно.

К сожалению, RM Sotheby’s не располагает информацией о том, какой двигатель Ferrari V12 установлен на этой таблице. The Drive считает, что это двигатель от Ferrari 365 GTC/4, что может объяснить, почему кто-то заплатил за автомобиль столько денег. 365 GTC/4 производился с 1971 по 1972 год, а Ferrari выпустила всего 500 единиц автомобиля.

Хотя в модели 365 GTC/4 использовалось то же шасси и двигатель V12, что и в Daytona, она так и не прижилась, как Daytona. Это, вероятно, из-за одного простого отличия — 365 GTC/4 поставлялся с набором задних сидений и дополнительным багажным отделением, что делало его импровизированным семейным автомобилем. Это придало автомобилю немного неуклюжий дизайн по сравнению с великолепной Daytona, хотя он предлагал почти такой же уровень производительности.

Кажется, что машинные столы повсюду; вы можете найти их на Etsy и Costco, чтобы поплакать вслух. Итак, для тех, кто хочет выделиться чем-то уникальным, что обязательно вызовет разговор, этот стол V12 Ferrari был отличным способом получить это в чем-то, что также может функционировать как стол. Давайте будем честными, 246 000 долларов за этот стол смехотворны, абсурдны и вопиющие. Но он будет хорошо смотреться везде и будет единственным в своем роде.

Рекомендации редакции
  • McLaren сообщает, что ее будущие гибридные суперкары будут оснащены двигателем V8
  • Это последние суперкары Lamborghini с двигателем V12.
  • Gordon Murray T.50 — продолжение легендарного McLaren F1 с двигателем V12
  • Ferrari серьезно собирается построить 2 суперкара V12 без лобового стекла

Model Engine, использующий адаптивную интерполяционную таблицу n-D — MATLAB и Simulink

Модель двигателя с использованием таблицы адаптивного поиска n-D

Цели

В этом примере вы узнаете, как зафиксировать изменяющееся во времени поведение двигателя с помощью n-D адаптивная справочная таблица. Вы выполняете следующие задачи, используя программное обеспечение Simulink ® :

  • Настройте блок адаптивной интерполяционной таблицы для моделирования вашей системы.

  • Имитация модели для динамического обновления значений таблицы поиска.

  • Экспорт адаптированных значений интерполяционной таблицы в MATLAB ® рабочее пространство.

  • Заблокировать определенную ячейку в таблице во время адаптации.

  • Отключить процесс адаптации и использовать таблицу адаптивного поиска в качестве статического поиска стол.

О данных

В этом примере вы используете данные в

vedata.mat , которые содержат следующие переменные, измеренные от двигателя:

  • X — 10 контрольных точек входа для давления во впускном коллекторе в диапазон [10 100]

  • Y — 36 входных контрольных точек для оборотов двигателя в диапазоне [0,7000]

  • Z — матрица табличных данных 10×36 для объемного двигателя эффективность

    Дополнительные сведения о точках останова и табличных данных см. в разделе Анатомия интерполяционной таблицы.

Выходной объемный КПД двигателя зависит от времени и является функцией двух входные данные — давление во впускном коллекторе и частота вращения двигателя. Данные в MAT-файле используются для генерировать изменяющиеся во времени входные и выходные данные (I/O) для двигателя.

В следующем разделе вы откроете предварительно сконфигурированную модель Simulink.

Модель данных двигателя

Open Live Script

Загрузите данные двигателя.

 загрузить vedata.mat 

Откройте предварительно сконфигурированную модель.

 open_system('enginetable1_data') 

Построение модели с использованием блоков адаптивной таблицы поиска

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

  1. Подсистема экспериментальных данных в модели Simulink генерирует изменяющиеся во времени данные ввода-вывода во время моделирования.

    Эта команда также загружает переменные X , Y и Z в рабочую область MATLAB. Чтобы узнать больше об этих данных, см. О данных.

  2. Добавьте блок Adaptive Lookup Table в модель Simulink.

    1. Откройте браузер библиотеки Simulink.

      В командной строке MATLAB введите slLibraryBrowser .

    2. Откройте Simulink Библиотека Design Optimization™.

      На панели

      Libraries разверните Simulink Design. Оптимизация узла.

    3. В Simulink Дерево библиотеки оптимизации дизайна, щелкните Adaptive Lookup Tables .

    4. Перетащите блок Adaptive Lookup Table (nD Stair-Fit) из Adaptive Lookup Библиотека таблиц в окно модели Simulink.

  3. Дважды щелкните блок Adaptive Lookup Table (nD Stair-Fit), чтобы открыть функциональный блок Параметры: диалоговое окно Адаптивная интерполяционная таблица (nD Stair-Fit).

  4. В диалоговом окне Параметры функционального блока:

    1. Укажите следующие параметры блока:

      • Точки останова таблицы (массив ячеек) — Введите {[X; 110], [Й; 7200]} , чтобы указать диапазон входных точек останова.

      • Данные таблицы (исходные) — Enter rand(10,36) , чтобы указать случайные числа в качестве начальных значений таблицы для объемный КПД.

      • Данные нумерации таблиц — Enter reshape(1:360,10,36) для указания схемы нумерации таблицы клетки.

    2. Убедитесь, что в Метод адаптации раскрывающийся список.

    3. Введите 0,98 в Коэффициент адаптации (от 0 до 1) поле для указания фактора забывания для среднего значения выборки (с забывчивостью) алгоритм адаптации.

      Коэффициент адаптации, близкий к 1, указывает на высокую устойчивость значений таблицы поиска к входной шум. Чтобы узнать больше об усилении адаптации, см. раздел «Выбор среднего значения с забыванием» в разделе «Выбор метода адаптации».

    4. Установите флажок Сделать адаптированную таблицу выводом .

      Это действие добавляет новый порт с именем Tout в таблицу адаптивного поиска. блокировать. Вы используете этот порт для отображения значений таблицы по мере их адаптации.

    5. Установите флажок Добавить адаптацию для включения/отключения/сброса порта . коробка.

      Это действие добавляет новый порт с именем Включить в адаптивный поиск Табличный блок. Вы используете этот порт для включения или отключения процесса адаптации.

    6. Установите флажок Добавить блокировку ячейки для включения/отключения порта .

      Это действие добавляет новый порт с именем Lock в таблицу адаптивного поиска. блокировать. Вы используете этот порт для блокировки ячейки во время процесса адаптации.

    7. Убедитесь, что Игнорировать выбрано в Действие для выпадающий список вне диапазона .

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

      После настройки параметров диалоговое окно параметров блока выглядит как следующий рисунок.

    8. Щелкните OK , чтобы закрыть диалоговое окно параметров функционального блока. коробка.

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

  5. Назначьте входные и выходные данные модели двигателя, подключив U и Y порты блока Experimental Data на u и y порты блока Adaptive Lookup Table, соответственно.

  6. Разработайте логику с использованием блоков Simulink для включения или отключения процесса адаптации. Подключить логику к Блок Adaptive Lookup Table, как показано на следующем рисунке.

    Эта логика выводит начальное значение 1, которое разрешает процесс адаптации.

  7. Разработайте логику для блокировки ячейки во время адаптации. Подключите логику к Adaptive Lookup Блок таблицы, как показано на следующем рисунке.

  8. В браузере библиотек Simulink выберите > библиотеку и перетащите блоки отображения в окно модели. Соедините блоки, как показано на следующем рисунке.

    Во время моделирования блоки дисплея показывают следующее:

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

    В качестве альтернативы введите enginetable в приглашении MATLAB, чтобы открыть предварительно сконфигурированную модель Simulink. Подсистема Efficiency Surface содержит функцию чтобы построить значения интерполяционной таблицы, как показано на следующем рисунке.

  10. Подключите блок To Workspace для экспорта адаптированных значений таблицы:

    1. В браузере библиотек Simulink выберите > библиотеку и перетащите блок To Workspace в окно модели.

      Чтобы узнать больше об этом блоке, см. справочную страницу блока To Workspace в документации Simulink.

    2. Дважды щелкните блок To Workspace, чтобы открыть диалоговое окно Sink Block Parameters, и введите Tout в поле Имя переменной .

    3. Нажмите OK .

    4. Соедините блок To Workspace с выходным сигналом адаптивной интерполяционной таблицы Tout , как показано на следующем рисунке.

Теперь вы построили модель для обновления и просмотра значений адаптивной таблицы поиска. Ты теперь необходимо имитировать модель, чтобы начать адаптацию, как описано в разделе «Адаптация значений интерполяционной таблицы с использованием изменяющихся во времени данных ввода-вывода».

Адаптация значений интерполяционной таблицы с использованием изменяющихся во времени данных ввода-вывода

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

Вы должны уже построить модель Simulink, как описано Создание модели с использованием блоков адаптивной таблицы поиска.

Чтобы выполнить адаптацию:

  1. В редакторе Simulink задайте время моделирования как inf .

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

  2. В редакторе Simulink нажмите Запустить под Моделирование для запустить процесс адаптации.

    Откроется окно с цифрами, в котором показан объемный КПД двигателя в зависимости от давление во впускном коллекторе и обороты двигателя:

    • На левом графике показана измеренная объемная эффективность в зависимости от потребления давление во впускном коллекторе и обороты двигателя.

    • На правом графике показан объемный КПД, который адаптируется к изменению во времени. давление во впускном коллекторе и обороты двигателя.

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

  3. Приостановите моделирование, нажав Пауза под Моделирование .

    Это действие также экспортирует адаптированные значения таблицы Tout в рабочее пространство МАТЛАБ.

  4. Убедитесь, что левый и правый графики совпадают. Это сходство свидетельствует о том, что табличные значения адаптированы к изменяющимся во времени данным ввода/вывода.

  5. Блокировка ячейки таблицы, чтобы адаптировалась только одна ячейка. Эта функция может оказаться полезной, если часть данных очень неустойчива или иным образом сложна для обработки алгоритмом.

    1. Нажмите Запустите под Simulation , чтобы перезапустить моделирование.

    2. Дважды щелкните блок Lock . Это действие переключает переключатель и подает выход блока ON на вход Lock порт блока адаптивной интерполяционной таблицы (nD Stair-Fit) .

      Посмотреть номер заблокированной ячейки можно в блоке Cell Number в модели Simulink.

  6. После адаптации табличных значений к изменяющимся во времени данным ввода/вывода можно продолжать использовать Блок Adaptive Lookup Table как статическая таблица поиска:

    1. В окне модели Simulink дважды щелкните блок Enable . Это действие переключает переключатель и отключает адаптацию.

    2. Нажмите Запустите под Simulation , чтобы перезапустить моделирование, если оно еще не запущено.

      Во время моделирования блок Adaptive Lookup Table работает как статическая таблица поиска, и продолжает оценивать выходные значения по мере изменения входных значений. Вы можете увидеть текущее значение интерполяционной таблицы в блоке Adaptive Table Outputs в Окно модели Simulink.

См. также

Адаптивный Интерполяционная таблица (nD Stair-Fit)

Связанные темы

  • Что такое адаптивные таблицы поиска?

У вас есть модифицированная версия этого примера. Хотите открыть этот пример со своими правками?

Вы щелкнули ссылку, соответствующую этой команде MATLAB:

Запустите команду, введя ее в командном окне MATLAB. Веб-браузеры не поддерживают команды MATLAB.

Выберите веб-сайт

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *