В электронике сигналы делят на: аналоговые, дискретные и цифровые. Начнем с того, что все, что мы чувствуем, видим, слышим в большинстве своем является аналоговым сигналом, а то, что видит процессор компьютера – это цифровой сигнал. Звучит не совсем понятно, поэтому давайте разбираться с этими определениями и с тем как один вид сигналов преобразовывается в другой.
Содержание статьи
Типы сигналов
В электрическом представлении аналоговый сигнал, судя по его названию, является аналогом реальной величины. Например, вы чувствуете температуру окружающей среды постоянно, на протяжении всей жизни. Нет никаких перерывов. При этом вы чувствуете не только два уровня «горячо» и «холодно», а бесконечное число ощущений, которые описывают эту величину.
Для человека «холодно» может быть по разному, это и осенняя прохлада и зимний мороз, и легкие заморозки, но не всегда «холодно» это отрицательная температура, как и «тепло» — не всегда положительная температура.
Отсюда следует, что у аналогового сигнала две особенности:
1. Непрерывность во времени.
2. Число величин сигнала стремится к бесконечности, т.е. аналоговый сигнал нельзя точно поделить на части или проградуировать, разбив шкалу на конкретные участки. Способы измерения – основаны на единице измерений, и их точность зависит лишь от цены деления шкалы, чем она меньше, тем точнее измерение.
Дискретные сигналы – это сигналы, которые представляют собой последовательность отчетов или измерений какой-либо величины. Измерения таких сигналов не непрерывны, а периодичны.
Попытаюсь объяснить. Если вы установили термометр где-нибудь он измеряет аналоговую величину – это следует из вышеописанного. Но вы, фактически следя за его показаниями, получаете дискретную информацию. Дискретный – значит отдельный.
Например, вы проснулись и узнали, сколько градусов на термометре, в следующий раз вы на него посмотрели на градусник в полдень, и третий раз вечером. Вы не знаете, с какой скоростью изменялась температура, равномерно, или резким скачком, вы знаете только данные в тот момент времени, который наблюдали.
Цифровые сигналы – это набор уровней, типа 1 и 0, высокий и низкий, есть или нет. Глубина отражения информации в цифровом виде ограничена разрядностью цифрового устройства (набора логики, микроконтроллера, процессора etc.) Получается что для хранения булевых данных он подходит идеально. Пример, можно привести следующий, для хранений данных типа «День» и «Ночь», достаточно 1 бита информации.
Бит – это минимальная величина представления информации в цифровом виде, в нём может храниться только два типа значений 1 (логическая единица, высокий уровень), или 0 (логический ноль, низкий уровень).
В электронике бит информации представляется в виде низкого уровня напряжения (близкое к 0) и высокого уровня напряжения (зависит от конкретного устройства, часто совпадает с напряжением питания данного цифрового узла, типовые значения – 1.7, 3.3. 5В, 15В).
Все промежуточные значения между принятыми низким и высоким уровнем являются переходной областью и могут не обладать конкретным значением, в зависимости от схемотехники, как устройства в целом, так и внутренней схемы микроконтроллера (или любого другого цифрового устройства) могут иметь разный переходный уровень, например для 5-тивольтовой логики за ноль могут приниматься значения напряжения от 0 до 0.8В, а за единицу от 2В до 5В, при этом промежуток между 0.8 и 2В – это неопределенная зона, фактически с ее помощью отделяется ноль от единицы.
Чем более точные и ёмкие значения нужно хранить, тем больше нужно бит, приведем таблицу-пример с отображением в цифровом виде четырёх значений времени суток:
Ночь – Утро – День – Вечер
Для этого нам нужно уже 2 бита:
Аналогово-цифровое преобразование
В общем случае аналогово-цифровым преобразованием называется процесс перевода физической величины в цифровое значение. Цифровым значением является набор единиц и нолей воспринятых обрабатывающим устройством.
Такое преобразование нужно для взаимодействия цифровой техники с окружающей средой.
Так как аналоговый электрический сигнал повторяет своей формой входной сигнал, он не может быть записан в цифровом виде «так как есть» поскольку он имеет бесконечное число значений. Примером можно привести процесс записи звука. Он в первичном виде выглядит так:
Он представляет собой сумму волн с различными частотами. Которые, при разложении по частотам (подробнее об этом смотрите преобразования Фурье), так или иначе, можно приблизить к похожей картинке:
Теперь попробуйте это представить в виде набора типа «111100101010100», довольно сложно, не так ли?
Другим примером необходимости преобразования аналоговой величины в цифровую, является её измерение: электронные термометры, вольтметры, амперметры и прочие измерительные приборы взаимодействую с аналоговыми величинами.
Как происходит преобразование?
Сначала посмотрите на схему типового преобразования аналогового сигнала в цифровой и обратно. Позже мы к ней вернемся.
Фактически это сложный процесс, который состоит из двух основных этапов:
1. Дискретизация сигнала.
2. Квантование по уровню.
Дискретизация сигнала это определения промежутков времени, на которых измеряется сигнал. Чем короче эти промежутки – тем точнее измерение. Периодом дискретизации (Т) называется отрезок времени от начала считывания данных до его конца. Частота дискретизации (f) – это обратная величина:
fд=1/Т
После считывания сигнала происходит его обработка и сохранение в память.
Получается, что за время, которое считываются и обрабатываются показания сигнала, он может измениться, таким образом, происходит искажение измеряемой величины. Есть такая теорема Котельникова и из нее вытекает такое правило:
Частота дискретизации должны быть как минимум в 2 раза больше чем частота дискретизируемого сигнала.
Это скриншот из википедии, с выдержкой из теоремы.
Для определения численного значение необходимо квантование по уровню. Квант – это определенный промежуток измеряемых значений, усреднено приведенный к определенному числу.
X1…X2=Xy
Т.е. сигналы величиной от X1 до X2, условно приравнивается к определенному значению Xy. Это напоминает цену деления стрелочного измерительного прибора. Когда вы снимаете показания, зачастую вы их равняете по ближайшей отметке на шкале прибора.
Так и с квантованием по уровню, чем больше квантов, тем более точные измерения и тем больше знаков после запятой (сотых, тысячных и так далее значений) они могут содержать.
Точнее сказать число знаков после запятой скорее определяется разрядностью АЦП.
На картинке изображен процесс квантования сигнала с помощью одного бита информации, как я описывал выше, когда при превышении определенного предела принимается значение высокого уровня.
Справа показано квантование сигнала, и запись в виде двух бит данных. Как видите, этот фрагмент сигнала разбит уже на четыре значения. Получается, что в результате плавный аналоговый сигнал превратился в цифровой «ступенчатый» сигнал.
Количество уровней квантования определяется по формуле:
Где n — количество разрядов, N — уровень квантования.
Вот пример сигнала разбитого на большее число квантов:
Отсюда очень хорошо видно, что чем чаще снимаются значения сигнала (больше частота дискретизации), тем точнее он измеряется.
На этой картинке изображено преобразование аналогового сигнала в цифровой вид, а слева от оси ординат (вертикальной оси) запись в цифровом 8-битном виде.
Аналогово-цифровые преобразователи
АЦП или Аналогово-цифровой преобразователь может выполняться в виде отдельного устройства или быть встроенным в микроконтроллер .
Ранее в микроконтроллеры, например семейства MCS-51, не содержали в своем составе АЦП, использовалась для этого внешняя микросхема и возникала необходимость писать подпрограмму обработки значений внешней ИМС.
Сейчас они есть в большинстве современных микроконтроллеров, например AVR AtMEGA328, который является основой большинства популярных плат Ардуино , он встроен в сам МК. На языке Arduino чтение аналоговых данных осуществляется просто – командой AnalogRead(). Хотя в микропроцессоре, который установлен в той же не менее популярной Raspberry PI его нет, так что не все так однозначно.
Фактически существует большое число вариантов аналогово-цифровых преобразователей, у каждого из которых есть свои недостатки и преимущества. Описывать которые в пределах этой статьи не имеет особого смысла, так как это большой объём материала. Рассмотрим лишь общую структуру некоторых из них.
Самым старым запатентованным вариантом АЦП, является патент Paul M. Rainey, «Facsimile Telegraph System,» U.S. Patent 1,608,527, Filed July 20, 1921, Issued November 30, 1926. Это 5-ти битный АЦП прямого преобразования. Из названия патента приходят мысли о том, что использование этого прибора было связано с передачей данных через телеграф.
Если говорить о современных АЦП прямого преобразования имеют следующую схему:
Отсюда видно, что вход представляет собой цепочку из компараторов , которые на выходе своем выдают сигнал при пересечении какого-то порогового сигнала. Это и есть разрядность и квантование. Кто хоть немного силен в схемотехнике, увидел этот очевидный факт.
Кто не силен, то входная цепь работает таким образом:
Аналоговый сигнал поступает на вход «+», на все сразу. На выходы с обозначением «-» поступает опорное напряжение, которое раскладывается с помощью цепочки резисторов (резистивного делителя) на ряд опорных напряжений. К примеру, ряд для этой цепи выглядит наподобие такого соотношения:
Urefi=(1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16)*Uref
В скобках через запятую указано, какую часть от общего опорного напряжения Uref подают на вход каждого входного напряжения.
Т.е. каждый из элементов имеет два входа, когда напряжение на входе со знаком «+» превышает напряжение на входе со знаком «-», то на его выходе появляется логическая единица. Когда на положительном (неинвертирующем) входе напряжение меньше, чем на отрицательно (инвертирующем), то на выходе – ноль.
Напряжение делиться таким образом, чтобы входное напряжение разбить на нужное количество разрядов. При достижении напряжения на входе на выходе соответствующего элемента появляется сигнал, схема обработки выводит «правильный» сигнал в цифровом виде.
Такой компаратор хорош скоростью обработки данных, все элементы входной цепи срабатывают параллельно, основная задержка этого вида АЦП формируется из задержки 1 компаратора (все же одновременно параллельно срабатывают) и задержки шифратор.
Однако есть огромный недостаток параллельных цепей – это необходимость большого числа компараторов, для получения АЦП высокой разрядности. Чтобы получить, например 8 разрядов, нужно 2^8 компараторов, а это целых 256 штук. Для десятиразрядного (в ардуино 10-разрядный АЦП, кстати, но другого типа) нужно 1024 компаратора. Судите сами о целесообразности такого варианта обработки, и где он может понадобиться.
Есть и другие виды АЦП:
последовательного приближения;
дельта-сигма АЦП.
Преобразование аналогового сигнала в цифровой нужно для считывания параметров с аналоговых датчиков. Есть отдельный вид цифровых датчиков, они представляют собой либо интегральные микросхемы, например DS18b20 – на его выходе уже цифровой сигнал и его можно обрабатывать любыми микроконтроллерами или микропроцессорами без необходимости применения АЦП, или аналоговый датчик на плате на которой уже размещен свой преобразователь. У каждого типа датчиков есть свои плюсы и минусы, такие как помехоустойчивость и погрешность измерений.
Знание принципов преобразование обязательно для всех кто работает с микроконтроллерами, ведь не в каждой даже современной системе встроены такие преобразователи, приходится использовать внешние микросхемы. Для примера можно привести такую плату, разработанную специально под GPIO-разъём Raspberry PI, с прецизионным АЦП на ADS1256.
Обучение программированию и созданию устройств на микроконтроллерах AVR
У электронщиков, специализирующихся на проектировании микроконтроллерных устройств, существует термин «быстрый старт » . Относится он к случаю, когда надо в короткий срок опробовать микроконтроллер и заставить его выполнять простейшие задачи.
Цель состоит в том, чтобы, не углубляясь в подробности, освоить технологию программирования и быстро получить конкретный результат. Полное представление, навыки и умения появятся позже в процессе работы.
Освоить работу с микроконтроллерами в режиме «быстрый старт», научиться их программировать и создавать различные полезные умные электронные устройства можно легко с помощью обучающих видеокурсов Максима Селиванова в которых все основные моменты разложены по полочкам.
Методика быстрого изучения принципов работы с микроконтроллерами основывается на том, что достаточно освоить базовую микросхему, чтобы затем достаточно уверенно составлять программы к другим ее разновидностям. Благодаря этому первые опыты по программировании микроконтроллеров проходят без особых затруднений. Получив базовае знания можно приступать к разработке собственных конструкций.
На данный момент у Максима Селиванова есть 4 курса по созданию устройств на микроконтроллерах, построенные по принципу от простого к сложному.
1. Программирование микроконтроллеров для начинающих
Курс для тех, кто уже знаком с основами электроники и программирования, кто знает базовые электронные компоненты, собирает простые схемы, умеет держать паяльник и желает перейти на качественно новый уровень, но постоянно откладывает этот переход из-за сложностей в освоении нового материала.
Курс замечательно подойдет и тем, кто только недавно предпринял первые попытки изучить программирование микроконтроллеров, но уже готов все бросить от того, что у него ничего не работает или работает, но не так как ему нужно (знакомо?!).
Курс будет полезен и тем, кто уже собирает простенькие (а может и не очень) схемы на микроконтроллерах, но плохо понимает суть того как микроконтроллер работает и как взаимодействует с внешними устройствами.
2. Программирование микроконтроллеров на языке С
Курс посвящен обучению программирования микроконтроллеров на языке Си. Отличительная особенность курса — изучение языка на очень глубоком уровне. Обучение происходит на примере микроконтроллеров AVR. Но, в принципе, подойдет и для тех, кто использует другие микроконтроллеры.
Курс рассчитан на подготовленного слушателя. То есть, в курсе не рассматриваются базовые основы информатики и электроники и микроконтроллеров. Но, что бы освоить курс понадобятся минимальные знания по программированию микроконтроллеров AVR на любом языке. Знания электроники желательны, но не обязательны.
Курс идеально подойдет тем, кто только начал изучать программирование AVR микроконтроллеров на языке С и хочет углубить свои знания. Хорошо подойдет и тем, кто немного умеет программировать микроконтроллеры на других языках. И еще подойдет обычным программистам, которые хотят углубить знания в языке Си.
3. Создание устройств на микроконтроллерах на языке С
Этот курс для тех, кто не хочет ограничиваться в своем развитии простыми или готовыми примерами. Курс отлично подойдет тем, кому важно создание интересных устройств с полным пониманием того, как они работают. Курс хорошо подойдет и тем, кто уже знаком с программированием микроконтроллеров на языке Си и тем, кто уже давно программирует их.
Материал курса прежде всего ориентирован на практику использования. Рассматриваются следующие темы: радиочастотная идентификация, воспроизведение звука, беспроводной обмен данными, работа с цветными TFT дисплеями, сенсорным экраном, работа с файловой системой FAT SD-карты.
4. Программирование дисплеев NEXTION
Дисплеи NEXTION представляют собой программируемые дисплеи с тачскрином и UART для создания самых разных интерфейсов на экране. Для программирования используется очень удобная и простая среда разработки, которая позволяет создавать даже очень сложные интерфейсы для различной электроники буквально за пару вечеров! А все команды передаются через интерфейс UART на микроконтроллер или компьютер. Материал курса составлен по принципу от простого к сложному.
Этот курс рассчитан на тех, кто хотя бы немного имеет опыта в программировании микроконтроллеров или arduino. Курс отлично подойдет и для тех, кто уже пытался изучать дисплеи Nextion . Из курса вы узнаете много новой информации, даже если думаете, что хорошо изучили дисплей!
Приближается осень, а вместе с ней наступит День знаний! Это отличная пора для новых дел, идей и начинаний и самое время для обучения. Используйте это время с пользой для прокачки своих знаний!
Полный курс обучения программированию микроконтроллеров со скидкой: Все 4 курса со скидкой
Информация, опубликованная на данном веб-сайте, представлена исключительно в ознакомительных целях, за применение этой информации администрация сайта ответственности не несет.