본 예제는 IEC-Series에서 지원되는 옵션 제품 중 Smart I/O-Series의 PWM(SmartPWM) 기능을 테스트할 수 있도록 만든 예제 프로그램(C#, VB.NET) 입니다.
SmartX Framework와 관련된 컴포넌트의 자세한 사용법은 SmartX Framework Reference Guide (Programming Guide)의 SmartPWM편을 참조하시기 바랍니다.
Smart I/O-Series의 하드웨어적인 설명 및 사용법은 Smart I/O-Series제품매뉴얼을 참조하시기 바랍니다.
본 자료는
1. SmartPWM 기본 설명
2. SmartPWM 관련 속성 및 메서드
3. FET Block(PWM) 과 출력 결선 안내
3-2. Smart I/O-2 또는 Smart I/O-3에 FET Block(PWM) 장착
4. 예제 프로그램 동작 설명
5. 프로그램 전체 소스
순서로 설명합니다.
1. SmartPWM 기본 설명
IEC-Series 제품 내부 2채널의 16Bit PWM(Pulse Width Modulation)이 내장되어 있습니다.
PWM 캐리어 주파수 조정Prescaler | Clock Divider |
PWM Counter |
|
---|---|---|---|
설정범위 | 0~255값 설정 |
1/2, 1/4, 1/8, 1/16 분주 설정 값 |
0-65535 주파수 정밀제어 |
주파수 변화의 크기순서는 Prescaler > ClockDivider > PWMCounter 입니다.
2. SmartPWM 관련 메서드
PWM출력의 듀티비를 백분율로 설정합니다. (0~100.00) 실수 형 데이터 | |
---|---|
C# 사용법 |
// PWM1의 듀티비를 33.3%로 설정 smartPWM1.DutyRate1 = 33.3; |
VB 사용법 |
smartPWM1.DutyRate1 = 33.3 |
PreScaler에서 PWM Clock이 공급되면 이 Clock은 다시 ClockDivider에 의해서 분주됩니다. ClockDivider는 이 분주 값을 설정합니다. |
|
---|---|
C# 사용법 |
// 분주비를 1/2로 설정 smartPWM1.ClockDivider1 = SmartX.SmartPWM.CLOCKDIVIDER.DIVIDE2; |
VB 사용법 |
smartPWM1.ClockDivider1 = SmartX.SmartPWM.CLOCKDIVIDER.DIVIDE2 |
PWM 출력 파형의 정/부 논리를 변경합니다. 즉 출력 파형을 반전하여 PWM 출력을 할 수 있도록 합니다. | |
---|---|
C# 사용법 |
// PWM 출력을 반전 smartPWM1.Polarity1 = SmartX.SmartPWM.POLARITY.LOWACTIVE; |
VB 사용법 |
smartPWM1.Polarity1 = SmartX.SmartPWM.POLARITY.LOWACTIVE |
PreScaler는 0~255값을 설정할 수 있으며, PreScaler의 변경으로 PWM의 Carrier Frequency를 조정할 수 있습니다. (PWM1과 PWM2는 동일한 PreScaler를 사용합니다.) |
|
---|---|
C# 사용법 |
// PreScaler 값을 13으로 적용 smartPWM1.PreScaler = 13; |
VB 사용법 |
smartPWM1.PreScaler = 13 |
PWM의 캐리어 주파수를 세밀하게 제어할 수 있습니다. (범위 : 0 ~ 65535) |
|
---|---|
C# 사용법 |
// PWM1의 Counter값 적용 smartPWM1.PWMCounter1 = 1200; |
VB 사용법 |
smartPWM1.PWMCounter1 = 1200 |
PWM관련 파라미터 설정이 완료되었으면, PWM 출력을 시작할 수 있는 메서드입니다. | |
---|---|
C# 사용법 |
// PWM1의 현재 설정된 상태로 PWM출력을 시작 smartPWM1.StartPWM1(); |
VB 사용법 |
smartPWM1.StartPWM1() |
PWM 출력을 중지하는 메서드입니다. | |
---|---|
C# 사용법 |
// PWM1의 PWM 출력을 중지 smartPWM1.StopPWM1(); |
VB 사용법 |
smartPWM1.StopPWM1() |
3. FET Block(PWM)과 출력결선 안내 3-1. 테스트 적합 모듈 안내 및 FET Block(PWM)과 출력 결선
• 테스트 적합한 모듈:㈜ 금일모터(KDG37-3429A-050)
FET Block(PWM) 과 출력 결선 모양
• 테스트 적합한 모듈:FALC1-00705T150
FET Block(PWM) 과 출력 결선 모양
• 테스트 적합한 모듈:㈜ M.I.Tech(MTS-A410SE)
FET Block(PWM) 과 출력 결선 모양
3-2. Smart I/O - II 또는 Smart I/O - III에 FET Block(PWM) 장착
Smart I/O - II에 냉온소자, Servo모터가 연결된 모습
Smart I/O-III에 냉온소자, Servo모터가 연결된 모습
4. 예제 프로그램 동작 설명
① PWM1 의 주파수(Clock Divide, Prescaler, PWM Counter) 증가
② PWM1 의 주파수(Clock Divide, Prescaler, PWM Counter) 감소
③ 설정 가능한 주파수 값이 배열에 저장됨. ①과 ②를 통해서 증/감이 가능
④ PWM1.DutyRate1의 듀티비(Duty Rate) 증가(+1) 처리
⑤ PWM1.DutyRate1의 듀티비(Duty Rate) 감소(-1) 처리
⑥ PWM1.DutyRate1의 듀티비(Duty Rate) 값에 따라 이미지 변경
⑦ Duty Rate값을 Lv.1 ~ Lv.5로 구분하여 설정. 예를 들면 Lv.1을 클릭시 Duty Rate 는 20을 설정하고 Lv.5를 클릭시 Duty Rate는 100으로 설정
⑧ PWM1의 동작(출력)을 시작 / 정지 (토글 스위치)
⑨ PWM의 출력 반전(Low Active) / 비 반전(High Active) 설정
[듀티비(Duty Rate)의 증/감에 따른 DC모터 및 냉온소자 동작 안내]
듀티비(Duty Rate) 증가 | 듀티비(Duty Rate) 감소 | |
---|---|---|
DC 모터 | 회전속도는 증가 | 회전속도는 감소 |
냉온소자 | 냉각부분의 온도는 차가워지고 가열부분의 온도는 뜨거워집니다. |
냉각 부분의 온도는 상온에 가까워짐 가열 부분의 온도는 상온에 가까워짐 |
※ 냉온소자는 +, -의 전류 극성을 바꿈으로 냉각부분과 가열부분을 변경 가능합니다.
Servo모터(PWM2)
⑩ PWM1.Polarity2를 설정하여 파형의 반전/비반전을 설정
⑪ PWM1.DutyRate2의 듀티비(Duty Rate) 감소(-0.1) 처리. 최소값은 88.5
⑫ PWM1.DutyRate2의 듀티비(Duty Rate) 증가(+0.1) 처리. 최대값은 96.2
⑬ PWM1.DutyRate2의 듀티비(Duty Rate) 값에 따라 이미지 변경
⑭ PWM1.DutyRate2의 특정 값을 설정하여 서보 모터(Servo Motor)의 회전각(0°, 90°, 180°)을 조정
⑮ PWM1.DutyRate2의 출력을 시작 / 정지 (토글 스위치)
※ Smart I/O_PWM 소스상에 Pwm2 부분이 PreScale = 240, PwmCounter = 1381, ClockDivider = 1/4, DutyRate = 96.3으로 설정되어 있습니다.
※ ServoMotor는 한 주기를 20ms(20.00277ms)로 만들고, 0°(0.7 ms = Duty 96.3), 90°(1.5 ms = Duty 92.3), 180°(2.3 ms = Duty 88.4)
각도 설정버튼(0도, 90도, 180도) 또는 듀티 설정으로 각도를 제어할 수 있습니다.
[듀티비(Duty Rate)의 증/감에 따른 Servo 모터 동작 안내]
듀티비 (Duty Rate) |
96.3 | 92.3 | 88.4 |
---|---|---|---|
서보 모터 | 0° 방향 | 90° 방향 | 180° 방향 |
듀티비(Duty Rate) 증가 시 180° 방향 → 0° 방향으로 변경됨
듀티비(Duty Rate) 감소 시 0° 방향 → 180° 방향으로 변경됨
※ 서보 모터의 제조사에 따라 듀티비에 따른 방향(각도)변환은 차이가 있습니다.