Jump to content

Serega4789

Members
  • Posts

    100
  • Joined

  • Last visited

Информация

  • Город
    Екатеринбург

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    контроллеры
  • Оборудование
    Цешка, асцилограф пояльник.....

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Serega4789's Achievements

Apprentice

Apprentice (3/14)

  • Dedicated Rare
  • Collaborator
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

1

Reputation

  1. #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;} */ } } //------------------------------------------------ более менее стабильно работает в протеусе, теперь в железе проверить надо
  2. Значит послесработки прерывания сигнал уходит в ноль до того как будет опрошен. Подскажите, если в инициализации я один из портов B4 или 7, например 4выставлю на вход а 7 выход Прерывание порт В вектор int4 ->когда сработает прерывание на заведамо включено м на вхот порту В4 я врублю флаг F1 , переведу В4 на выход В7 на вх Вектор поменяю на int 7 и Затем F2=1 так по кругу гонять прерывания, Это будет корректно?
  3. архив Новая папка.zip Новая папка.zip
  4. Позже скину схему в протеусе и проект программы. Проект диммер два канала с управлением пачкой импульсов. Т. К есть только прерывания на порт В0 и по всему порту логика такая: Ловлю прерывания по portB В прерывании опрос pB4 и pb7 В зовисимости какой из них 1 ка Взвожу флаг F1или F2, В ЦЫКЛЕ основной программы По флагам F1-2 вкл таймер открытия тиристора, после запуск пачки импульсов 400мкс Время вкл 50мкс выкл 10мкс Сброс флагов F1 или F2 Ноги импульсов PB3 и Pb2 По каналу прерывание РВ4 импульс РВ2 все хорошо импульсы строго по прерыванию, а по другому каналу 2 раза по прерыванию затем 2 пропуска. Отключал один из каналов из программы все равно такая ерунда,может протеус виноват так частенько бывает
  5. проблемы прерываниями! В режиме прерваний по порту B нормально работает только PORTB 4 , остальные срабатывают через 2 события . Прерывание и опрос например В7 вкл порт В2 срабатвает через 2 раза если увеличить частоту мк или снизить частоту прерываний (10гц) то норм. Делал в flowcode так бстрее
  6. n++; if (n> 4){PORTB |= 1<<5;}else{PORTB &= ~(1<<5);} if(n==10){n=0;} так делал ,не получается выдержать паузу 10 мкс
  7. мне надо импульс на трансорматор подавать 3 шт тр для управления тиристорами . Делал внешний генератор и схему управления норм работает, но громоздко получается. 50мкс длина импульса 10мкс пауза
  8. Добрый день! нужно реализовать программный шим 3 канала частотой 16.66 период 60мкс пауза 10мкс и 3прерывания для кнопок. Есть наработки подобной проги на ассемблере хотя бы реализация шима?
  9. кстати вторая ступень прироста угла открытия тоже имеет свой диапазон на максимальных оборотах до срыва коммутации в программе есть 3 потенциометра для регулировки угла 1 и 2 а также скорость откртия угла 1 , угол 2 ускорение 10мс по длине полупериода
  10. https://youtu.be/Uo9gk6V6hFc видео последней программы UPP_MEGA2560_V1.zip исследовал я все эти режим и пришел к такому алгоритму , сдвигаю косинус фи дросселями до удобной регулировки разгонного напряжения , во время разгона на угле 165-130 у.е. (максимум 255 прерывания 40мкс 250*40=10мс полупериод) косинус меняется зависимо от напряжения и частоты вращения ,как только мотор разогнался и косинус стабилизировался добавляю напряжение опять же до момента пока ток растет без колебаний и включаю байпас ,в данном случае просто постоянное напряжение на твердотельное реле . Подведя итог нужен алгоритм запуска для большей индуктивности а лучше мат модель ,это высший пилотаж, где учитывается изменение косинуса фи . именно поэтому если мотор разгонять непрерывным открытием углов управления с заданным ускорением идет срыв коммутации ,мое наблюдение либо искать модули с хорошими показателями du/dt di/dt
  11. есть углы перерегулирования приводящие к сбоям и темп разгона нужно задать а не вручную регулировать Модель нужно в протеусе прогнать
  12. Привет всем! фазы сети все в норме модули исправны ,все дело в датчике тока он 5 амперный из ардуино игрушек но их два один фигню выдает . Но не в этом суть, давно хотел опыыт провести параллельно мотору подключить активно реактивное сопротивление . Включил 2 мотора параллельно и пуск был без рывков и срыва коммутации ,затем 3 дросселя в звезду включенные параллельно мотору и пуск почти стал плавным, угол открытия до срыва коммутации сместился и ток плавно и более добавляется ))) Видео пуска мотора с дросселями
  13. в модулях заменил moc3063 yf moc3052 с переключением в любой момент времени 1 в чипдип была дип корпус 2 смд , причем одна сразу была неисправна а вторая под вопросом модуль и оптрон заменю как доберусь до магазина
  14. Алгоритм работает ,что то не так с одним из модулей. Форма сигнала на пилу похожа. В сети еще фигня какая то светильники моргают на одной из фаз может регулятор это все ловит ,пришел с китая щуп 1000 в буду смотреть качество сетевого напряжения ,мультиметр показывает равные напряжения а ток по фазе с сильно отличен увидел это случайно когда все фазы проверял по току
×
×
  • Create New...