прошу помочь ускорить работу скетча программный шим 6 каналов

-NMi-
Offline
Зарегистрирован: 20.08.2018

daniilguz пишет:

Дешевое устройство плавного пуска.

Можно подобрать мегу с таймером с тремя счётчиками в одном и возможно даже с дедтаймом.

Меги не дорогие, думаю.

-NMi-
Offline
Зарегистрирован: 20.08.2018

nik182 пишет:
1.8 доллара блюпилл. Из коробки с одним первым таймером шестифазный генератор с дедтаймами и простой удобной регулировкой.

Да, забыл про STM32.   Вот ЭТО по моему мнению будет самим простым и удобным устройством. На STM таймеры гоОораздо "интереснее" таймеров на авр.

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

Если ты новичок, какого ж хрена сразу за частотник схватился? 

дык все на поверхности - ТС считал, что все вокруг дураки, покупают частотники по 50-100 баксов, вот он и решил собрать "тоже самое" на ардуине за 10 и завоевать рынок :)))

daniilguz
Offline
Зарегистрирован: 13.01.2020

только для себя, делаю, не для продажи :)

daniilguz
Offline
Зарегистрирован: 13.01.2020

DetSimen пишет:

daniilguz пишет:

я новичок, суть я понял а как сделать не знаю.

Если ты новичок, какого ж хрена сразу за частотник схватился? 

а это не первый проект, просто я понимаю, что мне еще учиться и учиться.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

daniilguz пишет:

я новичок, суть я понял а как сделать не знаю.

Если ты новичок, какого ж хрена сразу за частотник схватился? 

актуально жеж

-NMi-
Offline
Зарегистрирован: 20.08.2018

daniilguz пишет:

только для себя, делаю, не для продажи :)

И шо вы глумитесь, опричники?  ТС жеж написал - токмо для себя и для своего свечного заводика!!!

А вдрук ТС изобретёт частотник за 15 баксов? Чо тогда вы ему ответите?

b707
Offline
Зарегистрирован: 26.05.2017

-NMi- пишет:

А вдрук ТС изобретёт частотник за 15 баксов? Чо тогда вы ему ответите?

да нет никакой проблемы собрать для себя частотник за 15 баксов. Даже дешевле можно. СТМ32 и блок ключей :) Схемы и код выложены в инете в десятках вариантов...

Только что это будет за частотник и кто им захочет пользоваться. кроме автора? :)

Готовый на 1.5 КВт, трехфазный, с настройками , в корпусе с дисплеем - на Али от 50 баксов...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Тыркнул в поиск, оказывается есть калькулятор )))
 

128,191,238,255,238,191,128,64, 17,0,17,64,128,

 

daniilguz
Offline
Зарегистрирован: 13.01.2020

Спасибо всем кто отозвался!!!

Вот конечный код на котором остановился.

Представлен вариант управления трехфазным асинхронным двигателем мощностью от 150 до 750 Ватт с помощью частотного регулятора на базе игбт модуля и ардуино нано v3.

переменным резистором на 10 кОм подавать сигнал на аналоговый вход A0 сигнал от 0 до 5 вольт, можно с внешнего источника.

частота меняется от 5 до 200 герц.

Код исправил внес большинство поправок. работает у меня на ардуино нано v3 (168)

В строке 60 число 13 можно изменить от этого меняется максимальная частота. при 5 выдает синус 400 герц.

скриншот с осцилографа по ссылке: https://photos.app.goo.gl/pqhVaEL3okTX9cGq6

плавный пуск собран по схеме на irams1010up60b https://power-e.ru/wp-content/uploads/29_pic6.jpg

частота ШИМ 5,7 кГц.

нога EN подтянута к +5в резистором 1 кОм к +

Ошибки от модуля не подключены.

Температурная защита не подключена.

В ближайшее время нарисую плату вложу сюда.

видео работы https://www.youtube.com/watch?v=He5ISCiuVcw.

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

#include <avr/io.h>
#include <avr/interrupt.h>

byte prog_pwm=0;
byte num=1;
byte impuls=0;
byte k=0;
int border;


byte sin_1_h[36]={0  , 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0};
byte sin_2_h[36]={ 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60,};
byte sin_3_h[36]={0  ,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0};
byte sin_1_l[36]={0  ,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12};
byte sin_2_l[36]={0  ,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0};
byte sin_3_l[36]={ 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49};

int sensorValue ;
int flag_led_1=0;
int readsens=0;
int pinIn    = A0; // Пин аналогового входа

ISR (TIMER1_COMPA_vect  )
{
  prog_pwm=prog_pwm+2;
  if (prog_pwm>=64){prog_pwm=0;}
}

// the setup routine runs once when you press reset:
void setup() {
  pinMode(pinIn, INPUT);
    ADCSRA |=   (1 << ADPS1);                     //Биту ADPS2 присваиваем единицу - коэффициент деления 16
    ADCSRA &= ~ ((1 << ADPS2) | (1 << ADPS0));  //Битам ADPS1 и ADPS0 присваиваем нули
   pinMode(2, OUTPUT);  
   pinMode(3, OUTPUT); 
   pinMode(4, OUTPUT); 
   pinMode(5, OUTPUT);  
   pinMode(6, OUTPUT); 
   pinMode(7, OUTPUT); 
 
 cli(); // отключить глобальные прерывания
    TCCR1A = 0x00;
    TCCR1B = (0 << CS12)| (1 << CS11)|(0 << CS10)|(1 << WGM12); //предделитель clk/0, режим таймера СТС
    TCNT1 = 0x00;
    OCR1A =10; // максимальный предел счета
    TIMSK1 |= (1 << OCIE1A); // разрешение прерывания по совпадению
   sei();

}

void loop() {
border=prog_pwm+k;
 if (sin_1_h[num]> border){PORTD |= 1<<2;}else{PORTD &= ~(1<<2);}
 if (sin_2_h[num]> border){PORTD |= 1<<3;}else{PORTD &= ~(1<<3);}
 if (sin_3_h[num]> border){PORTD |= 1<<4;}else{PORTD &= ~(1<<4);}
 if (sin_1_l[num]> border){PORTD |= 1<<5;}else{PORTD &= ~(1<<5);}
 if (sin_2_l[num]> border){PORTD |= 1<<6;}else{PORTD &= ~(1<<6);}
 if (sin_3_l[num]> border){PORTD |= 1<<7;}else{PORTD &= ~(1<<7);}
 impuls++;
  if (impuls>=(13+sensorValue>>3)){ impuls=0;num++;
  if (num>=36){num=0;sensorValue=analogRead(pinIn);
  if (sensorValue>=500){k=sensorValue/16;}else{k=0;}
  }
  }
}

 

b707
Offline
Зарегистрирован: 26.05.2017

daniilguz пишет:

плавный пуск собран по схеме на irams1010up60b https://power-e.ru/wp-content/uploads/29_pic6.jpg

а ссылку на обсуждение схемы на power-e.ru можете дать, не одна же только картинка там выложена?

"Конденсаторы фильтра высокого напряжения" на схеме - ставили?

daniilguz
Offline
Зарегистрирован: 13.01.2020

b707 пишет:

daniilguz пишет:

плавный пуск собран по схеме на irams1010up60b https://power-e.ru/wp-content/uploads/29_pic6.jpg

а ссылку на обсуждение схемы на power-e.ru можете дать, не одна же только картинка там выложена?

"Конденсаторы фильтра высокого напряжения" на схеме - ставили?

конечно

конденсаторы 2*200 микрофарад высоковольтные а надо 800 мкФ.

бутстеп надо побольше поставить тк у меня 2,2 мкФ а по мануалу 4.

Фильтр из керамики 0,1 и электролит 10 мкФ стоят по 15 вольтам.

Заходит блок 12 вольт, от него повышается dc-dc до 15 вольт и отдельной dc dc понижается до 5 вольт для наны на vin.

 

daniilguz
Offline
Зарегистрирован: 13.01.2020

Сырой, недоделанный но рабочий код для частотного регулятора на  ардуино мега 2560.

#include <avr/io.h>
#include <avr/interrupt.h>

#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
void fCOM3B1 (uint8_t val) {DDRE |= B00010000; if (val == 0x00) {cbi(TCCR3A, COM3B1); PORTE &= ~B00010000;} else
if (val == 0xFF) {cbi(TCCR3A, COM3B1); PORTE |= B00010000;} else {sbi(TCCR3A, COM3B1); OCR3B = val;}}//D2
void fCOM3C1 (uint8_t val) {DDRE |= B00100000; if (val == 0x00) {cbi(TCCR3A, COM3C1); PORTE &= ~B00100000;} else 
if (val == 0xFF) {cbi(TCCR3A, COM3C1); PORTE |= B00100000;} else {sbi(TCCR3A, COM3C1); OCR3C = val;}}//D3
void fCOM3A1 (uint8_t val) {DDRE |= B00001000; if (val == 0x00) {cbi(TCCR3A, COM3A1); PORTE &= ~B00001000;} else 
if (val == 0xFF) {cbi(TCCR3A, COM3A1); PORTE |= B00001000;} else {sbi(TCCR3A, COM3A1); OCR3A = val;}}//D5
void fCOM4A1 (uint8_t val) {DDRH |= B00001000; if (val == 0x00) {cbi(TCCR4A, COM4A1); PORTH &= ~B00001000;} else 
if (val == 0xFF) {cbi(TCCR4A, COM4A1); PORTH |= B00001000;} else {sbi(TCCR4A, COM4A1); OCR4A = val;}}//D6
void fCOM4B1 (uint8_t val) {DDRH |= B00010000; if (val == 0x00) {cbi(TCCR4A, COM4B1); PORTH &= ~B00010000;} else 
if (val == 0xFF) {cbi(TCCR4A, COM4B1); PORTH |= B00010000;} else {sbi(TCCR4A, COM4B1); OCR4B = val;}}//D7
void fCOM4C1 (uint8_t val) {DDRH |= B00100000; if (val == 0x00) {cbi(TCCR4A, COM4C1); PORTH &= ~B00100000;} else
if (val == 0xFF) {cbi(TCCR4A, COM4C1); PORTH |= B00100000;} else {sbi(TCCR4A, COM4C1); OCR4C = val;}}//D8
void (*analogFastWrite[])(uint8_t) = {&fCOM3B1,&fCOM3C1,&fCOM3A1,&fCOM4A1,&fCOM4B1,&fCOM4C1};


int num=1;
byte sin_1_h[36]={0,45,88,128,164,196,221,240,252,255,252,240,221,196,164,128,88,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
byte sin_2_h[36]={221,196,164,128,88,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,88,128,164,196,221,240,252,255,252,240};
byte sin_3_h[36]={0,0,0,0,0,0,0,0,0,0,0,0,0,45,88,128,164,196,221,240,252,255,252,240,221,196,164,128,88,45,0,0,0,0,0,0};
byte sin_1_l[36]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,88,128,164,196,221,240,252,255,252,240,221,196,164,128,88,45};
byte sin_2_l[36]={0,0,0,0,0,0,0,45,88,128,164,196,221,240,252,255,252,240,221,196,164,128,88,45,0,0,0,0,0,0,0,0,0,0,0,0};
byte sin_3_l[36]={221,240,252,255,252,240,221,196,164,128,88,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,88,128,164,196};
int sensorValue ;
float sensorValue1;
int flag_led_1=0;
int led = 9;           // the PWM pin the LED is attached to
int brightness = 0;    // how bright the LED is
int brightness2 = 0; 
int readsens=0;

ISR (TIMER1_COMPA_vect )
{
  flag_led_1++;
//  num++;
//  if (num==0){num=1;}else {num=0;}  
}

// the setup routine runs once when you press reset:
void setup() {
  pinMode(6, OUTPUT);  
               cli(); // отключить глобальные прерывания
             // ШИМ 8 разрядов, 62,5 кГц
              TCCR3A = TCCR3A & 0xe0 | 1;
              TCCR3B = TCCR3B & 0xe0 | 0x0a; 
              TCCR4A = TCCR4A & 0xe0 | 1;
              TCCR4B = TCCR4B & 0xe0 | 0x0a; 
              TCCR1A  = 0  ; // установить регистры в 0
              TCCR1B  = 0  ; 
              TCCR1B |= (1 << WGM12); // включение в CTC режим
              OCR1A   =200;
              TCCR1B |= (1 << CS10);
              TIMSK1 |= (1 << OCIE1A);  // включение прерываний по совпадению
         sei();
   pinMode(led, OUTPUT);
   Serial.begin(115200);
}
void loop() {
  if (flag_led_1>=sensorValue+10)
  {
  flag_led_1=0;
  num++;
  }
  if (num>=36){num=0;
  sensorValue  = analogRead(A7)*0.2;
  sensorValue1  = (204-sensorValue)*0.007;
  if (sensorValue1>=1 ){sensorValue1=1;}
  }
analogFastWrite[0](sin_1_h[num]*sensorValue1);
analogFastWrite[1](sin_2_h[num]*sensorValue1);
analogFastWrite[2](sin_3_h[num]*sensorValue1);
analogFastWrite[3](sin_1_l[num]*sensorValue1);
analogFastWrite[4](sin_2_l[num]*sensorValue1);
analogFastWrite[5](sin_3_l[num]*sensorValue1);
 }

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

daniilguz пишет:

бутстеп надо побольше поставить тк у меня 2,2 мкФ а по мануалу 4.

бывают BOOTSRAP  конденсаторы, то есть предзагрузочные.

бывает молодёжная танцевальная музыка дабстеп.

Про бутстеп - пока ничего не слыхал.... может ирундиции не хватает? ;))

daniilguz
Offline
Зарегистрирован: 13.01.2020

wdrakula пишет:

daniilguz пишет:

бутстеп надо побольше поставить тк у меня 2,2 мкФ а по мануалу 4.

бывают BOOTSRAP  конденсаторы, то есть предзагрузочные.

бывает молодёжная танцевальная музыка дабстеп.

Про бутстеп - пока ничего не слыхал.... может ирундиции не хватает? ;))

 

точно натупил :) главное что я  емкость подобрал из таблици верно  :) скетч на меге на 16 мГц шим работает.

b707
Offline
Зарегистрирован: 26.05.2017

daniilguz пишет:

 отдельной dc dc понижается до 5 вольт для наны на vin.

ошибка? Или правда 5в на VIN подаете?

Сссылку на тему на том форуме таки не прислали

daniilguz
Offline
Зарегистрирован: 13.01.2020

я из гугла фотку взял.

да подал на vin +5 вольт что бы наверняка не спалить.

b707
Offline
Зарегистрирован: 26.05.2017

daniilguz пишет:

да подал на vin +5 вольт что бы наверняка не спалить.

на VIN надо подавать не менее 7в. Либо dc-dc понижайкой делайте более 7в и подавайте на VIN, либо если работаете с  5в - тогда и подавайте их на пин 5в.

А подавать 5в на VIN - это чревато нестабильной работой и разнообразными глюками...

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

daniilguz
Offline
Зарегистрирован: 13.01.2020

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

это-ж макет, это не готовое устройство.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

daniilguz пишет:

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

это-ж макет, это не готовое устройство.

модуль можешь мне прислать, я на форуме уже три года )))

daniilguz
Offline
Зарегистрирован: 13.01.2020

ua6em пишет:

daniilguz пишет:

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

это-ж макет, это не готовое устройство.

модуль можешь мне прислать, я на форуме уже три года )))

:) я их 2 заказал, по 4 доллара.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

daniilguz пишет:

ua6em пишет:

daniilguz пишет:

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

это-ж макет, это не готовое устройство.

модуль можешь мне прислать, я на форуме уже три года )))

:) я их 2 заказал, по 4 доллара.

ссылкой кинь, а то, что-то по 4 доллара не глянулись, по 10 вроде ничего

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

daniilguz пишет:

Вот конечный код на котором остановился.

Если сделать вот так

void loop() {
  uint8_t PORT_D = 0;
  border = prog_pwm + k;
  if (sin_1_h[num] > border) PORT_D  = 1 << 2;
  if (sin_2_h[num] > border) PORT_D |= 1 << 3;
  if (sin_3_h[num] > border) PORT_D |= 1 << 4;
  if (sin_1_l[num] > border) PORT_D |= 1 << 5;
  if (sin_2_l[num] > border) PORT_D |= 1 << 6;
  if (sin_3_l[num] > border) PORT_D |= 1 << 7;
  PORTD=PORT_D;
  impuls++;
.....

То будет примерно на 20% быстрее.

daniilguz
Offline
Зарегистрирован: 13.01.2020

ua6em]</p> <p>[quote=daniilguz пишет:

ua6em пишет:

daniilguz пишет:

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

это-ж макет, это не готовое устройство.

модуль можешь мне прислать, я на форуме уже три года )))

:) я их 2 заказал, по 4 доллара.

ссылкой кинь, а то, что-то по 4 доллара не глянулись, по 10 вроде ничего

 

https://aliexpress.ru/item/32992613924.html?spm=a2g0o.productlist.0.0.255c70a5XihcJk&algo_pvid=8233afd3-78fb-423f-accd-72130081baf3&algo_expid=8233afd3-78fb-423f-accd-72130081baf3-0&btsid=9d06a795-37f4-4588-880c-a6b8bc6fdef0&ws_ab_test=searchweb0_0,searchweb201602_8,searchweb201603_53

 

daniilguz
Offline
Зарегистрирован: 13.01.2020

asam пишет:

daniilguz пишет:

Вот конечный код на котором остановился.

То будет примерно на 20% быстрее.

Проверил, действительно быстрее. Спасибо огромное.

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

daniilguz пишет:

asam пишет:

daniilguz пишет:

Вот конечный код на котором остановился.

То будет примерно на 20% быстрее.

Проверил, действительно быстрее. Спасибо огромное.

Данька, вот, хоть и покидали в тебя местные корифеи тапками, но принять приняли, уважуха стало быть )))

ЗЫ а вот вызов никто не принял, сделать аппаратно, тем более на "голубенькой"

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

ЗЫ а вот вызов никто не принял, сделать аппаратно, тем более на "голубенькой"

IGBT модуль по наводке ТС заказал, может и соберу, если руки дойдут.

daniilguz
Offline
Зарегистрирован: 13.01.2020

ua6em пишет:

daniilguz пишет:

asam пишет:

daniilguz пишет:

Вот конечный код на котором остановился.

То будет примерно на 20% быстрее.

Проверил, действительно быстрее. Спасибо огромное.

Данька, вот, хоть и покидали в тебя местные корифеи тапками, но принять приняли, уважуха стало быть )))

ЗЫ а вот вызов никто не принял, сделать аппаратно, тем более на "голубенькой"


Вообще думаю взять два асинхронных мотора по 3 кВт. Сдать на перемотку на 24 вольта. Две Меги будут ими управлять игбт транзисторами, не модулями, с контролем по току ( векторным управлением) и поставить на электромобиль самодельный. Проблем с кузовом не будет, проблем с АКБ нет. Боюсь хватит ли момента асинхронникам. Вот собственно с этой целью и разбираюсь понемногу в управлении асинхронника.
Все говорите тапками покидали, а среди тапков очень много помощи, за что я очень благодарен.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

daniilguz пишет:
ua6em пишет:

daniilguz пишет:

asam пишет:

daniilguz пишет:

Вот конечный код на котором остановился.

То будет примерно на 20% быстрее.

Проверил, действительно быстрее. Спасибо огромное.

Данька, вот, хоть и покидали в тебя местные корифеи тапками, но принять приняли, уважуха стало быть )))

ЗЫ а вот вызов никто не принял, сделать аппаратно, тем более на "голубенькой"

Вообще думаю взять два асинхронных мотора по 3 кВт. Сдать на перемотку на 24 вольта. Две Меги будут ими управлять игбт транзисторами, не модулями, с контролем по току ( векторным управлением) и поставить на электромобиль самодельный. Проблем с кузовом не будет, проблем с АКБ нет. Боюсь хватит ли момента асинхронникам. Вот собственно с этой целью и разбираюсь понемногу в управлении асинхронника. Все говорите тапками покидали, а среди тапков очень много помощи, за что я очень благодарен.

Это Славянку Дуюнова тогда мотать

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ua6em пишет:

ЗЫ а вот вызов никто не принял, сделать аппаратно, тем более на "голубенькой"

IGBT модуль по наводке ТС заказал, может и соберу, если руки дойдут.

ты не одинок, я парочку )))

daniilguz
Offline
Зарегистрирован: 13.01.2020

[/quote]

Это Славянку Дуюнова тогда мотать

[/quote]

я думаю типа такой мотать на 3:40 хорошо видно количество обмоток.

https://www.youtube.com/watch?v=6JWaEcQzJnU

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ua6em пишет:

ЗЫ а вот вызов никто не принял, сделать аппаратно, тем более на "голубенькой"

IGBT модуль по наводке ТС заказал, может и соберу, если руки дойдут.

я их сегодня получил )))

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

я их сегодня получил )))

я еще на той неделе, но пока руки не доходят :)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ua6em пишет:

я их сегодня получил )))

я еще на той неделе, но пока руки не доходят :)

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

Zero-Botanik
Offline
Зарегистрирован: 02.11.2019

Отличная работа!

В деревне насос 0,75кВт как раз думал, как с ним лучше в этом году "разобраться" и нашел Ваш проект. За 100 долларов частотник точно к нему не буду покупать.

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

b707
Offline
Зарегистрирован: 26.05.2017

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

Но готовый на Али от 50 баксов -в красивом корпусе, с органами управления и дисплеем -  и если вы не можете сами подписать выводы на схеме - лучше пойти этим путем.

Zero-Botanik
Offline
Зарегистрирован: 02.11.2019

Плавный пуск устроит. На видео было изменение оборотов.

Сбросьте ссылку - посмотрю, интересно. За 50 не видел.

Подписать сам не могу, могу попробовать по своему алгоритму написать. Но зачем? Слишком много ресурсов тратить. Автор предлагает использовать его решение, поэтому уточняю. Вас это задело? Нельзя спрашивать?  К чему такие советы? 

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

могу попробовать по своему алгоритму написать. Но зачем? Слишком много ресурсов тратить.

Честно говоря - вот это задело. Какое-то просто нашествие халявщиков на форум - никто ничего не хочет делать сам, зачем ресурсы тратить... каждому готовый код и схему подавай.

Вам не приходит в голову, что скопировать чужой прибор и залить готовую прошивку - это немного не то, что называется DIY ? Тут нет творчества, это скорее похоже покупку готового в магазине. Поэтому и советы такие - купите на Али готовое, не мучайтесь. Самоделка вам встанет в 1500 рублей на детали + кучу гемора, а готовое - в трешник. О чем базар-то ввообще?

Zero-Botanik
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

Zero-Botanik пишет:

могу попробовать по своему алгоритму написать. Но зачем? Слишком много ресурсов тратить.

Честно говоря - вот это задело. Какое-то просто нашествие халявщиков на форум - никто ничего не хочет делать сам, зачем ресурсы тратить... каждому готовый код и схему подавай.

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

Вам, сударь, какая печаль? Вы-то куда прете? Советы свои суньте в темную пещеру, поглубже, чтобы они не выглядывали. Автор предложил, я с благодарностью принял предложение. 

Что Вы знаете про меня? Я халявщик? Может кто-то просто неудачник и завистник? Лично я делаю столько, сколько и не снилось Вам. Минимум 2 проекта новых в месяц. Не могу раскрыться здесь только. Поэтому очень ценю свое время. Прямо сейчас делаю робота-сортировщика в цех. Бросить и заниматься плавным пуском? Серьезно?

И из пушки по воробьям стрелять не собираюсь. У меня есть прямо сейчас свои (не на балансе компании, что обычно) купленные и не пошедшие в дело 3 новых частотника. Брал для личных проектов. Но на деревенский насос в жизни не поставлю. Или оставлю как есть, или найду и использую чье-то готовое решение.

Я здесь потому что с нового года учу С++. Я хочу понимать что делает мой программер с ПЛК, и мелочи писать самостоятельно, потому что мне это очень нравится. 

И я в шоке от части посетителей форума. Мне сильно комфортней разговаривать на русском, поэтому я здесь. Но не сравнить ответы, что получаю я на англоязычных форумах. Откуда тут столько злости в людях?

Вопрос: лично Вы используете готовые библиотеки? Да - нет.

Второй: используете программные режимы на фото? Да - нет.

sadman41
Offline
Зарегистрирован: 19.10.2016

В каких PLC C++ заложен? Просто из любопытства интересуюсь.

Zero-Botanik
Offline
Зарегистрирован: 02.11.2019

sadman41 пишет:

В каких PLC C++ заложен? Просто из любопытства интересуюсь.

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

На работе используем Дельты, там язык диаграмм, Си там нет.
Но мне кажется, Вы знали ответ заранее, нет? ))

 

sadman41
Offline
Зарегистрирован: 19.10.2016

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Да мы тут уже стока директоров повидали, с 2-мя праэктами в месяц на толькошто недоученном Си, что не бери в голову, не ты первый, не ты последний. 

Zero-Botanik
Offline
Зарегистрирован: 02.11.2019

sadman41 пишет:

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

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

А я сейчас простые независимые функции "перехватываю" из заказа и делаю на Attiny например. Дикий восторг, как у ребенка, простите ))

Обработать пару простых датчиков и выдать на реле результат. Что может быть проще и лучше?  Ну зачем для этого Дельта?

Zero-Botanik
Offline
Зарегистрирован: 02.11.2019

DetSimen пишет:

Да мы тут уже стока директоров повидали, с 2-мя праэктами в месяц на толькошто недоученном Си, что не бери в голову, не ты первый, не ты последний. 

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

Не люблю фразу "в споре рождается истина", но очень люблю дискуссии. Когда люди обмениваются опытом, мнениями.

Не проблема выставить себя новичком, проблема - всезнайкой.

sadman41
Offline
Зарегистрирован: 19.10.2016

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

Zero-Botanik
Offline
Зарегистрирован: 02.11.2019

sadman41 пишет:

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

Конечно, по Сеньке шапка.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

daniilguz пишет:

Спасибо всем кто отозвался!!!

Вот конечный код на котором остановился.

Представлен вариант управления трехфазным асинхронным двигателем мощностью от 150 до 750 Ватт с помощью частотного регулятора на базе игбт модуля и ардуино нано v3.

переменным резистором на 10 кОм подавать сигнал на аналоговый вход A0 сигнал от 0 до 5 вольт, можно с внешнего источника.

частота меняется от 5 до 200 герц.

Код исправил внес большинство поправок. работает у меня на ардуино нано v3 (168)

В строке 60 число 13 можно изменить от этого меняется максимальная частота. при 5 выдает синус 400 герц.

скриншот с осцилографа по ссылке: https://photos.app.goo.gl/pqhVaEL3okTX9cGq6

плавный пуск собран по схеме на irams1010up60b https://power-e.ru/wp-content/uploads/29_pic6.jpg

частота ШИМ 5,7 кГц.

нога EN подтянута к +5в резистором 1 кОм к +

Ошибки от модуля не подключены.

Температурная защита не подключена.

В ближайшее время нарисую плату вложу сюда.

видео работы https://www.youtube.com/watch?v=He5ISCiuVcw.

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

#include <avr/io.h>
#include <avr/interrupt.h>

byte prog_pwm=0;
byte num=1;
byte impuls=0;
byte k=0;
int border;


byte sin_1_h[36]={0  , 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0};
byte sin_2_h[36]={ 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60,};
byte sin_3_h[36]={0  ,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0};
byte sin_1_l[36]={0  ,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12};
byte sin_2_l[36]={0  ,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49, 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0};
byte sin_3_l[36]={ 55, 60, 62, 63, 62, 60, 55, 49, 41, 32, 22, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 22, 32, 41, 49};

int sensorValue ;
int flag_led_1=0;
int readsens=0;
int pinIn    = A0; // Пин аналогового входа

ISR (TIMER1_COMPA_vect  )
{
  prog_pwm=prog_pwm+2;
  if (prog_pwm>=64){prog_pwm=0;}
}

// the setup routine runs once when you press reset:
void setup() {
  pinMode(pinIn, INPUT);
    ADCSRA |=   (1 << ADPS1);                     //Биту ADPS2 присваиваем единицу - коэффициент деления 16
    ADCSRA &= ~ ((1 << ADPS2) | (1 << ADPS0));  //Битам ADPS1 и ADPS0 присваиваем нули
   pinMode(2, OUTPUT);  
   pinMode(3, OUTPUT); 
   pinMode(4, OUTPUT); 
   pinMode(5, OUTPUT);  
   pinMode(6, OUTPUT); 
   pinMode(7, OUTPUT); 
 
 cli(); // отключить глобальные прерывания
    TCCR1A = 0x00;
    TCCR1B = (0 << CS12)| (1 << CS11)|(0 << CS10)|(1 << WGM12); //предделитель clk/0, режим таймера СТС
    TCNT1 = 0x00;
    OCR1A =10; // максимальный предел счета
    TIMSK1 |= (1 << OCIE1A); // разрешение прерывания по совпадению
   sei();

}

void loop() {
border=prog_pwm+k;
 if (sin_1_h[num]> border){PORTD |= 1<<2;}else{PORTD &= ~(1<<2);}
 if (sin_2_h[num]> border){PORTD |= 1<<3;}else{PORTD &= ~(1<<3);}
 if (sin_3_h[num]> border){PORTD |= 1<<4;}else{PORTD &= ~(1<<4);}
 if (sin_1_l[num]> border){PORTD |= 1<<5;}else{PORTD &= ~(1<<5);}
 if (sin_2_l[num]> border){PORTD |= 1<<6;}else{PORTD &= ~(1<<6);}
 if (sin_3_l[num]> border){PORTD |= 1<<7;}else{PORTD &= ~(1<<7);}
 impuls++;
  if (impuls>=(13+sensorValue>>3)){ impuls=0;num++;
  if (num>=36){num=0;sensorValue=analogRead(pinIn);
  if (sensorValue>=500){k=sensorValue/16;}else{k=0;}
  }
  }
}

 

а если ногу EN подтянуть к земле через резистор 1ком и, программно в setup выставить туда с ардуины HIGH, не стрельнет?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Да мы тут уже стока директоров повидали, с 2-мя праэктами в месяц на толькошто недоученном Си, что не бери в голову, не ты первый, не ты последний. 

"Огласите весь список"... )))

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik, столько эмоций.... при полном отсутсвии логики.  Скажите, вы женщина?

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

Может вы решили "познакомится с С++" ? - но похоже знакомство это настолько мимолетное, что вы даже не можете сами подписать пины в готовом скетче...

А к чему вы упомянули свои ПЛК-проекты? Какое отношение они имеют к теме форума? Или просто звучит красиво?

"Мы сыграли с Таллем восемь партий.... на бильярде..." (с)

 

Ну и главное - к чему столько экспрессии? - Разве я могу вам запретить ковырять в носу? - ковыряйте на здоровье.

А вот указывать мне, кому и какие давать советы - не надо.