一、单片机也好,嵌入式也好,甚至手机也一样,硬件设计与软件设计相互相承,从苹果手机使用了比安卓手机低得多硬件水平,但系统的流畅度好很多就可以看出,硬件设计影响了软件的设计。
二、从两次的电机H桥驱动电路,第二次设计只增加一个简单的换向电路,软件从一大段节省到只需2行
三、第一次的H桥电路,2个半桥的驱动是直连到MCU IO口来进行换向及PWM输出,也正因为这个原因,PWM只能软件IO翻转实现,频率高了中断太频繁占用时间太多,频率低了调整效果不理想,而且实现的代码也一大段。


这段是根据设定的占空比输出PWM

void TEC_PWM_Config(uint8_t chn, uint8_t PN_Flag, uint8_t duty)
{if( chn > TEMP_MAX-1 )return;pwm_config_t *pwm_config_ptr = tec_driver_pwm(chn);duty>=100?duty=100:(duty=duty);if( chn<=TEMP_TEC7 ){if( PN_Flag == 0){//关闭//加入GPIO控制  pwm_config_ptr->u8HeatFlag=0;pwm_config_ptr->u8CoolFlag=0;pwm_config_ptr->u8Duty=0;        tec_drv_pwm(chn, 0);pwm_config_ptr->u8StepH_Cnt=0;rt_thread_delay(1);}         else if( PN_Flag == 1){//需要 //加入GPIO控制pwm_config_ptr->u8HeatFlag=0;//关闭加热标志位pwm_config_ptr->u8CoolFlag=0;//关闭制冷标志位tec_drv_pwm(chn, duty);pwm_config_ptr->u8Duty=Duty;  //配置PWM占空比pwm_config_ptr->u8StepH_Cnt=0;//清零PWM计算步数pwm_config_ptr->u8HeatFlag=1; //使能加热标志位}else if( PN_Flag == 2){//需要//加入GPIO控制pwm_config_ptr->u8HeatFlag=0;//关闭加热标志位pwm_config_ptr->u8CoolFlag=0;//关闭制冷标志位rt_pin_write(pwm_config_ptr->n_pin, TEC_N_OFF);rt_pin_write(pwm_config_ptr->p_pin, TEC_P_OFF);rt_pin_write(pwm_config_ptr->pwm_pin, TEC_PWM_OFF);rt_thread_delay(1);rt_pin_write(pwm_config_ptr->en_pin, TEC_EN_ON);pwm_config_ptr->u8Duty=Duty;  //配置PWM占空比pwm_config_ptr->u8StepH_Cnt=0;//清零PWM计算步数pwm_config_ptr->u8CoolFlag=1; //使能制冷标志位}}else if( chn==TEMP_COVER ){if( PN_Flag == 0){//关闭//加入GPIO控制  pwm_config_ptr->u8HeatFlag=0;pwm_config_ptr->u8CoolFlag=0;pwm_config_ptr->u8Duty=0;        rt_pin_write(pwm_config_ptr->pwm_pin, HOT_PLATE_OFF);pwm_config_ptr->u8StepH_Cnt=0;}

这段代码是配置PWM的占空比及设置相应的状态变量

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if( htim == &htim9){//实测168M主频下,函数执行时间为2usPWM_CONTROL();}
}

定时器的中断,200HZ,5ms中断一次,虽然说也能实现,但不是最优方案,上层应用被频繁的打断

三、第二次改进,以硬件PWM产生,PWM频率上1K~10K都轻松实现,也不需频繁中断占用CPU资源,同时管理20个PWM,驱动20路电机也不成问题,其中最关键的就这个H桥换向电路

H桥换向电路

开关模拟的H桥的换向,脉冲模拟的是PWM输出,2个LED模拟H桥的输出,直接连接到H桥DRV_N,DRV_P,可以看到LED轮流闪动,如需关闭H桥输出PWM引脚为一直低电平即可,4001是用于高电平驱动H桥电路,4011用于低电平驱动H桥电路

motor_drv_pwm(uint8_t chn, uint8_t ctrl, uint8_t duty)
{dir = ctrl;set_chn_pwm(chn, (float)duty/100.0*MAX_PWM_VALUE);
}

提供给上层PID计算后输出调用,省略了PWM初始化部分,但使用比原来的简化很多

硬件设计得好,软件就会多简单,以一个H桥电路来说说相关推荐

  1. 硬件设计开发全套软件

    1.原理图与PCB设计:AD.Candence orcad capture cis和pcb editor AD,目前最常用的硬件设计工具,为中小型企业和学校学生所熟知,Protel的升级版. Cand ...

  2. HLW8110电耗采集芯片的硬件设计和软件驱动方法

    目录 1.硬件设计 2.软件设计 1.硬件设计 HLW8110是一款高精度的电能计量 IC,它采用 CMOS 制造工艺,主要用于单相计量应用.它能够测量线电压和电流,并能计算有功功率,视在功率和功率因 ...

  3. ESP32产品系列之智能插座(一),框架及硬件设计

    文章目录 一.首页 二.简单描述控制过程 三.描述硬件设计 一.首页 首先,先简单说明这个系列产品的控制架构以及使用到的硬件资源. 1.ESP32-WROOM-32D,用到它的WIFI功能 2.家里的 ...

  4. 嵌入式系统硬件设计与实践(开发过程)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 如果把电路设计看成是画板子的,这本身其实是狭隘了.嵌入式硬件设计其实是嵌入式系统中很重要的一个部 ...

  5. 搞硬件工资比搞软件的低?

    最近看到一件电子业界悲剧:一位博士毕业的高才生,在硅谷排名前十的一家半导体公司工作近20年,最近工资被他女儿超过了.他女儿加州理工本科毕业,在Facebook工作了2年. 这不禁让人想到了那个老生常谈 ...

  6. 解读DO-254(机载电子硬件设计保证指南)

    DO-254指南内容解读 DO-254 中的指南覆盖了多个议题,包括: 硬件标准 硬件设计生命周期数据 对于设计保证等级 A 和 B 的功能的额外的设计保证技术 以前开发的硬件 工具评估和鉴定 使用商 ...

  7. 三星13位VFD荧光屏驱动方案(最后附部分驱动代码和硬件设计链接)

    前几月淘宝捡垃圾捡了几块荧光屏 1.效果展示 进行位选和段选演示,可自行完善代码: 2.原理就不在这里赘述,不清楚的可以看看: 真空荧光显示屏(VFD屏)原理.pdf - 豆丁网 3.设计方案 ULN ...

  8. 【开源电机驱动】H 桥驱动-软件篇

    原文地址:http://www.modularcircuits.com/blog/articles/h-bridge-secrets/h-bridge-control/ 本文为作者翻译校正稿件,含个人 ...

  9. mos管h桥电机驱动电路与设计原理图-KIA MOS管 (kiaic.com)

    来源: mos管h桥电机驱动电路与设计原理图-KIA MOS管 (kiaic.com) 一.mos管H桥电路 图1中所示为一个典型的直流电机控制电路. 电路得名于"H桥驱动电路"是 ...

最新文章

  1. webpack 打包ts项目_使用webpack打包ts
  2. Orleans解决并发之痛(二):Grain状态
  3. C#中的DBNull、Null、String.Empty和“”
  4. 数据可视化设计的UI实用模板素材
  5. 微软力挺 Go,宣布参与 Athens 项目和 GopherSource
  6. java默认virtual_mac jdk配置(系统默认or自己配置)
  7. df命令--Linux命令应用大词典729个命令解读
  8. 图像过滤,so easy~~
  9. msdn系统镜像下载
  10. easy-scratch3源码分析
  11. 前端基础(二十一):移动端H5调用摄像头拍照旋转解决方案
  12. 软件测试项目案例哪里找?【银行/教育/商城/金融/等等....】
  13. 微分方程建模(人口预测,捕食者猎物)
  14. spring boot项目报错:Validation failed for query for method public abstract...
  15. 论文阅读:《AliMe Assist: An Intelligent Assistant for Creating an Innovative E-commerce Experience》
  16. 【数位板常见问题】压感笔为什么没有压感了
  17. bas64图片加密解密
  18. 智慧黄金眼(通达信指标 副图 源码 测试图)
  19. JavaScript奇淫技巧:反调试
  20. 朴素贝叶斯(Naive Bayes)原理+编程实现拉普拉斯修正的朴素贝叶斯分类器

热门文章

  1. 对WEB标准以及W3C的理解与认识
  2. tensor如何实现转置_pytorch tensor 变换
  3. 【ChatGPT4】王老师零基础《NLP》(自然语言处理)第一课
  4. AI之NLP:2020年6月21日北京智源大会演讲分享之15:15-15:40黄萱菁教授《自然语言处理中的表示学习》
  5. sv 数据类型: packed /unpacked/动态数组/联合数组/struct/ enum
  6. Android Studio学习笔记
  7. Tomcat与JDK版本的对应
  8. 获取招聘网站下的HR-Email信息
  9. 安装配置Apache和php
  10. nginx做反向代理和后端web服务器之间的交互