|
本帖最后由 461968533 于 2022-5-17 10:15 编辑
第一次用Arduino做一个小项目期间实验无数想了很多方法,最后终于做出这套小设备,希望给小白们借鉴一下案例,也希望大神们能指出不足之处共同学习。
先说一下项目目的:用Arduino控制57步进电机带动平台运动,过程中电磁阀工作出气推动气管里面的锡膏出锡。最终结果是在焊盘上拉一条均匀的锡膏。
所用材料有:24V电源,降压器(24V转12V用于Arduino和传感器供电),5V继电器,Arduino UNO板,DM542步进电机驱动器,57步进电机,减压阀,24V电磁阀。X轴平台。
首先用SolidWorks画3D图纸,铝型材按照图纸裁切组装,把各两件组装好,因为刚开始画图纸没买齐材料后面来的材料都是用热熔胶料固定的。后面又增加了一个Arduino的控制板,郁闷的是加工LED灯给我做反了。也只能反着用了。
看成品:线接的有点乱,最终结果还是比较满意的。
代码部分:
volatile int i; //定义一个变量i
void setup(){
i = 0;
pinMode(5, INPUT_PULLUP); //引脚5为上拉输入高电平,自动模式开关
pinMode(6, INPUT_PULLUP); //引脚6为上拉输入高电平,启动开关
pinMode(A0, INPUT); //引脚A0为输入模式,传感器1开关
pinMode(3, OUTPUT); //引脚3为输出模式,电机正反信号
pinMode(A1, INPUT); //引脚A1为输入模式,传感器1开关
pinMode(4, OUTPUT); //引脚4为输出模式,出锡开关
pinMode(2, OUTPUT); //引脚2为输出模式,电机信号
pinMode(7, INPUT_PULLUP); //引脚7为上拉输入高电平,手动模式开关
pinMode(8, INPUT_PULLUP); //引脚8为上拉输入高电平,X轴正方向开关
pinMode(9, INPUT_PULLUP); //引脚9为上拉输入高电平,X轴负方向开关
pinMode(10, INPUT_PULLUP);} //引脚10为上拉输入高电平,出锡开关
void loop(){
if (digitalRead(5) == LOW && digitalRead(6) == LOW) { //引脚5和6同时为低电平才能进入自动模式
if (digitalRead(A0) == LOW) { //传感器判定防止越位
digitalWrite(3,HIGH);}
if (digitalRead(A1) == LOW) {
digitalWrite(3,LOW);}
for (int i = 0; i <= 2400; i = i + (1)) { //每80跑1mm
if (i > 10 && i < 2000) { //如果i在这个范围就出锡,否则不出锡
digitalWrite(4,HIGH);
} else {digitalWrite(4,LOW);}
digitalWrite(2,HIGH);
delayMicroseconds(1000);
digitalWrite(2,LOW);}}
if (digitalRead(7) == LOW && digitalRead(8) == LOW) { //引脚7和8同时为低电平才能手动向X轴正方向走
digitalWrite(3,HIGH);
digitalWrite(2,HIGH);
delayMicroseconds(1000); //延时时间越长跑的越慢
digitalWrite(2,LOW);}
if (digitalRead(7) == LOW && digitalRead(9) == LOW) { //引脚7和9同时为低电平才能手动向X轴负方向走
digitalWrite(3,LOW);
digitalWrite(2,HIGH);
delayMicroseconds(1000);
digitalWrite(2,LOW);}
if (digitalRead(7) == LOW && digitalRead(10) == LOW) { //引脚7和10同时为低电平才能手动出锡
digitalWrite(4,HIGH);
} else {digitalWrite(4,LOW);}}
|
|