時間:2022-10-17 15:59:20來æºï¼šä¸åœ‹å‚³å‹•ç¶²(wÇŽng)
  總體介紹
ã€€ã€€å°æ¥é€²(jìn)電機(jÄ«)的控制通常使用PWMæŽ§åˆ¶ï¼Œæ”¹è®Šé »çŽ‡ä¾†æŽ§åˆ¶é€Ÿåº¦ï¼Œç„¶åŽçµ±(tÇ’ng)計脈沖個數(shù)知é“電機(jÄ«)ç•¶(dÄng)å‰ä½ç½®ï¼Œå¯ä»¥å¾ˆå®¹æ˜“實ç¾(xià n)åŠ æ¸›é€Ÿè¦(guÄ«)劃,或者ä¸è€ƒæ…®åŠ æ¸›é€Ÿå¹³ç©©(wÄ›n)性,直接以å°äºŽæœ€å¤§å•Ÿå‹•速度的速度啟動,發(fÄ)完給定個脈沖åŽç›´æŽ¥é—œ(guÄn)閉定時器。以上控制方å¼éƒ½æ²’實ç¾(xià n)å°æ¥é€²(jìn)電機(jÄ«)çš„ä½ç½®çš„自由控制,å³è®“æ¥é€²(jìn)電機(jÄ«)跟隨任æ„ä½ç½®æ›²ç·šé‹å‹•,æ¤é …目是為了實ç¾(xià n)æ¥é€²(jìn)電機(jÄ«)的自由控制,能準(zhÇ”n)確定ä½ã€‚å¯ä»¥ä½¿ç”¨ç·¨ç¢¼å™¨æˆ–者電ä½å™¨ä½œç‚ºæŽ§åˆ¶å™¨ï¼Œç”¨æ‰‹?jÇn)Q編碼器,æ¥é€²(jìn)電機(jÄ«)å¯è·Ÿéš¨ä¸€èµ·é‹å‹•,也å¯ä»¥æŒ‰ç…§å‡½æ•¸(shù)曲線é‹å‹•。
  æ¥é€²(jìn)電機(jÄ«)é©…(qÅ«)å‹•
  æ¥é€²(jìn)電機(jÄ«)é©…(qÅ«)動器有很多種,如A4988ã€TMC2208ç‰ï¼Œå¸¸ç”¨çš„é©…(qÅ«)å‹•æ–¹å¼æ˜¯è„ˆæ²–åŠ æ–¹å‘,有的高端點的使用canã€ä¸²å£ç‰æ–¹å¼æŽ§åˆ¶ã€‚æœ¬ç¯‡ä»‹ç´¹å¦‚ä½•ä½¿ç”¨è„ˆæ²–åŠ æ–¹å‘æ–¹å¼å°æ¥é€²(jìn)電機(jÄ«)進(jìn)行ä½ç½®çš„自由控制!
  控制原ç†
  使用通信å”(xié)è°æ–¹å¼æŽ§åˆ¶æ¥é€²(jìn)電機(jÄ«),å¯å‘¨æœŸæ€§åŒæ¥ä½ç½®åˆ°é©…(qÅ«)動器,實ç¾(xià n)ä½ç½®çš„è‡ªç”±æŽ§åˆ¶ï¼Œè„ˆæ²–åŠ æ–¹å‘æ–¹å¼ä¹Ÿå¯æŠ½è±¡ç‚ºä½¿ç”¨é€šä¿¡å”(xié)è°åœ¨èˆ‡é©…(qÅ«)動器通信,åªä¸éŽæ˜¯ä½¿ç”¨å¢žé‡æ–¹å¼åœ¨é€šä¿¡ï¼Œé€šéŽå°è„ˆæ²–的累計得到目標(biÄo)ä½ç½®ã€‚
  程åºä½¿ç”¨å…©å€‹å®šæ™‚å™¨ï¼Œä¸€å€‹ä¸æ–·é »çŽ‡ç‚º1k,用于周期采樣目標(biÄo)ä½ç½®ï¼Œå¹¶è¨ˆç®—ç•¶(dÄng)å‰é€Ÿåº¦ï¼Œç•¶(dÄng)å‰é€Ÿåº¦å€¼ç”¨äºŽä¿®æ”¹å¦ä¸€å€‹å®šæ™‚噍䏿–·é »çŽ‡ï¼Œæ‰€ä»¥åœ¨ç¬¬äºŒå€‹å®šæ™‚å™¨ä¸åˆ¤æ–·ç›®æ¨™(biÄo)ä½ç½®èˆ‡ç•¶(dÄng)å‰ä½ç½®çš„å差,然åŽç¿»è½‰(zhuÇŽn)電平,實ç¾(xià n)å°è„ˆæ²–發(fÄ)é€ï¼ŒåŒæ™‚判斷方å‘ï¼Œå°æ‡‰(yÄ«ng)æŽ§åˆ¶æ–¹å‘æŽ§åˆ¶IO電平。
  在其他函數(shù)ä¸å¯çµ¦å®šä»»æ„å½¢å¼çš„ä½ç½®è®ŠåŒ–ï¼Œæ ¹æ“š(jù)采樣定ç†ï¼Œæ‡‰(yÄ«ng)該ä½ç½®è®ŠåŒ–é »çŽ‡ä¸å¤§äºŽ500Hz的都能被1kçš„å®šæ™‚å™¨ä¸æ–·æ£å¸¸é‡‡æ¨£ï¼Œç”±äºŽç™¼(fÄ)é€è„ˆæ²–需è¦ä»¥ä¸€å®šçš„é »çŽ‡ç™¼(fÄ)é€ï¼Œæ‰€ä»¥ç¬¬äºŒå€‹å®šæ™‚å™¨é »çŽ‡æ ¹æ“š(jù)目標(biÄo)ä½ç½®è®ŠåŒ–率而改變,å¯ä»¥è®“速度平滑,也å¯ä»¥æ¸›å°CPU帶寬å ç”¨ã€‚ä»¥æ¤æ–¹å¼å¯å¯¦ç¾(xià n)å°æ¥é€²(jìn)電機(jÄ«)的自由控制,å¯ä½¿ç”¨ç·¨ç¢¼å™¨æˆ–函數(shù)éš¨æ„æŽ§åˆ¶é›»æ©Ÿ(jÄ«)!
  代碼分æž
  æ¤ç¨‹åºå¯å¯¦ç¾(xià n)å°å¤šå€‹æ¥é€²(jìn)電機(jÄ«)的控制,以下是æ¥é€²(jìn)電機(jÄ«)類
  /*æ¥é€²(jìn)電機(jÄ«)控制類*/
  typedef struct
  {
  volaTIle unsigned long *gpio_dir; //電機(jÄ«)æ–¹å‘æŽ§åˆ¶GPIO
  volaTIle unsigned long *gpio_pluse; //電機(jī)脈沖GPIO
  int pluse_count;
  int goal_posiTIon;
  int last_posiTIon;
  int cur_position;
  int pos_bias;
  int speed;
  uint8_t status;
  }stepMotor;
  æ¥é€²(jìn)電機(jÄ«)æŽ§åˆ¶æ ¸å¿ƒå‡½æ•¸(shù),由一個簡易狀態(tà i)機(jÄ«)組æˆï¼Œæ¤å‡½æ•¸(shù)æ”¾ä¸Šé¢æåˆ°çš„ç¬¬äºŒå€‹ä¸æ–·å‡½æ•¸(shù)執(zhÃ)行,先得到當(dÄng)å‰å差,狀態(tà i)轉(zhuÇŽn)æ›ï¼Œå†ç™¼(fÄ)脈沖
  void StepMotorCtrl(stepMotor *motor)
  {
  switch(motor->status)
  {
  case 0:
  if(motor->goal_position != motor->cur_position) //掃æ
  {
  motor->pos_bias = motor->goal_position - motor->cur_position; //得到åå·®
  motor->status = 1;
  }
  break;
  case 1:
  if(motor->pos_bias > 0)
  {
  motor->pluse_count ++;
  *(motor->gpio_dir) = 1; //æ£æ–¹å‘
  *(motor->gpio_pluse) = !*(motor->gpio_pluse);
  if(motor->pluse_count == (motor->pos_bias * 2))
  {
  motor->cur_position += motor->pos_bias;
  motor->pluse_count = 0;
  motor->status = 0;
  }
  }
  else
  {
  motor->pluse_count ++;
  *(motor->gpio_dir) = 0; //è² (fù)æ–¹å‘
  *(motor->gpio_pluse) = !*(motor->gpio_pluse);
  if(motor->pluse_count == ((-motor->pos_bias) * 2))
  {
  motor->cur_position += motor->pos_bias;
  motor->pluse_count = 0;
  motor->status = 0;
  }
  }
  break;
  default:
  break;
  }
  }
ä¸åœ‹å‚³å‹•ç¶²(wÇŽng)版權(quán)與å…責(zé)è²æ˜Žï¼šå‡¡æœ¬ç¶²(wÇŽng)注明[來æºï¼šä¸åœ‹å‚³å‹•ç¶²(wÇŽng)]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Š(quán)å‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(wÇŽng)(www.hysjfh.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉(zhuÇŽn)載請與0755-82949061è¯(lián)系。任何媒體ã€ç¶²(wÇŽng)站或個人轉(zhuÇŽn)è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²(wÇŽng)â€ï¼Œé•å者本網(wÇŽng)將追究其法律責(zé)任。
本網(wÇŽng)轉(zhuÇŽn)載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯(lián)ç¶²(wÇŽng)或æ¥(yè)å…§(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuÇŽn)載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² (fù)版權(quán)法律責(zé)任。
相關(guÄn)資訊