본문 바로가기

PWM

(13)
STM32H7 CubeMx를 이용한 PWM출력 테스트 - 1Mhz PWM STM32H7 CubeMx를 이용한 PWM출력 테스트 - 1Mhz PWM STM32CubeMx를 실행해 프로젝트 생성후 핀맵 할당한다.STM32H7_EVM 보드의 TIM2_CH1(PA5)에 PWM출력 되도록 했다. TIM2에서 PWM 모드 설정해 주면 된다. STM32H7 CubeMx 프로젝트 생성후 아래와 같이 HAL코드(HAL_TIM_PWM_Start 함수)로 PWM 출력을 시작 할 수 있다. HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); //주파수 편경 TIM2->ARR = 100-1;// 100 x 5ns //펄스폭 가변 TIM2->CCR1 = 50-1; 생성된 코드를 돌려보면 PWM이 2Mhz로 출력이 된다.뭐가 설정이 잘못 되었나?APB2 클럭 최대가 100Mhz로..
#ESP ArduinoEXP - ESP8266 PWM 테스트(3색 LED제어) #ESP ArduinoEXP - ESP8266 PWM 테스트(3색 LED제어) ESP8266의 데이터 시트를 보면 4개의 PWM을 제공하고 소프트웨어 타이머로 구동이 된다고 나와 있다. 최소 레졸루션이 44ns 이고... PWM 주파수는 100hz ~ 1khz 로 되어 있다. 아주 정밀하지는 않을것 같고... 일단 테스트 해 보자 #ESP Ardunio EXP 보드에는 PWM 테스트를 위해 3색 LED가 연결되어 있고 JP13에서 LED의 전원을 공급할 수 있다. PWM을 이용하여 LED색상 변경 테스를 해 볼 수 있다. analogWriteFreq() 함수로 주파수를 설정 할 수 있고 analogWrite() 함수로 출력 핀과 PWM 주기를 설정 할 수 있다. 스펙상에는 IO12, 14, 15, 4가 ..
STM32 CubeMX - PWM HAL Code 테스트 STM32 CubeMX - PWM HAL Code 테스트 STM32F0의 TIMx 클럭은 PCLK가 소스가 된다. 쵀대 48Mhz로 설정 가능 STM32CubeMX 를 이용하여 TIM1, TIM3 설정탭에서 PWM을 설정한다. 파라 미터 설정은 적정한 값으로 설정한다. 10khz 주파수로 PWM 출력을 하려면 어떻게 설정 해야 할까?10Khz는 100us 이므로 ARR 레지스터에 100us가 되는 값을 설정하면 된다. 먼저 48Mhz를 48로 나누어 1Mhz -> 1us로 되도록 하고 ARR값에 100을 넣으면 100us 가 된다. (주의 사항은 0부터 시작하므로 1을 빼준 값을 설정해야 한다.) //프리스케이일 TIM1->PSC = 48-1; //주파수 편경 freq = 100;// 100us TIM1..
dsPIC33 PWM 테스트 dsPIC33 PWM 테스트 dsPIC33FJ32MC302/304, dsPIC33FJ64MCX02/X04 and dsPIC33FJ128MCX02/X04 시리즈는 Motor Control PWM (MCPWM)을 제공하기 때문에 모터 제어용 PWM만 테스트 했는데 이번에 일반 dsPIC33은 MCPWM모듈을 제공하지 않기 때문에 Output Compare module를 이용하여 PWM을 출력 할수 가 있다. 블록도를 보면 Timer2, 3을 기준으로 PWM을 생성할 수 있다. PWM출력은 OCFA(OC1:PD0~OC4:PD3) 핀과 OCFB(OC5:PD4~OC8:PD7) 핀에 할당되어 있다. OCxCON: Output Compare x Control Register OCTSEL: Output Compare ..
STM8S - PWM테스트 (DC모터 속도 제어) STM8S - PWM테스트 (DC모터 속도 제어) 16비트 타이머 TIM1, TIM2를 이용하여 PWM출력을 각각 4, 3채널씩 출력 가능하다. 그리고 특이사항으로 PD4는 BEEP 핀이고 1, 2 , 4 kHz 로 사운드 출력을 할수 있다. (이 기능을 사용하려면 옵션비트 AFR7 을 리맵해야 한다고 한다.)PC6(HS)/SPI_MOSI [TIM1_CH1] PC7(HS)/SPI_MISO[TIM1_CH2] PC3(HS)/TIM1_CH3/[TIM1_CH1N] PC4(HS)/TIM1_CH4/CLK_CCO/AIN2/[TIM1_CH2N] PD4(HS)/TIM2_CH1/UART1_CK/BEEP PD3(HS)/TIM2_CH2/AIN4/ADC_ETR PA3(HS)/TIM2_CH3/[SPI_NSS] PC5(HS)/SP..
dsPIC33E - PWM 테스트 (HIGH-SPEED PWM MODULE) dsPIC33E - PWM 테스트 (HIGH-SPEED PWM MODULE) dsPIC33EPXXXMC20X/50X 시리즈는 모터제어를 위해 3채널(6 PWM)의 HIGH-SPEED PWM MODULE 이 있다.70Mhz에서 7.14 ns의 듀티폭을 제어할 수 있다. dsPIC33E PWM 핀맵26-PWM1L/T5CK/RB1525-PWM1H/T3CK/RB14 24-PWM2L/CTPLS/RB1323-PWM2H/RB12 22-PWM3L/RB1121-PWM3H/RB10 dsPIC33E PWM 블록도 dsPIC33E PWM 초기화 코드void InitMCPWM(void){ PTCON = 0x0000; PTPER = 16000; //1000 PHASE1 = 0; PDC1 = 16000; DTR1 = 0; ALTD..
EFM32G210 EVM - PWM테스트 (RGB LED 제어) EFM32G210 EVM - PWM테스트 (RGB LED 제어) EFM32는 6개의 PWM출력을 할수 있다. PWM을 이용하여 [Xmega32-EX EVM] 확장 테스트 보드에서 RGB LED 조면제어 테스트를 해 보았다. EFM32 PWM 기능- Up-count PWM- Up/down-count PWM- Predictable initial PWM output state (configured by SW)- Buffered compare register to ensure glitch-free update of compare values EFM32 PWM 출력 핀맵EFM32는 PWM출력을 위한 2개의 타이머가 있고 각각 3채널, 6개의 PWM을 출력할 수 있다. EFM32G210F128 Timer 블록도 3..
[PIC16F150x EVM] PIC16F1509 ADC, PWM 테스트 [PIC16F150x EVM] PIC16F1509 ADC, PWM 테스트 PIC16F1509는 4개의 10비트 PWM출력이 있다. 20Mhz에서 최대 208khz, 6.5bit 해상도로 출력 가능하다. PIC16F1509 PWM초기화 코드 void Pwm1Init(void) { Cbi(TRISC, BIT5);Cbi(ANSELC, BIT5); PWM1CON = 0x00; T2CON = 0b00000111; PR2 = 255; PWM1DCH = PWM1DCL = 0x00; T2CON = 0b00000100; PWM1DCH = 0b00100000; PWM1EN = 1; PWM1OE = 1; PWM1OUT = 0 PWM1POL = 0; } void PWM1_SET(unsigned int Duty){PWM1DCH..