🔧 Конструирование • 💻 Программирование • 📏 Измерения
5 класс • Технология • 90 минут
👨🏫 Учитель: Ахметов Рустам
🏫 Школа: ГБОУ № 1362
📅 Дата: 2025-06-11
🎯 Миссия: Создать своего первого программируемого робота!
🚀 Наша миссия сегодня:
🎯 Результат урока:
👥 Работаем в парах:
1. Подключение мотора:
2. Программирование:
3. Алгоритмы:
🤖 Техническое задание: Создать робота, который может проехать точно заданное расстояние:
📏 Требования к точности:
🧠 Что нужно учесть:
⚡ Преобразование энергии в роботе:
Электрическая энергия → Магнитная энергия → Механическая энергия → Кинетическая энергия
🔋 Электрическая энергия:
🧲 Магнитная энергия:
⚙️ Механическая энергия:
🏃 Факторы, влияющие на движение:
🧰 Необходимые детали:
⚠️ Техника безопасности:
Шаг 1: Сборка шасси
Шаг 2: Установка мотора
Шаг 3: Установка колес
Шаг 4: Монтаж контроллера
📊 Схема подключения:
Контроллер Arduino:
+5V → Красный провод мотора
GND → Черный провод мотора
Pin 9 → Управляющий провод (ШИМ)
Дополнительно (для реверса):
Pin 7 → Направление 1
Pin 8 → Направление 2
🔍 Проверка подключения:
🧪 Алгоритм тестирования:
НАЧАЛО тестирования
Установить слабую мощность мотора
Включить мотор на 2 секунды
Выключить мотор на 1 секунду
Повторить 3 раза
КОНЕЦ тестирования
📏 Измерение параметров робота:
| Параметр | Измерение | Единицы |
|---|---|---|
| Диаметр колеса | ___ мм | мм |
| Расстояние между колесами | ___ мм | мм |
| Масса робота | ___ г | г |
| Длина робота | ___ мм | мм |
| Ширина робота | ___ мм | мм |
🧮 Расчет длины окружности колеса:
\[L = \pi \times d = 3.14 \times d \text{ (мм)}\]Пример: При диаметре колеса 56 мм:
\[L = 3.14 \times 56 = 175.84 \text{ мм}\]📝 Это означает: За один полный оборот колеса робот проедет ~176 мм
📊 Блок-схема алгоритма:
⭕ НАЧАЛО
↓
📥 Ввод: расстояние S
↓
🧮 Расчет времени: t = S / v
↓
📦 Включить мотор
↓
⏰ Ждать время t
↓
📦 Выключить мотор
↓
⭕ КОНЕЦ
🎯 Ключевая формула:
\[t = \frac{S}{v}\]где:
💻 Основной алгоритм движения:
ПРОГРАММА "Движение робота"
ПЕРЕМЕННЫЕ:
пин_мотора = 9
скорость_мотора = 150
НАЧАЛО
Инициализировать контроллер
Вывести "Робот готов к движению"
ЦИКЛ (бесконечный):
Движение_на_расстояние(30)
Ждать 3 секунды
Движение_на_расстояние(50)
Ждать 3 секунды
Движение_на_расстояние(100)
Ждать 5 секунд
КОНЕЦ ЦИКЛА
КОНЕЦ
ФУНКЦИЯ Движение_на_расстояние(расстояние):
Вывести "Движение на", расстояние, "см"
время = Рассчитать_время(расстояние)
Включить мотор с мощностью скорость_мотора
Ждать время секунд
Выключить мотор
Вывести "Движение завершено"
КОНЕЦ ФУНКЦИИ
ФУНКЦИЯ Рассчитать_время(расстояние):
скорость = 10.0 // см/с (экспериментальное значение)
ВОЗВРАТ расстояние / скорость
КОНЕЦ ФУНКЦИИ
📏 Алгоритм измерения скорости:
АЛГОРИТМ "Определение скорости робота"
НАЧАЛО
Подготовить измерительную ленту
Подготовить секундомер
Отметить стартовую линию
ДЛЯ каждой_мощности ОТ 50 ДО 255 ШАГ 50:
Установить мощность мотора = каждая_мощность
ДЛЯ измерение ОТ 1 ДО 3:
Поставить робота на стартовую линию
Запустить секундомер
Включить мотор
КОГДА робот проедет 100 см:
Остановить секундомер
Выключить мотор
Записать время в таблицу
КОНЕЦ КОГДА
КОНЕЦ ДЛЯ
Рассчитать среднее время
Рассчитать скорость = 100 / среднее_время
КОНЕЦ ДЛЯ
КОНЕЦ
📊 Таблица измерений скорости:
| Измерение | Мощность ШИМ | Время, с | Скорость, см/с |
|---|---|---|---|
| 1 | 50 | ___ | ___ |
| 2 | 100 | ___ | ___ |
| 3 | 150 | ___ | ___ |
| 4 | 200 | ___ | ___ |
| 5 | 255 | ___ | ___ |
💻 Псевдокод с настройкой параметров:
ПРОГРАММА "Точное движение робота"
СТРУКТУРА Конфигурация_робота:
диаметр_колеса = 56.0 // мм
базовая_скорость = 10.0 // см/с при ШИМ=255
стандартная_мощность = 150 // Обычная мощность
коэффициент_коррекции = 1.0 // Для точной настройки
КОНЕЦ СТРУКТУРЫ
ПЕРЕМЕННАЯ робот: Конфигурация_робота
ФУНКЦИЯ Калибровка_робота():
Вывести "=== КАЛИБРОВКА РОБОТА ==="
Вывести "Диаметр колеса:", робот.диаметр_колеса, "мм"
окружность = 3.14159 * робот.диаметр_колеса
Вывести "Окружность колеса:", окружность, "мм"
Вывести "Калибровка завершена"
КОНЕЦ ФУНКЦИИ
ФУНКЦИЯ Точное_движение(расстояние):
// Расчет времени с учетом мощности мотора
коэффициент_скорости = робот.стандартная_мощность / 255.0
реальная_скорость = робот.базовая_скорость * коэффициент_скорости
время_движения = (расстояние / реальная_скорость) * робот.коэффициент_коррекции
Вывести "Движение на", расстояние, "см, время:", время_движения, "с"
Включить мотор с мощностью робот.стандартная_мощность
Ждать время_движения секунд
Выключить мотор
КОНЕЦ ФУНКЦИИ
🎯 Основная формула:
\[t = \frac{S}{v}\]📝 Пример расчета для робота:
Дано:
Решение:
\[t = \frac{50}{12} = 4.17 \text{ с}\]💻 Алгоритм расчета:
ФУНКЦИЯ Расчет_времени_движения(расстояние, скорость):
время = расстояние ÷ скорость
время_в_миллисекундах = время × 1000
ВОЗВРАТ время_в_миллисекундах
КОНЕЦ ФУНКЦИИ
🔄 Расчет количества оборотов:
Формула:
\[N = \frac{S}{L} = \frac{S}{\pi \times d}\]где:
📝 Пример: Для движения на 500 мм с колесом диаметром 56 мм:
\[N = \frac{500}{3.14 \times 56} = \frac{500}{175.84} = 2.84 \text{ оборота}\]💻 Алгоритм расчета оборотов:
ФУНКЦИЯ Расчет_оборотов(расстояние_мм, диаметр_мм):
окружность = 3.14159 × диаметр_мм
количество_оборотов = расстояние_мм ÷ окружность
ВОЗВРАТ количество_оборотов
КОНЕЦ ФУНКЦИИ
🔧 Зависимость скорости от мощности ШИМ:
\[v_{факт} = v_{макс} \times \frac{P_{ШИМ}}{255}\]где:
💻 Алгоритм калибровки:
ФУНКЦИЯ Калибровка_скорости():
максимальная_скорость = Измерить_скорость_при_максимальной_мощности()
ДЛЯ мощность ОТ 50 ДО 255 ШАГ 25:
коэффициент = мощность ÷ 255
ожидаемая_скорость = максимальная_скорость × коэффициент
фактическая_скорость = Измерить_скорость(мощность)
коэффициент_коррекции = ожидаемая_скорость ÷ фактическая_скорость
Сохранить коэффициент для данной мощности
КОНЕЦ ДЛЯ
КОНЕЦ ФУНКЦИИ
📊 Учет факторов погрешности:
1. Инерция разгона и торможения:
\[t_{корр} = t_{расч} - t_{разгон} - t_{торможение}\]2. Проскальзывание колес:
\[S_{факт} = S_{теор} \times (1 - k_{проскальз})\]3. Влияние массы и трения:
\[v_{реальн} = v_{теор} \times k_{трение} \times k_{масса}\]💻 Алгоритм коррекции:
ФУНКЦИЯ Скорректированное_время(расстояние, базовое_время):
// Учет времени разгона (примерно 0.2с)
время_разгона = 0.2
// Учет времени торможения (примерно 0.1с)
время_торможения = 0.1
// Коррекция основного времени
скорректированное_время = базовое_время - время_разгона - время_торможения
// Минимальное время не может быть меньше 0.5с
ЕСЛИ скорректированное_время < 0.5 ТО
скорректированное_время = 0.5
КОНЕЦ ЕСЛИ
ВОЗВРАТ скорректированное_время
КОНЕЦ ФУНКЦИИ
📋 Подготовка к эксперименту:
🧰 Необходимое оборудование:
📐 Подготовка полигона:
🎯 Протокол испытаний:
АЛГОРИТМ "Испытание точности робота"
ДЛЯ каждое_расстояние ИЗ [30, 50, 100]:
Вывести "Тестирование движения на", каждое_расстояние, "см"
ДЛЯ попытка ОТ 1 ДО 3:
Поставить робота на стартовую линию
Запустить программу движения на каждое_расстояние
КОГДА робот остановился:
Измерить фактическое расстояние от старта
Записать результат в таблицу
Рассчитать погрешность
КОНЕЦ КОГДА
Вернуть робота на старт
Ждать 5 секунд перед следующей попыткой
КОНЕЦ ДЛЯ
Рассчитать среднее расстояние для данного задания
Рассчитать среднюю погрешность
КОНЕЦ ДЛЯ
📊 Результаты для расстояния 30 см:
| Попытка | Запрограммировано | Фактически | Погрешность см | Погрешность % |
|---|---|---|---|---|
| 1 | 30 см | ___ см | ___ | ___% |
| 2 | 30 см | ___ см | ___ | ___% |
| 3 | 30 см | ___ см | ___ | ___% |
| Среднее | 30 см | ___ см | ___ | ___% |
📊 Результаты для расстояния 50 см:
| Попытка | Запрограммировано | Фактически | Погрешность см | Погрешность % |
|---|---|---|---|---|
| 1 | 50 см | ___ см | ___ | ___% |
| 2 | 50 см | ___ см | ___ | ___% |
| 3 | 50 см | ___ см | ___ | ___% |
| Среднее | 50 см | ___ см | ___ | ___% |
📊 Результаты для расстояния 100 см:
| Попытка | Запрограммировано | Фактически | Погрешность см | Погрешность % |
|---|---|---|---|---|
| 1 | 100 см | ___ см | ___ | ___% |
| 2 | 100 см | ___ см | ___ | ___% |
| 3 | 100 см | ___ см | ___ | ___% |
| Среднее | 100 см | ___ см | ___ | ___% |
📐 Формула расчета погрешности:
\[\text{Погрешность} = \frac{|S_{факт} - S_{план}|}{S_{план}} \times 100\%\]📝 Пример расчета: Если робот должен был проехать 50 см, а проехал 47 см:
\[\text{Погрешность} = \frac{|47 - 50|}{50} \times 100\% = \frac{3}{50} \times 100\% = 6\%\]💻 Алгоритм расчета погрешности:
ФУНКЦИЯ Расчет_погрешности(плановое_расстояние, фактическое_расстояние):
отклонение = АБС(фактическое_расстояние - плановое_расстояние)
погрешность_процент = (отклонение ÷ плановое_расстояние) × 100
ВОЗВРАТ погрешность_процент
КОНЕЦ ФУНКЦИИ
🎯 Критерии оценки точности:
🔍 Анализ причин погрешностей:
💻 Алгоритм анализа:
ФУНКЦИЯ Анализ_погрешностей(результаты_измерений):
ЕСЛИ средняя_погрешность > 15% ТО
Вывести "Проверить:"
Вывести "- Калибровку скорости"
Вывести "- Механические соединения"
Вывести "- Заряд батареи"
ИНАЧЕ ЕСЛИ средняя_погрешность > 10% ТО
Вывести "Рекомендуется:"
Вывести "- Уточнить коэффициенты"
Вывести "- Проверить поверхность движения"
ИНАЧЕ
Вывести "Точность в норме!"
КОНЕЦ ЕСЛИ
ЕСЛИ разброс_результатов > 5% ТО
Вывести "Низкая повторяемость - проверить стабильность питания"
КОНЕЦ ЕСЛИ
КОНЕЦ ФУНКЦИИ
📊 Основные направления оптимизации:
1. Калибровка времени движения
2. Механическая настройка
3. Программная коррекция
🎯 Самообучающийся алгоритм:
АЛГОРИТМ "Автоматическая калибровка"
ФУНКЦИЯ Автокалибровка():
эталонное_расстояние = 50 // см
ДЛЯ попытка ОТ 1 ДО 5:
фактическое_расстояние = Измерить_движение(эталонное_расстояние)
коэффициент_коррекции = эталонное_расстояние ÷ фактическое_расстояние
Обновить параметры робота с новым коэффициентом
Вывести "Попытка", попытка, ": коррекция =", коэффициент_коррекции
КОНЕЦ ДЛЯ
Вывести "Калибровка завершена"
КОНЕЦ ФУНКЦИИ
ФУНКЦИЯ Измерить_движение(плановое_расстояние):
Запустить робота на заданное расстояние
Дождаться остановки
фактическое = Измерить линейкой текущую позицию
ВОЗВРАТ фактическое
КОНЕЦ ФУНКЦИИ
🧮 Типы систематических ошибок:
1. Недоезд (робот не доезжает до цели):
Причины:
- Заниженная скорость в расчетах
- Большое трение
- Низкий заряд батареи
Решение:
- Увеличить время движения на 5-10%
- Увеличить мощность мотора
- Использовать коэффициент коррекции > 1.0
2. Переезд (робот переезжает цель):
Причины:
- Завышенная скорость в расчетах
- Инерция робота
- Проскальзывание при торможении
Решение:
- Уменьшить время движения на 5-10%
- Добавить плавное торможение
- Использовать коэффициент коррекции < 1.0
💻 Интеллектуальная настройка:
ФУНКЦИЯ Адаптивная_коррекция(целевое_расстояние):
// История последних измерений
МАССИВ история_погрешностей[10]
// Рассчитать базовое время
базовое_время = целевое_расстояние ÷ калиброванная_скорость
// Применить адаптивную коррекцию
ЕСЛИ средняя_погрешность_истории > 5% ТО
ЕСЛИ тенденция = "недоезд" ТО
коэффициент = 1.0 + (средняя_погрешность ÷ 100)
ИНАЧЕ ЕСЛИ тенденция = "переезд" ТО
коэффициент = 1.0 - (средняя_погрешность ÷ 100)
КОНЕЦ ЕСЛИ
ИНАЧЕ
коэффициент = 1.0 // Коррекция не нужна
КОНЕЦ ЕСЛИ
скорректированное_время = базовое_время × коэффициент
ВОЗВРАТ скорректированное_время
КОНЕЦ ФУНКЦИИ
ФУНКЦИЯ Обновить_историю(новая_погрешность):
// Сдвинуть массив и добавить новое значение
ДЛЯ i ОТ 0 ДО 8:
история_погрешностей[i] = история_погрешностей[i+1]
КОНЕЦ ДЛЯ
история_погрешностей[9] = новая_погрешность
КОНЕЦ ФУНКЦИИ
📊 Комплексная программа точного движения:
ПРОГРАММА "Высокоточное движение робота"
СТРУКТУРА Профиль_робота:
базовая_скорость: вещественное
коэффициент_коррекции: вещественное
время_разгона: вещественное
время_торможения: вещественное
история_измерений: массив[10]
КОНЕЦ СТРУКТУРЫ
ФУНКЦИЯ Точное_движение(расстояние):
// Этап 1: Расчет базового времени
базовое_время = расстояние ÷ профиль.базовая_скорость
// Этап 2: Применение коррекций
скорректированное_время = базовое_время × профиль.коэффициент_коррекции
скорректированное_время = скорректированное_время - профиль.время_разгона - профиль.время_торможения
// Этап 3: Выполнение движения
Включить мотор с оптимальной мощностью
Ждать скорректированное_время
Выключить мотор
// Этап 4: Измерение результата
фактическое_расстояние = Измерить_позицию()
погрешность = Рассчитать_погрешность(расстояние, фактическое_расстояние)
// Этап 5: Обновление профиля
Обновить_профиль(погрешность)
ВОЗВРАТ фактическое_расстояние
КОНЕЦ ФУНКЦИИ
1. Анализ точности движения Проанализируйте результаты измерений и ответьте на вопросы:
2. Предложения по улучшению Придумайте и опишите 3 способа повышения точности движения робота:
3. Планирование траектории Составьте алгоритм движения робота по прямоугольной траектории:
🔬 Для исследователей: Проведите эксперимент по влиянию различных факторов на точность:
Постройте графики зависимостей и сделайте выводы.
💻 Для программистов: Разработайте алгоритм “умного” робота, который:
Опишите алгоритм в виде блок-схемы и псевдокода.
🔧 Для конструкторов: Предложите конструктивные улучшения робота:
Нарисуйте схемы и объясните принцип работы.
📚 Для изучения:
💻 Симуляторы:
🎥 Видеоматериалы:
🔧 Конструкторские навыки:
💻 Программистские навыки:
🧮 Исследовательские навыки:
🎯 Ключевые выводы:
“Точность робота зависит от точности его создателя”
“Программа - это мост между идеей и реальностью”
“Измерения и анализ - основа инженерного мышления”
🔮 Связь с будущим:
🎯 Критерии успешности:
🟢 Отличная работа (5 баллов):
🟡 Хорошая работа (4 балла):
🟠 Удовлетворительная работа (3 балла):
🔮 Следующий урок: “Датчики робота - глаза и уши искусственного интеллекта”
🎯 Готовимся изучать:
🤖 ВЫ СОЗДАЛИ СВОЕГО ПЕРВОГО ТОЧНОГО РОБОТА!
Теперь научим его чувствовать мир вокруг себя!