Вычислительные схемы
Когда кто-то упоминает слово «компьютер», то обычно на ум приходит цифровое устройство. Цифровые схемы представляют числовые величины в двоичном формате: последовательности единиц и нулей представлены множеством транзисторных схем, работающих в режимах насыщения и отсечки. Тем не менее, аналоговые схемы также могут использоваться для представления числовых величин и выполнения математических вычислений с использованием сигналов переменного напряжения, вместо дискретных состояний включено/выключено.
Вот простой пример сравнения двоичного (цифрового) представления с аналоговым представлением для числа «двадцать пять».
Цифровые схемы сильно отличаются от схем, построенных на аналоговых принципах. Цифровые вычислительные схемы могут быть невероятно сложными, и вычисления, чтобы получить окончательный ответ, часто должны выполняться последовательными «шагами» подобно тому, как человек с карандашом и бумагой будет пошагово выполнять арифметические вычисления. Аналоговые вычислительные схемы, напротив, довольно просты, в сравнении с цифровыми, и выполняют свои вычисления непрерывно в режиме реального времени. Однако использование аналоговой схемы для представления чисел имеет недостаток: неточность. Цифровая схема, показанная выше, представляет число двадцать пять точно. Аналоговая схема, показанная выше, может быть или может не быть точно откалибрована до 25,000 вольт, и значение подвержено «дрейфу» и ошибке.
В приложениях, где точность не критична, аналоговые вычислительные схемы очень практичны и элегантны. Ниже показано несколько схем на операционном усилителе для выполнения аналоговых вычислений.
Каждая из этих схем может использоваться в качестве модуля для создания схемы, способной на несколько вычислений. Например, предположим, что нам нужно было вычесть определенную долю одной переменной из другой переменной. Комбинируя схему деления на константу со схемой вычитателя, мы могли бы получить нужную схему:
Устройства, называемые аналоговыми компьютерами, обычно использовались в университетах и инженерных лабораториях, где десятки схем на операционных усилителях можно было «соединить» вместе съемными перемычками для моделирования математических выражений, обычно чтобы промоделировать какой-либо физический процесс, основные уравнения которого были известны. Цифровые компьютеры сделали аналоговые компьютеры полностью устаревшими, но аналоговые вычислительные схемы не могут быть побеждены цифровыми с точки зрения чистой элегантности и экономии необходимых компонентов.
Аналоговые вычислительные схемы, использующие конденсаторы в петле обратной связи операционного усилителя, превосходны в выполнении математических операций интегрирования и дифференцирования по времени. Однако, чтобы полностью понять работу и применение этих схем, мы должны сначала понять значение этих фундаментальных концепций математического анализа. К счастью, применение схем на операционных усилителях к реальным задачам, связанным с вычислениями, служит отличным средством для обучения основам математического анализа. По словам Джона И. Смита, взятым из его книги «Modern Operational Circuit Design»:
"Схемы на операционных усилителях, использующие интегральное исчисление (один из разделов математического анализа), в процессе разрушают барьер для его понимания." (стр. 4)
Мнение Смита об образовательной ценности аналоговых схем как инструмента обучения математическому анализу не уникально. Рассмотрим мнение инженера Джорджа Фокса Ланга в статье «Analog was not a Computer Trademark!», которую он написал для журнала «Sound and Vibration»:
"Создание реального физического объекта (схемы), управляемого определенным набором уравнений и взаимодействующего с ним, дает уникальное понимание этих математических операций. Нет лучшего способа развить «интуитивное понимание» взаимодействия физики и математики, чем провести опыты с таким взаимодействием. Аналоговый компьютер был мощным междисциплинарным обучающим инструментом; его устаревание оплакивается многими педагогами в самых разных областях." (стр. 23)
Дифференцирование – это первая операция, обычно изучаемая студентами. Проще говоря, дифференцирование определяет мгновенную скорость изменения одной переменной в зависимости от ее связи с другой переменной. В схемах аналогового дифференциатора независимой переменной является время, и поэтому скорости изменения, с которыми мы имеем дело, являются скоростями изменения для электрического сигнала (напряжения или тока) относительно времени.
Предположим, что мы должны были измерить положение автомобиля, движущегося по прямому пути (без поворотов), относительно его начальной точки. Назовем это значение x. Если автомобиль движется с такой скоростью, что его расстояние от «старта» увеличивается с течением времени постоянным образом, его положение будет отображаться на графике в виде линейной функции (прямая линия).
Если бы мы рассчитали производную положения автомобиля от времени (то есть определили скорость изменения положения автомобиля относительно времени), мы бы получили величину, представляющую скорость автомобиля. Функция дифференцирования представлена дробной нотацией d/d, поэтому при дифференцировании положения (x) по времени (t) мы обозначаем результат (производную) как dx/dt;
Для линейного графика x от времени производная положения (dx/dt), иначе более часто называемая скоростью, будет горизонтальной линией, не меняющей свое значение. Производная математической функции может быть графически понята как ее крутизна при построении на графике, и здесь мы можем видеть, что график положения (x) имеет постоянную крутизну, что означает, что его производная (dx/dt) должна быть постоянной во времени.
Теперь предположим, что расстояние, пройденное автомобилем, с течением времени экспоненциально увеличивается: то есть он начинает свое движение медленными перемещениями, но с каждым последующим периодом времени преодолевает всё большее расстояние. Тогда мы увидим, что производная от положения (dx/dt), также известная как скорость (v), будет не постоянной во времени, а будет увеличиваться.
Высота точек на графике скорости соответствует скорости изменения, или крутизне, точек в соответствующие моменты времени на графике положения:
Какое всё это имеет отношение к аналоговым электронным схемам? Ну, если бы у нас был аналоговый сигнал напряжения, представляющий положение автомобиля (представьте себе огромный потенциометр, ползунок которого был прикреплен к автомобилю, и который формировал бы напряжение, пропорциональное положению автомобиля), мы могли бы подать этот сигнал на схему дифференциатора и получить схему, которая непрерывно рассчитывает скорость автомобиля, отображая результат с помощью вольтметра, подключенного к выходу схемы дифференциатора:
Вспомним из предыдущей главы, что схема дифференциатора выдает напряжение, пропорциональное скорости изменения входного напряжения во времени (d/dt). Таким образом, если входное напряжение изменяется во времени с постоянной скоростью, выходное напряжение будет иметь постоянное значение. Если автомобиль движется таким образом, что пройденное им расстояние с течением времени нарастает с постоянной скоростью, то это означает, что автомобиль движется с постоянной скоростью, и схема дифференциатора будет выдавать постоянное напряжение, пропорциональное этой скорости. Если пройденное расстояние автомобиля с течением времени изменяется нестабильно, выходной сигнал дифференциатора также будет непостоянным, но всегда на уровне, представляющем скорость изменения входного сигнала во времени.
Обратите внимание, что вольтметр, регистрирующий скорость, (на выходе схемы дифференциатора) подключен к выходу операционного усилителя в «противоположной» полярности. Это связано с тем, что показанная схема дифференциатора инвертирует сигнал: выдает отрицательное напряжение для положительной скорости изменения входного напряжения. Если мы хотим, чтобы вольтметр регистрировал положительное значение скорости, он должен быть подключен к операционному усилителю так, как показано на рисунке. Каким бы непрактичным ни было подключение гигантского потенциометра к движущемуся объекту, такому как автомобиль, идея должна быть понятна: выполняя электронным способом математическую функцию дифференцирования, мы получаем сигнал, представляющий скорость.
Студенты изучают дифференцирование с помощью формул. Однако для этого необходимо, чтобы было известно уравнение, описывающее исходный график. Например, студенты изучают, как взять функцию, такую как y=3x, и найти ее производную по x (d/dx), просто манипулируя уравнением, получив в результате 3. Мы можем проверить точность этих манипуляций, сравнив графики двух функций:
Нелинейные функции, такие как y=3x2, также можно дифференцировать с помощью формул. В этом случае производная y=3x2 равна 6x.
Однако в реальной жизни мы часто не можем описать поведение любого физического события простым уравнением, таким как y=3x, и поэтому дифференцирование с помощью формул, изучаемое студентами по математическому анализу, может быть невозможно применить к физическому измерению. Если бы кто-то хотел определить производную от нашего гипотетического положения автомобиля (dx/dt = скорость) с помощью формул, он сначала должен был бы получить уравнение, описывающее положение автомобиля в зависимости от времени, на основе измерений положения, взятых из реального эксперимента – почти невозможная задача, если автомобиль не эксплуатируется в тщательно контролируемых условиях, что приводит к очень простому графику положения. Однако схема аналогового дифференциатора, используя поведение конденсатора по отношению к напряжению, току и времени i = C(dv/dt), естественным образом дифференцирует по времени любой реальный сигнал и может в любой момент выдавать сигнал, соответствующий скорости (dx/dt). После записи сигнала положения автомобиля и выходного сигнала дифференциатора с помощью графического регистратора или другого устройства сбора данных, оба графика естественно представляются для проверки и анализа.
Мы можем развить принцип дифференцирования еще на один шаг, применив его к сигналу скорости, используя еще одну схему дифференциатора. Другими словами, используем его для расчета скорости изменения скорости, которая, как мы знаем, является скоростью изменения положения. Какое практическое значение мы бы получили, если бы сделали это? Думайте об этом с точки зрения единиц измерения, которые мы используем для измерения положения и скорости. Если бы мы измеряли положение автомобиля от его начальной точки в километрах, то мы, вероятно, выразили бы скорость в единицах километры в час (dx/dt). Если бы мы дифференцировали скорость (измеренную в километрах в час) по времени, мы бы получили единицы километры в час в час. Вводные уроки физики обучают школьников поведению падающих предметов, измерению положения в метрах, скорости – в метрах в секунду, а изменения скорости – в метрах в секунду в секунду (или в метрах в секунду в квадрате, м/с2). Эта последняя величина называется ускорением: скорость изменения скорости во времени.
Выражение d2x/dt2 называется второй производной положения (x) по времени (t). Если бы мы добавили схему второго дифференциатора к выходу первого, последний вольтметр зарегистрировал бы ускорение.
Получая скорость из положения и ускорение из скорости, мы видим, что принцип дифференцирования очень показателен. Это не единственные физические измерения, связанные друг с другом таким образом, но они, пожалуй, самые распространенные. Другим примером реальных вычислений является связь между потоком жидкости (q) и объемом жидкости (v), накопленным в резервуаре с течением времени.
Устройство «датчик уровня», установленное в резервуаре для хранения воды, выдает сигнал, прямо пропорциональный уровню воды, который (если резервуар имеет постоянную площадь поперечного сечения по всей его высоте) прямо равен объему хранимой воды. Если бы мы взяли этот сигнал объема и дифференцировали его по времени (dv/dt), мы получили бы сигнал, пропорциональный потоку воды через трубу, несущую воду в резервуар. Схема дифференциатора, подключенная таким образом, чтобы принимать этот сигнал объема, будет генерировать выходной сигнал, пропорциональный потоку, возможно, заменяя собой устройство измерения потока («датчик потока»), установленное в трубе.
Возвращаясь к эксперименту с автомобилем, предположим, что наш гипотетический автомобиль был оснащен тахогенератором на одном из колес, генерирующим сигнал напряжения, прямо пропорциональный скорости. Мы могли бы дифференцировать этот сигнал для получения ускорения с помощью одной схемы, например:
По своей природе тахогенератор различает положение автомобиля относительно времени, генерируя напряжение, пропорциональное скорости изменения углового положения колеса с течением времени. Он дает нам необработанный сигнал, уже представляющий скорость, с единственным шагом дифференцирования, необходимым для получения сигнала ускорения. Конечно тахогенератор, измеряющий скорость, является гораздо более практичным примером автомобильного приборостроения, чем гигантский потенциометр, измеряющий его физическое положение, но при этом мы теряем измерение положения. Независимо от того, сколько раз мы дифференцируем, мы никогда не сможем определить положение автомобиля по сигналу скорости. Если процесс дифференцирования привел нас от положения к скорости и далее к ускорению, то, чтобы перейти от скорости к положению, нам нужно каким-то образом выполнить процесс, «обратный» дифференцированию. Такой математический процесс существует, и он называется интегрированием. Для выполнения этой функции интегрирования по времени может использоваться схема «интегратора».
Вспомним из предыдущей главы, что схема интегратора выдает напряжение, скорость изменения которого во времени пропорциональна величине входного напряжения. Таким образом, при постоянном входном напряжении выходное напряжение будет изменяться с постоянной скоростью. Если автомобиль движется с постоянной скоростью (постоянное напряжение, поступающее от тахометра на схему интегратора), то пройденное расстояние будет стабильно увеличиваться с течением времени, и интегратор будет выдавать стабильно изменяющееся напряжение, пропорциональное этому расстоянию. Если скорость автомобиля не является постоянной, так и скорость изменения во времени выходного сигнала схемы интегратора не будет постоянной, но выходное напряжение будет точно отражать величину расстояния, пройденное автомобилем в любой заданный момент времени.
Символ интегрирования выглядит как очень узкая буква «S» курсивом (∫). Уравнение, использующее этот символ, (∫v dt = x) говорит нам, что мы интегрируем скорость (v) по времени (dt) и получаем в результате положение (x).
Таким образом, мы можем выразить три измерения движения автомобиля (положение, скорость и ускорение) относительно скорости (v) так же легко, как и относительно положения (x).
Если бы к автомобилю был присоединен акселерометр, генерирующий сигнал, пропорциональный скорости ускорения или замедления, мы могли бы (гипотетически) получить сигнал скорости (первый шаг интегрирования) и сигнал положения (второй шаг интегрирования).
Таким образом, все три показателя движения автомобиля (положение, скорость и ускорение) могут быть выражены через ускорение.
Как вы могли подозревать, процесс интегрирования может быть вписан и применен и к другим физическим системам. Возьмите, например, резервуар и поток воды, показанные ранее. Если скорость потока является производной объема воды в резервуаре по времени (q = dv/dt), то мы также можем сказать, что объем является интегралом скорости потока по времени.
Если бы мы использовали прибор «датчик потока» (ДП) для измерения расхода воды, то путем интегрирования по времени мы могли бы рассчитать объем воды, накопленный с течением времени в резервуаре. Хотя теоретически для получения объема воды из ее скорости возможно использовать емкостную схему интегратора на операционном усилителе, механические и цифровые электронные устройства «интеграторов» больше подходят для длительных периодов времени, и их чаще можно найти в отрасли обработки и распределения воды.
Так же, как существуют методы дифференцирования с помощью формул, существуют и методы интегрирования с помощью формул, хотя они, как правило, более сложны и разнообразны. Однако применение интегрирования с помощью формул к реальной задаче, такой как ускорение автомобиля, всё еще зависит от наличия уравнения, точно описывающего измеренный сигнал – вещь, которую часто трудно или невозможно извлечь из измеренных данных. Однако электронные схемы интеграторов выполняют эту математическую функцию непрерывно, в режиме реального времени и для любой формы входного сигнала, обеспечивая тем самым мощный инструмент для ученых и инженеров.
При этом необходимо сказать о предостережениях относительно использования методов математического анализа для получения одного типа измерения из другого. Дифференцирование имеет нежелательную тенденцию к усилению «шума», обнаруженного в измеряемой переменной, поскольку шум, как правило, проявляется в виде частот, намного превышающих измеряемую переменную, а сигналы на высоких частотах по своей природе обладают высокими скоростями изменения во времени
Чтобы проиллюстрировать эту проблему, предположим, что мы получили ускорение автомобиля из сигнала скорости, полученного от тахогенератора с изношенными щетками или шинами коллектора. Точки плохого контакта между щеткой и коллектором вызовут кратковременные «провалы» в выходном напряжении тахогенератора, и подключенная к нему схема дифференциатора будет интерпретировать эти провалы как очень быстрые изменения скорости. Для автомобиля, движущегося с постоянной скоростью (без ускорений и замедлений) сигнал ускорения должен быть равен 0 вольт, но «шум» в сигнале скорости, вызванный неисправным тахогенератором, приведет к тому, что дифференцированный сигнал (ускорение) будет содержать «пики», неверно указывающие на краткие периоды высокого ускорения и замедления.
Напряжение шума, присутствующее в дифференцируемом сигнале, чтобы вызвать проблемы, не обязательно должно иметь значительную амплитуду: всё, что требуется, – это то, чтобы форма сигнала шума имела быстрое время нарастания или спада. Другими словами, любой электрический шум с высоким компонентом dv/dt будет вызывать проблемы при дифференцировании, даже если он имеет низкую амплитуду.
Следует отметить, что данная ошибка не является артефактом (особая ошибка измерительного/вычислительного инструмента) аналоговой схемы; вернее это присуще самому процессу дифференцирования. Независимо от того, как мы могли бы выполнить дифференцирование, «шум» в сигнале скорости будет неизменно искажать выходной сигнал. Конечно, если бы мы дифференцировали сигнал дважды, как мы делали для получения скорости и ускорения из сигнала положения, усиленный сигнал шума, выводимый схемой первого дифференциатора, будет снова усилен следующим дифференциатором, что усугубит проблему.
Интегрирование не страдает от этой проблемы, потому что интеграторы действуют как фильтры нижних частот, ослабляя высокочастотные входные сигналы. По сути, все высокие и низкие пики, возникающие в сигнале из-за шума, усредняются по времени, что приводит к уменьшению шумов в конечном результате. Тогда можно предположить, что мы могли бы избежать всех неприятностей, измеряя непосредственно ускорение и интегрируя этот сигнал для получения скорости; по сути, проводя вычисления в «обратном» порядке, как показано ниже.
К сожалению, эта методика может привести нас к другим трудностям, одной из которых является распространенный артефакт схем аналоговых интеграторов, известный как дрейф. Все операционные усилители имеют некоторую величину входного тока смещения, и этот ток будет вызывать накопление заряда на конденсаторе в дополнение к заряду, накапливаемому в результате сигнала входного напряжения. Другими словами, все схемы аналоговых интеграторов страдают от тенденции иметь «дрейф» своего выходного напряжения, даже когда нет абсолютно никакого входного напряжения, в результате чего со временем накапливается ошибка. Кроме того, неидеальные конденсаторы имеют тенденцию терять со временем свой накопленный заряд из-за внутреннего сопротивления, что приводит к «дрейфу» в сторону нулевого выходного напряжения. Эти проблемы являются артефактами аналоговой схемы и могут быть устранены с помощью цифровых вычислений.
Несмотря на артефакты схемы, при интегрировании одного измерения (например, ускорения) для получения другого (например, скорости) ошибки могут возникать просто из-за того, как работает интегрирование. Если точка калибровки «нуля» датчика необработанного сигнала не идеальна, он выдаст слабый положительный или отрицательный сигнал даже в условиях, когда он ничего не должен выводить. Рассмотрим автомобиль с неправильно откалиброванным акселерометром или акселерометром, находящимся под влиянием силы тяжести и обнаруживающим небольшое ускорение, не связанное с движением автомобиля. Даже при идеальном интегрирующем компьютере эта ошибка датчика приведет к накоплению ошибки интегратора, что приведет к выходному сигналу, указывающему на изменение скорости, когда автомобиль не разгоняется и не замедляется.
Как и в случае дифференцирования, эта ошибка также усугубляется, если интегрированный сигнал передаются на схему другого интегратора, поскольку «дрейфующий» выходной сигнал первого интегратора очень скоро будет представлять для следующего интегратора значительный положительный или отрицательный сигнал, подлежащий интегрированию. Поэтому при интегрировании сигналов с датчика следует проявлять осторожность: если настройка «нуля» датчика не идеальна, результат интегрирования будет дрейфовать, даже если сама схема интегратора является идеальной.
До настоящего момента единственные обсуждаемые ошибки интегрирования носили искусственный характер: они возникали из-за неидеальности схемотехники и датчиков. Также существует источник ошибки, присущий самому процессу интегрирования, и это проблема неизвестной постоянной. Начинающие изучать математический анализ знают, что всякий раз, когда функция интегрируется, в результат добавляется неизвестная константа (обычно представляемая как переменная C). Эту неопределенность легче всего понять, сравнивая производные нескольких функций, отличающихся только добавлением постоянного значения.
Обратите внимание, что все эти параболы (y = 3x2 + C) имеют одинаковую форму, отличаясь друг от друга только вертикальным смещением. Однако все они имеют одну и ту же производную функцию: y’ = (d/dx)( 3x2 + C) = 6x, поскольку все они имеют одинаковые скорости изменения (крутизны) в соответствующих точках вдоль оси x. Хотя это кажется вполне естественным и ожидаемым с точки зрения дифференцирования (разные уравнения имеют общую производную), обычно начинающим студентам это кажется странным с точки зрения интегрирования, поскольку для интеграла функции существует множество правильных ответов. Переход от уравнения к его производной дает только один ответ, но переход от этой производной обратно к исходному уравнению приводит нас к ряду правильных решений. В честь этой неопределенности формула функции интегрирования называет неопределенным интегралом.
Когда интегратор выполняет интегрирование по времени реального сигнала, выходной сигнал представляет собой сумму интегрирования входного сигнала по времени и начального значения произвольной величины, представляющего ранее существовавший выходной сигнал интегратора на момент начала интегрирования. Например, если я интегрирую скорость движения автомобиля в сторону от города по прямой линии, вычисляя, что постоянная скорость 50 километров в час в течение 2 часов даст расстояние (∫v dt) 100 километров, это не обязательно означает, что автомобиль будет через 2 часа на расстоянии 100 километров от города. Всё, что это говорит нам, – это то, что после 2 часов езды автомобиль будет дальше от города на 100 км. Фактическое расстояние от города после 2 часов езды зависит от того, насколько далеко от города был автомобиль, когда началось интегрирование. Если мы не знаем этого начального значения расстояния, мы не сможем определить точное расстояние автомобиля от города после 2 часов езды.
Эта же проблема возникает, когда мы для получения скорости интегрируем ускорение по времени.
В этой интегрирующей системе рассчитанная скорость автомобиля будет правильна только в том случае, если схема интегратора инициализируется нулевым выходным значением, когда автомобиль неподвижен (v = 0). В противном случае интегратор вполне мог бы выводить ненулевой сигнал для скорости (v0), когда автомобиль неподвижен, поскольку акселерометр не может определить разницу между стационарным состоянием (0 километров в час) и состоянием постоянной скорости (скажем, 60 километров в час, без изменений). Эта неопределенность в выходных данных интегратора присуща самому процессу интегрирования, а не является артефактом схемы или датчика.
Таким образом, если для какого-либо физического измерения требуется максимальная точность, лучше всего измерять эту переменную напрямую, а не вычислять ее по другим измерениям. Это не значит, что вычисления бесполезны. Наоборот, зачастую это единственное практическое средство для получения нужного измерения. Однако для того, чтобы получить точные измерения, следует понимать и соблюдать порядок вычислений.