創作內容

9 GP

arduino Stepper motor control

作者:貓貓風 ฅ●ω●ฅ│2017-06-26 22:00:26│巴幣:18│人氣:1116
.













馬達控制根據需求可以成為一個設備中很核心的一個功能

主要分為兩種 步進馬達 與 伺服馬達,這篇主要介紹步進馬達的接法和使用

馬達的原理基本都雷同,主要是接收脈波(pulse)來決定要移動多少距離,詳細就不在此說明

以下為接線圖



圖源: http://atceiling.blogspot.tw/2013/04/arduino.html

驅動是使用 積體電路(ULN2003A) 來進行增壓

以下程式功能為從PC端送出要移動的距離 ,以數值的正負來決定移動方向

如果移動完成則會返回 INP到位訊號,接著可以進行下一個目標的移動

被控端


  1. #include <Stepper.h>  
  2. Stepper stepper(96, 11, 10, 9, 8);  
  3. //定義11, 10, 9, 8為輸出腳位   
  4. void setup()  
  5. {  
  6. Serial.begin(9600);  
  7. stepper.setSpeed(60); // 將馬達的速度設定  
  8. }  
  9. void loop()  
  10. {  
  11.     Serial.println("NO COMMAND");  
  12.     String s = "";  
  13.     //接收字元組成字串  
  14.     while (Serial.available()) {  
  15.         char c = Serial.read();  
  16.         if(c!='\n'){  
  17.             s += c;  
  18.         }  
  19.         delay(5);  
  20.     }  
  21.     int move = 0;  
  22.     move = s.toInt();  
  23.     if(move!=0)  
  24.     {  
  25.       Serial.println("Moving");  
  26.     }  
  27.     stepper.step(move);//開始移動  
  28.     if(move!=0)  
  29.     {  
  30.       Serial.println("INP");  
  31.     }  
  32.     delay(1000);    
  33. }  

控制端


  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9. using System.IO.Ports;  
  10. using System.Threading;  
  11.   
  12. namespace motor_control  
  13. {  
  14.     public partial class Form1 : Form  
  15.     {  
  16.         public Form1()  
  17.         {  
  18.             InitializeComponent();  
  19.         }  
  20.   
  21.         private void Form1_Load(object sender, EventArgs e)  
  22.         {  
  23.             serialPort1.BaudRate = 9600;  
  24.             serialPort1.Parity = Parity.None;  
  25.             serialPort1.DataBits = 8;  
  26.             serialPort1.StopBits = StopBits.One;  
  27.             serialPort1.Encoding = Encoding.GetEncoding("UTF-8");
  28.             label1.Text = "PC狀態:尚未連線";  
  29.             serialPort1.PortName = "COM3";  
  30.         }  
  31.   
  32.         private void button1_Click(object sender, EventArgs e)  
  33.         {  
  34.             try  
  35.             {  
  36.                 serialPort1.Open();  
  37.                 Thread.Sleep(1000);  
  38.                 //timer1.Enabled = true;  
  39.                 button1.Enabled = false;  
  40.                 label1.Text = "PC狀態:連線中";  
  41.                 timer1.Enabled = true;  
  42.             }  
  43.             catch  
  44.             {  
  45.                 label1.Text = "PC狀態:Comport open fail";  
  46.             }  
  47.         }  
  48.   
  49.         private void button2_Click(object sender, EventArgs e)  
  50.         {  
  51.             string data = "";  
  52.             data = textBox1.Text;  
  53.             serialPort1.Write(data);  
  54.         }  
  55.   
  56.         private void timer1_Tick(object sender, EventArgs e)  
  57.         {  
  58.             string info =  serialPort1.ReadLine();  
  59.             label2.Text = info;  
  60.   
  61.         }  
  62.     }  
  63. }  

執行畫面

Step1: 建立連線



Step2: 送出移動距離,馬達開始移動



Step3: 移動到指定位置,回應到位訊號給控制端



硬體動作如以下影片所示


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3622709
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:涼涼風|C#|arduino

留言共 5 篇留言

小刀
很厲害的說~

06-26 23:50

貓貓風 ฅ●ω●ฅ
謝謝刀姊喔 ^^06-26 23:56
珀伽索斯(Ama)
以前實習課有做過,
但是這比七段顯示器還要來的難,
當時還是有成功過就是了。

06-27 01:07

貓貓風 ฅ●ω●ฅ
可能這功能比較少用,資料也比較少,是比較難沒錯~06-27 07:25
生不如死兔兔砲
寫完專題後完全不想在碰馬達qqq,當初寫轉彎想到燒腦(速度問題)

06-27 01:46

貓貓風 ฅ●ω●ฅ
不過最後有弄出來,冰玥也蠻厲害的呢><06-27 07:27
嚮鄉紅
arduino如果可以寫視窗程式就好了~

這看起來像是VB

06-27 23:32

貓貓風 ฅ●ω●ฅ
用我現在的範例就是用視窗來下指令控制馬達 arduino上如果要實現視窗只能用LCD + 薄膜鍵盤06-27 23:35
羽翼ˊ● ω ●ˋ
我又回奶ㄌ,問一下,arduino對實體物件的控制都要搭配他專用的嗎?還是可以買其它牌子的

01-11 21:21

貓貓風 ฅ●ω●ฅ
不用耶 基本上 電壓 或 介面 相同的周邊都可以控 沒有一定要專用的
01-11 21:33
我要留言提醒:您尚未登入,請先登入再留言

9喜歡★s1234567 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:C# LINQ... 後一篇:arduino serv...

追蹤私訊切換新版閱覽

作品資料夾

airsky00大家
爆肝中(゚∀。)看更多我要大聲說11小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】