Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:beambot:uchitsya_ezdit_po_linii [2025/12/25 15:19] – [BeamBOT учится ездить по линии. Датчик на плате] labuser30products:beambot:uchitsya_ezdit_po_linii [2026/02/14 16:32] (текущий) – [Монтажная схема] labuser29
Строка 1: Строка 1:
 <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>