В этом проекте мы рассмотрим, как построить схему светофора с микроконтроллером Arduino.
Сделать светофор на Arduino для начинающих изучать микроконтроллер — это отличное занятие, которое позволит лучше разобраться в среде программирования Arduino IDE и понять принцип работы цифровых пинов общего назначения. Рассмотрим схему сборки светофора на Arduino Uno с помощью макетной платы и представим простой проект, который можно использовать на занятиях робототехники с детьми.
Схема светофора — это схема, имитирующая работу реального светофора.
Есть зеленый светодиод, который представляет собой зеленый свет. Желтый светодиод, который представляет собой желтый свет. И красный светодиод, который представляет собой красный свет.
В нашей схеме мы сделаем так, что зеленый светодиод горит 15 секунд, затем желтый светодиод включается на 2 секунды, а затем красный светодиод включается на 15 секунд. И это повторяется снова и снова.
Рассмотрим все аппаратные соединения и программное обеспечение, которое нужно для этой работы.
Резистор 470 Ом – 3 шт.
Самодельный простой электронный светофор
Для игры с машинками очень оказалось бы полезным такое устройство как — СВЕТОФОР! Со светофором игра будет увлекательнее и интересней.
Давайте рассмотрим два варианта, как можно сделать простой электронный светофор из подручных материалов своими руками.
Необходимые материалы и инструменты
Для изготовления корпуса понадобилась: банка из-под крема, кусок металлической трубки (тормозная трубка от автомобиля), старый фломастер (его часть одета на ножку), кусочки пластмассы, винты М2, гайки М6, микротумблер на 2 положения и 2 направления с фиксацией в центральном положении, разъем для подключения зарядного устройства к аккумуляторам, держатель 4-х аккумуляторов типоразмера АА (если использовать 4 батарейки, то напряжение питания микроконтроллера будет примерно 6В!! я за надежность работы в этом случае не отвечаю), кусочек монтажной платы, провод МГТФ и радиодетали в соответствии с приведенной схемой.
Первый вариант светофора на микроконтроллере
Перед прошивкой микроконтроллера необходимо выключить таймер WDT. Это можно сделать в программе IcProg (последняя версия работает под WinXP).
Второй вариант светофора на транзисторах
Если Вам будет трудно выполнить первый вариант схемы на прошиваемом микроконтроллере, то можете сделать второй простой вариант самодельного светофора на трёх транзисторах.
Схема простого варианта на транзисторах
Светодиоды VD1,2 — красные, VD3,4 — жёлтые, VD5,6 — зелёные.
Частота переключения зависит от конденсаторов С1-3.
По этой ссылке вы можете узнать подробнее о простой схеме светофора на светодиодах.
Удачи на дорогах! Соблюдайте правила дорожного движения!
Популярность: 20 339 просм.
Сейчас даже в чайнике можно найти микроконтроллер со своей прошивкой, и этим уже никого не удивить. А вот то, что можно обойтись без микроконтроллера только «железной» логикой, современного электронщика может реально вогнать в ступор. И именно такое состояние настигло меня, когда я в сети наткнулся на проект “RF74xxID The Multifunction Passive 7400 RFID Tag”. Перевод конечно же есть на Хабре.
На тот момент я на столько был поглощён микроконтроллерами, что даже не задумывался о том, что еще каких-то пару-тройку десятилетий назад электронщики как-то обходились без них, и даже ракеты в космос пускали.
В общем, в какой-то момент это стало для меня навязчивой идеей, и я решил хотя бы примерно повторить пройденный автором путь. С тех пор мне не нужна рыбалка или охота, можно не бегать по лесу в поиске грибов, или не ждать футбольные матчи по телеку! Я понял, что для электронщика электроника тоже может быть хобби!
Конечно, делать что-то масштабное типа R-FID метки у меня бы не хватило терпения. Поэтому я решил на первый раз взять что-то по проще.
Первый мой проект на около электронную тематику был светофор. Выполнен он был на 6-ти вольтовых лампочках, которые я красил лаком в нужные цвета. А переключение светофора производилось самодельным пакетником из фанеры. И именно светофор я решил сделать на логике. Согласитесь, что символизм в таком деле очень важен!
Я не очень люблю лепить макеты на перемычках, как по мне, проще сразу оттрассировать печатную плату и откатать ее утюжком. Так появился первый прототип, и конечно же в нем не обошлось без косяков. Пришлось перекинуть пару связей перемычками.
Изготовив “чистовой” вариант макета, мне показалось, что “первенец” все-таки должен быть более масштабным, пусть не с точки зрения схемотехники, но так хоть размерами! Вспоминается анекдот: “наши микросхемы — самые большие микросхемы в мире! Ура, товарищи!”
Так как я долгое время работал преимущественно с поверхностным монтажом, решено было собирать финальный вариант полностью на осевых компонентах. Для наглядности были распечатаны пластиковые накладки. Делать корпус целиком я не стал, прятать всю эту красоту было просто не допустимо!
Финальная версия получила расширенный функционал. Добавил звуковое сопровождение для зеленого сигнала светофора. Перевел плату на питание от 12В. Светодиодов стало заметно больше. Но делать полноценные прожекторы трех цветов я все-таки не стал, обошелся колечками.
При проектировании я понимал, что современный светофор с удаленным контролем у меня конечно же не получится. Но тем не менее, хотелось добиться функциональности, максимально приближенной к реальным условиям. Поэтому для себя я поставил следующие условия: светофор должен иметь таймер обратного отсчета на основе двух групп семисегментных индикаторов соответственно красного и зеленого цветов; длительность работы красного и зеленого сигналов должна определяется положением DIP – переключателей в формате BCD.
Слева в карандаше эскиз от руки структурной схемы первой версии маленького светофора без звука. Справа – полная структурная схема светофора.
После подачи напряжения питания блок переключения сигналов светофора формирует сигнал загрузки времени работы красного сигнала светофора. Значение времени определяемые положением переключателей в блоке установки длительности включения красного сигнала записывается в реверсивный счетчик.
На каждый тактовый импульс от генератора с частотой 1Гц происходит декремент счетчика.
Выходные сигналы единиц и десятков секунд поступают в дешифратор, с выходов которого полученный семисегментный код усиливается по току и инвертируется драйвером семи сегментного дисплея. Усиленный сигнал включает комбинацию разрядов индикатора, соответствующую текущему двоичному состоянию реверсивного счетчика.
В момент перехода счетчика из единицы в нулевое значение формируется сигнал включение желтого сигнала светофора и выключение блоков индикации времени красного и зеленого сигналов.
После окончания обратного отсчета, блок переключения сигналов светофора переключает свое состояние. В результате чего реверсивный счетчик загружается значением времени включения зеленого сигнала светофора, происходит выключение красного и желтого, а также включение зеленого сигнала светофора.
Когда время работы зеленого сигнала уменьшится до трех секунд, схема разрешения мигания зеленого сигнала подключит тактовый сигнал на линию управления зеленым цветом, что заставит его трижды переключиться с периодичностью в одну секунду.
По истечению времени работы зеленого происходит кратковременное включение на один тактовый импульс желтого цвета. После чего весь цикл работы светофора повторяется сначала.
Дешифратор сигналов светофора получает комбинацию сигналов от других блоков и формирует выходные сигналы управления светофором и переключает красную и зеленые пару индикаторов.
Синхронно включению зеленого сигнала светофора происходит включение генератора звукового сигнала на частоте 2,5КГц. Звуковой сигнал формируется пакетами с периодичностью в одну секунду и усиливается усилителем звуковой частоты для вывода в динамик. В момент мигания зеленого сигнала светофора частота звуковых импульсов возрастает. Импульсы звуковой частоты формирует тон-генератор, а параметры звуковых импульсов определяет импульсный модулятор.
В итоге, получилась следующая электрическая схема.
Генератор звукового сигнала
Заключение
Итак, друзья! В итоге я получил огромное удовольствие от самого процесса, сэкономил денег на снастях и удочках, и ни одного дикого животного в лесу не пострадало! Также на годы вперед у меня появилось новое увлечение, которым я хотел поделиться с вами.
А при чем же здесь Beatles, надеюсь, вы и сами догадаетесь!
Схема светофора
На рисунке показано схематично, как всё подключено и работает.
Рассмотрим код
Устанавливаем светодиоды по их цифровым выходам. То есть: зелёный – 12; жёлтый – 11; красный 10;
Следующий блок строк, функция setup(), объявляет все светодиоды выходами. Мы не считываем никаких значений со светодиода. Мы записываем либо ВЫСОКОЕ, либо НИЗКОЕ значение на светодиод. Следовательно, светодиоды должны быть выходами, а не входами.
Следующая функция, функция loop(), является сердцем нашего кода. Этот блок кода повторяется снова и снова, снова и снова, без конца.
Вы можете изменить время, в течение которого светодиоды горят, изменив значение в функции delay(). Поскольку параметр в функции delay() измеряется в миллисекундах, задержка (1000) равна 1 секунде. Так что, если вы хотите, чтобы светодиод горел в течение, например, 10 секунд, параметр будет 1000 * 10 = 10000.
Макетная схема
Код для Arduino
const int TRAFFIC_LIGHT_STYLE = 1; // Используется для выбора стиля светофора
const int GREEN_LIGHT = 12; // Время зеленого света в секундах
const int AMBER_LIGHT = 3; // Время янтарного (желтого) света в секундах
const int DEAD_LIGHT = 2; // Время «перекрытия» в секундах
const int RED_AMBER_LIGHT = 1; // Красный/Янтарный свет в секундах
int greenBusyBunnyLaneGnd = 31;
int amberBusyBunnyLaneGnd = 33;
int greenLazyTortoiseAveGnd = 49;
int amberLazyTortoiseAveGnd = 51;
int redLazyTortoiseAveGnd = 53;
// Установка соответствующих выходов светодиодов для первой улицы
// Установка соответствующих выходов светодиодов для второй улицы
// Главный блок
for (int seconds = 0; seconds < GREEN_LIGHT; seconds++)
for (int seconds = 0; seconds < AMBER_LIGHT; seconds++)
for (int seconds = 0; seconds < DEAD_LIGHT; seconds++)
for (int seconds = 0; seconds < (GREEN_LIGHT / 3); seconds++)
// Lazy Tortoise Ave now goes into amber light.
// Once again, a dead zone
for (int seconds = 0; seconds < RED_AMBER_LIGHT; seconds++)
Подключение
Итак, чтобы эта схема работала, у нас есть 3 светодиода. Аноды, положительные клеммы светодиодов, все подключаются к цифровому выводу на Arduino через токоограничивающий резистор 470 Ом:
Зеленый светодиод подключается к цифровому выводу D12 на Arduino.
Желтый светодиод подключается к цифровому выводу D11 на Arduino.
Красный светодиод подключается к цифровому выводу D10 на Arduino.
Катоды или отрицательные клеммы светодиодов подключаются к земле.
Как работает схема, так это то, что мы можем контролировать, какой светодиод горит, потому что каждый светодиод подключен к отдельному цифровому выводу на Arduino. Если мы сделаем цифровой вывод HIGH, то этот светодиод будет гореть, а остальные будут записаны LOW и, следовательно, выключены.
const int greenLED= 12; //the code will flash the LED connected to pin 13
const int yellowLED= 11; //the yellow LED is connected to digital pin 11
const int redLED= 10; //the red LED is connected to digital pin 10
//makes all the LEDs outputs
pinMode (greenLED, OUTPUT);
pinMode (yellowLED, OUTPUT);
pinMode (redLED, OUTPUT);
digitalWrite (greenLED, HIGH);//включает зелёный светодиод
digitalWrite (yellowLED, LOW);//выключает жёлтый светодиод
digitalWrite (redLED, LOW);//выключает красный светодиод
digitalWrite (greenLED, LOW); //выключает зелёный светодиод
digitalWrite (yellowLED, HIGH);//включает жёлтый светодиод
digitalWrite (redLED, HIGH);//включает красный светодиод
Как работает наш светофор
У нас в проекте светофора будет, как будто, две улицы. У них свой различный трафик, поэтому время работы будет разным.
Трафик одной из улиц будет активней, чем у второй. Зелёный свет для первой улицы будет составлять 12 секунд времени. На второй улице, где трафик меньше, нужно будет установить зелёный свет на более короткий промежуток времени. Возьмём за это значение 1/3 от времени первой улицы и получиться 4 секунды зелёного светофора.
Сделаем ещё небольшую паузу движения на нашем перекрёстке. То есть мы сделаем период времени, когда будет везде гореть красный свет. Всё как на реальном перекрёстке.
Схема проекта
Двойной светофор
Рассмотрим ещё один вариант светофора, но уже на перекрёстке. Всё будет работать как в жизни: у одной дороги трафик будет меньше, чем у другой.
Что нам нужно:
Ещё на необходимы провода перемычки для соединения всех деталей.
Модель светофора.
Автоматический регулировщик дорожного движения под названием светофор, давно стал привычным объектом на городских улицах. Простой алгоритм работы и визуальная наглядность работы данного устройства обусловили его частое использование в качестве объекта моделирования в разнообразных программных приложениях. Возможна реализация модели светофора и с помощью микроконтроллера. Учитывая простоту объекта, в качестве такового может быть использована микросхема 12629.
Алгоритм работы.
Работа светофора может быть реализована с помощью двух режимов. Рабочий режим содержит последовательное переключение красного, желтого и зеленого цветов. Для большей реалистичности необходимо предусмотреть наложение красного и желтого цветов перед переключением на зеленый, а также мигающий зеленый в конце его свечения. Второй режим – дежурный. Его особенностью является постоянное мигание желтого цвета. Переключение между режимами происходит после нажатия на кнопку.
Принципиальная электрическая схема модели светофора содержит минимум радиодеталей. Основу схемы составляет микроконтроллер 12629. К трем его выводам, через токоограничивающие сопротивления присоединены светодиоды 813, производства , красного, желтого и зеленого свечения. Вход 3 микроконтроллера использован для переключения режима работы модели с помощью кнопки. Для обеспечения удобства программирования, предусмотрен -разъем, позволяющий работать с программатором 2.
Конструкция.
Печатная плата светофора создавалась для простого повторения студентами и начинающими радиолюбителями. Поэтому используются только элементы штыревого монтажа. Плата имеет размеры и ориентирована на ЛУТ технологию.
В конструкции используются светодиоды с диаметром корпуса 10мм и прозрачным корпусом, что на практике выглядит не совсем эффектно. Рекомендуется при повторении устанавливать светодиоды с корпусом соответствующего цвета, что сделает модель более похожей на настоящий светофор.
Управляющая программа.
Управляющая программа написана на языке . Переключение режимов работы происходит через прерывание от порта ввода/вывода. Рабочий и дежурный циклы реализованы простейшим способом – переключением соответствующих линий с программной задержкой между операциями.
Red : sbit at GPIO.B4;
Yellow : sbit at GPIO.B5;
Green : sbit at GPIO.B2;
Button : sbit at GPIO.B3;
; //Прерывание по нажатию кнопки
_(100); //Защита от дребезга
Rez=1 then Rez:=0 else Rez:=1;
ClearBIT(INTCON,GPIF); //Сброс флага прерывания по кнопке
Rez:=0; //Режим 0
Еще по теме:
Термометр с линейной шкалой
You have no rights to post comments
Итог
Теперь вы научились создавать светофор на Ардуино. Это прекрасный проект для начинающих программистов на платах Arduino. Ещё этот проект можно использовать, чтобы научить детей переходить дорогу и пользоваться светофором правильно.