|
本帖最后由 qrut 于 2024-1-11 10:16 编辑
之前挤针管焊油或者针筒点胶时由于粘性作用焊油或者胶水并不能顺滑的被挤出来,小力不出 大力由于压力作用突然冒出一大股,出胶速度和出胶量都很难控制,使用起来很不方便。于是想买个打胶器,马宝看了一圈有手动和气动的。
如下图几十块的手动款,庞大的体积和长度拿起不方便,由于手动挤压也不能达到较高精度,应对一些细致场合还是不好用,并且价格也不算便宜。
下图是100块-几百块 甚者几千块的气动款,体积更加庞大,有个大铁盒子机身。使用气体驱动能达到一定精度,但是由于管道和气体的压缩特性,导致应对精度更高的场合还是不能胜任,小胶量踩下踏板气体被压缩针筒出口未必会出胶 或者缓慢出胶,实用性还是不高。
体积小巧没有以上缺陷的高精度电动打胶器基本买不到,于是只能自己做一个。这个项目从立项到成品完成总共耗时大概1个月业余时间,其中机械电子硬件部分半个月,软件开发调试半个月(包括各项极限参数适配测试),基本一个人干了一个团队的活儿,是我diy历上最耗精力的作品之一。
为了体积小巧和高精度,就必须采用电动手持式的袖珍方案,核心部件需要一个电动推杆,成品的小型化电动推杆很贵,类似下图的马宝要100多块,价格简直是抢劫,而且基本参数还不适用此项目。
既然这样也只能自制了,下图是电动减速伸缩丝杆,马宝10元左右,体积小巧,参数可选范围很大,非常适合此项目的要求。
尺寸数据
为了适合本次应用,需要对电压 电流 转速 力矩 行程 做全面考虑,经实际测试选定3v 15转 55mm行程 的型号,这个型号实际和6v 30转 12v 60转是一个型号,这个电机工作电压范围很宽。3v低压低转速能工作应对精密行程控制,实现高精度打胶的关键。12v高压高转速用来应对快速的后退行程,尽量减少推杆回缩时间。
如下图参数表红框标记,这个表格除了转速和减速比可以看看,其他诸如 空载电流 负载电流 堵转电流啥啥的基本上是瞎写,看看就好,以实测为准。
以下实物展示
选的55mm行程,这个行程基本能应对,5cc和10cc针筒的行程要求。
体积很小巧
红包撸的不锈钢管,用作伸缩杆,参数也是经过挑选的(6x0.3)。截取一段,长度略短于10cc针筒行程。
一个螺丝俩螺母搅到一起
磨成圆柱形,正好能塞到不锈钢管内,这样就能配合丝杆转动进行伸缩行程了。
如下图
制作法兰片,原推杆有配套法兰(需另购),但是体积很大不适合此应用,于是自制。一块2mm厚黄铜片,打印好外形粘好,薄厚 大小 形状 都是经过全面考虑的,保证稳固的前提下需要尽可能的薄,以便可以尽量扩展运动行程。
加工好,高精度加工很耗时。
磷铜焊条和不锈钢管钎焊好打磨,管子内部圆柱螺纹套再顶部焊接法兰盘
杆子另一头螺丝套也钎焊好
红包撸的2mm黑色亚克力,一面镜面 一面磨砂。
台锯切好料板,所有尺寸也都是全面综合确定的,要足够小 还要长度够用 坚固性的考虑 配合主板后的内部空间考虑 手握持大小舒适感上的考虑等等,每一步都不是随随便便的。
切好后
先顶盖打孔
半剖面展示
滑道和法兰片的配合
四条滑道装配好后,由于需要兼容5cc和10cc针筒没有固定行程,因此不能采用机械限位,后面会配合mcu使用电子限位。
各滑动部位上润滑脂
固定好电机
装配好上盖
这样定制的电动推杆就做好了
下面制作卡具,为了兼容5cc和10cc针筒,可谓绞尽脑汁,主要是10cc针筒本身体积就很大和5cc差别很大,卡具的设计很难做到体积小巧的情况下还兼容两种针筒,想了几种方案,最后确定最合适的一种。保证体积最小的前提下不牺牲快拆快装特性,且兼容两种针筒。
切一块铁片
打磨掉表面喷漆
中心打孔
加工成这样,由于高精度手工加工,这一部就好几个小时。
再加工一个定制垫片
此部位强度要求不高,为了不高温氧化选择锡焊连接
焊接好垫片,可以看到和5cc针筒正好相符
针筒卡在垫环上用于定位和固定
针筒柄垂直放置
拧90度就卡住了,快捷准确牢固,拆卸同样1s
垫片是这样制作的,固定好夹电钻上磨
大垫环也做好了
和小垫环为可拆卸紧配合
这是卡10cc针筒的效果,这样就实现了双型号针筒兼容。
下面给卡具和垫环镀镍防锈
完成后
下面再切割一些料板,准备制作外壳顶盖
打孔后
和卡具固粘好
再和电动推杆固定好
一颗不锈钢平头螺丝
全长截取2cm,为啥2cm?因为经过测量计算后确定的,这颗螺丝用作推杆的微调行程,2cm保证兼容5cc和10cc,又不会和伸缩杆内部丝杆最大行程打架。
如下图
为了有一定的紧固性和阻尼感,既可以轻易拧动,又不会过于松动,需要点一点儿螺丝胶。
螺丝拧到头的样子,螺丝顶端平头,还用来充当推杆的接触面儿使受力均匀。
为了增加强度卡具和机身还有内部推杆机身需要加固连接,对应部位打孔,先1mm小孔再大孔,精度要求较高需要台钻。
打孔后沉孔
加工完成后,中间的小垫环对应部位也需要钻出缺口
拧1.3mm沉头螺丝
完成后不影响大环的拆卸
制作外壳,左右面
尾部充电选用c口,和主板连接剩余距离有限,因此需要薄板儿,由于同种材料薄板很贵且不一定有特定厚度,因此自己加工。
台钻上配十字滑台铣薄
铣好后
1.3mm一点儿不差
电机引线粘好外壳左右面还有底面
下面制作上下面
小块儿的料板是推杆尾部垫片
由于尽量缩减厚度,上下面需要1mm厚度,以下铣好后
粘好一面
打胶器采用数控方案,因此需要一个屏幕,0.91寸的oled屏,板子较厚且背面有元件,因此推杆外壳上面需要铣槽让路。
铣好后
这样屏幕就可以平贴到板子上了,最大限度减小厚度。
上面板和外壳四周需要打孔后, 面板打孔后沉孔,面板四周需要倒角。
面板屏幕位置掏孔,开孔大小照顾了屏幕可视区域和无用的装饰黑边大小,确保协调。
1mm厚透明pvc(相比亚克力不那么易碎)制作镜面,加工成对应大小。
uv环氧树脂粘好镜面,这里必须uv环氧胶,不然粘接部位起雾,镜面就报废。
最后面板开按键孔,孔的位置经过多组实验取的最佳间距,既保证美观还要保证使用舒适。
底壳开充电口和电量指示孔
以上机加工部分基本完工了,下面开始设计电路。总体以mcu为核心,功能上需要实现 前进 步进 后退 操作,并且前进速度 步进速度 步进时长 需要可调,因此电机需要正反转控制,需要pwm调速控制, 电动推杆电子限位,因此需要电流检测, 要实现电量电压低电指示,因此需要电压采样,功能调控人机交互还需要一片显示屏。
下图为基本原理图,由于采用mcu非低功耗版本,为了实现软关机的同时超低功耗需要增加外部零功耗开关机电路,左上角部分为零功耗开关机电路,由两颗mos和外围组成,采用软硬件结合开关机策略,静态q2不导通功耗为零(不包含充电ic静态),当按下电源键sw1 q2导通,ldo工作 mcu得电工作,同时检测到按键按下io口输出维持信号到q1,松手后q2维持信号由pa2和q1提供,开机完成。
开机后,mcu再次检测到sw1按下则拉低pa2撤销维持信号,松手后完成关机。sw1既起到开关机作用还会复用其他功能。sw2,3,4 分别后退 步进 前进 按键,同时还复用菜单功能按键。由于需要实现开机和关机充电,同时识别充电和非充电壮态(用于电量指示策略),还需要检测充满信号,因此还需要检测充电ic 状态由两个io口pa3 pd4实现。 电压采样电流采样由pd5 pd6 配合内置adc完成。
正反转控制需要h桥驱动,由dvr8837实现。h桥vm最高工作电压上限11v,因此设定vm电压为10v,10v高压源由sb628提供。由于电机功率较小因此采用500mr的电流采样电阻,c11用于滤除高压输出纹波和电机脉动带来的干扰,c12功能很重要,用于电机启动瞬间电流的提供,此部分瞬时电流不计入电流采样,防止启动时电流过大造成堵转保护误动作。两路pwm输出由pc3 pc4提供,
屏幕i2c通讯使用软件模拟(原硬件i2c最高时钟速率和io口速度都不够用)因此由软件i2c配合高主频和两个高速端口pd2 pd3实现。
以上都是常用元件就不提供资料了,8837h桥驱动不常用,下面典型原理图
下面pcb图正面
反面 充电ic和h桥底部 过孔开窗露铜帮助散热
3d预览
过了几天板子到了,板子厚度1mm(这个经过提前设计,按键板要求板厚1mm才能适配按键厚度确保合适)
反面
焊好后的板子
电机需要pwm调速,因此需要确定最佳pwm频率,这个频率早年看到某电子论坛很多人业内人士都不知道怎样确定,这里简单说下测定方法,电机线圈相当于一个电感,感抗随频率升高而升高,因此pwm频率的选定必须保证在工作频率下仍旧能输出将近满功率(一般容限10%以内),假如直流直驱3w功率,应用pwm后最大占空比时必须保证输出功率90%以上才合适。
小功率电机功率小线圈感抗较大,一般要求频率较低,大功率电机则相反,如果小功率电机用很高的pwm频率则由于复阻抗极大增加将导致占空比很高时仍旧不转。那如何确定呢?其实用电桥测下堵转复阻抗就行,如下图:此电机感抗6mh左右,感抗较大,因此pwm频率必需要较低。
到底多低合适呢?测一下就知道了,此电机堵转直流电阻30欧左右,下图是100hz时的复阻抗30.75,增大较少。
再测120hz,复阻抗和感抗都略有升高,都在10%左右,是个较为合适的频率。
再看下1khz时,复阻抗已经50欧,感抗都38欧了,如果这个频率下调速则最大输出功率将大约降低一半。因此综合考虑pwm最佳频率确定在100hz,这个频率和很多成品mini电动起子是差不多的。
一粒600mah聚合物电池
装配好整机
以上硬件部分基本完工,下面开发软件部分
主函数部分,上电先切换cpu主频,优先初始化io口,tim4(用于开机按键快速识别和输出维持信号做准备) ,第二优先adc 快速获取电压电流指示电压电量和低电判断做准备,再初始化pwm并装载控制参数(读取eeprom预设装载整机控制参数),由于oled上电需要最短几十ms的复位时间,如果提前初始化会影响零功耗开关机电路维持信号的建立(延迟会导致松开电源键有可能不能及时输出power_hold维持信号导致开机失败),
因此把oled初始化放到开机完成后再初初始化。
按键控制部分逻辑非常复杂,在实现控制功能的前提下针对所有误按组合等异常情况作了全面的debug和异常防御性处理,这部分也是绞尽脑汁,保证任何情况下胡乱操作也不会产生不良后果(短路过流,功能错乱, 死机崩溃 ),例如前进时误按后退,此时需要考虑到pwm输出状态和电机堵转并反转的过程,需要先预防性关断pwm防止pwm没关断就改变io口输出状态导致mcu io口和pwm输出内部短路,正转立刻倒转也需要立即给h桥发送电子刹车指令,使电机立即停转阻止惯性的同时释放反电动势,同时还需要启动过流保护来阻止过流的发生。上电先检测开关机按键,开机完成后输出维持信号后初始oled,再刷新主界面参数图标,为了节约rom空间和cpu资源(mcu属于低端货,零元购的库存消耗,内部资源极其有限,需要尽可能节约资源)主参图标只上电刷新一次后不再刷新,维持显示依靠oled内部ram。
按键扫描采用逻辑变量加定时器控制,在完成短按长按识别的前提下不存在死等操作,最大限度的释放系统资源。
代码只做参考,并不一定和文字介绍相关。
菜单框架集成在按键控制函数中
本机有定时关机功能由于资源匮乏使用复用tim2定时器实现,开机读取内部eeprom获得定时关机时间,菜单内可随时改变立即生效(只对本次),也可改变后保持到eeprom,下次开机会自动调用。
每次按任意键倒计时会重新计时
长按短按由tim4计时判定实现,开机时的电源键长按会被屏蔽防止关机状态时长按电源键导致开机后直接进入菜单设置(电源键长按复用菜单键),tim4同时复用步进计时,由变量切换,既负责短按长按识别又负责步进计时。
前进 步进 后退 图标显示也集成在按键控制函数中
由于mcu内部flash空间极其有限稍不注意就超限,于是做了很多功能性子函数,下面定时器pwm相关函数
pwm初始化和控制参数装载,开机初始化时读取eeprom获取参数
为了节约空间,主界面分割线由函数生成
参数显示,数值没变化不刷新,节约系统资源提高速度
充电指示和低电指示,开机充电时支持充电指示(闪电图标),也是状态变化才刷新
adc初始化
开机后启动tim2(和定时关机复用),每100ms采集一次电池电压,连续采集10次(1秒)取平均值做软件滤波,使电压指示平滑稳定不乱跳,上电连续采集1秒电池电压,再指示电量,防止刚开机电池电压处于浮电状态单次采集导致电量指示不准。1s后如果电池电压低于欠压闭锁阈值则闪烁显示3次电量低并且自动关机。
开机后每隔1秒刷新一次电量和电压,防止过度占用系统资源。
电量指示采用单向电量指示和充电放电两套指示策略,放电时电量图标只单向减少指示,防止电压到两个阈值门槛之间时出现跳电的问题,也就是放电时只要电压一旦低于某个阈值指示后电压再次抬升电量指示也不会跟着抬升,除非充电。
充电时电量指示阈值和放电时也不一样,由于充电时电池端电压在0.5c左右时会比实际电压高0.1v,因此如果也采用放电电量指示阈值,电量会虚高不合适,并且充电电量指示采用电压判定和电流判定相结合,前90%电压判定,后10%采用电流判定,充电电流小于等于额定充电电流10%时显示满电,信号采集自充电ic,做到满电指示和充ic同步。不会出现充电ic还没指示充满,而显示屏电量已经满格的问题。并且充电量指示也是单向指示,这样插拔充电线时会自动调用两套电量指示机制,使电量更准确。
电流采样采用ms级采样,可以快速在堵转 过流过载时切断输出提供保护,用作电动推杆限位和过载堵转保护,阈值可以任意调整
中断服务程序,软件主要部分就到这里,其他oled驱动 字库字体啥啥的细碎部分就不做展示了。
软件开发完成,烧录固件后
5颗螺丝,1颗已经拧上了
拧好螺丝就全部完工了,这个是主界面,按键功能看标注
这个是菜单选项,由于mcu flash空间基本塞满,因此只做了必须功能,一些进阶功能暂未加入,选项文字也由图标代替,节约空间。
整体外观非常小巧
底部
侧面
反面
支持关机充电和开机充电指示,下图关机充电时指示灯指示。
开机充电由显示屏闪电图标指示
前进指示,步进和前进一样只是自动停止,本来想加入动效,但是rom空间不允许。
后退指示
长按进菜单界面,短按菜单键切换选项,按前进键减小数值,后退键增大数值。前进最低15%(这个是电机输出合适扭矩下的最低占空比要求,属于低压极限参数,菜单里已经做了限制,不能调整到低于15),上限99,代表占空比99%。步进速度 时长(最低20ms,最长10s)都可调,因此可以调整出非常精密的流量和流速。
调整好参数后按步进键立即退出且生效,参数保存在ram中可以实现参数的临时调整,重新开机后恢复到上一次保存。如果长按电源键退出则参数生效的基础上会保存在mcu eeprom中,重新开机则加载保存后的参数。参数保存只会存储已经改变的项目参数,没有改变不会写入eeprom,延长eeprom使用寿命。
定时关机最长99分钟,调整到0 为取消自动关机,自动关机倒计时开始时,每次按任意键则会重置倒计时时间,重新开始计时,直到无操作时间达到设定值才自动关机。
下图是装配5cc针筒时的样子,总长度体积比手动打胶器要小巧多了。
下面是功能演示,可以看到工作稳定可靠,最后面演示了菜单参数的临时改变和永久改变效果。
充电指示,插拔充电头的效果,低电会显示闪烁3次电量低自动关机。
打焊油的效果,持续和步进(为了效果直观调的出胶量较大,实际可以实现非常精密的微量出胶效果)
限位保护演示,可以看到后退到极限时自动停止且电子刹车,并显示堵转。
非常规错误操作时的保护动作,前进时后退,后退时前进,后退时步进,或者随便怎么乱按都有先关保护策略,确保任何情况下都不会对硬件造成伤害。长步进没有结束时短按前进或后退则取消步进进程
打锡膏演示,用的10cc针筒,还可以打绿油等等一切液体或半流动固体。
总算发完了,累死我了,此电动打胶器功能完善体积小巧,手感舒适,用起来是非常安逸的,又多了一个实用工具。一些进阶功能由于rom空间限制最后没有做(后期会考虑优化后加入),例如有些半固体物质例如锡膏,由于接近固体粘度很大,因此打胶时按键按下由于内部压力很大未必能出胶(被憋住),必须连续按键增大压力,这样等到出胶时受内部蓄积压力作用已经超过预定,进阶功能就是应对这类问题时先控制推杆过量前进后冲破压力屏障,瞬间再立即后退一小段行程,这样就保证冲破压力屏障出胶后又不会打胶过量。
完
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|