开源新型电磁式磁力搅拌机stm32f103

磁力搅拌器是用于液体混合的实验室仪器,主要用于搅拌或同时加热搅拌低粘稠度的液体或固液混合物。其基本原理是利用磁场的同性相斥、异性相吸的原理,使用磁场推动放置在容器中带磁性的搅拌子进行自旋运动(市场上的搅拌子式的磁力搅拌均为此种方式),从而达到搅拌液体的目的。

可能你会有疑问,为什么是要通过转子自选,而不是转子围绕烧杯中心做圆周运动来达到搅拌的目的?文档后面我们通过放实物来解答。

市场上的磁力搅拌大都为电机带动磁铁旋转进而吸引搅拌子旋转,这种方法易于实现,但随之而来的有体积大、有噪声、效率不高等问题,于是参考网上资料,设计了一款类似于无刷电机的搅拌机。下图为初代产品(慢速状态)

无刷电机的工作原理大家可能都了解过,这里再简单介绍一下

开源新型电磁式磁力搅拌机stm32f103_第1张图片

利用交变的磁场带动磁性转子旋转,搅拌机的工作原理与之类似,利用开关管控制3对6个励磁线圈交替导通 每两个线圈反串联在一起即可构成一对NS进而产生对转子的吸引。

硬件设计

每对线圈用一个H桥驱动,可以实现对磁性搅拌子正反转的控制。驱动H桥用了两个3极管可以产生互补输出,不仅增强了驱动能力,还保证了每个桥臂上下两个管子不会同时导通

开源新型电磁式磁力搅拌机stm32f103_第2张图片

单片机最小系统电路

开源新型电磁式磁力搅拌机stm32f103_第3张图片

加入了温度传感器,可以实时检测搅拌液体的温度 

开源新型电磁式磁力搅拌机stm32f103_第4张图片

还有一些交互模块如按键、oled、蓝牙等,用以调速等操作,可有可无。

软件设计

 驱动程序类似于步进电机的驱动程序,有单步,半步,和双步等驱动方式

单步:

void turncolock(int speed)                           //顺时针旋转
{
         GPIO_WriteBit(GPIOB,L3_B,(BitAction)(0));     //步数1
         GPIO_WriteBit(GPIOB,L1_A,(BitAction)(1)); 
         delay_ms(speed);                              //延迟一段时间
         GPIO_WriteBit(GPIOB,L1_A,(BitAction)(0));     //步数2
         GPIO_WriteBit(GPIOB,L2_A,(BitAction)(1)); 
         delay_ms(speed);
         GPIO_WriteBit(GPIOB,L2_A,(BitAction)(0));     //步数3
         GPIO_WriteBit(GPIOB,L3_A,(BitAction)(1)); 
         delay_ms(speed);
         GPIO_WriteBit(GPIOB,L3_A,(BitAction)(0));     
         GPIO_WriteBit(GPIOB,L1_B,(BitAction)(1)); 
         delay_ms(speed);
         GPIO_WriteBit(GPIOB,L1_B,(BitAction)(0)); 
         GPIO_WriteBit(GPIOB,L2_B,(BitAction)(1)); 
         delay_ms(speed);
         GPIO_WriteBit(GPIOB,L2_B,(BitAction)(0)); 
         GPIO_WriteBit(GPIOB,L3_B,(BitAction)(1)); 
         delay_ms(speed);
}

双步:

void turncolockdiv2(int speed)
{
         GPIO_WriteBit(GPIOB,L1_A,(BitAction)(1));
         delay_ms(speed);
         GPIO_WriteBit(GPIOB,L1_A,(BitAction)(0)); 
         GPIO_WriteBit(GPIOB,L3_A,(BitAction)(1)); 
         delay_ms(speed);
         GPIO_WriteBit(GPIOB,L3_A,(BitAction)(0)); 
         GPIO_WriteBit(GPIOB,L2_B,(BitAction)(1)); 
         delay_ms(speed);
         GPIO_WriteBit(GPIOB,L2_B,(BitAction)(0)); 
}

使用过步进电机的一定都知道步进电机如果要达到的一定速度话,需要加速启动,搅拌机同样也是的,写了个简单的加速程序

 for(speed_temp=200;speed_temp>95;speed_temp--)
     {
        turncolock(speed_temp/5);            
     }

后期调试

1、线圈对转子的吸引力不是很强,如果离线圈稍微远一些别无法驱动,此时每相线圈导通时的电流为150mA。

于是将原本反接串联的线圈改为反接并联,电流变为670mA,吸引力满足需求

2、转子不能维持在中间位置,虽然偏一下不影响转速 但转子如果碰到杯壁就需重新加速,影响使用

于是分析了一下这个问题为原理上的问题,如果在中间两边磁场力是平衡的,但如果有轻微的扰动,就会使一边距离减小,而磁力与距离成正比,正反馈,就会越来越偏,解决办法为换一个大些的烧杯或者使用凹底的烧杯

 

最终效果图:

以及如果采用让转子通过绕烧杯中心做圆周运动的效果图

所以不使用圆周运动的原因为:由于线圈产生的磁场强度有限会使得转子由一相到下一相的最小时间是固定的,而且圆周运动脱离磁力不可维持,所以难以将速度加起来,效果比不上转子的自旋

板子原理图下载地址

https://download.csdn.net/download/weixin_42090940/12084777

转载请注明Tech淮

你可能感兴趣的:(开源新型电磁式磁力搅拌机stm32f103)