Измерение параметров ВМГ

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

Винто-моторная группа (ВМГ) у моего гексакоптера представлена китайским Noname мотором 5010/14 с 750 kV и карбоновыми пропеллерами 12″ с шагом 5.5. Вот на них и потренируемся. Цель — понять реальные возможности моей ВМГ и ответить на пару вопросов:

  1. какие винты для моего мотора подойдут лучше при заданном полетном весе;
  2. аккумуляторы какого напряжения использовать для максимального времени полета — 3S или 4S.

Конечно, есть калькуляторы: ecalc, rc-calc и другие, но достоверных данных по моему мотору нет, поэтому — эксперимент.

Процесс съема показаний записал на видео.

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

Измерительный стэнд и приборы

Минимальный набор приборов для измерения — это кухонные весы, вольтметр и амперметр. Хорошо, если есть возможность еще замерить обороты и температуру обмоток. Все это, кроме веса, решил измерять при помощи чуть усовершенствованного датчика тока и напряжения на Arduino, который я описывал ранее. Добавил туда тачик температуры TS18B20 и первый попавшийся фотодиод.


Схемка такая:

 

Код для Arduino такой:


#include < OneWire.h >
#include < DallasTemperature.h >
// аналоговый пин подключенный к средней точке делителя напряжения
const int VoltageSensorPin = A0;
// аналоговый пин подключенный к выходу датчика тока ACS712
const int CurrentSensorPin = A1;
// RPM
const int RPMsensorPin = A2;
const unsigned long tperiod = 300000; //микросекунд. 0,3 сек для 2 лопастей; 0,2 сек для 3 лопастей.
// Temperature
#define TEMP_PIN 2

const int MaxCurrent = 20; // 20A для ACS712-20

// эту константу нужно подобрать рекурсивно при помощи эталонного вольтметра
// измеряем напряжение на выводе Vcc и подбираем коэффициент до совпадения
const float typVbg = 1.08; // 1.0 - 1.2

// рассчёт делителя
const float R1 = 30000; // 30 kOm
const float R2 = 7500; // 7.5 kOm
// коэффициент для расчёта напряжения на входе делителя
const float dividerRatio = (R1+R2)/R2;
int DarkLevel;

OneWire oneWire(TEMP_PIN);
DallasTemperature sensors(&oneWire);

void setup() {
Serial.begin(115200);
sensors.begin();
analogReference(DEFAULT);
digitalWrite(VoltageSensorPin, LOW);
pinMode(VoltageSensorPin, INPUT);
// RPM
pinMode(A3, OUTPUT);
digitalWrite(A3, LOW);
// значение для тени от лопасти на 2 еденицы меньше чем при включении питания Arduino
DarkLevel = analogRead(RPMsensorPin) - 2;
}

void loop() {
// температура?
sensors.requestTemperatures(); // Send the command to get temperatures DS18820

float Vcc = readVcc();
// падение напряжения в питающих датчик тока проводах (замеряем вольтметром под нагрузкой)
float Vcca = Vcc - 0.02;

// коэффициент перевода имерений в напряжение
float voltRatio = Vcc/1023 ;

float VoltageSensorValue = readAnalogAvegage(VoltageSensorPin);
float VoltagePinValue = VoltageSensorValue * voltRatio;
float VoltageValue = VoltagePinValue * dividerRatio;
float CurrentSensorValue = readAnalogAvegage(CurrentSensorPin);

// рассчитаем в вольтах

float kVolt = (Vcca/2-Vcca*.1)/MaxCurrent;
float CurrentPinVoltage = voltRatio * CurrentSensorValue;
float CurrentValue = (Vcca/2 - CurrentPinVoltage)/kVolt;

// выведем результаты
Serial.print(millis());
Serial.print(char(9));
Serial.print(VoltageValue,3);
Serial.print(char(9));
Serial.print(CurrentValue,3);
Serial.print(char(9));
Serial.print(ReadRPM());
Serial.print(char(9));
Serial.println(sensors.getTempCByIndex(0));

// delay(10);
}

// функция вычисления напряжения питания
float readVcc() {
byte i;
float result = 0.0;
float tmp = 0.0;

for (i = 0; i < 5; i++) {
// Read 1.1V reference against AVcc
// set the reference to Vcc and the measurement to the internal 1.1V reference
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
ADMUX = _BV(MUX5) | _BV(MUX0);
#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
ADMUX = _BV(MUX3) | _BV(MUX2);
#else
// works on an Arduino 168 or 328
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#endif

delay(3); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring

uint8_t low = ADCL; // must read ADCL first - it then locks ADCH
uint8_t high = ADCH; // unlocks both

tmp = (high<<8) | low;
tmp = (typVbg * 1023.0) / tmp;
result = result + tmp;

}
result = result / 5;
return result;
}

float readAnalogAvegage(int Pin) {
byte n = 1; // усреднение n значений
if (n = 1) return analogRead(Pin);
byte i;
int tmp = 0.0;

for (i = 0; i < n; i++) {
delay(3);
tmp = analogRead(Pin) + tmp;
}

return float(tmp) / n ;
}

int ReadRPM()
{
int rpm=0;
bool bLevel = false;
unsigned long ttime = micros()+tperiod;
while (micros() < ttime) {
if (analogRead(RPMsensorPin) < DarkLevel) {
if (bLevel == true) rpm++;
bLevel = false;
} else {
bLevel = true;
}
}
return int(rpm*100);
}

Измерение

Натурный эксперимент показал, что датчик температуры очень инертный. Чтобы определить реальную температуру приходится ждать минут 5 под нагрузкой, поэтому в экстремальных режимах к его помощи лучше не прибегать. Хорошо, что у меня есть еще инфракрасный датчик и я могу измерить температуру сразу после остановки двигателя. С 3S батареей максимальная температура составила 45ºС, а с 4S получилось 61ºС при рекомендованном максимуме 80. Если кратко, то результаты такие:

Batterymax power, VAmax weight, gmax RPMmax current, AU, VWmax/Pmax
3S183115070001611.426.29
4S295155081002114.065.25

Анализ

Тяга

С 4S батареей и 1255 пропеллерами мой мотор выходит на свой максимальный ток, хотя температура еще не критическая — всего 61ºС. Долго в этом режиме им работать не стоит, особенно в жаркий день, но мультикоптеры в эти режимы входят редко и кратковременно. Вывод 4S и 1255 подходят для этого мотора, хоть и не идеально. Тяга на 50% газа 580г. На 6 моторов получаем 580*6=3480г. Получается 4S можно использовать для построения долголета с большим количеством батарей на борту. В моем случае примерно на 1.5 кг, т.е. 16 Ач, т.е. около 26 мин полета по калькулятору. С пропеллерами 1338 калькулятор дает 28 мин полета при том же уровне газа висения, так что есть еще куда двигаться.5010-1255-W-P-4S

А вот 3S батарея недогружает ВМГ. Тяга на 50% газа 370г. На 6 моторов получаем 370*6=2220г. При весе коптера без батарей 1800г остается 420г. Это вес батареи на 6 Ач. С ней можно полетать 13 мин.  Для увеличения тяги имеет смысл использовать 13″ пропеллер (максимальный размер для моей рамы). Шаг пропеллера подбирем по необходимой тяге, т.е. по весу. Например, с общим весом 3 кг (2х6 Ач + 2D подвес для камеры) и пропеллерами 1365 можно отлетать 20 мин (данные калькулятора), а если взять 3,3 кг (2х10 Ач + подвес), то получится аж 28 мин активного пилотирования.5010-1255-W-P-3S

Полный набор зарегистрированных данных для моей ВМГ ниже.UIWRPM

Выше для 3S. Ниже для 4S.

5010-1255-UIWRPMT-4S

Показания тяги 1,15 кг для 3S и 1,55 для 4S почти тютелька в тютельку совпали с расчетными для замеренных максимальных оборатов и данного винта  в программе Propeller selector. Так что можно с уверенностью сказать, что RPM высчитывается точно, весы не врут, а винты у меня действительно с шагом 5.5 (они не подписаны, а на глаз я определять не умею пока). Программа выдает механическую мощность, а у нас измерена электрическая да еще и вместе с ESC. Отсюда можно вычислить наш КПД = 150/183 = 82% для 3S. Не высокий, но это на максимальных оборотах. Ниже будет подробный расчет КПД на всем диапазоне скоростей.

3-4S propSelec

Кстати, там же можно прикинуть максимальную скороподъемность (Air Speed) для известного веса аппарата. Например, для моего стокового 2 кг гексакоптера (тяга 334 г на мотор) получилось 17.5 м/с, что очень быстро, но мой слабенький 3S2200mah явно не потянет 17*6=102 А.

Обороты

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

Оттуда взял формулу расчета Kv. Правда RPM нужно померить без нагрузки, я это сделаю позже, но для прикидки можно воспользоваться данными для 3S, где мотор был недогружен на максимальных оборотах. Сопротивление двигателя измерил в прошлый раз Rm = 0.113 Ом.

    \[Kv = \frac{RPM}{Volts - Amps * Rm} = \frac{6960}{11,64 - 17,22 * 0,113} = 718\]

Что в общем очень близко к заявленным 750. Нужно отметить, что это так называемый внутренний Kv, так как он учитывает работу ESC. Для вычисления Kv без ESC и батареи используют так называемый «метод дрели», а я бы еще назвал его генераторным. Смысл в том, чтобы вращать ротор мотора при помощи дрели с заданной или измеренной скоростью и замерить переменное напряжение между любыми двумя выводами мотора. А дальше воспользоваться формулой:

    \[Kv = \frac{RPM}{Volts * 1.414 * 0.95}\]

В моем случае, например, при вращении со скоростю 5000 об/мин должно получиться 8,95 В.

    \[Kv = \frac{5000}{8,95 * 1,414 * 0,95} = 750\]

Эффективность

Теперь вопрос эффективности мотора. Использую следующие формулы:

    \[Copper Loss = Amps^2 * Rm,\]

    \[Iron Loss = Volts * Io,\]

    \[Total Losses = Copper loss + Iron Loss,\]

    \[Power In = Volts * Amps,\]

    \[Power Out = Power In - Total Losses,\]

    \[Efficiency = \frac{Power Out}{Power In},\]

    \[Kt = \frac{1}{Kv},\]

    \[Torque = Kt * Amps,\]

    \[Km = \frac{Kt}{\sqrt{Rm}} \]

где Kv приведено к (рад/сек)/В.
Имеем следующие расчетные данные на основе измеренных тока и напряжения при 100% газа:

BattaryCopper Loss, WIron Loss, WTotal Losses, WPower Out, WEfficiencyTorque, mHmKt, mHm/AKm
3S28.94.5733.514982%20312.7337.88
4S49.85.6255.4624081%26712.7337.88

Значения Power Out почти совпали с расчетными для нашего винта, которые мы получил выше в программе. Соответственно совпал и КПД 82%, что лишний раз подтверждает правильность наших измерений.

Добавив расчет эффективности для каждой точки снятых показаний можно получить зависимость эффективности от тока. Ниже представлены графики эффективности для 3S и 4S батарей с  добавлением момента на валу.

efficiency 3S

efficiency 4S

Из графиков можно понять, что наилучшая эффективность мотора (max 89%) достигается при значениях тока 4 — 8 А. Хорошо, если сюда попадет газ висения. В обоих случаях мои 50% газа — это около 4 А. Надо понимать, что это только электрическая эффективность мотора, подсчитанная, кстати, с учетом ESC. Винты тут нипричем. Этот график можно использовать при выборе мотора, а полученный момент для последующего выбора винта с необходимой тягой.

Ток

Раз уж привел почти все формулы и способы измерения параметров двигателя, то сначала расскажу как измерить ток без нагрузки Io. Все опять же просто, но с ньюансами. Берем мотор без винта, подключаем к батарее нужного нам напряжения 3S или 4S, и на ESC даем полный газ. Вычитаем из тока при 100% газе ток при 0% газа чтобы исключить потребление ESC и получаем Io. Ньюанс еще заключается в том, что гуру советуют определять Io при рабочей частоте вращения, что я понимаю как газ висения или чуть выше, но использовать ESC для регулировки оборотов нельзя, там должно быть 100%. Предлагается вместо батареи использовать регулируемый источник напряжения, с помощью которого и установить требуемые обороты. Если такого источника нет, то я советую просто взять напряжение с балансировочного разъема. Например, для 4S батареи можно взять напряжение с первых двух банок. Ток Io все равно маленький, как раз в пределах балансировочного тока (0.3А для iMAX B6). А я пока что доверился паспортному значению 0.4А похожего мотора, тем более что остальные параметры у меня пока совпадают.

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

    \[Um = Em + Im*Rm\]

    \[Em = Ce * F * n\]

    \[M = Cm * F * Im = Kt * Im\]

где
Um — напряжение на моторе,
Rm — сопротивление мотора,
Im — ток через мотор,
Em — противоэдс,
Ce — конструктивная константа,
F — поток возбуждения или сила магнитного поля статора (для RC-моделей сила постоянного магнита, т.е. константа),
n — обороты мотора,
M — момент на валу (Torque),
Cm — конструктивная констатнта.

Как мы видим, есть несколько конструктивных констант. Часть из них мы уже вычислили выше: Cm * F = Kt = 1/Kv. Опытным путем я конечно установил, что при rpm=8100, Em=11.5 В. Отсюда Ce * F = 11.5/8100*60=0.0851. Т.к. Cm*F=Kt=0.0127, то Ce = 0.0851/0.0127*Cm = 6.7Cm. Скорее всего Ce = 2\pi Cm, т.е. они равны если переписать противоЭДС через угловую частоту

    \[Em = Ce * F * \omega=Cm*F*\omega=Kt*\omega=\frac{RPM}{Kv}\]

Получается, что значение противоЭДС находится очень легко.

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

    \[Um = Ue - Im*Re = Em + Im*Rm = \frac{RPM}{Kv}+Im*Rm\]

где Im — ток,
Um — напряжение на моторе,
Ue — напряжение на аккумуляторе без нагрузки,
Rm — внутреннее сопротивление мотора,
Re — внутреннее сопротивление аккумулятора
Как определить сопротивление батареии Re я писал тут, а как измерить Rm — тут.
Убив еще пару дней я сдаюсь. Неразрешимая для меня проблема кроется в определении аэродинамического крутящего момента винта. Если бы его знать, то вычислить ток не проблема.

    \[Im = \frac{M}{Kt}\]

Тяга, мощность и крутящий момент винта

Это нелинейная задача со многими неизвестными. Есть программы, которые умеют считать, но я не разобрался как именно. Есть основная формула момента винта M:

    \[M = \chi*\rho*n^2*D^5\]

где \chi — коэффициент крутящего момента (для статической тяги зависит от типа винта, в том числе от диаметра и шага),
\rho — плотность воздуха (зависит от температуры, высоты, влажности), кг/м^3,
n — обороты/сек,
D — диаметр винта, м.
Проблема в этом коэффициенте χ. Он зависит от кучи параметров, причем нелинейно. В книжках про аэродинамику пользуются кривыми для вычисления коэффициентов мощности β, тяги α, и момента χ, а также их соотношений в зависимости от относительной поступи. Например, χ = β/2π. К сожалению, книжки эти про самолеты, а шаг винта там начинается от 10°, тогда как для коптера максимум — это 2º. К тому же, там основной упор на эффективность при самолетных скоростях горизонтального полета, где от скорости зависит угол атаки. В нашей же теме скорости маленькие, поэтому пользуются статической тягой. Возможно, в вышеназванных калькуляторах пользуются аппроксимированными кривыми для нахождения этих коэффициентов в зависимости от относительного шага и оборотов в сек. В итоге получается система уравнений:

    \[N = M * \omega = M * 2\pi n\]

    \[N = \beta*\rho*n^3*D^5 \]

    \[M = Kt * Im\]

где N — механическая мощность на валу, Вт, М — крутящий момент, H.м/сек, Kt в В/(рад/сек).
Зная \beta отсюда легко определить ток.

Я смухлевал и для своих пропеллеров обратным счетом вычислил коэффициент \beta из программы Propeller Selector для нулевой скорости, а заодно \alpha для определения тяги T в кг.

    \[T = \alpha*\rho*n^2*D^4\]

Коэффициенты определены для стандартной атмосферы, т.е. температуры 0 °С, давлении 100 кПа, нулевой влажности: \rho = 1.2754 кг/м^3. Если у нас другие условия, например, летаем в горных джунглях жарким летом, то нужно изменять плотность. Кстити, когда я делал себе анемометр, то вывел формулу скорости звука от всех этих параметров.
Повторюсь, что это все верно только для статической тяги, т.е. отсутсвия поступательной скорости — аппарат висит в одной точке. Как только мы сдвигаемся с этой точки изменяется угол атаки плоскости винта набегающего воздуха и эффективность винта меняется. Она определяется по формуле:

    \[\eta = \frac{\alpha}{\beta}\lambda\]

где \lambda = \frac{V}{n*D} — относительная поступь винта,
V — поступательная скорость, м/сек.
коэф тяги
коэф мощности
Зная \alpha, можно вычислить обороты висения по формуле:

    \[RPMs = 60\sqrt{\frac{G}{i*\alpha*\rho*(0.0254*D)^4}}\]

    \[RPMs = 60\sqrt{\frac{3}{0.00766*1.2754*(0.0254*12)^4}}\]

    \[RPMs = 4620\]

где i — кол-во моторов, G — общий взлетный вес модели, кг.
Можно еще построить график зависимости суммарной тяги всех моторов от оборотов. В точке с тягой, равной взлетному весу и будет значение оборотов висения.

Итоговая формула определения тока через мотор в зависимости от оборотов в сек n, диаметра винта D в дюймах и Kv в rpm/В:

    \[Im = \frac{\beta}{2\pi}\rho n^2 (0.0254*D)^5\frac{Kv}{60}\]

При необходимости, можно откорректировать плотность воздуха под нужную температуру T °C и давление P мм.рт.ст. По-умолчанию P=751, T=0.

    \[\rho = P*133.322/(287.4*(273.15+T))\]

    \[Im = \frac{0.02815}{2*3.1416}1.2754 (8100/60)^2 (0.0254*12)^5\frac{750}{60} = 21.5 A\]

Полученные аналитически результаты подтверждаются результатами натурнного эксперимента. Действительно, тяга 500 гр достигается при оборотах около 4500, а максимальный ток составил почти 22А. Получаемые по формулам механическая мощность, тяга и момент для разных винтов и оборотов соответствуют таковым в программе Propeller Selector. Однако, ток при более низких оборотах получается выше измеренных. Например, ток висения при 4600 об/мин по формуле получился 6.94 А, хотя по факту всего 4 (см. график выше). Причина кроется в работе ESC. Чтобы обеспечить на обмотках мотора 7A регулятор при помощи ШИМ формирует пониженное напряжение. Броски тока сглаживают конденсаторы. Ток до ESC можно получить из мощности. Ведь она одинакова до и после ESC за вычетом потерь. Мощность на моторе находим по уже известным формулам.

    \[Um = \frac{RPM}{Kv}+Im*Rm\ = 4600/750 + 6.94*0.113 = 6.92\]

    \[Ne = Um*Im = 6.92*6.94 = 48\]

Мощность на моторе 48 Вт. Шесть моторов дадут 288 Вт. Делим мощность на напряжение до регулятора и получаем искомый ток до ESC. Правда напряжение нужно взять за вычетом потерь на всем тракте до мотора включая сопротивление ключей ESC. Задача нелинейная, придется сделать несколько итераций. Пусть будет 15 В. 288/15 = 19.2 А. Уточним напряжение U = Ue — I*(Re+Ri+Resc+Rprov) = 16.8 — 19.2*(.08+.05+.008+.02) = 13.76 В. Снова поделим нашу мощность на уточненное напряжение. 288/13.76 = 20.9 А. И так еще пару раз… В итоге около 21.48А. Сюда добавим потребление контролера, приемника и т.д. получим примерно 22 А для полностью заряженного 4S АКБ. Чем больше он будет разряжаться, тем ниже его напряжение и выше будет этот ток. При напряжении 3.7 В на банку ток висения будет уже 27 А.

Ранее мы оперировали максимальным RPM=8100 об/мин, который определили экспериментально. Теперь вычислим максимально возможные обороты и тягу всей модели, чтобы понять возможность перегрузки моторов. Для этого нужно построить 2 кривые в осях «мощность i моторов» и «обороты» или решить систему уравнений:

    \[\begin{cases} Im = \frac{\beta}{2\pi}\rho n^2 (0.0254*D)^5\frac{Kv}{60}\\ Um = \frac{RPM}{Kv}+Im*Rm\\ Ne = Ue*Im*i - (i*Im)^2*(Re+Ri+Rprovod1)+i*Im^2*(Resc+Rprovod2+Rm) - i*Um*Io\\ Nm = i*\beta*\rho*n^3*D^5 \end{cases}\]

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

ESC регулирует ток мотора Im формируя при помощи PWM нужное напряжение Um. Напряжение АКБ Ue, которым оперирует регулятор постепенно проседает на сумме сопротивлений: АКБ Re=0.008,  датчика тока Ri=0.05, самого регулятора Resc=0.08 и проводов с разъемами Rprovod=0.02 Ом. Эти потери пропорциональны квадрату тока. В итоге, достигаем точки, где регулятор коммутирует полное напряжение. Ток больше не растет, а значит мы достигли предела по оборотам. Получаем максимум около 8000 rpm.

Однако все быстро меняется как только мы увеличим количество моторов до 6

Когда суммарный ток достигает 80 А то падение напряжения на всех сопротивлениях (особенно на датчике тока) достигают такой величины, что мощность больше не растет. Отсюда и способ ее увеличения. Чтобы немного поднять мощность и RPM нужно взять батарею большей емкости Q и/или кратностью C, выкинуть датчик тока, заменить провода на более толстые, взять регуляторы с меньшим сопротивлением.

В моем случае с учетом принятых сопротивлений модель потребляет такой ток, что потери не дают раскрутиться больше 6300 об/мин, а значит перегрузки на максимальных оборотах не будет даже на полностью заряженном АКБ, в отличие от стэнда, где я крутил только один мотор и ток был сильно меньше.

Теперь, когда мы знаем максимальные обороты можно вычислить максимальную тягу. У меня получилось 5.5 кг вместо 9 (на 8000 rpm). Если просто выкинуть мой резистивный датчик тока, который вносит 50 мОм в общую цепь, то тяга увеличится почти до 8 кг.

Все полученные расчетным способом данные «бъются» с данными, полученными в вышеназванных онлайн калькуляторах, так что, при желании можно сделать свой калькулятор. Они также «бъются» с данными из логов моего полетного котроллера с реальных полетов с некоторыми допущениями. В частности, используемые в этих расчетах сопротивления (провода и внутреннее сопротивление АКБ) были приняты приблизительно.

Т.к. все вышеописанное — результат моих личных недельных изысканий и больше нигде на просторах интернета ничего подобного не видел, то использовать материал можно только со ссылкой на мой блог blog.regimov.net.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *