задающий генератор 3 фазы
задающий генератор 3 фазы
есть вот такой скетч
[spoiler]long CurInt = 1; //Текущий интервал фаз (в градусах)
long previousMillis = 0; //Предыдущее срабатывания счетчика интервала
long interval = 1; //Интервал в милисекундах (влияет на скорость)
long increment = 1; //шаг увеличения угла
int Phase1,Phase2,Phase3; //Текущее значение уровня фаз
double pi = 3.1415926535; //Можно только гадать что это
//****************************************************************************************************************************
void setup() //Типа инициализация
{
//Открываем аналоговые порты на запись
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
//****************************************************************************************************************************
void Takt() //Тут обработка логичесткового калибровоного такта каждый interval
{
//Гоняем интервал фаз от 0 до 360 (если гонять обратно двигатель будет крутиться обратно)
CurInt=CurInt+increment;
if (CurInt >= 360) CurInt = 0;
//Математика расчета фаз
Phase1 = sin(CurInt*pi/180)*127+128; //Фаза 1 должна описывать траекторию синусойды для достижения максимальной мощьности двигателя
Phase2 = sin((CurInt+120)*pi/180)*127+128; //Фаза 2 находится также как и первая со смещением в 120 градусов
Phase3 = sin((CurInt+240)*pi/180)*127+128; //Фаза 3 находится также как и первая со смещением в 240 градусов или со смещением в 120 градусов от второй
//Записываем
analogWrite(9, Phase1);
analogWrite(10, Phase2);
analogWrite(11, Phase3);
}
//****************************************************************************************************************************
void loop() // тут Физический такт
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = previousMillis + interval;
Takt();
}
}[/spoiler]
как можно его подпилить, что бы получить 50гц? или может посоветуете что другое.
[spoiler]long CurInt = 1; //Текущий интервал фаз (в градусах)
long previousMillis = 0; //Предыдущее срабатывания счетчика интервала
long interval = 1; //Интервал в милисекундах (влияет на скорость)
long increment = 1; //шаг увеличения угла
int Phase1,Phase2,Phase3; //Текущее значение уровня фаз
double pi = 3.1415926535; //Можно только гадать что это
//****************************************************************************************************************************
void setup() //Типа инициализация
{
//Открываем аналоговые порты на запись
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
//****************************************************************************************************************************
void Takt() //Тут обработка логичесткового калибровоного такта каждый interval
{
//Гоняем интервал фаз от 0 до 360 (если гонять обратно двигатель будет крутиться обратно)
CurInt=CurInt+increment;
if (CurInt >= 360) CurInt = 0;
//Математика расчета фаз
Phase1 = sin(CurInt*pi/180)*127+128; //Фаза 1 должна описывать траекторию синусойды для достижения максимальной мощьности двигателя
Phase2 = sin((CurInt+120)*pi/180)*127+128; //Фаза 2 находится также как и первая со смещением в 120 градусов
Phase3 = sin((CurInt+240)*pi/180)*127+128; //Фаза 3 находится также как и первая со смещением в 240 градусов или со смещением в 120 градусов от второй
//Записываем
analogWrite(9, Phase1);
analogWrite(10, Phase2);
analogWrite(11, Phase3);
}
//****************************************************************************************************************************
void loop() // тут Физический такт
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = previousMillis + interval;
Takt();
}
}[/spoiler]
как можно его подпилить, что бы получить 50гц? или может посоветуете что другое.
задающий генератор 3 фазы
частота не меняется, 490гц и ни вперед, ни назад.
Отправлено спустя 5 минут 12 секунд:
интервал здесь получается дает время на шим, время от 1 до 99%
Отправлено спустя 5 минут 12 секунд:
интервал здесь получается дает время на шим, время от 1 до 99%
задающий генератор 3 фазы
так это частота шима!
Отправлено спустя 1 минуту 9 секунд:
что у вас на выходе подключено? как вы измеряете?
задающий генератор 3 фазы
да, все правильно. надо подключить нагрузку с фильтром. смотрю осцилографом.
задающий генератор 3 фазы
по моему, хороший код. вот если бы его сделать через прерывания, то была бы не плохая основа для частотника.
задающий генератор 3 фазы
частота мала.
и есть готовые микросхемы для генерации синуса. зачем велосипед?))
и есть готовые микросхемы для генерации синуса. зачем велосипед?))
задающий генератор 3 фазы
.
Последний раз редактировалось Nikan 23 мар 2023, 22:09, всего редактировалось 1 раз.
задающий генератор 3 фазы
не ругайтесь, это были мысли вслух. а почему нет? одна мега будет заниматься только синусом, переменные ей передавать. другая мега на дисплей и кнопки. при стоимости нано 1.3$ по моему не плохая цена получится.
Отправлено спустя 1 минуту 31 секунду:
что есть под рукой, из того и лепим. спасибо за подсказку.
задающий генератор 3 фазы
мы все тут что-то лепим из того что есть. но 490гц.... это очень мало для частотника.
контроллер, по хорошему, должен заниматься обработкой данных, алгоритма, еще чем-то.
собирать и отправлять данные устройствам которые на "железном уровне" занимаются своим делом.
особенно касаемо высокоскоростных операций .
контроллер, по хорошему, должен заниматься обработкой данных, алгоритма, еще чем-то.
собирать и отправлять данные устройствам которые на "железном уровне" занимаются своим делом.
особенно касаемо высокоскоростных операций .
задающий генератор 3 фазы
.
Последний раз редактировалось Nikan 23 мар 2023, 22:09, всего редактировалось 1 раз.
задающий генератор 3 фазы
спасибо за правильные наставления. для этого и нужны форумы, обсудить и узнать мнение более сведущих людей. 

Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость