Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
Карта сайта | Пишите нам | В избранное | eng     

Внимание! У нас изменились номера телефонов. Звоните:
(495) 638-88-00, (499) 940-95-75, факс (499) 735-04-91;
+7(909) 638-88-00 и +7(903) 530-10-01 (Билайн).
       о фирме        электроника     обратная связь

Микроэлектронные проекты. Владислав Шаповалов. ALR REVOLUTION.

Назначение устройства
Данное устройство относится к категории «компьютерного моддинга» и позволяет в «одном корпусе» собрать несколько весьма полезных устройств. В одном серверном корпусе (он примерно в четыре раза больше обычного MidiTowerа) находятся два независимых компьютера (материнские платы стандарта ATX, Raid массив, ATX блоки питания и прочая периферия), аудио-видео коммутатор, радио-тюнер, анализатор спектра и уровня аудио сигнала, усилитель мощности, система охлаждения на шести двенадцати сантиметровых вентиляторах с возможностью регулировки скорости потока воздуха, система наглядного представления загруженности каждого из компьютеров, имеется возможность запуска компьютера в назначенное время. Все данные отображаются на двух инверсных графических LCD 128х64. Управление осуществляется с восьмикнопочной клавиатуры.

Основные функции устройства


  1. Управление громкостью, балансом, тембром НЧ и ВЧ [TDA9859].
  2. Коммутация четырех AV входов/выходов, трех Audio-входов [TDA9859/MAX4618].
  3. Анализатор спектра (mono) и уровня (stereo).
  4. Встроенное радио: 6 фиксированных настроек, поиск [TEA5757H].
  5. Энергонезависимые часы и календарь. Включение любого из 2 компьютеров по расписанию [DS1307].
  6. Анализ и отображение данных, поступающих с 2 компьютеров. Данные поступают с LPT-портов (загрузка процессора (%), загрузка памяти (%), загрузка SWAP-файла (%), сетевая активность (кБ/с)). И непосредственно (не через LPT) вводятся данные о температуре (подключен 1 датчик, максимально - 8) [DS1621], и об активности винчестеров.
  7. Управление скоростью вращения вентиляторов (PWM).
  8. Управление функциями Power On/Off и Reset двух компьютеров.
  9. Включение по паролю с плавающим кодом. При неправильном вводе пароля время до следующей попытки растет в геометрической прогрессии. Возможность смены пароля.
  10. Сенсорное включение и автоматический подъем блока индикаторов и клавиатуры. Автоматическое отключение основных процессоров после отключения ATX блоков питания.

Структура электрической схемы


Электрическая схема собрана на трех процессорах: ATmega32, AТmega16, ATtiny2313.
ATmega32 (работает на частоте 18,432 МHz) выполняет основные управляющие функции: руководство работой AТmega16 (TWI протокол), управление регуляторами тембра и громкости, коммутация аудио-видео входов (TDA9859 - TWI протокол), часы/календарь/будильник (DS1307 - TWI протокол), снятие данных о температуре (DS1621 - TWI протокол) и активности винчестеров, анализатор спектра и уровня аудио сигнала, ввод пароля, отображение данных на два LCD индикатора, контроль клавиатуры, подсветка клавиатуры и дисплея.
Atmega16 (работает на частоте 8 МHz от встроенного генератора) выполняет функции: управление радио, управление скоростью вращения вентиляторов, сбор данных с двух LPT портов, управление Power On/Off и Reset двух компьютеров, управление функцией STANDBY усилителя мощности.
ATtiny2313 (работает на частоте 4 МHz от встроенного генератора) выполняет функции: контроль за работой двигателя сервопривода, опрос датчиков положения блока индикаторов и клавиатуры, озвучивание нажатия кнопок клавиатуры и операций выполняемых сервоприводом (генерация сигнала 3 kHz), включение/выключение питания основной схемы на ATmega32/16, коммуникация с ATmega32 для подтверждения разрешения на выключение питания, опрос сенсорного датчика на включение системы, контроль напряжения на ATX блоках питания двух компьютеров.
Данная электрическая схема имеет полную гальваническую развязку и независимый блок питания. Гальванически разделены: LPT порты, PWM управление вентиляторами, управление Power On/Off и Reset, получение данных об активности жестких дисков и наличие питания +5В на ATX блоках питания.
открыть схему в новом окне

Структура программы для ATmega32


Программа состоит из четырех основных блоков: начальная загрузка, ввод пароля, отображение различных режимов работы и командный блок.
Переменная FLAGS является основной в работе программы. Структура ее такова: последний разряд «К» имеет значение 0 (клавиши не нажимались) и 1 (был ввод с клавиатуры). Остальные разряды определяют режим работы устройства. См. таблицу 1.

Таблица 1. Режимы работы, определяемые переменной FLAGS.

Начальная загрузка. Определение портов ввода-вывода, прерываний, загрузка из EEPROM констант, загрузка пароля. Загрузка анимированной начальной картинки.
Ввод пароля. Формирование пароля с плавающим кодом, контроль ввода пароля, распознавание правильного ввода, формирование задержек и блокировка клавиатуры при неправильном вводе.
Режимы отображения. В зависимости от состояния переменной FLAGS устройство переходит к отображению соответствующего меню. Если разряд «К» имеет значение 1, то микроконтроллер переходит к выполнению командного блока. Для удобства навигации оно структурировано в 5 главных меню с соответствующими подменю.

Меню Подменю
Анализатор спектра Регулировка громкости, баланса, тембров
  Управление  аудио-видео входами
  Управление радио
Часы и календарь  
Анализ данных с двух компьютеров 1 компьютер, 1 группа данных
  1 компьютер, 2 группа данных
  2 компьютер, 1 группа данных
  2 компьютер, 2 группа данных
Power On/Off и Reset  
Установки  






Переход между пунктами меню осуществляется нажатием кнопки «MENU», выбор подменю – кнопка «SUBM», выбор регулируемого параметра – кнопка «SEL», регулировка параметра – кнопки «вверх», «вниз», сохранение настроек текущего меню в долговременную память – кнопка «SAVE», отключение дисплея и подсветки клавиатуры – кнопка «D_OFF», назначение остальных кнопок понятно исходя из контекста меню.
Функции кнопок отображаются на LCD индикаторах над кнопками и меняются в зависимости от конкретного меню или подменю.

Меню «Анализатор спектра». Находясь в этом меню процессор, сначала загружает на правый экран данные соответствующего подменю, а затем переходит к выполнению подпрограммы анализатора спектра и уровня. Обработав данные, поступившие с АЦП, проверив разряд «К», он переходит в спящий режим, из которого выводится прерыванием об окончании АЦП-преобразования, опять обрабатывает данные АЦП и так далее по кругу. Если обнаруживается 1 в разряде «К» - происходит выполнение соответствующих команд, затем опять перезагружаются данные подменю, и цикл возобновляется.

Меню «Часы и календарь». При входе в это меню включается прерывание INT1, которое возникает каждую секунду и формируется микросхемой внешних часов DS1307. При возникновении прерывания происходит считывание показаний часов и отображение их на дисплеях, затем, проверив разряд «К», контроллер переходит в спящий режим, из которого выводится прерыванием INT1, и цикл повторяется.
Меню «Анализ данных с двух компьютеров». При входе в это меню включается прерывание INT1, которое возникает каждую секунду и формируется микросхемой внешних часов DS1307. При возникновении прерывания происходит считывание показаний через шину TWI с ATmega16. Далее данные обрабатываются и отображаются на дисплеях, затем, проверив разряд «К», контроллер переходит в спящий режим, из которого выводится прерыванием INT1 и цикл повторяется. В случае отображения температуры и активности винчестеров каждую секунду происходит считывание температуры с микросхемы DS1621 через шину TWI. Далее порт PB1 начинает работать как вход и считает импульсы с индикатора активности винчестера, поступающие через микросхему CD4503, которая осуществляет подключение к нужному индикатору (1 или 2 компьютера в зависимости от подменю), а в случае неактивности режима переходит в высокоимпедансное состояние. При возникновении прерывания подсчет останавливается, порт PB1 становится опять выходом, происходит обработка поступившего числа импульсов и отображение информации на дисплеях.

Меню «Power On/Off и Reset». При входе в это меню на экранах отображаются 2 картинки и подписи  над кнопками, процессор переходит в спящий режим.

Меню «Установки». Загружаются данные с часов, календаря, из EEPROM загружаются данные о скорости вентиляторов, контрастности LCD, данные о будильнике и константы, необходимые для работы ATmega16, далее процессор переходит в спящий режим.

Командный блок. Любое нажатие клавиатуры приводит к возникновению прерывания INT0. При выполнении прерывания сканируется клавиатура и код клавиши записывается в буфер. Выставляется в 1 разряд «К» переменной FLAGS. К выполнению командного блока процессор переходит только в случае обнаружения 1 в разряде «К». После выполнения команд разряд «К» обнуляется. При входе в командный блок останавливаются все прерывания, таймеры и счетчики и пр. В зависимости от состояния переменной FLAGS и кода нажатой кнопки процессор выполняет соответствующую команду. Это может быть изменение самой переменной FLAGS (переход в другое меню или подменю), изменение параметров (регулировок или настроек) и передача команды или данных подчиненным устройствам.

Протокол обмена данными с ATtiny2313. Фактически обмен происходит через один порт PA3 и выглядит следующим образом. ATtiny2313 каждые 16 секунд производит сканирование напряжения +5В поступающего с каждого из ATX блоков питания. При обнаружении отсутствия питания на 2 ATX блоках (т.е. компьютеры были выключены) она формирует прерывание INT0 и переводит шину PA3 в ноль, затем, с небольшой задержкой, переводит порт PD4 в состояние входа. При возникновении прерывания ATmega32 проверяет состояние входа PA3. Если там обнаруживается ноль, т.е. инициирована процедура отключения питания, контроллер проверяет состояние будильника. Если оно не равно 00:00, т.е. будильник «взведен» и выключать питание нельзя. Для того чтобы передать эту информацию ATtiny2313 ATmega32 в свою очередь переводит порт PА3 в состояние выхода и переводит шину в ноль. Если ATtiny2313 обнаруживает 0 – она переходит в дежурный режим, не отключая питания основной системы и ждет появления +5В от любого из ATX блоков питания, если же обнаруживается 1 – то  система основных процессоров полностью обесточивается, убирается блок индикаторов и клавиатуры.

Структура программы для ATmega16

Данный микроконтроллер является TWI-slave устройством и целиком подчинен командам, поступающим от ATmega32. Он может находится в двух состояниях: однократно выполнять команды (Power On/Off и Reset, StandBy усилителя мощности, запись констант) или выполнять подпрограммы (сбор данных с LPT портов и их обработка, работа с радио). Единственное, что он делает всегда, так это осуществляет PWM модуляцию для регулировки скорости вращения вентиляторов. Структура команд получаемых им от ATmega32 представлена в Таблице 3.

таблица 3

Команда состоит из адреса ATmega16, субадреса команды и данных команды. В режим выполнения подпрограмм контроллер приводится соответствующей командой. Далее он приступает непосредственно к ее выполнению.
В случае работы с LPT портами он подключает нужный LPT порт и инициализирует соответствующее прерывание INT0, INT1. Фактически контроллер эмулирует работу 2 строчного символьного индикатора на контроллере HD44780. В потоке данных он ищет команду 0х80 (начало строки) и далее записывает данные в четыре буфера, разделителем данных является пробел (0х20). Записав четыре потока данных в буфер, он переходит к обработке: собирает данные внутри каждого буфера в одно число, далее, в зависимости от номера буфера, используя соответствующие каждому буферу константы (их передает в начале работы ATmega32 и их можно изменить в меню «установки»), проводит «нормализацию» (превращает число в проценты). Затем записывает 4 итоговых числа в выходной буфер, откуда их может забрать ATmega32.

Если же передана команда работы с радио, то, находясь в подпрограмме, контроллер выдает команды для радио и читает частоту, на которой обнаружена станция. При работе с фиксированными настройками он загружает соответствующую номеру настройки частоту из EEPROM в радио. Управление тюнером происходит по трем проводам (DATA, Clock, Write Enable) плюс вывод моно/стерео (система команд и прочее в PDF от TEA5757H). Учитывать надо только то, что для ввода в тюнер надо использовать «реальную частоту» +10,7 МГц.

О выборе микроконтроллеров и прочих деталей

Контроллер ATmega32 выбран исходя из того, что для анализа спектра требовалось около 1,6 kB оперативной памяти. Сама подпрограмма анализатора спектра построена на преобразовании Фурье – это что-то среднее между Audio Spectrum Monitor (http://elm-chan.org/works/akilcd/report_e.html) и FFT AVR (http://www.apetech.de/article.php?artId=7&nnId=17).
Для получения данных через два LPT порта требовалось 20 свободных портов микроконтроллера – отсюда ATmega16. Она еще удобна и наличием встроенного TWI интерфейса, чего нет, скажем, у AТmega8515.
Изначально прорабатывалась идея получения данных с компьютеров через USB, но…. Во-первых, рассматривалось 2 устройства на USB: IgorPlugUSB (http://www.rifer.narod.ru/usblcd.html) и USB LowCostEdition (http://www.modding-faq.de/index.php?artid=615). Первая трудность заключалась в том, что IgorPlugUSB часто терялось системой и приходилось заниматься поиском «нового оборудования». Вторая схема работала идеально и устойчиво, но она поддерживает работу только с одной программой STLCD (www.stlcd.de), которая может собрать все данные, кроме загрузки процессора. Одним словом ничего не подошло. Да и экономии в «корпусах» это бы не дало. Т.к. USB устройство должно быть всегда включено и не получилось бы подключить к одному контроллеру два USB порта и переключаться между ними.

Выбор программы передачи данных о состоянии системы LCDsmartie5.2 тоже не случаен. В результате анализа данных выдаваемых на 2-х строчный символьный индикатор на контроллере HD44780 разнообразными программами (JALCDS, LCDMONITOR, LCDHYPE, LCDSTUDIO и пр.) выяснилось, что наиболее корректно и сжато передает их только LCDsmartie5.2. Данные в ней идут четко друг за другом, разделены пробелами и стоят сразу после символа начала строки. У других программ структура потока слишком нерациональна и велика.
Для обслуживания двигателя и прочих датчиков требовался минимум, т.е. ATtiny2313.
Оптроны для гальванических развязок брались исходя из быстродействия. Самый быстродействующий оптрон с временами нарастания и спада сигнала 70 нс стоит на вентиляторах. Чуть более медленные «развязывают» LPT порты. Еще более медленные использованы для ввода данных об активности винчестеров.

Радиотюнер на микросхеме TEA5757H. Была использована плата FM-тюнера для компьютера, отпилены ненужные компоненты (SoundBlaster и встроенный процессор для преобразования команд с шины PCI).








Литература:
1. TDA9859
2. TEA5757
3. MAX297
4. MAX4618
5. OP Amps for every one. Ron Manchini. //Texas Instruments, 2002
6. ATMEL.com
Автор проекта: Владислав Шаповалов. E-Mail: 3dfilm@mail.ru.

 Разместите Ваш проект у нас на сайте и его смогут увидеть сотни посетителей в день. Ваши проекты присылайте вебмастеру.
Правила оформления проектов
  1. Необходимо наличие схемы, описания устройства и т.д. (для отдельных проектов - драйвера, программное обеспечение и их описание)
  2. Схемы и другие картинки должны быть в форматах .jpg или.gif. К ним обязательно должны идти подписи, поясняющие, что на данной схеме (картинке) изображено.
  3. Описание устройства - в форматах .doc, .txt или .html.
  4. Проект не должен нарушать чьих-либо авторских прав.
Ваши проекты присылайте вебмастеру
Приглашаем специалистов
В России кризис и увольнения персонала, а в Телесистемах, как обычно, не так как у всех: мы расширяем деятельность, набираем новых сотрудников и ищем новых партнеров.
Изделия для разработчиков
Программатор «PICPROG» «PICPROG» - универсальный промышленный программатор.
Копировщик PIC16x8x Копировщик PIC16x8x - тиражирование в автономном режиме.
Наши телефоны: (495) 638-88-00, (499) 940-95-75, факс (499) 735-04-91, мобильные: (903) 530-10-01 и (909) 638-88-00 (БиЛайн).
E-mail:

Copyright © ООО "Телесистемы", 1997 — 2017    Копируйте на здоровье! За ссылку на www.telesys.ru мы вам будем очень признательны.

Rambler's Top100