Полевики потянут и больше, но тут надо с драйверами мутить. Чтобы транзистор очень быстро закрывался.
Инвертор 12-220 (sin на МК)
30 килогерц потянут. Нормальный синус будет.
Полевики потянут и больше, но тут надо с драйверами мутить. Чтобы транзистор очень быстро закрывался.
Полевики потянут и больше, но тут надо с драйверами мутить. Чтобы транзистор очень быстро закрывался.
- Реклама
- Сообщения: 1309
- Зарегистрирован: Пн авг 25, 2008 08:49:33
хорошо. НО 30.36 кГц как сделать такую точную частоту? именно 30.36
какие кратные частоты надо?
в спорах рождается ИСТИНА [AND] flud.
Вот бы узнатьdemson писал(а):НО 30.36 кГц как сделать такую точную частоту? именно 30.36какие кратные частоты надо?
А почему именно такая частота? Наверное можно и под другую подстроиться?
- Сообщения: 1309
- Зарегистрирован: Пн авг 25, 2008 08:49:33
это частота с которой нам необходимо изменять параметр величины шим.
НО можно ее умножить на некоторое целое число потом пропускать столько-же действий.
например частоту умножим на 4
действие пропуск пропуск пропуск действие
НО можно ее умножить на некоторое целое число потом пропускать столько-же действий.
например частоту умножим на 4
действие пропуск пропуск пропуск действие
в спорах рождается ИСТИНА [AND] flud.
Ребятки а что не понятного-то?
есть частота 60 герц
это значит что 60 раз в секунду надо сделать полную синусоиду от нуля вверх потом сверху вниз до нуля от нуля вниз и снизу вверх....имеем 2 четверть синусоиды для двух каналов по очереди 120 раз в секунду....теперь нам надо сделать этот красивый изгиб плавного подъёма вверх синусоиды и потом последовательно вывести его в прямом порядке на первый канал, потом задом-наперед в первый канад потом в прямом порядке во второй канал и наконец задомнаперед во второй канал....
теперь этот плавный переход от нуля до максимума - четвертесинусоида так сказать.....нужно сделать массив-табличку....в которой чем больше значений будет тем лучше но на глаз и 128 штук хватит вот и записать в неё последовательно значения регистра для соответствующего синусоиде процента PWM а дальше если у нас например 128 значений в таблице то частоту второго таймера ставим примерно равной - 60*4*128 = 30 килогерц и 30 тыщ раз в секунду выполняем прерывание которое будет иметь 4 режима -
1) _--`` для первого канала
2) ``--_ для первого канала
3) аналог первого только на второй канал
4) аналог второго на второй канал
и теперь при старте ставим переменную режима = 1, переменную текущего значения = 0 и запускаем таймер
в прерывании таймера:
Если переменная режима =
1) инкрементируем переменную текущее значение, вычитываем и записываем в регистр PWM а первого канала значение таблицы, проверяем переменную на предмет выхода за 128 и если вышли - ставим режим 2
2) декрементируем переменную текущее значение, читаем содержимое таблицы и пишем его в регистр PWM а первого канала, проверяем не пришли ли мы к 1 в переменной текущее значение если пришли - ставим режим 3
3) инкрементируем переменную текущее значение, вычитываем и записываем в регистр PWM а второго канала значение таблицы, проверяем переменную на предмет выхода за 128 и если вышли - ставим режим 4
4) декрементируем переменную текущее значение, читаем содержимое таблицы и пишем его в регистр PWM а второго канала, проверяем не пришли ли мы к 1 в переменной текущее значение если пришли - ставим режим 1
вот и весь алгоритм....если взять таблицу из 10-ти значений то получится гораздо меньшие частоты - 60*4*10 = 2400 раз в секунду нужно будет вызывать эту процедурку ну и пределы изменить со 128 на 10 но тогда синус ступенчатым получится
и драйверы в любом случае надо ставить и причем не просто а мостовые у которых на выходе 2 транзюка, тогда не будет потерь на диоде
да и частоту самого PWM таймера тогда можно будет задрать хоть до 2 мегагерц
- чем выше частоты тем ближе мы к аналогу
ХОТЯ! МОЁ ЛИЧНОЕ ИМХО!!!
это всё бред!
где стабилизация по напряжению? где обратная связь? таблицу надо коректировать на предмет размаха..тоесть делить её значения на некий индекс-процент нагруженности
ибо транс без нагрузки выдаст пару тыщ вольт поубивает нахрен силовые транзюки и спалит микроконтроллер - знаю по своему опыту ибо брал транс из УПС и подключал к ЛАТРу на котором было намотано 12 витков медной шины сварочной....результаты были просто супер
такой ДУГИ во вторичке (которая на 220) я давно не видовал
в общем это ужос.
Вам нужно делать это дело на аналоговой вещи - ТЛ494
просто на одном операционнике сделать генератор синуса, но втором инвертор ещё на одном - повторитель напряжения первого и подавать эти синусы через ещё пару операционников на входы двух ТЛ494 у которых на входе + будет напряжение с выходного фильтра(дроссель и кандер) а на минус подавать синус - тогда это будет просто песня...транс не будет петь песни не будет пробиваться высоким без нагрузки и вообще...одни плюсы будут
есть частота 60 герц
это значит что 60 раз в секунду надо сделать полную синусоиду от нуля вверх потом сверху вниз до нуля от нуля вниз и снизу вверх....имеем 2 четверть синусоиды для двух каналов по очереди 120 раз в секунду....теперь нам надо сделать этот красивый изгиб плавного подъёма вверх синусоиды и потом последовательно вывести его в прямом порядке на первый канал, потом задом-наперед в первый канад потом в прямом порядке во второй канал и наконец задомнаперед во второй канал....
теперь этот плавный переход от нуля до максимума - четвертесинусоида так сказать.....нужно сделать массив-табличку....в которой чем больше значений будет тем лучше но на глаз и 128 штук хватит вот и записать в неё последовательно значения регистра для соответствующего синусоиде процента PWM а дальше если у нас например 128 значений в таблице то частоту второго таймера ставим примерно равной - 60*4*128 = 30 килогерц и 30 тыщ раз в секунду выполняем прерывание которое будет иметь 4 режима -
1) _--`` для первого канала
2) ``--_ для первого канала
3) аналог первого только на второй канал
4) аналог второго на второй канал
и теперь при старте ставим переменную режима = 1, переменную текущего значения = 0 и запускаем таймер
в прерывании таймера:
Если переменная режима =
1) инкрементируем переменную текущее значение, вычитываем и записываем в регистр PWM а первого канала значение таблицы, проверяем переменную на предмет выхода за 128 и если вышли - ставим режим 2
2) декрементируем переменную текущее значение, читаем содержимое таблицы и пишем его в регистр PWM а первого канала, проверяем не пришли ли мы к 1 в переменной текущее значение если пришли - ставим режим 3
3) инкрементируем переменную текущее значение, вычитываем и записываем в регистр PWM а второго канала значение таблицы, проверяем переменную на предмет выхода за 128 и если вышли - ставим режим 4
4) декрементируем переменную текущее значение, читаем содержимое таблицы и пишем его в регистр PWM а второго канала, проверяем не пришли ли мы к 1 в переменной текущее значение если пришли - ставим режим 1
вот и весь алгоритм....если взять таблицу из 10-ти значений то получится гораздо меньшие частоты - 60*4*10 = 2400 раз в секунду нужно будет вызывать эту процедурку ну и пределы изменить со 128 на 10 но тогда синус ступенчатым получится
и драйверы в любом случае надо ставить и причем не просто а мостовые у которых на выходе 2 транзюка, тогда не будет потерь на диоде
да и частоту самого PWM таймера тогда можно будет задрать хоть до 2 мегагерц
ХОТЯ! МОЁ ЛИЧНОЕ ИМХО!!!
это всё бред!
где стабилизация по напряжению? где обратная связь? таблицу надо коректировать на предмет размаха..тоесть делить её значения на некий индекс-процент нагруженности
ибо транс без нагрузки выдаст пару тыщ вольт поубивает нахрен силовые транзюки и спалит микроконтроллер - знаю по своему опыту ибо брал транс из УПС и подключал к ЛАТРу на котором было намотано 12 витков медной шины сварочной....результаты были просто супер
Вам нужно делать это дело на аналоговой вещи - ТЛ494
просто на одном операционнике сделать генератор синуса, но втором инвертор ещё на одном - повторитель напряжения первого и подавать эти синусы через ещё пару операционников на входы двух ТЛ494 у которых на входе + будет напряжение с выходного фильтра(дроссель и кандер) а на минус подавать синус - тогда это будет просто песня...транс не будет петь песни не будет пробиваться высоким без нагрузки и вообще...одни плюсы будут
- Реклама
А оно надо? Вон в сети напряжение то-же не стабилизированное. Перепад в 20 - 30 вольт (а то и больше) случается сплошь и рядом. И зачем обратная связь, если не нужна стабилизация? Ну только если как защита от перегрузок...clawham писал(а): где стабилизация по напряжению? где обратная связь?
ИМХО вполне достаточно вывести синусоиду, и подать на трансформатор (как это происходит при включении трансформатора в розетку).
хотя лучше использовать конечно ICL8038 для изготовления синуса красивого и любой частоты скважности и т.д.
в сети оно ещё и как стабилизированное, вы даже не представляете как на электростанциях мучаются изза этой стабилизации и частоты
стабилизация нужна полюбому!
это уж поверьте очень серьёзное дело... так как транс это очень большая индуктивность а вы её качаете на максимуме что она будет делать? ну выброва с 40 вольт по первичке это не страшно а вот вторичная высоковольтная...блин..это сила....
кстати... транс в упс-ке расчитан не на 12 вольт а на 7,5 !!! так что дав ему 12 или 16 вольт с машины вы получите на выходе не 220 а все 640 %)
в сети оно ещё и как стабилизированное, вы даже не представляете как на электростанциях мучаются изза этой стабилизации и частоты
стабилизация нужна полюбому!
это уж поверьте очень серьёзное дело... так как транс это очень большая индуктивность а вы её качаете на максимуме что она будет делать? ну выброва с 40 вольт по первичке это не страшно а вот вторичная высоковольтная...блин..это сила....
кстати... транс в упс-ке расчитан не на 12 вольт а на 7,5 !!! так что дав ему 12 или 16 вольт с машины вы получите на выходе не 220 а все 640 %)
- Сообщения: 1309
- Зарегистрирован: Пн авг 25, 2008 08:49:33
ну и обратную связь можно сделать например вольтметр а от его показаний будет зависеть максимальное значение ocr не 255 а 100 например
в спорах рождается ИСТИНА [AND] flud.
Что-бы на МК сделать нестабильную частоту, это надо очень постараться. Стабилизация напряжения конечно не помешает, но и без неё достаточно нормально будет работать. Единственное что действительно надо-бы сделать, это контроль разряда аккумулятора (если инвертор будет питаться от аккумуляторов).clawham писал(а):в сети оно ещё и как стабилизированное, вы даже не представляете как на электростанциях мучаются изза этой стабилизации и частоты
А откуда возьмутся выбросы 40 вольт по первичке? Мы не прямоугольные импульсы на трансформатор подаём, а синусоиду. Синусоида выводится из прямоугольных импульсов ШИМ с помощью ЦАП, и только потом идёт на транс.clawham писал(а):так как транс это очень большая индуктивность а вы её качаете на максимуме что она будет делать? ну выброва с 40 вольт по первичке это не страшно а вот вторичная высоковольтная...блин..это сила....
- Сообщения: 1309
- Зарегистрирован: Пн авг 25, 2008 08:49:33
ну что начинаем реализацию кода ? я на с пишу 
в спорах рождается ИСТИНА [AND] flud.
Как напишете, не забудьте со мной текстом поделиться
Я то-же такой хочу!
- Сообщения: 1309
- Зарегистрирован: Пн авг 25, 2008 08:49:33
не волнуйся я же один точно не напишу ...Как напишете, не забудьте со мной текстом поделиться
так что в этой тему будем вместе ошибки в коде искать
на счет частоты таймера пока непонятно.
от примерно частота не уплывет?частоту второго таймера ставим примерно равной - 60*4*128 = 30 килогерц и 30 тыщ раз в секунду выполняем прерывание которое будет иметь 4 режима -
в спорах рождается ИСТИНА [AND] flud.
- Сообщения: 1309
- Зарегистрирован: Пн авг 25, 2008 08:49:33
#include <delay.h> // библиотека пауз CVAVR
char del_clock=1; // делитель частоты таймера
char del_clock_i=0; //счетчик события
char PMW_flag_pluss=1; //счетчик события полупериода прибавляем/убавляем шим
прерывание {
if (del_clock_i < del_clock){del_clock_i++;}else{del_clock_i=0
//наше событие
if (PMW_flag_pluss==1){
if (PMW<255){ PMW++; }else{PMW_flag_pluss=0; }
}else{
if (PMW>0){ PMW--; }else{PMW_flag_pluss=1; }
}
}
}
char del_clock=1; // делитель частоты таймера
char del_clock_i=0; //счетчик события
char PMW_flag_pluss=1; //счетчик события полупериода прибавляем/убавляем шим
прерывание {
if (del_clock_i < del_clock){del_clock_i++;}else{del_clock_i=0
//наше событие
if (PMW_flag_pluss==1){
if (PMW<255){ PMW++; }else{PMW_flag_pluss=0; }
}else{
if (PMW>0){ PMW--; }else{PMW_flag_pluss=1; }
}
}
}
в спорах рождается ИСТИНА [AND] flud.
Ребята, не все так просто, как вам кажется. Друг делал преобразователь - постоянка - в -380 вольт 3 фазы - убил 2 месяца жизни - причем программер не из последних и схемотехнику тоже хорошо знает.
Даже нагрузка - 500 и полтора киловатта - это тоже 2 большие разницы.
Да, существуют апноуты, но... Конкретная инфа на эту тему не особенно светится - на быструю победу не рассчитывайте.
Даже нагрузка - 500 и полтора киловатта - это тоже 2 большие разницы.
Да, существуют апноуты, но... Конкретная инфа на эту тему не особенно светится - на быструю победу не рассчитывайте.
Ребята, Вы чего-то не правильно считаете.
Если период синуса 16666 мкс (60 Гц), за этот период, предположим, будет 100 периодов ШИМа (разбили волну на 100 дискрет). Значит делим на 100 получаем 166.66 мкс. Это получился период ШИМа (частота ШИМа 6000 Гц). А в этом периоде шима ещё например 100 дискрет (разрядность получается ~6.65), делим ещё на 100, получаем 1.6 микросекунд (600 Кгц). Т.е. одно приращение ШИМного таймера сравнения получаеться 1.6 микросекунд. Попробуйте сделайте таймер на такую длительность, да и ещё все прибамбасы чтобы влезали в это время.
Немножко по другому: Частота синуса 60 Гц, умножаем её на кол-во ступенек (100), получаем 6Кгц и умножаем её на битность ШИМа (2^6.65, 100 вобщем), получаем 600 кГц. Вот с этой частотой и нужно приращать таймер сравнения.
Вы немного запутились и забыли о том, что период ШИМа состоит тже из частей (битность).
Аппаратный ШИМ в помощь, плюс внешняя логика для выбора ключа (если ШИМ в МК один).
Если период синуса 16666 мкс (60 Гц), за этот период, предположим, будет 100 периодов ШИМа (разбили волну на 100 дискрет). Значит делим на 100 получаем 166.66 мкс. Это получился период ШИМа (частота ШИМа 6000 Гц). А в этом периоде шима ещё например 100 дискрет (разрядность получается ~6.65), делим ещё на 100, получаем 1.6 микросекунд (600 Кгц). Т.е. одно приращение ШИМного таймера сравнения получаеться 1.6 микросекунд. Попробуйте сделайте таймер на такую длительность, да и ещё все прибамбасы чтобы влезали в это время.
Немножко по другому: Частота синуса 60 Гц, умножаем её на кол-во ступенек (100), получаем 6Кгц и умножаем её на битность ШИМа (2^6.65, 100 вобщем), получаем 600 кГц. Вот с этой частотой и нужно приращать таймер сравнения.
Вы немного запутились и забыли о том, что период ШИМа состоит тже из частей (битность).
Аппаратный ШИМ в помощь, плюс внешняя логика для выбора ключа (если ШИМ в МК один).
- Сообщения: 1309
- Зарегистрирован: Пн авг 25, 2008 08:49:33
абсолютно правильно но 100/4=25 по 25 ступеник на четверть период и 50 на полупериод. Не маловато?
Частота синуса 60 Гц, умножаем её на кол-во ступенек (100), получаем 6Кгц и умножаем её на битность ШИМа (2^6.65, 100 вобщем), получаем 600 кГц. Вот с этой частотой и нужно приращать таймер сравнения.
как написал clawham
нам надо в каждом периоде синуса сделать (60 периодов в секунду - 60 Гц) сделать изменения шим
1канал
1 ++ 0-255
2 - - 255-0
2 канал
3 ++ 0-255
4 - - 255-0
ну пусть даже до 100 считать
это 60*4*100=24000 Гц. ( еще кстати надо выкинуть крайние 0 и 100 получится 98 а это уже 60*4*98=23520 кратных частот нет ) - значит считаем до 102 и ищем частоту 24 кГц
а частота изменения шима пусть 1 Мгц тогда шим будет пробегать много раз прежде чем изменится величина.
в спорах рождается ИСТИНА [AND] flud.
Конвертер DC-AC, генерим синус
http://www.remexpert.com/ipb/ipb.html?a ... wentry=129
Конвертер DC-AC, генерим синус, часть вторая
http://www.remexpert.com/ipb/index.php? ... wentry=130
http://www.remexpert.com/ipb/ipb.html?a ... wentry=129
Конвертер DC-AC, генерим синус, часть вторая
http://www.remexpert.com/ipb/index.php? ... wentry=130
натуральная блондинка
Думаю нет, должно хватить.по 25 ступеник на четверть период и 50 на полупериод. Не маловато?
Это вы посчитали по 100 ступенек за четверть периода, 400 на весь период (волну). Это точно излишнеэто 60*4*100=24000 Гц.
А так и нужно делать. Фильтр (ФНЧ) за одну ступеньку должен успеть выйти на нужное значение. Для звука, например, с частотой дискретизации 44 кГц советуют ШИМ с частотой не менее 1 мГц.а частота изменения шима пусть 1 Мгц тогда шим будет пробегать много раз прежде чем изменится величина.
Только 1мГц не сможеш сделать на МК, можно кГц 200-300 сделать, думаю нормально будет.
Но всё-же, без аппаратного ШИМа не обойтись в любом случае.
- Сообщения: 1309
- Зарегистрирован: Пн авг 25, 2008 08:49:33
Давайте задумаемся над кодом. ШИМ программный от аппаратного отличаться не сильно будет (В КОДЕ) разница в том что будет вызываться функция а не регистр.
а вот код...
он нормально составлен? ну в смысле для первого шага
а вот код...
он нормально составлен? ну в смысле для первого шага
в спорах рождается ИСТИНА [AND] flud.


