-
Постов
17 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Весь контент Душитель Гуся
-
Спасиб за инфу! Ток у меня вопрос по поводу намотки вторичек. Ести тут 4 высоковольтные вторички, то я думаю намотать по одному слою каждой вторички(их 2), потом первичку, потом домотать вторички. Это хорошая идея? У меня есть подозрения, что разделение обмоток увеличит риск пробоя. Ну и второй вопрос как изолировать? По технологии Касьян(5 слоёв капт скотча на слой в 140В)?
-
Как усложняется? Если регулировка будет по усилителю ошибки через 5-ю 5В обмотку. Шим по идее автоматически должен подстраиваться. Ну и впоследствии возник вопрос: адекватна ли идея с отдельной вторичной обмоткой, которая отвечает за стабилизацию напряжения, и не подключена к ВВ части? Будет ли пропорционально напряжение на вторичных обмотках?
-
Ну я имею ввиду нужно ли разделять первичку подобным образом в тороидальном сердечнике или нужно разделять только ш-образный трансформатор? Мост. Потому, что назначение этого преобразователя-регулируемый источник высокого напряжения. Мало того, что там можно будет регулировать выходное напряжение переключением вторичных обмоток(4Х310В), так и будет добавлена регулировка выходного напряжения посредством шим в узком диапазоне. Мост больше всего для этого подходит. На пуш-пул будут значительные выбросы на полевиках из-за большей паузы между импульсами. Ток незнаю что надёжнее для этого: драйверы на ir2110(есть готовые платы этого модуля) или ТГР.
-
Тогда как его инициализировать так, чтобы он был глобальной переменной? Для дополнительной проверки возможности вызова массива из глобальных переменных я сделал светодиодный тест и пришёл к выводу, что массив не вызывается. Светодиодный тест это подтвердил. sendcharlcd() вроде работает исправно. Есть ли варик выбрать IDE, или настроить компиль и линкер так, чтобы не приходилось смотреть сгенерированный ассемблерный код и всё работало так, как задумано? да отображает это число только в нулевой ячейке. Но зачем это делать, если я подобные тесты проделывал? Если пишу массив перед int main() в whle(1) не могу его вызвать. Если в whle(1) и вызываю там же-всё ном .
-
Понял суть описаной на этом форуме проблемы? Перемещаем массив в основной цикл. #include "main.h" char ggg []="5146845"; int main() { I2C_Init();//инициализируем TWI LCD_ini(); //инициализируем дисплей clearlcd();//очистим дисплей DDRB=0b11111111; while (1) { //----------------2* unsigned char str1[]={2,4,7,2}; //------------1* setpos(0,0); //extern unsigned char str1[]; sendcharlcd(str1[0]/100+0x30); sendcharlcd(str1[0]%100/10+0x30); sendcharlcd(str1[0]%10+0x30); setpos(4,0); sendcharlcd(str1[1]/100+0x30); sendcharlcd(str1[1]%100/10+0x30); sendcharlcd(str1[1]%10+0x30); setpos(8,0); sendcharlcd(str1[2]/100+0x30); sendcharlcd(str1[2]%100/10+0x30); sendcharlcd(str1[2]%10+0x30); setpos(12,0); sendcharlcd(str1[3]/100+0x30); sendcharlcd(str1[3]%100/10+0x30); sendcharlcd(str1[3]%10+0x30); for (unsigned int n=0;n<4;n++) { for (unsigned char a=0; a< str1[n]; a++) { PORTB |= (1<<7); _delay_ms(1000); PORTB &= ~(1<<7); _delay_ms(1000); //sendcharlcd(str1[n]); } _delay_ms(3000); } } //return 0; } Чудо-чудесное
-
Тот же код. #include "main.h" unsigned char str1[]={2,4,7,2}; //------------1* char ggg []="5146845"; int main() { I2C_Init();//инициализируем TWI LCD_ini(); //инициализируем дисплей clearlcd();//очистим дисплей DDRB=0b11111111; while (1) { //----------------2* setpos(0,0); //extern unsigned char str1[]; sendcharlcd(str1[0]/100+0x30); sendcharlcd(str1[0]%100/10+0x30); sendcharlcd(str1[0]%10+0x30); setpos(4,0); sendcharlcd(str1[1]/100+0x30); sendcharlcd(str1[1]%100/10+0x30); sendcharlcd(str1[1]%10+0x30); setpos(8,0); sendcharlcd(str1[2]/100+0x30); sendcharlcd(str1[2]%100/10+0x30); sendcharlcd(str1[2]%10+0x30); setpos(12,0); sendcharlcd(str1[3]/100+0x30); sendcharlcd(str1[3]%100/10+0x30); sendcharlcd(str1[3]%10+0x30); for (unsigned int n=0;n<4;n++) { for (unsigned char a=0; a< str1[n]; a++) { PORTB |= (1<<7); _delay_ms(1000); PORTB &= ~(1<<7); _delay_ms(1000); //sendcharlcd(str1[n]); } _delay_ms(3000); } } //return 0; }
-
В этом форуме 2-ой раз. 1)Знаю, что эта запись-как попытка отобразить значение несуществующей ячейки массива. Ты просто представь. Компилятор это не выдал за ошибку. Без этих строчек результат тот же. 2) Вставка __attribute__((aligned(4))) и extern это попытка вручную прописать массив в глобальные переменные и обратиться к ним. Что с этими вставками, что без них-результат один. #include "main.h" //extern char str1[4]; //char* str1 = (char*) malloc(sizeof(char) * 4); unsigned char str1[]={2,4,7,2}; __attribute__((aligned(4))) //------------1* char ggg []="5146845"; int main() { I2C_Init();//инициализируем TWI LCD_ini(); //инициализируем дисплей clearlcd();//очистим дисплей DDRB=0b11111111; while (1) { //----------------2* setpos(0,0); //extern unsigned char str1[]; sendcharlcd(str1[0]/100+0x30); sendcharlcd(str1[0]%100/10+0x30); sendcharlcd(str1[0]%10+0x30); setpos(4,0); sendcharlcd(str1[1]/100+0x30); sendcharlcd(str1[1]%100/10+0x30); sendcharlcd(str1[1]%10+0x30); setpos(8,0); sendcharlcd(str1[2]/100+0x30); sendcharlcd(str1[2]%100/10+0x30); sendcharlcd(str1[2]%10+0x30); setpos(12,0); sendcharlcd(str1[3]/100+0x30); sendcharlcd(str1[3]%100/10+0x30); sendcharlcd(str1[3]%10+0x30); setpos(16,0); sendcharlcd(str1[4]/100+0x30); sendcharlcd(str1[4]%100/10+0x30); sendcharlcd(str1[4]%10+0x30); for (unsigned int n=0;n<4;n++) { extern unsigned char str1[]; for (unsigned char a=0; a< str1[n]; a++) { PORTB |= (1<<7); _delay_ms(1000); PORTB &= ~(1<<7); _delay_ms(1000); //sendcharlcd(str1[n]); } _delay_ms(3000); } } //return 0; } Это код не в виде картинки. Пардон Нет. Один и тот же исходник на 328 работает, а на 2560 нет. И тот и другой вариант собирается без ошибок
-
Есть ли рабочие настройки компилятора и линкера для Atmega2560?
Душитель Гуся опубликовал тема в AVR
Здравствуйте! Программировал в среде Microchip(Atmel) Stidio микроконтроллер Atmega328p. Мне понравилось программировать в этой IDE. Также изучение аппаратной части МК мне заходит больше, чем оперирование Ардуиновскими командами. Но вот незадача: прошивка на Atmega328p работала корректно с оптимизациями 1 и больше(0-не работал), а на Atmega2560 с разными настройками оптимизациями и линкера работает некорректно. Написал проверочный код на At2560. Ситуация не менялась. 1)Проблема в том, что по каким-то причинам из тела цикла while(1) невозможно получить доступ к глобальным переменным(в частности к массиву данных). Если массив размещался в теле цикла while(1), то к нему можно было получить доступ, но только из оператора if или очень простой функции. 2)Если попробовать получить массив данных из сложной функции с циклом то ячейки массива были равны 255(я записывал значения поменьше) и это при том, что я размещал массив в while(1). Долго извращался с настройками компилятора и линкера, так и ничего путного не получилось. Пробовал программировать в IAR AVR и CodeVision AVR МК At2560. У меня даже светодиод зажечь не получилось. Немного поковырялся в настройках-ничего. Слишком много времени нужно на изучение всех параметров Компиля и Линка. Забил. Пробовал Eclipse с плагином AVR и компилем AVR GCC 12.1. Вроде чутка заработало, но мне удавалось зайти в эту среду только 1 раз после установки. Второй раз я не смог зайти после закрытия проги. Работоспособность 12.1 компиля не удалось оценить. Да и собирался проект в Eclipse через раз. Товарищи, если у кого-нибудь есть пример рабочих настроек для данного девайса, не проходите мимо. Для любых вышеперечисленных IDE или IDE, которое у вас. Или укажите на работоспособный тулчейн(с параметрами). Желательно с подробным гайдом по настройке. Ассемблер впадлу учить. Ниже приведён проверочный код из Microchip Studio. Есть участки: //------1(глобальные переменные) и //------2(тело цикла while(1)). Участки размещения массива str1. И ниже два проверочных участка: 1) Отправка символов на символьный дисплей. Эта часть выводит значения ячеек массива посимвольно(функция для выведения числа целиком не работает). 2) Светодиодный тест. Значения ячейки массива выводится морганием светодиода с задержкой 1 сек. Пауза между переключением ячеек 3 сек. Массив в глобальных переменных: на дисплее 255 и светодиод неустанно моргает с паузой в 1 сек. Массив в теле цикла while(1): работает на обоих участках. Если вывод массива на дисплей занести в цикл, то реальные значения ячеек не отобразятся. Что можно с этим сделать: поменять настройки в этой среде(у меня не получилось), подключить другой компиль в эту среду(это сложно, желательно подробный гайд), выбрать другой IDE, программировать на Ардуино? -
Какие например? Первичку мотал по проге "Exelent". Частота 100 кгц. Даже если снизить до 30, всеравно греется. Ток первичка расчитана под напряжение ККМ(380-410), а работала от 310В. В полевиках большой запас по напряжению и току. В шиме на sg3525 увеличивал номинал резистора dt, без изменений. Запускал мост без импульсника, точно так же грелись некоторые ключи. Наверное в таком случае они не должны греться. Я предполагаю, что есть сквозные токи в мосту(подключал лампу последовательно силовой схеме с импульсником и без) результат один и тот же греются ключи и лампа горит в пол-накала. Думаю дело в драйвере, хотел попробовать трансформаторную развязку. Или может дело в отсутствующем снаббере? Но вот почему ключи грелись на хх, а когда к импульснуку подводил нагрузку в 50 Вт, нагрев практически исчезал? Осцилографом пока не могу обзавестись.
-
Дайте пожалуйста готовую схему ккм на 1000-1500 ватт. Собираю ИИП. Готова первичная обмотка трансформатора. Шим контроллер на sg3525. А вот с драйвером проблемы. Он построен на ir2110 по схеме полный мост. На преобразователях с низким напряжением в первичной обмотке он хорошо работает, а с сетевым напряжения - не хорошо. Один из транзисторов полного моста дико греется на хх и в слабой нагрузке. Когда нагрузка в 50 вт, не греется. В чём здесь проблема? Может поменять на схему с трансформаторной развязкой?