目录
本文参考了【考拉工作室】单片机入门——Arduino控制步进电机拖动直线模组_哔哩哔哩_bilibili
电路
材料清单
从某宝购买:
42步进电机,附送6pin转4pin杜邦线
电机驱动TMC2209,附送散热片
驱动扩展板
杜邦线若干
arduino uno,及相应的usb数据线
上位机一台
12伏电源,电源最大输出电流最好在2A或以上。我只有一个1.5A的,凑合了。
万用表
前期调试
验证TMC2209是否正常
1 将TMC2209接入扩展板。
2 将12V电源的输出接入扩展板的输入端。注意,暂时不要让扩展板和42电机相连!否则驱动可能烧毁!
3 接通12伏电源。
4 使用万用表的电压档测量TMC2209的螺丝型电位器与GND之间电压。红表笔连电位器,黑表笔连GND
5 默认出厂的电压是1.25V左右。根据淘宝页面描述,TMC2209的输出电流和这个测量电压是1:1关系,即1.25A。假如你测量到了1.25V左右电压,说明TMC2209正常。
6 断开12伏电源。
组装电路
下面的操作中,涉及接触电子元件。为避免静电损坏元件,强烈建议操作者采取防静电措施。具体自行百度。
1 将TMC2209插入扩展板。注意取向:TMC2209板上的可调电位器一侧应靠近扩展板的MS1,MS2,MS3
2 给TMC2209贴散热片。注意散热片不要接触两边焊脚,避免短路。散热片底部有一张塑料纸。撕下塑料纸,露出胶,贴到TMC2209无芯片的那一面。
3 将扩展板上三个switch: MS1 MS2 MS3 全部设置为0。将12V电源的正负输出接入扩展板接线柱。但12V电源不通电
4 用6pin转4pin杜邦线连接42电机和扩展板。在扩展板上,1A-1B是一个线圈的两极;2A-2B是另一个线圈的两极。根据厂家提供的接线图,确认电机的线圈1的正负极接入1A1B,电机线圈2的正负极接入2A2B,A不一定对应线圈的+,B不一定对应线圈的-,但是假如1A对应线圈1的+极,那么2A也要对应线圈2的+极,类推B。否则应调整线序。
5 用杜邦线连接下述针脚:
扩展板EN -- arduino 7
扩展板STEP -- arduino 5
扩展板DIR -- arduino 6
扩展板Vcc -- arduino 5V
扩展板gnd -- arduino gnd
6 将arduino接入电脑
7 扩展板的12V电源通电
8 在上位机烧写arduino程序。烧写办法在此不赘述,仅奉上代码。
软件
使用arduino IDE 1.8.10
#define INTERVAL 100
void setup() {
// put your setup code here, to run once:
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(7, LOW);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(6, HIGH);
for(int k = 0; k < 1600; k++)
{
digitalWrite(5, HIGH);
delayMicroseconds(INTERVAL);
digitalWrite(5, LOW);
delayMicroseconds(INTERVAL);
}
delay(1000);
digitalWrite(6, LOW);
for(int k = 0; k < 1600; k++)
{
digitalWrite(5, HIGH);
delayMicroseconds(INTERVAL);
digitalWrite(5, LOW);
delayMicroseconds(INTERVAL);
}
delay(1000);
}
效果
arduino uno驱动42步进电机
存在的问题
细分
实验发现,扩展板的MS3 switch的位置对步进细分的调节无影响。将MS2 与MS1同时置于0位,步进电机位于1/8步进的状态,即一个脉冲步进1.8°/8.这是此套装置的单脉冲所能达到的最大步进。假如你需要1/2步进,可以考虑使用TMC2226;或者一个完整的步进,见下一篇博客。
发热
42电机与TMC2209的发热均严重,尤以42电机为甚。后续可考虑增加风扇散热