Используем Ардуино вместо осциллографа
В этой небольшой статье мастер-самодельщик расскажет нам, как можно использовать Ардуино в качестве осциллографа. Понятно, что все функции осциллографа Ардуино не заменит, но ему нужно было протестировать 555 микросхему.
В качестве бонуса эта установка может показать, как резисторы и конденсаторы работают при последовательном или параллельном подключении.
Инструменты и материалы:
-Arduino uno;
-555 микросхема;
-Перемычки;
-Резисторы (подойдут любые номиналы от 1 кОм до 1 МОм);
-Электролитический конденсатор;
-Макетная плата;
-Proto Shield для Arduino (необязательно);
Шаг первый: о конденсаторах
В проекте используются электролитические конденсаторы. Электролитические конденсаторы имеют полярность, поэтому важно, какой электрод подключен к положительному напряжению, а какой — к земле. На этих конденсаторах более длинный электрод является «анодом» и должен быть подключен к положительному напряжению. Более короткий электрод является «катодом» и должен быть подключен к нулевому напряжению (земле). Алюминиевый корпус конденсатора имеет маркировку в виде большой полосына катодной стороне. И на этой полосе обычно есть большие минусовые знаки. На картинке представлены три конденсатора, один с большой белой полосой. Если мы подключим конденсатор в обратном направлении или подключим большее напряжение, чем номинальное для этого конденсатора, то есть большая вероятность, что он «взорвется».
Шаг второй: подключение
Для этого проекта мастер сделал все соединения с помощью платы расширения и макетной платы. На первом изображении мы видим таймер 555 с названиями контактов и их нумерацией. Здесь важно отметить, что на микросхеме есть круглая выемка между контактами 1 и 8. На следующих рисунках показан чертеж проводки, а затем, одно за другим, сделанные соединения:
Изображение 1: Распиновка таймера 555
Изображение 2: Подключение к 555
Изображение 3: Подключение заземления (GND) и 5 Вольт Arduino к контактам 1, 4 и 8 555
Изображение 4: Добавление резисторов A и B
Изображение 5: Добавление конденсатора и его 3 соединений: анод к контактам 2 и 6, катод к GND
Изображение 6: Подключение выходного контакта 3 к цифровому контакту 2 (D2) Arduino
Более подробно подключение можно посмотреть на видео.
Шаг третий: принцип работы
Когда Arduino включен, ток проходит от его контакта 5В через оба резистора для зарядки конденсатора. Это требует времени в зависимости от номинала резисторов и конденсатора. Когда заряд конденсатора достигнет 2/3 от источника 5 В, выходной контакт таймера 555 станет низким, то есть он будет находиться на уровне 0 вольт. И в этот момент конденсатор начнет пропускать ток через резистор B. Опять же, это требует времени, зависящего от конденсатора и резистора B. Когда напряжение снизится до 1/3 от 5 В, выходной контакт переключится на 5В (высокий), и цикл начнется снова с зарядки конденсатора. Результатом должен быть регулярный повторяющийся сигнал высокого-низкого уровня от этого чипа, который может быть использован в электронике, когда необходим сигнал синхронизации.
Шаг четвертый: отображение значений на Arduino
Чтобы иметь возможность видеть работу различных комбинаций резисторов и конденсаторов, мастер использовал Arduino для отображения времени на своем компьютере. Эта функция в программном обеспечении Arduino IDE называется последовательным монитором (см. рисунок со всеми номерами) и представляет собой способ связи между Arduino и компьютером во время работы Arduino.
Первые две переменные кода являются логическими переменными, что означает, что они могут быть равны только нулю или единице, которые в данной ситуации являются синонимами низкого или высокого напряжения, или синонимом 0В или 5В. Мастер назвал эти две переменные «state» и «lastState» (“состояние” и “последнее состояние”) и использует их для отслеживания изменений выходного контакта. Аналогично, для отслеживания времени используются две переменные, называемые «currentTime» и «lastTime» (“Текущее время” и “Последнее время”). И, наконец, еще одна переменная используется для сохранения продолжительности времени. Эта переменная называется «timeDifference» (“Разница во времени”), так как она будет разницей между текущим и прошлым временем. Это переменная типа “float” («с плавающей запятой»), что означает, что она может отслеживать десятичные дроби.
По сути, код работает так: если выходной контакт таймера 555 изменяется с низкого на высокий или с высокого на низкий, активируется функция, называемая “Отметка времени”. Это тип функции, называемый “подпрограммой обслуживания прерываний”, потому что, независимо от того, где Arduino находится в ее коде, функция временной метки будет запущена, а затем Arduino вернется к исходной точке. Во время временной метки Arduino обновит переменную “состояние” в соответствии с тем, является ли выходной вывод высоким или низким, и обновит переменную “Текущее время” с помощью функции, называемой “micros”. Это встроенная функция программного обеспечения Arduino, которая «возвращает» количество микросекунд с момента последнего включения или сброса Arduino. Теперь, когда “состояние” и “Текущее время” обновлены, Arduino вычислит разницу во времени и выведет ее на последовательный монитор компьютера. Затем он обновляет значения “lastState” и “lastTime” в соответствии с “состоянием” и “текущим временем” соответственно, чтобы они были готовы к следующему изменению выходного pin-кода.
Код можно скачать ниже.
Timing555TimerWith_microsec_SerialMontor.ino
Шаг пятый: прогнозирование
Есть формулы, которые можно выполнить, чтобы предсказать, сколько секунд будет отсчет времени. Они полезны, если задано конкретное время и нужно с чего начать подбор номинала. Формула предназначена для расчета высокого периода, количество времени, в течение которого выходной контакт находится в высоком положении (5В).
Высокий период = 0,7 * (Резистор А + Резистор В) * Конденсатор
Другая формула предназначена для расчета низкого периода, когда выход низкий (0В).
Низкий период: = 0,7 * (Резистор B) * (Конденсатор)
Для того, чтобы эти уравнения работали, единицы измерения должны быть в Омах для сопротивления и в Фарадах для конденсатора. Так, например, 10 кОм и 10 мкФ будут составлять 10 000 Ом и 0,00001 Ф. Итак, пример с двумя резисторами на 10 кОм и конденсатором емкостью 10 мкФ, Высокий период должен составлять 0,14 секунды, а Низкий-0,07 секунды.
Шаг шестой: эксперименты
Теперь, когда все настроено, можно поэкспериментировать с различными резисторами и конденсаторами, чтобы проверить, соответствует ли измеренное время расчетам.
Что интересно в этой схеме, можно увидеть эффект от установки нескольких резисторов или конденсаторов либо для резистора A или B, либо для конденсатора. Можно соединить компоненты последовательно или параллельно и посмотреть, как конденсаторы «ведут себя» относительно резисторам. Более подробно в видео.
Шаг седьмой: визуализация уровня напряжения с помощью Arduino
Поскольку используется интегрированная среда разработки Arduino, также можно воспользоваться ее последовательным плоттером. Это основная функция построения графиков программного обеспечения, которая может показать, как напряжение изменяется с течением времени. Используя приведенный ниже небольшой код, можно построить график напряжения на выходном контакте, подключив его к выводу A0 Arduino, и посмотреть, как поэтапно изменяется выход.
Другой интересный эффект, — это заряд и разрядка конденсатора . Напряжение здесь изменяется экспоненциально, где сначала оно меняется быстро, но скорость его изменения замедляется по мере зарядки или разрядки конденсатора.
Для проверки подключаем анод конденсатора (который подключен к контакту 6 из 555) к контакту Arduino A0 и отображается классический рисунок “зуб пилы”, характерный для конденсаторов. Затем, чтобы открыть «Последовательный плоттер», переходим в раздел “Инструменты” и нажимаем «Последовательный плоттер». Откроется окно, и мы должны увидеть изменение напряжения на графике.
На этом все. Как видим с помощью данной схемы можно подобрать необходимый номинал резисторов и конденсаторов к таймеру 555.
Источник (Source)
Источник: