完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
2个回答
|
|
|
|
|
|
步进电机
TB6600驱动器 **接线说明:**重点内容!!!!为什么一写步进电机就老生常谈这个接线问题问题,因为实在太重要了,关系到后面的工作能否继续开展。 //控制步进电机,必须要有3条线接到Arduino uno控制板上,不管是共阴还是共阳接法。//三条线分别是:PUL,DIR,ENA,为什么不标符号,共阳接法就是PUL+.DIR+,ENA+//共阴接法就是PUL-,DIR-,ENA-,//共阳接法就是将PUL+ DIR+ ENA+串联一起,再接到Arduino的5V供电引脚上,PUl- DIR-分别接到Arduino板的控制引脚上,还剩下的ENA-,可以接到5V,或者悬空不接,接到GND引脚上,经实验也无影响。//共阴接法就是与之相反,最后的ENA+,可以悬空,也可以接GND,但是不能接到5V上,否则不转,有影响。//共阳极接线注意一点,ENA+接到Arduino板子上的5V连接不能串太大的电阻,可以串几Ω的电阻,或者不串联电阻,直接接接入,但是不能串1K的的电阻,否则电机不转!!!//在其他控制器中使用,例如PLC是24V控制的,就注意,必须串联2K的电阻,进行限流分压//本次实验电机驱动采用共阴极接线方式//下面是控制引脚接入Arduino说明:1. PUL-, DIR-, EN- 连接一起,再接到Arduino UNO 的GND上面,也叫使能端,必须要接的线!!!2. PUL+ 连接到 Arduino UNO的9引脚,控制步进转动的3. DIR+ 连接到 Arduino UNO的 8引脚,控制步进转动方向的4. EN+ 连接到 Arduino UNO的 GND上,也可以悬空不接!5. BUTTON按钮3个,实际上2个也够了,2个的话停止按钮就不需要了,按键必须是带自锁的按键,就是压下去不会立马弹起来的,需要再按一下,就弹起来的这种自锁按钮,连接到 Arduino UNO的5,6,7引脚,串联一个限流电阻1K到接到GND。 程序部分 /***********************Connect to the Arduino:1. PUL-, DIR-, EN- 连接一起,接到Arduino UNO 的GND上面Arduino2. PUL+ 连接到 Arduino UNO的9引脚3. DIR+ 连接到 Arduino UNO的 8引脚4. EN+ 连接到 Arduino UNO的 GND上,也可以悬空不接!************************/#define dirpin 8 //DIR+#define steppin 9 //PUL+#define button 7 //按键,5,6没有宏定义了,直接写的引脚号,自己接线时注意一下//给3个按键的初始状态赋值boolean state1 = true;boolean state2 = true;boolean state3 = true;void setup() { Serial.begin(115200);pinMode(dirpin, OUTPUT);digitalWrite(dirpin,LOW);pinMode(steppin, OUTPUT);digitalWrite(steppin,LOW);pinMode(button, INPUT);digitalWrite(button,HIGH);pinMode(6, INPUT);digitalWrite(6,HIGH);pinMode(5, INPUT);digitalWrite(5,HIGH);}void loop() { state1 = digitalRead(button); state2 = digitalRead(6); state3 = digitalRead(5); if((state1 == HIGH) &&(state2 == LOW)){MotorZ();} else if ((state1 == HIGH) &&(state3 == LOW)){MotorR();} // else MotorStop();}void MotorZ(){ digitalWrite(dirpin, HIGH); // 设置转动的方向 Serial.println(“MotorZ.。。”); for(int i=0;i《1;i++){ if(state1 ==LOW){break; Serial.println(“stop.。。”);} digitalWrite(steppin, LOW); // 从低到高的变化 delayMicroseconds(400); digitalWrite(steppin, HIGH); delayMicroseconds(400); // 这个延迟时间接近最高速度}}void MotorR(){ digitalWrite(dirpin, LOW); // 设置转动的方向 Serial.println(“MotorR.。。”); for(int i=0;i《1;i++){ if(state1 ==LOW){break; Serial.println(“stop.。。”);} digitalWrite(steppin, LOW); // 从低到高的变化 delayMicroseconds(400); digitalWrite(steppin, HIGH); delayMicroseconds(400); // 这个延迟时间接近最高速度 }}//void MotorStop(){digitalWrite(steppin, LOW);digitalWrite(steppin, LOW); } |
|
|
|
只有小组成员才能发言,加入小组>>
646浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 12:06 , Processed in 0.534761 second(s), Total 51, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号