Программирование BASCOM
Меню сайта
Категории каталога
Мои статьи [113]
Наш опрос
Оцените мой сайт
Всего ответов: 1160
Главная » Статьи » Мои статьи

Термометр и бегущая строка в вентиляторе
Эффект "висящего в воздухе" текста или изображения завораживает. Устройств, использующих эффект "POV" (Persistence of vision) создано уже много. Вот еще одно, созданное с помощью AVR-BASCOM. Оно показывает температуру и бегущую строку над лопастями вентилятора.
 
 
Для создания устройства я выбрал вентилятор "VP-30C" фирмы "Fagor". Он один из немногих настенных и имеет пульт д/у. При цене в 800р это просто подарок.
 
 
Схема устройства:
 
 
Процессор взят ATmega8L. Подойдет любой другой с объемом памяти не менее 8Кб и аппаратным SPI. Текст бегущей строки хранится в AT25256 (в нее уместился словарик на 1000 слов). Можно взять другие из 25 или 45 серий. Для измерения температуры выбран DS18B20 только из-за точности в 0,5 градуса. В качестве датчика положения - датчик Холла SS526D. Он один из немногих имеет цифровой выход. Можно взять с аналоговым выходом или использовать пару ИК-светодиод-фотодиод с установкой на корпусе флажка-прерывателя. И то и другое потребует формирователя импульса. ВАЖНО!!! SS526D имеет дополнительную функцию - "направление движения", поэтому требует ДВА магнита - "север" и "юг". Для индикации применены белые сверхяркие SMD-светодиоды шириной 1,5мм. В каждом разряде по два параллельно. Ток через пару около 100мА. По 50мА на светодиод - несколько многовато, но допустимо, учитывая импульсный режим их работы и хороший обдув. На время наладки устройства рекомендую, все-таки, установить токоограничительные резисторы по 100 Ом вместо штатных 47 Ом. Применение сверхярких светодиодов обязательно - при вращении их визуальная яркость значительно падает. Для зажигания светодиодов применена сборка ключей ULN2803A. При замене ее на обычные транзисторы следует не забыть установить базовые токоограничительные резисторы (в ULN2803A они уже есть). Для подсветки использованы по два красных, синих и зеленых светодиода. Типоразмеры их у меня оказались разными, но здесь это не столь важно. Ток для питания схемы вырабатывает генератор из 8 катушек, вращающихся над восьмиполюсным магнитом от тонвала видеомагнитофона. Для изготовления катушек использованы выходные трансформаторы от телефонов PANAFON. Они имеют размер 10х10мм. Замыкающие пластины убираются, оставляются только Ш-образные. На каркас наматывается 1200 витков провода ПЭВ-0,1. Трансформаторы приклеиваются на плату по кругу через 45 градусов. Соседние катушки соединяются встречно-последовательно. Образованные таким образом четыре пары соединяются параллельно. Готовый генератор должен выдавать около 8 вольт на холостом ходу и не менее 5 вольт при токе нагрузки 150мА. Для стабилизации напряжения применен аналог мощного стабилитрона на VR1-TL431 и Q1-2SB962. Обух корпуса (коллектор) Q1 припаян к шине массы и, поэтому, не требует радиатора. Выпрямительные диоды - SS12. Можно использовать любые Шоттки на ток не менее 0,5А. Дроссель L1 не менее 10мГ и должен быть рассчитан на ток до 800мА. Соединения дачиков температуры и Холла с процессором, учитывая сильные магнитные наводки в плате, выполнены экранированным проводом. Плата устройства:
 
 
Кронштейн покрашен под цвет лопастей крыльчатки:
 
 
Для балансировки платы использованы ось и подшипники от головки видеомагнитофона. (Противовесы из припоя - регулировка паяльником):
 
 
Плата привинчена к крыльчатке шестью саморезами:
 
 
 
После сборки еще раз балансируем:

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

Крыльчатка надета на ось и закреплена гайкой:
 
 
Текст бегущей строки набирается обычным "Блокнотом" WINDOWS. Каждая фраза с новой строки:
 
 
Каждая новая фраза от предыдущей отделяется шестью пробелами, для удобства восприятия. Следует заметить, что "Блокнот" каждую строку завершает байтом "0D" - Carriage Return и "0A" - Line Feed, "AkelPad" - только Line Feed, "Word" при сохранении в "txt"- формате спрашивает, чем завершать строку. Наше устройство при индикации заменит эти символы пробелами, таким образом, их станет 6+2=8 или 6+1=7 (для "AkelPad"). Размер файла текста должен быть точно равен 32768 байт. Для прошивки его в AT25256 (например, программатором PONYPROG) следует поменять расширение "txt" на "bin". При прошивке процессора достаточно одного фьюза - внутренний RC-генератор на 8МГц. Можно еще BOD на 2,7В.
 
Пояснения к программе: Текст воспроизводится восемью сдвоенными светодиодами Led0-Led7. Круг разделен на 256 секторов. 8-разрядный таймер0 используется для подсчета времени оборота между импульсами датчика Холла. Работает он на частоте 31250Гц (8МГц/256). При скорости вращения 600...3000 об/мин восьми разрядов недостаточно (за один оборот число импульсов может превысить 3000), поэтому использована переменная T0_slave для регистрации кол-ва переполнений таймера. По окончании оборота содержимое T0_slave заносится в регистр Compare1a таймера1. 16-разрядный таймер1 работает на частоте 8Мгц (т.е. в 256 раз выше таймера0) в режиме сравнения. В подпрограмме обслуживания его прерываний происходит отображение данных текущего сектора. По достижении Compare1a таймер сбрасывается и начинает отображение нового сектора. После 244 сектора таймер останавливается и программа ожидает завершения оборота. С приходом импульса от датчика Холла программа возвращается к нулевому сектору. Таким образом, скорость вывода секторов текста всегда строго соответствует скорости вращения крыльчатки и отсутствует "сползание" изображения. Справедливости ради следует отметить, что вывод изображения текущего оборота происходит по данным о скорости предыдущего. В установившемся режиме это вообще не сказывается на картинке, а при торможении/ускорении соответственно расширение/сужение текста составляет менее 1%, что практически не заметно на глаз (см. working.avi начиная с 40 секунды). В переменной Transfer хранится кол-во оборотов. На 0-м обороте происходит запрос DS18B20 на измерение температуры. На 60-м обороте (по прошествии более 3 сек) эта температура считывается, преобразуется в десятичный вид и отображается. Еще через 18 оборотов переменная Transfer сбрасывается в 0 и процесс повторяется снова. Время 3 секунды необходимо для исключения "мельтешения" показаний, кроме того, DS18B20 требует до 0,75сек для измерения, что с запасом перекрывает это время. Шина 1-wire довольно медленная, поэтому обмен по ней происходит между 224 и 244 секторами, когда изображение не выводится. Считывание данных из AT25256 происходит аппаратным SPI : по Spiout посылается адрес байта, по Spiin - байт принимается. Обмен происходит на скорости 2Мгц (строка "Clockrate = 4"). Если Ваша микросхема поддерживает скорость обмена в 4Мгц, то можно установить флаг регистра "Spsr = 1" (удвоение скорости SPI). Данный вентилятор имеет три скорости. На первой скорости (самой медленной) напряжения, вырабатываемого генератором, оказалось недостаточно, поэтому на ней отображается только температура (строка If Compare1a > 1950). И даже при этом напряжение составляет около 3,5В и светодиоды горят не в полную силу. На второй скорости отображается и температура и текст, но без подсветки (строки Compare1a < 1720). Напряжение полное - 5В - светодиоды горят в полный накал. На третьей скорости запаса напряжения хватает на подсветку текста. Температуру - синим, латиницу- красным, киррилицу - зеленым. Вообще, на подсветку планы были более глобальные - светодиодов изначально было 12 и планировалась 16-цветная палитра с сегментированными рисунками и подобием цветомузыки, но питания оказалось недостаточно. Причем этот генератор - четвертый вариант. Предыдущие были еще хуже. Вообще слухи об обратимости электромоторов оказались слегка преувеличенными. ПОЭТОМУ, прежде чем повторять этот проект, сначала соберите "обратный" стендик - магнит вращается, а плата с катушками закреплена. Так можно замерить напряжения, проверить под нагрузкой и т.д. В знакогенераторе пропущены некоторые редкоупотребляемые символы (представлены пробелом), поэтому при наборе своих текстов удостоверьтесь в их наличии и, при необходимости, отредактируйте знакогенератор.
 
 
 
Удачи в творчестве! MrShilov.
Категория: Мои статьи | Добавил: bascom (07.12.2009)
Просмотров: 17652 | Комментарии: 18
Всего комментариев: 141 2 »
14  
Вот если бы добавить часы, которые отображались по очереди с температурой, на далласовском таймере типа DS1302...7 или подобном как на http://laserium.narod.ru/prop_clock.html
Насчет питания вопрос решил намного проще, при помощи щетки и одного кругового контакта (использовал внутреннюю обойму подходящего по диаметру подшипника). Минус на корпус двигателя, + на щетку, обойму через термоусадку на вал двигателя, к ней припаян провод...

13  
датчик Хола (правда несколько своеобразный) можно извлечь из любого компьютерного кулера.

12  
Hello there.

I don't know if somebudy reads this post or not.
I created this propeller with at45db161d mem chip. but I can see only 8 Rs (RRRRRRRR) on display. can you guide me to find the problem please?

sorry for writing in english.

11  
Не понял как в личку писать ((( адрес мой vitolyaШАВКАpochta.ru
Можешь дать исходник для работы без внешней памяти (для наглядности пляшущего человечка прописать или хотяб смайлик подмигивающий) если конечно не сложно.
Да и еще мой вентилятор крутится от 3 оборотов в сек периодически наращивая обороты, планирую поставить батарею li-ion, заменить магнит катушкой (короче трансформатор) заряжать во время простоя и работы. Но пока не могу начать так как нет у нас в Архангельске в продаже датчиков холла (оптопару не хочу, пыль))) ), вот обещали на заказ привезти.... больше месяца уже везут.

9  
Я тут писал, писал, а сегодня ничего нет...

10  
Если нужно только пару слов - нет необходимости в 25256 - в памяти более килобайта свободного места. Таблицу символов во внешнюю память или SD-карту поместить можно, но могут возникнуть проблемы со временем - две операции считывания, вычисление положения и т.д. Можно не уложиться в сектор. Возможно потребуется повысить частоту процессора. Нужно все просчитать.
Скайпа у меня нет. Если что нужно - киньте мыло в личку.

8  
Буду очень рад получить ответ на skype nick-vitolya_vs

7  
Привет. У меня вопрос по поводу вывода текста: Почему сделан цикл чтения памяти? я не хочу вводить весь текст нужно только пару слов.... как реализовать (в программе читаем все и далее с начала if N_char>32767 Then N_char=0) пример if N_char=(заново) Then N_char=0 то есть за место (заново) значение из текста например @.... я не силен в программировании помогите разобраться и еще, как подключить sd карту чтоб читало текст с карты. (если возможно таблицу символов поместить тоже в внешнюю память чтоб можно было добавлять графику за место значения символов )

5  
А производится запись 25256 ? Я понял что через один разъем шьется и производится запись промки, так?

6  
Нет, 25256 нужно прошивать отдельно.

4  
waitus ещё меньше

3  
Принцип работы довольно подробно описан в приложении. Для вашего варианта программы могу посоветовать замерять таймером время оборота и соответственно изменять переменную "Flashdelay", иначе ширина надписи будет "гулять".
По умолчанию на процессорах установлено деление на 8 основной частоты, поэтому реальная частота у вас сейчас 1 МГц. Снимите этот флаг.

1-10 11-11
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright Radan Studio © 2017