你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于电机库的管道清洗控制器模拟设计

[复制链接]
jinglixixi 发布时间:2017-8-31 10:13
本帖最后由 jinglixixi 于 2017-8-31 10:15 编辑

    对于管道型的生产设备,为了保证其可靠的运行需要定时地进行清洗,其工作方式与我们常见的洗衣机十分相像,主要有2种工作参数,即运行时长和清洗模式。而清洗模式又关系到电机运行的速度、转动方向和工作节拍,其中的工作节拍是指转动时间与停止时间的占空比。利用本次活动的STM32 FOC开发套件,十分便于做这方面的模拟设计。
      在设计的开始本打算是设计一个基于MCU内部RTC进行多时段控制的管道清洗控制器,且利用STM32F3-Discovery的程序实现了RTC计时功能,如图1和图2所示,但移植到该电机套件的环境下却不能正常执行。无奈只能放弃该功能。
图片1.png
1 用F302实现LCD5110屏显示

图片2.png
2 F302实现RTC计时

    随后以LCD5110液晶屏、软按键及电机套件构建了一个简单测试环境,如图3所示。在未启动电机的情况下,能进行模拟运行,即开机后可通过按键来设置电机运行的模式,为简化设计电机工作节拍内的运行时间t1和停止时间t2是由程序固定设置好的,工作时长n,也由程序来指定,其界面如图4所示。为便于验证,最后一行为运行状态指示行以供对比。
图片3.png
3 验证环境构成

图片4.png
4 设置运行模式

图片5.png
5 模拟验证界面

其中LCD5110液晶屏与MCU的引脚连接关系如下:
  SCE --PB13
  RST --PB14
  DC  --PB15
  DIN --PB6
  SCLK--PC7
LED+ --Vcc
软按键与与MCU的引脚连接关系如下:
  1  -- PA14
  2  -- PA15
  3  -- NC
  4  -- PA13
COM  -- GND


    故对LCD5110相关引脚所定义的输出高、低电平的语句如下:
#define SetLCD_SCE_Low()          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET)

#define SetLCD_RST_High()  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET)
#define SetLCD_RST_Low()          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET)

#define SetLCD_DC_High()          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET)
#define SetLCD_DC_Low()   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET)

#define SetLCD_SDIN_High()  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET)
#define SetLCD_SDIN_Low()   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET)

#define SetLCD_SCLK_High()  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_SET)
#define SetLCD_SCLK_Low()  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET)

      LCD5110屏的初始化函数如下:
  1. void LCD_Init(void)
  2. {
  3.         SetLCD_RST_Low();   
  4.         delay_1us();
  5.         SetLCD_RST_High();   
  6.         delay_1us();
  7.         delay_1us();
  8.         LCD_write_CMD(0x21);
  9.         LCD_write_CMD(0xc0);
  10.         LCD_write_CMD(0x06);
  11.         LCD_write_CMD(0x13);
  12.         LCD_write_CMD(0x20);
  13.         LCD_Clear();           
  14.         LCD_write_CMD(0x0c);        
  15. }
复制代码
       实现设计功能的主程序如下:
  1. int main(void)
  2. {
  3. uint n,i,j,k,m,v;
  4.     HAL_Init();
  5.     SystemClock_Config();
  6. MX_GPIO_Init();
  7.     MX_ADC1_Init();
  8.     MX_DAC_Init();
  9.     GPIO_Configuration();        
  10.     LCD_Init();
  11. LCD_Clear();
  12. LCD_write_english_string(0,0,"NUCLEO-F302R8");
  13. LCD_write_english_string(0,2,"NUCLEO-IHM07M1");
  14. LCD_write_english_string(0,4,"X-CUBE-SPN7");
  15.     HAL_Delay(1000);
  16. MX_TIM1_Init();
  17.     MX_TIM6_Init();
  18.     MX_TIM16_Init();
  19. MC_SixStep_INIT();
  20. loop:        
  21.     LCD_Clear();
  22.         LCD_write_english_string(10,0,"M");  //   工作模式
  23.         LCD_write_english_string(30,0,"t1");  //   启动时间
  24.         LCD_write_english_string(50,0,"t2");  //   暂停时间
  25.         LCD_write_english_string(70,0,"n");   //   运行时长
  26.         n=0;
  27.         i=1;
  28.         v=3;
  29.         while(i)
  30.         {   //   选取工作模式
  31.                 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_14)==0)  n=1;
  32.                 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_15)==0)  n=2;
  33.                 if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_13)==0)  n=4;
  34.                 LCD_set_XY(10,2);
  35.                 LCD_write_char(n+0x30);
  36.                 if(n>0) i=0;
  37.                 if(n==1)
  38.                 {   //  设置模式参数
  39.         j=3;
  40.                         k=2;
  41.                         MC_Set_Speed(4000);  //   指定转速
  42.             LCD_set_XY(30,2);
  43.                         LCD_write_char(j+0x30);
  44.                         LCD_set_XY(50,2);
  45.                     LCD_write_char(k+0x30);
  46.                 }
  47.                
  48.                 if(n==2)
  49.                 {
  50.                     j=2;
  51.                         k=3;
  52.                         MC_Set_Speed(6000);
  53.                         LCD_set_XY(30,2);
  54.                     LCD_write_char(j+0x30);
  55.                         LCD_set_XY(50,2);
  56.                     LCD_write_char(k+0x30);
  57.                 }
  58.                 if(n==4)
  59.                 {
  60.                     j=3;
  61.                         k=3;
  62.             MC_Set_Speed(10000);
  63.                         LCD_set_XY(30,2);
  64.                         LCD_write_char(j+0x30);
  65.                         LCD_set_XY(50,2);
  66.                     LCD_write_char(k+0x30);
  67.                 }
  68.         }
  69.                 LCD_set_XY(70,2);
  70.                 LCD_write_char(v+0x31);
  71.                 LCD_set_XY(70,2);
  72.             LCD_write_char(3+0x30);
  73.                 for(m=0;m<v;m++)      // 运行时长控制
  74.         {
  75.                MC_StartMotor();    //  启动电机        
  76.                for(i=0;i<j;i++)
  77.                {
  78.                       LCD_set_XY(30,4);
  79.                         LCD_write_char(i+0x31);
  80.                         HAL_Delay(1000); // 时间基准
  81.                }
  82. MC_StopMotor();     //  电机暂停
  83.                for(i=0;i<k;i++)
  84.                {
  85.                       LCD_set_XY(50,4);
  86.                         LCD_write_char(i+0x31);
  87.                 HAL_Delay(1000);
  88.                }
  89.                    LCD_set_XY(70,4);
  90.                    LCD_write_char(m+0x31);
  91.     }   
  92.         goto loop;
复制代码
小结:
经实际测试,可达到对应的控制要求。但其最大的缺陷是由于电机的工作电流较大且带有一定的电磁干扰,从而导致在电机运行时会破坏LCD5110屏的正常显示,而在电机启动前的工作模式选择是不受影响的,故不适于在连续操作的场合使用。

评分

参与人数 1 ST金币 +20 收起 理由
zero99 + 20

查看全部评分

收藏 1 评论4 发布时间:2017-8-31 10:13

举报

4个回答
五哥1 回答时间:2017-8-31 10:29:16
谢谢分享
zero99 回答时间:2017-8-31 11:04:44
学习了
Stm32McuLover 回答时间:2017-8-31 12:49:29

学习了
jinglixixi 回答时间:2017-8-31 20:10:28
多谢支持!!!

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版