Физика тока для программиста

Аналоговый и цифровой сигнал, ШИМ (PWM)

Аналоговый сигнал

Как мы уже рассмотрели, Arduino всего лишь управляет своими дверьми - пинами, выпуская или запуская электроны. Исходящие или входящие электроны несут в себе некоторый сигнал, который в технике делится на два вида: аналоговый и цифровой. И эти сигналы несут в себе некоторую информацию.

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

аналоговый сигнал

Так работает аналоговая техника - мы измеряем, сохраняем, передаём по проводам напряжение, соответствующее некоторым данным об окружающем мире.

Цифровой сигнал

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

1. Напряжение близко к нулю. Это считается низким уровнем (LOW) напряжения, или логической нулём.

2. Напряжение близко к 5 вольтам. Это считается высоким уровнем (HIGH), или логической единицей.

Все остальные случаи сводятся к этому. Есть некоторое пороговое значение, например 2,7 вольт. Всё, что ниже порога считается нулём, а всё, что выше - единицей. Скажем, если на вход поступило два вольта - это ещё ноль, а три вольта уже единица.

Цифровой сигнал, в отличие от аналогового очень устойчив к помехам. Если аналоговый сигнал получит помеху в 0,5 вольта, то это уже приведёт к значительным искажениям. А в цифровом сигнале искажения должны быть более существенны, чтобы изменить ноль на единицу или наоборот.

цифровой сигнал

Приведём пример такого цифрового устройства, например, обычная кнопка, которая имеет всего два состояния: либо ноль, либо единица.

Аналого-цифровой преобразователь

Микроконтроллер может работать только с цифровыми сигналами. Поэтому в нём стоит специальное устройство, которое называется Аналого-цифровой преобразователь (АЦП). Через него проходят сигналы с выходов, которые отмечены большой буквой А, например, А3.

Когда мы отправляем команду измерить аналоговый сигнал на этих входах, он поступает в АЦП, и тот преобразует его в цифровой сигнал, используя для этого 10 бит. С помощью этого количества бит можно сохранить число от 0 до 1023, где 0 соответствует нулю вольт, а 1023 соответствует максимальному напряжению (по умолчанию это напряжение питания контроллера, то есть 5 вольт).

АЦП

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

Широтно-импульсная модуляция

Проблема АПЦ в том, что оно работает только в одну сторону, то есть Arduino не способна формировать аналоговый сигнал, а может выдать только цифровой на выходах. А хотелось бы, присоединив светодиод, управлять его яркостью, или, например, скоростью вращения мотора.

Но на самом деле этим устройствам и не требуется изменение напряжения. Более того, светодиод очень чувствителен к таким изменениям, ему нужен строго определённый уровень электронов на входе. Если будет больше - он скорее сгорит, чем увеличит яркость. Да и мотор наиболее эффективен при определённом уровне.

Чтобы всё-таки сделать их управляемыми используют так называемую широтно-импульсную модуляцию (ШИМ или PWM).

Идея ШИМ в том, чтобы выдавать ток не постоянно, а короткими импульсами определённой ширины. Соотношение ширины импульса к ширине паузы определяет как раз уровень яркости на светодиоде, или скорость вращения мотора. Например, если мы зададим, что ширина импульса равна ширине паузы, то это будет соответствовать половине яркости. А если ширина имульса будет занимать 75% времени то и мощность будет соответственно 75%.

ШИМ

Генератор ШИМ работает только на определённых портах, которые подписаны как PWM, и позволяет использовать градацию от 0 до 255.

По сути ШИМ является некоторой заменой аналогового сигнала, поэтому для её записи используют команду analogWrite.