Jump to content
eestyk

Не работает ШИМ на PIC

Recommended Posts

Имеется микроконтроллер dsPIC30F5011. Хочу реализовать на нём ШИМ через Output Compare Module, так как у этого модуля есть как раз режим PWM. Всё проинициализировал, задал период и коэффициент заполнения ШИМ (duty cycle - 50%), выбрал Timer2. На соответствующей ноге тыкаюсь осциллографом, ничего нет. Не могу понять в чём проблема. Вроде по даташиту настроил правильно.

	#define PERIOD_PWM		12484

	#define PERIOD_PWM_div2	6242

	WriteTimer2 (0);
	OpenTimer2 (T2_ON & T2_GATE_OFF & T2_IDLE_STOP & T2_PS_1_8 & T2_32BIT_MODE_OFF & T2_SOURCE_INT, PERIOD_PWM);
	ConfigIntTimer2 (T2_INT_PRIOR_5 & T2_INT_ON);

	OpenOC3(OC_IDLE_STOP & OC_TIMER2_SRC & OC_PWM_FAULT_PIN_ENABLE, PERIOD_PWM, PERIOD_PWM_div2);
	ConfigIntOC3(OC_INT_PRIOR_0 & OC_INT_ON);

void __attribute__((interrupt, auto_psv)) _T2Interrupt(void) {
	IFS0bits.T2IF = 0;					// Clear Timer interrupt flag 
	Nop();
}

void __attribute__((interrupt, auto_psv)) _OC3Interrupt(void) {
	IFS1bits.OC3IF = 0;			// Clear interrupt flag
}

 

dsPic30F5011-5013.pdf

Share this post


Link to post
Share on other sites

Полный код показать можете, а так непонятно как настроены порты, да и спец регистры pwm

Share this post


Link to post
Share on other sites

Полностью код слишком длинный.

	// PORTB 
	#define	Iout2_adc		ADCBUF0 		//PORTBbits.RB0		// Вход аналоговый от измерителя тока через нагрузку 1
	#define	Iout1_adc		ADCBUF1			//PORTBbits.RB1		// Вход аналоговый от измерителя тока через нагрузку 2
	#define	Iout4_adc		ADCBUF2			//PORTBbits.RB2		// Вход аналоговый от измерителя тока через нагрузку 3
	#define	Iout3_adc		ADCBUF3			//PORTBbits.RB3		// Вход аналоговый от измерителя тока через нагрузку 4
	#define	Iout6_adc		ADCBUF4			//PORTBbits.RB4	
	#define	Iout5_adc		ADCBUF5			//PORTBbits.RB5	
	#define	Iout8_adc		ADCBUF6			//PORTBbits.RB8	
	#define	Iout7_adc		ADCBUF7			//PORTBbits.RB9	
	#define	Iout10_adc		ADCBUF8			//PORTBbits.RB10	
	#define	Iout9_adc		ADCBUF9			//PORTBbits.RB11	
	#define	Iext_adc		ADCBUFA			//PORTBbits.RB12	
	#define	VccCAN_adc		ADCBUFB			//PORTBbits.RB13	
	#define	VccL_adc		ADCBUFC			//PORTBbits.RB14	
	#define	VccA_adc		ADCBUFD			//PORTBbits.RB15	
	#define	Adr4			PORTBbits.RB6		// бит адреса блока
	#define	Adr3			PORTBbits.RB7		// бит адреса блока
#define	ziTRISB	0b1111111111111111 			//настройка направления порта на вход

	//PORTD
	#define	Vout1_d		PORTDbits.RD0		// напряжение на входе 1
	#define	Vout2_d		PORTDbits.RD1		// напряжение на входе 1
	#define	Vout3_d		PORTDbits.RD2		// PWM module as output
	#define	Vout4_d		PORTDbits.RD3		// напряжение на входе 3
	#define	Vout5_d		PORTDbits.RD4		// напряжение на входе 4
	#define	Vout6_d		PORTDbits.RD5		// напряжение на входе 5
	#define	Vout7_d		PORTDbits.RD6		// напряжение на входе 6
	#define	Vout8_d		PORTDbits.RD7		// напряжение на входе 7
	#define	Vout9_d 	PORTDbits.RD8		// напряжение на входе 8
	#define	Vout10_d	PORTDbits.RD9		// напряжение на входе 9

	#define	Input1		PORTDbits.RD10		// Вход 1 внешний
	#define	Input2		PORTDbits.RD11		// Вход 2 внешний
	#define	Input3		PORTCbits.RC1		// Вход 3 внешний
	#define	Input4		PORTCbits.RC2		// Вход 4 внешний
	#define	Input5		PORTCbits.RC13		// Вход 5 внешний
	#define	Input6		PORTCbits.RC14		// Вход 6 внешний
	#define	Input7		PORTFbits.RF4		// Вход 7 внешний
	#define	Input8		PORTFbits.RF5		// Вход 8 внешний
	#define	Adr1		PORTFbits.RF2		// бит адреса блока
	#define	Adr2		PORTFbits.RF3		// бит адреса блока
	#define	X1Ctrl		PORTFbits.RF6		// наличие разъема адреса?
#define	ziTRISD	0b1111111111111011			//настройка направления порта на вход
#define	ziTRISC	0b1111111111111111			//настройка направления порта на вход
#define	ziTRISF	0b1111111111111111			//настройка направления порта на вход

	// PORTG 

	#define	Sw1_ctrl		PORTGbits.RG0		// Выход 1
	#define	Sw2_ctrl		PORTGbits.RG1		// Выход 2
	#define	Sw3_ctrl		PORTGbits.RG2		// Выход 3
	#define	Sw4_ctrl		PORTGbits.RG3		// Выход 4
	#define	Sw5_ctrl		PORTGbits.RG6		// Выход 5
	#define	Sw6_ctrl		PORTGbits.RG7		// Выход 6
	#define	Sw7_ctrl		PORTGbits.RG8		// Выход 7
	#define	Sw8_ctrl		PORTGbits.RG9		// Выход 8
	#define	Sw9_ctrl		PORTGbits.RG12		// Выход 9
	#define	Sw10_ctrl		PORTGbits.RG13		// Выход 10
	#define	Ready_ctrl		PORTGbits.RG14		// Выход готовность
#define	ziTRISG	0b1000110000110000 				//настройка направления порта на выход

 

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

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

Share this post


Link to post
Share on other sites
4 часа назад, eestyk сказал:

слишком длинный

Есть такая замечательная вещь как упаковщики.

Share this post


Link to post
Share on other sites
                     

Литиевые батарейки Fanso в беспроводных датчиках пожарно-охранной сигнализации

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

Подробнее...

Прошу прощения за поздний ответ. При вызове функции в регистры OC3RS записывается период ШИМ, а в регистр OC3R значение скважности ШИМ. Собственно так и получается частота я так понимаю. А что за модуль следящий на порту?

void OpenOC3(unsigned int config, unsigned int value1, unsigned int value2)
{
    OC3CONbits.OCM = 0; /* turn off OC before switching to new mode */
    OC3RS = value1;     /* assign value1 to OCxRS Secondary Register */
    OC3R = value2;      /* assign value2 to OCxR Main Register*/  
    OC3CON = config;    /* assign config to OCxCON Register*/
}

 

Share this post


Link to post
Share on other sites

Период ШИМ записывают в регистр пересчета ТАЙМЕРА связанного с этим ШИМом (PRx), где х - номер ТАЙМЕРА, то есть у Вас PR2. А в регистры OCxR и OCxRS  (тут х - номер модуля Output Compare) записывают состояние счетчика при срабатывании ШИМа. В зависимости от выбранного режима модуля ШИМ применяется либо один из них, либо оба. Обычно младшие биты OCxCON<OCM> и определяют режим.

Читаем референсный мануал на семейство - раздел 14 :  http://ww1.microchip.com/downloads/en/devicedoc/70046c.pdf

Edited by my504

Share this post


Link to post
Share on other sites

Спасибо, разобрался, ШИМ заработал.Проблемы была как раз в том, что я не задал период ШИМа путём записи значения в регистр PR2.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Павел Лопатин
      Добрый день!
      Подскажите, пожалуйста, можно ли вынести переменный резистор 16K1-B10K, L20KC, 10 кОм с ШИМ регулятора на отдельную плату? 
      Какие провода лучше использовать? На какое расстояние можно вынести (длина провода) и изменятся ли от этого характеристики? (все-таки, как я понимаю, появится дополнительное сопротивление от провода)
      ШИМ покупной в RDC2-0024 - фото и схема в аттаче
      DOC002726141.pdf
    • By Kirillius Labutin
      Добрый день!
      Имеется готовый лазерный модуль с драйвером (стабилизатор тока и, наверное, напряжения). 
      Хочу регулировать яркость лазера с помощью ШИМ с МК, гугл сказал что лучший вариант - шунтирование лазера. Но драйвер устроен таким образом, что в нём с питанием напрямую не связан ни "+" ни земля лазера. Набросал такую схемку, чтобы реализовать это через оптопару.

      Внимание, вопрос)
      1. Заработает ли такая схема?
      2. Какой посоветуете транзистор Q1 и оптопару? Макс. напряжение в цепи - 5В, ток - 0.5А Я думаю что-нибудь вроде IRLL014TRPBF
      3. Какой выбрать номинал резистора R1 для разряда Q1? Частота ШИМ планируется в районе 1кгц.
    • By SigmA
      Доброго времени суток всем. Для своей новой жены захотелось мне сделать сердечко на atmega8, с кучей эффектов и т.д. Так вот, разные мигалки-переключалки св-диодов я написал, использовал delay. Но мне этого стало мало и я решил подключить шим программный. Отдельно от всей программы шим работает как нужно, так же и переключалки работают отдельно от шим, но вот когда я соединяю это всё воедино то работает только шим и не переходит дальше по коду.Я так понимаю, что таймеры и delay вместе работать не могут? Но если могут, то как?
      #include <mega8.h> #include <delay.h> #define GREEN PORTC.1=PORTC.2=PORTC.3=PORTC.0 unsigned char i, s,; unsigned char green=255; unsigned char green_b; //переменные, для буферизации значений скважности ШИМ unsigned char count; //переменная- счетчик вызовов обработчика прерываний unsigned char temp=1; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { count++; if (count == 0){ //если счетчик переполнился и принял значение 0 green_b = green; GREEN = 1; } if (green_b == count) { GREEN = 0;} } void main(void) { PORTC=0x0F; //конфигурируем порт DDRC=0x0F; TCCR0=0x01; //настраиваем таймер TCNT0=0x00; TIMSK=0x01; //разрешаем генерацию прерывания по переполнению таймера T0 #asm("sei") //глобально разрешаем прерывания while (1) { for (i=0;i<3;i++) { if (temp==1) {if (green < 255) green += 1; else temp = 2;} if (temp==2) {if (green > 0) green -= 1; else temp = 1;} delay_ms(1000); }; s=7; for (i=0;i<=s;i++) { PORTC.0=1; delay_ms(200); PORTC.0=0; PORTC.1=1; delay_ms(200); PORTC.1=0; PORTC.2=1; delay_ms(200); PORTC.2=0; PORTC.3=1; delay_ms(200); PORTC.3=0; } for (i=0;i<=s;i++) { PORTC.3=1; delay_ms(200); PORTC.3=0; PORTC.2=1; delay_ms(200); PORTC.2=0; PORTC.1=1; delay_ms(200); PORTC.1=0; PORTC.0=1; delay_ms(200); PORTC.0=0; } for (i=0;i<=s;i++) { PORTC.3=1; delay_ms(200); PORTC.2=1; delay_ms(200); ; PORTC.1=1; delay_ms(200); PORTC.0=1; delay_ms(200); PORTC.3=0; delay_ms(200); PORTC.2=0; delay_ms(200); PORTC.1=0; delay_ms(200); PORTC.0=0; delay_ms(200); } for (i=0;i<=s;i++) { PORTC.0=1; delay_ms(200); PORTC.1=1; delay_ms(200); ; PORTC.2=1; delay_ms(200); PORTC.3=1; delay_ms(200); PORTC.0=0; delay_ms(200); PORTC.1=0; delay_ms(200); PORTC.2=0; delay_ms(200); PORTC.3=0; delay_ms(200); } for (i=0;i<=s;i++) { PORTC=0x01; delay_ms(200); PORTC=0x02; delay_ms(200); PORTC=0x04; delay_ms(200); PORTC=0x08; delay_ms(200); PORTC=0x09; delay_ms(200); PORTC=0x0A; delay_ms(200); PORTC=0x0C; delay_ms(200); PORTC=0x0D; delay_ms(200); PORTC=0x0E; delay_ms(200); PORTC=0x0F; delay_ms(200); PORTC=0x07; delay_ms(150); PORTC=0x0B; delay_ms(200); PORTC=0x03; delay_ms(250); PORTC=0x05; delay_ms(300); PORTC=0x09; delay_ms(350); PORTC=0x01; delay_ms(400); PORTC=0x02; delay_ms(200); PORTC=0x04; delay_ms(200); PORTC=0x08; delay_ms(200); PORTC=0x00; delay_ms(200); } for (i=0;i<=5;i++) { PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(150); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(150); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(1000); } } }  
    • By mr_smit
      Вынес то что не получается в упрощенной форме в отдельный проект. Среда разработки CooCox 1.7.8, микроконтроллер STM32F103C8T6.
      Нужно раз в ~100 мсек формировать на ножке МК, например,такую последовательность:

      Стартовую длительность формирует таймер, в первом же своем прерывании по совпадению активирует DMA и дальше уже DMA по запросу таймера загружает значение CCR из массива. Что то похожее на управление светодиодами WS2812B. То что я сочинил выдает на пин:

      Но только один раз при первом вызове. При последующих вызовах данные из массива выдаются без первоначальной длительности в 150 мкс.
      Не могу найти ошибку. 
       
      #include <stm32f10x.h> #include <stm32f10x_conf.h> #include <stm32f10x_gpio.h> #include <stm32f10x_rcc.h> #include <stm32f10x_tim.h> #include <stm32f10x_dma.h> GPIO_InitTypeDef PIN; TIM_TimeBaseInitTypeDef TIM_Config; TIM_OCInitTypeDef TIM_OCConfig; DMA_InitTypeDef DMA_Setting; uint8_t Test_Buf[] = {15,30,30,30,15}; void delay_ms(uint32_t ms) { volatile uint32_t nCount; RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq (&RCC_Clocks); nCount = (RCC_Clocks.HCLK_Frequency/10000)*ms; for (; nCount != 0; nCount--); } void Init_GPIO(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); PIN.GPIO_Pin = GPIO_Pin_11; // PA11 -> TIM1 Channel4 PIN.GPIO_Mode = GPIO_Mode_AF_PP; PIN.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &PIN); } void Init_TIM_Transmit(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); TIM_TimeBaseStructInit(&TIM_Config); // настройки по дефолту TIM_Config.TIM_Prescaler = 72-1; // Запускаем таймер на тактовой частоте 1 MHz (72000000/(72-1)) TIM_Config.TIM_Period = 150-1; // Период - 150 мкс TIM_Config.TIM_ClockDivision = 0; // частоту дополнительно не делим TIM_Config.TIM_CounterMode = TIM_CounterMode_Up; // считаем вверх TIM_TimeBaseInit(TIM1, &TIM_Config); // Инициализируем TIM1 TIM_OCStructInit(&TIM_OCConfig); // настройки по дефолту TIM_OCConfig.TIM_OCMode = TIM_OCMode_PWM1; // Конфигурируем как ШИМ (выравнивание по границе) TIM_OCConfig.TIM_OutputState = TIM_OutputState_Enable; // Включаем выход TIM_OCConfig.TIM_Pulse = 0; // CCR до старта пока нулевой TIM_OCConfig.TIM_OCPolarity = TIM_OCPolarity_High; // Полярность TIM_OCConfig.TIM_OCIdleState = TIM_OCIdleState_Reset; // состояние выхода по совпадению CCR (сброс) TIM_OC4Init(TIM1, &TIM_OCConfig); // Инициализируем 4-й выход таймера, это PA11 TIM_ARRPreloadConfig(TIM1,ENABLE); // Предзагрузка периода (ARR) TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable); // Предзагрузка длины импульса CCR 4-го канала // (даем досчитать до конца и только потом значение меняется на новое) TIM_DMACmd(TIM1,TIM_DMA_CC4,DISABLE); // выключаем пока запрос к DMA от таймера TIM1 по достижении CCR) TIM_CtrlPWMOutputs(TIM1, ENABLE); // включаем выходы (это только для TIM1) TIM_CCxCmd(TIM1,TIM_Channel_4,TIM_CCx_Enable); // разрешаем таймеру управлять выводом PA11 TIM_ITConfig(TIM1, TIM_IT_CC4, DISABLE); // запрещаем пока таймеру генерировать прерывание по совпадению NVIC_EnableIRQ(TIM1_CC_IRQn); // разрешаем прерывания TIM_Cmd(TIM1, DISABLE); // Выключаем таймер (пока ждем) } void TIM1_CC_IRQHandler(void) // прошло 130 мкс { if (TIM_GetITStatus(TIM1, TIM_IT_CC4) != RESET) { // по совпадению TIM_ClearITPendingBit(TIM1,TIM_IT_CC4); // сбрасываем флаг прерывания TIM1 по совпадению } NVIC_EnableIRQ(TIM1_CC_IRQn); // выключаем прерывания от таймера TIM_ITConfig(TIM1, TIM_IT_CC4, DISABLE); // TIM1->ARR = 40-1; // устанавливаем период 40 мкс TIM1->CCR4 = Test_Buf[0]; // ширину из массива для следующего импульса DMA1_Channel4->CNDTR = 4; // длина данных для DMA на 1 меньше т.к. уже установили выше 1 элемент TIM_DMACmd(TIM1,TIM_DMA_CC4,ENABLE); // разрешаем таймеру делать запрос к DMA по совпадению CCR DMA_Cmd(DMA1_Channel4, ENABLE); // включаем DMA } void Init_DMA(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); // включаем тактирование DMA1 DMA_Setting.DMA_PeripheralBaseAddr = (uint32_t) &TIM1->CCR4; // куда копировать DMA_Setting.DMA_MemoryBaseAddr = (uint32_t) &Test_Buf[1]; // что копировать DMA_Setting.DMA_DIR = DMA_DIR_PeripheralDST; // копируем в периферию (Peripheral Destination, точка назначения - периферия) DMA_Setting.DMA_BufferSize = 0; // количество передаваемых данных DMA_Setting.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // адрес периферии постоянный DMA_Setting.DMA_MemoryInc = DMA_MemoryInc_Enable; // адрес в памяти увеличиваем DMA_Setting.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; // периферия 16 бит DMA_Setting.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; // массив 8 бит DMA_Setting.DMA_Mode = DMA_Mode_Normal; // режим обычный DMA_Setting.DMA_Priority = DMA_Priority_Medium; // приоритет средний DMA_Setting.DMA_M2M = DMA_M2M_Disable; // MemoryToMemory откл. DMA_Init(DMA1_Channel4, &DMA_Setting); // TIM1_CH4 относится к 4-му каналу DMA1 DMA_ITConfig(DMA1_Channel4, DMA_IT_TC, ENABLE); // настраиваем прерывание по окончанию передачи NVIC_EnableIRQ(DMA1_Channel4_IRQn); // включаем прерывания от 4-го канала DMA1 DMA_Cmd(DMA1_Channel4, DISABLE); // пока выключаем 4-ый канал DMA1 } void DMA1_Channel4_IRQHandler(void) // закончили передавать { if (DMA_GetITStatus(DMA1_IT_TC4) != RESET) { // по совпадению DMA_ClearITPendingBit(DMA1_IT_TC4); // сбрасываем флаг прерывания DMA1 Channel4 transfer complete } if (TIM_GetITStatus(TIM1, TIM_IT_CC4) != RESET) { // по совпадению TIM_ClearITPendingBit(TIM1,TIM_IT_CC4); // сбрасываем флаг прерывания TIM1 на всякий случай } TIM1->ARR = 150-1; // вновь настраиваем на период 150 мкс TIM1->CCR4 = 0; // и ждем следующею передачу TIM1->CNT = 0; // TIM_DMACmd(TIM1,TIM_DMA_CC4,DISABLE); // всё выключаем DMA_Cmd(DMA1_Channel4, DISABLE); // TIM_Cmd(TIM1, DISABLE); // TIM_ITConfig(TIM1, TIM_IT_CC4, DISABLE); // TIM_CCxCmd(TIM1,TIM_Channel_4,TIM_CCx_Disable); } int main(void) { Init_GPIO(); Init_TIM_Transmit(); Init_DMA(); delay_ms(1000); while(1) { TIM1->CCR4 = 130-1; // до включения линия удерживается в 0 (CCR=0) TIM_ITConfig(TIM1, TIM_IT_CC4, ENABLE); TIM_CCxCmd(TIM1,TIM_Channel_4,TIM_CCx_Enable); TIM_Cmd(TIM1, ENABLE); delay_ms(100); } }  
      TEST_TIM_DMA.zip
  • Сообщения

    • Капрон суперклей не берёт! Надо попробовать.
    • Отличная идея - всех профи в закрытый клуб. Но идею , для справедливости, нужно дополнить -  пусть флудеры и дилетанты создадут свой закрытый клуб, куда для профи вход  будет также закрыт. Вот только тогда на форуме и воцариться равноправие. А иначе... профи,  окуевшие в своём высоколобом клубе от междусобных заумных  дебатов с себе подобными, будут постоянно залазить в темы к начинающим и дилетантам, чтобы  почитать им нотации, пофлудить, расслабиться,  оттянуться и повы_бываться от души.  Да ладно... Это смотря о чём у них спор. Если о работе симисторов в разных квадрантах, то  они вполне могут обложить друг друга куями в вашей закрытой теме для профессионалов. Но это и хорошо... т.к. никто из флудеров и дилетантов этого не прочитает. Им до этого ещё  расти и расти...
    • На днях попробовал приклеить петлю крышки ноута  суперклеем с содой. К моему удивлению, очень хорошо получилось и держит отлично. Способ не новый, но подробнее можно ознакомиться вот здесь - https://gidpokraske.ru/rabota-s-kleem/super-klej-i-soda.html    
    • Подобные конденсаторы встречаются в блоках питания ПК, но не во всех ...
    • научился делать снимки триггером. еще бы научиться сохранять снимки а не телефоном фоткать кз кнопкой, выходное 5в, ток 2А макс.   Пульсации, 5в, ограничение 1А, и без ограничения так же.  
    • Такие да не такие.   Фильтр спаять мало.Его нужно настроить.Есть прибор называется АЧХ метр Х1-48 или "СВИСТОК"-худший вариант. Вод делал когда то,так в фильтре конденсаторы на 2квольта взрывались пока не поставил трубчатые.Мощьность была ват40-50 в этом пределе.
    • На ремонт как-то попал "Technics SA-GX 130". Так там было всё продумано. На радиаторе с микросхемой стоял транзистор в качестве термо-датчика. При положении регулятора громкости до 12 часов вентилятор не включался, так как нагрев радиатора был ничтожный. А вот, когда за 2-3 часа, радиатор становился ощутимо тёплым, вентилятор стартовал и эффективно охлаждал радиатор с микросхемой. Никакой дискомфорт не ощущался. Видно обороты были подобраны грамотно. Да и степень износа вентилятора не велика. В компьютерах, и в некоторых БП включение охлаждающего вентилятора организовано от термо-датчика на радиаторе. Возросла нагрузка, разогрев радиатора увеличился и включился обдув. В компьютерах этот режим можно установить в BIOS.Такое управление вентилятором обдува, наверное, будет самое грамотное, в зависимости от температуры радиатора. При ничтожных нагрузках вентилятор вообще включаться не будет.  
×
×
  • Create New...