Перейти к содержанию

Lcd Nokia 6610/6100 (Быстрая Очистка)


Рекомендуемые сообщения

Здравствуйте, в общем не получается ускорить работу данного дисплея. Уже даже делаю ассемблерные вставки, анализируя дизассемблерный код и все равно не получается ускорить процесс отрисовки.

Вот например код для очистки экрана

void nlcd_Clear(int color)
{
int i;
nlcd_SendCmd(LCD_PHILLIPS_RAMWR);
 for(i=0;i < 8713;i++)
{								
	 nlcd_SendData(color >> 4 );
	 nlcd_SendData(((color ) << 4) | ((color >> 8) ) );
	 nlcd_SendData(color );
 }
}

132*132 = 8713 - разрешение

Посылаю данные и команды таким образом

void nlcd_SendCmd(unsigned char c)
{
#asm
{
CBI 0x18,2
CBI 0x18,5
CBI 0x18,3
SBI 0x18,5
}
#endasm
SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);
SPDR = c;
while(!(SPSR & (1<<SPIF)));
SPCR = 0;
SPSR = 0;
CS_LCD_SET;
}
void nlcd_SendData(unsigned char c)
{
#asm
{
CBI 0x18,2
CBI 0x18,5
SBI 0x18,3
SBI 0x18,5
}
#endasm
SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);
SPDR = c;
while(!(SPSR & (1<<SPIF)));
SPCR = 0;
SPSR = 0;
CS_LCD_SET;
}

На 8 МГц по SPI (частота SCK 4 МГц) кажется вроде быстро, но, к сожалению, экран очищается так, что заметно глазом (не моментально).

Кто знает, как нибудь можно ли ускорить процесс отрисовки (также быстро отрисовывать изображение или хотя бы что нибудь как на оригинальной нокии) ??? :unknw: Или только повышать частоту передачи ? :unknw: И можно ли как нибудь сделать, чтобы пиксели сразу же устанавливались в какое то значение (то есть двойная буферизация как на компе: пока одно изображение показывается, второе рисуется, но только не на дисплее, а в памяти, как только в памяти нарисовалось, выводится на дисплей (устанавливаются сразу все пиксели)) :crazy:

ЗЫ а то элементарная очистка идет со скоростью 2-3 кадра в сек. Контроллер PCF8833

Изменено пользователем Vendein_RaZoR
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Короче, разве невозможно сделать двойную буферизацию на LCD NOKIA 6610 ?? То есть пока 1 кадр рисуется - второй выводится на дисплее ?? :unknw:

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

С чего Вы взяли, что невозможно ? Попробуйте сделать, вдруг получится.

Только вот не понятно, как таким образом Вы ускорите процесс прорисовки ?

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

С чего Вы взяли, что невозможно ? Попробуйте сделать, вдруг получится.

Только вот не понятно, как таким образом Вы ускорите процесс прорисовки ?

Что значит попробуйте ?))) Я у вас спрашиваю как это сделать ?))

А вообще мне кажется что никак невозможно сделать двойную буферизацию на данном виде дисплея, так как даже на оригинальной нокии если посмотреть на её работу, то наблюдаются "хвосты" во время различных анимаций, то есть изображение меняется не дискретно, а как бы плавно, последовательно. Все это из-за того что контроллер не поддерживает двойную буферизацию. У него есть 1 RAM память, в неё только пишем по SPI к примеру и он тут же выводит на дисплей последовательно. Не тот дисплей в общем.

Вообще и на остальных телефонах от нокии та же фигня. Правда на 6300 анимация уже не такая "хвостатая", но контроллер аналогичный и двойной буферизации тоже нет, но частоты уже выше.

Изменено пользователем Vendein_RaZoR
Ссылка на комментарий
Поделиться на другие сайты

Это не невозможно сделать, это ненужно, ибо :

не понятно, как таким образом Вы ускорите процесс прорисовки ?

Хотя, может я просто что-то не догоняю. Тогда разъясните....

Ссылка на комментарий
Поделиться на другие сайты

Хотя, может я просто что-то не догоняю. Тогда разъясните....

Ну типа на компе же есть такая технология как двойная буферизация. Хотя может от этого эффекта может и нет смысла на высоких частотах, но все же.

То есть имеется 2 буффера, пиксели на дисплее устанавливаются не последовательно по строкам или столбцам, а тут же, все пиксели привязаны к своим ячейкам в RAM и пока 1 буфер так вот параллельно на отрисовке, второй буфер в RAM памяти заполняется и когда он заполнился, далее устанавливаются параллельно (сразу же) все пиксели на дисплее. Не знаю конечно, может параллельная установка пикселей в портативных устройствах слишком затратна и приходится все выводить последовательно из RAM.

Просто если выводить все последовательно, то появляются всякие "хвосты" во время анимации или по-другому видно как перерисовывается изображение прямо на дисплее (на более низких частотах). На мониторе компьютера к примеру не видно как изображение перерисовывается при низком FPS, так как есть двойная буферизация, вот так вот.

Вообще я конечно ещё не пробовал что будет на 10 МГц SPI или на 12, если использовать STM32 (а это кажется уже самый максимум для доступных контроллеров, но не знаю насчет BitBang на STM что будет), то говорят что 20-30 кадров в сек получить можно, хотя не знаю насколько это правда пока.

http://kazus.ru/forums/showthread.php?t=96206

Изменено пользователем Vendein_RaZoR
Ссылка на комментарий
Поделиться на другие сайты

Кто знает, как нибудь можно ли ускорить процесс отрисовки...

...ЗЫ а то элементарная очистка идет со скоростью 2-3 кадра в сек. Контроллер PCF8833

А Вы каждый раз очищаете кадр, перед выводом нового?

Попробуйте слать команду 0x22 (all pixel off (DALO)).

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Делайте хоть пятерную буферизацию, но скорость дисплея и процессора Вы не опередите. Всё равно из буфера будет идти прорисовка последовательно. И скорость её будет ограничена скоростью железа.

Невозможно загнать буфер в дисплей одним мгновением.

Ссылка на комментарий
Поделиться на другие сайты

Невозможно загнать буфер в дисплей одним мгновением.

Ну а зачем тогда на компе в памяти монитора или в видеокарты там или ещё где двойная буферизация ? Наверное для того чтобы при малых FPS мы не видели как на экране следующий кадр перерисовывает предыдущий ? Некрасиво же получается. Скорости это не прибавляет, но визуально уже не так заметно что изображение сменяет другое.

Насчет таких малых дисплеев от телефонов не знаю, там вроде такого не реализовано, но в видеокартах или контроллерах мониторов или где то там, двойная буферизация имеется скорее всего именно за этим.

Согласитесь, ведь приятнее при низких FPS видеть не одно изображение рисующееся поверх другого, а меняющиеся мгновенно друг за другом картинки. Не знаю, возможно ли конечно такое, но тогда зачем на компе 2 буфера ? И на всех ли дисплеях все пиксели устанавливаются последовательно ? Неужели сразу моментально параллельно нельзя установить все пиксели предварительно загруженные в RAM ?

Кто знает, как нибудь можно ли ускорить процесс отрисовки...

...ЗЫ а то элементарная очистка идет со скоростью 2-3 кадра в сек. Контроллер PCF8833

А Вы каждый раз очищаете кадр, перед выводом нового?

Попробуйте слать команду 0x22 (all pixel off (DALO)).

DALO does not change the data stored in the display RAM.

Странная очистка получается ))) Или вы имеете ввиду чтоб не наблюдать перерисовки ? Просто я очищаю заполнением пикселей одним цветом последовательно (а по-другому и никак, если захотелось очистить цветом)

Ну в принципе идея тоже неплохая, чтобы выключать пиксели во время заполнения RAM. То тогда дисплей мигать начинает и это куда заметнее. Нужно чтоб на время отрисовки картинка на дисплее хотя бы зафиксировалась, а когда RAM заполнится, то изображение сменится. Тоже самое что и Pixels on/off только например Pixels store/restore что-нибудь в этом духе )))

Изменено пользователем Vendein_RaZoR
Ссылка на комментарий
Поделиться на другие сайты

Вот например код для очистки экрана

void nlcd_Clear(int color)
{
int i;
nlcd_SendCmd(LCD_PHILLIPS_RAMWR);
 for(i=0;i < 8713;i++)
{								
	 nlcd_SendData(color >> 4 );
	 nlcd_SendData(((color ) << 4) | ((color >> 8) ) );
	 nlcd_SendData(color );
 }
}

У вас для очистки одного пикселя, три раза вызывается функция nlcd_SendData. Измените функцию, что-бы достаточно было вызвать ее один раз, и у вас значительно увеличится скорость очистки и рисования.

Ссылка на комментарий
Поделиться на другие сайты

Вот например код для очистки экрана

void nlcd_Clear(int color)
{
int i;
nlcd_SendCmd(LCD_PHILLIPS_RAMWR);
 for(i=0;i < 8713;i++)
{								
	 nlcd_SendData(color >> 4 );
	 nlcd_SendData(((color ) << 4) | ((color >> 8) ) );
	 nlcd_SendData(color );
 }
}

У вас для очистки одного пикселя, три раза вызывается функция nlcd_SendData. Измените функцию, что-бы достаточно было вызвать ее один раз, и у вас значительно увеличится скорость очистки и рисования.

Точно, спасибо за совет )) Но выигрыша думаю будет не так много. Меня все же больше не столько скорость волнует, сколько возможность сохранять состояние пикселей на дисплее пока в RAM пишутся новые данные.

Изменил отрисовку 1 функцией для посылки сразу 3х байтов

void nlcd_SendDataByte3(unsigned char a,unsigned char b,unsigned char c)
{
#asm
{
CBI 0x18,2
}
#endasm
//First byte
#asm
{
CBI 0x18,5
SBI 0x18,3
SBI 0x18,5
}
#endasm
SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);
SPDR = a;
while(!(SPSR & (1<<SPIF)));
SPCR = 0;
SPSR = 0;
//Second byte
#asm
{
CBI 0x18,5
SBI 0x18,3
SBI 0x18,5
}
#endasm
SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);
SPDR = b;
while(!(SPSR & (1<<SPIF)));
SPCR = 0;
SPSR = 0;
//Third byte
#asm
{
CBI 0x18,5
SBI 0x18,3
SBI 0x18,5
}
#endasm
SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);
SPDR = c;
while(!(SPSR & (1<<SPIF)));
SPCR = 0;
SPSR = 0;
#asm
{
SBI 0x18,2
}
#endasm
}

И теперь

void nlcd_Clear(int color)
{
int i;
nlcd_SendCmd(LCD_PHILLIPS_PASET); // Команда адреса страницы RAM
nlcd_SendDataByte(0);	 // Старт
nlcd_SendCmd(LCD_PHILLIPS_CASET);
nlcd_SendDataByte(0);	 //	
nlcd_SendCmd(LCD_PHILLIPS_RAMWR);
 for(i=0;i < 8713;i++)
{								
	 nlcd_SendDataByte3(color >> 4,((color ) << 4) | ((color >> 8) ) ,color );
 }		
}

Но все равно анимация мелькает из-за очистки дисплея как и раньше и FPS может где-то 5-8 кадров в секунду. Видно частоту придется поднимать, так как SPI щас стоит на 4 МГц

Кто нибудь выжимал вообще максимальную частоту кадров на 4 МГц SPI хотя бы ??

Изменено пользователем Vendein_RaZoR
Ссылка на комментарий
Поделиться на другие сайты

Короче, вот такой вот код на отрисовку идет

nlcd_Clear(BLACK);
 nlcd_Box(20, 20, 40, 40, 1, GREEN);	
 delay_ms(100);			
	 nlcd_Clear(BLACK);
	 nlcd_Box(21, 21, 41, 41, 1, GREEN);
	 delay_ms(100);						
	 nlcd_Clear(BLACK);
	 nlcd_Box(22, 22, 42, 42, 1, GREEN);	
	 delay_ms(100);
		 nlcd_Clear(BLACK);
 nlcd_Box(23, 23, 43, 43, 1, GREEN);	
	 delay_ms(10);				
	 nlcd_Clear(BLACK);
	 nlcd_Box(24, 24, 44, 44, 1, GREEN);
	 delay_ms(100);						
	 nlcd_Clear(BLACK);
	 nlcd_Box(25, 25, 45, 45, 1, GREEN);
	 delay_ms(100);
		 nlcd_Clear(BLACK);
 nlcd_Box(26, 26, 46, 46, 1, GREEN);	
	 delay_ms(100);				
	 nlcd_Clear(BLACK);
	 nlcd_Box(27, 27, 47, 47, 1, GREEN);
	 delay_ms(100);						
	 nlcd_Clear(BLACK);
	 nlcd_Box(28, 28, 48, 48, 1, GREEN);
	 delay_ms(100);

Вот что получается при:

delay_ms(0);

delay_ms(10);

delay_ms(100);

Разве так должно быть вообще ? Или это норма и быстрее только если частоту поднять ?

Вот что на осциллограмме, я выделил курсорами передачу байта по SPI на 4 МГц (SCK). Видно, что 1 такт такой большой, потому что программно делается.

IsxTQ6o2fn4.jpg

И быстрее никак на 8 МГц контроллера. То есть самое быстрое - это когда экран очищается за 50-60 мс. То есть на тех видео это получается 10-20 FPS ??? :unknw:

Изменено пользователем Vendein_RaZoR
Ссылка на комментарий
Поделиться на другие сайты

В общем, друзья, я выжал максимум...

void nlcd_Clear(int color)
{
int i=0;
unsigned char a = (color >> 4);
unsigned char b = ((color ) << 4) | ((color >> 8) );
unsigned char c = color;
nlcd_SendCmd(LCD_PHILLIPS_PASET); // Команда адреса страницы RAM
nlcd_SendDataByte(0);	 // Старт
nlcd_SendDataByte(131);
nlcd_SendCmd(LCD_PHILLIPS_CASET);
nlcd_SendDataByte(0);
nlcd_SendDataByte(131);	 //	
nlcd_SendCmd(LCD_PHILLIPS_RAMWR);
 for(i=0;i < 8713;i++)
{								
#asm
{
CBI 0x18,2
}
#endasm
//First byte
#asm
{
CBI 0x18,5
SBI 0x18,3
SBI 0x18,5
}
#endasm
SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);
SPDR = a;
while(!(SPSR & (1<<SPIF)));
SPCR = 0;
SPSR = 0;
//Second byte
#asm
{
CBI 0x18,5
SBI 0x18,3
SBI 0x18,5
}
#endasm
SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);
SPDR = b;
while(!(SPSR & (1<<SPIF)));
SPCR = 0;
SPSR = 0;
//Third byte
#asm
{
CBI 0x18,5
SBI 0x18,3
SBI 0x18,5
}
#endasm
SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);
SPDR = c;
while(!(SPSR & (1<<SPIF)));
SPCR = 0;
SPSR = 0;
#asm
{
SBI 0x18,2
}
#endasm
 }		
}

На 8 МГц контроллера и 4 МГц SPI удалось выжать тот максимум который только возможно и он равен 5-6 кадрам в секунду. Больше, думаю, не выйдет вовсе на 8 МГц.

Вот как передаются данные

x_efH4RGQXg.jpg

А вот код передачи

while(1)
{
	 nlcd_Clear(BLACK);
 // nlcd_Box(20, 20, 40, 40, 1, GREEN);	
 delay_ms(100);
nlcd_Clear(WHITE);
 // nlcd_Box(20, 20, 40, 40, 1, GREEN);	
 delay_ms(100);				
}

Если частоту поднимать для SPI где-нибудь в 2.5-3 раза, то соответственно максимально можно только получить 15-18 кадров в секунду. На STM32, думаю, будет тоже самое. На форуме том, люди получали 21-22 кадра в секунду, может и это предел для наиболее известных контроллеров...

Не знаю, подойдет ли такая частота для проигрывания видео форматов типа MPEG или 3GP, думаю что для 3GP точно пойдет, ибо на одной нокии с таким дисплеем была и камера к тому же.

Изменено пользователем Vendein_RaZoR
Ссылка на комментарий
Поделиться на другие сайты

Для видео лучше использовать дисплей с параллельной шиной, можно добиться гораздо больших скоростей. Сейчас масса китайских дисплеев с 16 битной, параллельной шиной.

Ссылка на комментарий
Поделиться на другие сайты

Согласитесь, ведь приятнее при низких FPS видеть не одно изображение рисующееся поверх другого, а меняющиеся мгновенно друг за другом картинки.
Соглашусь.

Но как Вы мгновенно можете вывести из своего контроллера в дисплей картинку ? Пусть это будет хоть 1 буфер, хоть 10. Как ? Если ни интерфейс ни сам контроллер не позволит этого.

Для этого буферизация должна быть в самом дисплее, который аппаратно будет выводить буфер максимально быстро.

Ссылка на комментарий
Поделиться на другие сайты

Я в АВРах не силён, но мне почему-то кажется, что вот эти строки :

SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);

отвечают за инициализацию SPI и их повторять в цикле - ни к чему.

Ссылка на комментарий
Поделиться на другие сайты

Для видео лучше использовать дисплей с параллельной шиной, можно добиться гораздо больших скоростей. Сейчас масса китайских дисплеев с 16 битной, параллельной шиной.

Можно по-подробнее какие есть такие дисплеи ?

Я в АВРах не силён, но мне почему-то кажется, что вот эти строки :

SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (1<<SPI2X);

отвечают за инициализацию SPI и их повторять в цикле - ни к чему.

К чему, потому что 9-битный SPI по-другому никак не реализовать, только как устанавливать 1 бит программно, а потом включать SPI и передавать 8 бит данных по нему и потом отключать SPI и следующий бит все делать заново.

Изменено пользователем Vendein_RaZoR
Ссылка на комментарий
Поделиться на другие сайты

Все же проблема осталась в быстрой очистке. Дисплей при активном использовании очистки при смене кадра, к примеру в анимации, изображение начинает мелькать (при 15 кадров в секунду). Как можно сделать очистку быстрее или вовсе избежать полной очистки дисплея чтобы избежать мелькания (как на тех видео выше) ? Я пока только выжал 17 кадров в секунду на 11 МГц SPI

В общем понял я почему такие мелькания получаются. Надо делать буферизацию дополнительную на контроллере, ибо очистка цветом, потом рисование, неизбежно вызывает мелькания на дисплее хоть при какой частоте кадров.

Идея такая, чтобы сначала все данные о изображение конечном помещать в буфер во флеше контроллера и потом, оттуда, выводить уже в контроллер дисплея. То есть готовая картинка. Так мельканий не будет. Че то только щас дошло ... :crazy: Правда памяти займет, придется отдельную флешку подключать.

Изменено пользователем Vendein_RaZoR
Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...
У вас для очистки одного пикселя, три раза вызывается функция nlcd_SendData.
Вообще-то 3 вызова на 2 пикселя, а не на 1.
Дисплей при активном использовании очистки при смене кадра, к примеру в анимации, изображение начинает мелькать
Попробуйте не стирать экран полностью, а отрисовывать предыдущую картинку цветом фона, это может оказаться быстрее.

двойная буферизация используется чтобы не было видно как куски картинки отрисовываются один за другим на пустом фоне. Для этого они отрисовываются на заднем буфере, а потом попиксельно копируются на передний (иногда просто меняется указатель, но в данном случае такое сделать не выйдет). Ну и у AVR все равно не хватит памяти хранить весь буфер. В нем, простите, 17 тысяч пикселей, даже если по биту на каждый это более 2кБайт. Впрочем, некоторый контроллеры позволяют подключить внешнее ОЗУ.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Все предложенные к рассмотрению источники питания работают примерно по одному принципу: сетевое напряжение выпрямляется, фильтруется (получаем чуть больше 300 вольт постоянного), затем преобразуется снова в переменное, но уже на частотах в несколько десятков килогерц, понижается на трансформаторе и снова выпрямляется. За счёт высокой частоты преобразования используется трансформатор на ферритовом, а не на стальном, сердечнике, гораздо меньших габаритов и стоимости. Минусы: значительное усложнение схемы блока и вероятность возникновения различных помех от него. Модули управления (кроме первого) также являются импульными преобразователями, с теми же достоинствами и недостатками. Если нужно по быстрому собрать некое подобие ЛБП, то уж лучше брать модуль вроде этого. Ну и блок питания к нему соответствующий. Но не очень понятно, какой практический опыт можно получить от соединения готовых модулей парой проводов.  
    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
    • Согласен, очень криво объяснил. Это работа трёх вольтовой линии, просто на диод шотки сдвоенный, на один анод приходит сигнал напрямую с трансформатора, а на второй через дроссель. Вольт/деление 5 вольт в клетке, тайминг по моему 10 МС. Третья фотография это сигнал на катодах уровень земли ровно по центру экрана. Но все линии по итогу в порядке 3.3 в, 5, в, 12 в и -12 в. Нагрузить все линии не могу сразу ,так как тут же выгорают транзисторы (имеется нагрузка 250 ватт по 10 ампер на каждую линию за исключением-12в), поэтому нагружаю 3.3 вольтовую линию на 10 ампер,  подключаю переменный резистор 50 ватт на 15 ом на 5 вольтовую линию и постепенно довожу до той той картины с перекосом (это гдето  50 ватт общее). По поводу микросхемы, вверху имеется скрин где между импульсами проскакивает мини импульс, если так можно сказать, он проскакивает и на одной  и на второй ноге (7,8). Микросхема не tl 494, а lw4933/abx942.1/c9421646. Далее они приходят на базы транзисторов 945g  коллекторы этих транзисторов соединены с  выводами трансформатора. Просто схема типовая, легче мне кажется просто привести фото самого блока, для тех кто разбирается будет гораздо информативне.  Диод шотки по 12 вольтовой линии был подгоревший, заменил на донора. Приводить скрины не буду что бы не захламлять тему. В итоге, пока все так же, при достижении определенной нагрузки суммарно где-то 50 ватт, появляется этот "выброс и перекос". По этому имеются мысли на два варианта, это микросхема , этот мини импульс между периодами, на низкой нагрузке особо не влияет, но при достижении определенной приводит с самовозбуждению входной цепи и непроизвольному открытию транзистора нижнего плеча. Либо дело в "горячей части", плавающий дефект в обвязке силовых ключей.  Спасибо за ответ.
    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
×
×
  • Создать...