步驟1:您將需要什么
該項目將需要一些注意事項,如果您正在閱讀此內容,則可能已經擁有:/p》
*某種風味的arduino(我正在使用UNO)
*步進電機(請查閱規格表)
* L298N驅動程序類似于圖片中的電路板
*連接線,剝線鉗,電線推子等(在該項目上無需焊接)
數字萬用表可能會有所幫助
第2步:將L298N連接到Arduino
我在上一節中對此進行了描述,但讓我們詳細介紹一下:
L298N模塊IN1-4上有四個引腳,有四個輸出連接OUT1-4。模塊的接線盒中還有一個+ V和GND。還有一個+ 5V端子(我們將不再使用)。
IN引腳可以連接到Arduino上的任何控制引腳。在我的情況下,我在UNO上有一個LCD屏蔽,因此我使用了模擬引腳(A1到4,這在以后很重要)。然后按如下方式連接它們:
A1-》 IN1
A2-》 IN2
A3-》 IN3
A4-》重要的是,還必須將arduino的接地引腳連接到公共接地端子,否則將無法正常工作!?。。?!
然后我將+ V連接到可變電源,然后通過端子將地再次接地。
步驟3:為步進器接線
如果您查看規格表,它應該列出哪些導線是A + A- B +和B-有時,它們不使用此特定語言,但是您所擁有的是一盒帶有4根導線的盒子,它們被分成兩組。您可以通過測量電阻(或連接)來查看萬用表,以查看配對的兩個(如果沒有說明)。為了使電動機真正旋轉,您需要確保A +和B +分別掛接到OUT1和OUT3。如果您對電動機進行接線,而電動機剛剛振動,則其中一對會反轉。
接線圖基本上是:
A +(黑色)-》 OUT1
A-(綠色)-》 OUT2
B +(藍色)-》 OUT3
B-(紅色)-》 OUT4
第4步:編程:概述和警告
因此,當我第一次開始本奧德賽時,文檔非常少,而且更糟糕的是,大多數示例仍然依賴于使用digitalWrite來處理引腳操作,或更糟糕的是,仍然依賴于內置的arduino步進器庫,該庫實際上實現了同一件事。但是,以這種方式進行操作存在很大的問題。 digitalWrite系統非常慢,而且,如果要執行的是digitalWrite,然后再執行另一個digitalWrite,則它確實是丑陋的,可怕的慢速代碼。
如果您還不熟悉它,則應該閱讀以下內容:
https://www.arduino.cc/zh/Reference/PortManipulati 。..
這允許我們要做的是,而不是一次寫高電平或低電平引腳,只需通過尋址控制這些引腳的寄存器,就將整套引腳高電平或低電平寫入即可。
警告:L298N H橋本質上是4個單獨的開關,作為一個開關運行,如果與現有的arduino Stepper庫一起使用,則有一個主要的壞習慣,或者如果您使用重復的digitalWrite()語句,也就是說,由于設置引腳之前的等待時間,則可能同時將IN1和IN2置于高電平。這會造成死機,并且可能不超過一兩分鐘,可能會冒煙檢查您的橋梁。我花了幾天的調試時間才能弄清楚橋為何要拉4安培的電流,并在運行約5秒鐘后,散熱器變得太熱而無法觸摸。
第5步:編程示例
因此,這里可能需要或可能不需要一些額外的東西,例如LCDShield的代碼或檢查主循環執行時間的代碼。
如果您使用的是A1-A4,則應編譯該代碼(Arduino IDE 1.6.5),并使電動機旋轉。這段代碼大部分是我自己的,從Stepper.h文件中借來了或修改了一點。
注意:
“ StepFast”上的延遲以微秒為單位,因此2000僅為2毫秒,大多數情況下,如果嘗試以小于1200的延遲步進電動機它會跳過一些步,盡管對于大多數電動機來說,800步是4整圈,但您可能會發現電動機只能轉動四分之一圈。
此代碼僅作為示例,目前不反向,它也不會吸收L298的反饋,也不會做我想做的其他很多事情。在查看現有的Stepper.h時,我可能會在接下來的幾周中使用此方法來處理步驟,以重新編寫它,因為現有的方法可能會損壞L298或任何其他H橋配置。
#include
#include
//Keypad Shield LCD pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
long unsigned int lasttime;
long unsigned int timer;
int timeuntil;
float exectime;
int smallcount;
void setup()
{
lcd.begin(16, 2);
lcd.print(“Motor Test”);
delay(2500);
lcd.clear();
}
void StepFast(long int steps,long unsigned wait)
{
DDRC = B00011110; //set arduino ports A1-A4 output remember this works backwards!
// ^-pin 7^-pin 0
int pattern = 0;
int mydelay = 0;
for (int i = 0;i 《 steps; i++)
{
switch (pattern)
{
case 0: // 1010
PORTC = B00001010; //arduino analog port we‘re using pins A1-A4 So we’re only going to change those
break;
case 1: // 0110
PORTC = B00001100;
break;
case 2: //0101
PORTC = B00010100;
break;
case 3: //1001
PORTC = B00010010;
break;
}
pattern++;
if (pattern 》 3) {pattern = 0; }
delayMicroseconds(wait);
}
PORTC = B00000000; //de-energize to motor
}
void loop()
{
lasttime = timer;
timer = millis();
exectime = (timer - lasttime)/1000;
if (timeuntil 《 timer)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Clockwise ”);
lcd.print(exectime);
lcd.setCursor(0,1);
lcd.print(timer);
lcd.print(“ ”);
lcd.print(lasttime);
timeuntil = timer + 1500;
}
StepFast(800,2000); //steps,delay in microseconds
delay(5000);
}
注意:
此代碼在?300RPM的中等步進速度(步進率為1ms左右)下可以很好地工作,因為您嘗試將其提高到1000RPM,除非電壓升高,否則它將開始丟失步驟,但是,如果以》 5V在60RPM(5ms)下運行電動機,則L298N會開始變得很熱。
步驟6:事后的想法和補充
所以我在原始文章中沒有真正提到的一些事情我非常重視在處理過程中。其中的主要問題是:
隨著步進速度的增加,電源電壓也必須增加
使用引腳ENA和ENB作為PWM輸入以將電壓保持在低低步速,并隨著步速的增加而提高
加速和慣性應對
-
步進電機
+關注
關注
152文章
3145瀏覽量
148756 -
L298N
+關注
關注
21文章
224瀏覽量
79245 -
Arduino
+關注
關注
188文章
6485瀏覽量
189622
發布評論請先 登錄
相關推薦
HTD9801雙通道H橋電機驅動芯片中文手冊
HTD8811雙通道H橋電機驅動芯片中文手冊
HR8833雙通道H橋電機驅動芯片中文手冊
HTD9810雙通道H橋電機驅動芯片中文手冊
我用9V電源給L298N供電,但是接線后l298n輸入端電壓變成了3V多,請問這是咋了?
率能SS6810R_雙H橋驅動芯片_步進電機驅動芯片
L298N-驅動直流電機和步進電機的詳細資料大總結
使用MSPM0 MCU為步進電機和有刷直流(BDC)電機實現優化的H橋驅動器控制

硬件模塊---L298N電機控制模塊實現方法

評論