Аналоговые входы АЦП, шкалирование и линеаризация аналоговых сигналов 0-10В, 4-20мА
Ғылым және технология
Продолжение тематики АЦП - в этом видео постараюсь объяснить методику шкалирования и линеаризации аналоговых сигналов в цифровой вычислительной технике на примерах под ПЛК и микроконтроллеры.
В качестве примеров - обработка сигнала с термодатчика, выдающего стандартный сигнал 0-10В / 4-20мА.
Программа под МК, схема и прочие материалы:
files.inbox.lv/shared/file/08...
Эпизоды:
00:00 - Вступление
00:56 - С чего начинается измерение
06:09 - Как подключить датчик
10:56 - Формула, на которой держится весь мир
14:08 - Примеры программ шкалирования
20:20 - Линеаризация
22:38 - Пример шкалирования под микроконтроллер
Пікірлер: 161
Да! Может плохо искал, но только здесь увидел универсальную формулу. Действительно рабочая. Проверял на контроллерах Siemens.
класс , чувак ты большой молодец, смотрю все твои видосы🤟
У тебя талант рассказчика. Приятно с пивком в пятницу посидеть под такой интересный разговор.
@user-ul6iu3nu7i
Жыл бұрын
Наоборот с утра смотрю, когда выспался, отдохнул от рабочей недели
Спасибо. Дай бог тебе счастья и здоровья. Очень понятно и просто рассказал то, что казалось сложным.)))
Шикарный видос от уже любимого автора). Как обычно харизматично, популярно, шикарно)
Блин, только с работы домой собрался, и на тебе - ролик... СПАСИБО =)))
@user-rp4fu1nr7z
Жыл бұрын
Остался на подработку???
@iMOOMMOOM
Жыл бұрын
@@user-rp4fu1nr7z Объявил всем, что меня нет и заварил чайку =) Ролик и правда отличный. Впрочем, не сомневался. И тема для меня актуальная актуальная оказалась, только мне на производстве нужно замерять 150-250 градусов, так что второй день читаю про термопары и отзывы на датчики. У старого агрегата не работает терморегулирование, и если вовремя не выключить нагрев, он может продолжаться до красного железа, а мне надо максимум 220-230, и потом вырубать, а при понижении за 200 включать нагрев. Вроде на вид просто. В задаче есть легкое место - погрешность в границах 5 градусов погоды не делает. Но есть трудное, пока не решил, как победить. Суть такова - агрегат греет плиту, а она массивная и в плане температуры инертная. То есть чтобы удерживать в рабочем диапазоне плиту, нужно «предвосхищать» перегрев и переостывание. И вроде бы тоже не трудно, надо диапазоны срабатывания сдвинуть. Но тут возникает еще условие - агрегат работает с разным материалом, и под каждый нужна своя температура, которую хорошо бы соблюдать. То есть вот есть пленка с рабочей температурой 220. 210 ей уже мало, а 230 много, и вот надо, чтобы плита с ее инертностью и болталась 220 +/-5 градусов, а следующим материал будет на 200 и то же самое с диапазоном. Кажется, что не сложно, в плане кода пока какая-то каша. Хочется, конечно, схалтурить, и просто приколотить гвоздями несколько готовых предустановленных программ и оставить выбор только между ними, но вроде бы и не серьезно. потому что материал от разных производителей, и где-то надо прям на ходу подбавить газку, где-то остудить... Извините, что все это вывалил. Мысли вслух =) Спасибо вам за канал и ролики, которые регулярно наталкивают на какие-то мысли. То на что-то с другой стороны посмотришь, то пробел какой вскроется и надо пойти почитать, то вообще не думал, а тут - бац - а у вас разжевано =)
@SaihoS1
Жыл бұрын
@@iMOOMMOOM В таких случаях решение известно - PID регулирование. Чувствуется что вы сейчас вряд-ли сможете его реализовать самостоятельно, но Вам и не нужно. Всё придумано до нас. Практически любой контроллер температуры с функцией автонастройки PID решит вашу проблему в корне и с большим запасом по точности. И цена вопроса смешная, буквально несколько тр за контроллер и термопару. Ну может около 5 тр. При этом вы один раз даёте контроллеру настроить коэффициенты и дальше радуетесь жизни - в работе просто устанавливаете на табло нужную температуру и идете спать. Выбор контроллера правда зависит ещё и от типа нагревателя. Если электрический то всё просто, но можно порешать и с форсункой и с чем угодно. Только тогда вам потребуется помощь специалиста и в 5 тр уже не уложиться. Вот щас Гневисть проснется и разъяснит вам по полочкам )))
@Gnevistj
Жыл бұрын
@Роман Вестра , вам действительно нужен терморегулятор с ПИД-ом, как и сказал @SaihoS1 , "релейной" логикой вашу задачу качественно не решишь. Проще всего взять готовое решение от любого крупного производителя - Шнайдер, Сименс, Омрон - у них у всех есть в каталогах подходящие вам продукты =)
@SaihoS1
Жыл бұрын
@@iMOOMMOOM Добавил бы не столь именитых и соответственно не столь дорогих корейский Autonics и наш ОВЕН. У обоих есть модели на все случаи жизни и по надёжности хорошо себя зарекомендовали. Осталось только определиться с нагревателем. Если электрический, то управлять лучше через твердотелки. Они практически вечные и коммутировать могут до ста раз в секунду.
Уже не знаю что и сказать вроде уже всё сказал и не раз. Ну как всегда: подача, манера, музыка, последовательность, интонация, всё на высшем уровне. Здравствуйте кстати 😂. Даже до такого валенка как я с такой подачей стало доходить хоть кое что. Боюсь перехвалить. Олег но просто бомба. Некоторые блогеры долго к такому идут а у вас прям с первого видео всё получилось. Я кстати после первого просмотренного видео подписался. Готов на часовые и даже двучасовые видео. Нет не видео... Уроки. Как всегда отлично.👍
@Gnevistj
Жыл бұрын
Спасибо, буду продолжать радовать новыми видео! =)))
Вы - очень харизматичный ) Знаете, будучи студентом не понимал ТОЭ. я бы что предложил... рассказать основы основ про узлы, базовые методы и прочее. В помощь студенту. А почему здесь ? а у Вас хорошо получается )
@alexnet8943
Жыл бұрын
Этакий современный халявный ликбез ? Ну, голубчик, Вы даёте🙂...такая гамма удовольствий дорогого стоит.
@Gnevistj
Жыл бұрын
Дело даже не в стоимости, а в экранном времени =) Я не знаю с какой стороны подступиться, чтобы это увлекательно рассказать =)))) Но, может когда-нибудь и придумаю =)))
@alexnet8943
Жыл бұрын
А студентам не слишком захорошеет ?
@andrisrubens2588
Жыл бұрын
Все что касается ТОЭ, Ютюб полон информации, могу выделить один канал, которого для любознательных хватит за глаза. youtube.com/@ToeRavilov Лично мне очень помог в освоении предмета: электротехника, в частности, комплексные числа зашли на ура.
спасибо за видео, буду пересматривать ещё не раз
Подписан, посмотрел с удовольствием, поставил лайк! :-)
Класс! Спасибо очень поучительно! Ждем новых уроков!
Очень полезно! Спасибо! За Ваш труд.
Замечательная подача. Если можно, запилите ролик про аналоговые выходы. И в частноти, как получить 0 - 10 v из Ардуины.
Спасибо Вам за такое полезное видео, очень информативно и интересно 😊
Когда в глаза не смотришь не так страшно, слушать приятно, полезно. Спппаассиибо :)
Привет. Отличный пример документации на датчик!😂
Ура! Новый выпуск!
сразу лайк, потом просмотр)
Хочется научиться программировать . Ваша инфо очень полезная, спасибо за потраченное время .
Не слова, а золото! 🎉
вот оно как делается! спасибо! теперь буду знать как пилить штуку на ардуино для измерения чегото
Ура! Есть ролик!!! Лайк в копилку. Всегда жду с нетерпением!!! 👍🤝
Класс! Отличная подача материала. Талант не пропьёшь!👍🏻🤝🏻 Начинаю качать видео с канала для будущих поколений 🙂
Едрииить, Песняры подъехали, сольный концерт! :)
Все клёво. Материал интересный. Подача его замечательная. Респект и уважуха. Но... Ни как не могу оторваться от глаз автора. 😄
ооо опять чёто умное))) спасибо за кинофильм
Ваши видео просто ОФИГИТЕЛЬНЫЕ!
Спасибо! Это лучшая подача материала!
Супер. Я измеритель уровня воды на герконах и резисторах собрал написал длинющий код который сопротивление в уровень воды переводит, а тут все проще с формулой (вот чем отличаются самоучки как я от профи) мы пишем "быдлокод"до которого дошли путем проб и ошибок 😉 Побольше таких видео и если можно то также на пальцах объяснить про I2C
@Gnevistj
Жыл бұрын
Любой профи когда-то был самоучкой, и уж поверьте, все мы учимся на своих ошибках, и своем же "быдлокоде" =)))) И про I2C, и про SPI готовится материал =))
Спасибо, так держать. Даёшь годный материал!
Спасибо за труды. Может когда нибудь пригодится.
Так интересно ,что не заметил как полчаса прошло.
Спасибо за видео! Ты супер крутой чувак!
Друже ты реально крут! такие сложные вещи (если самостоятельно изучать по литературе) так просто подаешь, что дебилу будет понятно)
Спасибо!
Супер, спасибо! Жду выпуск по ООП!
Вот знаю, что инфа нифига не пригодится, но всё равно интересно. Заодно вспомнить восьмибитные времена, когда надо было впихнуть весь функционал (весьма богатый, уровня АОН-а) в 8К ПЗУ и 2К ОЗУ. Да, там была и куча аналоговых входов...
@Gnevistj
Жыл бұрын
Поверьте, и сейчас порой приходится - притащит клиент какой-нить корейский ПЛК со своим не менее корейским пароходиком, и пищит - "любые деньги, только сделайте чтобы вот тут чтобы было вот так!" =))))) Ну раз "любые деньги" - то можно и заморочиться =)))))
Хетфилд еще и поёт как боженька😊
нравятся мне твои ролики)))
Здравствуйте, на повестке дня значит Аналоговые входы АЦП, буду делать изучать. Моё пожелание это что бы вы не бросили это дело, из всех источников которые я нашёл ваш самый понятный. По возможности нужно сделать возможность закидывать монету в ваш сундучок за хороший контент. Я уже сам написал несколько своих программ ,всё работает,🙂 доволен как слон! Простые, но как говорил китайский мудрец самый долгий путь начинается с первого шага. С уважением!
Спасибо.
Отличное объяснение реально отделил мух от котлет))))
Очень хорошо! И немного гневисти совсем не мешает.
Спасибо!👍
21:27 описание 👍
Автор, спасибо за видео! Уж сколько было в моей жизни сожраных мышами кабелей, "потерянных" датчиков и прочего, не счесть. Но смотреть интересно, ибо талант есть у тебя! Кстати, есть ещё экзотические выходные сигналы 0.8...3.2 В. И это всё на линии, длинной несколько сотен метров, в условиях жутких индустриальных помех. Вот где жесть.
А ещё надо иметь представление о работе многих устройств и происходящих при этом процессов
Ща будет разнос мозга)))
@user-rp4fu1nr7z
Жыл бұрын
Замотай голову бинтом, чтобы мозг по стенам не раскидало.
Хорошие у вас уроки. Единственное по теме с датчиком. Везде со всех утюгов трезвонят избегайте операцию деления, типа мк выполняет ее медленно тормозит. Я пытался сделать манометр до 600 бар, в руки попал датчик давления с харвестера, у него диапозон выхода от 1-5в, или от4-20ма и он линейный. Я его прикрутил к мк, но при проверке на гидростанции он показывал то 160 то 190бар, и ноля стабильного не было. Это при питании от аккумулятора. Скорее всего датчик б.у и уже был не исправен. Было бы интересно узнать, как разводить платы и о апаратных фильтрах от помех что бы показания таких датчиков были точнее.
ООП... так так так, с этого места поподробнее. Я серьезно, я веб-разработчик. Но всегда любил паять (и до программирования работал в сервисе) и плавно добрался до изучения МК. Сразу взял stm32... и взгянув на Си c CMSIS (да и HAL не слаще), пыл мой поубавился. Есть пара библиотек на C++ (его я кстати не знаю) типа mbed, но что-то сложнее hello_world сварганить не удалось (ардуино не в счет). Попадался даже прикольный доклад, где организация применяя ООП, на С++, экономит на разработке, благодаря единой кодовой базе. Вот только открытых проектов, да и даже простых статей днем с огнем не сыщешь.
Крутяк. Универсальные аналоговые сигналы рассмотрели. Предлагаю теперь рассмотреть сигналы термосопротивления и термопар. Там тоже можно весьма много накопать (характеристики, компенсации холодного спая, схемы подключения и т.д.) Целый мир.
@Gnevistj
Жыл бұрын
Да, и весьма интересный мир. Может как-нибудь сниму видео и о термопарах =)))
Я НСЦТАИ, 20 лет в бизнесе. Значит так электронщики, видят наше оборудование:) Зашел посмотреть на реализацию автоматики уровня в баке и завис на следующее видео. Сигнализаторы предельных сопротивлений наше все
R-C фильтр для лохов ))) улыбнуло. Спасибо за видео, супер!!!
Лайк
Описание к датчику огонь! :)) опять не могу прожать несколько лайков, а жаль.. Только дочитав до повреждения пространственно-временного континиума понял что что-то не так)))
@Gnevistj
Жыл бұрын
Спасибо, рад что понравилось =)))))
Добрый день! Есть необычная задача, которую необходимо выполнить на МК. Считывается значение АЦП 10 бит и шкалируется по шкале 0-7 с точностью 0.1. Задача: увеличивать значение счетчика на 1 при уменьшении значения переменной и переходе через целое значение шкалы, т.е. 5.2->5.1->5.0 увеличивается счетчик на 1, а если 4.8->4.9->5.0, то счетчик не изменяется. Своего рода обратный счетчик. Направьте, пожалуйста, на правильную дорожку =)
Расскажите пожалуйста о ds18b20 очень труден для понимания для меня оказался.
Значит в Ардуино,преобразование в заданный диапазон функцией map,происходит по этой формуле линейной интерполяции. Большое спасибо за разъяснения.
@Gnevistj
Жыл бұрын
Да, эта формула используется везде, где нужно преобразовать сигнал в иной диапазон, те же LIN_TRAFO, SCALE, UNSCALE в "больших" ПЛК также основаны на этой формуле =)
А можете ещё рассказать о методе Симпсона (парабола) в АЦП , спасибо за ваши уроки 👍
@Gnevistj
Жыл бұрын
Вы имеете в виду измерение действующего значения сигнала, того же RMS? Окей, как-нибудь запилю видео, довольно интересная тема кстати =)))
4мА есть величина в первую очередь для питания прибора для подключения по двупроводной схеме.
@Gnevistj
Жыл бұрын
Трудно сказать как сложилось исторически; учитывая что первые датчики имели четырех- и трехпроводные схемы подключения, то вероятнее всего делали это именно для обнаружения обрыва, а уж потом поняли что можно и питать через это =) Точно так же как со шкалой 2 - 10В, где два вольта и есть ноль шкалы, а все что ниже - неисправность =)
Всё понятно, а как линеаризовать экспоненциальный поборолически и др датчики, где характеристика похожа на синус?
@Gnevistj
Жыл бұрын
Самый простой и часто применяемый метод - именно кусочная интерполяция, как я рассказывал; то есть расписываете по маленьким кусочкам таблицу входного сигнала, и вводите нужное количество блоков сравнения с уставками для формулы. Или же, если полностью известна характеристика входного сигнала с ее коэффициентами - применяете обратную функцию - для синуса - арксинус, для экспоненты - логарифм, и т.д. =))
@user-kx7ch1zr3q
Жыл бұрын
@@Gnevistj спасибо!
А будет ли продолжение темы 'мифы альтернативной энергетики '?
@Gnevistj
Жыл бұрын
Будет! Даже немножко материала поднакопил =))) Не могу сказать как скоро эти выпуски увидят свет, ввиду происходящего киш-миша в работе, но планы имеются =))))
После операции пришивания пальцев... Доктор а я смогу теперь на скрипке играть? О да конечно... Здорово, раньше я не умел. .. так и мне, ещё долго мозг перепрограммировать, писать ему свой интерпретатор для этих вещей 😂
Ееееее. 🎉
это получается, что чем уже измеряемый диапазон (температуры, например) - тем точнее будет измерение, и упрётся всё, по-итогу, в точность измерителя? И, по-идее, можно еще точнее "линеаризовать датчик", если есть более точный измеритель - построить свой график под конкретный датчик. И, по-идее, имея более точный измеритель - можно сделать калибровочную программку, типа гонять интервал и циферки вбивать и оно само все посчитает. Я, конечно, нифига во всём этом не разбираюсь - но очень интересно (и плюс минус понятно).
@Gnevistj
Жыл бұрын
Да, вы правильно все поняли - если количество делений на шкале не меняется (как в случае с АЦП МК - всегда 1024 единицы-деления), то чем более узкий диапазон реальных единиц вы хотите измерить, тем точнее получится =) И действительно так - основное это датчик - никакой АЦП хоть со 128 битами не улучшит сигнал, если датчик изначально имеет низкую разрешающую способность. Вспомните дешевые цифровые медицинские термометры из аптек - диапазон небольшой, но ошибаются чуть ли не в половину диапазона порой =))))) Именно по причине качества датчика, ИМХО =)))
ооп 🥲
Как поставить второй лайк за описание к экранному датчику?))
@Gnevistj
Жыл бұрын
Спасибо, приму виртуальный второй лайк =))))))
Я, как человек, далекий от пром. автоматики, хотел спросить в порядке любопытства: В коде (25:50) переменная Xx имеет тип Long, но при этом на этапе считывания Xx=READ10(AN0) ей присваивается дробное значение, которое затем преобразуется. Как это работает? :-)
@Gnevistj
Жыл бұрын
Результатом работы функции ReadAD10 является WORD в диапазоне от 0 до 1023, и 16 его значащих бит загружаются в младшее слово переменной Xx, старшее слово не изменяется =)))
@vernnms78
Жыл бұрын
@@Gnevistj Эх, Семен Семеныч!.. Теперь ясно, что умножением просто "перекидываем" в старшие разряды? Правильно понял?
@Gnevistj
Жыл бұрын
Именно! Чтобы оставить место для " х десятых после запятой" который возникнет в результате вычислений. Десятичное значение окажется в "целых" разрядах, с которыми умеет работать машина =)) А мы потом его оттуда выковыряем =))))) Если бы мы хотели показать точность до сотых (два знака после запятой) - умножали бы на сотню =)))
@vernnms78
Жыл бұрын
@@Gnevistj Спасибо за объяснение! :-) Возьму это на вооружение.
А функция map это и есть интерполяция?
В ардуине команда "maps" )
13:49 Нуууу... не совсем.. Только в том случае, если величина будет меняться линейно. (а если по сложной кривой, парабола, гипербола и т.п.) Поправьте, если в чем-то не прав.
"умная коробочка" выдаёт только ac или может и dc ,какая частота выхода , или это мини генератор сигналов 😁👍👍
@Gnevistj
Жыл бұрын
Умная коробочка выдает то, что установлено на ее дисплее при помощи крутилки =)))) Т.е. любое значение сигнала в диапазоне от 0 до 10В, или 0 до 20мА, причем с точностью до третьего знака после запятой. Умеет также выдавать треугольный сигнал - с настраиваемыми значениями нуля и максимума (в тех же диапазонах), и периодом изменения в секундах и долях секунд. Как-нибудь сделаю обзорчик =)
почему защитник виндовс ругается на предложений вами basic?
@Gnevistj
10 ай бұрын
Вопрос этот скорее к разработчикам, я лишь пользователь этой среды. Кстати, у меня не ругался, вы точно с sourceforge качали?🙃
@mj-maks
10 ай бұрын
@@Gnevistj да, по вашей ссылке, а какой Виндоус вы пользуетесь и какая разрядность?
@Gnevistj
10 ай бұрын
@@mj-maks , на данный момент 10ка 64 бита, но без единого обновления. По опыту, если антивирус ругается на любой компилятор - это норма, потому как компилятор обладает основным признаком вируса - создает исполняемый код =))) Не знаю насколько мой опыт будет полезен - с sourceforge я все ставил без доп проверок, ибо у них довольно жесткие проверки на самом сервере. Но, осторожность никогда не бывает излишней, я возможно несколько легкомысленно подхожу к этому вопросу =)
@mj-maks
10 ай бұрын
@Gnevistj спасибо, а ардуино также на бейсике? сильно отличается?
@Gnevistj
10 ай бұрын
@@mj-maks , у ардуино свой язык; но учитывая что они все (если память мне не изменяет) построены на контроллерах авр, то не вижу проблем писать и под них на гцбейсике. Я готовлю выпуск и об этом =)
Отлично! Спасибо! Но до оргазма малёха не хватает ((( Не ну правда, если уж играть с фиксированной точкой и врукопашную использовать дополнительный код, но при этом не провести элементарной оптимизации вычислений это как-то странновато. Если б я вот так вот влоб сделал четыре сложения, два умножения и, ёрш его налево, деление вместо одного сложения и одного умножения... да меня б выгнали без выходного пособия ))) Гневисть, не гневитесь пожалуйста. Просто до последнего момента ждал когда вы скажете "Ну мы то знаем как раскрывать скобки и заменять деление умножением! Смотри народ как одной только ловкостью рук мы превращаем жуткую формулу в пару операций!" И ощущение теперь как будто облом испытал ))) Конечно это учебный материал и тема другая и всё охватить невозможно... Всё так конечно. Но всё же очень жаль. Такая была возможность красиво закончить!
@Gnevistj
Жыл бұрын
Спасибо за столь развернутый комментарий, очень рад что вам понравилось =)) В свою защиту скажу - что моя цель в этом видео была показать работу формулы линейной интерполяции, и именно поэтому я ее вводил без всяческих преобразований - для наглядности =))) И уж в своих дорогих зрителях я уверен, что раскрыть скобки и выполнить часть действий вручную, перед записью их в программу, они сумеют и без моей помощи =)))) З.Ы. как хорошо, что вы не видели программы от моих французских коллег, там даже я за валидол хватаюсь, хотя сам тот еще лентяй по части математики =))))))))) И ничего, все работает, все довольны, и никого не выгоняют =)))))))
@SaihoS1
Жыл бұрын
@@Gnevistj Ну понятно, понятно ))) Я на самом деле прекрасно понимаю что без сучка и задоринки с первого раза не сделать такой материал. Всегда есть что улучшить. Пусть моим конструктивным вкладом будет эта формула (с учётом замены 1024 на 1023): 0,244379277*X-100 Только не пугайтесь что коэффициент при X имеет много знаков после запятой. Это он так несуразно выглядит без округления в десятичной системе, а в двоичной сущие пустяки: 0,001111101 Всего-то 9 двоичных разрядов после запятой. Так что представления LONG хватает с запасом для вашей задачи. А ещё дорогое умножение на этот коэффициент следует заменить на несколько дешёвых действия (2 сложения, 2 сдвига, инверсию и инкремент). Ну и конечно в двоичной системе работать приятнее ибо деление на степени двойки это сдвиг - работа с фиксированной точкой просто песня. Получается что в основных вычислениях нам даже аппаратное умножение не нужно! Этим приемам и впрямь можно отдельный выпуск посвятить. Всё просто, но не очевидно, как все любят )))
@Gnevistj
Жыл бұрын
Вот кстати хорошая идея! Подумаю, и сделаю выпуск по части оптимизации математики. Но, сразу - из опыта скажу - если программа пишется на один раз, или исходники остаются только "у себя", то конечно можно поковыряться и как следует оптимизировать ее; но если исходные коды отдаются клиенту, который имеет свою собственную службу АСУ - то мое глубокое ИМХО, что лучше формулы вводить "как есть", пускай машина сама все скобки раскрывает - люди потом спасибо скажут, и не раз, ибо им и так в чужом коде разобраться не всегда легко, а тут еще киш-миш с авторской методикой умножения =))))))
4-20мА тоже мериется через делитель.
"Здравствуйте, кстати" более уместно звучало бы где-нибудь на 5-той минуте )
В каких участках их ДНК находится ошибка!)))) Ору просто, красавчик! (Я не про внешность если что)
При рассказе про миллиамперы у меня флешбеки - Ебаная пожарка, как она вынесла мозг на работе, с такими токами эти особенные люди линию на скрутках собирают)
Уж если кто спасет мир от необдуманного использования датчика, то только Чак Норрис. 🤣
SPS УВАЖУХА
+
Странно что все комментарии положительные, видео трут, видимо и этот сотрут. В плане ПЛК возможно такие подходы и норм, но микроконтроллеры уже так как лет 20 не программируют. Любой контроллер поддерживает знаковые числа, вы никогда не задумывались почему перевод из знаковых в беззнаковые делается так, а не скажем добавление единицы слева? А это для того чтобы знаковые и беззнаковые числа считались на одном алу. Так что это только лень разработчиков языка, на си все ВСЕГДА поддерживается. Также уже тонна контроллеров аппаратно считает float и даже double, например stm32H7. И опять же в С/С++ это прекрасно поддерживается потому что это базовые фичи компилятора. Вообщем соболезную не окрепшим умам которые решат изучать программирование микроконтроллеров использую данные подходы и данные методы.
Есть два вопроса. - Почему используется 1024, а не 1023? - Не совсем ясно как происходит математика с отрицательным числом. Т. е. как получить отрицательное число это понятно. Но ведь МК все равно "не знает", что это число отрицательное, он же "думает", что там записано 4 294 966 796, а не -500.
@SaihoS1
Жыл бұрын
1024 это косяк, а что МК думает про содержимое переменной это не важно. Главное мы знаем как он обрабатывает переполнение при сложении и пользуемся этим. Дополнительный код для того и придуман чтобы пользуясь переполнением реализовать вычитание с помощью сложения.
@Gnevistj
Жыл бұрын
@Артем Полянчук , да, 1024 - это мой косяк, зарапортовался вначале, так и пошло-поехало сквозь все видео - до самого момента загрузки видео на ютуб не сообразил. Такие ошибки свойственны не только новичкам, но и старичкам, как видите =)))) Естественно, везде нужно читать 0-1023. По поводу отрицательных чисел - все правильно сказал @SaihoS1 , рекомендую пересмотреть мой выпуск про память ЭВМ, в нем довольно подробно рассмотрен механизм работы с отрицательными числами =)
@artemdavinci
Жыл бұрын
@@Gnevistj Благодарю ;)
@artemdavinci
Жыл бұрын
@@Gnevistj Да, пересмотрел и вспомнил. Действительно все очень просто))
Я блин часа два понимал , а все дело в 4( условный ноль ) , и шкалировонии
Коты не грызут кАбели??? Ещё как грызут!!! Особо, когда у них зубы меняются. Мой- все шнуры от зарядок погрыз! Теперь все шнурки в разноцветных термоусадках. Чиненые - паянные😅
@Gnevistj
Жыл бұрын
В прокатном цеху моего родного завода было довольно много котов - их все подкармливали, и суровые ребята с линии, и веселые девчонки из ОТК. В один прекрасный день, начальник цеха (видимо встав не с той ноги), потребовал безобразиЁ прекратить, котов с территории выдворить. Узнав об этом приказе электрослужба цеха напряглась. Коты же удалились, так как их перестали кормить, и начали гонять; но самый шухер, ожидаемо, начался пару-тройку недель спустя - длительные простои то на одном, то на другом прокатном стане - обнаглевшие крысы повадились грызть кабеля в неслыханных масштабах - и компьютерные сети АСУ, и прочие контрольники, избегая неведомым образом силовые кабели. После недельного шухера негласным приказом коты были возвращены на территорию цеха, прикормлены, и погрызание кабелей резко прекратилось =))))
@mikesaiganov4535
Жыл бұрын
@@Gnevistj Из двух зол выбрали меньшее 😄👍
@deniskhakimov
11 ай бұрын
Мой британец несколько раз перегрызал кабель от любимой клавиатуры. А всё потому, что когда он был мелким, часто с ним играл "хвостом" от компьютерной мышки или кабелем для наушников. Каждый раз из-за этого у меня стопорилась работа. Представьте себе: вам - менеджеру проектов из мск - в обед звонит _погроммист_ и сообщает, что сегодня ещё даже не принимался за работу, т.к. "кот прогрыз кабель от клавиатуры" 😆
В институте бы также объясняли!!! А то на лекции быстрее в сон загонит, чем чему то научишься)))
@Gnevistj
Жыл бұрын
На лекциях главное - не храпеть =))))))) Все зависит от преподавателя. Видел и таких, кто настолько увлекательно рассказывает с примерами из жизни, что даже придя к нему на лекцию после ночной смены слушаешь затаив дыхание, и сна как не бывало; а бывают что монотонно прочел конспект сонной аудитории, и усе =))))
Xmax (да и вообще максимальное значение по АЦП), в данном случае, должно быть 1023. Да, у вас 1024 значения (состояния), но максимальное числовое - 1023. Вы никогда не получите на входе 1024 (ну или 256 для 8 бит). Так вы теряете в точности. Такая ошибка есть в 99.9% случаев работы с АЦП.
Нууукааанешна! Не грызут коты кабели, ага...
@Gnevistj
10 ай бұрын
Коты грызут кабели на производстве только в индивидуальном порядке, и строго согласно наряду-допуску! =)))) А вот крысы - грызут в промышленных масштабах, без смс и регистрации =))))))))
@LookThroughTheButt
10 ай бұрын
@@Gnevistj я так полагаю, что наряд-допуск для кота - это пределы терпения его хозяев? )))
Это в каком МК АЦП дает 0-1024? 11 битное ацп? ай-яй-яй!
@Gnevistj
Жыл бұрын
Где-то здесь же в комментариях я уже извинялся за эту неточность =)) Так бывает, когда снимаешь и монтируешь видео по ночам =))))))
Формула для маленьких детей увлёкшимся ардуинкой.. Но если уже говорите о промышленных датчиках, то практически никто в здравом уме, линейной интерполяцией пользоваться не будет. Большие дяди юзают експоненту, так как прямые линии еллектронные компоненты рисуют лишь в мурзилке.
@Gnevistj
Жыл бұрын
Нда, я удивлен. Вроде взрослый уже дядя, а экспоненту применял всего несколько раз в жизни =))) На прошлой неделе подключал весовой преобразователь к ПЛК по аналогу 0-10В, и о чудо - сошкалировав его в двух точках он оказался абсолютно линейным (ради интереса шкалировал при 20% и 70% от полного веса); так и ниже рекомых 20%, и выше 70% - чистая линия. И да, именно по этой формуле работает линеаризация в моей программе, т.к. штатный LIN_TRAFO ругается, когда выходишь за нижнюю/верхнюю точку диапазона. Суть в чем - если производитель преобразователя/датчика сказал что он линеен - значит он линеен, мерь хоть вдоль, хоть поперек. Пользуйте качественные датчики! =)))) Или вы о схемотехническом косяке Сименса в его аналоговых модулях 6ES7-331-..., когда "зарезали" часть диапазона, и вместо шкалы от минус 32767 до плюс 32767, имеют шкалу -27649 до 27649? А, это дааа, маркетинг гениальный без сомнения - тщательно задокументировать свой косяк, и выдавать за преимущество - мол вот, у всех "загибается по экспоненте, а у нас есть специальное срэдство!" =)))) Но главный прикол в том, что у всех ничего не загибается, и для проверки сего чуда хватит обычного поцика, тестера, и небольшой программки, с той самой формулой линейной интерполяции =)))))
@alexorlovecky6662
Жыл бұрын
@@Gnevistj Пользуемся более чем "нормальными" датчиками, но все которые мне попадались - от датчиков глубокого вакуума, расхода газа и тд, до показаний выходной мощности различных ВЧ генераторов - все имеют экспоненту. На самых крутых, даже есть "линеаризаторы" - подстройка офсета нуля, коэффициент(крутизна) и та самая экспонента. Последняя типа настроенна с завода и с пломбой, пломбу срываешь - гарантия слетает. А иной раз, сам датчик может выдавать высокую точность, но производитель в паспорте её специально занижает - на случай если криворукий настраивал. Крутить нельзя - гарантия снимется, по гарантии менять тоже, потому что для производителя всё в допуске.
@alexorlovecky6662
Жыл бұрын
@@Gnevistj Да что далеко ходить, элементарно смотрим на таблицу ходовых хромель-алюмель тип К термопар: температура 0 по Цельсию - 0в, температура 100 4.096в. Используем линейную интерполяцию и считаем 50 градусов: получаем 2.048в. А потом идём и сверяем с таблицей, а там херак 2.023 вольт.
@Gnevistj
Жыл бұрын
@@alexorlovecky6662 , вы не совсем внимательно просмотрели выпуск - термином "датчик" я назвал законченное устройство со стандартным сигналом на выходе; если говорить о термопарах, и о любви людей сэкономить на "спичках", то да, приводим на входной блок ПЛК сигнал напрямую с термопары, а дальше мучимся и пишем все ручками, в т.ч. компенсацию холодного спая с термостатированием блока ПЛК =))) Кстати, в линеаризации нелинейных датчиков (сорри за микротавтологию =))) прекрасно работает эта же формула - пример показан в этом же видео =)
Стабилитрон это уже саботаж. При делителе 10к удачи вам с компенсацией тока утечки в стабилитроне. Нарисовали бы bat54s (утечка при 5в 100 нА) сбросив излишки на шины питая как собственно и положено. "Никакой погрешности не внесут" ))))))))))). типовой стабилитрон на 5,1в 10мка при 1в обратный ток. при 2,5 уже 100мка. подумаешь +1в на 1/2 FSR. (испытанно на своей шкуре после вот таких "решений" по защите аналоговых входов). Не надо так.
местами истеричные эмоции, пугает.
@Gnevistj
Жыл бұрын
Не пугайтесь! =))))
🙂👍🇺🇦
К чёрту условности!!! К чёрту схемы, формулы и красные стрелочки!!! Объясняй в Алкашах и бутылках Водки на квадратный дюйм!!!! Так гораздо доходчивей )))))))))))))))
уколотый молодец.😊
Подскажи пожалуйста. Не могу допереть, как сделать следующее. На порту во время разговора меняется состояние, 1 разговора нет, 0 разговор есть и нужно если в течение скажем 15 сек разговора нет, т.е. на порту лог.1, завершить работу программы. Контроль переключения порта в бесконечном цикле это понятно. Но не могу понять как написать, чтобы не хватала у меня первое состояние лог. 1, т.е. короткой паузы при разговоре и контролировало наличие этой единицы 15 сек, а если лог.1 был меньше этого времени, то сбрасывало время и программа продолжала работать, покуда лог. 1 именно будет на порту присутствовать 15 сек, а не цеплялась за первую же паузу.
Как автор создаёт такую уютную атмосферу? Харизма + немного магии?
@Gnevistj
Жыл бұрын
Только тссс! Никому! Ведь магия вне Хогвартса запрещена =))))))