инвертор с чистым синусом и защитами от кз и перегруза на UNO

ze86
Offline
Зарегистрирован: 27.07.2015

Всем привет я новенький и только учусь по возможности сильно не пинайте.

вобщем идея такая нужен мощный инвертор около 5ква с читым синусом есть набросок скеча я его взял с соседней темы немного подправил чтоб сдвиг на 180' и вот что получилось 

int ku=0 ;
float F1=0 ;
float F2=0 ;
float ifl=0;
int FI1[260] ;
int FI2[260] ;
int i=0 ;
int iT= 256 ;
int sence =0; 
//********************************************************************
void setup()    
{
  pinMode (sence, INPUT); 
  pinMode(8, OUTPUT);
   digitalWrite(8, LOW);
  Serial.begin(9600) ;
  while (i<iT) {
    ifl=float(i)/iT ;
    F1=sin(6.28*ifl) ;
    FI1[i]=int(256*(F1+1)/2) ;
    F2=sin(6.28*ifl+(6.26/2)) ;
    FI2[i]=int(256*(F2+1)/2) ;
   
   Serial.print("FI1=") ;Serial.print(FI1[i]) ;
     Serial.print("FI2=") ;Serial.print(FI2[i]) ;
    i=i+1 ;
  }
    
    TCCR2B = TCCR2B & 0b11111000 | 1;//частота ШИМ 31000Гц
    pinMode(11, OUTPUT); //выход ШИМ для тестирования частотомера
   analogWrite(11, 20);  //Запустить ШИМ
  
}  
//********************************************************************
void loop()  {  
if (ku>255) ku=0 ;
  
   analogWrite(11, FI1[ku]);  //Запустить ШИМ
       analogWrite(3, FI2[ku]);  //Запустить ШИМ
 ku=ku+1 ;
 delayMicroseconds(10000/800); //без задержки 10 мс
}
вопрос такой как сделать обратную связь для стабилизации и при просадке до 180в инвертор отключался, 
вопрос только по програмному решению железную проблему я решу, 
и наверно надо избавится от delayMicroseconds(10000/800); так как она будет расходывать время, а оно ценно,
в этот момент можно измерять потребляемую мощность или напряжение выходное.
заранее всем спасибо. если есть что почитать пните в нужном направлении. 
ze86
Offline
Зарегистрирован: 27.07.2015

 а такое будет работать

int ku=0 ;
float F1=0 ;
float F2=0 ;
float ifl=0;
int FI1[260] ;
int FI2[260] ;
int i=0 ;
int iT= 256 ;
int sence =0; 
unsigned long currentTime;
unsigned long loopTime;
//********************************************************************
void setup()    
{
  pinMode (sence, INPUT); 
  pinMode(8, OUTPUT);
   digitalWrite(8, LOW);
  Serial.begin(9600) ;
  while (i<iT) {
    ifl=float(i)/iT ;
    F1=sin(6.28*ifl) ;
    FI1[i]=int(256*(F1+1)/2) ;
    F2=sin(6.28*ifl+(6.26/2)) ;
    FI2[i]=int(256*(F2+1)/2) ;
   
   Serial.print("FI1=") ;Serial.print(FI1[i]) ;
     Serial.print("FI2=") ;Serial.print(FI2[i]) ;
    i=i+1 ;
     currentTime = micros();       // считываем время, прошедшее с момента запуска программы
  loopTime = currentTime; 
  }
    
    TCCR2B = TCCR2B & 0b11111000 | 1;//частота ШИМ 31000Гц
    pinMode(11, OUTPUT); //выход ШИМ для тестирования частотомера
   analogWrite(11, 20);  //Запустить ШИМ
  
}  
//********************************************************************
void loop()  {  
  currentTime = micros();      
  if(currentTime >= (loopTime + 10000/800)){
if (ku>255) ku=0 ;
  
   analogWrite(11, FI1[ku]);  //Запустить ШИМ
       analogWrite(3, FI2[ku]);  //Запустить ШИМ
 ku=ku+1 ;
// delayMicroseconds(10000/800); //без задержки 10 мс
loopTime = currentTime; 
}
}
Alexander
Offline
Зарегистрирован: 25.04.2010
ze86
Offline
Зарегистрирован: 27.07.2015

спасибо за исправление 


int ku=0 ;
float F1=0 ;
float F2=0 ;
float ifl=0;
int FI1[260] ;
int FI2[260] ;
int i=0 ;
int iT= 256 ;
int sence =0; 
unsigned long currentTime;
unsigned long loopTime;
//********************************************************************
void setup()    
{
  pinMode (sence, INPUT); 
  pinMode(8, OUTPUT);
   digitalWrite(8, LOW);
  Serial.begin(9600) ;
  while (i<iT) {
    ifl=float(i)/iT ;
    F1=sin(6.28*ifl) ;
    FI1[i]=int(256*(F1+1)/2) ;
    F2=sin(6.28*ifl+(6.26/2)) ;
    FI2[i]=int(256*(F2+1)/2) ;
   
   Serial.print("FI1=") ;Serial.print(FI1[i]) ;
     Serial.print("FI2=") ;Serial.print(FI2[i]) ;
    i=i+1 ;
     currentTime = micros();       // считываем время, прошедшее с момента запуска программы
  loopTime = currentTime; 
  }
    
    TCCR2B = TCCR2B & 0b11111000 | 1;//частота ШИМ 31000Гц
    pinMode(11, OUTPUT); //выход ШИМ для тестирования частотомера
   analogWrite(11, 20);  //Запустить ШИМ
  
}  
//********************************************************************
void loop()  {  
  currentTime = micros();      
  if(currentTime >= (loopTime + 70)){
if (ku>255) ku=0 ;
  
   analogWrite(11, FI1[ku]);  //Запустить ШИМ
       analogWrite(3, FI2[ku]);  //Запустить ШИМ
 ku=ku+1 ;

loopTime = currentTime; 
}
}
art100
Offline
Зарегистрирован: 09.03.2014

Интересненько. надо будет поигратся в sin . Если сейчас с утра времени хватит.

art100
Offline
Зарегистрирован: 09.03.2014

Причесал код. Пока замысла не понял.

// http://arduino.ru/forum/proekty/invertor-s-chistym-sinusom-i-zashchitami-ot-kz-i-peregruza-na-uno#comment-129615
// ze86 20150728 sin
//pins------------
#define PININ    2
#define PINPWM1  3
#define PINPWM2  4
//consts----------
int PININtmp=0; //???
int   FI1[260];
int   FI2[260];
int   ku   =0;
float F1   =0;
float F2   =0;
float ifl  =0;
int   i    =0;
int   iT =256;
unsigned long currentTime;
unsigned long loopTime;
//------------------------------------------
void setup(){
  pinMode(PININ,  INPUT); 
  pinMode(PINPWM2,OUTPUT);digitalWrite(PINPWM2, LOW);
  Serial.begin(9600);
  
  while (i<iT){    //???
    ifl=float(i)/iT;
    F1    =sin(6.28*ifl);
    FI1[i]=int( 256*(F1+1)/2);
    F2    =sin(6.28*ifl+(6.26/2));
    FI2[i]=int( 256*(F2+1)/2);
    Serial.print("FI1="); Serial.println(FI1[i]);
    Serial.print("FI2="); Serial.println(FI2[i]);
    i=i+1 ;
    currentTime = micros(); // считываем время, прошедшее с момента запуска программы
    loopTime = currentTime; 
  }
    
  TCCR2B = TCCR2B & 0b11111000 | 1;//частота ШИМ 31000Гц
  pinMode(PINPWM1, OUTPUT); //выход ШИМ для тестирования частотомера
  analogWrite(PINPWM1, 20);  //Запустить ШИМ
}  
//=========================================================
void loop()  {  
  currentTime = micros();      
  if(currentTime >= (loopTime + 70)){
    if(ku>255) ku=0;
    analogWrite(PINPWM1, FI1[ku]);  //Запустить ШИМ
    analogWrite(PINPWM2, FI2[ku]);  //Запустить ШИМ
    ku=ku+1 ;
    loopTime = currentTime; 
  }
}
//=========================================================

 



FI2=3FI1=128
FI2=129
FI1=131
FI2=126
FI1=134
FI2=123
FI1=137
FI2=120
FI1=140
FI2=116
FI1=143
FI2=113
FI1=146
FI2=110
FI1=149
FI2=107
FI1=152
FI2=104
FI1=156
FI2=101
FI1=159
FI2=98
FI1=162
FI2=95
FI1=165
FI2=92
FI1=168
FI2=89
FI1=171
FI2=86
FI1=174
FI2=83

 

Осцилограф какой-то замысел с синусойдой нащупал.

Все. Я поехал на работу.

art100
Offline
Зарегистрирован: 09.03.2014

Пока работа не началась. Вспомнил я тут что-то про то как COVOX-ом аналог вытягивал из цифры резисторами http://arduino.ru/forum/proekty/vspomnim-molodost-covox-r-2r Упс это я столько ног занял? 8 битовости хотелось :)

Такс. Попадаются пока все одни принципы. В из PROGMEM читаем образцовую табличку а вотвыводим то 8 ногами чудо резисторы то одной ногой на чудо ФНЧ фильтр

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

art100 пишет:

Осцилограф какой-то замысел с синусойдой нащупал.

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

art100
Offline
Зарегистрирован: 09.03.2014

Puhlyaviy пишет:
...

А вдруг загнется синус? Может там в коде косячек где-то затесался?

 

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

ze86, Вам придёться городить на выходе интегрирующую цепь, ОУ. Не удобнее ли поставить  10-битный ЦАП за $1  ? Хотя по большому счёту тут и ардуино не нужно..  Взять 555 таймер, пара диодов, кондёров, и будет синус 50Гц.

ze86
Offline
Зарегистрирован: 27.07.2015

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

ze86
Offline
Зарегистрирован: 27.07.2015

2-r2 не пойдет ключи силовые должны работать в ключевом режиме поэтому только шим

kayot
kayot аватар
Offline
Зарегистрирован: 11.04.2014

нафиг изобрететь велосипет

возмите UPS самый дешевый с восстановлением синуса

например POWERCOM WOWUPS 165WATT

и переделайте его более мощный добавив транзисторов и намотав новый транс

ze86
Offline
Зарегистрирован: 27.07.2015

это после фильтра

это до фильтра

 

филтр RLC  100ом 100мн 1мкф 

извените за корявки не подрукой нужного совта но обещаю исправиться

ze86
Offline
Зарегистрирован: 27.07.2015

сигнал на 11 и 3 ноге сдвинуты на 180'  сдвиг нужен для откытия ключей 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

прикольно получилось

интересно какие номиналы деталей фильтра получатся, не мелкие

ze86
Offline
Зарегистрирован: 27.07.2015

можно купить ups, можно купить у китайцев плату, можно купить сразу готовый инвертор, 

неужели увас нет духа разработчика, может кто нибудь заинтерисуится, вконце концов это же интересно.

 

ze86
Offline
Зарегистрирован: 27.07.2015

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

жду идей и предложений

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

вот только вчера собрал повышалку на 310В. там используется UC3845. стоит подумать. теоретически о возможности применения. или TL494.

а вообще я не понял. у тебя повышалка или что?

ze86
Offline
Зарегистрирован: 27.07.2015

да повышалка  DC-AC 220 5000W и самый главный критерий напряжение питания 24в(аккумуляторная яма 3000Ач)

нужен имено синус чтоб работали движки с короткозамкнутым ротором

у меня на uc3842 собран БП для раскачки силовых ключей мост 6шт 190n80 в плечо 

на драйверах типа ir2110  собирать не хочу не очень надежно уже сжог несколько штук 

dimax
dimax аватар
Онлайн
Зарегистрирован: 25.12.2013

ze86, об чём вы ещё голову ломаете, коли выложили сюда готовый рабочий код?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

инвертор какого типа? полумостовой или мостовой?

ze86
Offline
Зарегистрирован: 27.07.2015

стабилизация выходного напряжения ? через обратную связь. подключив генерато к инвертору я получил на выходе ~250в но пи нагрузке в 1500вт происходит просадка до 180 а такого быть не должно отсюда и проблема 

ze86
Offline
Зарегистрирован: 27.07.2015

мост

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

стабилизация отдельный вопрос. какая схема силовой части? полевики + трансформатор

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ze86 пишет:

мост

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

даже если не будет выгорания будет нагрев изза сквозных токов во время переходных процессов

ze86
Offline
Зарегистрирован: 27.07.2015

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

два вопроса справится ли контролер с просчетом функции 

и как завизать аналоговый вход к функции синуса 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

ze86
Offline
Зарегистрирован: 27.07.2015

как сделать задержку в данном коде?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

у тебя должно быть 4 выхода с шимом, а не 2

ze86
Offline
Зарегистрирован: 27.07.2015

да озадачили вы меня но покрайней мере у меня пока данных цпецэфектов нет ключи не греются соответственно нет сквозняка 

ze86
Offline
Зарегистрирован: 27.07.2015

над еще двумя я пока работаю и хочу не шим модуляцию использовать а простой меандр в 50гц

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

если нет то забей наверно. но по правильному нужно так делать. еще есть вариант с 2 шимами и 2 цепочки через диоды и rc цепочки чтобы делать задержку железно, а не софтварно

фото приложи если у тебя уже 1500вт прокачивает

ze86
Offline
Зарегистрирован: 27.07.2015

ze86
Offline
Зарегистрирован: 27.07.2015

для раскачки я использую tlp250 

на 5000вт транформатор мотаю а полюзуюсь двумя одинаковыми 1300вт тр-ми

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

за  tlp250 спасибо. удобная микруха

 

art100
Offline
Зарегистрирован: 09.03.2014

Что я делаю не так?

Взял ваш код

int ku=0 ;
float F1=0 ;
float F2=0 ;
float ifl=0;
int FI1[260] ;
int FI2[260] ;
int i=0 ;
int iT= 256 ;
int sence =0; 
unsigned long currentTime;
unsigned long loopTime;
//********************************************************************
void setup()    
{
  pinMode (sence, INPUT); // 0 нога
  pinMode(8, OUTPUT);     // 8 нога
   digitalWrite(8, LOW);
  Serial.begin(9600) ;
  while (i<iT) {
    ifl=float(i)/iT ;
    F1=sin(6.28*ifl) ;
    FI1[i]=int(256*(F1+1)/2) ;
    F2=sin(6.28*ifl+(6.26/2)) ;
    FI2[i]=int(256*(F2+1)/2) ;
   
   Serial.print("FI1=") ;Serial.print(FI1[i]) ;
     Serial.print("FI2=") ;Serial.print(FI2[i]) ;
    i=i+1 ;
     currentTime = micros();       // считываем время, прошедшее с момента запуска программы
  loopTime = currentTime; 
  }
    
    TCCR2B = TCCR2B & 0b11111000 | 1;//частота ШИМ 31000Гц
    pinMode(11, OUTPUT); //выход ШИМ для тестирования частотомера // 11 нога
   analogWrite(11, 20);  //Запустить ШИМ
  
}  
//********************************************************************
void loop()  {  
  currentTime = micros();      
  if(currentTime >= (loopTime + 70)){
if (ku>255) ku=0 ;
  
   analogWrite(11, FI1[ku]);  //Запустить ШИМ    // 11 нога
       analogWrite(3, FI2[ku]);  //Запустить ШИМ // 3 нога
 ku=ku+1 ;

loopTime = currentTime; 
}
}

 

взял классику

получил согласно коду

0 нога

3 нога

8 нога

11 нога

Дело конечно хозяйское. Но я без 4-ех ШИМ-ов на четыре канала паляны мосфетов LC цепочек киловатовые моторчики не крутил бы. Чему нас учит опыт предков. Если прямогульники перегревают то промежуточным трансом синус получать. Насколько я понимаю вы трас сейчас используете для отладки кода. Потом динамические нагрузки на реальном моторчике появятся. Ну да ладно. Дело хозяйское. Флаг идущему. Все я побежал на работу. А перегрузку как всегда резисторчик какой-нибудь замеряем и принимаем решение при каком=то уровне. Все равно. Флаг идущему..

Я тут подумал спросоня. А в принципе если чисто мотор нагрузкой мосфетам зачем сглаживать синусом. 500 ватовый моторчик с биполярниками я могу как-нибудь с утреца обмерять. А  вот киловатового у меня под ноагми не валяется. Так что я пас..

ze86
Offline
Зарегистрирован: 27.07.2015

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

такие заморочки нужны для дома который находится в месности куда нельзя подвести комуникации уних есть акумуляторы(3000Ач) и солнечные батареи сумарной мощностью в 2500вт в доме кондиционер, кател, глубиный насос ну и конечно сам дом.

уних был 3000вт инвертор но он не выдержал и пыхнул, и выгорела плата с мк так что он востановлению не подлежит,  а более 3000вт инверторы целесообразно делать на 48в но у них система на 24в и переделовать ее вылетит в копейку поэтому делаем инвертор.  

art100
Offline
Зарегистрирован: 09.03.2014

Понял. С утреца если будет время LC цепочку соберу.

ze86 пишет:
...акумуляторы(3000Ач)---солнечные батареи ---кондиционер, кател,насос --
наше недалекое будущее :)

Гыг. Я кстати ковыряю 48 вольтовый занятный моторчик вжик. Тут отчет о мастерстве-ломастерстве http://art1.by/ddbldv/

12..24...48..96 вольтика говорите не кашерненько? Гыг. А у кого-то губки не бобо. Наконструировать можно такого как вижу наконструировали. Выгорело и звездец опять коструировать. А я наивно думал что из готовых блоков результат быстрее и ремонтоприогднее. У меня заморочка нужно 0.5 киловата но обороты если установил 8 000 так блин и через 24 часа постоянного грызения материала должно 8 000. И глубоко все начхать. Как. Готовые блоки в цепочку собирают. Мотор Китайцы Частотник Японцы Питатель Китайцы Покупатель Бульбаш. Где там в промежутке 48 вольт где там  220 вольт глубоко всем начихать. Главное ремонтопригодность в случае отказа. Ну да ладно. Флаг удущему. Не обращайте на меня внимания. Начал делать делай. И я бы к dimax-у прислушался. Раз сказал микрушку-фигнюшку надо-бы всунуть куда-то там. Значит 90% другого решения вменяемого нет.

 

 

 

 

kekia22
Offline
Зарегистрирован: 06.01.2016
здравствуите,я Пётр.
вы ришили вопрос с ОС?
 
а вот нщё интиресная микруха,оптодрайвер на 6А
kekia22
Offline
Зарегистрирован: 06.01.2016

этот форум ищё жив ?

Alexander
Offline
Зарегистрирован: 25.04.2010

да

kekia22
Offline
Зарегистрирован: 06.01.2016

Ооо! Добрый вечер,я тоже инвертер делаю,но на китайском контроллере eg8010 и честно говоря она меня не очень устраивает.. не она работает хорошо,тока там исходников нету,ничё не поменяеш.вот и вишил на ардуинке

kekia22
Offline
Зарегистрирован: 06.01.2016

Вы не знаите автор етого скеча как управляет трансом,всмысле пуш-пулл или полный мост?

kekia22
Offline
Зарегистрирован: 06.01.2016

И ищё,хотел спросить дроссель 100мн,это имеится ввиду микро генри или мили генри ?
Спосибо.
Просто как я не пробывал синус не получяется....

ze86
Offline
Зарегистрирован: 27.07.2015

Проект я не закончил собрал пока на ег8010
сейяас устраняю пробелы в програмировании и изучаю С для авров.
Я остановился на ОС в частности на построении таблици синуса если
считать таблицу вовремя работы, контроллер не успевает и получается провал
если делать несколько таблиц то какое количество таблиц необходимо для нормальной работы
или есть идеи получше если поделитесь буду очень рад
тема не умерла просто надо время, а его очень мало да и запчасти из китая едут по два
месяца поэтому долго

kekia22
Offline
Зарегистрирован: 06.01.2016

Я ужэ всё перепробывал,больше 16-ти таблиц в память не
Влезают,а это мало.и ищё при перехоле с одной на другю,
Ну скажем апасно это происхолит....
Пробывал и "if"-оми и "case" очень всё жыдко.
Идинственный приемлемый и надёжный вариант эт формула доя синуса,и перещитывать в реал тайм,но с этим дажэ мага не справляется...среда ардуино очень сильно тормозит МК.последняа надежда на арлуино дуе,там проц 32б 84Мгц!! Ужэ заказал,Жду чтоб доставели.
А вариант с таблицой,без ос по амплитуде можно использовать в случае без НЧ транса,тоесть гле повышается на 350в дц-дц конвертером потом режится синус,тогда ОС можно закрыть на самом дц-дц! Или кустарный вариант с НЧ трансом..- добавить силовую часть по линии питания,на входе, ключ которым управлять сигналом ОС т.е. урезать питание...

kekia22
Offline
Зарегистрирован: 06.01.2016

Ег-шки у меня тожэ есть,но для меня не вариант,принцыпиально! И нежные они..
Но надо дать должное-работают хорошо.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

это как не влезает синус? ты сколько точек делаешь?

kekia22
Offline
Зарегистрирован: 06.01.2016

Всмысле не влезит?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ты вроде написал