IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于STM32F407的座椅展示 -> 正文阅读

[嵌入式]基于STM32F407的座椅展示

基于STM32F407的座椅展示

先看看成品样子、本次电路图,有图有真相

在这里插入图片描述
有朋友介绍说有个座椅展示舱,原来设备可以正常运行,但年久失修,部分器件损坏,导致不能运行,因此需要在保留原来主体结构的基础上,重新设计电器控制部分,实现原来运动。
现场勘验,设备主体分4个部分:
单椅部分
X轴,直流运行电机,有前、后限位光电开关,中间有2个接近开关,中间有一个感应开关;
Y轴,直流运行电机,有前后限位光电开关(限位位置需要和X位置配合);
旋转,无刷直流电机,带控制器,有前、中、后限位光电开关;
单椅头枕调节,直流电杠,1个线限位开关。
靠背翻转,2个电机,有前、中、后光电限位;
托腿,2个电机,有1个后限位开关。
在这里插入图片描述
双椅部分:
X轴:直流电机,有前、后限位开关;
旋转靠背,2个直流电机,有前、后限位开关;
头枕上下,2个直流电机,每个有1给下限位开关;
头枕旋转,2个直流电机,每个有前、后限位开关;
臀部顶升,1个电缸,下限位开关
腰部顶升,1个电缸,下限为开关
小凳子部分
X轴:步进电机,有驱动器,有前、后限位,中间有两个接近开关。
升降:1个电缸,下限位开关。
小桌子部分
X轴:成品门控系统,有前、后限位光电;
Y轴,1个直流电机,有前、后限位开关;
旋转,1个直流电机,有前、后限位开关。
根据现场设备调研和实际开发周期要求(要求15天开发完成),丙方确定找现成的板子做。选板如下,主角出场
在这里插入图片描述
该板主控芯片STM32F407,有24个光隔输入、16个光个输出,20路差分输出、1路485、1路232。原计划有4块,1块做主控,3块从,每块控制一部分;主控接收上位指令,根据定义自己处理或分发给对应的板子处理。随着测验的进一步进行,整体方案变更为使用两块板子,功能框图如下
在这里插入图片描述
驱动板开始选用
在这里插入图片描述
因为有些电机太大,导致在堵转情况下烧板子;老板说:这种情况宁可让烧电机都不能让烧板子,责任不一样呀。好了,新的强力驱动上场了:
在这里插入图片描述
到此,硬件的基本介绍完了。

程序设计

1:系统节拍
用TIM3做一个1ms的系统节拍,作为输入、延迟等的实际基础。
因为TIM3在APB1总线上,我们定义的APB1总线频率为84Mhz
在这里插入图片描述
因此配置TIM3参数如下
htim3.Init.Prescaler = 83;
htim3.Init.Period = 1000;
并且启动TIM3的中断:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim==&htim3)
{
}
}
2:输入信号采集
因为输入信号有可能有抖动,因此需要做去抖操作。本系统中所有去抖时长都为10ms。

#define KEYDELAY 10

void Key_delay(void)
{
int i;
for(i = 0; i < MaxIn; i++)
{ //key_data确认的输入口值
if(key_data[i] != key_indata[i]) //key_indata读到的输入口值
{ //key_tmpdata临时输入值
if(key_tmpdata[i] == key_indata[i])
{
if(key_delay[i] == 0)
{
key_data[i] = key_indata[i];
}
}
else
{
key_delay[i] = KEYDELAY;
key_tmpdata[i] = key_indata[i];
}
}
}
}
该函数在主程序中循环调用。

去抖延迟部分在TIM3定时器中断中加入
for(i = 0; i < MaxIn; i++)
{
if(key_delay[i] > 0)
{
key_delay[i] --;
}
}

3:电机PWM控制
根据实际测试,本设备用定脉宽控制就可满足使用要求。
我们用TIM8作为脉冲控制定时器,配置PWM输出引脚如下
在这里插入图片描述

TIM8在APB2总线上,该总线频率168MHz。
htim8.Init.Prescaler = 41;
htim8.Init.Period = 500;
计算PWM频率为8KHz。
在CH4上接的单人椅子X轴,占空比70%时,运行速度满足要求,因此程序配置
sConfigOC.Pulse = 350;
4:步进电机脉冲控制
小凳子X轴的步进电机有专用的步进电机控制器,需要的控制信号有方向、使能、步进速度。
经测试步进电机1秒1圈的速度满足实际要求。步进电机控制器上正好有8K的细分。这样就可以用TIM8的CH1作为步进脉冲速度控制引脚。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:36:52  更:2022-04-24 09:37:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:46:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码