2024微机原理课程设计-小车跟随系统
小车基本控制设计
一、前期系统分析与设计
在本次设计的前期准备工作中,通过对题目的分析,小车运动的精确低延迟控制+蓝牙通信都是相当重要的关键点。本次课程设计,使用电机型号为带霍尔传感器地无刷电机,能够通过内置编码器的A,B相固定输出390次/圈的脉冲,可以用于精准测量电机转速以及作为车辆里程表。因此,我基于所用电机的特性,利用PIC单片机CCP极其优秀的PWM输出功能,设计了一个易用的电机驱动程序,能够使得单片机输出频率10KHZ,占空比可调范围在0~100的PWM信号。对比于常规的使用定时器作为计时基准的方法,直接利用单片机设计好的电路外设模块,减轻了单片机程序上消耗的资源,也大幅提高了后续小车的运动性能以及稳定性。重要的一点是,基于对自动控制原理的粗略学习,我们可以利用本次电机所带的编码器模块,实现单片机测速——程序PID控制器——输出PWM波的一个PID自动控速系统以及能够精准记录脉冲数的车辆里程表(这在后面进行内外圈转向时发挥了关键的作用),同时,蓝牙模块也是一个极其便捷的工具,使用两片蓝牙模块,分别连接单片机和计算机,在一些串口助手软件上,能够迅速实现基于上 ...
【stm32单片机】[Hal库][1]Hal库初始化配置
前言
xxxxxxxxxx $ tags: -数字电路与VHDL设计"bash
需要安装java环境,才能正常允许CubeMX
确保以及安装了Keil MDK,Keil完成了stm32的芯片包配置,至少下载串口通信(FLY MCU) , STLink Unit中其中一款下载/串口通信软件。
一、CubeMX初始配置
1.CubeMX安装芯片固件包
xxxxxxxxxx typedef struct//typedef为成员列表提供了一个GPIO_InitTypeDef的名字{}GPIO_InitTypeDef;c
像常用的stm32f103c8t6,我们就选择STM32F1,勾选最新固件包,点击Install Now进行在线安装
2.工程创建
1.打开stm32cubeMX,File > New project >MCU/MPU Selector >Part Number
2.输入stm32f103c8,Start Project
3.Project Manager > Project
3.引脚配置
3.外设配置
GP ...
【蓝桥杯单片机】客观题
RC低通滤波器
截止频率
【stm32单片机】[11]IIC通信(mpu6050)
IIC通信协议
基本功能
同步时序的稳定性比异步时序更高
半双工
SCL、SDA两根通信线
支持总线挂载(一主多从,多主多从)
硬件电路
所有I2C设备的SCL连接在一起,SDA连接在一起
设备的SCL和SDA均要配置成开漏输出模式(防止形成短路电流,SDA要么被上拉,要么输出低电平),会有“线与”的现象。在多主机的模式下,可以利用线与的特性,实现总线仲裁和时钟同步。
SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右
PS:IIC时序是高位先行,串口是低位先行
PS:主机接收时,需要释放SDA,即输入模式
PS:从机的地址可以通过电路改变
红线处,此时需要从机应答,这里如果但看主机的SDA,应该会释放SDA,即高电平,由于从机要发送应答,根据线与的特性,这里拉低了SDA,所以最后SDA呈现图中所示。
IIC通信的设备中会有单独一个字节空间存储地址指针,当给IIC设备指定地址写时,地址指针会加一,这时如果使用当前地址读,就是读取指针地址指向的内存。此时序较为少用、
指定地址读的实现原理:先调用指定地址写,但是不写数据。再次 ...
【stm32单片机】[9]DMA数据转运
相关库函数
恢复缺省配置
void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx);
初始化DMA
void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct);
结构体初始化
void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct);
DMA使能
void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState);
中断输出使能
void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState);
DMA设置当前数据寄存器
void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNum ...
【stm32单片机】[10]串口通信
库函数解释
结构体初始化配置
void USART_DeInit(USART_TypeDef* USARTx);
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
同步时钟配置
void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);
发送数据
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
写DR寄存器
接收数据
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
...
【Python学习】[1] Python基础
第一个Python程序
12345678910111213141516(base) C:\Users\123>pythonPython 3.11.7 | packaged by Anaconda, Inc. | (main, Dec 15 2023, 18:05:47) [MSC v.1916 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> print('Hello world')Hello world>>> print("Hello world")Hello world>>> name = input('请输入你的名字')请输入你的名字'Turin'>>> print(name)'Turin'>>> print('Hello',name)Hello 'Turin'>>> 2**101024>>>
数据类型和 ...
【pid算法】[入门篇] 1-深入浅出pid控制算法原理
一、PID的电机控制简易实现
pid模拟调参(无人机)
Webpack App (rossning92.github.io)
多环(平衡小车)
12345678910111213141516171819202122232425262728int Kp,Ki,Kd;int Error;int Error_old;int Error_difference;long int Error_sum;void I_amplitude_limiting(int number){ if(Error_sum>number) { Error_sum=number; }}//PID控制系统:P、I、D共同作用//measure,calcu:系统的输入int PID_control(float measure,float calcu){ Error = measure - calcu;//误差值 Error_sum += Error;//误差累加 I_amplitude_limiting(2000);//限幅函数 Error_difference = Error- Error_old;//误 ...
【微机原理】红外通信系统
# 前言
一、红外通信系统
二、红外调制解调的原理
空闲状态:红外LED不亮,接收头输出高电平
发送低电平:红外LED以38KHz频率闪烁发光,接收头输出低电平
发送高电平:红外LED不亮,接收头输出高电平
总而言之,只有红外LED发送38KHZ的闪烁信号时,红外接收头OUT引脚才会对外输出低电平信号
红外发送–红外接收的本质是调制和解调,在这种条件下,可以过滤掉自然界中的“噪声信号”,只有38KHZ附近的红外信号才能被红外接收头识别转换为对应的低电平。
转换示意图:
1.红外LED发出的信号
2.红外接收头发出的信号
其中,红外接收头发出的低电平信号的宽度等价于红外LED发送的38KHz信号的时间。
一、基于CCP1输入捕获模式的解调电路
1. Proteus生成基带信号
1.1脉冲最小单位
1.2特定脉冲序列
从左往右表示数据从高位到低位,如图所示为01001101
1.3仿真结果
代码部分
1234567891011121314151617181920212223242526272829303132333435363738#include < ...
【HEXO】[2] 多线程部署常见问题
HEXO更新日志
2024.5.3
重要更新:将HEXO博客部署到腾讯云轻量化服务器,极大提升国内访问速度,访问ip地址:Turin’s Blog - 数理照亮世界
优化主页文章卡片界面,参考文章:首页 | Butterfly主题美化教程 (zhheo.com)
优化网站页面显示效果:透明度。博客背景使用一图流 | QianChengGit の小森林
xxxxxxxxxx git remote add [alias] [url]//参数[alias]为别名, [url]为远程仓库的地址bash
一、HEXO部署到云服务器(Ubuntu系统)
Hexo部署至服务器(Ubuntu 20.04)-腾讯云开发者社区-腾讯云 (tencent.com)
04_Hexo-多平台部署-云服务器-GitHub-Gitee | Mycpen
二、Ubuntu允许root连接服务器
Linux开启ssh并允许root登录(ubuntu、centos、kalilinux)_ssh允许root远程登录-CSDN博客
报错信息 “E45: ‘readonly’ option is set ...
【ROS2】“人在回路”---与生成式人工智能交互的视觉医疗机器人
“人在回路”—与生成式人工智能交互的视觉服务机器人
第一次更新:2024.4.28
前言
人在回路(Human-in-the-loop)是一种模式,类似于人机闭环系统或人机互助系统。这种模式被认为是机器学习、人工智能和机器智能的一种可行发展模式,需要人与机器之间的相互作用。在这种模式下,人类始终是模型的一部分,影响着模型的结果,并且需要人类的智能来帮助机器更加智能化。
ChatGPT是一款强大的基于深度学习的自然语言处理模型,能够生成高质量的自然语言文本。使用ChatGPT+TogetheROS,即ChatRobot将文字描述转化为小车控制指令,根据描述生成特定功能的代码,使机器人按照描述执行相应的任务。–转自NodeHube社区。–转自NobeHube
项目信息:
我们的机器人定位为医疗看护机器人(无人车),使用RDK X3 嵌入式AI开发板作为主控,通过Opencv等进行视觉识别,基于类似激光雷达测距的方法实现自主导航运动,满足不同场景下的控制需求。通过ROS2系统使小车与计算机进行通信。
我们计划使用OpenAI提供的API接口写入小车系统,实现初步的语音交互到控制的过 ...