【《钢筋捆扎机电气控制设计案例》5000字】_第1页
【《钢筋捆扎机电气控制设计案例》5000字】_第2页
【《钢筋捆扎机电气控制设计案例》5000字】_第3页
【《钢筋捆扎机电气控制设计案例》5000字】_第4页
【《钢筋捆扎机电气控制设计案例》5000字】_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

钢筋捆扎机电气控制设计案例目录TOC\o"1-3"\h\u19914钢筋捆扎机电气控制设计案例 1192501.1控制方案设计思路 157101.3代码生成 7150891.4实际演示 1129001.5电机转速和时间校核 111.1控制方案设计思路根据前面的结构设计方案,我们可以确定了绑扎机的工作流程,设计电气控制方案时可以注意到,由于伸缩机构的设置,绑扎时扎丝的用量随着伸缩距离的改变而改变,总体上是呈正相关。因此在设计电气控制中,要加入一个传感器类似的设备来确定伸缩的距离,从而决定电机的转速和时长,保证扎丝能够全部用于绑扎,不会堵塞扎丝走过的轨道。在本科期间,通过各种各样的课程我学习过单片机、STM32、Arduino等等控制芯片,但是根据我自己实际的平时课题的使用和研究来看,单片机在工程里面应用的比较少,而STM32确实功能比较齐全,但是相应的结构比较复杂,体积也比较大,放在绑扎机里面是不合适的。Arduino结构简单,控制代码也不是很复杂,上位机的软件也比较成熟,而且主板尺寸也很小,完全适合用来控制。而且在以前的课程中做过Arduino和传感器。但是如果Arduino直接和电机相连接的话,串口输出电压不够,高电平输出为5V,而电机的额定电压是12V,所以还需要一个L298N驱动芯片和12V的外接直流电源,来驱动电机。除了这些之外,为了符合正常人们操作使用的习惯,还需要再加上电压检测传感器配合开关,保证电机能够随着工人按下开关而启动,而不是一接通电源就启动。所以最终我确定了电气控制方案,整体使用了Arduino、HCSR04超声波测距传感器、电压检测传感器(VoltageSensor)、USB开关、带线无档复位式开关、5V电源、12V电源、YS-3420微型高速永磁直流电机、L298N以及若干电线这些材料。如下图。图1.1.1Arduino图1.1.2L298N图1.1.3HCSR04超声测距传感器图1.1.4电压检测模块图1.1.5YS-3420微型高速永磁直流电机Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。跨平台ArduinoIDE可以在Windows、MacintoshOSX、Linux三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发。ArduinoIDE基于processingIDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,是对avr-gcc库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。L298N是一种高电压、大电流电机驱动芯片,该芯片采用15脚封装,主要特点是工作电压高,最高工作电压可达46V,输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率为25W;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机,继电器线圈等感性负载,采用标准逻辑电平信号控制;具有两个使能控制端,在不受使能信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作,可以外接检测电阻,将变化量反馈给控制电路;使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。•模块使用L298N作为主驱动芯片,具有驱动能力强,抗干扰能力强等特点•模块使用内置75M08通过驱动电源部分去电工作,但是为了避免稳压片损坏,当使用大于12V驱动电压的时候请使用外置的5V逻辑供电•模块使用大容量滤波电容,续流保护二极管,可以提高可靠性•逻辑电压:5V•逻辑电流:0Ma-36mA•存储温度:-20℃到+135℃•工作模式:H桥驱动•驱动电压:5V-35V•驱动电流::2A(MAX单桥)•最大功率:25W•产品尺寸:60.0mm*60.0mm而YS-3420微型高速永磁直流电机的优点如下:1、结构紧凑,体积小,小型高效;2、传动速比大,扭矩大,承受过载能力高;3、运行平稳,噪音小,经久耐用;4、配用电机品种广,且均可实现调速控制。5、适用性强,安全可靠性大;6、安装简易,灵活轻捷,性能优越,易于维护检修;HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。超声波模块有4个引脚,分别为Vcc、Trig(控制端)、Echo(接收端)、GND;其中VCC、GND接上5V电源,Trig(控制端)控制发出的超声波信号,Echo(接收端)接收反射回来的超声波信号。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。其中,HCSR04超声波测距传感器的测距范围是20mm到4500mm,大致符合我们的工作范围。测距精度为3mm,测距周期为10us。主要参数有:使用电压:DC—5V静态电流:小于2mA电平输出:高5V电平输出:低0V感应角度:不大于15度探测距离:2cm-450cm高精度可达0.2cm工作流程为:a.单片机引脚触发Trig测距,给至少10us的高电平信号;b.模块自动发送8个40khz的方波,自动检测是否有信号返回;c.有信号返回,通过IO输出一高电平,并单片机定时器计算高电平持续的时间;d.超声波从发射到返回的时间。电压检测模块能够实现检测大于5V的电压,此模块基于电阻分压原理所设计,能使红色端子接口输入的电压缩小5倍,模拟输入电压上限为5V,那么电压检测模块的输入电压则不能大于5V×5=25V(如果用到3.3V系统,输入电压不能大于3.3Vx5=16.5V)。因为Arduino所用AVR芯片为10位AD,所以此模块的模拟分辨率为0.00489V(5V/1023),故电压检测模块检测输入下限电压为0.00489V×5=0.02445V。通过3P传感器连接线插接到传感器扩展板,不仅可以轻松实现对电压电量大小的检测,监控互动媒体作品或机器人电池供电的电量,也可以通过IICLCD1602液晶模块显示电压制作电压监测器。电机的参数为工作电压12V,空转转速3500RPM/MIN,空载电流为0.31A,额定转速3200RPM/MIN,额定电流为2.42A。而我们的动作是实现一个绑扎还有空转,因此都是处于轻载荷和空载荷的工作状态,因此可以基本认定工作时电机转速在3500RPM/MIN,具体的转速可以通过实验来进行测量。1.2相关参数的计算在之前的实习中,我通过观察、测量以及对现有绑扎机的测算,人工绑扎一个绑扎点的时间平均为1.6s左右(新手员工用时会稍长,绑扎距离较远或者较近的点也会稍长),绑扎机绑扎一个点的时间为0.8s左右,比较符合产品包装上面的描述,所以我在设计电机控制时间的时候,考虑到工人和现有产品,目标设计处于最长伸长距离时用时1.4s,而处于最短距离时用时为1.2s,算上对准绑扎点和绑扎完成之后离开绑扎点的时间,总共需要1.2s-1.9s的时间。这样比较符合工人们人工绑扎的节奏,也能够保证效率。因为扎丝用量也是会随着伸长距离的增加而增加,所以在时间设定好的情况下,需要通过调整转速的方式来控制。正好Arduino的5、6、10、11等串口可以通过代码实现点击PWM控制,因此可以实现对电机转速的控制。同样的,HCSR04超声波测距传感器的控制原理是只需要提供一个10us以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。输出一个高电平,高电平持续的时间Temp就是超声发出到回来使用的时间,从而可以使用如下的公式来计算出伸缩机构的距离x(cm)。电压检测传感器(VoltageSensor)测量用时1000us。根据测量,绑扎机使用的扎丝平均每次用量是400mm,而人工绑扎使用的绑扎用量为200-250mm。但是整体绑扎效果还是机器绑扎效果更好,绑扎也更紧,所以考虑我设计的绑扎机扎丝用量在600-800mm,主要还是看伸长的距离L(cm)决定。而x(cm)又和超声波的检测时间Temp有关。L=(Temp∗17)/1000(cm)(4-1)根据读出的距离确定现在的工作长度S(cm):S=L+29.6Smm根据工作长度S,就可以确定工作总时间t(s)和工作时间twork(ms):t=1/1300∗tms=t∗1000(ms)(4-5)twork=0.5∗tmsms当然,仅仅是这些还是不够的。在实际编写代码的过程中还是遇到了不少问题。第一就是电压检测的问题,在一开始打版本中,由于arduino电压检测模块程序的开源代码是一个不停检测的过程,大概1000us就检测一次,会导致程序不停地重置,因为后面是要求根据检测到的电压执行动作,这就是需要解决的问题。同样的,还有一个问题就是我用的是无档复位式开关,因为这也是参考工人的使用习惯和平时常见的绑扎机,所以在检测电压12V后,电机转完之后,工人还是会有一小段时间一直按着开关的,此时电压也是检测12V,还是可能会引起电机转动。所以如何在这段时间内保证电机不转动,这也是需要解决的问题。如果一直检测不到电压符合要求的话,会以一定的周期循环检测电压,这样就可以实现按下开关再启动电机。整体的工作流程如下图:图1.2.1控制流程图1.3代码生成根据之前总结的控制流程,那么代码就不会很难编写。由于使用的是Arduino,和传感器,Arduino代码是用C++语言编写的,增加了一些特殊的方法和函数。Arduino常用数据类型转换函数:char():将任意类型的值转换成char类型;byte():将任意类型的值转换成byte类型;int():将任意类型的值转换成int类型;long():将任意类型的值转换成long类型;float():将任意类型的值转换成float类型;常量:HIGH、LOW表示读写数字IO脚的值INPUT、OUTPUT表示数字IO脚的方向true、false数字IO:pinMode()pinMode(pin,mode);pin:0-13mode:INPUT/OUTPUTdigitalWrite()digitalWrite(pin,Value);Value:HIGH/LOWdigitalRead()digitalRead(pin,Value);Value:HIGH/LOW串口收发函数:Serial.begin(speed)一般取值300,1200,2400,4800,9600,14400,19200,28800,38400,57600,115200voidsetup(){Serial.begin(9600);//又称为波特率}Serial.end()禁止串口传输函数。此时串口传输的pin脚可以作为数字IO脚使用Serial.end();基本的Arduino代码逻辑是一个“if-then”结构,可以分为4个块:●设置-通常会写入Arduino代码的Setup部分,并执行只需要执行一次的操作,例如传感器校准。●输入-在loop函数的开始处,读取输入信号。这些值将用作条件(“if”),例如使用analogRead()从LDR读取环境光强度。●操作数据-本节用于将数据转换为更方便的形式或执行计算。例如,AnalogRead()输出0-1023的读数,其可以被映射到0-255的范围,以用于PWM。●输出-本节根据上一步计算的数据定义逻辑的最终结果(“then”)。下面需要解决的就是在计算公式时遇到的问题了。首先是不断检测的问题,这里使用一个while语句,而且还是while(电压不满足要求),这样就可以让电压不足时一直检测,满足时就不检测。其次就是我在实际仿真的过程中发现电机一直在晃动,而且旋转时间几乎不会改变,在我反复试验以及检查代码之后发现,Arduino的int类型的数据范围是-32,768~32,767(2字节),虽然使用的C++,但是int类型数据是2字节,所以在我使用us作为单位进行时间控制的时候,就会出现错误,所以我全部改成了float类型的数据,它是4字节的,范围是-3.4028235E+38to3.4028235E+38,完全满足要求。最后就是上面提到的那个问题,这个问题也是困扰了我比较久的问题。当时我用了很多if和while语句,发现单用电压的检测是不太好实现的。所以还要额外的插入参数n,这个n就是用来和电压大小一起表示表示电压状态。n的值只有1或者2。所以有四种情况:n=1,电压不足。这种情况不会启动电机;n=1,电压符合。这种情况下电机会启动;n=2,电压不足。这种情况不会启动电机;n=2,电压符合。这种情况不会启动电机。即:表4-1电机运行状态电压不足电压符合n=1电机不动电机启动电机不动n=2电机不动总结一下,想要实现这样的功能就是需要通过一种表达方式来表达至少四种以上的状态,所以这是仅检测电压大小无法实现的事情,那么引入一个变量n就可以了。我们令电压不足时n=1,这样电机处于状态1。当电压符合要求时,n不变,仍然为1,这样电机转动。然后电机操作完成之后,令n=2,这样即使工人没有松开开关,电压符合要求,也不能启动电机。最后松开开关,会有短暂的一小段时间处于状态3,电机依旧不启动,而因为一个循环指令的存在,电压会重新检测到不足,令n重新回到1,就可以不断重复上述过程,从而复刻现实中的绑扎过程。最终的代码如下:#definePIN_TRIG12#definePIN_ECHO11intinput1=5;intinput2=6;intval;floatS;floatSmm;floatt;floattms;floattwork;floattsh;intn;floatx;floattemp;floatt1;voidsetup(){Serial.begin(9600);pinMode(PIN_TRIG,OUTPUT);pinMode(PIN_ECHO,INPUT);pinMode(input1,OUTPUT);pinMode(input2,OUTPUT);}voidloop(){val=analogRead(0);t1=val/40.92;val=(int)t1;delayMicroseconds(100);while(val<5){val=analogRead(0);t1=val/40.92;val=(int)t1;n=1;delayMicroseconds(1000);}if(val>=5,n==1){Serial.println(val);digitalWrite(PIN_TRIG,LOW);delayMicroseconds(2);digitalWrite(PIN_TRIG,HIGH);delayMicroseconds(10);digitalWrite(PIN_TRIG,LOW);temp=float(pulseIn(PIN_ECHO,HIGH));x=(temp*17)/1000;Serial.print("Echo=");Serial.print(temp);Serial.print(",Distance=");Serial.print(x);Serial.println("cm");S=x+29.5;Smm=S*10;t=(1/1300)*(Smm-320)+1.2;tms=t*1000;twork=0.5*tms;digitalWrite(input1,HIGH);//给高电平digitalWrite(input2,LOW);//给低电平delay(tms);//延时digitalWrite(input1,LOW);//给低电平digitalWrite(input2,HIGH);//给高电平delay(tms);//延时digitalWrite(input1,LOW);//给低电平digitalWrite(input2,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论