Форум РадиоКот https://radiokot.ru/forum/ |
|
однофазный частотный преобразователь https://radiokot.ru/forum/viewtopic.php?f=11&t=148376 |
Страница 1 из 1 |
Автор: | lampa [ Сб сен 16, 2017 22:07:27 ] |
Заголовок сообщения: | однофазный частотный преобразователь |
В общем-то я далек от всего этого. Был у меня однофазный частотный преобразователь и недавно испустил дух ![]() Я посмотрел как это всё дело работает: напряжение преобразуется в постоянное. далее стоят 3 конденсатора, от конденсаторов провода идут на полумосты, а полумостами управляют драйверы, которые в свою очередь управляются контроллером. Я покумекал и решил, что надо действовать. В качестве igbt транзистора использую FGH40N60SFD, в качестве драйвера не знаю что выбрать, но пока остановился на IR2101, в качестве контроллера хочу использовать arduino uno, у него как раз 6 шим пинов, да и писать я умею под него. Подключение драйвера использовал по типовой схеме: ![]() Нарисовал схемку. Теперь по порядку. Bat1 я обозначил питание 12-15 вольт. Этого хватает, чтобы запитать драйверы и контроллер. С1, С2, С3 конденсаторы по 400v, 825мф (цифры взял из своего сгоревшего частотника). Rel1 - это реле, которым управляет arduino (на схеме не нарисовал провод). IC4 - это собственно сам arduino uno, а точнее просто пины. R24 - это потенциометр, который обозначает контроллеру, какая частота должна быть. T6 - T11 - это FGH40N60SFD. IC1, IC2, IC3 - IR2101 R15,16,17,22,19,20 - резисторы на 20 Ом. D1, D2, D3 - диоды, но какие у них должны быть параметры не знаю, но думаю на sf 1А. С4, С5, С6 - конденсаторы, почти понял, как они работают и что зависят от частоты шим (на arduino частота 488,28 Гц). Гуглением нашел число в 33мф/50v. ![]() И распишу, как по моему должна работать программа на контроллере. Если мы берем частоту 50гц, то в каждом полумосту каждый транзистор должен включаться/выключаться 25 раз. Причем второй полумост должен смещаться на 120 градусов, а третий на 240, получается такая картинка (примерно): ![]() И получается такой код: Код: int interval = 1000/50; // Секунда/нужная нам частота int last_millis = 0; // последняя миллисекунда в такте while { // получаем текущую миллисекунду int millis = getMillis(); // если текущая милисекунда больше, чем последняя полученная, то обновляем последнюю полученную if(millis > last_millis) { last_millis = millis; } double k = 180 / interval; // получаем коэффициент частоты=градусов // например k = 9 (180 / (1000 / 50)); // last_millis = 10мс, что означает максимальную высоту полупериода double sin1 = sin(k * last_millis) * 255; // например sin(9 * 10) * 255 = 255, например sin(9 * 30) * 255 = -255 double sin2 = sin(k * last_millis - 120) * 255; // например sin(9 * 23.4 - 120) * 255 ~ 255; double sin3 = sin(k * last_millis - 240) * 255; // например sin(9 * 36.6 - 240) * 255 ~ 255; // 1 полумост if(sin1 > 0) { write(T7, sin1); write(T6, 0); } else { write(T6, sin1); write(T7, 0); } // 2 полумост if(sin2 > 0) { write(T8, sin2); write(T9, 0); } else { write(T9, sin2); write(T8, 0); } // 3 полумост if(sin3 > 0) { write(T10, sin3); write(T11, 0); } else { write(T11, sin3); write(T10, 0); } } write(int pin, double val) { writeToPin(); } и визуально посмотреть графики: https://fiddle.jshell.net/6aoubu6e/show/ Правильна ли схема и алгоритм переключения транзисторов? |
Автор: | timdorohin [ Вс сен 17, 2017 07:53:08 ] |
Заголовок сообщения: | Re: однофазный частотный преобразователь |
Библиотечная функция sin принимает значения в радианах! Что в коде, что в jsfiddle у вас ошибка. Вот поправил немножко https://fiddle.jshell.net/4fsqrzcb/2/ |
Автор: | Телекот [ Вс сен 17, 2017 08:34:16 ] |
Заголовок сообщения: | Re: однофазный частотный преобразователь |
lampa писал(а): китайцы понапихали туда непонятных драйверов и починить нет возможности. Починить можно всё, достаточно обратится к специалисту.lampa писал(а): Я покумекал и решил, что надо действовать. С такими знаниями в электронике вам не надо действовать.lampa писал(а): у него как раз 6 шим пинов, да и писать я умею под него. хотите поупражняться в программировании или не знаете куда засунуть вашу хуйдину, для этого есть специальная тема. Если хотите собрать преобразователь то почитайте тему viewtopic.php?f=11&t=28822&start=3740 Там всё уже давно разжовано от самых простых. Зачем дублировать темы. |
Автор: | lampa [ Вс сен 17, 2017 11:09:03 ] |
Заголовок сообщения: | Re: однофазный частотный преобразователь |
Библиотечная функция sin принимает значения в радианах! Что в коде, что в jsfiddle у вас ошибка. Вот поправил немножко https://fiddle.jshell.net/4fsqrzcb/2/ У меня коэффециент - это количество градусов за 1 миллисекунду. Я этот коэффециент перемножаю на количество миллисекунд, получаю количество градусов и перевожу их в радианы с помощью функции toRadians(), в чем тут ошибка? |
Автор: | timdorohin [ Вс сен 17, 2017 13:05:19 ] |
Заголовок сообщения: | Re: однофазный частотный преобразователь |
Дык toRadians - это в моей версии функция) У вас был toDegrees |
Автор: | Fuser [ Вс сен 17, 2017 15:00:41 ] |
Заголовок сообщения: | Re: однофазный частотный преобразователь |
viewtopic.php?p=2723552#p2723552 |
Автор: | lampa [ Вс дек 17, 2017 23:10:57 ] | ||
Заголовок сообщения: | Re: однофазный частотный преобразователь | ||
Возвращаясь к теме частотника. Программная часть потерпела изменения. Значения синуса вынесены в отдельную таблицу: СпойлерКод: // pins #define T1 2 #define T2 3 #define T3 4 #define T4 5 #define T5 6 #define T6 7 // sins variables unsigned char SIN_1 = 0x00; unsigned char SIN_2 = 0x00; unsigned char SIN_3 = 0x00; unsigned char sinewave[256] = { 0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x06,0x07,0x09, 0x0a,0x0b,0x0c,0x0e,0x0f,0x11,0x12,0x14,0x16,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23, 0x25,0x28,0x2a,0x2c,0x2f,0x31,0x34,0x36,0x39,0x3c,0x3e,0x41,0x44,0x46,0x49,0x4c, 0x4f,0x52,0x55,0x58,0x5b,0x5e,0x61,0x64,0x67,0x6a,0x6d,0x70,0x73,0x77,0x7a,0x7d, 0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae, 0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc4,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8, 0xdb,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5, 0xf6,0xf7,0xf9,0xfa,0xfa,0xfb,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfb,0xfa,0xfa,0xf9,0xf7, 0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xdf,0xdd, 0xdb,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc4,0xc2,0xbf,0xbc,0xba,0xb7,0xb4, 0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83, 0x80,0x7d,0x7a,0x77,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52, 0x4f,0x4c,0x49,0x46,0x44,0x41,0x3e,0x3c,0x39,0x36,0x34,0x31,0x2f,0x2c,0x2a,0x28, 0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x16,0x14,0x12,0x11,0x0f,0x0e,0x0c,0x0b, 0x0a,0x09,0x07,0x06,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x01,0x01,0x00,0x00,0x00 }; unsigned counter1 = 0; unsigned counter2 = 85; unsigned counter3 = 170; boolean isPlus1 = true; boolean isPlus2 = true; boolean isPlus3 = true; void setup(){ //configured a valid pin for PWM output pinMode(T1, OUTPUT); pinMode(T2, OUTPUT); pinMode(T3, OUTPUT); pinMode(T4, OUTPUT); pinMode(T5, OUTPUT); pinMode(T6, OUTPUT); } void loop() { if(counter1 > 255) { counter1 = 0; isPlus1 = !isPlus1; } if(counter2 > 255) { counter2 = 0; isPlus2 = !isPlus2; } if(counter3 > 255) { counter3 = 0; isPlus3 = !isPlus3; } SIN_1 = sinewave[counter1]; SIN_2 = sinewave[counter2]; SIN_3 = sinewave[counter3]; if(isPlus1) { analogWrite(T1, SIN_1); } else { analogWrite(T2, SIN_1); } if(isPlus2) { analogWrite(T3, SIN_2); } else { analogWrite(T4, SIN_2); } if(isPlus3) { analogWrite(T5, SIN_3); } else { analogWrite(T6, SIN_3); } delay(1); counter1++; counter2++; counter3++; } Для визуализации работы каждого выхода был создан тестовый стенд: ![]() Схема: ![]() Стенд показал, что программная часть работает как надо. Дальше я сделал тестовый стенд одной фазы (1) на irf840 и A3120. ![]() Схема: ![]() Оно работало до поры до времени, попутно нагревались драйвера. Я добавлял разные конденсаторы между ножками 8 и 5 А3120, но это не влияло на нагрев. Также в осциллографе увидел ямки: ![]() Причем ямки были только на стоке. Добавление конденсатора не влияло на неё. Помогало сгладить ямку только дотронувшись до ножек A3120. Почему так грелось? может нужен конденсатор полярный?
|
Автор: | Serj66610 [ Пн дек 18, 2017 18:53:37 ] |
Заголовок сообщения: | Re: однофазный частотный преобразователь |
обвязывайте драйвера керамикой по шинам питания.....и это....между затвором и истоком резюки повесьте на 10кОм....в коем-то веке.....в "дед тайме"(если он у вас конечно есть?) затвор висит сам по себе. |
Автор: | Fuser [ Пн дек 18, 2017 20:43:34 ] |
Заголовок сообщения: | Re: однофазный частотный преобразователь |
не может он от HCPL3120 висеть в воздухе. если на входе оптики 0, то затвор притягивается к истоку. а вот затворный резистор(драйвер-затвор) 10-20ом очень даже не помешал бы, этот драйвер дает немалый ток, и не исключено что нагрев идет от звона. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |