Термистор имеет значение сопротивления «в покое» примерно 10 кОм, поэтому мы последовательно подключим его с резистором на 10 кОм, образуя делитель напряжения, подключенный между GND (Землей) и 5 В «Ардуино». Подключим контакт АО к центральной точке делителя.
Рис. А7. Схема соединения «Ардуино» с термистора на макетной плате
Для использования аналогового входа нет необходимости указывать это в setup. Давайте попробуем загрузить скетч, который считывает напряжение на выводах термистора, если напряжение превышает определенное значение, то светодиод будет включен или выключен. Мы также будем использовать последовательный порт для отображения значения, считываемого с датчика.
tone (контакт, частота, продолжительность)
Чтобы узнать, сколько миллисекунд включен «Ардуино» мы используем функцию millis(), которая возвращает переменную типа long (она может содержать целые числа, большие по величине, чем обеспечивает int). Присваиваемый номер растет до максимального значения (равного примерно пятьдесят дней), а затем снова начинается с нуля.
millis()
Можно получить более высокую точность с функцией micros(), которая работает в микросекундах. Чтобы определить длительность импульса на контакте, мы можем использовать функцию pulseIn(), которая возвращает число в миллисекундах. Если мы ожидаем импульс высокого уровня на контакте, то как только контакт приходит на высокий уровень, выполнение скетча приостанавливается в ожидании конца импульса. Мы можем обнаружить импульсы высокого или низкого уровня, а также установить время ожидания, так что, если по истечении некоторого времени импульс не переключается, pulseIn заканчивается, и программа может быть продолжена.
pulseIn(pin, value)
pulseIn (pin, value, timeout)
Приложение В Ардуиноскоп
Не каждый может позволить себе дорогой осциллограф, но многие из нас могут иметь «Ардуино» в ящике. Мы могли бы использовать его в сочетании с программным обеспечением для отображения графики, чтобы построить простой DIY-осциллограф. Этот инструмент очень ограничен по функциональности и обладает очень низкой производительностью, но, несмотря на эти ограничения, может быть очень полезным для «наблюдения» сигналов в цепи, даже очень приблизительным образом.
Принцип работы такого осциллографа прост: он использует один из аналоговых входов «Ардуино» для измерения сигнала быстрым образом. Измеренные значения затем посылаются к компьютеру с помощью последовательного порта. Программное обеспечение будет получать показания и переносить их на график.
Проект осциллографа с «Ардуино» является открытым.
Для его работы вам также необходим Processing, платформа, используемая для создания графики в Java. Processing также является открытой программой, которую можно скачать по адресу: http://www.processing.org.
Для установки вам прежде всего необходимо загрузить скетч «Ардуино» на плату, после чего можно закрыть «Ардуино» IDE. Скетч минимален. Достаточно прочитать значения, которые содержатся на аналоговом контакте (А0), и записать их в последовательный порт с помощью команды Serial.write(). В setup скетча скорость передачи данных установлена на 9600 бод; попробуем изменить ее для лучшего чтения. Важно установить такую же скорость в скетче Processing.
#define ANALOG_IN А0
void setup() {
Serial.begin(9600);
//Serial, begin(115200);
}
void loop() {
int val = analogRead(ANALOG_IN);
Serial.write(0xff);
Serial.write((val >> 8) & 0xff);
Serial.write(val & 0xff);
}
После загрузки прошивки оставим плату подключенной к компьютеру. Следующий шаг заключается в загрузке файла pmscope_display.pde в Processing, который написал Софиан Одри.
Открываем новое окно в Processing и вставляем код, который можно скачать по адресу http://bit.ly/elmaker_oscilloscopio. Processing должен быть хорошо знаком, поскольку это та же платформа, используемая для «Ардуино». Для выполнения скетча жмем на кнопку с треугольником, которую мы находим на панели инструментов. Однако перед запуском мы должны изменить настройки последовательного порта. Processing также содержит скетч с разделом setup(). В setup(). мы найдем следующую команду:
// Open the port that the board is connected to and use the
// same speed (9600 bps)
port = new Seria(this, Serial.list()[0], 9600);
Программа принимает список последовательных портов на компьютере и подключается к первому из списка… который, конечно, может быть не от «Ардуино»! Если вы видите какие-либо сообщения об ошибках или вообще ничего не видите, попробуйте изменить число в квадратных скобках. С 0 мы нацелены на первый порт из списка, попробуйте написать один или два и посмотреть, работает ли порт.
Для чтения показаний подключим Землю (GND) «Ардуино» с Землей испытываемой цепи, затем вставим перемычку в АО и подадим на нее исследуемый сигнал.
Рис. В1. Синусоидальный сигнал
Рис. В2. Треугольный сигнал
Начиная с первоначального проекта были разработаны другие, среди которых я отмечу: https://code.google.eom/p/arduinoscope/.
Этот вариант немного сложнее, потому что он требует установки двух библиотек в Processing, а также патча для «Ардуино». Интерфейс в Processing более полный, он может заморозить отображение сигналов, может считывать контакты, а также отображает напряжения в вольтах.
Краткий перечень производителей и дистрибьюторов электронных компонентов:
• Adafruit (http://www.adafruit.com/)
• Arduino (http://arduino.cc/) (http://arduino.ru/)
• BeagleBone (http://beagleboard.org/)
• DigiKey (http://www.digikey.ru/)
• Farnell (http://ru.farnell.com/)
• Mouser (https://ru.mouser.com/)
• OpenPicus (http://www.openpicus.com/)
• Raspberry Pi (http://www.raspberrypi.org/)