Защита ламп накаливания.
Re: Защита ламп накаливания.
~Vlad~ можете скомпилить для 206-го ПИКа, может что-то не так делаю?
Re: Защита ламп накаливания.
1) Лампочки, мощностью менее 40Вт, в частности 10Вт от "холодильника", через конденсатор 0.1 мкФ светиться в пол накала, лампы больной мощности из-за малого сопротивления спирали в холодном состоянии не светятся - закон Ома! В этой теме кто то уже делал эксперимент с лампочкой малой мощности и она у него постоянно светилась. Не будет лишним напомнить, что конденсаторный блок питания нужно рассматривать как источник ТОКА! 1мкФ ~ 70мА ->0,1мкФ ~ 7мА. Делаем выводы. Для мелких лампочек необходимо немного изменить схему, и включать устройство не в разрыв провода, т.о. на схему подавать 230 В а нагрузку включить в разрыв проводника симистора MT2. Функция определения трансформатора в этом случае работать не будет.
2) Скопилить не проблема, пожалуйста... учтите, что эта прошивка скомпилирована из последней модификации программы, там 2 порта для управления симистором (rev 60)...
3) У всех у кого не работает, выкладываем фото собранной платы + тип симистора + если каке-то номиналы меняли сами, то схемку с реально установленными номиналами элементов..... будем посмотреть
По моему опыту, когда я только начал программировать (между прочим это был мой первый реальный проект), я столкнулся с тем, что иногда не работает плата, и как потом оказалось, дело было в том, что я в настройках программатора (ICD2) не выбрал правильный режим работы и он затирал мне константу (там надо указать диапазон программируемой памяти на 1 меньше, чем есть у контроллера, т.к. в полдней ячейки памяти содержится калибровочная константа для внутреннего генератора), или как вариант вначале читать контроллер, чтобы сохранить константу и потом его записывать, тогда все будет в порядке.
Если константа все таки затерлась, то ее можно восстановить двумя способами:
1) При помощи PicKit2, там есть встроенная опция калибровки;
2) Изменить в мой проект в начале следующим образом:
ORG 00h;
bsf OSCCAL,0;
goto $;
Необходимо отпаять R1, и на 4 ножке контроллера осциллографом наблюдать частоту 1 МГц, в случае ее отклонения изменяем содержимое регистра OSCCAL согласно даташиту и подбираем значение при котором на выходе будет частота наиболее близкая к искомой.
для подбора еще раз модифицируем код:
ORG 00h ;
movlw (0xXX | 0x01);
movwf OSCCAL ;
goto $;
где 0xXX - подбираемая константа в 16-ричном виде ( а | 0x01- это для профилактики непонимания даташитов)).
После подбора, если вам не удастся прописать ее в память контроллера, то модифицируем код:
ORG 00h ;
movlw (0xXX | 0x01);
movwf OSCCAL ;
Ну или еще вариант, только компилировать надо не в режиме симуляции в MPLABSIM (прописываем в конце программы перед словом end нашу константу, причем код в начала не меняекм, как в оригинале):
org 0x1ff ( в зависимости от контроллера адрес последней ячейки памяти!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! это для 512 байтового)
movlw 0xХХ;
end
Контроллеры данной серии стартуют не с адреса 0х00 а с последнего адреса, в который не заводе прописывается инструкция movlw 0xХХ, что мы и делаем в ручную, в случае порчи заводского значения.
Для Микрочипа у меня есть все программаторы, по этому других способов, кроме кошерных, предожить не могу, т.к. для себя я не вижу необходимости разбираться с потусторонними силами альтернативных способов программирования микроконтроллеров данного производителя. 
2) Скопилить не проблема, пожалуйста... учтите, что эта прошивка скомпилирована из последней модификации программы, там 2 порта для управления симистором (rev 60)...
3) У всех у кого не работает, выкладываем фото собранной платы + тип симистора + если каке-то номиналы меняли сами, то схемку с реально установленными номиналами элементов..... будем посмотреть
Если константа все таки затерлась, то ее можно восстановить двумя способами:
1) При помощи PicKit2, там есть встроенная опция калибровки;
2) Изменить в мой проект в начале следующим образом:
ORG 00h;
bsf OSCCAL,0;
goto $;
Необходимо отпаять R1, и на 4 ножке контроллера осциллографом наблюдать частоту 1 МГц, в случае ее отклонения изменяем содержимое регистра OSCCAL согласно даташиту и подбираем значение при котором на выходе будет частота наиболее близкая к искомой.
для подбора еще раз модифицируем код:
ORG 00h ;
movlw (0xXX | 0x01);
movwf OSCCAL ;
goto $;
где 0xXX - подбираемая константа в 16-ричном виде ( а | 0x01- это для профилактики непонимания даташитов)).
После подбора, если вам не удастся прописать ее в память контроллера, то модифицируем код:
ORG 00h ;
movlw (0xXX | 0x01);
movwf OSCCAL ;
Ну или еще вариант, только компилировать надо не в режиме симуляции в MPLABSIM (прописываем в конце программы перед словом end нашу константу, причем код в начала не меняекм, как в оригинале):
org 0x1ff ( в зависимости от контроллера адрес последней ячейки памяти!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! это для 512 байтового)
movlw 0xХХ;
end
Контроллеры данной серии стартуют не с адреса 0х00 а с последнего адреса, в который не заводе прописывается инструкция movlw 0xХХ, что мы и делаем в ручную, в случае порчи заводского значения.
- Вложения
-
- DIMMER.hex
- (1.46 КБ) 409 скачиваний
Re: Защита ламп накаливания.
~Vlad~ , спасибо
совсем другое дело! ВТА204-800 стоял в плате, перепрошил и добавил резистор на управляющий симмистора и вуаля, все заработало
. Соберу и второй екземпляр теперь, еще один такой Пик есть в наличии. Все красиво, вот только на плате резистор R2 1кОм лучше не SMD использовать, надежнее будет.
совсем другое дело! ВТА204-800 стоял в плате, перепрошил и добавил резистор на управляющий симмистора и вуаля, все заработало Re: Защита ламп накаливания.
Отлично, я рад, что у вас заработало...
По R2 возражение принимаю. Но я руководствовался тем, что для конденсатора 0.1 uF этого вполне достаточно, даже по импульсному току, а вот для 0.22-0.47 надо ставить или выводной, или два-три последовательно SMD1206.
По R2 возражение принимаю. Но я руководствовался тем, что для конденсатора 0.1 uF этого вполне достаточно, даже по импульсному току, а вот для 0.22-0.47 надо ставить или выводной, или два-три последовательно SMD1206.
Re: Защита ламп накаливания.
VLAD, к вам есть несколько вопросов, может просветите.
Как задать тип процессора в самой оболочке MPLAB IDE - понятно, а вот для использования лишь одного макроассемблера - как указать тип процессора в самом исходном файле?
Стандартно это делается, например, путем включения в файл строки #include "P10f222.inc", но в исходнике у вас применены операторы условной компиляции, видимо чтобы оперативнее изменять тип процессора прямо из оболочки.
Я было попробовал заранее определить метку типа #define __10f222, но, при компиляции вывалилась куча ошибок.
И еще, вы для одних типов процессоров в строке конфигурации - включаете защиту памяти программ (_CP_ON), для других - нет (_CP_OFF).
Это связано с их аппаратными особенностями и по другому нельзя, или просто так написалось?
Как задать тип процессора в самой оболочке MPLAB IDE - понятно, а вот для использования лишь одного макроассемблера - как указать тип процессора в самом исходном файле?
Стандартно это делается, например, путем включения в файл строки #include "P10f222.inc", но в исходнике у вас применены операторы условной компиляции, видимо чтобы оперативнее изменять тип процессора прямо из оболочки.
Я было попробовал заранее определить метку типа #define __10f222, но, при компиляции вывалилась куча ошибок.
И еще, вы для одних типов процессоров в строке конфигурации - включаете защиту памяти программ (_CP_ON), для других - нет (_CP_OFF).
Это связано с их аппаратными особенностями и по другому нельзя, или просто так написалось?
Re: Защита ламп накаливания.
1) Тип процессора в коде указывается через #include, все верно, но т.к. он еще указывается и конфигурацией IDE в особом виде, то работают команды макро-подстановки и у вас возникает исключение, дублирование , либо переопределение, что не допустимо. Тип указывается всегда, это обязательно - Configure>Select Device.
Если вам надо только один типа процессора, то просто удалите все макросы, кроме содержания макроподстановки интересующего вас контроллера, ну и указать его в п.1 обязательно, т.к. это определяет настройки компилятора, мэйкера и прочих утилит, которые трудяться на наше благо и создают нам правильный .hex выглядеть будет примерно так:
IFDEF __10F222; удаляем
LIST P=10f222
#include "P10f222.inc"
__CONFIG (_CP_OFF & _WDT_OFF & _MCLRE_OFF & _MCPU_OFF & _IOSCFS_4MHZ)
ENDIF удаляем
Посмотреть или установить конфигурационные биты можно в Configure>Configuration Bits (для того, чтобы установить их в ручную, игнорируя запись в коде, надо снять галочку Configuration bit set in code).
Кстати макроподстановки, язык препроцессора, это вообще великая вещь, освоив разок вы получите кучу бонусов в виде легко перестраиваемого проекта.
2)
Просто так написалось видимо..., на работу устройства ни как не влияет.
Если вам надо только один типа процессора, то просто удалите все макросы, кроме содержания макроподстановки интересующего вас контроллера, ну и указать его в п.1 обязательно, т.к. это определяет настройки компилятора, мэйкера и прочих утилит, которые трудяться на наше благо и создают нам правильный .hex выглядеть будет примерно так:
IFDEF __10F222; удаляем
LIST P=10f222
#include "P10f222.inc"
__CONFIG (_CP_OFF & _WDT_OFF & _MCLRE_OFF & _MCPU_OFF & _IOSCFS_4MHZ)
ENDIF удаляем
Посмотреть или установить конфигурационные биты можно в Configure>Configuration Bits (для того, чтобы установить их в ручную, игнорируя запись в коде, надо снять галочку Configuration bit set in code).
Кстати макроподстановки, язык препроцессора, это вообще великая вещь, освоив разок вы получите кучу бонусов в виде легко перестраиваемого проекта.
2)
Re: Защита ламп накаливания.
VLAD, большое спасибо за консультацию.
Просто думал, что есть команда в макроассемблере, позволяющая задать (определить) как бы требуемую метку заранее, а потом исходя из команд условной трансляции - он сам выберет, что компилировать.
Ну а раз так, то мне кажется, что проще загрузить саму оболочку, и уже из нее откомпилировать заново файл-исходник, изменив перед этим тип кристалла.
Просто хотел обойтись одним макроассемблером, и чтобы не сильно пришлось править исходник.
Просто думал, что есть команда в макроассемблере, позволяющая задать (определить) как бы требуемую метку заранее, а потом исходя из команд условной трансляции - он сам выберет, что компилировать.
Ну а раз так, то мне кажется, что проще загрузить саму оболочку, и уже из нее откомпилировать заново файл-исходник, изменив перед этим тип кристалла.
Просто хотел обойтись одним макроассемблером, и чтобы не сильно пришлось править исходник.
Re: Защита ламп накаливания.
А вы компилируете через командную строку?! Если так , то я не побывал компилировать таким образом, поэтому не могу сказать как это сделать...
Вообще определить можно как угодно, например:
#define METKA_PIC10F222
...
IFDEF METKA_PIC10F222
...
ENDIF
__10F222 - это стандартная константа , которую понимает прекомпилятор.
METKA_PIC10F222 - это абстрактная константа.
Если вы поменяете в исходнике все эти константы, которых участвуют в прекомпилинге, например просто дописав в конце каждой 1 (__10F2221) и в начале пропишите например #define __10F2221, то скомпилируется все правильно!
Проверял в MPLAB, выбрал вообще другой контроллер, хексы абсолютно идентичные!
#define __10F222 в начале не должно вызывать ошибку, даже допускается переопределение констант #define __10F222 TEST, после такой надписи в константе __10F222 будет храниться строка TEST а не то, что там было. Скорее всего вы чтото не так делаете.
Исходник править не нужно!!! Там все в порядке.
Прилагаю файл скриншота компилятора, все по дефолту хекс генерит правильный, такой же как из мплаба!
Вообще определить можно как угодно, например:
#define METKA_PIC10F222
...
IFDEF METKA_PIC10F222
...
ENDIF
__10F222 - это стандартная константа , которую понимает прекомпилятор.
METKA_PIC10F222 - это абстрактная константа.
Если вы поменяете в исходнике все эти константы, которых участвуют в прекомпилинге, например просто дописав в конце каждой 1 (__10F2221) и в начале пропишите например #define __10F2221, то скомпилируется все правильно!
Проверял в MPLAB, выбрал вообще другой контроллер, хексы абсолютно идентичные!
#define __10F222 в начале не должно вызывать ошибку, даже допускается переопределение констант #define __10F222 TEST, после такой надписи в константе __10F222 будет храниться строка TEST а не то, что там было. Скорее всего вы чтото не так делаете.
Исходник править не нужно!!! Там все в порядке.
Прилагаю файл скриншота компилятора, все по дефолту хекс генерит правильный, такой же как из мплаба!
- Вложения
-
- MPASM.jpg
- (91.74 КБ) 473 скачивания
Re: Защита ламп накаливания.
Под правкой исходника я имел ввиду то, что надо будет оставлять только один активный чип, а остальные закомментировать.
Например, #include "P10f222.inc".
Во вложении то, что пишется у меня в листинге после компиляции, когда в самом начале я указываю #DEFINE __10F222;
Когда компилируется в самой оболочке - все в норме.
Видимо, переменные препроцессора не дружат с определениями в самом исходнике.
А если их заранее определить по другому - потеряется возможность использовать препроцессор для указания типа кристалла из самой оболочки.
P.S.
Все стало нормально после смены версии макроассемблера, попробовал MASM V5.43, и все ошибки ушли.
Теперь можно компилировать не загружая оболочку, мне показалось, что так гораздо быстрее, если необходимо просто сменить тип кристалла.
В начале исходника (перед самым первым оператором IFDEF) пишем строку с нужным типом кристалла, например, #DEFINE __10F222, и все.
VLADу спасибо за помощь.
Например, #include "P10f222.inc".
Во вложении то, что пишется у меня в листинге после компиляции, когда в самом начале я указываю #DEFINE __10F222;
Когда компилируется в самой оболочке - все в норме.
Видимо, переменные препроцессора не дружат с определениями в самом исходнике.
А если их заранее определить по другому - потеряется возможность использовать препроцессор для указания типа кристалла из самой оболочки.
P.S.
Все стало нормально после смены версии макроассемблера, попробовал MASM V5.43, и все ошибки ушли.
Теперь можно компилировать не загружая оболочку, мне показалось, что так гораздо быстрее, если необходимо просто сменить тип кристалла.
В начале исходника (перед самым первым оператором IFDEF) пишем строку с нужным типом кристалла, например, #DEFINE __10F222, и все.
VLADу спасибо за помощь.
- Вложения
-
- List.jpg
- (42.75 КБ) 441 скачивание
Re: Защита ламп накаливания.
Ок...
Из вашего скрина видно, что данный тип процессора не поддерживается тем макроассемблером, который вы применяли ранее.
131 Processor type is undefined
Code is being generated before the processor has been defined. Note that until the processor is defined, the opcode set is not known.
132 Unknown processor
The selected processor is not a valid processor
У Микрочипа самый лучший help, который я видел, а видел я многое)))), \Microchip\MPASM Suite\ *.chm
В макроассемблере (на скрине в моем предыдущем посте) видно специальное выпадающее меню, в котором можно выбрать тип процессора и ничего в исходнике не надо делать...но ваш вариант тоже будет работать, т.к. ваше определение процессора происходит позже, следовательно оно и будет применено.
...Мы не ищем легких путей...
Из вашего скрина видно, что данный тип процессора не поддерживается тем макроассемблером, который вы применяли ранее.
131 Processor type is undefined
Code is being generated before the processor has been defined. Note that until the processor is defined, the opcode set is not known.
132 Unknown processor
The selected processor is not a valid processor
У Микрочипа самый лучший help, который я видел, а видел я многое)))), \Microchip\MPASM Suite\ *.chm
В макроассемблере (на скрине в моем предыдущем посте) видно специальное выпадающее меню, в котором можно выбрать тип процессора и ничего в исходнике не надо делать...но ваш вариант тоже будет работать, т.к. ваше определение процессора происходит позже, следовательно оно и будет применено.
...Мы не ищем легких путей...
Re: Защита ламп накаливания.
Вчера проверил. Все работает как заявлено на лампах накаливания. Только обнаружил одну неприятность. Если стоит неоновая лампа для подсветки выключателя, то режимы не переключаютя, всегда только плавный запуск. Думаю что это решается увеличением сопротивлений в цепи детектора нуля. На выходных попробую увеличить.
Автору респект!
Автору респект!
Re: Защита ламп накаливания.
Я думаю, что вы подключили неоновую лампу как на схеме сверху, что есть верно, но в данном случае будет приводить к тому, что вы наблюдаете. Соберите по нижней схеме и все будет работать как надо.
Схемы в приложении.
P.S.: Эффект обусловлен тем, что через неоновую лампу течет ток, небольшой, но течет, чего достаточно для того, чтобы на входе схемы было перемеренное напряжение, которое воспринимается как синхросигнал, что приводит к ошибочным состояниям автомата, и устройство не входит в режим программирования уровня яркости. Условие входа - отсутствие синхросигнала сети более 10 полупериодов, т.о., что один из входов устройства должен ПОЛНОСТЮ отключаться!
Схемы в приложении.
P.S.: Эффект обусловлен тем, что через неоновую лампу течет ток, небольшой, но течет, чего достаточно для того, чтобы на входе схемы было перемеренное напряжение, которое воспринимается как синхросигнал, что приводит к ошибочным состояниям автомата, и устройство не входит в режим программирования уровня яркости. Условие входа - отсутствие синхросигнала сети более 10 полупериодов, т.о., что один из входов устройства должен ПОЛНОСТЮ отключаться!
- Вложения
-
- ERROR.pdf
- (7.71 КБ) 244 скачивания
Re: Защита ламп накаливания.
Я так и предполагал. Сейчас попробую по Вашей схеме номер два. Хотя уверен, что будет работать правильно.
Проверил. Работает. Только неонка до конца не тухнет и чем тусклее свет, тем ярче неонка. Однако это уже на скорость не влияет
Проверил. Работает. Только неонка до конца не тухнет и чем тусклее свет, тем ярче неонка. Однако это уже на скорость не влияет
- Nico2_2
- Встал на лапы
- Сообщения: 117
- Зарегистрирован: Пн мар 12, 2012 12:01:15
- Откуда: Тростянец, Винницкая обл, Украина
Re: Защита ламп накаливания.
Гляньте на это, может Вам сгодиться
http://radio.aliot.com.ua/?p=720
Re: Защита ламп накаливания.
Re: Защита ламп накаливания.
У ТС богаче функционал. Можно включать лампы не в полный накал, сами отключаются через определенное время. По ссылке, если автор выложит исходники, то можно допильть и до такого же функционала. Однако габариты уже не те.
~Vlad~, еще раз спасибо Вам за такую штуку. Заказал деталей на 8 штук. Поставлю во всем доме, и знакомым поделаю. Без коммерческой выгоды.
~Vlad~, еще раз спасибо Вам за такую штуку. Заказал деталей на 8 штук. Поставлю во всем доме, и знакомым поделаю. Без коммерческой выгоды.
Re: Защита ламп накаливания.
garikbaza писал(а):У ТС богаче функционал. Можно включать лампы не в полный накал, сами отключаются через определенное время.
Не совсем понимаю Вас garikbaza, что вы этим хотели сказать, но если вы внимательно читали описание предложенной мною конструкции, то она тоже может включать лампы на любой яркости, и сам отключаться через 12 часов ( в исходнике настраивается).
P.S.:
Вообще по функционалу моя конструкция имела ветку с сенсором, IR каналом и звуком, реализация предполагалось на PIC10F222 но по следующим причинам разработки были прекращены:
1) У 10 пика нету флэши - это значит, что коды с кнопок пульта придется каждому сканировать чем то вбивать в код, что не кошерно.
2) Сделать по старинке, типа любой клавишей пульта - это уже реализовано, и это скучно, и даже иногда раздражает, когда ты регулируешь с пульта что то на телевизоре а у тебя при этом свет тоже подхватывается))))
3) На пиках минимального функционала с флэшей, например 12F 675, уже реализовано коллегой из-за рубежа, выложено в сети и функционал там будь здоров - зачем изобретать изобретенное))).
Отбросив все что уже есть, я остановился на том, чего нет))) и получилось то, что вы сейчас созерцаете. ( хотя в советской радио периодике можно найти решения для переключения числа ламп в люстре таким же методом (управление люстрой по двум провода....), реализовано все исключительно на реле, причем в 2010 году видел китайскую люстру с таким же функционалом, только на контроллере + радиопульт там еще был)...
Последний раз редактировалось ~Vlad~ Вт май 15, 2012 09:11:40, всего редактировалось 1 раз.
Re: Защита ламп накаливания.
~Vlad~ - ТопикСтартер, это вы 
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Re: Защита ламп накаливания.
Да я....
Re: Защита ламп накаливания.
~Vlad~ писал(а):3) На пиках минимального функционала с флэшей, например 12F 675, уже реализовано коллегой из-за рубежа, выложено в сети и функционал там будь здоров - зачем изобретать изобретенное))).
А ссылку можно поглядеть, проект не коммерческий?