Привет! Я начинающий в ардуине.
Помогите пожалуйста скетчем. Нужно подключить моторчик от CD-плейера (звезда со средней точкой). Есть мосфеты, драйвера для двигателя нет.
хотелось бы возможность регулировки оборотов. Спасибо..
Привет! Я начинающий в ардуине.
Помогите пожалуйста скетчем. Нужно подключить моторчик от CD-плейера (звезда со средней точкой). Есть мосфеты, драйвера для двигателя нет.
хотелось бы возможность регулировки оборотов. Спасибо..
Я тоже начинающий стаж использования arduino часов 5 от силы, подумал немного как работают частотные преобразователи и решил помочь заодно и потренироваться работать с arduino . Подключай свой двигатель на выходы D9,D10,D11 через транзисторы, я для тестов подкючал напрямую двигатель от свежевскрытого винчестера.
Вот накидал прогу для раскручивания двигателя:
PHP код:
long CurInt = 1; //Текущий интервал фаз (в градусах)
long previousMillis = 0; //Предыдущее срабатывания счетчика интервала
long interval = 2; //Интервал в милисекундах (влияет на скорость)
long increment = 2; //шаг увеличения угла
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();
}
}
Последний раз редактировалось XsanderS; 22.11.2010 в 16:41.
Осциллограмма показала, что этот скетч не работает для 3х фазного двигателя. Необходимо чтобы еще и напряжение менялось, тогда будет синус, а пока там "баян"
А осциллограмму под нагрузкой снимал?
Дело в том что на выходе ардуины, ШИМ сигнал и без индуктивной нагрузки, синуса не будет видно. А если подключить индуктивность то все сгладится
можно так же RC фильтр поставить
Последний раз редактировалось Chip; 24.08.2018 в 11:38.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)