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

Serega4789

Members
  • Постов

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

  • Посещение

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

  1. Думаю это и есть драйвер транзистор bdp953 коллектор звенит на общем проводе Но это нормально 4 и 2 пин коллектор
  2. Добрый день! Вышел из строя индукционный нагреватель микроша 15квт ,транзисторы конденсаторы в норме управление ключами по типу zvs автогенератор ,дежурка в норме нет генерации импульсов
  3. #include <xc.h> #define _XTAL_FREQ 4000000 // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (Power-up Timer is enabled) #pragma config CP = OFF // Code Protection bit (Code protection disabled) //-------------------------------------------- #include <stdio.h> //------------------------------------------------ unsigned int F1_count=0,F2_count=0,stop_count1=0,stop_count2=0; unsigned int x1=1,x2=0; unsigned int FLA=0,FLB=0; unsigned char dimmer=20;//65 unsigned char F1,F2; //unsigned char pvm1=0,pvm2=0,n=0; unsigned char start=0; unsigned char count_dimmer=0; //unsigned int FLB=0; //------------------------------------------------ void interrupt high_isr (void) //void interrupt isr(void) { PORTBbits.RB6 = 1; PORTBbits.RB6 = 0; if(x1 ) //proverka konkretnogo port x1 ili x2 { if (RB4==1 && FLA==0 ) { FLA=1; //PORTBbits.RB2 = 1; //PORTBbits.RB2 = 0; } } if(x2 ) { if (RB7==1 && FLB==0 ) { FLB=1; //PORTBbits.RB3 = 1; //PORTBbits.RB3 = 0; } } if(start==1){ if (FLA && RB4==0) {x1=0; x2=1;F1=1;} if (FLB && RB7==0) {x2=0; x1=1;F2=2;} } if (RBIF) {RBIF=0; } // flag int } //------------------------------------------------ void main() { TRISB = 0x91; TRISA = 0x7; PORTBbits.RB2 = 0; PORTBbits.RB3 = 0; PORTBbits.RB5 = 0; PORTBbits.RB6 = 0; PORTBbits.RB1 = 0; PORTBbits.RB0 = 0; INTEDG = 1; //rising edge //INTEDG = 0; //falling edge //OPTION_REG=0xc0; OPTION_REG = 0b01000000; RBIF = 0; RBIE = 1; GIE = 1; while(1) { //............................................................................ if (RB0==1) { start=0; } else { start=1; } if (start==0) { x1=0; x2=1; F1_count=0; F2_count=0; FLA=0; FLB=0;dimmer=20; count_dimmer=0; PORTBbits.RB5 = 0; PORTBbits.RB6 = 0; } else { PORTBbits.RB5 = 1; } //............................................................................ if(start==1) { //.................................... if(F1) { if(F1_count!=dimmer){F1_count++;} if(F1_count==dimmer) { PORTBbits.RB2 = 1;//620mks pchka /50 =12 ugol 400 edinic 180 grad __delay_us ( 60 ); //380 minim znachenie dimmer PORTBbits.RB2 = 0; __delay_us ( 10 ); PORTBbits.RB2 = 1; __delay_us ( 50 ); PORTBbits.RB2 = 0; __delay_us ( 10 ); PORTBbits.RB2 = 1; __delay_us ( 50 ); PORTBbits.RB2 = 0; __delay_us ( 10 ); PORTBbits.RB2 = 1; __delay_us ( 50 ); PORTBbits.RB2 = 0; __delay_us ( 10 ); PORTBbits.RB2 = 1; __delay_us ( 50 ); PORTBbits.RB2 = 0; __delay_us ( 10 ); F1=0; F1_count=0; FLA=0; } } //........................................ if(F2) { if(F2_count!=dimmer){ F2_count++; } if(F2_count==dimmer) { PORTBbits.RB3 = 1; __delay_us ( 60 ); PORTBbits.RB3 = 0; __delay_us ( 10 ); PORTBbits.RB3 = 1; __delay_us ( 50 ); PORTBbits.RB3 = 0; __delay_us ( 10 ); PORTBbits.RB3 = 1; __delay_us ( 50 ); PORTBbits.RB3 = 0; __delay_us ( 10 ); PORTBbits.RB3 = 1; __delay_us ( 50 ); PORTBbits.RB3 = 0; __delay_us ( 10 ); PORTBbits.RB3 = 1; __delay_us ( 50 ); PORTBbits.RB3 = 0; __delay_us ( 10 ); F2=0; F2_count=0; FLB=0; //...razgon.............................. /* if (start) { if(dimmer!=1){if(count_dimmer!=10){count_dimmer++;}else{count_dimmer=0;dimmer--;}}else{PORTBbits.RB6 = 1;} } */ //................... }//if(F2_count==dimmer) } }//start /* if (n< pvm1){PORTBbits.RB2 = 1;}else{PORTBbits.RB2 = 0;} if (n< pvm2){PORTBbits.RB3 = 1;}else{PORTBbits.RB3 = 0;} if(n==6){n=0;} */ } } //------------------------------------------------ более менее стабильно работает в протеусе, теперь в железе проверить надо
  4. Значит послесработки прерывания сигнал уходит в ноль до того как будет опрошен. Подскажите, если в инициализации я один из портов B4 или 7, например 4выставлю на вход а 7 выход Прерывание порт В вектор int4 ->когда сработает прерывание на заведамо включено м на вхот порту В4 я врублю флаг F1 , переведу В4 на выход В7 на вх Вектор поменяю на int 7 и Затем F2=1 так по кругу гонять прерывания, Это будет корректно?
  5. архив Новая папка.zip Новая папка.zip
  6. Позже скину схему в протеусе и проект программы. Проект диммер два канала с управлением пачкой импульсов. Т. К есть только прерывания на порт В0 и по всему порту логика такая: Ловлю прерывания по portB В прерывании опрос pB4 и pb7 В зовисимости какой из них 1 ка Взвожу флаг F1или F2, В ЦЫКЛЕ основной программы По флагам F1-2 вкл таймер открытия тиристора, после запуск пачки импульсов 400мкс Время вкл 50мкс выкл 10мкс Сброс флагов F1 или F2 Ноги импульсов PB3 и Pb2 По каналу прерывание РВ4 импульс РВ2 все хорошо импульсы строго по прерыванию, а по другому каналу 2 раза по прерыванию затем 2 пропуска. Отключал один из каналов из программы все равно такая ерунда,может протеус виноват так частенько бывает
  7. проблемы прерываниями! В режиме прерваний по порту B нормально работает только PORTB 4 , остальные срабатывают через 2 события . Прерывание и опрос например В7 вкл порт В2 срабатвает через 2 раза если увеличить частоту мк или снизить частоту прерываний (10гц) то норм. Делал в flowcode так бстрее
  8. n++; if (n> 4){PORTB |= 1<<5;}else{PORTB &= ~(1<<5);} if(n==10){n=0;} так делал ,не получается выдержать паузу 10 мкс
  9. мне надо импульс на трансорматор подавать 3 шт тр для управления тиристорами . Делал внешний генератор и схему управления норм работает, но громоздко получается. 50мкс длина импульса 10мкс пауза
  10. Добрый день! нужно реализовать программный шим 3 канала частотой 16.66 период 60мкс пауза 10мкс и 3прерывания для кнопок. Есть наработки подобной проги на ассемблере хотя бы реализация шима?
  11. кстати вторая ступень прироста угла открытия тоже имеет свой диапазон на максимальных оборотах до срыва коммутации в программе есть 3 потенциометра для регулировки угла 1 и 2 а также скорость откртия угла 1 , угол 2 ускорение 10мс по длине полупериода
  12. https://youtu.be/Uo9gk6V6hFc видео последней программы UPP_MEGA2560_V1.zip исследовал я все эти режим и пришел к такому алгоритму , сдвигаю косинус фи дросселями до удобной регулировки разгонного напряжения , во время разгона на угле 165-130 у.е. (максимум 255 прерывания 40мкс 250*40=10мс полупериод) косинус меняется зависимо от напряжения и частоты вращения ,как только мотор разогнался и косинус стабилизировался добавляю напряжение опять же до момента пока ток растет без колебаний и включаю байпас ,в данном случае просто постоянное напряжение на твердотельное реле . Подведя итог нужен алгоритм запуска для большей индуктивности а лучше мат модель ,это высший пилотаж, где учитывается изменение косинуса фи . именно поэтому если мотор разгонять непрерывным открытием углов управления с заданным ускорением идет срыв коммутации ,мое наблюдение либо искать модули с хорошими показателями du/dt di/dt
  13. есть углы перерегулирования приводящие к сбоям и темп разгона нужно задать а не вручную регулировать Модель нужно в протеусе прогнать
  14. Привет всем! фазы сети все в норме модули исправны ,все дело в датчике тока он 5 амперный из ардуино игрушек но их два один фигню выдает . Но не в этом суть, давно хотел опыыт провести параллельно мотору подключить активно реактивное сопротивление . Включил 2 мотора параллельно и пуск был без рывков и срыва коммутации ,затем 3 дросселя в звезду включенные параллельно мотору и пуск почти стал плавным, угол открытия до срыва коммутации сместился и ток плавно и более добавляется ))) Видео пуска мотора с дросселями
  15. в модулях заменил moc3063 yf moc3052 с переключением в любой момент времени 1 в чипдип была дип корпус 2 смд , причем одна сразу была неисправна а вторая под вопросом модуль и оптрон заменю как доберусь до магазина
  16. Алгоритм работает ,что то не так с одним из модулей. Форма сигнала на пилу похожа. В сети еще фигня какая то светильники моргают на одной из фаз может регулятор это все ловит ,пришел с китая щуп 1000 в буду смотреть качество сетевого напряжения ,мультиметр показывает равные напряжения а ток по фазе с сильно отличен увидел это случайно когда все фазы проверял по току
  17. Первый мотор 0,75квт, второй тот что до этого испытывал синхронизация от фаз АВС в звезду собрана, форма фазы С на маломощном моторе на пилу похожа, а на 4квт моторе обрезана
  18. Первая картинка снаббер 47ом 10вт конденсатор 10нф 1000в Вторая со звоном с 470нф 470нф Опто тиристор даже лучше работает, можно будет датчик дп добавить, в чип и дип детальки не вналичии((
  19. ssr_3F_mega_6_fase_DTprovodimosti.pdsprj Dimmer_mega256__v14_INTERRUPT_P_PVM.ino добавил влияние ДП на имп управления ,количество ложных открытий исправило добавление снабберов
  20. добавил датчик проводимости регулятор мощности которым хотел плавно управлять мотором большей мощности ,похоже что нет там ДП есть только токовый контроль
  21. доброе утро! Вопрос есть . Датчик проводимости нужен для контроля проводимости по каждой фазе защита от открытия тиристора противоположного знака (положительная полуволна проводит отрицательная ждет команд ДП )все верно?
  22. На осциллографе видно этот угол на котором двугорбый синус тока нарастает и угол падения напряжения , если я его буду чётко детектировать, то смогу точно знать когда подать очередной импульс на тиристор после закрытия предыдущего либо переключиться на другой режим управления с глухой фазой и 2мя управляеми тиристорами или управлять только одной полуволной детекторы нужно переделать только
  23. синхронизацию делал через обмотки мотора не помогло ,думал что так буду контролировать истинное открытие закрытие тиристора но на осциллограмме горбатый синус не получилось нашел схему датчика проводимости пока не разобрался что к чему
×
×
  • Создать...