鎽� 瑕�: 鏈枃浠嬬垂浜嗕竴绋熀浜嶴3C2410寰帶鍒跺櫒鐨勭洿娴侀浕姗�(j墨)瑾�(di脿o)閫熺郴绲�(t菕ng)銆傛枃绔犲湪浠嬬垂PWM瑾�(di脿o)閫熷師鐞嗙殑鍩虹(ch菙)涓婅┏绱�(x矛)瑾�(shu艒)鏄庝簡S3C2410鐨凱WM鐧�(f膩)鐢熷櫒鐨勭祼(ji茅)妲�(g貌u)鐗归粸(di菐n)鍙婂叾浣跨敤鏂规硶銆傚苟绲﹀嚭浜嗗(sh铆)鐝�(xi脿n)瑾�(di脿o)閫熺殑鏍稿績浠g⒓鍙婅(di脿o)閫熺郴绲�(t菕ng)鐨勭附楂旇ō(sh猫)瑷�(j矛)銆�
闂�(gu膩n)閸佃: S3C2410; PWM; 瑾�(di脿o)閫�
0 寮曡█
銆€銆€PWM锛圥ulse-Width Modulation锛夋槸鑴堝瑾�(di脿o)鍒舵妧琛�(sh霉)鐨勭啊(ji菐n)绋�(ch膿ng)銆侾WM鎺у埗鎶€琛�(sh霉)浠ュ叾鎺у埗绨�(ji菐n)鍠�銆侀潏娲诲拰鍕�(d貌ng)鎱�(t脿i)闊挎噳(y墨ng)濂界殑鍎�(y艒u)榛�(di菐n)鑰屾垚鐐洪浕鍔涢浕瀛愭妧琛�(sh霉)寤f硾鎳�(y墨ng)鐢ㄧ殑鎺у埗鏂瑰紡锛屼篃鐐洪珮鎬ц兘鐨勭洿娴侀浕姗�(j墨)鏁�(sh霉)瀛楀寲鎺у埗鎻愪緵浜嗗熀绀�(ch菙)銆�
1 PWM瑾�(di脿o)閫熷師鐞�
銆€銆€鏅堕珨绠¢枊(k膩i)闂�(gu膩n)鍣ㄤ欢鐨勫皫(d菐o)閫氭檪(sh铆)闁撲篃琚ū(ch膿ng)鐐哄皫(d菐o)閫氳 锛岄€氶亷(gu貌)鎺у埗鏅堕珨绠$殑闁�(k膩i)閫氳垏闂�(gu膩n)鏂锋檪(sh铆)闁撲締(l谩i)鏀硅畩灏�(d菐o)閫氳 鐨勫ぇ灏忥紝灏卞彲浠ヨ(di脿o)绡€(ji茅)鍔犲湪璨�(f霉)杓変笂鐨勫钩鍧囬浕澹撶殑澶у皬锛屼互瀵�(sh铆)鐝�(xi脿n)灏�(du矛)鐩存祦闆绘(j墨)鐨勮(di脿o)閫�锛岄€欏氨鏄疨WM璁婇€熸帶鍒舵妧琛�(sh霉)鐨勫熀鏈師鐞�锛屽鍦栦竴鎵€绀恒€傝(di脿o)閫熸帶鍒跺父閫氶亷(gu貌)瑾�(di脿o)绡€(ji茅)鑴堟矕瀵害鐨勬柟娉曚締(l谩i)瀵�(sh铆)鐝�(xi脿n)銆�
鍦�1 PWM瑾�(di脿o)閫熷師鐞�
銆€銆€
2 S3C2410鐨凱WM鐧�(f膩)鐢熷櫒
銆€銆€2.1 PWM鐧�(f膩)鐢熷櫒鐨勭祼(ji茅)妲�(g貌u)鍜岃▓(j矛)鏅�(sh铆)鍘熺悊
銆€銆€鐢ㄥ垎绔嬪櫒浠剁祫鎴怭WM闆昏矾涓€鑸締(l谩i)瑾�(shu艒)闇€瑕佸涓嬪咕鍊�(g猫)閮ㄥ垎锛氫笁瑙掓尝鐢�(ch菐n)鐢熼浕璺�銆佽剤娌栬(di脿o)鍒堕浕璺�銆丳WM淇¤櫉(h脿o)寤堕伈鍙婂垎閰嶉浕璺€係3C2410鍋氱偤涓€娆惧姛鑳藉挤(qi谩ng)澶х殑寰檿鐞嗗櫒锛屽叾鍏�(n猫i)閮ㄥ凡缍�(j墨ng)闆嗘垚浜嗗寘鍚笂杩颁笁鍊�(g猫)閮ㄥ垎鐨凱WM鐧�(f膩)鐢熷櫒锛屽彧瑕佸皪(du矛)鐩搁棞(gu膩n)瀵勫瓨鍣ㄩ€�(j矛n)琛岀啊(ji菐n)鍠殑瑷�(sh猫)缃紝灏卞彲浠ョ敘(ch菐n)鐢熼渶瑕佺殑PWM淇¤櫉(h脿o)銆�
銆€銆€S3C2410鐨勫畾鏅�(sh铆)/瑷�(j矛)鏁�(sh霉)鍣�0锝�3閮藉叿鏈塒WM杓稿嚭鍔熻兘锛屼互瀹氭檪(sh铆)/瑷�(j矛)鏁�(sh霉)鍣�0鐐轰緥瑾�(shu艒)鏄�銆傛檪(sh铆)閻樹俊铏�(h脿o)PCLK缍�(j墨ng)閬�(gu貌)鍙法绋嬬殑8浣嶉爯(y霉)鍒嗛牷鍣ㄥ拰鏅�(sh铆)閻橀櫎娉曞櫒鍒嗛牷鍚�锛岄﹨(q奴)鍕�(d貌ng)瀹氭檪(sh铆)鍣ㄥ収(n猫i)鐨勯倧杓帶鍒跺櫒閫�(j矛n)琛屽伐浣�銆傞倧杓帶鍒跺櫒鐨勬牳蹇冿紝鏄竴鍊�(g猫)16浣嶇殑娓涙硶瑷�(j矛)鏁�(sh霉)鍣�銆�
銆€銆€鎴戝€戝彲浠ヨ肠浜庤▓(j矛)鏁�(sh霉)绶╂矕瀵勫瓨鍣紙TCNTB0锛� 鍜屾瘮杓冪珐娌栧瘎瀛樺櫒锛圱CMPB0锛変笉鍚岀殑鍒濆鍊�锛岀暥(d膩ng)瀹氭檪(sh铆)鍣ㄤ娇鑳芥檪(sh铆)锛岄€欏叐鍊�(g猫)瀵勫瓨鍣ㄤ腑鐨勬暩(sh霉)鎿�(j霉)灏囪鍒嗗垾杓夊叆鍒版笡娉曡▓(j矛)鏁�(sh霉)鍣紙TCNT0锛夊拰姣旇純瀵勫瓨鍣紙TCMP0锛�銆傝▓(j矛)鏁�(sh霉)绶╂矕瀵勫瓨鍣ㄥ拰姣旇純绶╂矕瀵勫瓨鍣ㄧ殑瑷�(sh猫)瑷�(j矛)鎬濇兂鍦⊿3C2410涓绋�(ch膿ng)鐐衡€滈洐绶╂矕鈥濓紝瀹冪殑鍎�(y艒u)榛�(di菐n)鏄湪闋荤巼鎴栧崰绌烘瘮鏀硅畩鏅�(sh铆)锛屽畾鏅�(sh铆)鍣ㄤ粛鐒惰兘鐢�(ch菐n)鐢熺┅(w臎n)瀹氱殑杓稿嚭銆�
銆€銆€瑷�(j矛)鏅�(sh铆)閬�(gu貌)绋嬪涓嬶細寰濸CLK閬�(gu貌)渚�(l谩i)鐨勬檪(sh铆)閻樹俊铏�(h脿o)鍒伴仈(d谩)閭忚集鎺у埗鍣ㄦ檪(sh铆)锛屾笡娉曡▓(j矛)鏁�(sh霉)鍣ㄧ殑鍊艰嚜鍕�(d貌ng)娓�1锛岀暥(d膩ng)娓涙硶瑷�(j矛)鏁�(sh霉)鍣ㄧ殑鍊肩偤0鏅�(sh铆)锛屽畾鏅�(sh铆)鍣ㄦ渻(hu矛)鍚慍PU鐧�(f膩)閫佷腑鏂疯珛(q菒ng)姹傦紝涓€杓▓(j矛)鏅�(sh铆)鎿嶄綔瀹屾垚銆傚湪鑷嫊(d貌ng)瑁濊級妯″紡涓嬶紝瑷�(j矛)鏁�(sh霉)绶╂矕瀵勫瓨鍣ㄤ腑鐨勫垵濮嬪€兼渻(hu矛)鐢辩‖浠舵帶鍒惰嚜鍕�(d貌ng)杓夊叆娓涙硶瑷�(j矛)鏁�(sh霉)鍣�锛岄€�(j矛n)琛屼笅涓€杓殑瑷�(j矛)鏅�(sh铆)鎿嶄綔銆�
銆€銆€2.2 PWM鐧�(f膩)鐢熷櫒鐨勫師鐞�
銆€銆€姣旇純绶╂矕瀵勫瓨鍣紙TCMPB0锛変腑瑷�(sh猫)瀹氱殑鍒濆€兼槸鐢ㄤ締(l谩i)鐢�(ch菐n)鐢烶WM淇¤櫉(h脿o)鐨�. 淇¤櫉(h脿o)鐨勭敘(ch菐n)鐢熻(gu墨)鍓囨槸锛氭瘡鐣�(d膩ng)TCNT0鐨勫€煎拰TCMP0鐨勫€肩浉绛夋檪(sh铆)锛屽畾鏅�(sh铆)鍣ㄧ殑杓稿嚭閭忚集闆诲钩缈昏綁(zhu菐n)銆侾WM鑴堟矕闋荤巼鐢盩CNT0姹哄畾锛岃€岃剤娌栧搴︾敱TCMP0姹哄畾銆俆CMP0鐨勫€艰秺澶�锛孭WM鑴堟矕鐨勫崰绌烘瘮瓒婂ぇ锛屼篃鍗冲钩鍧囪几鍑洪浕澹撹秺澶�锛屽弽涔嬩害鐒�銆�
銆€銆€2.3 姝诲崁(q奴)锛圖ead Zone锛夌櫦(f膩)鐢熷櫒
銆€銆€鐐轰簡鑳藉鎺у埗杓冨ぇ鍔熺巼鐨勮ō(sh猫)鍌�锛孭WM鐧�(f膩)鐢熷櫒涓倓闆嗘垚浜嗘鍗€(q奴)鐧�(f膩)鐢熷櫒銆傞€欎竴鐗规€х敤浜庡湪闁�(k膩i)闂�(gu膩n)瑷�(sh猫)鍌欑殑鏂烽枊(k膩i)鍜屽彟涓€鍊�(g猫)闁�(k膩i)闂�(gu膩n)瑷�(sh猫)鍌欑殑闁夊悎涔嬮枔鎻掑叆涓€鍊�(g猫)鏅�(sh铆)闁撶己鍙�锛屼娇瀹冨€戜笉鏈�(hu矛)铏曚簬鍚屾檪(sh铆)闁夊悎鐨勭媭鎱�(t脿i)銆傚鍦�2鎵€绀猴細

鍦�2 姝诲崁(q奴)鐧�(f膩)鐢熷櫒鐨勪繚璀�(h霉)浣滅敤
銆€銆€宸茬煡TOUT0鏄畾鏅�(sh铆)鍣�0鐨凱WM杓稿嚭寮曡叧锛岃€孴OUT1鏄疶OUT淇¤櫉(h脿o)鐨勫弽鐩歌几鍑哄紩鑵筹紝濡傛灉闁�(k膩i)鍟熶簡姝诲崁(q奴)鐧�(f膩)鐢熷櫒鍔熻兘锛岄偅涔圱OUT0鍜孴OUT1鐨勮几鍑烘尝褰㈠氨涓嶅彲鑳藉悓鏅�(sh铆)鐐洪珮闆诲钩浜�锛岄€欐ǎ灏辨湁鏁堢殑闃叉浜嗛枊(k膩i)闂�(gu膩n)瑷�(sh猫)鍌欏悓鏅�(sh铆)闁夊悎鏅�(sh铆)鐨勮几鍑虹煭璺儏娉�銆�
3 PWM鐧�(f膩)鐢熷櫒绋嬪簭
銆€銆€PWM鐧�(f膩)鐢熷櫒鐨勫瘎瀛樺櫒閰嶇疆鍜屾帶鍒堕亷(gu貌)绋嬪涓嬶細
銆€銆€// 瀹氱京姝诲崁(q奴)瀵害鍜岄爯(y霉)妯�(bi膩o)瀹氬€�
銆€銆€#define PRE_SCALER0 锛�2 << 0锛�
銆€銆€#define DEAD_ZONE 锛�20 << 16锛�
銆€銆€// 鍜屽畾鏅�(sh铆)鎺у埗鏈夐棞(gu膩n)鐨勫畯瀹氱京
銆€銆€#define START_TIMER0 锛�1 << 0锛�
銆€銆€#define UPDATE_CFG 锛�1 << 1锛�
銆€銆€#define AUTO_RELOAD 锛�1 << 3锛�
銆€銆€#define ENABLE_DEADZONE 锛�1 << 4锛�
銆€銆€// 瀹氭檪(sh铆)绶╂矕鍣ㄥ垵鍊�1024锛岄浕姗�(j墨)瑾�(di脿o)閫熸闀�(zh菐ng) 2
銆€銆€// 鍙€�(j矛n)琛�1024/2 = 512绱�(j铆)瑾�(di脿o)閫�
銆€銆€#define MOTOR_COUNT 锛�1024锛�
銆€銆€#define MOTOR_STEP 锛�1锛�
銆€銆€// 鐢ㄤ締(l谩i)鎺у埗杞�(zhu菐n)閫熺殑闈滄厠(t脿i)璁婇噺
銆€銆€static int nSpeed =0;
銆€銆€/锛� 鍒濆鍖朠WM鐧�(f膩)鐢熷櫒 锛�/
銆€銆€void InitPWM锛堬級
銆€銆€锝�
銆€銆€/锛� TOUT0 灏�(du矛)鎳�(y墨ng)钁� GPB0锛孴OUT1灏�(du矛)鎳�(y墨ng)钁桮PB1锛屽洜姝ゅ垵濮嬪寲GPB0/1鐐虹浜屽姛鑳界鍙� 锛�/
銆€銆€rGPBCON = rGPBCON & 0x3FFFF0 | 0xA;
銆€銆€/锛� 姝诲崁(q奴)鐐�24鍊�(g猫)瑷�(j矛)鏅�(sh铆)鍠綅锛岄爯(y霉)鍒嗛牷鍣ㄨō(sh猫)缃偤 0锛屾檪(sh铆)閻橀櫎娉曞櫒鍜孧UX鍒嗛厤鍣ㄥ彇榛樿獚(r猫n)鍊� 锛�/
銆€銆€rTCFG0 = DEAD_ZONE | PRE_SCALER0;
銆€銆€/锛� 瑷�(sh猫)缃▓(j矛)鏁�(sh霉)绶╂矕瀵勫瓨鍣ㄥ垵鍊笺€佹瘮杓冪珐娌栧瘎瀛樺櫒鍒濆€硷紛/
銆€銆€rTCNTB0 = MOTOR_COUNT;
銆€銆€rTCMPB0 = MOTOR_STEP 锛� nSpeed;
銆€銆€/锛� 瑷�(j矛)鏅�(sh铆)鍣�0鍋滄锛屾洿鏂伴厤缃� 锛�/
銆€銆€rTCON = 锛堬綖 START_TIMER0锛� | UPDATE_CFG;
銆€銆€/锛� 浣胯兘姝诲崁(q奴)鐧�(f膩)鐢熷櫒锛岄€�(j矛n)鍏ヨ嚜鍕�(d貌ng)瑁濊級妯″紡锛岃▓(j矛)鏅�(sh铆)鍣�0鍟熷嫊(d貌ng) 锛�/
銆€銆€rTCON = NABLE_DEADZONE | AUTO_RELOAD | START_TIMER0;
銆€?銆�?
銆€銆€閫欐ǎ锛孴OUT0鍜孴OUT1寮曡叧涓婂氨鏈�(hu矛)杓稿嚭甯舵湁姝诲崁(q奴)鐨凱WM娉㈠舰銆傞€氶亷(gu貌)鎺у埗璁婇噺nSpeed鐨勫€�锛屽氨鍙互瑾�(di脿o)绡€(ji茅)PWM鐨勫崰绌烘瘮锛屽緸鑰岃(di脿o)绡€(ji茅)浜嗛浕姗�(j墨)鐨勮綁(zhu菐n)閫熴€�
4 瑾�(di脿o)閫熺郴绲�(t菕ng)绺介珨瑷�(sh猫)瑷�(j矛)
銆€銆€绯荤当(t菕ng)鐢盨3C2410绯荤当(t菕ng)鏉�銆佸厜鑰︺€佸厜闆荤法纰煎櫒銆佸姛鐜囬﹨(q奴)鍕�(d貌ng)闆昏矾鍜岀洿娴侀浕姗�(j墨)绲勬垚锛屽鍦�3鎵€绀�銆�
鍦�3 瑾�(di脿o)閫熺郴绲�(t菕ng)绲�(ji茅)妲�(g貌u)妗嗗湒
銆€銆€S3C2410浣滅偤涓绘帶鍒跺櫒锛岄€氶亷(gu貌)TCP/IP鍗�(xi茅)璀板拰涓ぎ鎺у埗瀹ら€氫俊锛岃矤(f霉)璨�(z茅)鎺ユ敹鎺у埗鍛戒护鍜屽牨(b脿o)鍛婄郴绲�(t菕ng)鐙€鎱�(t脿i)銆係3C2410鐨勫畾鏅�(sh铆)鍣�0鍋氱偤PWM鐧�(f膩)鐢熷櫒锛屽厜鑰︾敤浜庡厜闆婚殧闆紝鏈夋晥鐨勬姂鍒朵簡鍚庡悜閫氶亾鐨勫共鎿�锛屽姛鐜囬﹨(q奴)鍕�(d貌ng)闆昏矾鎻愪緵绲﹂浕姗�(j墨)鈥淗鈥濇⿱寮忛﹨(q奴)鍕�(d貌ng)锛屽厜闆荤法纰煎櫒灏囬噰妯e埌鐨勯浕姗�(j墨)杞�(zhu菐n)閫熻綁(zhu菐n)鍖栫偤鏁�(sh霉)瀛椾俊铏�(h脿o)锛屽弽楗嬬郸S3C2410锛岀敤渚�(l谩i)瀵�(sh铆)鐝�(xi脿n)闁夌挵(hu谩n)鎺у埗銆傜偤娓涘皬瑾ゅ樊锛岀▼搴忎腑鎳�(y墨ng)瑭插皪(du矛)鍏夐浕绶ㄧ⒓鍣ㄥ偝渚�(l谩i)鐨勯浕姗�(j墨)杞�(zhu菐n)閫熸暩(sh霉)鎿�(j霉)閫�(j矛n)琛屽潎鍊兼烤娉㈣檿鐞嗐€�
5 绲�(ji茅)鏉熻獮(y菙)
銆€銆€浣跨敤S3C2410鐨凱WM鐧�(f膩)鐢熷櫒灏�(du矛)灏忓瀷鐩存祦闆绘(j墨)鐨勮綁(zhu菐n)閫熼€�(j矛n)琛屾帶鍒�锛岄浕璺啊(ji菐n)鍠紝浣跨敤鏂逛究锛屽苟鍙互鐢辫粺浠跺(sh铆)鐝�(xi脿n)闈堟椿鐨勬帶鍒剁畻娉曚互鎻愰珮绯荤当(t菕ng)鎬ц兘銆係3C2410鍏�(n猫i)寤虹殑寮�(qi谩ng)澶ч€氳▕鍜孖/O鍔熻兘浣垮緱鍙渶鍔犲叆灏戦噺闆昏矾鍗冲彲浠ユ柟渚跨殑鍜屽鐣屼互TCP/IP銆佺劇(w煤)绶氬皠闋�銆佷覆鍙g瓑鏂瑰紡閫氳▕骞跺姞浠CD椤ず锛屼娇鎺у埗鏇村姞渚垮埄鍜屽彲闈�銆�
鍙冭€冩枃鐛�(xi脿n)锛�
銆€銆€[1] 鏉庡織瀵э紝寮佃嫳鍫�. PLC涓璓WM鍔熻兘妯″鐨勬噳(y墨ng)鐢ㄧ爺绌� [J].寰▓(j矛)绠楁(j墨)淇℃伅锛�2006锛�25锛夛細42-45.
銆€銆€[2] 浜庢槑. ARM9宓屽叆寮忕郴绲�(t菕ng)瑷�(sh猫)瑷�(j矛)鑸囬枊(k膩i)鐧�(f膩)鏁欑▼ [M]. 鍖椾含:闆诲瓙宸ユキ(y猫)鍑虹増绀�,2006.
銆€銆€[3] 鍛ㄧ珛鍔�.ARM宓屽叆寮忕郴绲�(t菕ng)瀵�(sh铆)椹�(y脿n)鏁欑▼ [M]. 鍖椾含:鍖椾含鑸┖鑸ぉ澶у(xu茅)鍑虹増绀�,2004.
銆€銆€[4] 鍛傞仈(d谩)鏄�锛岀闀�(zh菐ng)瀹�. 涓€绋埄鐢≒IC瀵�(sh铆)鐝�(xi脿n)PWM鎺у埗鐨勬柟妗� [J]. 姗�(j墨)搴婅垏娑插,2004锛�11锛�:133-134.
銆€銆€[5] 濮滈暦(zh菐ng)娉�锛屼簬钀�(w脿n)鍏�. 鍩轰簬AVR鍠墖姗�(j墨)鐨勭洿娴侀浕鍕�(d貌ng)姗�(j墨)鐨凱WM瑾�(di脿o)閫熺郴绲�(t菕ng)瑷�(sh猫)瑷�(j矛) [J]. 鍎€鍣ㄥ剙琛ㄧ敤鎴�(h霉),2006,2锛�42锛�.