Страница 1 из 4

МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/мин)

Добавлено: Пн янв 14, 2013 15:28:32
takei
Здравствуйте уважаемые участники этого форума.
Подскажите, как этой схемой, можно управлять колекторным двигателем от микроконтроллера
Изображение
Ранее я расматривал вариант МОС3063 + ВТ 136 но столкнулся с трудностью согласования импульсов с началом фазы
А эта стандартная(кстати китайская) схема регулировки , практически у всех бытовых приборов, осталось только грамотно реализовать принципиальную схему , управления от мк (и неплохобы использовать цифровой ШИМ).

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Пн янв 14, 2013 16:35:48
otest
Ни как нельзя.

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Пн янв 14, 2013 17:11:36
zero648
zero648 писал(а):Регулятор переделан из мастеркитовского набора (NM1041), только на атмега8, поставил светодиодный барграф, полный накал индикатора +10% мощности, в полнакала +5% мощности, семисегментники сюда просто не вписываются.
Изображение Изображение Изображение

P.S. Регулировка фазоимпульсная....
Для болгарки думаю потянет, зависит от мощности симистора, в этом на 8A/250V.

P.S. Если заинтересует есть схема, плата в layout для mega8-TQFP, прошивка тоже для TQFP. Прошивку можно и для PDIP переделать, но схема немного изменится.

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Пн янв 14, 2013 23:59:50
takei
otest писал(а):Ни как нельзя.
Не ну сказать никак это ....никак.
Вот можно сделать ступенчатое переключение
Изображение
конечно затратно, но все же без участия человека, автоматика на МК может переключать несколько скоростей...
zero648 писал(а):Регулировка фазоимпульсная.......
P.S. Если заинтересует есть схема,
Да интересует мне нужно найти схемное решение для управления двигателя этой схемой от микроконтроллера.
Сама схема (которую я приложил к своему собщению) это регулятор (кнопка)
Изображение
практически на всех известных мне бытовых иструментах.
Наверняка можно приделать еще что нибудь, для электронной регулировки...

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Вт янв 15, 2013 05:03:44
zero648
В вашей схеме нужно убрать DB3 и всю его обвязку и поставить MOC3052 например, тогда и МК приделать проще будет к схеме, плюс добавить схему детектора нуля.

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Вт янв 15, 2013 12:40:50
takei
Мне примерно понятна схема МОС и ВТА
Изображение
но пока я не могу сделать свою программу с привязкой к импульсу перехода через ноль синусоиды сетевого напряжения, начинающийся в начале фазы (детектор фазы).

Я тут кстати для себя немного уяснил область применения МОС
МОС304х и МОС305х - полностью не взаимозаменяемы:
Изображение Изображение
МОС304х имеет встроенную схему включения при пересечении напряжением нуля (т.е., предназначен для использования в качестве своеобразного "реле переменного тока" - включено-выключено),
а МОС305х ее не имеет и может использоваться для фазового регулирования (например, в диммерах, для плавной регулировки мощности нагрузки).

Хотелось бы использовать схему с этим готовым блоком с db3, или я всетаки не совсем правильно я вас понял, что это значит? "плюс добавить схему детектора нуля." Это нужно делать программно в микроконтроллере?

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Вт янв 15, 2013 13:23:24
zero648
В схеме с DB3 используется задержка открывания симистора в начале полупериода, зачем её использовать вместе с контроллером, если контроллер сам будет регулировать эту задержку, схема получится сложнее, проще с MOC, но нужно добавить схему детектора нуля.

В архиве проект переделал под ATmega8 в DIP корпусе.

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Вт янв 15, 2013 14:56:12
Барсик
А по какому алгоритму МК должен управлять болгаркой? Типа, нажал кнопку и ушёл спать, а болгарка сама начинает пилить всё подряд без участия человека? :)
У меня есть проект диммера на ATtiny13. Диммер управляется тремя кнопками. Кнопка 1 - включение/выключение. Кнопка 2 - больше. Кнопка 3 - меньше. Ну и, разумеется, плавное нарастание яркости при включении до заданного кнопками значения.

Схема в прикошаченном файле.

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Вт янв 15, 2013 17:43:34
clawham
я сделал свою болгарку проще!

Человеку надо плавный старт и стабилизация оборотов!

для этого я выпрямляю сетевое на кондер 400 микрофарад 600 вольт
потом полевиком ШИМлю на высокой частоте

парралельно считаю кол-во импульсов от крыльчатки вентилятора ротора оптопарой....
подаётся питание, болгарочка проверяет коротким рывком не заторможен ли ротор и начинает плаавненико 10 секунд разгоняться ... как дошло до 5000 оборотов - мощность снижается...примитивный ПИ регулятор....

начинаем пилить и обороты не проседают.....но....болгарки нынче слааабенькие...и по нагреву до 90 градусов отработанного воздуха я начинаю раз в секунду коротко переводить частоту ШИМа в 1 килогерц...в результате мотор начинает ПИЩАТЬ....и я понимаю что пора бы отпустить нагрузку....как только мк заметил это - сбавляет обороты до 800 на роторе и продолжает часто пищать....идёт охлаждение....мотор ненагружен не на пределе и вентилятор нормально качает воздух....при температуре 60 градусов - пищит дооолго и начинается разгон до номинала....

я думаю именно это нужно любому электроинструменту с колекторниками форсированными....особенно это электролобзиков и перфораторов касается - инструмент со склонностью заклинить.....сколько бы я пилок с экономил ... если б и на лобзик сделал такое :)...есть конечно и проблема...диод надо ультрафаст и на напругу 800 вольт...и он на 32 килогерцах греется....так же нужен драйвер полевика...ибо тоже...чатсота не абы какая....

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Ср янв 16, 2013 00:08:18
takei
Алгоритм работы такой...
1. болгарка используется не по прямому назначению, она работает как вентилятор.... я думаю никто не испугается если пылесос будет работать как вентилятор.
2. думаю все кто читает этот форум держали в руках например шуроповерт, и убедились что кнопка по приведенной мной выше схеме работает очень стабильно от 0 и до 100% мощности, плавно и надежно (я не про мех.часть кнопки))). Можно даже сказать схема "золото"

3. У меня работать так . Сначала плавный пуск до 800об.мин. с переходом на 2000об.мин , в нужное время будет еще 8000об.мин или 10000об.мин и потом опять 2000об.мин или выкл. вот всего навсего что нужно мне для "счастья"))).

4. и все же благодаря обсуждению в этом форуме, удалось услышать в ваших советах то что мне нужно.
Предполагаю использовать в этой схеме вот такую деталь
резисторную оптопару
Изображение
Надеюсь, что смогу управлять его сопроивлением с помощью простого ШИМа.
5. осталось достать такой опторезистор , насколько я понимаю при советской промышлености был их выпуск, а с импорными аналогами наверное я буду в "пролете" :(

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Ср янв 16, 2013 09:35:05
clawham
1) выбросьте вы эти симисторы
2) если считаете эту схему золотом - то вы просто не знаете как у соседей компьютер сам включается или помехи на телеке сыпятся...кроме того все трансформаторы гудеть будут как подорванные...

3) да...конечно резисторная оптопара это кул...но сейчас её не найти ...и у неё проблема с допуститым нарпяжением на концах того самого резистора...там порядка 60 вольт было....а у вас там все 300 будут...

4) никто не запрещает взять биполярник на 400 вольт, резистор килоом 50 и заменить этим биполярником этот переменник в вашей кнопке, тогда пороговый конденсатор вы будете заряжать порциями...и в теории там низковольтной оптопары типа 4n25 должно хватить...НО...ЗАчЕМ?

собрали детектор нуля, завели его на прерывание мк, по прерыванию обнулили счетный регистр 16-тибитного счетчика работающего на 1 килогерце и далее выставили значение совпадения...

совпадение = 0 - максимуму мощности
совпадение = 65536 - ноль мощности

по прерыванию совпадения вы глушите таймер и выдаёте короткий открывающий импульс оптосимистору который откроем силовой симистор...
это при условии что на полный период сетевого напряжения вы получите два прерывания в начале положительной и в начале отрицательной полуволны
если же только одно прерывание то тут немного сложнее

нужно использовать два регистра и прерывания по переполнению и первое будет в общем-то таким же а второе прерывание должно быть всегда на 10 миллисекунд позже первого....вот и все дела...можно и разные таймеры использовать чтоб точно выставить 10 миллисекунд задержку....по истечении этой задержки вы снова выдаёте один управляюющий импульс на оптосимистор

оптосимистор уже БЕЗ детектора нуля обязательно

ну а логику пишите какую хотите....скорее всего нужен быдет датчик оборотов в виде холла с магнитиком на валу мотора или оптопары со шторкой...

все эти варианты есть !
это обычные "умные" диммеры....там есть и детектор нуля и программа работы с этим сигналом прерывания и выходная схемка для оптосимистора....только там значения яркости - по таблицам и кнопкам а у вас - датчик скорости вращения

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Ср янв 16, 2013 14:11:32
Барсик
takei писал(а):Предполагаю использовать в этой схеме вот такую деталь
резисторную оптопару
Фиг Вы где найдёте резисторную оптопару, да ещё с допустимым высоким напряжением на резисторе. clawham верно говорит.
А что касается "этой" схемы, то у меня она работала плоховато. При слабой яркости лампы появлялось низкочастотное мерцание. Что, собственно, меня и сподвигло сделать нормальный диммер на микроконтроллере.

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Чт янв 17, 2013 22:14:25
petruxa99
Возможно не в тему,я в этом не особо шарю, но вот схема где управляют симистором BT 136,(и точно работает с BT 139,сам проверял)
http://radiokot.ru/circuit/power/converter/17/
И у самого вопрос, можно ли симистор подключать к реактивной нагрузке в качестве регулятора ?

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Чт янв 17, 2013 23:49:31
takei
Барсик писал(а):
takei писал(а):Предполагаю использовать в этой схеме вот такую деталь
резисторную оптопару
Фиг Вы где найдёте резисторную оптопару, да ещё с допустимым высоким напряжением на резисторе. clawham .
Согласен, но как вариант можно было бы взять какой нибудь светодиод Изображение
И вот такой фоторезистор у меня есть, в сборе это и будет опторезистор
Изображение
сведений не имею он до 50 вольт или нет, если до 50 вольт то после эксперимента можно будет сказать , что у меня БЫЛ этот фоторезистор :))


Но это же еще не все, за два дня я тут умудрился написать изощренный КОД, запутался в котором я совсем, прерывание, таймер, задержки.........
в общем пока принимаю соболезнования принимаю ...))))) , вот часть кода с который я как мог сообразил.
Спойлер

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

#include <mega8.h>
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
 #include <stdio.h>
#include <delay.h>
#define TTT_PIN PORTD.0    // пин управления  
#define pljus_PIN  PINC.0 
#define minus_PIN  PINC.1 
unsigned char   procent=52;
// Таблица задержек для 16-тибитного таймера
flash const unsigned int  Period[99] = {
20324,  // 1% нагрузки
19794,  // 2% нагрузки
19384,  // 3% нагрузки
19036,18728,18450,18190,17948,17720,17504,17296,17096,16904,16718,16536,16360,16188,16022,15858,15696,
15538,15384,15232,15082,14934,14788,14644,14500,14360,14220,14082,13944,13808,13674,13540,13406,13274,13142,
13012,12882,12752,12622,12494,12366,12238,12110,11982,11854,11728,11600,11472,11346,11218,11090,10962,10834,
10706,10578,10448,10318,10188,10058,9926,9794,9660,9526,9392,9256,9118,8980,8840,8700,8556,8412,8266,8118,
7968,7816,7662,7504,7342,7178,7012,6840,6664,6482,6296,6104,5904,5696,5480,5252,5010,4750,4472,4164,
3816, // 97% нагрузки
3406, // 98% нагрузки
2876  // 99% нагрузки
};
interrupt [EXT_INT0] void ext_int0_isr(void)
{
TTT_PIN = 1;
TCNT1 = 0; // сбросили таймер
  GICR&=~(1<<6);  // запретили прерывание INT0 // GIFR = 0x10000000
}

// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
TTT_PIN = 0;
 GIFR|=(1<<6);     // сбросили флаг прерывания - Флаг сбрасывается ЕДИНИЦЕЙ
 GICR|=(1<<6); 
                           
OCR1A = Period [procent]*2;
//OCR1B = Period [procent]+100;
//        TCNT0=0xFA;                                                             // запускаем таймер на 96 мкс
//        TCCR0=0x04;                                                             // частота таймера 62.500 кГц
}

// Declare your global variables here

void main(void)
{
PORTB=0b00000000;
 DDRB=0b00000000; 
PORTC=0b00000011;
 DDRC=0b00000000; 
PORTD=0b00000000;
 DDRD=0b00000001; 

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 4000,000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x01;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x9C;
OCR1AL=0x40;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Rising Edge
// INT1: Off
GICR|=0x40;
MCUCR=0x03;
GIFR=0x40;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x10;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
// Global enable interrupts
#asm("sei")

while (1)
      {   
      
                                  lcd_gotoxy(0,0);  

                                                 lcd_putchar((procent/100)%10+0x30); 
                                                 lcd_putchar((procent/10)%10+0x30); 
//                                                   lcd_putchar('.');
                                                 lcd_putchar(procent%10+0x30);
      
      
      
      
      
      
      
if((pljus_PIN==0)&&(procent !=99))
procent+=1;
delay_ms(10); // задержка 10 мс. 

if((minus_PIN==0)&&(procent !=1))
procent-=1;
delay_ms(10); // задержка 10 мс. 


      };
}
Результат есть! но только на осциллографе протеуса, а вот светодиод от моего шима не светится,? даже в протеусе, непонимаю куда он ........
если кто может помочь, посмотрите пожалуйста, проект и протеус в архиве.
Zero_herez-nuli.rar
(115.6 КБ) 332 скачивания
petruxa99 спасибо но мне из готового может подойти только схемное решение, программу на МК смогу применить если только у меня получится управлять ей самостоятельно.....
Эта тема для меня по прежнему актуальна, спасибо что принимаете участие.

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Пт янв 18, 2013 14:03:52
zero648
takei писал(а):Результат есть! но только на осциллографе протеуса, а вот светодиод от моего шима не светится,? даже в протеусе, непонимаю куда он ........
если кто может помочь, посмотрите пожалуйста, проект и протеус в архиве.
Чтобы светодиод светился в протеусе от шима, нужно поставить конденсатор параллельно светодиоду и токоограничивающий резистор в цепь светодиода.

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Пт янв 18, 2013 14:46:30
IBIT
clawham писал(а):я сделал свою болгарку проще!
ета разработка в свободном доступе? очень интеренсно посмотреть полную реализацию.

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Пт янв 18, 2013 15:54:18
clawham
делал для себя...ни схемы ни платы ни прошивки как таковой нет...всё делалось на ходу исходя из встречающихся проблем...

впринципе это всё мелочи и делаются любым радиогубителем на ура...
существует в единичном экземпляре у моего отца - он строитель....заколебался покупать якоря :)

может какнибудь переделаю под подобную вещь и свою микроболгарочку да статью напишу :) ну там и делать-то нечего....обычный ШИМ, обычный сетевой выпрямитель с токовым шунтом....МК гальванически связан с сетью, питание - конденсаторное - ничего такого чтобы было важное сложное или дефицитное....единственное - холла нормального не нашел потому сделал на оптопаре....и с ними тоже проблема...из обычных мышек медленные...надо из современных брать....

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Сб янв 19, 2013 07:00:42
vitalik_1984
zero648 писал(а):Чтобы светодиод светился в протеусе от шима, нужно поставить конденсатор параллельно светодиоду и токоограничивающий резистор в цепь светодиода.
Так а можно с этого места подробнее?на сколько конденсатор и резистор, если с Мк 5в питается?Резистора 300ом должно хватить?

Re: МК должен управлять болгаркой (MK>db3>bt136= 0 -1250 об/

Добавлено: Сб янв 19, 2013 19:21:43
zero648
Сопротивления ставлю 100-200 Ом, конденсатор нужно подбирать в зависимости от частоты ШИМ, чем меньше частота тем больше емкость, могут быть лесятки, сотни и тысячи uF, для примера, при частоте ШИМа 100Гц ставлю емкость 3300-4700uF.

детектор нуля, управление фазой

Добавлено: Сб янв 19, 2013 23:54:50
takei
Вот первый результат по программе, и мой код
Спойлер

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

#include <mega8.h>
#include <delay.h>
#define TTT_PIN PORTD.0    // пин управления  
#define pljus_PIN  PINC.1 
#define minus_PIN  PINC.0 
unsigned int   procent=20000;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
TTT_PIN = 0;

TCNT1 = 0; // сбросили таймер
  GICR&=~(1<<6);  // запретили прерывание INT0 // GIFR = 0x10000000 
}

interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
TTT_PIN = 1;
 GIFR|=(1<<6);     // сбросили флаг прерывания - Флаг сбрасывается ЕДИНИЦЕЙ
 GICR|=(1<<6); 
OCR1A = procent;                           
}
void main(void)
{
PORTB=0b00000000;
 DDRB=0b00000000; 
PORTC=0b00000011;
 DDRC=0b00000000; 
PORTD=0b00000000;
 DDRD=0b00000001; 
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 4000,000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x01;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x9C;
OCR1AL=0x40;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Rising Edge
// INT1: Off
GICR|=0x40;
MCUCR=0x03;
GIFR=0x40;
TIMSK=0x10;
ACSR=0x80;
SFIOR=0x00;
TTT_PIN = 0;
#asm("sei")

while (1)
      {   
         if((pljus_PIN==0)&&(procent <=37800))
         procent+=1000;
         delay_ms(10); // задержка 10 мс. 

         if((minus_PIN==0)&&(procent >=4000))
         procent-=1000;
         delay_ms(10); // задержка 10 мс. 
      };
}
в протеусе управляет синусоидой идеально.

Изображение Изображение


В железе собрал, естественно уменя тут получился затык.....
По схеме в железе синхроимпульс нуля на INT0 приходит (осциллографа не имею, но методом тыка,))) проверил есть)
Выход PD0 , прицепил светодиод, яркость меняется, значится схема получается живая...
Далее МОС3052+ВТ136, лампа горит во весь накал, при уменьшении периода синусоиды кнопкой минус, наблюдаю слегка заметные(можно сказать беспорядочные) мерцания лампы.
Кто может поправьте... направьте. Все файлы проекта прикреплены в архиве