управление трехфазным асинхронным двигателем
- Войдите на сайт для отправки комментариев
Чт, 17/12/2015 - 14:58
существует ли ардуино для управления трехфазным асинхронным двигателем?
шесть ШИМ ,работающих синхронно, от одной функции или одной группы регистров???
Для этого придуманы частотные приводы. Но это дорого.
У самого кстати вопрос стоит: нужно регулировать скорость вентиляторов. Пока взял на 12 вольт...
мне требуется создать задающий генератор для инвертора 6 каналов
Вам к dimax на поклон надо идти....
Только он на таймерах чудеса воплощать в жизнь умеет
Например : http://arduino.ru/forum/programmirovanie/pwm-v-arduino#comment-129212
Даже на ATTINY13 сможет , если ног хватит ;)
Почитайте, по моему это ваш случай:
https://www.google.ru/search?q=d+class+amplifier&newwindow=1&biw=1920&bi...
in37usd, не существует. Нужны синхронные таймеры. Копайте в сторону специализированных МК типа AT90PWM, или покупайте готовый контроллер.
не то это. Управление асинхронником это целая наука, на этом компании зарабатывают миллиарды. Трудностей там много: мало того что сигнал сформировать на три фазы, его надо правильно сформировать. Нужно управлять полевиками с большой скоростью, полевики мощные, для них скоростные драйверы надо, напряжения для драйверов тоже велики. После полевиков - фильтры. Их тоже надо делать. И везде большое напряжение и токи. В общем проблем на самом деле полно. Не зря они таких денег стоят.
dimax дал дельный совет. Вот есть такая плата http://www.atmel.com/Images/doc7638.pdf
стоит правда бессовестных денег. Но к ней есть схемы и прошивки.
А какие средства отладки для AT90PWM существуют - можно ли хоть один кронтроллер из этой группы отладить через USB ??
я сейчас выбираю на чем остановиться, чтобы обойтись без покупки отладчика
программатор в лаборатории есть
до этого программировал PIC контроллеры- там для отладки dsPIC30F2010 требуется покупать отладчик
у меня вся силовая часть уже есть - от фирмы SIEMENS - надо только задающий контроллер
ШИМ - 6 каналов синхронных должен работать на частоте примерно 3300ГЦ
ШИМ - 6 каналов синхронных должен работать на частоте примерно 3300ГЦ
для dsPIC30F2010 - через отладчик ICD3 видны все регистры и память контроллера
стоимость от 60S
отладчика стоимость
а какие цены у ATMEL???
Ну тогда контроллер что в той плате и исходники от него - и в перед!
Только без JTAG отладка на меге разве что через последовательный порт...
"Только без JTAG отладка на меге "- что Вы имеете в виду?
а если я спаяю кабель JTAG(вроде даже когда-то паял для ALTERA- не помню где он сейчас) то можно отлаживать через JTAG????
JTAGи бывают разные...
я смотрю сейчас в интернете
Купите недорогой BLDC-контроллер для трехфазника - ESC BLDC. Я себе для модели брал, держит 60А постоянно, 320 в пике, стоит 1500р. Управляется как снова - ШИМ 50Гц от 0.5мс до 2мс вроде. Если интересной на алиэкспресс HobbyPower SL V2. Это аналог HobbyWing EZRUN
Упс...а вам не это надо...прошу прощения
Что такое "синхронные таймеры" ? Это таймеры, которые умеют стартовать одновременно или синхронизировать события друг у друга? Такое есть у stm8/stm32. У STM-ов даже библиотека есть для управления трехфазными двигателями. Я правда только краем глаза туда заглядывал, т.к. мне ни к чему.
У TI Piccolo LaunchPad(F28027)= 17+7 баксов поглядите. А я здесь помещал уж трехфазный синусоидальный задающий ШИМ генератор на 50 Гц и несущей частотой ШИМ вроде 10 кГц на Меге. Алгоритм такой - при пуске формируем таблицу синуса для трех фаз, а потом ей управляем тремя таймерами в цикле. Поищите - код здесь был.
Вот для меги - разберетесь. На комменты не смотрите
А я вот так пытался сделать.
может и не будет работать...
может кто-нибудь доработает код для себя и поможет другим разобраться.
ведь многим некогда читать большие "мануалы", из-за постоянной погони за "едой"...
#define f1 3
#define f2 5
#define f3 6
#define f4 9
#define f5 10
#define f6 11
/*
pinMode(f1, OUTPUT);
pinMode(f2, OUTPUT);
pinMode(f3, OUTPUT);
pinMode(f4, OUTPUT);
pinMode(f5, OUTPUT);
pinMode(f6, OUTPUT);
*/
DDRD = B01101000;
DDRB = B00001110;
}
void loop() {
int t = micros();
int val = analogRead(A0); //потенциометр, регулировка оборотов и напряжения
//int val = 0;
//int n=255;
int n = map(val, 0, 1024, 255, 165); //конвертер диапозона потенциометра в диапозон напряжения 220-310 В
int t1 = map(val, 0, 1024, 6667, 20000) - map(val, 0, 1024, 6667, 20000) % 3; //регулировка частоты от 50 Gz до 150 Gz, кратное 3
if (t2 < (micros() - t)) //проверка правильности задержки перед включением фазы f1
{
delayMicroseconds(t2 - (micros() - t));
analogWrite(f1, n);
delayMicroseconds(t1 / 3 - t2);
analogWrite(f3, 0);
delayMicroseconds(t2);
analogWrite(f6, n);
delayMicroseconds(t1 / 3 - t2);
analogWrite(f5, 0);
delayMicroseconds(t2);
analogWrite(f2, n);
delayMicroseconds(t1 / 3 - t2);
analogWrite(f1, 0);
delayMicroseconds(t2);
analogWrite(f4, n);
delayMicroseconds(t1 / 3 - t2);
analogWrite(f6, 0);
delayMicroseconds(t2);
analogWrite(f3, n);
delayMicroseconds(t1 / 3 - t2);
analogWrite(f2, 0);
delayMicroseconds(t2);
analogWrite(f5, n);
delayMicroseconds(t1 / 3 - t2);
analogWrite(f4, 0);
}
}
Интиресная очень тема . Как вы частоту от напряжения разделяете можете прокоментировать ?
Всем привет !!! Подскажите идею как дергать ногой к примеру 250 раз потом эта нога LOW. СЛЕДУЮЩАЯ 250 раз . И так по кругу.
Для изменения состояния портов есть функция digitalWrite(), для циклических процессов - for или while. А для Вас - ардуино для начинающих.
Это понятно. Как вывести значение переменной из for. В общий цикл . ?
На при мер for(int n=0; n <250; n++)как вывести значение n . В loop .?
А зачем куда-то выводить? Прямо в цикле все и делайте:
Как вариант. Попробую.
Но теоретически возможно вывести переменную из цикла ?
не только можно, но и очень часто именно так поступают. читать все, потом вопросы задавать
ссылка 1
ссылка 2
ссылка 3
Спасибо !!! Еще раз прочитал что такое глобальные переменные и понял что то новое.
Вот так t видна в цыкле . Но вопрос почему если вынести Serial.println(t); За цыкл то видим не счет от одного до 50 а сразу просто 50 ???
Вот так t видна в цыкле . Но вопрос почему если вынести Serial.println(t); За цыкл то видим не счет от одного до 50 а сразу просто 50 ???
потому что в этом случае оператор Serial.println(t);выполняется ПОСЛЕ ОКОНЧАНИЯ цикла, когда t равно 50
МАГ155 - читаю вас и каждый раз узнаю что-то новое. Задавать ТАКИЕ вопросы после года занятий ардуино, после претензий. что команды Ардуино ДУЕ "слишком медленные"... Нет предела человеческой тупости...
чота ржу.
тут в пору плакать...
да блин, то самое чуство, када у обычного мотора мозгов больше, чем у ТС. И кто кем управлять взялся?
Народ вы все такие умные. Я что должен вообще все знать?? Не сталкивался с этим за год не разу. Да и это понятно что выполняется после окончания цикла. Просто хотел уточнить . А вы сразу.....
Да и это понятно что выполняется после окончания цикла. Просто хотел уточнить . А вы сразу.....
Если вам понятно, что оно выполняется ПОСЛЕ ЦИКЛА - как Serial может показывать изменение значений t ?????
Ну малоли мож чего то не правильно понимаю .Для того и спрашивал.
А тут весело :)
Вот так t видна в цыкле . Но вопрос почему если вынести Serial.println(t); За цыкл то видим не счет от одного до 50 а сразу просто 50 ???
Та плюньте вы на них, противных. Вы ведь изобрели аналог циклу For.
Теперь стоит напрячься и изобрести аналог циклу loop.
Ну малоли мож чего то не правильно понимаю .Для того и спрашивал.
это тот случай, когда теория не подкреплена практикой. читайте, пишите код, ищите ошибки.
тут недавно (в каком-то топике) посоветовали человеку "логику" подтянуть, так он сразу быка врубил... Если кто-то пишет, чего-то грубого, то обычно автор заслужил. Я на работе частенько на своих срываюсь - такое чуство, что мозг не берегут на работу, дома оставляют, чтоб не перетрудился.
Я вам так скажу. Если бы они мозг с собой на работу брали ,мы бы с вами были не нужны.
Всем привет !!! Нужно изменять шаг шим чтоб получалось подобие синусоиды .
К примеру есть 20 импульсов. Начиная с первого по 10 скважность уменьшается с каждым импульсом а с 10 по 20 увеличивается. Я так понимаю этого можно достичь только "самодельным шимом "?
http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR444.htm
нужно на 6 пинов шим сигналаов
тут на сайте есть описание и код на С
вся схема на 6 MOSFET как я понял и контролер атмел
если кто шарит в коде си можно перенести на ардуино и всем будет счастье =) и мне тоже =)
Для этого придуманы частотные приводы. Но это дорого.
У самого кстати вопрос стоит: нужно регулировать скорость вентиляторов. Пока взял на 12 вольт...
Я как-то делал 2 источника чистого синуса 220 В для аварийного питания импортного газового котла на таких модулях https://ru.aliexpress.com/item/32580730860.html и остатков УПС. Мощность нужна была около 100 Вт. Вот уже года два работают, заказчик доволен. У этих модулей есть режим управления частотой, для изменения скорости двигателей (в каких пределах не помню уже). Но в инете можно найти. Еще один модуль остался, правда применять некуда, да и делать не хочется. Больше частотники нравятся, цены на них стали божескими, от 3 тыр.