Симистр + МК непонятно

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

Всем привет!
Прошу небольшой, ликбез!

Ситуация такая:

Есть МК pic12f1823 нога которого через резистор подключена на УЭ симистора.
На другую ногу подается 4В переменного напряжения для отслеживания нуля.

Насколько я понимаю семистр нужно включать (импульсами достаточными чтоб нарос ток удержания) в момент перехода через ноль, втаком режиме минимально энергопотребление и помехи.

Но на практике происходит следующее: программа работает чудесно до тех пор пока не подключаем симистр, при подключении в программе куска кода управления симистором, сама программ перестает работать как бы зависает!
В симистр включена лампока, если ее меняеш на светодиодную (светодиодная лампа на 220В, с малым потреблением) программа вообще отказывается работать.



Вот мой код.

Код: Выделить всё


if    (lamp) {  // включаем лампу
        
 while (RA5==1) {} //когда переход через ноль вниз - даем импульс
           RA4=1;
            i=0; while (i<2)i++;
           RA4=0;

 while (RA5==0) {}  //когда переход через ноль вверх - даем импульс
                   RA4=1;
                    i=0; while (i<2)i++;
                  RA4=0;
                } 

может ошибка в коде ?
Что самое удивительное при включении этого кода перестает работать вся программа если отключаеш одну из строчек while (RA5==1) {} программа кое как работает на обычной лампочке, но не светодиодной!!!

Если тупо выдавать на симистр еденицу - все работает! (но вить это не верно!!!!!!!!!)
Главная заповедь электронщика:- Не крути две ручки сразу
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Попробуйте увеличить время строба.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Переменное напряжение как подается на ногу микроконтроллера? Если без диодного моста - то будете ловить только положительные полуволны синусоиды.
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

Аlex писал(а):Попробуйте увеличить время строба.

Пробовали не помогло!

Касательно переменного напряжения отвечу. оно берется с резистора 860Ком на ногу МК и с этой же ноги на корпус висит 100Ком и 62Пф кондер! Схема взята с рабочего диммера управляющего лампочкой!

Так нам и нужны положительные полуволны. т.е. при появлении положительной полуволны и при пропадании это момент перехода через ноль (но очень близкий)
Главная заповедь электронщика:- Не крути две ручки сразу
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 46
Зарегистрирован: Вс авг 24, 2008 16:12:00

Сообщение Svitoglad »

Могу предположить что не хватает тока для нормального открытия симистора как вариант подключить паралельно еще один порт. В светодиодных лампах внутри импульсный источник питания, поэтому может и не работает.
Читайте книги. После них Вы сможете гнобить людей ещё изощреннее.
Пиво — это жидкий хлеб, водка — жидкое мясо. Бывает, как наделаю бутербродов...
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

Тогда вопрос - почему не открытие симистора, влияет на работу программы в МК т.е. даже индикационные светодиоды перестают мигать
Главная заповедь электронщика:- Не крути две ручки сразу
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

У вас трехпроводная схема подключения диммера или двухпроводная?
тут хорошо теория расписана: http://bezkz.su/publ/shemy/svetovye-eff ... immer.html
лучше, как там, открывать симистор нулем и еще лучше пачками нулевых импульсов.
Perehod.png
(101.54 КБ) 585 скачиваний
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

Трехпроводная схема
Главная заповедь электронщика:- Не крути две ручки сразу
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Попробуйте:

Код: Выделить всё

RA4=1;

while (RA5==1) {} //когда переход через ноль вниз - даем импульс
           TRISA4=0;
            i=0; while (i<2)i++;
           TRISA4=1;

 while (RA5==0) {}  //когда переход через ноль вверх - даем импульс
                   TRISA4=0;
                    i=0; while (i<2)i++;
                  TRISA4=1;
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Для открытия второй полуволны, нужно отсчитывать 10 мс, а не ловить переход из 1 в 0. Этот переход будет ещё за долго до начала следующей полуволны.
У Вас просто не открывается триак на одной полуволне, по этому, скорее всего, и светодиоды не работают.

Код: Выделить всё

           TRISA4=0;
           ...............
           TRISA4=1;
Что бы манипулировать направлением, нужно ещё переключать выходные значения. Это Вам не защёлки (LATx).
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

МОжно подробнее зачем переключать TRIS ?
А про отслеживание еденицы - прочитал в микрочиповском файле как бы!
Главная заповедь электронщика:- Не крути две ручки сразу
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

МОжно подробнее зачем переключать TRIS ?
В Вашем случае это не нужно.
А про отслеживание еденицы - прочитал в микрочиповском файле как бы!
Дык, еденицу Вы может и правильно отслеживаете, я говорил про переход из 1 в 0, т.е. отслеживание отрицательной полуволны.
Прорезались зубы
Аватара пользователя
Сообщения: 241
Зарегистрирован: Пт янв 18, 2008 01:41:27

Сообщение artmasterpro »

так выходит когда 1 закончилась это почти ноль, а когда началась тоже с небольшой задержкой
Главная заповедь электронщика:- Не крути две ручки сразу
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

когда началась - это с небольшой задержкой после перехода, а когда закончилась - это с небольшой задержкой до перехода. В это время открывать триак смысла нет, он сразу же закроется при переходе.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Что бы манипулировать направлением, нужно ещё переключать выходные значения. Это Вам не защёлки (LATx).
RA4=1; а это что? В самом начале устанавливаем порт в "1", TRISA4=0; - на выводе "1", TRISA4=1; - вывод включен на вход
Уменьшаем ток через микроконтроллер. Когда-то игрался с пиком - работало:

Код: Выделить всё

    GPIO = 0b00000000; //Set TRIAC output latch high
    TRIS1 = 0; //Fire TRIAC
    TRIS1 = 1;  //Release TRIAC fire Signal 
    TRIS1 = 0; 
    TRIS1 = 1;
    TRIS1 = 0; 
    TRIS1 = 1;  
    TRIS1 = 0; 
    TRIS1 = 1; 
    TRIS1 = 0; 
    TRIS1 = 1;  
    TRIS1 = 0; 
    TRIS1 = 1;  
   	CLRWDT();
    Delay_ms(10);
    GPIO = 0b00000000; //Set TRIAC output latch high
    TRIS1 = 0; //Fire TRIAC
    TRIS1 = 1;  //Release TRIAC fire Signal 
    TRIS1 = 0; 
    TRIS1 = 1; 
    TRIS1 = 0; 
    TRIS1 = 1;  
    TRIS1 = 0; 
    TRIS1 = 1; 
    TRIS1 = 0;
    TRIS1 = 1;  
    TRIS1 = 0;
    TRIS1 = 1;  
    CLRWDT(); 
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

RA4=1; а это что?
Это не защёлка, а вывод порта. И аргумент "Я делал - у меня работало" не катит. После смены направления, в RAx будет то, что реально на нём находится. Подобные манипуляции нельзя проводить с надеждой на то, что в защёлке данных PORTx состояние не изменится, т.к. данные в этих защёлках, во время операций с портом, меняются на реально-установленные на порте .
Почитайте про архитектуру портов в ПИКах, не имеющих защёлок LATx.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Port_pic.png
(15.69 КБ) 572 скачивания
Поясните как может повлиять запись в триггер TRIS, на триггер PORT. CK у них разные.
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

И что, что СК у них разные ? Речь идёт о выходной защёлке. Нельзя надеяться на то, что данные в защёлке не изменятся, т.к. многие операции происходят через Ч-М-З. Во время модификации данные в защёлке могут измениться. Точнее не могут, а меняются. Для избежания этих проблем и придумали ещё один регистр управления выходной защёлкой - LATx.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Так защелки то и нет, треугольник это буфер.
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Так защелки то и нет
Как нет ? А триггер, с которого идёт на буфер ? Это и есть выходная защёлка, которая, по Вашему мнению, после RA4=1; никогда не изменится. Это заблуждение. Она может измениться, если программа натолкнётся на операцию ЧМЗ.
http://www.microchip.ru/files/d-sheets-rus/pic16_9.pdf 4 стр. , последний абзац, перед самым рисунком.
Пример ЧМЗ, работающий в протеусе - http://forum.chipmk.ru/index.php/topic/ ... t__p__1740
Ответить

Вернуться в «Периферия»