Расширение диапазона ШИМ

Тема в разделе "Глядите, что я сделал", создана пользователем sZOOn, 4 фев 2014.

  1. sZOOn

    sZOOn Нерд

    У кого есть соображения по поводу определения максимально возможного диапазона изменения ШИМ - сигнала? Стандарт с использованием analogWrite работает хорошо, но слишком большие ступени регулирования, если в полной темноте включить одну ступень регулировки, соответствующую 1 диапазона 0-255, получается довольно сильный всплеск освещенности, задача - плавно включать-выключать освещение для безболезненного перехода для глаз, возможно с имитацией рассвет-закат.
     
  2. Корней

    Корней Гик

    В ATmega328/168 есть 16-ти битный PWM
     
  3. Megakoteyka

    Megakoteyka Оракул Модератор

  4. sZOOn

    sZOOn Нерд

    Большое спасибо! Только не очень разобрался с Ардуино, у меня UNO и стоит ATMEGA328P-PU - это не он?
     
  5. sZOOn

    sZOOn Нерд

    Большое спасибо, очень интересная статья, попытаюсь изучить. Пока пытаюсь реализовать расширенный ШИМ на основе управления портами.
     
    Последнее редактирование: 4 фев 2014
  6. Megakoteyka

    Megakoteyka Оракул Модератор

    Он самый.
    Программно? Тоже можно, но будут проблемы, когда понадобится добавить задач контроллеру - может не успеть.
     
  7. sZOOn

    sZOOn Нерд

    Да, программно, примерно так:

    i = 0
    while (i<MaxPWM+1) // 512 1024 2048 4096 8192 16384 = MaxPWM
    {
    pppp = B00000000;
    if (i<red)
    {
    pppp += red_ON;
    }
    if (i<green)
    {
    pppp += green_ON;
    }
    if (i<blue)
    {
    pppp += blue_ON;
    }
    PORTD = pppp;
    i++;
    }
    Пока что на Ардуино возлагается только управление RGB + W, вроде бы успевает, но глянув статью выше, понимаю, мое решение не оптимально и подходит только для начального уровня.
     
  8. sZOOn

    sZOOn Нерд

    16-битный ШИМ, все -таки не понятно, как его достать. Практически, с использованием вышеприведенного фрагмента скетча, на 4096 градаций система работает с управлением через COM-порт, т.е. 12-битный ШИМ. Еще нашлась интерсная ссылочка : http://www.odduino.com/blog/primery_s_tlc5940nt/2011-07-25-2
     
    Последнее редактирование: 5 фев 2014
  9. Megakoteyka

    Megakoteyka Оракул Модератор

    Поставьте CodeVision AVR, там есть отличный мастер, позволяющий настроить параметры всей периферии контроллера, на выходе дает С-код - будет гораздо легче разобраться в настройке ШИМа через регистры. Ну и даташит на контроллер должен быть настольной книгой :)
     
  10. sZOOn

    sZOOn Нерд

    Большое спасибо! Поставил, изучаю.
     
  11. sZOOn

    sZOOn Нерд

    Большое спасибо всем откликнувшимся!
    Работу по теме считаю закрытой.
    Использование портов B, C, D контроллера ArduinoUno для генерации ШИМ – сигналов позволило управлять одновременно 8-ю независимыми каналами, которые управляли ключами, нагруженными светодиодными лентами. Разрешение по уровню яркости составило 4096 градаций на каждый канал, при этом частота переключения (мерцания) составляла 90 Гц, что незаметно для глаза и начальный уровень включения подсветки в темном помещении не вызывает неприятного ощущения. Независимое управление позволяет создавать примерное моделирование эффекта «восход-закат», а так же разнообразные световые эффекты. Управляющая программа реализована на C#. Создан так же инструментарий для проверки (настройки) цвета на оконечном устройстве (светодиодной ленте в данном случае), для «сколки» таблицы управления с графика в виде изображения. Система внедряется в затемненном зале совместно с оптическим проектором. Если интересно, могу детализировать отчет.
    Control1.jpg Skolka1.jpg
     
    Последнее редактирование: 14 мар 2014
  12. Megakoteyka

    Megakoteyka Оракул Модератор

    И интересно, и полезно сообществу :)
     
  13. sZOOn

    sZOOn Нерд

    Спасибо за отклик, Megakoteyka, просто, мне кажется, что это займет очень много строк и не каждый заглянувший сочтет необходимым читать до конца :) , но если Вы откликнулись, чувствую, что должен раскрыть детали.
    Итак, небольшая порция - "постановка задачи".
    Работаю инженером в одном из московских планетариев. Купол небольшой, - около 8 м диаметром, проектор звездного неба фирмы Цейс (ну очень заслуженный!). Задача начальной подсветки в том, чтобы обеспечить достаточное освещение для размещения слушателей,но, так же под куполом проводятся и лекции, когда просто полутемного зала недостаточно. Мысль пошла в этом направлении- сделать более мощную, но управляемую подсветку. В платформе проектора встроенные лампы подсветки по 6 штук с синими и 6 с белыми фильтрами. Для привыкания к темноте сперва с пульта проектора производится плавное гашение белого, затем синего, время регулируется настройками т. наз "темнителей", которые при первом знакомстве с техникой пришлось настраивать, но теперь, все работает, за искл., что не прозванивается группа 3-х белых, но это не столь заметно, под куполом еще есть аварийка-5 ламп 220 в с выключателем, поэтому общая обстановка терпимая. Но что будет дальше? Техника старая,само напрашивается усовершенствование, и не просто плавная подсветка, а с верным переходом по цвету (вспомним синий у Цейса), а еще хорошо бы закат-восход смоделировать, а еще для праздника какие-нибудь цветовые эффекты запустить :) Так и родилось решение компьютерного управления, в перспективе и сам Цейс на компьютер посадить, ну и выбрать несложную для проектирования платформу. К стати, к Ардуино перешел от MP 710, но его глубоко не копал, мало нашел информации.
    Продолжение следует! :)
     
    Последнее редактирование: 29 мар 2014
    Megakoteyka нравится это.
  14. sZOOn

    sZOOn Нерд

    Идея со светодиодными лентами пришла не только из обзора возможных решений, но и потому, что ряд проекторов аппарата был переделан под светодиоды, но там Ардуино не потребовалось :) Закат-восход моделировать было решено управлением 5-метровой лентой целиком, примерно 1/4 горизонта планетария. Разбиение на мелкие сегменты и управление эффектом изменения сектора засветки повлекло бы усложнение электрической схемы и системы управления. При этом необходимо было учесть, что восход происходит на востоке, закат - на западе. Следствием этих рассуждений явилась необходимость наличия 3-х RGB каналов управления, да еще наличие дополнительного белого (W) канала для обеспечения усиленного светового потока просто для освещения. Управление с помощью ШИМ режима предпочтительней управления постоянным током в силу облегченного температурного режима осветителей, но необходимо учитывать особенности зрения человека- частота каждого осветителя (светодиода) должна быть более 70 герц, для отсутствия наблюдаемого мерцания. Сравнение контроллеров MP710 и Ардуино выявило, что последний удовлетворяет зтим требованиям. Стандартное применение Ардуино в ШИМ режиме, используя Analogwrite не позволяет охватить указанные условия, использование таймера,как я понял, тоже не обеспечивает многоканального независимого управления с заданной частотой. Было принято решение построить систему ШИМ с помощью управления регистрами портов. Портов Ардуино Уно - 3 штуки: B,C,D, в которых по нескольку пинов (выходов/входов). Из них в каждом можно выделить по 4 пина, которыми безболезненно можно управлять, другие являются специализированными (подключение кварца, сигналы синхронизации и программирования контроллера). Очень важный этап в данном случае определение количества градаций (динамического диапазона) яркости светодиодов. Необходимо было установить первую ступень (минимальную засветку) такой интенсивности, чтобы по сравнению с абсолютной темнотой она не воспринималась, как вспышка, а как очень слабая засветка. По сравнению с MP710, в котором удалось раскрутить 256 градаций, Адуино удалось раскрутить на 16 384 градаций, но только на один порт с частотой обновления около 50 герц. Уменьшение кол-ва градаций до 4096 позволило управлять двумя независимыми и третьим зависимым портами с частотой обновления около 90 герц, что является приемлемым результатом для исходных требований.
     
    Последнее редактирование: 20 мар 2014
    ИгорьК и Megakoteyka нравится это.
  15. sZOOn

    sZOOn Нерд

    Все эти прикидки происходили одновременно с написанием скетча и управляющей программы. Основу скетча составляет приведенный выше фрагмент, скриншоты отдельных утилит так же см. выше. Политика взаимодействия контроллера и РС определилась в результате множества экспериментов и удовлетворительной признан постоянный обмен данными (контроллер передает в РС только контрольный байт), что обеспечило высокое быстродействие. Но инициализация порта должна происходить при скорости 57600. Небольшое замечание к пользовательскому интерфейсу РС: необходимым условием стало интерактивное управление яркостью монитора для обеспечения минимальной засветки помещения. Интерфейс затачивался под палец и в проекте было использовано сенсорное стекло, наложенное на монитор. Скриншот основного экрана прилеплен. Более детально - в личку.
    Illum1-1.jpg
    Всем удачи!
     
  16. sZOOn

    sZOOn Нерд

    Извиняюсь за не в тему, но прикольный продукт родился мимоходом на том же принципе ШИМ - лазерная указка с регулировкой яркости, по моему профилю работы - вещь нужная. На 564ЛН2 генератор с регулируемой скважностью+ транзисторный ключ, ну и питание немножко от лазерного диода развязано. Да здравствует ШИМ! :)