Перейти к содержанию

parovoZZ

Members
  • Постов

    169
  • Зарегистрирован

  • Посещение

Весь контент parovoZZ

  1. Казалось бы, ведь этого добра навалом? Какие задачи ставились при проектировании диммера: 1. Компактный настолько, насколько это возможно. Должен влезать в монтажную коробку. 2. Блок питания простой настолько, насколько это возможно 3. Пружинные клеммники 4. Конечно же, радиоинтерфейс 5. Проводное управление. Зачем? Пусть будет. 6. Полноценное подключение к сети. Двухпроводка не планировалась изначально. Устройство собрано на МК, а это значит, что можно организовать абсолютно любую функциональность устройства. Например, таймер работы - забыли выключить свет и он выключился через заданный промежуток времени самостоятельно. Плавное включение и выключение. Задержка выключения после подачи команды на выключение - не интересно же уходить в потёмках? Обратная связь в виде изменения яркости свечения на одну ступень. Ну и прочие эффекты. Схема здесь: https://easyeda.com/Parovozz/dimmer-v1-1-841 Схема не по ГОСТ. Нарисована хрен знает когда. Так что звиняйте. Блок питания - классический конденсаторный. Такое решение крайне надёжное (применён X/Y конденсатор), но есть у него недостаток: заряд накопительного конденсатора в фильтре выпрямителя происходит только в отрицательный полупериод сети. При положительном периоде заряда нет и питаемся мы только той энергией, которая есть в этом конденсаторе. Есть и положительный момент - заряд и подпитка конденсатора происходит в течение всего отрицательного периода, пока напряжение в сети выше напряжения на конденсаторе. В классическом выпрямителе не так - заряд происходит только в пике полуволны. Емкость балластного конденсатора выбрана не слишком большой, чтобы удовлетворить требованиям по габариту решения. Поэтому и ток в цепи не высок - всего 40 мА. Такое решение накладывает сильные ограничения на потребляемый ток. Поэтому микроконтроллер всегда спит, когда ему делать нечего. Симистор открывается коротким импульсом, не превышающим 50 мкс. Но основной потребитель энергии - это, конечно же, радиотрансивер. В качестве него применяется набивший оскомину nrf24l01+. Он не позволяет задавать длительность преамбулы радиопакета сколь угодно длинной - всего 5 байт. Поэтому фокусы с его периодическим отключением (для сохранения энергии) не проходят. Обязательно наличие предохранителей. Это системный предохранитель в виде PTC с начальным сопротивлением около 50 Ом, а также предохранитель цепи питания лампы - классический 5х20. Детектор нуля - резисторный. Количество резисторов и их типоразмер подобран из условия номинального напряжения на них. Обязательно включён вачдог с периодом 250 мс, обязательно включен монитор питания. Уровень напряжения монитора питания согласован с минимальным уровнем питания радиотрансивера. Нам не зачем работать, если радиотрансивер "отвалился" по питанию. Радиотрансивер же каждые 5 секунд проходит полную переинициализацию вне зависимости ни от чего. Большую головную боль доставили клеммники. Они должны быть пружинными, компактными и на 250 вольт. Такие нашёл (выводы у них расположены по диагонали, что и дало 250 вольт), но только под провод 1.5 мм2. Высота клеммников всего 12 мм и они отлично согласуются с высотой остальных компонентов, которые подбирались очень тщательно. Итоговые размеры 45х50. Скошенные края для удобства укладки проводов. Design =) Симистор в планарном исполнении, охлаждение с помощью полигона на плате. Устройство изначально планировалось под 1 ампер тока в нагрузке, но LED лампы гораздо скромнее в своих аппетитах... Симистор подобран чувствительным - ток управления всего 5-10 мА. Управление непосредственно с ноги МК через ограничительный резистор. TVS диод для снижения уровня импульсов, проникающих через емкость симистора. Устройство собрано на двух платах: одна плата силовая, вторая плата с МК и трансивером. МК - Attiny441/841. Платы крепятся друг к другу перпендикулярно. Монтаж преимущественно планарный, двухсторонний. По итогу эксплуатации выяснилось следующее. Каждая светодиодная лампа диммируется по-своему. Лампы из икеа (ледаре) разных лет выпуска так же работают по-разному. Более старшая не хочет зажигаться, если фаза напряжения диммирования начинается не со 180 градусов. А если открывать симистор сразу после перехода через ноль, то загорается сразу. Диммирование "вниз" - нет никаких проблем. Правда, на момент покупки (более 7 лет назад) она не позиционировалась как диммируемая. Новая ледаре не имеет таких проблем, она легче по весу, и...гудит. Очень понравились филаментные лампы. При диммировании ведут они себя как лампы накаливания. Итог такой - под каждую конкретную лампу необходимо подстраивать параметры. *провода для отладки.
  2. Кто подскажет, как найти точку максимальной эффективности (максимального КПД) в работе БП, собранного на LNK302 (3202)? Т.е. в конечном итоге будет шина питания 3.3 вольта с током порядка 50 мА. Перед ней будет DC-DC преобразователь с частотой 1-2 МГц, а вот уже его буду питать от LNK. С учетом КПД низковольтового DC-DC мне нужна мощность порядка 250 мВт. Поигрался в PI Experts на сайте, но так и не нашел максимального КПД( Вот как PI Experts его вычисляет?
  3. Это про I2C? Что имеется ввиду? Я I2C slave не реализовывал. В любом случае, там придется всё делать ручками.
  4. И что в этом такого? Чудаков и среди мужиков хватает. Я себе лог.анализатор взял с полосой до 100 МГц. Оно мне сейчас не нужно, но на будущее. А будущее вот уже на пятки наступает.
  5. В SOIC можно, в TSOP можно, но в DIP??? Это надо стараться тогда, а не тяп-ляп советские фильмы можно смотреть вообще без остановки. я имел ввиду ещё поход в магазин/рынок
  6. питающую ногу перекусить у той, которая "не играет". Если не угадали, подпаять обратно. Делов-то часа на три. А девочка целую неделю пытается найти очевидное.
  7. Это как? Можно снять карту напряжений, но это абсолютно бессмысленное занятие, если нет такой карты напряжений от производителя. Да оно и вдвойне бессмысленное, когда второй УНЧ просаживает напряжение на шине питания вплоть до гула. Если усилитель заведётся, то катушка в динамиках может и погореть.
  8. где-то такой валяется. Очень быстро изнашиваются насадки(( и ручка прогревается быстрее, чем жало((( Если неумеючи с паялом туда залезть, будет хуже, чем от фена. Дорожки отлетают на раз. Ну или я с феном просто уже на блатыкался)) DIP корпуса вообще не воспринимаю)))
  9. когда выпаиваешь - без разницы. Остатки припоя медной оплеткой убрать. Очистить отверстия любой стальной иголкой. А вот когда напряжение питания подаёшь - надо всё внимательно осмотреть на предмет наличия соплей.. а что ей будет? Насадка только нужна.
  10. Бокорезами ноги к черту. Затем паяльником оставшиеся куски ног выпаять. Впаять новую. Всё. Но лучше феном. Если полярность не та, то через пару минут работы он снимет шляпу.
  11. Микросхема стоит 70 рублей. Давно б уже купила и заменила. Вполне вероятно, что одна из них подохла (возбуд?) и просаживает питание так, что БП не может вытащить по току. Отсюда и гул.
  12. В смысле зависала? Она полностью аналоговая. Зависать там нечему. А вот рекалибровка у нее странная - работает в одну сторону((. Если что-то массивное положить на сенсор и подождать буквально чуть-чуть, то после этого она назад уже не возвращается. Приходится скидывать питалово.
  13. Тут всё просто. Допустим, есть хамелеон. Хамелеон в каждый момент времени может быть только одного цвета. Весь перечень цветов, в которые может окраситься хамелеон, мы заранее определили. Где-то в коде присваиваем ему цвет. А когда нам необходимо задать реакцию хамелеона на определённый цвет, пользуемся обычным switch ... case.Если реакция не перекликается с другими цветами, то в конце ставим break;, ежели перекликается - ничего не ставим и проваливаемся в следующий case. Ой... это уже учебник по программированию....
  14. Вместо стабилитрона D1 надо ставить снаббер. Стабилитрон не так быстр, как хочется.
  15. а комментарий //включаем подтягивающие резисторы на PB1 и PB2 это к чему?
  16. Да массив и структура - это одно и тоже. Только структуру надо выравнивать (компиляторы разные бывают). А если создать массив структур, то по полям структур можно "скользить" с помощью указателя также, как и по элементам массива.
  17. @Sasha00 ну накрутил. Как по мне, так уже проще МК поставить с операционником внутри, подключить к нему ПИР датчик напрямую и нарулить любой алгоритм. Может уже на готовый посмотреть? Там всё это есть всего за 400 рублей.
  18. parovoZZ

    Помощь с кодом

    Один челдон утверждал, что по военной приемке читать состояние пина надо несколько раз. А чтобы не было импульсных помех на пине, то RC цепь и подтяжка. Можно применять как порознь, так и вместе.
  19. Может. Но тогда тем более не ясен цикл многократной проверки этой переменной. Если нужна некая задержка между выводами символов на бегущую строку, то это надо организовывать через таймер. После отправки символа проверяем состояние флага и в сон. Выходим из сна по таймеру. Таким образом, у нас в приоритете вывод символов на экран, а в оставшееся время мы делаем все свои хозяйские дела. Как результат - стабильная скорость вывода символов на экран.
  20. ну так а какие ещё вопросы? Если так хочется из китая тянуть, то это алчипс или элсисоси. Но 2 тиньки можно и здесь купить с гарантированным результатом. Мигание как организовано? Мы так до сих пор и не увидели.
  21. Раз такой механизм выхода предусмотрен, значит им можно пользоваться. Лично я return использую для возврата значения, чаще всего это булево значение-признак как отработала функция. В остальных случаях это оператор if ... else. Дальше мне не понятно: для чего организовывать цикл и внутри него многократную проверку флага? Да ещё и с задержкой. Дело в том, что пока мы крутимся в этом цикле, флаг этот никоим образом не может измениться. И без разницы, как его передавать в функцию - через указатель или по значению. Другое дело, если это указатель на регистр порта... Лично мое мнение: вся работа с кнопками должна организовываться через конечный автомат. Сейчас и кнопка и её два состояния позволяют писать более-менее читаемый код. Если кнопок будет не одна, у каждой кнопки будет несколько состояний (однократное нажатие, длинное нажатие, двухкратное и т.д.), то написать читаемый код в такой манере будет всё сложнее и сложнее. Усложниться и отладка. Вот это: называется маска. Логичнее всего её вынести в секцию дефайнов: #define switch_mask 4 и в коде писать так: if (*fl & switch_mask) {} Когда вдруг что-то поменяется или в схемотехнике, или в программе, то такие константы проще всего будет править в секции дефайнов, чем вручную парсить код на предмет их исправления.
  22. Ввиду крайней аскетичности редактора кода IAR, очень сильно хочется приучить к этому делу VS Code. Кидаю папку в VS Code, прописываю пути до папок с библиотеками dlib и clib, к папке с инклюдами. И вроде как всё подхватывается, но при наборе, например, следующего кода: P1OUT |= BIT1; не появляются подсказки. При нажатии Ctrl + пробел, редактор пишет "предложения не найдены". Но если встать на любое слово и из контекстного меню вызвать "перейти к определению", то редактор открывает заголовочник (вернее сказать открывает все заголовочники), где дано/даны определения. Так вот вопрос - как же настроить этот intellisense? Есть какая-то возможность прописать целевой МК так, чтобы редактор не "шерстил" все заголовочные файлы, а только для целевого МК? И куда прописать специфичные директивы типа __persistent и прочие? Ещё немного лирики. Установил два расширения: IAR Embedded Workbench extension и IAR For Visual Studio Code. Первое просит вручную создать iar.json и вписать туда конфигурацию. На удивление, при нажатии Ctrl + Shift + B начинается сборка проекта (не забыть только задефайнить МК) и выводятся варнинги и ошибки, если такие обнаружены. Второе расширение полуавтоматическое: необходимо покликать в статус баре и в файле c_cpp_properties.json появятся необходимая конфигурация. Но вот сборка не идет - не видит компилятора. Но мне оно не особо нужно - собрать могу и в IAR, тем более что отладку провожу там же. Но в обоих случаях Intellisense также не хочет работать... ыыыы редактор стоит давно, но вот плотно заняться им решил пару дней назад. ыыыыыыы МК: MSP430
×
×
  • Создать...