Уроки Arduino. Фильтры данных, обработка сигналов

  Переглядів 119,377

Заметки Ардуинщика

Заметки Ардуинщика

4 роки тому

Сегодня поговорим о фильтрации значений и разных цифровых фильтрах
► Библиотека фильтров alexgyver.ru/gyverfilters/
► Урок по фильтрам alexgyver.ru/lessons/filters/
► Пример из видео github.com/AlexGyver/tutorials
▼ Огромный стартовый набор GyverKIT ▼
kit.alexgyver.ru/
▼ Уроки Arduino на сайте ▼
alexgyver.ru/lessons/
▼ Модули и датчики с Али ▼
alexgyver.ru/arduino_shop/
▼ Страница "Заметок Ардуинщика" ▼
alexgyver.ru/arduino_lessons/
Теги: #arduino #уроки #ардуино #alexgyver
●●●●●●●●●●●●●●●●●●●●
► Основной канал: / alexgyvershow
► Поддержать автора alexgyver.ru/support_alex/
► Официальный сайт: alexgyver.ru/
► Почта: alex@alexgyver.ru

КОМЕНТАРІ: 363
@user-zb4ig2li2t
@user-zb4ig2li2t 4 роки тому
Наконец то Алекс продолжил нести свет во тьму программирования. Как то объясняешь,лично мне многие вещи становятся понятными. Спасибо за труд!
@Nidvoraich
@Nidvoraich 2 роки тому
@@w.t.2905 потому что нажимается кнопка поворота
@Graf_AMOR
@Graf_AMOR 4 роки тому
Нет худа без добра - Алекс на карантине стал чаще делать [свои козырные] видео
@TheAerotrike
@TheAerotrike 4 роки тому
Александр, спасибо тебе огромное за твои труды. Твои уроки и статьи на сайте дали мне 95% прикладных знаний в области программирования платформы Ардуино меньше чем за 2 месяца, остальные 5% я пытался получить в сети за год и все равно не болта не задержалось. В общем полезное дело делаешь! СПАСИБО!!!
@vavilonvatkin8285
@vavilonvatkin8285 4 роки тому
Ваш канал Просто прекрасен столько информации полезной, и бесплатно... Такого не может быть..
@SIM31r
@SIM31r 4 роки тому
И лаконично, не на 4 часа...
@misterzaboyny607
@misterzaboyny607 4 роки тому
может
@ainthecar5047
@ainthecar5047 3 роки тому
Для нас то бесплатно, а автор работает не совсем бесплатно )
@aleksandrzubov471
@aleksandrzubov471 4 роки тому
Оу, банка от бионикла, олдскулы аж свело :)
@shadow2803
@shadow2803 4 роки тому
Почему в универе так не рассказывают... у меня отбили все желание кодить... но теперь начинаю снова на твоих видео. Спасибо за труд!
@s177p
@s177p 4 роки тому
Преподавание это талант. А преподавателям порой денег не хватает, настроение плохое и т.д. они тоже люди.
@Joe128533
@Joe128533 4 роки тому
Наверняка ведь учили писать не на ардуино. Если так - правильно делали. Потому, как практику на ардуине при поступлении на работу можно смело засунуть в задницу. Ни одна компания в здравом уме в своих устройствах использовать продукцию Atmel не будет. Ну, может шаражки какие-то. А для себя - да.
@andry19911991
@andry19911991 4 роки тому
@@Joe128533 а что не так с atmel? я не об arduino сейчас
@BStudioCD
@BStudioCD 4 роки тому
@@Joe128533 мы ждём аргументированную критику atmel, дружище))
@Joe128533
@Joe128533 4 роки тому
@@BStudioCD А что ее ждать, типа инфы мало на этот счет. Не надежный. Не устойчивый к помехам по питанию. Болеет спонтанным слетом EEPROM. Не то, что в эрате написано (певых адресов), а целеком. О чем производитель успешно помалкивает. Дорогой. Куча производственного брака. Уровень защиты от копирования = 0. Это я сейчас о всей линейке AVR, а не о каком-то конкретном. Та вообще, загляните в любую в технику. Нигде не найдете внутрях продукции Atmel Microchip.
@angrycat1973
@angrycat1973 4 роки тому
Спасибо, Алекс. Твои уроки самые лучшие, что я видел. Самое главное, что ты показываешь как применять на практике.
@dofidf3570
@dofidf3570 4 роки тому
Я считаю, что это одно из самых полезных и лучших видео по Ардуино. Хочу такое же видео по экранам для ардуино!!!
@lutsiuk5
@lutsiuk5 4 роки тому
Человек который разобрался может на пальцах показать _очень доходчиво! Алекс благодарю!
@thedarkman1020
@thedarkman1020 4 роки тому
Алекс: говорит про шум в технике Я: самый сильный шум издает сосед с перфоратором...
@rudidyatlov4460
@rudidyatlov4460 4 роки тому
Фильтр на мозг соседу🙂
@user-mf6mm7rg5r
@user-mf6mm7rg5r 4 роки тому
Делай соседу ремонт в ответ вибрационным динамиком.
@appbox8754
@appbox8754 4 роки тому
Нельзя просто так взять и остановить ремонт соседу.
@animovhere894
@animovhere894 3 роки тому
Ну тогда нужно "подавить " соседа)
@3JlOU_BoJlK
@3JlOU_BoJlK 4 роки тому
Привет. Очень хорошо объясняешь и радует чистота речи. Спасибо за качественный контент. От души прямо :-)
@aziubin
@aziubin 4 роки тому
Спасибо! Так удобно все собрано в одном месте и с примерами! Интересно было-бы про фильтры калмана послушать подробнее.
@nordling700
@nordling700 4 роки тому
Очень полезный урок! Спасибо, Алекс 👍
@melkovstas2853
@melkovstas2853 4 роки тому
Благодарю за столь ценную информацию.
@user-ey8kq7im7l
@user-ey8kq7im7l 4 роки тому
Спасибо большое, AlexGyver! У Вас дар понятно объяснять!
@ayaweb
@ayaweb 4 роки тому
Спасибо, что все показал и разжевал!
@JohnDoe-km7ch
@JohnDoe-km7ch 4 роки тому
как всегда четко и понятно! спасибо огромное!
@user-vl7bh7gd3l
@user-vl7bh7gd3l 4 роки тому
Действительно качественный материал. Ни мычания, ни жевания, ни заумных фраз. Четко и по делу.😀
@IIIIIIneXusIIIIII
@IIIIIIneXusIIIIII 4 роки тому
Идеально! Спасибо за проделанную работу
@topalek
@topalek 4 роки тому
Спасибо большое за такие видео. Интересно посмотреть видео про шум Перлина, как его получаешь и обрабатываешь
@alexey_DE
@alexey_DE 4 роки тому
Спасибо! Здоровья тебе и удачи. И жирный плюс в карму!
@alexandrvalentinovich164
@alexandrvalentinovich164 5 місяців тому
Потрясающий обзор и великолепная подача материала!
@Rin_Media
@Rin_Media 3 роки тому
Приветствую. Наконец-то досмотрел это видео спокойно, а то всё время отвлекают меня то с работы, то домашние заботы. Вообще я видео с этого канала просматриваю по много раз чтобы полностью изучить, и в этом случае вышло так, что смотрю его уже около десяти раз ))) Спасибо за такие прекрасно "объяснённые" видео. Мне тут всегда всё понятно, а непонятные моменты приятно пересматривать. Да здравствует Алекс!!! )))
@boriska007
@boriska007 4 роки тому
Очень крутая работа с материалом и его подачей! Респект! Не уверен что как-то воспользуюсь этой информацией, но посмотрел с удольствием. З.Ы. видео 2-3 летней давности с этого канала в свое время очень помогли разобраться.
@Lynx_911
@Lynx_911 4 роки тому
Вот так должны всему этому обучать - понятно, наглядно, а главное ясно для чего всё это нужно!
@user-do3ze3qu6j
@user-do3ze3qu6j 4 роки тому
Круто, ещё бы таких уроков!
@navoznov
@navoznov 4 роки тому
шикарный урог! огромное спасибо! вспомнил даже что то из матана 1-2 курса )
@cccp306
@cccp306 4 роки тому
Спасибо! Очень помогло с котировками Форекс на MQL4
@KBinSNT
@KBinSNT 4 роки тому
То что нужно! благодарю за информативность
@vitaliirevutskyi7836
@vitaliirevutskyi7836 4 роки тому
Очень интересны видео такого формата, где объясняются принцип работы полезных алгоритмов.
@user-sr6pi5lp3q
@user-sr6pi5lp3q 4 роки тому
При этом автор не спец по ним.
@MiklNsk
@MiklNsk 4 роки тому
Очень полезное видео. Давно искал, как отфильтровать шумы с аналоговых датчиков. И вот оно! Все доступно и понятно. С меня подписка и лайк!
@vitaliirevutskyi7836
@vitaliirevutskyi7836 4 роки тому
The best. Very useful algorithms ! Thanks.
@kirillpetrakov3282
@kirillpetrakov3282 4 роки тому
А ещё при вычислении среднего можно брать количество равное степени 2-ки, тогда операцию деления можно заменить на сдвиг.
@user-wh8ok1lv8g
@user-wh8ok1lv8g 4 роки тому
Мозгов не хватит.
@user-ym4ff5xz2c
@user-ym4ff5xz2c 4 роки тому
Можно ссылочку, где это описано подробнее?
@kirillpetrakov3282
@kirillpetrakov3282 4 роки тому
@@user-ym4ff5xz2c ru.wikipedia.org/wiki/Битовая_операция
@romaibragimov9872
@romaibragimov9872 3 роки тому
Большое спасибо за полезную информацию! Уже есть идеи, где можно будет использовать!)
@TedFanat
@TedFanat 3 роки тому
Эти видосы просто гениальные! Всё настолько понятно и просто оказывается, что я начинаю думать, что идея сделать свой флайт контроллер для коптера на основе ардуинки и пачки датчиков не такая уж и невыполнимая идея
@egorvolkov1183
@egorvolkov1183 4 роки тому
Буквально вчера я искал инфу по этому поводу, очень полезное видео!
@djekiseven1336
@djekiseven1336 3 роки тому
Как раз вовремя. Работаю над цифровым дальномером.. видео очень кстати. Спасибо автору.
@Algok17
@Algok17 3 роки тому
Очень полезное видео. Даже фильтр Калмана упомянул. Я его использовал для фильтрации показаний гироскопа и работал он очень хорошо.
@thedimas3007
@thedimas3007 4 роки тому
Хорошо обучаешь, спасибо
@sazonoffr
@sazonoffr 4 роки тому
Супер! Ждем еще видео!
@normundg2030
@normundg2030 4 роки тому
Супер! Очень полезная и нужная информация
@user-hp8zp6kq5h
@user-hp8zp6kq5h 4 роки тому
Спасибо за видео!
@daniel-channel
@daniel-channel 3 роки тому
Спасибо, помогаешь открывать новые горизонты.
@LexDoIt
@LexDoIt 4 роки тому
Великолепный видос! Когда делал свой проект, как раз понадобилась бы вся эта инфа по фильтрам! 👍
@ardar05
@ardar05 4 роки тому
Супер урок
@ArduBlock
@ArduBlock 4 роки тому
Супер урок!
@gleb_pavlov
@gleb_pavlov 4 роки тому
Алекс, привет, спасибо за видео, очень вовремя, я в своём проекте ещё не дошёл до этого, но скоро дойду и тогда мне пригодятся эти классные алгоритмы фильтров. Спасибо!
@elenapoplos9537
@elenapoplos9537 3 роки тому
Спасибо за видео и советы Поучительный материалы все
@maddogg1432
@maddogg1432 3 роки тому
Спасибо Алекс!) Ты явный топ рунета в ардуино
@dusefi
@dusefi 4 роки тому
Спасибо, очень полезно!
@user-vw4hs7kz8j
@user-vw4hs7kz8j 4 роки тому
Инфа - ТОП :) Ждал чего-то подобного))
@Ghooooost
@Ghooooost 4 роки тому
Огнище! Спасибо :)
@user-br9sz4jn5k
@user-br9sz4jn5k 4 роки тому
Ролик супер!)
@user-fu4of9wh3f
@user-fu4of9wh3f 4 роки тому
Понравилось! Продолжай!
@user-is8gy1ge7q
@user-is8gy1ge7q 4 роки тому
Большое спасибо, как раз не мог понять как реализовать фильтр в своем проекте!
@torhristos115
@torhristos115 4 роки тому
Спасибо огромное за видосы, собрал себе трехканальный, даже без фильтра получилось!
@jankarlionov4646
@jankarlionov4646 4 роки тому
Спасибо. Очень сильно большое : )
@KrivchikovDA
@KrivchikovDA 4 роки тому
Спасибо!!! Узнал кое-что новое)
@TheZwaw
@TheZwaw 4 роки тому
С большим удовольствием посмотрел несколько уроков. Очень понравилось! Все понятно и доступно. Теперь мне легче объяснить все это сыну. Для фильтрации немного изменил функцию "бегущее среднее арифметическое". Из примеров она не подходит для обработки данных с нескольких датчиков одновременно. Сделал отдельный класс и выложил на github. Будет необходимость дам ссылку. Еще раз спасибо!
@kirilldegtayrev8447
@kirilldegtayrev8447 4 роки тому
Как всегда супер Очень хочется урок про подключению LCD монитора с обратой связью как продолжения энкодора
@R4ABT
@R4ABT 4 роки тому
спасибо ,интересно,поучительно
@user-op9ne9nf3w
@user-op9ne9nf3w 4 роки тому
Не программирую, в математике разбираться в лом, информация эта мне не пригодится, но чертовски интересно смотреть. Молодец ,Алекс!!!
@user-vo9kn3pp6p
@user-vo9kn3pp6p 4 роки тому
Спасибо друг !!!
@Ghostgkd777
@Ghostgkd777 4 роки тому
Спасибо за информацию, очень информативное видео. Собирал паяльную станцию на AVR с термофеном (паяльник на Т12 еще не прописал код), софт писал в Кодевижн на Си. Управление феном делал ПИД регулятором, фильтрацию значений температуры с термопары сделал двойным фильтром бегущего среднего, который сам вывел. Правда, первая ступень фильтра шла с буфером в 100 значений, вторая - в 10 значений первого, получаемых непрерывным считыванием параметров АЦП на средней частоте дискретизации. Значения с фильтра вышли вполне приемлемыми, выход с АЦП не прыгает как умалишенный, ПИД их переваривает, если ограничить мощность нагревателя в 50% (все-же скорость дискретизации после фильтра ограничивает быстродействие ПИД). Попробую потом применить медианный фильтр, спасибо за инфу по нему, он должен на пару порядков быстрее отрабатывать, можно будет увеличить до полной мощность нагревателя, скорость работы ПИД, и ускорить нагрев до считанных секунд. Сейчас с мощностью в 50% выход на рабочую температуру в 250-300 градусов примерно за 15 секунд. Пробовал в порядке эксперимента запускать Т12 с управлением от МК с работой в "релейном" режиме - по принципу работы аналогового регулятора - работа мне понравилась, температуру держит вполне приемлемо, большие полигоны с проводами в компьютерных блоках питания плавит уверенно. Чувствительность на изменение температуры составила порядка 0,5 градуса. Вот в таком режиме фильтрация бегущего среднего доставляла проблемы: сразу после отключения нагрева ЭДС термопары стремительно падала, приходилось еще вводить некоторую выдержку перед началом измерений, что накладывало некоторые ограничения на максимальную частоту опроса температуры и отклик паяльника на изменения температуры. Метод наименьших квадратов может пригодиться при калибровке температуры паяльника. Я ее выполнял несколько иначе. Измерял текущую температуру нагревателя с термопарой внешним мультиметром, вносил показания в МК, затем увеличивал мощность нагрева и проводил второй замер с указанием температуры в память МК. Таким образом, МК имеет 2 фиксированных значения АЦП при температуре в, например, 100 и 400 градусов, рассчитывает уравнение прямой и в дальнейшем показывает на дисплее текущую температуру нагревателя исходя из показаний с АЦП и пересчета их по полученной формуле прямой. У меня отклонение фактически замеренной температуры от расчетной, показываемой МК, не превышала 1-2 градуса в диапазоне рабочих температур и лишь при температурах менее 100 и выше 400 доходило до 5 градусов. Так можно откалибровать разные жала Т12 и выбирать соответствующее в настройках станции при замене жала. Или сделать еще круче: сбоку станции предусмотреть кассету для хранения жал с контролем их наличия через датчик. Какого жала в кассете не хватает - тот термопрофиль и включать т.е. станция сама распознает вставленное в нее жало и автоматом подстраивается под него.
@madmike3360
@madmike3360 4 роки тому
Огромный труд, Алекс! На самом деле данные с DS18B20 оказалось проще фильтровать уже по факту после накопления в массиве, сглаживая данные при построении в Origin. Это был научный проект по изучению кинетики химической реакции - там требовалась скорость при накоплении для отслеживания момента начала реакции.
@ArduNotes
@ArduNotes 4 роки тому
Об этом и ролик, что у каждого фильтра свои особенности
@vladimirpotapov7050
@vladimirpotapov7050 3 роки тому
Спасибо !
@Elka_1_
@Elka_1_ 4 роки тому
Умница!
@alexnorton1305
@alexnorton1305 4 роки тому
ну наконец-то ты дорос до фильтров! теперь подтягивай братишек....
@vitaliirevutskyi7836
@vitaliirevutskyi7836 4 роки тому
Очень интересует тема подключение и работа с шаговыми двигателями разных размеров. Это будет очень полезно, потому как очень часто возникает такая надобность
@lotlot6058
@lotlot6058 4 роки тому
Спасибо
@MrEgor47
@MrEgor47 3 роки тому
просто мозг , побольше таких людей капец вот бы в молодости в школе учили такие вещи , сейчас в 37 лет как тяжело со всем разбираться , не такая скорость обработки данных но так хочется все это понимать , этим будущее , автоматика хоть чем можно управлять как жизнь пер писать в код , все как хочешь можно сделать, черпаю уроки много перевел в код потратил много времени наконец то сделал импулсы для тэсла такой мощности что все пожег нахрен )))и это круто
@aleks-mar
@aleks-mar 4 роки тому
Это бестцеллер! Спасибо огромное за проделанную работу! Александр. Воплоти мечту, сделай быстрый ампервольтметр для лаботаторника с хорошей точностью с внешним АЦП, а главное быстрый! Китайские очень медленные для ЛБП.
@RomanAndr
@RomanAndr 4 роки тому
Ура! Новое видео
@Specialist_impossible
@Specialist_impossible 4 роки тому
Ееее её, чувак, ты кладезь идей
@sergei9112
@sergei9112 4 роки тому
Как говорилось в одном очень популярном видео: (Ничего) не понял, но очень интересно. Спасибо за видео, жду новых! В планах сделать удалённое управление Linux-сервером на Arduino, умный дом-TelegramBot
@user-tk8xk7ur2i
@user-tk8xk7ur2i 4 роки тому
Алекс, спасибо за труды. Все очень доступно и понятно. По возможности хотелось бы получить инфу про составления простейших меню для дисплеев 16х2 плюс энкодер. Когда столкнулся с данным вопросом, инфы по этому почти не нашёл. Буду благодарен вас за подсказки. И думаю не я один
@Firefox3860_
@Firefox3860_ 4 роки тому
Интересно, спасибо. Мне особенно нравится медианная фильтрация, недавно писал её на C# в лабораторной для фильтрации точечных помех на растровом изображении. Метод наименьших квадратов - тоже крутая и распространённая вещь, хорошо, что показал подробно. :)
@Ingeneromsk
@Ingeneromsk 4 роки тому
Супер
@igorsambura9429
@igorsambura9429 4 роки тому
спасибо! ето оч круто. пожалуйста продолжай в етом направлении .
@user-hn8pz6ys5d
@user-hn8pz6ys5d 4 роки тому
Такие видео нужно в школах и универах показывать!
@user-dk5cx9ye3i
@user-dk5cx9ye3i 3 роки тому
Мы такими вещами в универе сами занимались без видео. И начинали программировать на ассемблере.
@szapsis
@szapsis 4 роки тому
Алекс привет! Спасибо за видос. Можешь сделать видео о элементе Пельтье?
@MrAhinko
@MrAhinko 4 роки тому
Привет , спасибо за классные уроки по ардуино. Сними пожалуйста если можешь урок про внешнюю память например для хранения каких либо настроек или логов и возможностью изменить/просмотреть с компьютера через порт
@sergey_nikitin
@sergey_nikitin 4 роки тому
Как раз валяются bmp280, а тут такое видео, очень полезно, огромное спасибо!
@user-lk4mv1di7w
@user-lk4mv1di7w 4 роки тому
Нууу, попер контент!!! )))
@arnidexian5834
@arnidexian5834 4 роки тому
очень полезный обзор +1
@bradischannel
@bradischannel 4 роки тому
ты самый лучший
@zxczxc6591
@zxczxc6591 4 роки тому
Большая просьба записать подробное видео по фильтру Калмана.
@user-zd7ye1jj2j
@user-zd7ye1jj2j 2 роки тому
Саня ты красаучег 👍
@user-pz7yv7el8d
@user-pz7yv7el8d 4 роки тому
Упрощённая формула бегущего среднего это П-регулятор. Его часто используют на соревнованиях по робототехнике для движения по линии.
@IgorYegorkin
@IgorYegorkin 3 роки тому
Увидел в видео И из ПИД-регулятора, который самый популярный в мире из-за простоты настройки и описания.
@user-ti3ew5pf9n
@user-ti3ew5pf9n 4 роки тому
Нечего не понял, но очень интересно)) Не так то пол года назад мучительно всё это искал и пытался осознать)) Тогда это очень помогло бы))
@jercyvz6848
@jercyvz6848 4 роки тому
Я лайк поставлю пока не забыл. А видео немного подождать позже гляну.
@xStStSx
@xStStSx 4 роки тому
Уже пару лет так и читаю сигналы, всегда через фильтр. Через самый обычный усреднения, он же ФНЧ. только для ардуинки желательно без плавающей точки. что-то типа value = adc>>1+ value>>1; Спасибо за видос ;)
@user-ib4ce9ch4k
@user-ib4ce9ch4k 4 роки тому
Здорово Алекс, про фильтры очень познавательно, предлагаю освоить фильтр Баттерворта. Есть упрощённые алгоритмы и он покруче чем Калман.
@AlexStraga
@AlexStraga 4 роки тому
Саню понесло ) Это радует )
@user-sn1sj7ze3c
@user-sn1sj7ze3c 4 роки тому
Молодец.
@ixarek1
@ixarek1 3 роки тому
2й день смотрю этот канал с самого первого видео. Это было наиболее тяжелым
@user-ik8pb8kb4o
@user-ik8pb8kb4o 4 роки тому
как раз в этом семестре корректирующие устройства и цифровые фильтры в системах электропривода, где мы такое и разбирали:)
@tolkoviy
@tolkoviy 4 роки тому
Алекс: Барометр БМП280 Барометр: БМП180....
@maxlabVideo
@maxlabVideo 4 роки тому
Контент хороший. Предмет вычислительная математика в вузе. Можно ещё использовать аппроксимации функций, например, ряд Тейлора на временных промежутках, особенно если известна примерная форма чистого сигнала (синусоида, экспонента или что-либо ещё)
@N5O1
@N5O1 4 роки тому
отличненько давно не занимаюсь ардуинкой, но алгоритмы тема интересная
Уроки Ардуино. Графики в реальном времени
6:30
Заметки Ардуинщика
Переглядів 66 тис.
лаб7
23:06
Операционные системы с Мариной
Переглядів
😱СНЯЛ ФИКСИКОВ НА КАМЕРУ‼️
00:35
OMG DEN
Переглядів 1,4 млн
PT4115 - лучший LED драйвер?
12:13
Заметки Ардуинщика
Переглядів 130 тис.
Фишки Arduino, о которых ты не знал!
13:37
Заметки Ардуинщика
Переглядів 104 тис.
ВЧ-фильтры. Часть 2. ФНЧ ФВЧ. Начинающим радиоконструкторам. Ликбез.
9:51
Радиоканал с Алексеем Игониным
Переглядів 36 тис.
С чего начать цифровые фильтры
28:16
TPU online
Переглядів 3,6 тис.
Arduino - filtering values (Arduino Kalman filter)
6:52
Заметки Ардуинщика
Переглядів 93 тис.
Что такое КИХ-фильтр?
8:51
Академия разработчиков
Переглядів 5 тис.
СЛОМАЛСЯ ПК ЗА 2000$🤬
0:59
Корнеич
Переглядів 1,6 млн
Що покаже Apple, гнучкі айфони та Windows переходить на ARM
17:49
Ноталка Шелягіна
Переглядів 60 тис.
All New Atlas | Boston Dynamics
0:40
Boston Dynamics
Переглядів 5 млн
Я Создал Новый Айфон!
0:59
FLV
Переглядів 2,1 млн