ÇнÀ¸ñÇ¥    1

ÇнÀÁÖÁ¦    1

¿¹½À³»¿ë    1

½Ç½À¹æ¹ý    1

°ú    Á¦    1

½ºÅܸðÅÍÁ¦¾î(PWMÁ¦¾î)

ÇнÀ¸ñÇ¥

AVR¿¡¼­ PWM ÆÞ½º¸¦ ¸¸µé¾î ½ºÅܸðÅÍÀÇ ¼Óµµ¸¦ Á¦¾îÇÑ´Ù.

ÇнÀÁÖÁ¦

 

¿ÀÅä´Ð½ºÀÇ ½ºÅܸðÅÍ¿Í µå¶óÀ̹ö¸¦ AVR°ú ¿¬°áÇÏ¿© À̸¦ Á¦¾îÇÑ´Ù.

»ç¿ë±â±â : ¸ðÅ͵å¶óÀ̹ö(¿ÀÅä´Ð½ºKR55M), ½ºÅܸðÅÍ(¿ÀÅä´Ð½º02K-S523)

¿À¸¥ÂÊ ±×¸²°ú °°ÀÌ Hz¿Í dutyÀÇ °ªÀ» °¡Áö°í ÆÞ½º¸¦ ¹ß»ý½ÃÄÑ ¸ðÅ͸¦ µ¿ÀÛ ½ÃŲ´Ù.

¿¹½À³»¿ë

ŸÀ̸Ó1¿¡ ÀÇÇÑ PWM ÆÞ½º ¸¸µé±â

½Ç½À¹æ¹ý

¸ñ    Â÷

¾Æ·¡¿Í °°ÀÌ ÇÁ·ÎÁ§Æ®¸¦ ¸¸µç´Ù.

»õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µç´Ù.

CPU ¼±Á¤

Åë½ÅÀ» À§ÇÑ RS232 Rx, Tx ÀÎÅÍ·´Æ®¸¦ ¼³Á¤ÇÑ´Ù.

 

B Æ÷Æ®¸¦ Ãâ·ÂÀ¸·Î ¼³Á¤ÇÑ´Ù.

Timer1À» »ç¿ëÇÑ PWMÀ» ¼³Á¤ÇÑ´Ù.

 

 

¸ðÅÍÀÇ È¸Àü¼Óµµ¸¦ Á¦¾îÇÑ´Ù.

 

¿¹Á¦1 hz, duty ÆÞ½ºÀÇ ÁÖ±â¿Í µàƼºñ(%)¸¦ Á¦¾îÇÏ´Â AVR ÇÁ·Î±×·¥

 

 

unsigned int duty,period,hz,duty100;

TCCR1A=0x21;

TCCR1B=0x13;

TCCR1C=0x00;

hz=3000;

duty100=5;

period=(int)(125000/hz);

duty = (int)(period*duty100/100);

OCR1AH = (period>>8);

OCR1AL = period & 0xff; 

OCR1BH = (duty>>8);

OCR1BL = duty & 0xff;

//PORTB.2=1;       //ȸÀü¹æÇâ ¼³Á¤ 0=CCW 1=CW

 

 

CW- ¹æÇâÀº PORTB.2=1; ·Î ÇÑ´Ù.

[¼Ò½º ÇÁ·Î±×·¥ ³»·Á¹Þ±â]

 

 

 

¿¹Á¦2  PC¿¡¼­ ½ÅÈ£ ¹Þ¾Æ ½ºÅܸðÅÍ µ¿ÀÛ AVR ÇÁ·Î±×·¥  [¼Ò½º ÇÁ·Î±×·¥ ³»·Á¹Þ±â]

 

 

if(receive==1) {

              if(rx_buffer0[1]==0x30)

                            TCCR1B=0x15;      // 1024ºÐÁÖ

                             else if(rx_buffer0[1]==0x31)

                                          TCCR1B=0x14;      // 256ºÐÁÖ  

                             else if(rx_buffer0[1]==0x32)

                                           TCCR1B=0x13;      // 64ºÐÁÖ

                             else if(rx_buffer0[1]==0x33)

                                           TCCR1B=0x12;      // 8ºÐÁÖ

                                          

                             OCR1AH = rx_buffer0[2];

                             OCR1AL = rx_buffer0[3]; 

                             OCR1BH = rx_buffer0[4];

                             OCR1BL = rx_buffer0[5]; 

                                          

                             if(rx_buffer0[6]==0x30)

                                           PORTB.2=1;         //ȸÀü¹æÇâ ¼³Á¤ 0=CCW 1=CW

                             else if(rx_buffer0[6]==0x31)

                                           TCCR1B=0x10;

                             else if(rx_buffer0[6]==0x32)

                                           PORTB.2=0;         //ȸÀü¹æÇâ ¼³Á¤ 0=CCW 1=CW

                                                        

                             receive=0;

 }

 

 

PC ÇÁ·Î±×·¥ [¼Ò½º ÇÁ·Î±×·¥ ³»·Á¹Þ±â]

 

óÀ½

°ú    Á¦

¿øÇÏ´Â °¢µµ¸¸Å­ ȸÀüÇÏ´Â ³ëºê¸¦ Çϳª Ãß°¡ÇÑ´Ù.

PCÇÁ·Î±×·¥¿¡ [°¢µµ] ³ëºê¸¦ Çϳª ´õ Ãß°¡ÇÏ°í ³ëºê¸¦ ¿òÁ÷ÀÓ¿¡ µû¶ó ½ºÅܸðÅͰ¡ ȸÀüÇϵµ·Ï ÇÑ´Ù.

[ÈùÆ®] rx_buffer0[1]=0x34 ÀÏ ¶§´Â °¢µµ¿¡ ÀÇÇØ ȸÀüÇϵµ·ÏÇÑ´Ù.

rx_buffer0[2]¿¡´Â ȸÀü°¢ÀÇ µ¥ÀÌÅÍ·Î »ç¿ëÇÑ´Ù. ÀÌ µ¥ÀÌÅÍ´Â 8ºñÆ®(1~255) À̹ǷΠÇÁ·Î±×·¥À» ½±°Ô ÇϱâÀ§Çؼ­ 0~255µµ ±îÁö¸¸ ȸÀüÇϵµ·Ï ÇÏÀÚ. rx_buffer0[3], rx_buffer0[4], rx_buffer0[5]´Â »ç¿ëÇÏÁö ¾Ê°í ³ª¸ÓÁö µ¥ÀÌÅÍ´Â ±×´ë·Î »ç¿ëÇÑ´Ù.

AVR ÇÁ·Î±×·¥µµ Àú¹ø ÁÖÀÇ ÇÁ·Î±×·¥À» ÂüÁ¶ÇÏ¿© ÇÁ·Î±×·¥À» ¼öÁ¤ÇÑ´Ù.