| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| products:beambot:uchitsya_ezdit_po_linii [2025/09/02 11:00] – [BeamBOT учится ездить по линии. Датчик на плате] labuser30 | products:beambot:uchitsya_ezdit_po_linii [2026/02/14 16:32] (текущий) – [Монтажная схема] labuser29 |
|---|
| <php>require($_SERVER["DOCUMENT_ROOT"]."/interactive/interactive.php");</php> | <php>require($_SERVER["DOCUMENT_ROOT"]."/interactive/interactive.php");</php> |
| |
| =====BeamBOT учится ездить по линии. Датчик на плате===== | =====BeamBOT учится ездить по линии===== |
| |
| В предыдущем уроке мы научили нашего робота доезжать до черной линии и останавливаться, но это было не слишком интересно. Давай соберем схему благодаря которой робот сможет ездить по краю черной линии? | Итак, мы научили робота доезжать до черной линии и останавливаться, но это слишком уж просто. Давай соберем схему, благодаря которой робот сможет ездить вдоль черной линии. |
| |
| | |
| | Принцип работы схемы следующий: как только датчик фиксирует нахождение над темной полосой, активируется один мотор, в то время как второй останавливается. Это заставляет робота поворачиваться. Процесс продолжается до момента обнаружения светлой поверхности. После этого состояния моторов меняются: ранее работавший замирает, а бездействовавший запускается. Начинается вращение в обратную сторону, которое прекращается, когда датчик вновь видит черную черту. Цикл запускается заново, и благодаря постоянным колебаниям корпуса устройство начинает перемещаться по стыку двух контрастных зон. |
| | ==== Схема эксперимента ==== |
| <php>pinlab_draw_picture("beambot/uchitsya_ezdit_po_linii/scheme1");</php> | <php>pinlab_draw_picture("beambot/uchitsya_ezdit_po_linii/scheme1");</php> |
| |
| ~~NOCACHE~~ | ~~NOCACHE~~ |
| | ==== Таблица компонентов ==== |
| <php>pinlab_bom("beambot/uchitsya_ezdit_po_linii/scheme1.mont");</php> | <php>pinlab_bom("beambot/uchitsya_ezdit_po_linii/scheme1.mont");</php> |
| | |
| | ==== Монтажная схема ==== |
| <php>pinlab_draw_instruction("beambot/uchitsya_ezdit_po_linii/scheme1.mont");</php> | <php>pinlab_draw_instruction("beambot/uchitsya_ezdit_po_linii/scheme1.mont");</php> |
| |
| Если ты поставишь робота на край черной линии он будет ехать вдоль нее поворачивая то правым, то левым колесом. Правда выглядит завораживающе? Как же работает наша схема? С правым колесом все просто: на вход первого канала (транзистора Дарлингтона) микросхемы ULN2003A подключен датчик линии «В», а на его выход собственно мотор правого колеса. Следовательно когда датчик "видит" белую поверхность правое колесо поворачивается вперед. С левым колесом все интереснее: его мотор подключен к выходу второго канала, а вот вход к выходу первого. Когда канал ULN2003A "выключен" (на его входе «В»), его выход "висит в воздухе", то есть ни к чему не подключен. Что бы это исправить мы добавили резистор R1, который "подтягивает" выход первого канала к «+» питания и вход второго тоже, так как они соединены. Этим мы добились того, что когда на входе первого канала «-», на входе второго «+», и наоборот. Следовательно и моторы с колесами включаются по очереди. | |
| |
| Кстати если ты уберешь резистор R1 из схемы, то робот все также будет ездить по краю линии. Почему так? Все дело в том, что функцию резистора будет R1 выполнять правый мотор. | {{:products:beambot:line_1.png?nolink&250 |}} |
| | Теперь, если ты поставишь робота на край черной линии, он будет ехать вдоль нее, поворачивая то правым, то левым колесом. Правда, эффектно? Рассмотрим, как работает схема. |
| | |
| | С правым колесом все просто: на вход первого канала микросхемы ULN2003A (DA1.1) к транзистору Дарлингтона подключен датчик линии ''В'', а на его выход – мотор правого колеса. Следовательно, когда датчик «видит» белую поверхность, правое колесо проворачивается вперед. |
| | |
| | С левым колесом – интереснее: его мотор подключен к выходу второго канала, а вход – к выходу первого. Второй канал микросхемы выполняет роль инвертора, т.е. он меняет сигнал на противоположный. Поэтому оба мотора работают по- очереди, хотя управляются одним датчиком. |
| | |
| | У микросхемы ULN2003A есть особенность: когда канал микросхемы «выключен» (в нашем случае канал DA1.1) – его выход ни к чему не подключен. На жаргоне электронщиков – "висит в воздухе" и на нем нет никакого напряжения. Но чтобы включить второй канал (DA1.2) нужен уровень напряжения. Чтобы его получить, мы добавили резистор R1, который «подтягивает» выход первого канала к «+» питания в моменты, когда выход DA1.1 "висит в воздухе". Ток, протекающий через R1 включает DA1.2 и левый мотор. |
| | |
| | Таким образом когда датчик находится над белой поверхностью работает один мотор, а когда над черной – другой. Когда над белой – один мотор подруливает в сторону черной линии, а когда Робот буквально видит границу линии, отслеживает ее и движется вдоль нее. |
| |
| <WRAP round tip> | <WRAP round tip> |
| Экспериментируй: | Экспериментируй: |
| * Попробуй сделать так, чтобы робот ехал задом наперед. | * Попробуй сделать так, чтобы робот ехал задом наперед. |
| * Попробуй использовать задний датчик «З» в место переднего «В». | * Попробуй использовать задний датчик ''З'' в место переднего ''В''. |
| </WRAP> | </WRAP> |
| | |
| | ---- |
| | [[products:beambot:uchitsya_ostanavlivat_na_granice|☚ Предыдущий ]] | |
| | [[products:beambot|Содержание]] | |
| | [[products:beambot:osvaivaet_ezdu_po_linii| Следующий ☛]] |
| |