среда, 22 июня 2016 г.

3.3. Запись аналогового сигнала

Урок: 3.3. Запись аналогового сигнала

Транскрибация урока: Логично предположить, что изменить яркость свечения мы можем, изменяя напряжение на светодиоде, но дело в том, что большинство Ардуин, в том числе Уно, Леонардо, Искра, не могут делать произвольное напряжение на своем выводе. Если мы можем считать аналоговый сигнал с помощью аналого-цифрового преобразователя, то записать его мы не можем, потому что цифроаналогового преобразователя на данных платах нету. Но, для этого есть обходной путь. Мы будем использовать пины, которые поддерживают, так называемую, широтно-импульсную модуляцию или pulse-width modulation, если по-английски, соответственно, сокращается это как ШИМ, или PWM. В чем смысл PWM? Поскольку все пины Ардуино цифровые, мы можем на них получать только низкое или высокое напряжение. Ну, вот, примерно так, как я рисую. Как же работает эта широтно-импульсная модуляция? При одинаковой частоте мы меняем скважность сигнала, то есть мы можем делать короткие промежутки высокого уровня сигнала и длинные низкого. Или наоборот, длинные промежутки высокого уровня и короткие промежутки низкого. При этом, повторю, частота у них остается одинаковой. Крайние случаи широтно-импульсной модуляции — это полностью, всегда высокий сигнал или наоборот — всегда низкий уровень сигнала. Да, то есть 0 вольт, здесь у нас снова 5 вольт, 0 вольт, 5, 0, 5, 0. И вот эту вот скважность мы можем программно изменять в пределах от 0 до 255, то есть от 0 до 100 %. Как это нам может помочь с его светодиодом? Естественно, он будет включаться и выключаться ровно на те промежутки времени, когда уровень сигнала высокий — 5 вольт. За счет чего же меняется яркость? На самом деле, яркость у него всегда постоянная, но частота моргания человеческим глазом воспринимается как изменение яркости, то есть, когда он горит 100 % времени, он горит максимально ярко. Когда он горит только половину времени, мы не различаем глазом мигания, но света поступает меньше, нам кажется, что светодиод горит менее ярко. Этим же принципом мы можем пользоваться и в других приложениях, например, через две недели мы будем крутить коллекторные моторы, и регулировать их скорость с помощью той же самой широтно-импульсной модуляцией. Как же нам воспользоваться этой широтно-импульсной модуляцией? Не любой цифровой пин Ардуино умеет работать с ШИМ. Те пины, которые умеют, обычно помечены тильдочками, бывает еще продублировано надписью PWM. Для Ардуино Уно – это пины 3, 5, 6, 9, 10 и 11, а Искра, как и Леонардо, поддерживает ШИМ на большем количестве пинов, это 3, 5, 6, 9, 10, 11 и еще 13. То есть мы можем подключить 7 устройств, которые будут работать с использованием ШИМ. Сейчас я верну на место тройку, как порядочный человек, отключу сначала питание, а светодиод возьму в виде модуля, тоже тройку модуля, очень яркий светодиод, им лучше даже в глаза не светить, и подключу его к третьему пину. Естественно, соблюдая порядок проводов, черный у нас – земля, красный – питание и желтый – сигнал. А теперь составлю маленький скетч, который будет транслировать показания дальномера на светодиод, менять его яркость. Давайте посмотрим, что это за тестовый скетчик. В начале я сделал два макроопределения для пинов светодиода и дальномера, затем в Setup я установил связь с компьютером, на случай, если я снова захочу там почитать данные и сделал пин светодиода выходом. Затем в Loop я каждый раз создаю переменную distance, в начале каждого прохода, в которую сразу же сохраняю то, что прочитали с помощью аналокрид на пине, куда подключен дальномер. Затем делаю вывод в последовательный порт этой самой переменной, а затем пользуюсь новой для нас функцией analogWrite. Вы уже, наверное, догадались, что это будет именно она, она позволяет сделать как бы аналоговый сигнал на выходе, то есть сымитировать аналоговый сигнал с помощью ШИМ. Она принимает точно так же, как и digitalWrite два параметра, это номер пина, соответственно, это пин с тильдочкой, который поддерживает широтно-импульсные модуляции, и значение, которое нужно туда записать. В случае с digitalWrite у нас были всего два варианта – high и low, то есть только включить и выключить напряжение на пине, здесь же, как я уже вам рассказал, мы можем регулировать скважность ШИМа, и тоже я уже упомянул, передавать ей можем значения от 0 до 255. Как вы видите, здесь я воспользовался уже известной нам функцией map, которая превращает значение из одного диапазона в значение из другого диапазона. С аналогового входа мы можем считать значения от 0 до 1023, здесь я их указал, как начало и конец входного диапазона, а на выход нам нужно подать значения от 0 до 255. Теперь, давайте мы этот скетч загрузим и посмотрим, как светодиод будет менять свою яркость. Ну, как мы и предполагали, светодиод горит ярче, когда препятствие в виде моей руки подносится к дальномеру ближе. Теперь вы умеете получать два вида сигнала — цифровой и аналоговый и точно так же записывать два вида сигнала — цифровой и аналоговый. Ну, условно аналоговый, который, вы теперь знаете, как устроен. Хочу обратить ваше внимание на то, что, когда вы используете функцию tom для работы с пьезодинамиком, с пищалкой, функции широтно-импульсной модуляции работают некорректно или вовсе не работают на 3 работают некорректно или вовсе не работают на 3 вы начали пищать и перестали регулировать яркость светодиода на этих пинах.

Часть: Видео

Модуль: Цель обнаружена

Описание модуля: На этой неделе вы научитесь ощупывать пространство дальномерами, делать визуализацию на компьютере, существенно дополните свои возможности в программировании и наконец-то сделаете устройство с движущимися частями.

Курс: Строим роботов и другие устройства на Arduino. От светофора до 3D-принтера

Описание курса: На протяжении тысячелетий люди усовершенствовали орудия труда, изучали силы природы и подчиняли их себе, использовали их энергию для работы машин, а в прошлом веке создали машины, которые могут управлять другими машинами. Теперь создание устройств, которые взаимодействуют с физическим миром, доступно даже школьнику.

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

Пройдя этот курс, вы сможете создавать устройства, которые считывают данные о внешнем мире с разнообразных датчиков, обрабатывают информацию, получают и отправляют данные на ПК, в Интернет, на мобильные устройства, управляют индикацией и движением. Создание устройств будет включать проектирование, изучение компонентов, сборку схем, написание программ, диагностику. Попутно с созданием самих устройств вы сделаете визуализацию на ПК, создадите веб-страницу, которую будет демонстрировать одно из ваших устройств, а также разберетесь с устройством и работой FDM 3D-принтера.

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

Курс не требует специальных знаний у слушателей, доступен даже ученикам старших классов средней школы. Плюсом будут навыки программирования и владение английским языком на уровне чтения технической документации, однако обязательным это не является.

Весь курс посвящен практике и самым лучшим решением для вас будет раздобыть электронику, повторять показанные примеры и экспериментировать самостоятельно.

Программа:
  • Неделя 1 Один старый и много новых знакомых
  • Неделя 2 Контроллер изучает мир
  • Неделя 3 Цель обнаружена
  • Неделя 4 Как полить цветок из другого города
  • Неделя 5 Мобильный робот
  • Неделя 6 Как создать новый предмет за час
Преподаватель: Алексей Перепелкин (1), Дмитрий Савицкий (2)

Описание преподавателя: (1) Алексей Перепёлкин занимается развитием робототехники на базе ЛИОТ МФТИ. В 2012 году открыл для себя новое захватывающее чувство – когда устройство, которое сам построил и запрограммировал, работает. Свернул с финансовой дорожки и создал кружок робототехники для подростков. Готовил их к соревнованиям. Стал посещать конференции, а затем проводил мастер-классы для тех, кто тоже хочет организовать занятия. Совместно с коллегами в 2013 году разработал новые соревнования – Робопрофи – для конкурса Робот для жизни и провел их. В 2014 году впервые провел Arduino-номинацию на фестивале Робофест, а для российского финала Russian Robot Olympiad 2014 сделал творческую категорию. С тех пор эти соревнования стали регулярными. Летом 2014 провел двухнедельную мастерскую в детском лагере Никола-Ленивца, а затем преподавал в выездной школе, посвященной программированию и робототехнике, которую провели ABBYY и Яндекс. В 2015 году стал руководителем направления робототехники в GoTo Camp, выездных школах, где участники создали десятки проектов, от прототипов умных домов и операторских тележек до робота-бубниста и принтера для незрячих. В 2014 году с коллегами начал проект Роболабы: мероприятия для школьников и студентов, где участники параллельно решают усложненные задачи, а затем проводят рефлексию сделанной работы и оценивают чужие в ходе серии мероприятий.

(2) Физик, научный сотрудник, выпускник МФТИ. Запустил кружок робототехники в 2011 году. Рассказал Алексею Перепелкину о том, как здорово вести кружок робототехники. Рассказал об этом еще целому ряду людей. Побеждал со своими командами на соревнованиях. Проводил проектную работу с участниками исследовательской выездной школы МКШ с 2013 года, где руководил реализацией физических и робототехнических проектов, например, «Вслед за солнцем», в котором изучалась эффективность динамической ориентации солнечных батарей на солнце. Вместе с коллегами разрабатывал и был судьей Робопрофи. Участвовал в подготовке проекта Роболабы. Вновь пришел в МФТИ для проведения факультативного курса «Основы создания киберфизических устройств»

Организатор: Лаборатория инновационных образовательных технологий МФТИ (1), Лаборатория инновационных образовательных технологий МФТИ (2)

Описание организатора: (2) Московский физико-технический институт (неофициально известный как МФТИ или Физтех) является одним из самых престижных в мире учебных и научно-исследовательских институтов. Он готовит высококвалифицированных специалистов в области теоретической и прикладной физики, прикладной математики, информатики, биотехнологии и смежных дисциплин. Физтех был основан в 1951 году Нобелевской премии лауреатами Петром Капицей, Николаем Семеновым, Левом Ландау и Сергеем Христиановичем. Основой образования в МФТИ является уникальная «система Физтеха»: кропотливое воспитание и отбор самых талантливых абитуриентов, фундаментальное образование высшего класса и раннее вовлечение студентов в реальную научно-исследовательскую работу. Среди выпускников МФТИ есть Нобелевские лауреаты, основатели всемирно известных компаний, известные космонавты, изобретатели, инженеры.

Категория: Компьютерные науки

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

Тематика: Разработка ПО

Материал: