硬件设计得好,软件就会多简单,以一个H桥电路来说说
一、单片机也好,嵌入式也好,甚至手机也一样,硬件设计与软件设计相互相承,从苹果手机使用了比安卓手机低得多硬件水平,但系统的流畅度好很多就可以看出,硬件设计影响了软件的设计。
二、从两次的电机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.原理图与PCB设计:AD.Candence orcad capture cis和pcb editor AD,目前最常用的硬件设计工具,为中小型企业和学校学生所熟知,Protel的升级版. Cand ...
- HLW8110电耗采集芯片的硬件设计和软件驱动方法
目录 1.硬件设计 2.软件设计 1.硬件设计 HLW8110是一款高精度的电能计量 IC,它采用 CMOS 制造工艺,主要用于单相计量应用.它能够测量线电压和电流,并能计算有功功率,视在功率和功率因 ...
- ESP32产品系列之智能插座(一),框架及硬件设计
文章目录 一.首页 二.简单描述控制过程 三.描述硬件设计 一.首页 首先,先简单说明这个系列产品的控制架构以及使用到的硬件资源. 1.ESP32-WROOM-32D,用到它的WIFI功能 2.家里的 ...
- 嵌入式系统硬件设计与实践(开发过程)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 如果把电路设计看成是画板子的,这本身其实是狭隘了.嵌入式硬件设计其实是嵌入式系统中很重要的一个部 ...
- 搞硬件工资比搞软件的低?
最近看到一件电子业界悲剧:一位博士毕业的高才生,在硅谷排名前十的一家半导体公司工作近20年,最近工资被他女儿超过了.他女儿加州理工本科毕业,在Facebook工作了2年. 这不禁让人想到了那个老生常谈 ...
- 解读DO-254(机载电子硬件设计保证指南)
DO-254指南内容解读 DO-254 中的指南覆盖了多个议题,包括: 硬件标准 硬件设计生命周期数据 对于设计保证等级 A 和 B 的功能的额外的设计保证技术 以前开发的硬件 工具评估和鉴定 使用商 ...
- 三星13位VFD荧光屏驱动方案(最后附部分驱动代码和硬件设计链接)
前几月淘宝捡垃圾捡了几块荧光屏 1.效果展示 进行位选和段选演示,可自行完善代码: 2.原理就不在这里赘述,不清楚的可以看看: 真空荧光显示屏(VFD屏)原理.pdf - 豆丁网 3.设计方案 ULN ...
- 【开源电机驱动】H 桥驱动-软件篇
原文地址:http://www.modularcircuits.com/blog/articles/h-bridge-secrets/h-bridge-control/ 本文为作者翻译校正稿件,含个人 ...
- mos管h桥电机驱动电路与设计原理图-KIA MOS管 (kiaic.com)
来源: mos管h桥电机驱动电路与设计原理图-KIA MOS管 (kiaic.com) 一.mos管H桥电路 图1中所示为一个典型的直流电机控制电路. 电路得名于"H桥驱动电路"是 ...
最新文章
- webpack 打包ts项目_使用webpack打包ts
- Orleans解决并发之痛(二):Grain状态
- C#中的DBNull、Null、String.Empty和“”
- 数据可视化设计的UI实用模板素材
- 微软力挺 Go,宣布参与 Athens 项目和 GopherSource
- java默认virtual_mac jdk配置(系统默认or自己配置)
- df命令--Linux命令应用大词典729个命令解读
- 图像过滤,so easy~~
- msdn系统镜像下载
- easy-scratch3源码分析
- 前端基础(二十一):移动端H5调用摄像头拍照旋转解决方案
- 软件测试项目案例哪里找?【银行/教育/商城/金融/等等....】
- 微分方程建模(人口预测,捕食者猎物)
- spring boot项目报错:Validation failed for query for method public abstract...
- 论文阅读:《AliMe Assist: An Intelligent Assistant for Creating an Innovative E-commerce Experience》
- 【数位板常见问题】压感笔为什么没有压感了
- bas64图片加密解密
- 智慧黄金眼(通达信指标 副图 源码 测试图)
- JavaScript奇淫技巧:反调试
- 朴素贝叶斯(Naive Bayes)原理+编程实现拉普拉斯修正的朴素贝叶斯分类器
热门文章
- 对WEB标准以及W3C的理解与认识
- tensor如何实现转置_pytorch tensor 变换
- 【ChatGPT4】王老师零基础《NLP》(自然语言处理)第一课
- AI之NLP:2020年6月21日北京智源大会演讲分享之15:15-15:40黄萱菁教授《自然语言处理中的表示学习》
- sv 数据类型: packed /unpacked/动态数组/联合数组/struct/ enum
- Android Studio学习笔记
- Tomcat与JDK版本的对应
- 获取招聘网站下的HR-Email信息
- 安装配置Apache和php
- nginx做反向代理和后端web服务器之间的交互