- 博客(31)
- 资源 (3)
- 收藏
- 关注
原创 GB2312 字库表
GB2312 中文简体字库表code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +FA1A0 、 。 · ˉ ˇ ¨ 〃 々 — ~ ‖ … ‘ ’A1B0 “ ” 〔 〕 〈 〉 《 》 「 」 『 』 〖 〗 【 】A1C0 ± × ÷ ∶ ∧ ∨ ∑ ∏ ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠A1D0 ⌒ ⊙ ∫ ∮ ≡ ≌ ≈ ∽ ∝ ≠ ≮ ≯ ≤ ≥ ∞ ∵A1E0 ∴ ♂ ♀ ° ′ ″ ℃ $ ¤ ¢ £ ‰ § №
2021-03-17 15:13:25
2709
原创 NRF51822---AD采样(连载5)
NRF51822---AD采样(连载5)前言AD简介框图相关寄存器介绍前言 IIC协议已经讲完了,屏幕也亮了,也就是说显示没问题了。手柄除了显示数据,还要采集数据。采集数据就要用到AD了。所以,AD还是很关键的。今天就来讲讲AD的相关知识、AD简介AD全称Analog to Digital Converter,顾名思义…(打开有道翻译一下就是a/d转换器)。A是模拟量,D是数字量。恩,原来是将模拟量转换成数字量的意思、框图 这个框图还是比较好理解的,结合下面的寄存器释义更
2021-03-11 21:04:09
1225
原创 用单片机在屏幕上显示字库中的汉字
最近在搞屏幕,顺便弄了一个字库芯片,刚刚测试完毕。个人认为项目中人机交互是少不了的,而显示是人机交互中的重要一环,所以准备写一篇教程记录一下。显示原理 首先要知道屏幕显示的原理。屏幕显示的原理其实很简单,其实就是和点阵一样,只不过屏幕集成度高,本质控制输出高或者低,跟点灯一样。 拿0.96寸的oled来举个例子。0.96oled分辨率128*64,也就是说横向128个led,竖向64个led,你想点亮某个led(假设1为亮,0为灭),那么只需要将那个led对应的位置1即可..
2021-03-11 16:56:51
8983
原创 NRF51822---驱动0.96寸OLED屏幕(连载4)
NRF51822---驱动0.96寸OLED屏幕(连载4)前言屏幕简介连接方法驱动原理IICSSD1306代码实现总结前言 上节讲解了IIC的协议,并用STM32实践了一下。今天趁热打铁,用NRF51822来进行驱动屏幕,程序昨天晚上加班搞完了。这一节主要讲解下0.96屏幕驱动原理和NRF51822的驱动程序、屏幕简介 该屏幕支持多种驱动方式:3线或者4线SPI、8080、6800等等,我用的是IIC驱动的屏幕。不过原理明白了,什么驱动方式都无所谓了。简介一定要突出一个“简”字、
2021-03-04 10:49:22
836
2
原创 IIC-实践
IIC-实践前言基本函数的实现前言 上节讲解了IIC的协议,这节讲讲函数实现。参考之前我们平衡小车的程序,上面用到0.96的屏幕,这个屏幕就是IIC通信的。基本函数的实现当 SCL 线是高电平时 ,SDA 线从高电平向低电平切换,表示通讯的起始。/**********************************************//IIC Start**********************************************/void OLED_IIC_St
2021-03-03 14:08:51
486
原创 IIC-理论
IIC前言IIC的定义时序图合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言 这节讲下IIC基础协议,因为手柄项目也会用到IIC协议,通过IIC可以和屏幕进行通信,可以显示一些数据。另外,IIC协议也不叫常见,用处大大滴。I
2021-03-03 13:07:04
849
2
原创 nrf51822+rfx2401c系统板(开源原理图、PCB)
快过年了,没啥东西可送的,就把刚做的射频板子开源了吧。 原理图 板子还有点毛病,不过问题不大。把PCB隔断,飞根线就行了,等你拿到手就能看到了。下图中画黑色圈的两个过孔把信号线给打穿了。 这两根线是控制2401发射和接收使能的,高电平有效,如果重新开板子的话,直接删除这两个过孔就行了,很简单。 说句题外话,为了发几张图,我竟然学会了PS。哎,最近公司电脑装了什么保密软件,整个屏幕都是IP地址,看着真不舒服,截图也会把ip地址给带上,有没有什么办法能给去掉?..
2021-02-06 11:04:43
3148
9
原创 NRF51822---2.4G和蓝牙功能调试成功
最近把板子测试了一下,用例程跑了一下蓝牙和2.4G通信。目前基本上都调通了。手机和模块蓝牙通信,模块与模块2.4g通信,无论蓝牙还是2.4G都没问题。测试结果蓝牙效果如下图 蓝牙测的时候手机在模块旁边,比较近、基本在40左右,还行,能用。 不加PA时,基本在75左右。没有板载天线,外接的棒状天线。2.4G测试结果 为了测2.4G信号,我焊了两块板子,实测是基本上在房间里任何一个位置都能接收到信号,无论中间有没有障碍物,可能距离比较近吧,就不上图了。不过控制蓝..
2021-01-29 16:25:50
2076
原创 NRF51822---常见问题总结
1.nrf51822外部16M晶振用示波器测量时没有波形、 ①检查电路是否正确 ②焊接过程中是否存在虚焊 ③程序是否开启外部晶振2.安装nrfgo studio win64 1.21后,Nrf5x Programming显示灰色,无法连接jlink ①首先卸载软件nrfgo studio、jlink驱动以及Nrf5x-Command-Line-Tools。卸载完之后清理注册表。 ②清理注册表过程 WIN+R组合键调出 输入reg..
2021-01-22 11:40:55
1463
原创 NRF51822---根据官方例程以IO为例创建工程模板(连载3)
环境搭建完成后就可以使用了。这节以基础点灯为例说说怎么依据官方例程来建立工程和下载程序。# 新建工程新建工程步骤和STM32类似。1.新建工程文件夹,因为是点灯程序,暂且命名为GPIO。2.在GPIO中创建工程以及复制官方外设驱动USER:放新建的工程components:官方的外设驱动,该文件在之前下载的SDK包中,解压之后,打开即可看到3.打开keil新建工程并保存到USER文件夹中。工程取名GPIO4.选择芯片518225.勾选CMSIS和Devies,这里的版本不..
2021-01-18 21:23:44
557
1
原创 NRF51822---环境搭建(连载2)
这章讲解环境搭建,基于MDK5(KEIL5)的环境搭建。所有文件都是从官网一步一步下载的,并且都是最新版本。软件下载一:下载 NordicSemiconductor.nRF_DeviceFamilyPack.8.11.1.pack 文件下载这个包是因为打开Nordic官网的例程会报错,提示没有8.11.1的park包、下载步骤:1.进入keil官网https://www.keil.com/2.点击products3.点击Device List4.点击Software P..
2021-01-13 14:34:31
1035
1
原创 NRF51822---开发板介绍(连载1)
无线遥控器项目先放一放吧,要学习的东西太多了,一开始以为很简单,结果坑越挖越深。还保持采用NRF51822的方案做手柄,在做之前先把51822这个骨头啃下来。我又重新开了一个专题,专门讲解NRF51822,本专题主要作用就是入门NRF51822,了解一下基础外设是怎么运用的。 NRF51822射频板早就做好了,一直没时间调。接近年底了,公司基本没啥活了,这不又重操旧业了,搞了几天终于能下进去程序了。先看看实物图吧。这个板子采用NRF51822+RFX2401C的方案做的射频板。主要考..
2021-01-13 13:16:10
561
2
原创 国产单片机最小系统(开源原理图、PCB,兼容ST、GD、HK、MM等F103C8T6)
无线遥控器到现在还没有着落,唉,好难。 先说说遥控器进展吧。一开始决定用国产单片机带一个NRF24L01+,实现远程遥控。板子画着画着感觉哪里不对,我的小车是接收蓝牙信号的呀,用NRF24L01+怎么控制呀,只能默默的推倒重来。不过保留 了单片机最小系统部分。上网上搜搜资料,发现有一款ARM内核的控制器支持蓝牙和射频,哎呦,这个可以呀。于是就开始新的方案设计了。 网上比较多的人用NRF51822做接收和发射,资料还是比较多的,所以新方案也采用51822,好处是还能省一个单片机了。..
2020-12-17 21:46:56
6170
32
原创 零基础制作无线遥控手柄【连载1】---项目说明
前言 上一个项目---零基础制作平衡小车已完结,耗时4个月,从简单的电机控制到PID的学习,再到平衡小车的制作完成,顺便还学习了基础的SolidWorks操作,收货应该都不小吧。本来打算这一个项目等制作完成后在写教程的,后来想想,还是算了,做一步记录一步吧,这样能把遇到的问题都写下来分享给大家,不然到最后都不知道写点什么了。 第二个零基础项目我决定做一个无线遥控手柄,这次我决定按照标准的流程走一下。什么项目需求分析呀等等一些流程,试着正规一下。...
2020-12-02 16:59:15
1482
原创 平衡小车控制板(开源PCB、源码、3d模型)
平衡小车项目最后一贴。至上次发帖有20多天的时间了,上一贴说的PCB,这一贴来了。不仅有PCB,还有3D图纸哦。自从上次发帖之后,大概用一周时间将地板画完调试好,画完PCB之后又花了一周多时间从零基础开始一点一点的画了一版3D图,中间熬了几个夜也算没有白熬。效果图一会放下面,自我感觉还行。项目结束了,送些福利给大家。该贴留言邮箱,全套开源资料都给你。别忘了一键三连哦。最后贴一句鸡汤:别让自己在该努力的年纪去享受,更不能让自己在该享受的年纪去努力。...
2020-11-19 13:45:59
4359
95
原创 零基础制作平衡小车【连载】14---平衡小车调参
调参过程一:前言二:调参过程三:总结一:前言发现少了一节调参,今天补上,关于这个项目先说两句吧。参数调节最好自己做个实物出来,慢慢调节。根据前面的PID理论部分的知识,慢慢体会一下各个参数在实际项目中的作用,这样才能真正学会PID。关于平衡小车这个项目到这应该是最后一节教程了,后面会更新加入蓝牙的代码,有时间会画一版PCB,直接引出引脚,模块即插即用,比较方便。关于PCB教程就不出了,网上很多软件学习的视频,跟着画个板子就行了。这也不涉及到高频信号,所以比较简单。另外下一个项目准备继续围绕平衡小车
2020-10-29 09:46:24
5533
1
原创 零基础制作平衡小车【连载】13---平衡小车代码讲解(附源码)
前言今天聊一聊代码,只有直立功能的代码。代码总体思路给定一个目标值,单片机通过IIC和mpu6050通信,得知数据后,根据角度环计算出一个PWM值给电机驱动器,从而控制单机转动。电机转动,编码器就会输出脉冲,单片机通过编码器模式检测脉冲值,并把该值代入速度环计算出一个角度值送给角度环,角度环在输出PWM给电机,以此循环。其实就是上节的框图,再贴一遍。程序程序部分为了减少篇幅,之前讲解的编码器模式及pwm等代码都不在讲解,原理都一样,只是引脚不同,我只把重点代码说一下。如果想看这部分代码的同学,后
2020-10-15 09:10:10
12123
9
原创 零基础制作平衡小车【连载】12---平衡小车控制原理
前言截止目前,初代小车已经调试完毕,功能上只能直立,后期还会加上更多功能。马上十一了,终于有时间可以更新教程了。前面关于pid的内容也已经更新完毕,如果你是跟着我的教程走的话,那么现在的你最起码对PID已经有所了解了,那么后面我就主要讲解一下平衡小车的控制原理。结合理论和实践,测地学会PID。一、平衡小车为什么会倒?说到这,那就不得不复习一下高中的物理知识-----受力分析。先看看下面一张图,来个受力分析:受力分析说明:如图所示,单摆摆长为L,摆球质量为m,从平衡位置О运动到某点A(不是最高点
2020-10-07 21:16:09
6299
5
原创 初代平衡小车实物已经调试完成
最近一直没有更新文章,主要是没有时间写,最近一直很忙,不过忙里偷闲,我先把实物弄出来了,刚好十一放假,回家慢慢更新教程。视频可以去B站观看,这里发布不了。让你们看看图片吧。这一版完全是模块化,线比较多,有点乱,功能也不多,不过好歹效果是出来了。后面做第二版准备用ALtium Designer自己画板子,咱也要专业。感觉文档是不是没人看呀,还是怪我更新太慢了。有多少人在看我的教程,举个爪,人多了下一版就出视频教程,少了还是写文章吧,权当自己记录了。...
2020-09-22 21:36:06
807
8
原创 零基础制作平衡小车【连载】11---位置式PID调参(附源码)
之前章节已经把PID从理论到时间基本上讲完了,剩下一个位置式PID就能收尾了。赶紧更完,就开始平衡小车下一步制作了。最近也是比较忙,更贴慢了很多。不过,这个零基础教程我还是要坚持写完的。位置式PID部分主要代码/********************位置式 PID 控制设计************************************/unsigned int LocPIDCalc(int NextPoint){ int iError,dError; iError = SetPo
2020-09-03 23:03:50
2952
1
原创 零基础制作平衡小车【连载】10---PID调参
PID实战也已经结束了,基本上也算上是一个小项目了完成了,既然完成了,这篇就来做个总结一下吧。PID调参首先说说调参吧,关于PID调参,我用一句话总结一下:跟着感觉走。为啥要这样说呢,因为对于初学者来说,只是写个程序,然后用试凑法进行匹配PID三个系数,以此来达到较好的控制效果。试凑法是什么,不就是跟着感觉走嘛,这种感觉就跟写英语试卷一样。不过话又说过来,这个感觉可不是随心所欲,为所欲为的,这也是有一定理论基础支撑的。一般调节方法我做个总结,如下:1.先调节P项,其他项系数都设为0这个P项怎么调
2020-08-25 14:44:01
2345
原创 零基础制作平衡小车【连载】9---增量式PID实战(附源码)
终于到实战阶段了,前面学习的理论部分着实令人乏味呀。今天来看看增量式PID怎么在STM32中实现控制电机恒速运行的。代码实现的功能按键设定目标转速stm32通过pwm控制电机维持目标转速运转并且具备显示功能,把重要参数显示在屏幕上部分重要源码讲解pwmpwm的生成之前章节已经讲解过了,在这里就不复述了,直接上代码。编码器输入不懂的可以仔细看看代码注释,注释也看不懂的,可以翻翻我之前的帖子,代码如下:按键按键很简单,我注释的也很详细,这个也不用多说了吧,直接代码:增
2020-08-19 22:07:04
2290
3
原创 零基础制作平衡小车【连载】8---位置式PID和增量式PID
上一节说的PID公式属于位置式PID,位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值,而增量式PID的输出只与当前拍和前两拍的误差有关。就温控系统来说,位置式PID输出的结果就是PWM占空比最终值,如果用增量式就是PWM占空比相比上次输出增加(减少)的值。比如用位置式控制,计算结果是100,那么占空比就是100%,如果用增量式控制,计算结果是20,那么占空比就是(上次输出值+20)%。增量式PID公式推导假设上一次输出是OUTk-1,这次输出的是OUTk,两个相减:△OUT=OUTk
2020-07-20 12:05:47
2526
4
原创 零基础制作平衡小车【连载】7---模拟PID到离散型PID的转换
上一节对PID三个参数进行了分析,知道了三个参数各自的优缺点,这节我们将三个参数整合到一起,通过他们之间优缺点互补,真正形成一个稳定的系统。模拟型PID公式这是模拟PID公式,对于这个公式,你要知道:Kp :放大系数e(t):误差(t代表第t时刻采样得到的误差)Ti :积分系数,可以理解为一个常数Td:微分系数,可以理解为一个常数另外一点就是,我们使用单片机进行PID运算,是不能采用模拟量PID的,因为单片机本身就是一个数字系统,里面只有0和1,因此不能处理模拟信号,只能将模拟信号转换成数
2020-07-20 10:54:44
1322
原创 零基础制作平衡小车【连载】6---PID参数的分析
上一节我们知道了什么是位式控制,这节就正式进入PID的学习。简单画了一个系统的控制流程图:系统说明:假设该系统是一个温控系统,用户可设定目标值Sv,单片机检测了用户输入的值之后,通过PID算法进行计算,得出一个值去输出PWM,PWM去控制加热丝的电源,加热丝就是被控对象。加热丝旁边有个温度传感器,可以实时监测加热丝的温度,并反馈给单片机一个当前的温度值Pv。之后单片机将Sv和Pv进行PID运算,根据计算结果再次改变PWM的值,就这样以此循环下去。第一个时间点采样值为X1,第二个时间点采样值为X2,
2020-07-11 15:39:39
1786
3
原创 零基础制作平衡小车【连载】5---位式控制理论
电机转速调节截止到上一章节已经完成了,从pwm的输出,到编码器的采集,代码的实现已全部完成。但是光有这些很明显不够呀,接下来就开始进入到PID的学习了。要想学会PID,不得不先学习一下简单的位式控制理论。什么是位式控制?位式控制又称通断式控制,是将测量值与设定值相比较之差值经放大处理后,对调节对象作开或关控制的调节。看定义不太好理解,下面我们就举个栗子。假设我们现在在开车,切记该车非彼车。我们想让车速维持在100,如果要是用位式控制理论的思想来开车,是这样开的:当我看到表盘车速表指针小于100时
2020-07-10 17:27:51
1625
7
原创 LCD无法显示编码器采集值问题
上一章节说的遇到了一个问题,搞了几天没搞明白、今天晚上终于解决了。问题的根源还是没有配置好编码器模式。由于在学习编码器之前我先看了输入捕获,并且程序已经调通,就直接在捕获的程序上进行修改,结果在初始化最后使能和清除中断标志位时弄错了,还是用的输入捕获的中断标志位。再一个初始化的顺序也有讲究,要把LCD放到钱面,顺序就不多说了,按照我上传的程序就没问题的,主要是中断使能和清除标志位的问题稍微说一下。之前的代码如下: //使能中断 TIM_ITConfig(TIM2,TIM_IT_CC1,
2020-07-08 21:19:21
752
原创 零基础制作平衡小车【连载】4---STM32定时器编码器模式(附源码)
回顾上一章节学习了PWM生成,刚好买的元器件也都到了。测试下代码,完美运行。这不又趁着周末,进行下一个环节—定时器编码器模式。目的是为下一步PID控制做准备。遇到的问题周末学习编码器模式也是一波三折呀,没人指点真的是寸步难行呀。气的直咬牙。说说啥情况:我用上节的PWM输出控制电机旋转,用编码器采集脉冲,想把这个脉冲显示在LCD上,就这个显示功能捣鼓了一天多,最后还是没成功,最后没办法了,只能串口打印出来。就在昨天晚上准备更新博客的时候想想不能就这么算了,又去调试了几下,奇迹出现了,LCD竟然可以
2020-07-07 09:52:26
4534
11
原创 零基础制作平衡小车【连载】3---STM32生成PWM控制电机旋转
平衡小车制作过程3—电机篇【1】制作平衡小车肯定会用到电机,那么怎么控制呢?最简单的就是直接加电压,这样电机就能转动,但是至于转多少圈,转的快慢是不能控制的。这就不符合我们平衡小车的控制要求。这就需要用到PWM模式来控制电压的大小,从而控制转的快慢。至于转了多少圈,就要用到编码器了。今天先来看看怎么控制小车转的快慢吧,一步一步来。直流有刷电机的原理简单说下有刷电机的工作原理,其实很简单,稍微懂点物理的就能看懂吧。上面这张图应该都见过吧(因为你现在就在看着它呢,手动滑稽)。小时候四驱赛车的那种黄色小
2020-07-02 15:47:44
5406
原创 零基础制作平衡小车【连载】2---元器件购买
平衡小车制作过程2---元器件购买元器件元器件1.单片机 :stm32f103ZET6,第一版先用自己的开发板吧,后面做成了在集成2.电机:带编码器的减速电机,我买的带轮胎的电机3.稳压模块:LM2596稳压模块4.洞洞板若干,第一版决定用洞洞板搭建小车,后面在定做亚克力吧。5.杜邦线若干6.MPU6050传感器7.电机驱动器TB66128.电源—12V锂电池具体链接就不发了。基本上差不多了,等待到货。...
2020-06-30 16:24:49
2972
原创 零基础制作平衡小车【连载】1---大纲
平衡小车制作过程1---大纲前言大致流程前言 发个连载,记录自己的成长,本次连载项目是制作一个平衡小车,几乎零基础吧。大致流程 平衡小车嘛,从我现在的认知,主要学习的知识应该是以下几点: 1.单片机 2.电机控制 3.PID算法 4.传感器(MPU6050) 主要是以上4点吧,细分的话就很多了。比如单片机,控制电机的话就要PWM输出了,输出之后还要检测呀,怎么检测呢,输入捕获呗。电机怎么控制,通过单片机向驱动器发送PWM,控制电压,电压大小决定速度,速度快慢通过编码器采集,采集完转
2020-06-30 16:04:30
2877
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人