Всем привет. Хочу представить вам мой проект Проекционные часы.
Идея пришла достаточно давно до знакомства с Arduino. Когда то в детстве я увидел огромные часы из обычных 100 ваттных лампочек, которые были собраны в четыре восьмерки и о чудо показывали время! То что обычные лампочки такое могут, меня в то время очень поразило и хотелось повторить такое чудо.
Служа в армии я пытался сделать что то подобное на реле, но успехов особых не достиг.
И вот спустя какое-то количество лет, увидев эксперимент с семисегментным индикатором, мне захотелось воплотить в жизнь детскую мечту.
Конечно не о каких 100 ваттных лампочках не могло идти и речи. Но и не хотелось громоздить огромную панель из светодиодов. По этому было решено сделать не большие матрицы из ярких светодиодов и применить линзы для проекции.
Ну хватит пред историй. Сразу видео как все работает, а потом если кому интересно, фото как я это все делал.
Вот еще несколько фото примеров работы днем при солнечном свете и в темноте.
Самые простые ламповые часы на ИН-12 своими руками
на последней фото чуть смазано. Фотик отказывался фокусироваться на цифры вблизи.
Приступая к созданию часов я наивно предполагал что это проект на три — четыре дня. На самом деле все затянулось почти на месяц из-за того что столкнулся с различными сложностями некоторые из которых только раззадоривали, а некоторые бесили на столько что хотелось все бросить.
Были приобретены макетные платы, четыре сдвиговых регистра, 120 сопротивлений 220 Ом. Светодиодов, как я уже писал у меня великое множество(остались после какой-то шабашки).
С распайкой регистров проблем не возникло. Может получилось чуть не аккуратно но я утешал себя тем что все будет в коробке и не кто этого не увидит
С матрицами получилось все сложнее. Сначала был спаян первый вариант:
Но плата стала занимать много места и все было переделано.
Далее все было собрано и прикручено на орг стекло. Тут было много интересного. С начала было поломано несколько стекол при сверлении отверстий, затем было решено перенести плату с регистрами на другую сторону для уменьшения длины, потом оказалось что платы с светодиодами должны быть под углом и в конце оказалось что длины проводов не хватает и их нужно дорастить.
Ну в целом все получилось.
После долгих и безрезультатных хождений по супермаркетам и хозтоварам в поисках подходящего корпуса (в порыве безумия я даже поглядывал на xbox 360 думая о том что если вытащить все запчасти то коробочка мне отлично подойдет) было решено сделать корпус самому из оргстекла.
Часы своими руками на микросхемах 176 серии и 142 светодиодах.
За оргстекло отдельное спасибо коллеги Роману.(оказалось что оргстекло большая редкость и купить его бесполезно).
Нужно было решить чем питать всю эту конструкцию. Если arduino и регистры не очень прихотливы по питанию то светодиодам и аккумулятору для работы в буферном режиме требовалось уделить внимание.
На блок питания тратиться не хотелось. Благо на работе целые стеллажи нужного и не очень барахла. Сделал блок питания сам, на основе какого-то интегрального стабилизатора(к сожалению названия не помню) который грелся как собака и пришлось ставить радиатор и охлаждение.
ну и собственно все было собрано в корпус и закреплено
Очень переживал за пожаробезопасность , все-таки устройство будет всегда включено в сеть даже когда не кого не будет дома. По этому поставил предохранители где только можно, перекрестил,
и повесил на стену.
А да конечно код.
В программировании я делаю еще только первые шаги так что прошу сильно не ругать а посмотреть как мой кот играет в танки.
#define LED_PIN A1 // Светодиод секунд. #define latch_Pin 9 #define CLOCK_PIN 13 #define data_Pin 11 #include int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results results; void dump(decode_results *results) < int count = results->rawlen; > int x = 0; // Вторая цифра минут. int z = 0; // Первая цифра часов. int a = 0; // Вторая цифра часов. int p = 1; // Переменная режима работы. int i = 1; // Переменная точек секунд. byte segments[11] = < 0b01110111, 0b00100100, 0b01011110, 0b01101110, 0b00101101, // Масив цифр. 0b01101011, 0b01111011, 0b00100110, 0b01111111, 0b01101111, 0b00000000 >; void setup() < pinMode(latch_Pin, OUTPUT); pinMode(CLOCK_PIN, OUTPUT); pinMode(data_Pin, OUTPUT); pinMode(LED_PIN, OUTPUT); irrecv.enableIRIn(); >void loop() < for (int y = 0; y < 10; y++) < // Цикл первой цифры минут. for (int b = 0; b < 60; b++) < // Цикл секунд. if (p == 1)< // Режим работы. digitalWrite(latch_Pin, LOW); // Открываем регистр. shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[y]); // Загружаем байты первой цифры минут. shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[x]); // Загружаем байты второй цифры минут. shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[a]); // Загружаем байты второй цифры часов. shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[z]); // Загружаем байты первой цифры часов. digitalWrite(latch_Pin, HIGH); >// Закрываем регистр. if (p == 0) < // Режим выключения светодиодов. digitalWrite(latch_Pin, LOW); // Открываем регистр. shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[10]); // Загружаем нули светодиоды выключены. shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[10]); // Загружаем нули светодиоды выключены. shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[10]); // Загружаем нули светодиоды выключены. shiftOut(data_Pin, CLOCK_PIN, LSBFIRST, segments[10]); // Загружаем нули светодиоды выключены. digitalWrite(latch_Pin, HIGH); >// Закрываем регистр. if (irrecv.decode( irrecv.resume(); >if (results.value == 33441975) < // Кнопка включения табло. p = 1; results.value = 0;>if (results.value == 33446055) < // Кнопка выключения табло. p = 0; results.value = 0;>if (results.value == 33456255) < // Кнопка включения светодиода секунд. i = 1; results.value = 0;>if (results.value == 33439935) < // Кнопка выключения светодиода секунд. i = 0; results.value = 0;>if (results.value == 33431775) < // Здесь и далее кнопки установки времяни. a = a + 1; results.value = 0;>if (results.value == 33464415) < a = a — 1; results.value = 0;>if (results.value == 33480735) < z = z + 1; results.value = 0;>if (results.value == 33427695) < z = z — 1; results.value = 0;>if (results.value == 33444015) < x = x + 1; results.value = 0;>if (results.value == 33478695) < x = x — 1; results.value = 0;>if (results.value == 33435855) < y = y + 1; results.value = 0;>if (results.value == 33468495) < y = y — 1; results.value = 0;>if (i == 1) // Включаем светодиод секунд. delay(500); // Ждем пол секунды. if (i == 1) // Выключаем светодиод секунд. delay(500); // Ждем пол секунды. > // Закрываем цикл секунд. if(y == 9) x = x + 1; // При достижении первой цифры минут 9 прибавляем к второй цифре минут 1. if(x > 5) // При достижении второй цифры минут 5 прибавляем к первой цифре часов 1 а второй присваиваем 0. if(z > 9) // При достижении первой цифры часов 9 прибавляем к второй цифре часов 1 а первой присваиваем 0. if(a > 1 z == 4) // Если вторая цифра часа больше 1 а первая равна 4 (т.е 24 часа) сбрасываем все в 0. > >
Всем спасибо за внимание!
- Войдите на сайт для отправки комментариев
Источник: arduino.ru
Сделай сам — проекционные часы.
Надеюсь те, кто были на моем портале видели первую версию проекционных часов. Я изготовил вторые. Данная статья частью дублирует тот материал. А частью раскрывает грабли на которые я наступил. Никаких микроконтроллеров внутри, доступно для повторения всем!)
Начнем с материалов. Основная конструкция часов выполнена из толстого плотного картона, такой картон используют для корочек книги или вставляют для жесткости в обложку папок. Цилиндр — это втулка от липкого ролика из икеи. В качестве часов были куплены самые дешевые наручные китайские часы:
Линзы правда были куплены и обточены под заказ в оптике — 2 стеклянные линзы на +25 диоптрий. В принципе можно использовать любые линзы. Например купить простой китайский пластиковый бинокль и извлечь линзы из окуляров (они сделаны из оптического полистирола потому очень легко царапаются, будьте осторожны). Светодиод был куплен в магазине, L-813. Блок питания робитон был куплен в хозмаге за 160 руб (3-12Вб 300 мА).
В качестве окуляра мы будем использовать обычный люстровый патрон для ламп, он имеет наружную резьбу и специальную гайку. Что позволит как раз вращением настраивать фокус.
Дисплей
Первым делом нужно сделать дисплей цифр работающий на просвет. Разберем часы и удалим плату. У жидкокристаллического дисплея необходимо отклеить одну пленку-поляризатор, оттереть ее от клея этиловым спиртом. После того как мы ее перевернем мы получим инверсный дисплей, чёрный выключенный и прозрачный включенный.
Если пленки матовые, то желательно их удалить и заменить на глянцевые, иначе будет теряться ощутимая часть светового потока.
На место платы установим изготовленную нами платочку. В прошлый раз мы использовали шлейфик, но это деталь довольно специфическая, поэтому на этот раз сделаем более доступный вариант — специальную платочку. Вид ее на фото:
Разделительные канавки прорезаны канцелярским ножом. Аккуратно припаяем ее проводами к плате часов и соберем. Получится что то вроде:
Светодиод
Обычно ток через светодиод 20 мА. Прошлый раз ток был больший из-за того, что как выяснилось производители брелоков не беспокоятся о сроке службы светодиода т.к. батарейки садятся раньше. А их замена не предполагается. В результате светодиод быстро выходил из строя. На этот раз было решено использовать цветной сверхъяркий светодиод.
Для его использования придется немного посчитать. Открыв паспорт на светодиод (datasheet в буржуйской терминологии) посмотрим 2 важных параметра — максимальный ток (DC Forward Current) и прямое падение напряжения (Forward Voltage). В данном случае у нас получается 2.5В 25 мА. Допустим будем питать светодиод от 12 вольт. Тогда нужно поставить такое сопротивление.
Что бы на нем падало 12 — 2.5 = 9.5В при токе 20 мА (оставим про запас 5 мА). По закону Ома R=U/I
R = 9.5/0.02 = 475 Ом.
Оптика
Оптика у нас довольно проста — всего 2 линзы. Оптическая схема с размерами для линз +25 диоптрий на рисунке:
Цифры даны приблизительные. Данные расстояния были получены эмпирически – в тисах был зажат светодиод, над ним приспособление «третья рука» держало экранчик так, что бы световой конус освещал полностью все цифры, сверху на экранчике лежала линза, а рукой с линейкой подбиралось оптимальное расстояние для объектива, ориентируясь по картинке на потолке.
Светодиод дает расходящийся на конус световой поток. Свет, проходя через дисплей, корректируется (уменьшается расходимость) линзой номер 1. Затем свет проходит через линзу объектива номер 2 и затем уже проецируется на поверхность.
Если мы избавимся от линзы номер 1 то получится ход лучей как на второй части схемы. Крайние лучи, несущие информацию о картинке по краям будут выходить за пределы оптики и не попадать на линзу объектива номер 2. Это будет выглядеть как светлый с картинкой центр и темные края.
Идеальный случай изображен на 3 части схемы — экран освещается параллельными лучами, которые затем собираются объективом номер 2.
Чем более сильные линзы мы поставим тем крупнее будет картинка на стене (правда ее яркость будет мала, т.к. одно и то же количество света приходится на бОльшую площадь. Но чем мощнее будут линзы тем сильнее будут искажения. Для уменьшения искажений нужно диафрагмировать световой поток, но это снизит яркость. Получаются вот такие противоречивые требования.
Я попробовал использовать в качестве источника света 3х ваттный зеленый светодиод LUXEON и у меня ничего путного не получилось. У этого светодиода очень большая расходимость пучка, в результате получилось что подсвеченным оказывался только центр изображения (см. оптич. схему). Набором линз получалось откорректировать световой пучок, но он ослаблялся настолько, что никаких преимуществ перед обычным сверхъярким светодиодом не оставалось.
Сборка
Аккуратно разрезав картон красим все внутренние поверхности в чёрный цвет, что бы исключить всяческие внутренние отражения. При сборке строго соблюдать оптическую ось, иначе картинка будет искажена. Припаяем к микросхеме часов кнопки управления, и впаяем внутрь батарейку. Можно было конечно сделать стабилизатор питания, что бы напряжение в 1.5В поступало от блока питания, но это излишняя сложность. Закончив сборку основной части можно обшить ее картоном и обклеить пленкой. В общем всё понятно из фотографий:
картинка, проецируемая часами на фото: (выдержка большая, поэтому яркость кажется выше)
UPD. Насчет кроспостинга и копипаста.
Данная статья была опубликована сегодня на портале и продублирована здесь. Больше статья нигде мной не кроспостилась и не будет кроспоститься (по причине отсутствия крупных профильных ресурсов).
Во вторых я полностью опубликовал статью здесь, всвязи с тем, что предыдущий опыт показал, что мой сервер (домашняя машина с мегабитным каналом) не в состоянии обработать всех посетителей, было много жалоб на тормознутость и недоступность
Источник: habr.com
Часы с проецированием изображения своими руками
Основу конструкции часов составляет толстый полиэтиленовый картон, который используется для изготовления книжных обложек и папок. В качестве цилиндра мы использовали втулку из липких роликов икеи. Ну а часы были самые обычные, дешевые, купленные из Китая.
Но, правда, линзы были куплены нами и заточены под заказ – это были две линзы оптикой в +25 диоптрией. Альтернативой им можно использовать обычные линзы из обычного китайского пластикового бинокля или окуляра. Извлекая линзы из таких устройств, предостерегайтесь царапин поверхности оптики, так как линзы в таких устройствах изготавливаются из оптических полистиролов низкого качества. Далее покупаем в магазине светодиод модели L-813 и блок питания. В нашем случае был куплен 300мА блок питания компании Rabiton, стоимостью в 160 рублей.
Собирать окуляр мы будем из старого люстрового патрона, использующегося в абажурных лампах. Он идеально подходит для вращения и настройки фокусировки линз, так как имеет наружную резьбу и специальные гайки.
Дисплей.
Сперва, изготавливаем цифровой дисплей, который будет работать на просвет. Для этого разбираем наши часы и снимаем рабочую плату. После этого отклеиваем пленку-поляризатор, который приклеен на жидкокристаллический дисплей и перетираем ее этиловым спиртом, чтобы избавиться от оставшихся следов клея. В итоге, перевернув дисплей, мы получим инверсную систему, то есть черный цвет будет означать, что дисплей выключен, а белый значит включен.
В случае если на вашем дисплее имеется матовая защитная пленка, то потребуется ее удалить и заменить вместо нее глянцевую пленку, так как она будет лучше пропускать световые потоки.
Вместо существующей платы устанавливаем специальную плату, которая будет представлена на рисунке ниже. Вместо нее можно так же установить специальный шлейф, но это сильно усложнить саму сборку, поэтому рекомендуется применять самодельную плату.
Канавки для разделения прорезаем канцелярским ножом. После этого бережно припаиваем их проводами к платам часов, после чего собираем. Должно получиться похожее, как показано на следующей фотографии.
Светодиод.
В качестве светодиода рекомендуется использовать сверхяркий цветной светодиод. Но прежде чем его устанавливать, нужно разобраться с его параметрами, открыв его техническую книжку (если такова имеется) и поискать максимально допустимое значение тока и падение прямого напряжения. В нашем случае светодиод имеет максимально допустимое значение до 2,5 Вольт и прямое напряжение в 25 мА.
Оптика.
Оптика у нас состоит всего лишь из двух линз и имеет простую конструкцию. На рисунке приведена схема двух оптических линз с размерами +25 диоптрией.
Значения приведены не точные, так как все показания были получены эмпирическим способом. Мы зажали светодиод и положили над ним жидко – кресталический экран часов так, что бы свет проходил через весь циферблат часов. Поверх дисплея мы разместили первую линзу и при помощи обычной линейки подобрали оптимальную удаленность от второй линзы пока изображение от часов не станет максимально четким.
Принцип действия все этой конструкции состоит в том, что лучи светодиода проходя через дисплей попадают на первую линзу, которая корректирует лучи и направляет их ко второй линзе, которая в свою очередь проецирует получившееся изображение на поверхность.
Если снять первую линзу, то получится расплывчатое изображение со светлыми краями и темным пятном посередине. Это вызвано тем, что лучи от светодиода дойдут до второй линзы, но будут выходить за ее края.
Если поставить более мощные линзы, то мы сможем добиться более объемного проецируемого изображения на поверхности, но в итоге снизится ее яркость, так как из-за больших размеров линзы, проходящие через нее лучи сильно искажаются и деформируют световой поток.
Сборка.
Бережно разрезаем картон и красим его внутренние части в черный цвет, это поможет избавиться от любых внутренних отражений. Далее собираем все воедино, соблюдая точность оптической оси, так как всякое отклонение вызовет искажение изображения. Далее припаиваем к часам кнопки управления и источник питания. В итоге обшиваем получившуюся конструкцию картоном и обклеиваем пленкой как показано на фотографии.
Ниже приведен пример проецируемого изображения, но в нашем случае получилась слишком большая выдержка и поэтому кажется, что у изображения высокая яркость.
Источник: volt-index.ru