Программирование MCS51 HddClock: часы-будильник из жесткого диска Fri, March 29 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

HddClock: часы-будильник из жесткого диска Печать
Добавил(а) microsin   

Принцип, который положен в основу работы HDDclock, довольно простой. На месте блинов прикручена круглая плата, на которой стоит столбик из светодиодов (см. фотографии).

HddClockIMG_0224.JPG HddClockIMG_0252.JPG HddClockIMG_0254.JPG
HddClockIMG_0255.JPG HddClockIMG_0256.JPG HddClockIMG_0666.JPG

Светодиоды выбраны бескорпусные (для уменьшения массы вращающейся круглой платы - чем меньше масса, тем легче сбалансировать плату и меньше вибрация), голубого цвета (из-за того, что голубые светодиоды самые яркие). Круглая плата быстро вращается, и при вспыхивании светодиодов в нужный момент возникает изображение цифр. Всего в столбце 8 светодиодов, но нижний восьмой используется редко (для отрисовки курсора в меню настройки часов). Матрица отображения цифр взята 5x7 точек (применен готовый знакогенератор от компьютера "Радио 86РК"). Кроме цифр, можно также легко выводить любые буквы.

Светодиодами управляет микроконтроллер AT89C2051, который тоже смонтирован на этой вращающейся плате (весь монтаж на круглой плате ротора сделан тонким эмалированным проводом - опять-таки с целью уменьшения массы ротора). Питание вся схема получает через вращающийся трансформатор, изготовленный из двух ферритовых чашек - одна чашка закреплена неподвижно, другая крутится вместе с круглой платой, и они находятся друг от друга на расстоянии около 0.5 мм. Благодаря этому через высокочастотное магнитное поле передается энергия, питающая круглую плату ротора (микроконтроллер и светодиоды). Такая система передачи энергии не имеет трущихся частей, поэтому долговечна и не создает лишнего шума в работе. Эти часы у меня непрерывно работают с начала 2005 года. Ни разу не ломались, за исключением тех случаев, что я спросонья пальцами попадал во вращающийся ротор (когда выключал будильник часов). Было больно!.. =)

В неподвижной чашке размещена первичная обмотка, питаемая напряжением частотой порядка 30 кГц, в чашке, связанной с круглой платой, находится вторичная обмотка, к ней подключен простейший выпрямитель и далее от него питается схема круглой вращающейся платы. Все вышеописанное представляет из себя просто блок индикации. Кроме этого, еще есть схема, которая отсчитывает время и управляет фазами шагового двигателя. Эта схема тоже работает под управлением микроконтроллера - AT89C52. Данные от блока часов до блока индикации передаются через оптопару со скоростью 57600 бит/сек (используется последовательный порт, встроенный в оба микроконтроллера). Софт, зашитый в основной блок, довольно продвинутый - можно устанавливать время, есть будильник, и даже есть возможность коррекции скорости хода часов.

HddClock_apmlif_rotate_sensor.JPG

Одна из последних доработок - сделал усилитель фотодатчика вращения ротора. Этот датчик нужен только для того, чтобы определить - вращается ротор, или нет. Например, если Вы нечаянно ротор остановили, то по отсутствию импульсов на выходе датчика микроконтроллер это увидит, и раскрутит ротор заново (процедура старта нужна для плавного разгона ротора).

HddClockTransf01IMG_7086.JPG HddClockTransf02IMG_7088.JPG

Другой вариант выполнения вращающегося трансформатора - без ферритового сердечника, в виде большого кольца. Такой трансформатор позволяет уменьшить массу вращающегося ротора, что упрощает балансирование и снижает шум. Катушка изготовляется просто - наматывается между металлическими дисками оснастки (диски сделаны из тех же блинов жесткого диска) вместе с жидкой эпоксидной смолой. После затвердевания смолы оснастка снимается, и получается катушка.

По многочисленным просьбам трудящихся масс выкладываю дополнительные фотографии с аннотациями (здесь не все фотографии, полный архив с фотографиями в исходном разрешении качайте по ссылке 4 ниже).

HddClockIMG_0536-ann.JPG HddClockIMG_0540-ann.JPG HddClockIMG_0542-ann.JPG

1. Выпрямитель с фильтром для питания блока вращающегося столбца. Состоит из двух диодов, дросселя и конденсатора на 0.1 мкФ. На вход выпрямителя подается напряжение с 2-секционной обмотки нижней чашки вращающегося трансформатора (эта чашка вращается вместе с круглой платой).
2. Два винта, с помощью которых крепится нижняя чашка вращающегося трансформатора к плате ротора. Нижняя чашка приклеена эпоксидкой к куску текстолита, который и крепится винтами. С помощью винтов можно не только подстроить положение чашки точно в центре, но и немного подстроить высоту (отрегулировать зазор вращающегося трансформатора).
3. Грузики, с помощью которых производилась грубая балансировка ротора.
4. Микроконтроллер, который мигает светодиодами. Программа в нем совсем тупая - как только через фотодатчик на асинхронный порт приходит байт - он сразу же выдается на линейку светодиодов, и мы видим один из столбцов матрицы. Ротор повернулся на долю градуса - тут же приходит новый байт, и мы видим следующий столбец матрицы. Так происходит развертка изображения. Все - больше микроконтроллер AT89C2051 ничем не заморачивается (зато ой-е как напрягается AT89C52 - этот микроконтроллер виден на другой картинке). Светодиоды расположены на противоположной стороне диска, и подключены к микроконтроллеру тонким эмалированным проводом (весь монтаж сделан таким проводом - для уменьшения веса). Рядом с AT89C2051 виден кварц 11.059 МГц. Раньше его поверхность была чистой и блестящей, но с годами удары пылинок сделали на его поверхности микроскопические кратеры, и от блеска не осталось и следа. По витой паре из провода МГТФ приходит сигнал с фотодатчика.
5. Балка из алюминия, на которой висит верхняя, неподвижная чашка вращающегося трансформатора (она приклеена к балке эпоксидкой). В центре чашки видны два вывода светодиода (на них надет фторопластовый кембрик), торчащие из дырки. Этот светодиод передает код управления включением/выключением светодиодов (подключен к выходу асинхронного порта AT89C52 синим и белым проводом, идущим сверху по балке). Балка жестко закреплена на стойке туго затянутым винтом.
6. Энкодер, совмещенный с кнопкой (на вал можно нажимать вдоль оси) и два светодиода. С помощью энкодера можно менять направление плавного перемещения цифр, устанавливать время часов, устанавливать время будильника, корректировать скорость хода часов (благодаря этой функции часы идут очень точно, их никогда не нужно подводить), программировать сигнал будильника, выключать сигнал будильника. Короче - с помощью энкодера происходит управление часами. Светодиоды подключены, но пока не используются.
7. Реле будильника. Его можно запрограммировать на секундный импульс, а можно - на постоянное включение. Можно совсем не использовать.
8. Микросхема TL494, на которой собран генератор напряжения питания блока вращающегося столбца (частота порядка 30..50 кГц). Мне эта микросхема очень нравится, и я пихаю её куда ни попадя. Микросхема управляет мостом из полевых транзисторов (см. далее).
9. Мост из 4-х полевых транзисторов (мосты и полевые транзисторы я тоже люблю). На выход моста подключена первичная обмотка вращающегося трансформатора (эта обмотка расположена в неподвижной верхней чашке, которая висит на балке 5).
10. Планка, на которую выведены переключающие контакты реле будильника. Хотите - включайте лампу, хотите - музыкальный центр.
11. Еще одна микросхема TL494. Она стабилизирует (ограничивает) ток, которым питаются обмотки фаз двигателя. Благодаря этой микросхеме отсутствует опасность выхода из строя полевых транзисторов, коммутирующих фазы, исключается перегрев обмоток двигателя, а также можно подавать для питания нестабилизированное напряжение 12 вольт (блок питания может состоять только из трансформатора, диодного моста и конденсатора. Должен обеспечиваться ток под нагрузкой около 2 ампер). Большой зеленый резистор 0.22 ом сверху - датчик тока.
12. Накопительный дроссель, мощный диод Шоттки и мощный ключ - составные части стабилизатора тока фаз обмоток двигателя.
13. Аналоговый стабилизатор напряжения +5 вольт LM7805 (аналог КРЕН5В) для питания всей цифровой части схемы. Питается от внешнего нестабилизированного напряжения +12 вольт (слева к часам подходят от блока питания два провода - желтый + и черный -).
14. Линейка из 6 полевых транзисторов - работают в ключевом режиме как трехфазный мост и питают фазы мотора.
15. Через этот коннектор подключен передающий светодиод (передает код для зажигания светодиодов во вращающемся столбце, светодиод находится в центральной дырке вращающегося трансформатора). Подстроечный резистор регулирует в небольших пределах ток через этот светодиод.
16. Сердце всей системы - управляющий микроконтроллер AT89C52. Делает все - крутит мотор (формируя фазы), опрашивает энкодер с кнопкой, формирует интерфейс пользователя, обрабатывает будильник, опрашивает чип часов, анализирует датчик вращения ротора. Снизу рядом с микроконтроллером видна кнопка сброса (не помню, когда последний раз ею пользовался) и кварц на 11.059 МГц.
17. Противная пищалка будильника ("пи-пи-пи-пи..."), которая не дает мне спать по утрам.
18. Усилитель датчика вращения ротора.
19. Чип часов и энергонезависимой (с помощью батарейки) памяти DS1302 фирмы Dallas Semiconductor. Батарейка вставлена в самодельный держатель из проволоки (справа от чипа). В энергонезависимой памяти хранятся настройки часов - время будильника и коэффициент коррекции ухода часов. Благодаря батарейке вся эта инфа не теряется при выключении питания, а также продолжается отсчет времени. Маленький часовой кварц на 32768 Гц висит под платой (на фото он не виден).
20. На заднем плане виден столбец из 8 светодиодов. Его конструкцию подробнее можно рассмотреть, если скачать архив с фотографиями (ссылка дана ниже).
21. Под блином платы ротора на блестящую алюминиевую цилиндрическую поверхность держателя блинов нанесена черная метка (на фото часы перевернуты, поэтому на этом фото метка "над"), которая нужна для работы датчика вращения ротора. Когда метка проходит рядом с оптопарой (работающей на отражение), то поток света на фотодиоде уменьшается, и на микроконтроллер приходит сигнализирующий импульс. Сигнал с фотодатчика усиливается операционным усилителем 18 (микросхема УД1208).

[Исходники, схемы проекта HddClock]

1. Исходник и прошивка для схемы блока вращающегося столбца - http://microsin.ru/Download.cnt/HddClock/Rotor02.rar
2. Исходник и прошивка для схемы основного блока - http://microsin.ru/Download.cnt/HddClock/StepMoto10.rar
3. Сканы принципиальных схем - http://microsin.ru/Download.cnt/HddClock/sch.RAR
4. Фотографии внешнего вида часов - HddClock-photos.rar.
5. Видео, снятое мыльницей Canon PowerShot A520. К сожалению, мыльница не дает сделать видео длиннее 30 секунд, и мои режиссерские способности не позволили показать, как работает все меню (коррекция хода часов, как часы запускаются, как работает будильник и т. д.). Качество тоже не ахти (в реале часы выглядят намного лучше) - слишком маленькая частота кадров. На видео видно мерцание цифр, которого на самом деле нет - моргание получается из-за стробоскопического эффекта (разница между частотой вращения ротора и частотой кадров снятого видео). Звук на видео тоже плохого качества - он не такой, как на самом деле. Светодиоды теперь красные, поменял после ремонта - неудачно попытался выключить будильник и попал пальцами в ротор.

[UPD111219]

Один хороший человек dccharacter повторил конструкцию, правда, на другой аппаратной базе (описания конструкции пока к сожалению нет).

POV clock - new edition

Microchip AN1305 BLDC driver demo

Вот еще часы на другом принципе (стробоскопический эффект), которые мне очень понравились:

[Ссылки]

1. RGB-propeller-clock.mp4 - красивые часы, которые формируют цветную картинку в плоскости вращения ротора. Сделаны из вентилятора от компьютера.
2. Простейший моддинг вентилятора для компьютера - добавление светодиодов на лопасти.
3. "Propeller Clock" Mechanically Scanned LED Clock. Сделано на PIC16C84.
4. Еще одна конструкция на PIC16C84 - PIC clock.
5. Dreamoc 3D display system. Тут уже совсем другой принцип - голография.
6. Strobeshnik - A Digital HDD Clock. Часы из жесткого диска на другом принципе - в пластинах вырезаны цифры.
7. Arduino управляет формированием монохромной картинки линейкой из 72 светодиодов.
8. Световое табло с круговой механической разверткой.
9. BLDC-регулятор трехфазного авиамодельного мотора, работающий по принципу отслеживания противо-ЭДС (собран на ATmega48/88/168).
10. Сборник сервис-мануалов и даташитов по жестким дискам.
11. PROPELLER CLOCK VER5 - видео.
12. Spinning RGB LED Ball II - видео.
13. Часы из HDD на основе стробоскопического эффекта site:radiokot.ru.

 

Комментарии  

 
0 #37 Сергей 28.09.2016 08:48
Можете поподробнее рассказать о конструкции второго варианта вращающегося трансформатора (тот, что между блинами мотается) - каким проводом мотать, сколько витков, как он работает?
Цитировать
 
 
+1 #36 Владимир 09.11.2011 16:39
А какой точно контроллер? На схеме 89С51, на фотографии 89С52.

microsin: не имеет значения - 89C51 или 89C52, код одинаково будет работать на обоих микроконтроллер ах даже без перекомпиляции. Если поставите 89C52, то не ошибетесь.
Цитировать
 
 
0 #35 nwanomaly 05.09.2011 17:52
Спасибо за ответ. Хотел сначала повторить текущую схему, а потом на ее основе свою сделать. ) Из чтения даташитов на микросхемы впрочем уже становиться понятным, чего и как надо поменять.
Цитировать
 
 
0 #34 nwanomaly 05.09.2011 12:16
Скажите пожалуйста, схема в приложенных файлах это последний работающий реализованный вариант? В комментариях читал, что появился фильтр и сигнал Е по другому заводится.

microsin: сейчас уже столько времени прошло, что могу подтвердить только достоверность исходного кода. Схему можно взять просто как иллюстрацию принципа работы, и скорректировать её самостоятельно, исходя из Вашей конкретной реализации.
Цитировать
 
 
0 #33 Дмитрий68 21.03.2011 09:25
Если бы этот девайс был бы на современном микроконтроллер е, то можно было бы и повторить конструкцию. (((((((((((

microsin: гнилая отмазка =). Полно современных микроконтроллер ов с системой команд MCS51. Есть исходники на C, с помощью которых можно портировать проект на любой микроконтроллер с любой системой команд. Проблема изготовления устройства - далеко не в микроконтроллер е.
Цитировать
 
 
0 #32 RUS 16.01.2011 03:48
А из этого изображение можно получить?

microsin: можно, конечно. Рисуйте его по точкам.
Цитировать
 
 
0 #31 Константин 06.12.2010 21:12
Я в электронике слабо разбираюсь, поэтому возник вопросец: как определить подходит мне к примеру микросхема или не подходит? К примеру TL494 есть несколько вариантов, а какой выбрать не могу понять.

microsin: чтобы понять, подходит микросхема или нет, обычно поступают так - открывают на неё даташит, и смотрят интересующие параметры - ток потребления, напряжение питания, тип корпуса, алгоритм функционировани я, параметры времени и проч. - и потом уже решают, подходит микросхема по назначению или нет. К сожалению, хотя бы минимальные знания электроники в этом процессе все же необходимы.
Цитировать
 
 
0 #30 Константин 05.12.2010 23:32
Часы эти от чего питаются? Розетка или от компа?

microsin: часы питаются от источника постоянного тока 11..13 вольт, потребляемый ток около 2 А. Можно запитать от БП компьютера, а можно и от розетки (через блок питания на 12 вольт, конечно).
Цитировать
 
 
0 #29 Ramzez 22.10.2010 01:16
Обещал вам показать свой результат )) Пока что это первое что получилось-вывод слова " привет ", трансформатор я не смог запустить, поэтому пока что на щетках от маленького двигателя.
http://file.qip.ru/photo/39PmeNkV/CIMG1206.html
И видео на трубе. но там слишком интенсивная освещенность от лампочек, дают сбои на датчик и изображение дергается )
http://www.youtube.com/watch?v=yqklCy3K2Gg

Но вот беда, не попал я со светодиодами... точнее не подумал о них. Слишком мал угол, поэтому центр слова ярко горит, а края тусклее, а какие диоды использовали вы? В SMD варианте?

microsin: очень рад был увидеть Вашу конструкцию в работе. Для начала очень неплохо. Я действительно использовал светодиоды для поверхностного монтажа (SMD), самые маленькие, какие смог достать. У них не было узкой диаграммы направленности, и поэтому надпись хорошо видно и под углом, со всех сторон. Вы тоже можете спилить линзы, и получите примерно то же самое. Но лучше, конечно, взять светодиоды поменьше, и разместить их как можно ближе друг к другу. Масса ротора уменьшится, и качество картинки увеличится.
Цитировать
 
 
0 #28 андрюха 10.09.2010 20:20
А поподробнее где-то можно почитать про это? Дайте ссылочку пожалуйста. Можно в ICQ, чтоб здесь не захламлять. 550382057

microsin: на Хабре статья есть.
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Top of Page