气体采样采用主动抽取气体的方式保证充足而平稳的气流,所以我们采用气泵抽取气体来完成。

1、设计概述

客户对这部分要求能够设定电机的速度,但并不需要动态调节。对电机的控制有很多方式,我们采用比较简单的方式。我们采用定时器产生PWM舶来实现这一控制过程。

2、硬件连接

对电机的控制我们使用高级定时器TIM1产生PWM波来控制,对于OneNET麒麟座中TIM1的通道1、2、3以及他们的互补输出均已经引到了端子排J2-5(PA10)、2-6(PA9)、J2-7(PA8)、J5-7(PA7)、J3-2(PB0)、J3-3(PB1),如下图所示:

所采用的空气泵泵是一种比较小型的设备,需要12V-24V电源,具体如下:

由于电机是12V-24V的所以我们还需要必要的电路来完成这一功能,控制板如下图所示:

这种控制板的原理图如下所示,在后续的设计中我们将设计为一体:

接下来我们在STM32CubeMX中作相应的配置,配置如下:

3、软件设计

完成硬件的配置和连接后,我们开始编写软件,首先,我们实现必要的初始化,使得PWM波形能够产生。

/* 对TIM1进行初始化配置*/
static void TIM1_PWM_Initialization(void)
{TIM_MasterConfigTypeDef sMasterConfig;TIM_OC_InitTypeDef sConfigOC;TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;htim1.Instance = TIM1;htim1.Init.Prescaler = 0;htim1.Init.CounterMode = TIM_COUNTERMODE_UP;htim1.Init.Period = 0;htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;htim1.Init.RepetitionCounter = 0;if (HAL_TIM_OC_Init(&htim1) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}sConfigOC.OCMode = TIM_OCMODE_TIMING;sConfigOC.Pulse = 0;sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;sBreakDeadTimeConfig.DeadTime = 0;sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK){_Error_Handler(__FILE__, __LINE__);}HAL_TIM_MspPostInit(&htim1);
}

完成配置后,我们接下来编写一个控制程序,用以调节占空比。具体的实现代码如下:

//配置TIM1为PWM输出
void PWM_Configuration(void)
{//计算初始化的频率和占空比TimerPeriod = PWMTimePeriod;//计算用于设置ARR寄存器的值使产生信号的频率为17.57 KhzPWM1Pulse = (uint16_t) (((uint32_t) 5 * (TimerPeriod - 1)) / 10);//计算CCR1寄存器的值在通道1和1N产生50%占空比,用于TIM1PWM2Pulse = (uint16_t) (((uint32_t) 5 * (TimerPeriod - 1)) / 10);//计算CCR1寄存器的值在通道1和1N产生50%占空比,用于TIM8
  PWM_InitProcess(TIM1,TimerPeriod,PWM1Pulse);
}

配置完成编译后,基本能都达到效果,在随后的设计中我们将进一步改进。

转载于:https://www.cnblogs.com/foxclever/p/6900036.html

OneNET麒麟座应用开发之七:控制采样电机相关推荐

  1. OneNET麒麟座应用开发之四:数据上传测试

    已经测试过OneNET麒麟座开发板了,这次来尝试与OneNET的连接和数据上传.这也是我们测试这块开发办的主要原因,因为在十几种我们有这种将分散的采集点数据上传到后台的需求. 先看看麒麟座这块开发板, ...

  2. OneNET麒麟座应用开发之一:初识OneNET麒麟座

    今天收到了OneNET麒麟座开发板.能得到使用的机会只能说是幸运的.首先上一张靓照: 板子使用的MCU是STM32F103RET6,带有GSM摸块和Wifi摸块可以联网.带有显示屏接口和I2C接口以及 ...

  3. OneNET麒麟座应用开发之八:采集大气压力等环境参数

    采集大气压力和温度也是核算大气标准状况下的各种数据的必须参数,为此我们必须知道压力和温度才能计算标准状况下的各种参数,于此我们需要一个既能检测压力也能检测温度的元件. 1.硬件概述 MS5837压力传 ...

  4. OneNET麒麟座应用开发之六:与气体质量流量控制器通讯

    气体质量流量控制器,简称MFC,通常用于在各种检测中,计量气体的流量.在我们的大气环境数据采集站中,要让气流保持稳定,这样才能准确的获取PM25的数据. 我们采用的气体质量流量控制器具备串口通讯功能, ...

  5. OneNET麒麟座应用开发之三:获取温湿度数据

    对于大气环境监测来说温湿度也是重要的指标.原本计划使用SHT15来采集温湿度数据,不过在OneNET麒麟开发板上,我们发现已经集成有SHT20温湿度传感器,于是我们就使用它了.如下图的红框处: 我们还 ...

  6. ONENET读取与控制麒麟座MINI开发板LED状态

    硬件 麒麟座MINI开发板V1.4 嵌入式软件 OneNET_Demo_ESP8266_EDP_Led 工程修改内容 led.c文件修改 函数LED_Init,mini开发板LED所在GPIO为PB6 ...

  7. stm32代码生成,基于模型的设计(MBD) 无刷直流电机MATLAB开发板建模代码生成控制 MBD电机控制资料

    stm32代码生成,基于模型的设计(MBD) 无刷直流电机MATLAB开发板建模代码生成控制 MBD电机控制资料 控制算法采用MATLAB建模并生成代码的方式 配套电机 开发板 模型 源代码和视频 P ...

  8. Ardunio开发实例-管场效应(MOSFET)控制12V电机PWM调速

    管场效应(Mosset)控制12V电机PWM调速 Arduino微控制器无疑是市场上最便宜的控制组件. 可以使用这些开发板或微控制器轻松控制负载. 但是,如果要切换电动机或大功率灯等大负载,则由于没有 ...

  9. python语言type board_Micropython TPYBoard开发板控制无线加速度小车

    现在无线控制已经成为了电子科学领域的主流,这次就来教大家做一个主流中的主流--无线控制的小车,先给大家看一下最终的成品演示视频: ://v.youku.com/v_show/id_XMTY2MzAzN ...

最新文章

  1. 动态查询设置mysql慢查询
  2. 【二叉查找树BST】二叉查找树的基本操作总结
  3. python requests java_java实现类似python requests的session功能
  4. xxl-job dotnet core executor执行器开源
  5. VB.NET在线升级程序源代码,可以独立使用
  6. 3.15 曝光:40 亿 AI 骚扰电话和 11 家合谋者
  7. 文件共享服务器灾备,搭建容灾性强、可管理的的文件共享服务器-windows server 2008 DFS续...
  8. CSS布局:三栏布局,中间栏固定宽度,左右两边自适应
  9. linux halt 命令详解
  10. openstack版本_庆祝新版本,供应商自由以及更多OpenStack新闻
  11. 在火狐浏览器打开xpath_Firefox火狐插件firebug和xpath checker提取关键词
  12. matalb laod时无法读取文件
  13. 【2018年11月12日】其他化学制品行业的股票估值和排名
  14. tilemap 菱形_Tilemap
  15. 有用的.NET开发资料
  16. 密码学之背包加密系统(Merkle–Hellman公钥加密算法)原理
  17. 红楼解梦五--饥饿疗法
  18. 《算法新解》作者刘新宇:我只是想打开那些黑盒子,告诉人们里面有什么。
  19. html打开pdf的几种方式
  20. grails 自动生成crud代码和前端页面

热门文章

  1. React:开发者工具谷歌插件下载安装
  2. 工作人员做好项目协调服务器,项目团队协作做好三件事
  3. seo关键词优化的技巧
  4. safair下html换行产生的间距设置font-size:0无效
  5. Weights Biases的使用
  6. keras h5—darknet weights模型相互转换
  7. 思维导图软件XMind破解版下载地址 附最简安装教程
  8. 2022京东618预售一般多久才发货啊?几天能收到货?
  9. python 扩展c extention
  10. 2018十大网络用语新鲜出炉,skr入围榜三!