Начнём с того, что у каждого программера должен быть токарный станок. Ну… Или, как минимум, у меня он должен быть. И пусть даже без ЧПУ. Это моя мечта.

И мечта сбылась. Станок куплен, привезён, поставлен на место парковки и… Надо бы его включить. А включить его не так и просто. И если не искать простых путей, то нужен «частотник», а по-научному: преобразователь частоты. И пусть я в этом профан, но я его сделал.



И вот с подключения двигателя и начинаются интересности. Сам по себе я в таком профан, есть некоторые общие знания, но как оно реально работает — понятия не имел. А уж когда вместо ожидаемых 3-х выводов 3-х фазника я узрел 4, да ещё и не 3 обмотки с общей точкой, а отдельные 2, да ещё с разным сопротивлением… Ну, я, кхм, скажем так — «удивился».

Так вот, двигатели. Они бывают трёхфазные, трёхфазные, включенные треугольником через конденсаторы и… однофазные конденсаторные.

Трёхфазные — «полноценные» асинхронники. 3 обмотки, по-хорошему включённые звездой и повешенные на полноценные 3 фазы. Ну, или 3-х фазный частотник, коих валом на али.

Трёхфазные + треугольник + конденсаторы. Тут мы уже теряем в КПД, мощности и моменте, ну да если 3-х фаз нету, то вполне себе решение. Дёшево, просто, надёжно, сердито.

Однофазные конденсаторные

Вот о них то и пойдёт речь. Вообще, такие двигатели очень распространены. Это и вентиляторы моторчиков проекторов и приводы некоторых часов, и моторчики для маленьких наждаков и остальные применения, где не надо большой мощности, но нужны плюсы асинхронников: огромная надёжность + обороты, зависящие только от частоты питающего напряжения.

Базовая схема включения (картинка не моя, честно найденная на просторах интернета):



В общем, грубо, принцип такой: Есть стартерная обмотка, она наводит ЭДС в короткозамкнутом роторе. Со смещением по фазе включается рабочая обмотка. Она «отталкивает» замагниченный якорь, начинается вращение. При повороте на некий угол, всё повторяется. Мотор начинает крутиться.

Итого — нужно 2 фазы, смещённые на некий угол. Обычно это 90 градусов. Это и обеспечивается пусковым конденсатором. Ну а после набора оборотов — якорь начинает работать от самой же рабочей обмотки и стартерную обмотку можно вообще даже отключить. Ну, или запитать от рабочего конденсатора, существенно меньшей ёмкости.

Но это всё теория. А на практике то чего хочется? Хочется частотник. Что б само разгонялось, тормозило, крутилось в обе стороны, ну и с разными оборотами, конечно! И вот тут становится всё несколько сложнее. Дело в том, что таких частотников в продаже в разы меньше. И стоят они в разы больше. В общем — экзотика.

А ведь, если так задуматься, то разница от 3-х фазного не так и велика. И даже можно использовать ту же схемотехнику. При этом, есть те же 3 отвода: общий, стартерная обмотка, рабочая обмотка. И всё дело в прошивке. А значит — это можно сделать. И пусть это будет не векторное управление с кучей математики, а простое скалярное, но… как умею.

Итак — что требуется. Для начала посмотрим на графики синуса и косинуса (у нас же смещение 90 градусов) УСЛОВНО оно будет выглядеть так:



Т.е. задача элементарна: «притягиваем» к земле общий, подаём пачку положительных импульсов в стартерную обмотку, подаём пачку импульсов в рабочую. Затем подтягиваем общий к плюсу и подаём пачку отрицательных импульсов к стартерной, а затем и рабочей обмотке. Т.о. грубо получаем имитацию смены полярности и сдвиг фаз. От того, как часто мы это будем делать — будет зависеть «частота».

В общем — теория проста. В качестве контроллера ATMega 328 с бутлоадером ардуины (да по сути, сама ардуина, просто без лишней обвязки), в качестве драйвера IR2132 (старая, но с IR2136 не сложилось) и выходные ключи IRG4BC30. Дя моего 1.1КВт-го мотора этого более чем достаточно.

(Если повторять схему, то просто делается плата, в Arduino Duemilanove заливается скетч, затем Mega328 выдёргивается и впаивается в плату. Готово.)

А вот дальше… Дальше я погрузился в удивительный мир индуктивностей и силовой электроники. И всё оказалось не так и просто, как думалось вначале:

1. Скорость открытия и закрытия ключей — это важно. Deadtime — это ОЧЕНЬ важно.
2. Включение балласта — обязательно с использованием диода, обращённого плюсом на силовой фильтрующий конденсатор. Иначе выбросы при снятии нагрузки с индуктивности на раз выводят из строя силовые IGBT.
3. Охлаждение. На плате маленькие радиаторы — плохо. Либо перегреется, либо надо обдувать. Но если обдувать, то вся металлическая взвесь от станка, рано или поздно, закоротит что-то и будет бах.
3+. Слюда, а точнее ОЧЕНЬ ТОНКАЯ слюда, это плохо. Она пробивается и получается то, что в заглавии статьи. В то же время силиконовые термопрокладки хуже по теплопроводности. Ну а керамика… У меня её нет.
4. Торможение методом длинной пачки импульсов одной полярности на одну обмотку, быстро перегревает транзисторы и они сгорают. А так же, очень весело прыгает мотор, раскрученный до 3-х тыс оборотов и остановленный за 0.3 сек до 0.
5. Когда у вас всё заработает и вы расслабитесь, включите схему без балласта и нажмёте пуск — будет бах. Это приводит ещё и к замене драйвера.

Скетч: Сейчас реализовано вращение в обе стороны с плавной перестройкой частоты 25-75Гц с шагом 0.25. Была идея с тормозом. Сейчас закомментировано и надо будет менять схему. А именно, идея такая: я правильно подавал импульсы одной полярности, НО. Это надо делать через балластное сопротивление отдельным ключом.

Силовая часть: схема ещё будет дорабатываться, но на данный момент станок стоит в не отапливаемом помещении и работать с ним крайне сложно из-за замерзания масла.

Скетч
#define Hi_ST 10    //Стартерный
#define Hi_WK 11    //Рабочий
#define Hi_M 12    //Общий
#define Lo_ST 7
#define Lo_WK 8
#define Lo_M 9
#define SoftStart 6 //реле мягкого старта конденсатора

#define LedFwd 4  //Светодиод "туда"
#define LedRew 5  //Светодиод "обратно"
#define LedStp 13 //Светодиод стоп
#define CmdFwd 2 //Кнопка "туда"
#define CmdRew 3 //Кнопка "обратно" Обе вместе - стоп.

#define ValFwd 4 //Крутилка "Туда"
#define ValRew 5 //Крутилка "Обратно"

#define RemoteFwd 1 //Тут должнен быть пультик...
#define RemoteRew 0 //Тут должнен быть пультик...

int nn = 0;
byte WkState = 0;

void setup() 
{   
	//Serial.begin(9600);

	pinMode(CmdFwd, INPUT);
	pinMode(CmdRew, INPUT);
	
	pinMode(Hi_ST, OUTPUT);
	pinMode(Hi_WK, OUTPUT);
	pinMode(Hi_M, OUTPUT);
	pinMode(Lo_ST, OUTPUT);
	pinMode(Lo_WK, OUTPUT);
	pinMode(Lo_M, OUTPUT);
	pinMode(SoftStart, OUTPUT);
	
	pinMode(LedFwd, OUTPUT);
	pinMode(LedRew, OUTPUT);
	pinMode(LedStp, OUTPUT);

	delay(1500);
	digitalWrite(SoftStart, HIGH);
	Indicate();
}


void loop() 
{
	//Управление
	bool cmdF = digitalRead(CmdFwd);
	bool cmdR = digitalRead(CmdRew);
	bool RemF = digitalRead(RemoteFwd);
	bool RemR = digitalRead(RemoteRew);

	if ((cmdF && !cmdR))// || ) //Кнопка или команда пультика.
	{
		if(WkState != 1 && nn > 0)
		{
			WkState = 1; //Это не Бангладеш. Это необходимость СРАЗУ переключить лампочку, а тока потом тормозить мотор.
			Indicate();
			Brake(); //Тормоз
		}
		WkState = 1; //А это на случай если томозить не надобно. Например после стопа.
		Indicate();
	}
	if (!cmdF && cmdR)// || ) //Тут должнен быть пультик...
	{
		if(WkState != 2 && nn > 0)
		{
			WkState = 2;
			Indicate();
			Brake(); //Тормоз
		}
		Indicate();
		WkState = 2;
	}
	if (cmdF && cmdR)
	{
		if(WkState != 0)
		{
			WkState = 0;
			Indicate();
			Brake(); //Тормоз
		}
		Indicate();
		WkState = 0;
	}
	
	//Исполнение
	if (WkState == 0) //Стоп
	{
		nn = 0;
		delay(50);
		return;
	}

	
	nn ++; //Стартерная задержка (циклы работы стартерной обмотки "на полную")
	if (nn > 30000) nn = 30000; 

	if (WkState == 1) //Вперёд
	{
		int delays = GetDelayByVal(1024-analogRead(ValFwd)); //Ну наоборот я распаял. Бывает, чо... Инвертируем
		RotateFwd(delays-400);
	}
	else //Назад
	{
		int delays = GetDelayByVal(analogRead(ValRew));
		RotateRew(delays-400);
	}

}

//Крутим вперёд. Тут оборот
void RotateFwd(int delays)
{
	digitalWrite(Lo_M, HIGH); //Включаем общий минус
	SendPosST(delays);
	SendPosWK(delays);
	digitalWrite(Lo_M, LOW); //Отключаем общий минус. 
	
	delayMicroseconds(200); //Отрицательная полярность
	
	digitalWrite(Hi_M, HIGH);
	SendNegST(delays);
	SendNegWK(delays);
	digitalWrite(Hi_M, LOW);

	delayMicroseconds(120);
}

//Крутим назад. Тут оборот
void RotateRew(int delays)
{
	digitalWrite(Lo_M, HIGH); //Включаем общий минус
	SendPosST(delays);
	digitalWrite(Lo_M, LOW); //Отключаем общий минус. 

	delayMicroseconds(133);
	digitalWrite(Hi_M, HIGH);
	SendNegWK(delays); 	
	SendNegST(delays);
	digitalWrite(Hi_M, LOW);

	delayMicroseconds(133);
	digitalWrite(Lo_M, HIGH); //Включаем общий минус
	SendPosWK(delays);
	digitalWrite(Lo_M, LOW); //Отключаем общий минус.

	delayMicroseconds(50);
}

//Отправка пачки импульсов
void SendPulse(int pin, int delays) 
{
	byte pwrCycle = 0;
	while(delays > 0) //Крутимся в цикле, пока не закончится время на такт
	{
		pwrCycle ++;
		if (delays < 0)
			return;
		if (delays < 300) //Если осталось менее 300мкс, то проще запаузиться.
		{
			delayMicroseconds(delays);
			return;
		}
		
		if (pwrCycle < 5){	digitalWrite(pin, HIGH);}
		delayMicroseconds(min(1200,delays));  //Длина импульса. 1200мкс
		digitalWrite(pin, LOW);
		
		if (delays < 300)//Если осталось менее 300мкс, то проще запаузиться.
		{
			delayMicroseconds(delays);
			return;
		}

		delayMicroseconds(200); 
		delays -= 1400; //Примерное время цикла
	}
}

void SendPosWK(int delays)
{
	SendPulse(Hi_WK,delays);
}
void SendNegWK(int delays)
{
	SendPulse(Lo_WK,delays);
}
void SendPosST(int delays)
{
	if (nn < 100) //Включаем стартерную
	{ SendPulse(Hi_ST,delays); } 
	else
	{ 
		if (delays > 3000) //Если частота мала - уменьшаем импульс до 25% времени
		{
			delayMicroseconds(delays*0.37);
			SendPulse(Hi_ST,delays*0.25);
			delayMicroseconds(delays*0.37);
		}
		else
		{
			delayMicroseconds(delays); //Для коротких интервалов, можно и 100% гнать стартерную - всё равно импульс будет 1-2шт и короткий
		}
	}
}
void SendNegST(int delays)
{
	if (nn < 100) //Включаем стартерную
	{ SendPulse(Lo_ST,delays); } 
	else
	{
		if (delays > 3000)
		{
			delayMicroseconds(delays*0.33);
			SendPulse(Lo_ST,delays*0.33);
			delayMicroseconds(delays*0.33);
		}
		else
		{
			delayMicroseconds(delays);
		}
	}
}

//Тут должен будет жить тормоз. По идее под него надо отдельнй транзистор, подающий постоянку на обмотки через резистор.
void Brake()
{

	AllOff();
	delay(3000);
	return;

	//Serial.println("Brake");

	//Тормозим тупо импульсами одной полярности. 
	//ЗЫ, это убило 3 транзистора. Тогда я понял что так делать не надо. Но тормозит зверски. Мотор аж подпрыгивает.
	digitalWrite(Lo_M, HIGH);
	for (nn = 0; nn < 100; nn ++)
	{
		digitalWrite(Hi_ST, HIGH);
		delay(3);
		digitalWrite(Hi_ST, LOW);
		delayMicroseconds(250);
		digitalWrite(Hi_WK, HIGH);
		delay(1);
		digitalWrite(Hi_WK, LOW);
		delay(3);
	}
	AllOff();
}

void AllOff()
{
	digitalWrite(Hi_ST, LOW);
	digitalWrite(Hi_WK, LOW);
	digitalWrite(Hi_M, LOW);
	digitalWrite(Lo_ST, LOW);
	digitalWrite(Lo_WK, LOW);
	digitalWrite(Lo_M, LOW);
	delayMicroseconds(500);
}

void Indicate()
{
	digitalWrite(LedStp, (WkState == 0 ? 1:0));
	digitalWrite(LedFwd, (WkState == 1 ? 1:0));
	digitalWrite(LedRew, (WkState == 2 ? 1:0));
}

//от 25 до 75гц с шагом 0.25 и 511 (центр пегулятора) = 50гц
int GetDelayByVal(int val)
{
	if (val < 5) return 10000;
	if (val < 10) return 9900;
	if (val < 15) return 9803;
	if (val < 20) return 9708;
	if (val < 25) return 9615;
	if (val < 30) return 9523;
	if (val < 35) return 9433;
	if (val < 40) return 9345;
	if (val < 45) return 9259;
	if (val < 50) return 9174;
	if (val < 55) return 9090;
	if (val < 60) return 9009;
	if (val < 65) return 8928;
	if (val < 70) return 8849;
	if (val < 76) return 8771;
	if (val < 81) return 8695;
	if (val < 86) return 8620;
	if (val < 91) return 8547;
	if (val < 96) return 8474;
	if (val < 101) return 8403;
	if (val < 106) return 8333;
	if (val < 111) return 8264;
	if (val < 116) return 8196;
	if (val < 121) return 8130;
	if (val < 126) return 8064;
	if (val < 131) return 8000;
	if (val < 136) return 7936;
	if (val < 141) return 7874;
	if (val < 147) return 7812;
	if (val < 152) return 7751;
	if (val < 157) return 7692;
	if (val < 162) return 7633;
	if (val < 167) return 7575;
	if (val < 172) return 7518;
	if (val < 177) return 7462;
	if (val < 182) return 7407;
	if (val < 187) return 7352;
	if (val < 192) return 7299;
	if (val < 197) return 7246;
	if (val < 202) return 7194;
	if (val < 207) return 7142;
	if (val < 212) return 7092;
	if (val < 217) return 7042;
	if (val < 223) return 6993;
	if (val < 228) return 6944;
	if (val < 233) return 6896;
	if (val < 238) return 6849;
	if (val < 243) return 6802;
	if (val < 248) return 6756;
	if (val < 253) return 6711;
	if (val < 258) return 6666;
	if (val < 263) return 6622;
	if (val < 268) return 6578;
	if (val < 273) return 6535;
	if (val < 278) return 6493;
	if (val < 283) return 6451;
	if (val < 288) return 6410;
	if (val < 294) return 6369;
	if (val < 299) return 6329;
	if (val < 304) return 6289;
	if (val < 309) return 6250;
	if (val < 314) return 6211;
	if (val < 319) return 6172;
	if (val < 324) return 6134;
	if (val < 329) return 6097;
	if (val < 334) return 6060;
	if (val < 339) return 6024;
	if (val < 344) return 5988;
	if (val < 349) return 5952;
	if (val < 354) return 5917;
	if (val < 359) return 5882;
	if (val < 364) return 5847;
	if (val < 370) return 5813;
	if (val < 375) return 5780;
	if (val < 380) return 5747;
	if (val < 385) return 5714;
	if (val < 390) return 5681;
	if (val < 395) return 5649;
	if (val < 400) return 5617;
	if (val < 405) return 5586;
	if (val < 410) return 5555;
	if (val < 415) return 5524;
	if (val < 420) return 5494;
	if (val < 425) return 5464;
	if (val < 430) return 5434;
	if (val < 435) return 5405;
	if (val < 441) return 5376;
	if (val < 446) return 5347;
	if (val < 451) return 5319;
	if (val < 456) return 5291;
	if (val < 461) return 5263;
	if (val < 466) return 5235;
	if (val < 471) return 5208;
	if (val < 476) return 5181;
	if (val < 481) return 5154;
	if (val < 486) return 5128;
	if (val < 491) return 5102;
	if (val < 496) return 5076;
	if (val < 501) return 5050;
	if (val < 506) return 5025;
	if (val < 512) return 5000;
	if (val < 517) return 4975;
	if (val < 522) return 4950;
	if (val < 527) return 4926;
	if (val < 532) return 4901;
	if (val < 537) return 4878;
	if (val < 542) return 4854;
	if (val < 547) return 4830;
	if (val < 552) return 4807;
	if (val < 558) return 4784;
	if (val < 563) return 4761;
	if (val < 568) return 4739;
	if (val < 573) return 4716;
	if (val < 578) return 4694;
	if (val < 583) return 4672;
	if (val < 588) return 4651;
	if (val < 593) return 4629;
	if (val < 599) return 4608;
	if (val < 604) return 4587;
	if (val < 609) return 4566;
	if (val < 614) return 4545;
	if (val < 619) return 4524;
	if (val < 624) return 4504;
	if (val < 629) return 4484;
	if (val < 634) return 4464;
	if (val < 640) return 4444;
	if (val < 645) return 4424;
	if (val < 650) return 4405;
	if (val < 655) return 4385;
	if (val < 660) return 4366;
	if (val < 665) return 4347;
	if (val < 670) return 4329;
	if (val < 675) return 4310;
	if (val < 680) return 4291;
	if (val < 686) return 4273;
	if (val < 691) return 4255;
	if (val < 696) return 4237;
	if (val < 701) return 4219;
	if (val < 706) return 4201;
	if (val < 711) return 4184;
	if (val < 716) return 4166;
	if (val < 721) return 4149;
	if (val < 727) return 4132;
	if (val < 732) return 4115;
	if (val < 737) return 4098;
	if (val < 742) return 4081;
	if (val < 747) return 4065;
	if (val < 752) return 4048;
	if (val < 757) return 4032;
	if (val < 762) return 4016;
	if (val < 768) return 4000;
	if (val < 773) return 3984;
	if (val < 778) return 3968;
	if (val < 783) return 3952;
	if (val < 788) return 3937;
	if (val < 793) return 3921;
	if (val < 798) return 3906;
	if (val < 803) return 3891;
	if (val < 808) return 3875;
	if (val < 814) return 3861;
	if (val < 819) return 3846;
	if (val < 824) return 3831;
	if (val < 829) return 3816;
	if (val < 834) return 3802;
	if (val < 839) return 3787;
	if (val < 844) return 3773;
	if (val < 849) return 3759;
	if (val < 855) return 3745;
	if (val < 860) return 3731;
	if (val < 865) return 3717;
	if (val < 870) return 3703;
	if (val < 875) return 3690;
	if (val < 880) return 3676;
	if (val < 885) return 3663;
	if (val < 890) return 3649;
	if (val < 896) return 3636;
	if (val < 901) return 3623;
	if (val < 906) return 3610;
	if (val < 911) return 3597;
	if (val < 916) return 3584;
	if (val < 921) return 3571;
	if (val < 926) return 3558;
	if (val < 931) return 3546;
	if (val < 936) return 3533;
	if (val < 942) return 3521;
	if (val < 947) return 3508;
	if (val < 952) return 3496;
	if (val < 957) return 3484;
	if (val < 962) return 3472;
	if (val < 967) return 3460;
	if (val < 972) return 3448;
	if (val < 977) return 3436;
	if (val < 983) return 3424;
	if (val < 988) return 3412;
	if (val < 993) return 3401;
	if (val < 998) return 3389;
	if (val < 1003) return 3378;
	if (val < 1008) return 3367;
	if (val < 1013) return 3355;
	if (val < 1018) return 3344;
	if (val < 1024) return 3333;
}


Схема:

В общем-то почти классик, но собранная из 5-и разных схем. Диоды по «высоким» плечам в общем-то при применении IGBT транзисторов и не обязательны, но я сначала сделал, а потом только подумал

В итоге: оно работает. Многое ещё стоит доделать, например выносной «пультик», тормоз. Может стоит поэкспериментировать с длительностью импульсов или сделать таки полноценный ШИМ имитирующий синус, а не постоянную скважность. Но пока это так. Может кому пригодится.

И в окончание, хотелось бы спросить: вместо балласта я поставил дроссель, «зажатый» диодами. На сколько я не прав в таком решении? Дроссель, я даже не знаю какой индуктивности. Взят из БП ATX, где он стоял в блоке компенсации реактивной мощности.

Ну а опыт… Опыт очень интересный. Я никогда б не подумал что это может быть столь сложно. И что 30В и 300В это огромная разница. Очень зауважал людей, которые такие вещи проектируют.
А это цена моих ошибок:



Видео всего процесса можно посмотреть тут: 1 2 3

Вопросы более знающим, ответы хотелось бы в комментариях:

1. Дроссель что стоит по цепи +310. Стоит ли мне от него избавляться? Я поставил его в надежде что нарастание тока, в случае сквозного тока, будет медленней и драйвер успеет уйти в защиту по току.

2. У меня получаются импульсы одинаковой скважности. Критически ли это важно? Оставить, или всё ж таки делать нечто «синусозависимое» по скважности?
Поделиться с друзьями
-->

Комментарии (117)


  1. user343
    18.11.2016 01:04
    +1

    Атмега управляет IR-кой без резисторов — это чтоб побольше всего сгорело сразу при авариях?
    Гляньте схемы однофазных на чипе EG8010 (демо-плата EGP1000W). Там развязка или биполярными транзисторами, или ещё и оптодрайверами TLP250.

    Параллельно толстым HV электролитам (С6, не менее 1 мкФ/Вт нагрузки) желательны 1.5KE400A много штук. Или аналог мощного стабилитрона 400В на биполярном транзисторе.
    Про синусные конденсаторы в VFD полно статей, когда они нужны.
    Дроссель нужен скорее на сетевом входе, от помех на кривую разводку.
    Резисторный датчик тока защиты должен успевать тоже.


    1. Skiffrusspb
      18.11.2016 07:34

      Ну, на фото кладбища жертв нет ни одной Атмеги, но зато есть аж 2 драйвера.
      Но нет развязки, потому что вначале «я бывалый ардуинщик, что мне стоит тупо подёргать 6-ю ногами?!», и не стал делать. И запаса транзисторов не сделал. Это уж потом «ого, а чё это оно?!», но было поздно. С другой стороны — мег у меня много, прошить и запаять обратно в случае большого косяка ничего не стоит. Да и сами меги покупал по 200 руб, так что не сильно расстроился б. Вот с IR2132 всё чуть печальнее. Дорогая и редкая.

      Насчёт входного электролита понял, спасибо. Тогда удвою.

      Резисторный не успеет при сквозном токе, когда один ещё открыт, а тут его пара «открывается». Дважды нарвался на сквозной ток, из-за чего такие конские интервалы в прошивке и дроссель на подстраховку. Но в дросселе сомневаюсь…


      1. Dioxin
        18.11.2016 09:04

        «Ну, на фото кладбища жертв нет ни одной Атмеги, но зато есть аж 2 драйвера.»
        Даже если не сгорит, то глючить и перезагружаться может.


      1. asdfghjk12
        18.11.2016 21:52

        Во всех современных драйверах есть аппаратная защита от одновременного отпирания верхнего и нижнего ключа, и аппаратные дидтаймы. А ещё — порекомендовал бы сменить контроллер на абсолютно любой стм32 (не уверен, что 20-ногие подойдут), там есть чудный таймер1 с полным фаршем под 3-фазник… И есть ДМА для аппаратной выгрузки в таймер из таблицы синусов


        1. ant12345
          18.11.2016 23:43

          Кстати, внутри простеньких частотников SEW стоит именно STM32


  1. Moskus
    18.11.2016 07:11

    Вопрос не по электронике: а что это за токарный станок, к которому вы прикручиваете все это великолепие и что вы на нем собрались, таким образом, делать? Просто от этого сильно зависит, нужно ли это. То есть, конечно, «прикольно собрать частотник самому» — это тоже хороший мотив, но вопрос осмысленности все равно остается.


    1. Skiffrusspb
      18.11.2016 07:38

      Это ТВ4. Самый маленький, больменее серьёзный станок. Весит 300кг и его можно привезти тупо в багажнике авто. Для сравнения — следующий по размеру станок, на который засматривался, весит уже пол тонны. А «взрослые» от тонны.

      Что делать? Много чего. Пока пару заглушек выточил, несколько втулочек. А вообще — для меня это как дополнение а набору «дрель-перфоратор-болгарка-сварочник» В общем — что б был. Реально задолбался каждый раз упрашивать токарей, чертить, платить, ждать пока займутся моим единичным заказом…

      Сам стал делать потому что однофазные частотники это скорее экзотика и стоит денег. то обычных 3-х фазный можно купить на али за 5 тыс. А эти от 10-12-и. А тут я на круг в 4 тыс уложился. Ну… ))) Не считая 2 тыс на «кладбище ошибок»


      1. shadovv76
        18.11.2016 11:33

        тоже себе прикупил токарник ТВ-16.
        тяжелую задачу Вы себе выбрали — частотник сделать самому.
        есть несколько вопросов которые Вы не осветили в статье:
        — отсутствует силовая часть выпрямителя из чего не понятно каким образом вы добиваетесь действующего напряжения по номиналу двигателя.
        — прямоугольная форма выходного сетевого напряжения приводит к тому, что действующее напряжения будет выше по сравнению с синусоидальной сетевого.
        — если на входе в выпрямитель отсутствует фильтро-компенсирующее устройство, то вы даете помехи в сеть про косинус Фи на малых мощностях можно не беспокоится.
        — для программируемой системы управления Deadtime можно программно учесть (время когда сняты оба управляющих импульса со столба).
        — банальная рекомендация поставить копеечные оптопары на управляющих сигналах.


        1. Skiffrusspb
          18.11.2016 11:38

          Эм. Там же есть на схеме диодный мост, после которого система плавной зарядки силового конденсатора, а тот около выходных ключей.

          Прямоугольная форма — да. Но действующее — нет. Оно ж не полностью заполняет полупериод.

          Отсутствуют. Да, шумлю по сети. Впрочем, можно включиться через банальный сетевой фильтр. К общей идее он не относится, хотя и подразумевается.

          Опторазвязка управления — да. Не очень хочется получить живительные 300в от выключателя. Хотя кнопки я подобрал пластиковые, и это не очень требуется.


      1. Moskus
        20.11.2016 04:37

        Ну, если это действительно простой, но полноценный токарно-винторезный станок, то частотник ему просто не нужен с практической точки зрения, если только вы не соберетесь пришпандорить к поперечным салазкам линейный энкодер и не реализуете функцию постоянной скорости резания, как на CNC-станках, где скорость вращения шпинделя варьируется, как функция радиуса резания. С переключением скоростей для разных материалов механика станка справляется сама. Дорогой частотник с красивым синусом сэкономил бы вам немного уровня шума от самого двигателя, вероятно. Вот и все заметные плюсы.

        Если бы мне достался такой станок, я бы сосредоточился на приведении в порядок и доработке его механической части — он хоть и настоящий, но, как вы верно заметили, легкий, а потому у него все не очень хорошо с жесткостью и прочим. Ну и точность всего, что там есть, оставляет желать — посмотрите, например, на сколько ось патрона с осью задней бабки расходится.


        1. Skiffrusspb
          20.11.2016 08:24

          Это да. Но это будет уже совершенно другая история.


          1. Moskus
            20.11.2016 08:33

            Вам виднее. Просто от состояния механики, оснастки и инструмента результат (продукт) зависит, а от наличия частотника — практически, нет. Это же не точило или ленточный шлифовальный станок, где без регулировки скорости возможности ограничены.


            1. Skiffrusspb
              20.11.2016 08:41

              Понимаете — это не моя работа. Это моё хобби. И в данном случае я могу позволить себе посидеть пару недель и сделать частотник. Просто потому что мне было интересно.
              И я сделал для себя много открытий. Нет серьёзно. Я никак не думал что «всего то напряжение повыше» вызывает столько сложностей.


              1. Moskus
                20.11.2016 20:32

                Про то, что вы имеете право экспериментировать и так далее, я сказал еще в первом своем комментарии, и эту составляющую я понимаю.
                Но ведь вы, очевидно, купили станок, чтобы на нем что-то делать, а не чтобы с ним что-то делать.


                1. Skiffrusspb
                  20.11.2016 21:35

                  Зима… Не думал что на морозе оно так всё замерзает. А так — да. Надо точить шкивы для редуктора мотора моего самолёта =) Но при минусе, оказывается, со станком работать крайне сложно…


                  1. Moskus
                    21.11.2016 02:08

                    А при конструкции ТВ4, термостат для масла прикрутить вы, явно, не сможете.


                  1. dennisopanasenko
                    21.11.2016 09:51

                    Зачем редуктор? Двигатель будет развивать 3000-4000 rpm, вроде для пропеллера самое то? Или нет?


                    1. Skiffrusspb
                      21.11.2016 10:10

                      Это будет адовый оффтоп, могу рассказать в личке.
                      Но вообще — нет. Есть такая штука как КПД винта, оно падает с оборотами. И если мотора «не много» — то надо редуктор и винт поболе.


    1. Skiffrusspb
      18.11.2016 07:46

      Ну и почему собирал частотник сам. Схемы в инете есть, но нормальные с контроллерами. А с контроллерами дают только HEX. А мне нужен открытый проект. Мало ли чего я ещё захочу. Вот мне не нужен индикатор частоты. Но мне нужно 2 ручки скорости — скорость вперёд и назад. И не нужны энкодеры, потому что мне по сути «всё равно» — сколько там, 50 или 51Гц. А ещё мне нужен выносной пультик.


  1. dennisopanasenko
    18.11.2016 07:46
    +1

    >5. Когда у вас всё заработает и вы расслабитесь, включите схему без балласта и нажмёте пуск — будет бах
    Что такое «баласт»?

    Резисторы в затворах 100 ом и в эмиттерах по 47 — не много? У вас все переключается пешком, скорее всего, и поэтому «Deadtime — это ОЧЕНЬ важно.», Хотя сама 2130 обеспечивает колоссальный интервал больше микросекунды, чего хватает с запасом для всех широкоупотребимых транзисторов.

    L1 — зачем.

    Лично я в такой же задаче на выходе поставил LC-фильтр, хотя поначалу тоже пытался поставить мелкие конденсаторы.

    IR2136 битая на вашем фото, судя по маркировке, контрафакт с ибея/али, который непонятно что делает. Я так же купил IR2130, не обратив внимания на маркировку, хорошо у меня осталась IR2132 c одного проекта, и я быстро подтвердил что проблема в драйвере. Потом я уже брал IR2104 IR2130 на ибее, обращая внимание на соответствие маркировки оригинальной и все было ок. Большой плюс IR что в их даташитах указана как маркируются их изделия.


    1. Skiffrusspb
      18.11.2016 07:51

      5 — Это утюг. Серьёзно =) 1.5КВт-ное, 25-и Омное балластное сопротивление. Ставил вместо L1. А L1 вколхожено для того, как я думаю, что бы в случае сквозного тока драйвер успел уйти в защиту. Хм. И вроде в статье я об этом писал.

      Резисторы по родному даташиту.

      «переключается пешком» — можете пояснить?

      IR2136 — да. Пытался и с ней работать. Правда распиновка чуть другая. А если контрафакт, то привет Чип-Дипу. Но с ней у меня тоже всё работало.


      1. dennisopanasenko
        18.11.2016 08:36
        +1

        Про балласт теперь понял. Подход здравый на этапе первоначального тестирования.

        L1 — как-то вопреки всему. То есть вы им отвязываете по ВЧ от источника питания нагрузку, в результате у вас за дросселем все болтается, а нужно как раз наоборот — чтобы трехфазный транзисторный мост был как можно ближе к источнику питания, там провода потолще, паразитные индуктивности поменьше, может еще конденсаторов добавить пленочных поближе к ключам зашунтировать источник питания, супрессоров тут выше предложили, тоже вариант. У вас из-за дросселя пошли чудовищные выбросы, которые деть было некуда, и они выжигали все что можно, вы это пофиксили диодами, но диоды простые и им надо примерно 50 нс открыться, вобщем я даже думать боюсь что у вас там в реале творится.

        Переключается пешком в смысле медленно. Вы перезаряжаете затворную емкость, а она, грубо, 2000 пф через 100 ом, а для верхнего ключа — через 150 ом. У вас на перезаряд уходит около 400 нс (постоянная времени такой цепи ~200нс), плюс сам еще транзистор вносит задержку 100-200 нс и плюс еще его собственное время выключения не меньше 500 нс. Вот в сумме много получается. Я ставлю 10 ом для частоты ШИМ 14 кгц.

        И я не разбираюсь в этом вашем ардуино (tm) :), но у 2130 входы инверсные, а тут:
        void AllOff()
        {
        digitalWrite(Hi_ST, LOW);
        digitalWrite(Hi_WK, LOW);
        digitalWrite(Hi_M, LOW);
        digitalWrite(Lo_ST, LOW);
        digitalWrite(Lo_WK, LOW);
        digitalWrite(Lo_M, LOW);
        delayMicroseconds(500);
        }

        Видимо, некоторые контрафактные экземпляры и работают. Посмотрите в даташите на 2136 раздел маркировки и сравните с тем, что нанесено на микросхему.


        1. Skiffrusspb
          18.11.2016 09:24

          Диоды быстродействущие, тут всё нормально.
          За дросселем да, болтается. Но только в «минус», т.е при открытии транзистора. При закрытии сброс через диоды очень хорошо работает. Осциллографом выбросов в "+" нет. А вот в минус, да, до 70-и вольт пики, но на доли микросекунд.

          Сами транзисторы по даташиту на 5КГц, так что тут не погоняешь. Да и значения реально из даташита. А в некоторых схемах там в плечах вообще килоомы встречал.
          А такими малыми сопротивлениями — нет ли риска перегрузить по току драйвер? Он всего 200ма по даташиту.

          Выходы! Точно. Забыл спросить. В общем — ситуация для меня очень мутная. Там если сравнить схему и дефайны, то увидите что HI и Lo поменяны местами. Это неспроста. Как я делал: подавал 1 на вход LO и смотрел, какой ключ открылся. Так эмпирически подобрал. А если включал «как написано» то вело оно себя фиг пойми как. Честно — я не понял что это было.


          1. dennisopanasenko
            18.11.2016 10:09

            Диоды, конечно, ultrafast, но это не отменяет того факта, что когда пошел выброс у вас 50 нс там нет ничего кроме дросселя и только потом его закорчивает, демпфируя выброс на источник питания. Кроме того, через этот диод вы сливаете весь ток дросселя.

            Про транзисторы такие не могу ничего сказать.

            Про резисторы в затворах. Только сейчас заметил, что диоды в затворах стоят «наоборот». Так что выключаете вы транзистор относительно быстро, а вот включаете — помедленнее. Но самом деле диоды ставят и так и наоборот, в зависимости что на что меняют. Чаще всего транзистор включают быстро (диод катодом к затвору), а выключают медленнее, чтобы снизить отрицательный выброс на Vs[1-3] выводе драйвера, который там вольт 60 однако допустим, максимум. Драйвер нет, не перегрузите. С килоомными резисторыми транзисторы в подобных применениях сгорят с дымом.

            Я не про выходы, а про входы. Входы у 2130 — инверсные, то есть LOW -активный уровень, ключ включен, а вы при выключении всего на все выводы подаете низкий уровень, и если бы не фишка 2130 в наличии специального блока, которая видит такой атас и выключает просто все, то ваши транзисторы сгорели б с дымом. В 2136, однако, такого блока нет, потому что она делалась для variable reluctance drive и там верхний и нижний ключи соединены через обмотку нагрузки, соответственно их надо включать совместно. Может поэтому у вас с ней и не сложилось.

            Несоответсвтие выводов даташиту с моей точки зрения ужас-ужас-ужас. Не встречал. Я б предложил внимательно прочесть описание микросхемы и, возможно, application notes.


  1. Androniy
    18.11.2016 07:46
    +1

    Сейчас пилю свой частотник. Из того, что было прочитано на форумах могу сказать следующее:
    1. C6 набирать из нескольких конденсаторов не более 470 мкФ (хотя китайцы ставят по 560 мкФ в своих частотниках)
    2. Тормозить можно плавно снижая частоту. Будет не так эффектно, но с меньшими последствиями.
    3. Напряжение на обмотке должно быть пропорционально частоте. Снижаете частоту, снижайте напряжение (скважность). Иначе растет ток, все перегревается.
    4. Синус вместо меандра повышает КПД и снижает перегрев двигателя и ключей.


    1. Skiffrusspb
      18.11.2016 07:54

      1- у меня «плавный пуск», так что можно любой ёмкости.
      2- это долго. Всё ж буду делать схему с подачей постоянки через балласт. Но, видимо, уже весной.
      3- поэтому у меня в прошивке стоит ограничение на 4 импульса на малой частоте. И ограничение минимум 25гц. Ибо меньше уже и мотор перегревается. Нагрузка есть, а охлаждения вентилятором уже нет.
      4 — да =( Но синус и получить сложнее.


      1. Androniy
        18.11.2016 08:16

        1 — Нельзя любой емкости. В процессе работы (когда «плавный пуск» уже зарядил конденсатор) в конденсатор по-прежнему втекают и вытекают большие импульсные токи. Поставив 3 конденсатора по 330 мкФ, например, вы снижаете ток на каждом в 3 раза по сравнению с одним конденсатором на 1000мкФ.
        2 — Ну это единственный вариант без датчика положения двигателя и без балласта (с ними проще решается, но дорого получается).
        3 и 4 — Вы везде какие-то сложные условия наставили, которые можно заменить одной строчкой. Я ардуину не знаю, правда, но сомневаюсь, что у вас функции sin нету, нет там ничего сложного.
        Ну, например, функцию GetDelayByVal(int val) можно было сократить до одной строчки:
        return -((10000-333)/1024)*val + 10000;

        зависимость линейная ведь?


        1. dennisopanasenko
          18.11.2016 08:40

          Функция sin не нужна, по таблице синтез ведется.


          1. Androniy
            18.11.2016 08:52

            Да какая разница как его вычислять. Кстати, для cortex M0 у ARMa в библиотеке функция синуса уже реализована через таблицы. Так что программисту вообще неважно как она в библиотеках реализована.
            Я к тому, что не надо ставить 150 условий (если такая частота, то такая амплитуда, если эдакая, то другая), если можно описать формулой в одну строчку. Пишем функцию зависимости амплитуды от частоты и получаем эффективность в разы выше.


            1. dennisopanasenko
              18.11.2016 08:55

              Я с М0 не работал вообще, есть вопрос — через таблицы? для 32-битного числа?


              1. Androniy
                18.11.2016 09:13

                Через таблицы для 32х битного float точно есть функция.
                float32_t arm_sin_f32( float32_t x)
                Внутри табличное получение двух ближайших значений и линейная интерполяция. Это есть в CMSIS.
                Судя по таблицам можно 32х битное float получить или 15/31 битное целочисленное.


                1. dennisopanasenko
                  18.11.2016 10:14

                  обалдеть, до чего техника дошла! Спасибо, посмотрю на микросхемы.


            1. dennisopanasenko
              18.11.2016 08:58

              разница может быть. Упомянутый 16 мегагерцовый АВР считать синус да еще ногами дрыгать реально вспотеет. Не говоря о том, чтобы еще что-то успеть, ПИД, например.


        1. Skiffrusspb
          18.11.2016 09:12

          Неа, в том то и дело, что не линейная. Нет, у меня была формула для вычисления, но считалось оно слишком долго.
          В теории, можно было б вычислять один раз и в случае если регулятор не менял положения, снова применять старое, но… Всё равно формула не давала той линейности частоты. Пришлось в экселе высчитывать такое. А гора If-в, уже следствие «автогенерации» кода =)


          1. Androniy
            18.11.2016 11:04

            Хм, а откуда там нелинейность? У вас же простой делитель на переменном резисторе. Может вы просто логарифмический резистор поставили? В любом случае, подобную задачу правильней решать с помощью табличного вычисления и интерполяции. Это занимает меньше места и работает быстрее, чем тысячи if'ов.


            1. Skiffrusspb
              18.11.2016 11:28

              Отнюдь.
              Смотрите. 50гц, у нас полупериод, это 5мс.
              Нам надо диапазон +- 25гц., это 10мс-3мс, или +5мс и -2мс. При этом, «середина» будет не 5, а 6.5
              Нет, можно просто забить всю формулу, но её надо считать. А если заранее вычислить массив, то он будет в оперативке, а её мало. А если экселем вычислить все значения, там же учесть гистерезис для шумов регулятора и сгенерить тысячи if-ов, то… считать ничего не надо, надо просто пробежаться и сравнить., а ляжет оно гарантированно во флеш.

              Я посчитал, что быстрее будет просто пробежаться по if-ам. Хотя, есть такая штука как Progmem, но у меня с ней бывали проблемы. А запись в EEPROM и чтение оттуда по адресу — ещё медленней.

              Хотя я не считаю себя истиной в последней инстанции, если кто оптимизирует и покажет что у него получилось — с удовольствием воспользуюсь. Тем более что сейчас меня прервала зима и неотапливаемое помещение, а весной проект продолжится. Нет пультика, тормоза, возможно избавлюсь от дросселя и увеличу ёмкость входного конденсатора. Есть над чем поработать.


              1. Androniy
                18.11.2016 11:42

                Не должно там нелинейностей появляться. Получаете напряжение (оно же положение ползунка реостата), и из пропорции находите частоту. Только арифметические действия, причем совсем немного.
                При вашем варианте: static массив будет во флеше.
                1. Вариант с 1000 if'ов. Это 1000 условных переходов + 1000 двухбайтных значений с которыми сравнивается = где-то 4 кБ флеша. Плюс в худшем случае 2000 тактов на вычисление значений.
                2. Вариант с таблицей: Одна формула (алгоритм вычисления 100-200 байт) + таблица 2кб = 2,1 килобайт флеша и 100 тактов в худшем случае на вычисления. Выигрывает по всем параметрам.


                1. Skiffrusspb
                  18.11.2016 11:44

                  Ок. Можно будет попробовать. Спасибо.


              1. Androniy
                18.11.2016 11:44

                Я, кстати, тоже вот с тормозом ничего не могу придумать как сделать. Тормозной резистор на сильно инерциальную систему нужен очень большой и дорогой. Кроме того еще один ИГБТ с драйвером ставить придется. Пока буду делать с плавным уменьшением частоты, видимо.


                1. Skiffrusspb
                  18.11.2016 11:51

                  А у меня с балластом тормоз просто подачей постоянки отлично работал. Вот когда балласт снял и включил без него — мотор при торможении аж подпрыгнул и умер транзистор.

                  А посему решил что сделаю так: в верхнее плечо поставлю просто мосфет, управляемый через оптопару, его заведу через резистор на 25ом и ватт эдак 100, и когда надо будет затормозить — просто открою нижний ключ и этот мосфет. На обмотке будет просто постоянка, а все реактивные моменты будут гаситься самим же резистором.


                  1. svitoglad
                    20.11.2016 18:36

                    Можно попробовать плавно тормозить ШИМом.


                    1. Skiffrusspb
                      20.11.2016 19:27

                      Энергию то всё равно надо рассеивать. Плавно тормозить шимом — значит опять рассеивать на транзисторах. А хочу греть резистор. Резистор понадёжнее будет =)


                      1. svitoglad
                        21.11.2016 21:41

                        Да, есть такой момент. Хотя те промышленные частотники которые довелось использовать поддерживают торможение как транзисторами так и внешним резистором.


      1. dennisopanasenko
        18.11.2016 08:54

        1. По значению ripple current проходите в ограничение по спецификации на кондёр?
        4. Синус на «другом массовом контроллере» (tm) получается в железе :) без единой судороги.


        1. Skiffrusspb
          18.11.2016 11:32

          Да, была мысль сделать на STM32, но повторяемость схемы от этого сильно страдает. Очень не хочется быть тем, кто «вам нужен такой контроллер, такая среда, такой прошивальщик» и всё это для «моего HEXа», в котором вы ничего не сможете подправить или дописать под себя. Нет уж.

          А ардуина такая обойдётся в копейки на али и под неё всё есть. Код проще и понятнее, очень многие смогут что-то дописать под себя. В общем — это более народный вариант.


          1. Androniy
            18.11.2016 11:55

            В основном так говорят те, кто изучил ардуину и боится STM32. Атмеге давно пора на покой, она морально уже устарела. Цена на STM32 уже практически сравнялась, а местами даже лучше, чем на АВР. Самое главное — в stm32f1xx вы получаете гарантированный deadtime и полностью аппаратный шим.


            1. Skiffrusspb
              18.11.2016 12:04

              Вы зря мне доказываете, я сам давно перешёл на STM32.
              Но тут тоже для меня есть разделение. Быстрый проект, особенно если планируется его «расшаривать» — то ардуина. Точнее, мега от неё. Если чисто для себя и не хватает меги — ну STM.

              Да и DIP в домашних условиях гораздо проще разводить, нежели впаивать STMку. А STMка с обвесом на плате слишком габаритна.

              А некоторые проекты в вообще под ATTiny85 делаю.

              В общем — каждому проект своё. А пихать STM32 туда, где и меги достаточно, считаю не рациональным.


              1. dennisopanasenko
                18.11.2016 13:23

                Я не хочу вас переубеждать, но не могу понять, как LQFP48 оказывается габаритнее даже, пусть, DIP28 :) А с учетом того, что для DIP28 и все остальное будет для монтажа в отверстия габарит будет раза в 4 больше. Ну и SMD можно и, в некоторых случаях, лучше, монтировать с обеих сторон. :)


                1. Skiffrusspb
                  18.11.2016 13:39

                  Не, там есть C8T6, они есть на платках типа ардуины. Уже распаяны кварцы, питание. В общем-то удобная штука стоимостью в 300 чтоль руб. Но оно габаритное.


                  1. dennisopanasenko
                    18.11.2016 15:20

                    Я в курсе таких модулей, есть пара. Они ж для breadboard ну или если выводов немного задействовать. Если надо почти все и делать под это материнскую плату — это сверлить под три сотни отверстий, это в домашних условиях уже за гранью, на мой взгляд.


            1. dennisopanasenko
              18.11.2016 13:16

              stm32 стоит даже дешевле при равном с авр числом выводов, как правило. И есть мегапопулярные STM32F103R8C6 по полтора доллара. И все как вы пишете и отладка на кристалле — бесценна.


              1. Skiffrusspb
                18.11.2016 13:22

                Не так много людей сможет ЛУТом нормально изготовить плату под неё, а потом ещё и её распаять. Тут IR2132 то так себе, но она хоть тоже в DIPе есть.

                В остальном — нарываемся на 3.3в, где уже обычным мосфетом не порулишь, просто припаяв к гейту сопротивление.

                В общем — я не буду спорить, STM32 и вправду очень крутая штука. Но это уже не совсем DIY, а точнее — не для всех.


              1. svitoglad
                19.11.2016 20:17

                отладка на кристалле в частотнике в несколько раз увеличит кучку дохлых транзисторов и драйверов.


                1. dennisopanasenko
                  19.11.2016 20:32

                  Это ваш личный опыт? Вы определенно что-то делаете не так.


                  1. svitoglad
                    19.11.2016 20:46

                    На счет опыта — «около того» что описано в статье.
                    Рекомендую почитать это — https://geektimes.ru/company/npf_vektor/blog/269158/


                    1. dennisopanasenko
                      20.11.2016 08:38

                      Я читал этот материал раньше, но он не вызывал у меня особого интереса. Я не оперирую «киловольтами и килоамперами», как НПФ Вектор. Кроме того, прочтете внимательнее — они там вполне используют отладку на кристалле: упоминают Code composer и развязанные JTAG, это все есть в их арсенале.

                      У меня два рабочих инвертора, хотя и маломощных (полтора киловатта) и в одном из них как раз отладка на кристалле позволила увидеть ошибку и сохранила коммутационное звено. А вы свои инверторы как отлаживаете? :D


                      1. svitoglad
                        20.11.2016 18:18

                        У меня DC — моторчики на 110В на 500Вт. :)
                        При отладке платы по Spy-BiWire с подключенным мотором удалось сжечь транзисторы, ir2109, MSP430G2533. :(


                    1. dennisopanasenko
                      20.11.2016 09:40

                      Решил прочитать коменты под материалом. Как ни странно оказалось не я один так думаю:
                      https://geektimes.ru/company/npf_vektor/blog/269158/#comment_8944968


                1. Skiffrusspb
                  19.11.2016 21:16

                  Это мой пункт 5…
                  Сначала сидел — моргал лампочками и всё работало как надо, потом включал балласт всё работало как надо, а потом включил напрямую и получил бабах =(


                  1. svitoglad
                    20.11.2016 00:13

                    С силовой электроникой очень часто так случается. По-этому первое что в таких вещах нужно делать это продумать систему защиты кроме предохранителя.


                  1. dennisopanasenko
                    20.11.2016 08:42

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


                    1. Skiffrusspb
                      20.11.2016 09:12

                      На ютубе правильно подсказали — 0.1мкф бустерных конденсаторов мала. Надо 10мкф. Может ещё в этом дело было. Буду исправлять. Ну и от дросселя избавлюсь.

                      Но это всё к весне.


                      1. Androniy
                        20.11.2016 10:14

                        Емкость бустерных конденсаторов надо считать исходя из частоты ШИМ. У IRF есть application note (например для моего модуля) Там есть даже график зависимости емкости от частоты (стр. 19-20).


  1. alex323
    18.11.2016 07:54

    На выходе у вас полноценный трехфазный мост. Так и напрашивается подключить к нему обычный асинхронный двигатель с короткозамкнутым ротором. Зачем тут однофазный двигатель?


    1. Skiffrusspb
      18.11.2016 07:56

      Коротко — он у меня есть =)
      Развёрнуто: у предыдущего владельца не было 3-х фаз и частотника. Поэтому он отдал мотор в перемотку и сделал с него однофазный.


  1. vlad1988_1
    18.11.2016 07:57

    Минутка критики:
    1) Где обратная связь по току? В таких схемах это очень важный момент, который исключает перегрузки и холостую работу без электродвигателя.
    2) Вы уверены что 15 вольт на драйвере хватает открыться транзисторам? Они недолжны вообще греться, т.к. они расчитаны больше на ключевой режим где их сопротивление измеряется милиОмами.
    3) Тормоз проще всего сделать постаринке пускатель, трансформатор и диодный мост. А пускателем управлять с контроллера следя за отключением преобразователя.
    4) Мало конденсаторов по питанию не бывает!


    1. Skiffrusspb
      18.11.2016 08:00

      1 — Резистивный шунт в минусе и регулятор. к нему в схеме тоже неспроста.
      2 — Я — нет. Инженеры IR — да. Это с даташита к этому драйверу.
      Греться будут. Ибо это не MOSFET, а IGBT, это… в общем, лучше почитайте про них.
      3 — Зачем мне пускатели, когда достаточно будет добавить 1 транзистор?
      4 — да =)


    1. dennisopanasenko
      18.11.2016 08:42

      15 вольт — хватает. В нормально построенной схеме на 14 кгц ШИМ при работе на киловаттную нагрузку потери на транзисторе будут примерно 3 вт. Так что греться будут.


      1. Skiffrusspb
        18.11.2016 09:14

        Ну у меня поболе было. Порядка 5-и Вт по ощущениям.
        Но и транзисторы эти дают максимум 5кгц.


  1. AVKinc
    18.11.2016 09:15

    Я дико извиняюсь, но ставить на ТВ-4 однофазный мотор это не тру.
    У меня есть такой станок, покупал с дохлым двигателем. План такой.
    На авито берем 1.5кВт мотор недорого и там же частотник трехфазный на 220В (либо делаем его, на Радиокоте есть отличный вариант)


    1. Skiffrusspb
      18.11.2016 10:11

      Ну уж какой достался. Да и работает, не вижу причины его менять.
      Готовый частотник — не. Мне не нравится. Выше я уже отвечал, почему.


  1. nafikovr
    18.11.2016 09:57

    Пока прочитал только первый абзац. Как я вас понимаю. Тоже программер, и тоже мечта в виде токарного станка. сбылась ровно неделю назад. я думал я один такой… правда китаец, ибо ТВ-4 для квартиры ну как то не очень


    1. Skiffrusspb
      18.11.2016 10:15

      Тоже думал о китайце. И даже купил бы. Но, его забрали как раз во время моего звонка =)
      Да и к лучшему. Он шибко меньше, а мне надо будет точить редуктор на мой самолёт, шкив 180мм. Тут и ТВ4 может не хватить, придётся извращаться.


      1. nafikovr
        20.11.2016 20:16

        а я счел что большие детали я найду где и у кого разместить. станок взял скорее ради побаловаться, поучиться токарить. ну и чтоб иметь возможность что то мелкое сделать максимально быстро.


    1. opxocc
      18.11.2016 10:35

      Кажется это болезнь среди программистов, насмотревшись Youtube есть желание купить хоть 16к20, благо есть и три фазы и куда ставить, но думаю ограничусь всё же тем же ТВ-4 :)


      1. Skiffrusspb
        18.11.2016 11:00

        От меня ИТ-1 ушёл, пока я с роднёй о месте в гараже для него договаривался… Человек продавал даже с доставкой… Вот это вообще для меня печаль была…


    1. svitoglad
      19.11.2016 19:58

      Можно было ТВ-16 взять он меньше ТВ-4.


      1. nafikovr
        20.11.2016 20:15

        да, ТВ-16 вроде и меньше, но ставится на стол с двигателем. да и в хорошем состоянии я не нашел.


        1. svitoglad
          21.11.2016 22:41

          С каждым годом найти в хорошем состоянии ТВшку (или любой другой советский станок) становится труднее. Да и импортный хобийный станок, даже китайский, будет получше новой ТВшки, вот только дороже.


          1. Skiffrusspb
            21.11.2016 22:53

            Ну вот очень спорное заявление. Китайцы с пластиковыми шестернями, 350вт мотором и тоненькой станиной… Не, ну можно, но… Нарывался на тему, где народ станину выставляет и бетонирует для получения хоть какой-то жёсткости… Да и ТВшка не ахти, но тут хоть станина на настоящую напоминает.


            1. nafikovr
              21.11.2016 23:29

              Это все опять же только если твшка в оооочень хорошем состоянии. Те что я видел шабрить придется до посинения руки и мозга. А все потому что все твшки в приличном состоянии находятся у тех кто на них работал и соответственно изнашивал


          1. nafikovr
            21.11.2016 23:27

            не соглашусь. На движок и шестерни грешить не буду ибо движки и на тв16 так себе, а у китайца еще и облроты регулируются. А шестерни пластиковые просто бесшумные по сравнению с гитарой тв16. А вот станина да… уже сейчас думаю о том чтоб сделать жесткую столешницу из мелаллопрофиля и к ней прикрутиться ибо родная станина крутится при желании даже руками.


            1. Skiffrusspb
              22.11.2016 12:41

              Дело не в гитаре и прочей шумности. Дело в том, что если засадишь резец, то пластиковые шестерни редуктора просто рассыпаются. Из-за чего народ часто заказывает металлические. Как раз такой, проапгрейженный, станок от меня и ушёл перед тем как я ТВшку взял.


              1. nafikovr
                22.11.2016 13:00

                я тоже боялся плсатика. Но во-первых ни разу не слышал чтоб они ломались. Во-вторых у меня при закусе резца, станок скрутило так, что резец закинуло под заготовку диаметром 8мм, гитара в таком положении сделала еще пару мм ходу и после этого движок встал по защите.


  1. CrazyRoot
    18.11.2016 10:34
    +1

    Я не трус, но я боюсь!(с)

    Крайне не люблю такие схемы без развязки высоковольтной части от логики. Хотя бы оптопарами.


    1. Androniy
      18.11.2016 10:49

      Да многие промышленные частотники до 3 кВт без развязки делают. При правильной разводке, говорят, все там нормально. Тем более, что если заморачиваться, то надо все развязывать, а это значит, что надо брать отдельный АЦП для измерения тока и его тоже развязывать. В итоге цена и размеры платы вырастают очень ощутимо (штук 10 оптопар получается). Оптопары до кучи вносят свои задержки в переключение и осложняют отладку. Если deadtime порядка 100 нс еще ничего, а если меньше…


  1. sneka
    18.11.2016 11:29

    Оооочень хорошая тема! Автор молодец! Подпишусь послушаю.


  1. maxmanvp
    18.11.2016 15:31

    Схема то неплохая конечно, но без средней точки не очень хорошо будет работать…
    Если бы отделить обмотки друг от друга и управлять ими отдельно было бы эффективнее…
    Ширина импульсов ШИМ должна быть пропорциональна функции синуса…
    ШИМ обычно работает от 4...16 кГц, ну а синус от 0 до 50 гЦ, если выше, не хватит напряжения звена постоянного тока и поток ослабнет не обеспечив момент…


    1. Skiffrusspb
      18.11.2016 15:33

      Тогда надо 2 полноценных H моста. Ну… Может да. Я тогда об этом не думал. Так то оно интересно, конечно.

      А вот что даст синусная скважность? Больше момент?


      1. svitoglad
        20.11.2016 18:26

        Увеличится мощность и соответственно момент.


    1. alex323
      18.11.2016 20:35

      Верхняя частота в 400 Гц в частотниках — обычное дело. Момент, конечно, падает, но не везде это критично. Есть частотники и до 800 Гц.


      1. Skiffrusspb
        18.11.2016 20:44

        Да пжст. Можно и больше, вот только мой мотор сказал «неа». А потому, зачем делать больше?
        До кучи — такие частоты для трёхфазника может и доступны, а тут то однофазник.


        1. alex323
          18.11.2016 21:59

          Вообще-то я это maxmanvp отвечал…
          Кстати, у меня тоже ТВ-4 в гараже стоит :). Сеть однофазная, поэтому очень неспешно делаю частотник. Решил делать сразу правильно. Наилучший выбор, на мой взгляд, STM32. Хотя есть и другие процы с подходящими таймерами, но STM32 наиболее популярен и дёшев. На данный момент у меня написана основа программы формирования модифицированной синусоиды. Для этого задействован таймер TIM1 в связке с DMA, что позволяет генерировать модифицированную синусоиду аппаратно. Управление скалярное. Будет плавный заряд конденсаторов, контроль напряжения DC шины, управление торможением на гасящем резисторе. В варианте для ТВ-4 частотник будет на готовом трёхфазном IGBT модуле со встроенным драйвером.


          1. Skiffrusspb
            18.11.2016 23:42

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

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


            1. Androniy
              18.11.2016 23:54

              Тоже делаю на модуле. У него много плюсов. Это и контроль температуры и проще развести плату и меньше места занимает и 3.3 вольта большинство умеет. Риск пожечь есть, конечно, надо быть осторожным.


            1. alex323
              19.11.2016 08:12

              Модули на 1200 Вольт стоят дорого, а требуемые в нашем случае модули на 600 Вольт относительно доступны. Я выбрал Fsbb30ch60 — достаточно мощный и недорогой. Комплект из шести транзисторов и драйвера стоит дороже. Плюс корпус у Fsbb30ch60 такой уникальный, что вряд ли китайцы его перепилят из другого.
              Чтобы уменьшить вероятность спалить силовую часть, я отлаживал программу, контролируя выходные сигналы логическим анализатором. Логику вместе с силовой пока не включал, сначала хочу дописать некоторые вещи.


              1. dennisopanasenko
                19.11.2016 09:33

                Как защиту по току будете строить?


                1. alex323
                  19.11.2016 10:50

                  Примерно по типовой схеме для подобных модулей. Там уже присутствует встроенная защита по току. Необходимо только добавить внешний шунт между соединенными в кучу эмиттерами нижних транзисторов и минусом DC шины. От шунта через интегрирующую цепочку нужно подать сигнал на вход защиты модуля. Причем в данном случае эмиттеры не соединены вместе внутри, как в других модулях, поэтому при желании можно поставить три шунта и мерять ток по фазам.


            1. user343
              19.11.2016 13:28

              Ещё по вашей схеме: C3-C5 слишком малы.
              0,1мкФ вместо 10мкФ, рекомендованных в AN-985 и подобных типовых схемах.

              При такой квалификации проблемы типа
              «Наводки частотника и зависание ATMega128» http://kazus.ru/forums/showthread.php?t=104172
              постепенно превратятся в классическое «ведро горелых полупроводников».
              Это примерно как «пуд соли съесть», но увеличит нагрузку на кошелёк и свалки.

              Чем вам однофазные VFD EGP1000W не нравятся? Двухстороняя печать, «мозги» и драйверы на дочерней плате, легко заменяются через разъёмные контакты. Цена ошибки мала.

              Ну будет движок с пусковым кондёром с 30Гц начинать работать, а не от 10, как при двухфазном упр-ии — неужто коробка скоростей старого станка не справится? Ей обороты движка при 50 Гц — крейсерская скорость. Не было раньше частотников, а детали точились нормально.
              Реверс контактором сделаете, не так уж часто он нужен в главном приводе.


              1. Skiffrusspb
                19.11.2016 21:34

                10мкФ ставят если транзисторы MOSFET, а для IGBT достаточно и 0.1 И это взято из даташита, не думаю что с этим есть проблемы.

                EGP1000W — ценой, отсутствием реверса, тормоза, пультика.

                И опять конденсаторы? Нет, не хочу.

                Я то хочу иметь возможность плавно подстроить частоту при обработке детали с малого радиуса на большой. И хочу иметь возможность резать резьбу, дойти до точки, быстро остановиться и тут же дать реверс на меньших оборота, дабы сделать второй проход. И это не тыкая каждый раз в частотник для того что б поменять скорость с «вперёд» на «назад». Именно поэтому у меня изначально 2 регулятора скорости.


                1. dennisopanasenko
                  20.11.2016 09:12

                  Вы зря так слепо доверяетесь даташиту. Там же не указано для какого применения приведена типовая схема применения. Может они на 70 кгц шимят и том, может, быть хватит 0.1. А вы, как я понимаю, на 10 мс подятгиваете общий провод двигателя к плюса источника и хотите, чтобы такой мелкий кондер удержал напряжениев это время? Я бы на это не поставил. Я все-таки рекомендую хотя бы пролистать Application notes на это семейство драйверов, там, в том числе, вопросу выбора конденсаторов рассматриваются.

                  Я лично на 14 кгц (то есть 14000 раз в секунду гарантированно включится нижний ключ, что позволит зарядить конденсатор верхнего плеча) применяю 4.7 мкф тантал и 1 мкф X7R.

                  А в вашем случае, полагаю, все-таки близка ситуация, что срабатывает UV защита и верхний ключ закрывается. И хорошо, что такая защита есть, потому что при выходе транзистора из насыщения, говоря вашими словами, будет «бах». Неминуемо. От него никакая токовая защита не спасет.


                  1. Skiffrusspb
                    20.11.2016 09:20

                    Именно.
                    И 0.1 я взял из тестовой схемы, а потом ещё и нарвался на странный пример. Пересмотрел кучу чужих схем — почти у всех 10мкф.

                    А импульс у меня 1.2мс + 0.3мс пауза до следующего.

                    В общем — весной меня ждёт ревизия =)


                    1. dennisopanasenko
                      20.11.2016 09:27

                      Если будете ставить электролит — его лучше шунтировать керамикой нормальной. Только керамику 10 мкф без электролита тоже лучше не ставить.


                      1. Skiffrusspb
                        20.11.2016 10:00

                        А вот это интересно. Как раз так и думал поступить — поставить керамику.


                      1. Androniy
                        20.11.2016 10:19

                        А с чем связан совет добавлять к керамике электролит? Сколько ни искал информации — электролиты не имеют ни одного плюса по сравнению с керамикой (ну кроме больших емкостей, недоступных керамике). А я хотел вообще пленочный поставить…


                        1. dennisopanasenko
                          20.11.2016 13:35

                          Емкость керамических конденсаторов зависит от приложенного напряжения. Что самое засадное — с повышением напряжения емкость понижается, а не наоборот. Степень снижения этого зависит от диэлектрика. То есть для повышения повторяемости конструкции лучше в дополнение к кермике поставить электролит. Пленочные этим не страдают, но найти пленочный 10.0х16V (лично я бы поставил 25V) в конструктиве, например, 1206 — не знаю, есть такие или нет.


                          1. Skiffrusspb
                            20.11.2016 14:15

                            Очень интересно, спасибо. Не знал.


                            1. user343
                              20.11.2016 14:56

                              Про уходы керамики: https://geektimes.ru/post/263366/

                              Но если раньше на плате SPWM EGS002 были 4 танталовых «ускоряющих» емкости по 10мкФ, то с 2015 г. стали ставить только керамику. И прошивка там ROM кажется, не слетит от помех.

                              Пустая плата egp1000W стоит ~570р. на али (8 транзисторов, 2 слоя, 3 электролитич. кондёра диаметром до 16 мм).
                              Туда можно любую «дочку» подключить, с вашей логикой работы.
                              И внешние бочонки электролитов на проводках.


                              1. Skiffrusspb
                                20.11.2016 15:15

                                Не очень понимаю, а как на нём получить синус? И почему так дёшево?


                                1. alex323
                                  20.11.2016 17:28

                                  Дешевая — это потому, что просто печатная плата без деталей.
                                  Синус получается, если ШИМ с выхода правильного частотника проинтегрировать.


                                1. maxmanvp
                                  21.11.2016 14:02

                                  можно не париться с синусом, схема простая…

                                  image


                                  1. Skiffrusspb
                                    21.11.2016 14:06

                                    Это у вас трёхфазник ;) А у меня конденсаторный однофазник.


                                    1. maxmanvp
                                      21.11.2016 14:58

                                      Предлагаю организовать конденсаторами среднюю точку после выпрямителя и включить туда точку соединения обмоток…
                                      тогда вместо 6 векторов будет всего 4 вектора и 4 транзистора разумеется, а технология та же…


                                      1. Skiffrusspb
                                        21.11.2016 15:02

                                        А я то всегда думал, что это я дикий извращенец )))


                                1. user343
                                  27.11.2016 13:06

                                  Потому что это полуфабрикат, рублей за 800 к ней докупаются задающий генератор и LCD экранчик (частота, напряжение, ток, температура). Оно серийное, с 2011 г. отлажено инженерами, выпускающими свои микросхемы.

                                  Разработка любительских плат много времени займёт, изготовление двухсторонних с толстой медью — и денег. А паутина проводов сбоить будет.
                                  Нужно вам 2 фазы, так купите пустую EGP3000W и одну фазу не запаивайте.

                                  Вот чей-то «первый блин» на купленных платах SPWM VFD и c самодельной силовой частью:
                                  http://www.uschema.com/forum/viewtopic.php?p=22292#p22292
                                  уже больше года эпопея тянется. Печатные проводники тонкие, всё как-то по-студенчески выглядит.

                                  А этот проект лучше проработан, компоновкой похож на фирменные частотники и DC/AC батарейные ВЧ инверторы:
                                  http://we.easyelectronics.ru/power-electronics/razrabatyvaem-chastotnik-chast-pervaya-silovaya-chast.html


  1. Dorozhny
    20.11.2016 12:11

    Вам, параллельно стойкам моста, надо поставить емкость- полипропилен прим. 0,1мкф (MKP WIMA или к78-2) как можно ближе к ногам ключей. Еще очень критична разводка ПП, земли силы и управления мешать нельзя. 100 Ом в затворы- и 47 в эмиттерных цепях- это оч. много, надо уменьшить на порядок, а как же ограничить резисторами токи через разрядные диоды в затворах…


  1. Ezhyg
    20.11.2016 21:47

    Осмелюсь предложить всем интересующимся станками… то есть работами на токарно-винторезном станке и другой металлообработкой, посмотреть канал Виктора Леонтьева — https://www.youtube.com/channel/UCnJSm2aNkvfLsKq2ZSO8oGQ