ScratchDuino, ArduBlock и Arduino. Управление моторами 2 (ШИМ) scar169 / 16.12.2015 Продолжим тему работы с моторами. Ранее мы рассмотрели управление работой моторов с помощью подачи сигналов на цифровые порты, отвечающие за питание моторов и направление движения. Теперь можно задуматься над вопросом – как регулировать скорость движения робота. Ведь с помощью сигналов на цифровые порты можно только включать или выключать питание на моторе. А если надо двигаться медленно? Когда мы ставим такую проблему перед учащимися, освоившими первый способ управления моторами, они логично предлагают ввести в движение маленькие паузы между включением моторов. Величиной этих пауз можно регулировать общую скорость движения. Попробуем. Используем ArduBlock для создания такой программы. Пример: программа, при выполнении которой робот едет вперед 1 секунду, но эта секунда складывается из 10 движений по 0,05 с и 10 пауз по 0,05 c. В конце программы - длинная пауза перед следующим повторением. Я уже писал в 1 части, что в Ардуино не предусмотрена команда остановки процессов, поэтому используем либо пустой цикл (показывал пример ранее), либо длинную паузу между повторами. Мне нравится пауза (главное подобрать длину, чтобы хватало на отладку программы))), но правильнее, наверное, пустой цикл. Кстати, чтобы вновь запустить программу на исполнение можно на самой плате Ардуино нажать кнопочку перезагрузки. Но вернемся к нашему роботу. После загрузки программы в устройство мы видим, как двигается робот, можем сравнить с нормальным (непрерывным) движением. Далее обычно идет серия заданий с изменением длины пауз между включениями мотора, чтобы отрегулировать скорость движения. Обычно все эти пробы проще выполнять в коде Ардуино, быстрее. И вот уже после этой работы мы начинаем разговор о том, что в Ардуино существует уже готовый механизм ограничения скорости движения – ШИМ (широтно-импульсная модуляция). Принцип его работы похож на рассмотренный нами пример – команды на мотор-редуктор подаются с паузами, определяющими скорость вращения вала двигателя. Разумеется, все несколько сложнее, для желающих - хороший видеоурок по моторам и сервам в Ардуино, где не только про ШИМ рассказывается, но и про отличия моторов и сервов. Но суть та же: На рисунке видно, что при подаче сигнала в аналоговом виде, мы просто меняем энергию, подаваемую в единицу времени, регулируя ширину импульсов. По рисунку видно пределы управляющего сигнала, его величина может меняться от 0 до 255. При этом в случае ScratchDuino управление мотор-редукторами в этом режиме осуществляется через аналоговые порты А5 и А6 для левого и правого мотора соответственно. Напомню схему: Пример задачи: Робот должен двигаться вперед 2 секунды. Скорость движения зададим сигналом на порты А5 и А6 равным 90. Продолжая параллельно с использованием ArduBlock анализировать код Arduino, стоит акцентировать внимание на том, что в коде появилась новая функция analogWrite(), которая нужна тогда, когда необходимо передавать не двоичное цифровое значение (либо 1, либо 0), а 8-ми разрядное значение в диапазоне от 0 до 255. Эта функция, так же, как функция digitalWrite(), принимает в круглых скобках два параметра. Первый – это номер контакта. Вторым параметром будет являться значение от 0 до 255. Ну вот и почти все. Далее можно менять подаваемые значения, найти минимальное, при котором робот двигается (у меня с 4 пальчиковыми батареями это было около 70), дать 255 и убедиться, что это максимальная скорость робота. Далее интересны эксперименты с разными значениями, подаваемыми на два мотора. Например - 90 и 255, начинается движение по окружностям, можно исследовать, от чего зависит радиус. В предыдущих выпусках:ScratchDuino.Робоплатформа и Scratch ScratchDuino. Робоплатформа на СПО. Установка ScratchDuino. Робоплатформа на СПО. Первый запуск ScratchDuino. Робоплатформа на СПО. Соединение по BluetoothScratchDuino. Робоплатформа на СПО. Датчик светаScratchDuino. Робоплатформа на СПО. Датчик касания. ScratchDuino. Робоплатформа на СПО. Датчик линии ScratchDuino -2015. Новости проектаScratchDuino.Робоплатформа и ArduBlockScratchDuino - новые горизонты с ArduBlockScratchDuino и ArduBlock. Используем цифровые порты, добавляем "фары" - сигнализаторы.ScratchDuino, ArduBlock и Arduino. Управление моторами 1ScratchDuino, ArduBlock и Arduino. Снимаем показания с датчиковScratchDuino. Методика и дополнения.ScratchDuino - учителю. Рабочая программа по внеурочной деятельности в 5 классе.ScratchDuino - родителям. Творим вместе с детьми. ВведениеScratchDuino. Лаборатория.ScratchDuino. Лаборатория. Введение. ArduBlock Scratchduino arduino ШИМ робототехника