使用STC8H1K28控制微型磁悬浮

■ 前言


电磁铁的磁芯实验 中介绍了 Magnetic Levitation - The Easy Way | Elektor Magazine 中使用继电器线圈做磁悬浮的方式。电路非常简单,制作相对容易。

下面对该实验进行测试,并为今后使用模型建立打下基础。

 

01单片机电路模块1


1.电路模块设计

▲ STC8H1K28原理图

▲ STC8H1K28原理图

▲ STC8H1K28PCB图

▲ STC8H1K28PCB图

  • 用于实验的IO端口功能定义:
序号 符号 功能
1 ADC0 模拟输入0
2 ADC1 模拟输入1
3 GND 电源地线
4 +5V 电源5V
5 PWM1 PWM1
6 PWM2 PWM2
7 PWM3 PWM3
8 PWM4 PWM4

★ 调试结论:

在使用PWM输出时,值需要引出 PWM1P

2.单片机软件2

● PWM输出

应用STC8H1K28的PWM1,2输出占空比可调波形,来控制线圈两端的电压。

功率输出部分使用了一款电机驱动MOS板来线圈。

▲ 实验电路以及电机驱动模块

▲ 实验电路以及电机驱动模块

输出PWM信号:

  • 频率:10kHz;
  • 幅值:12V;
  • 占空比:0~100%

▲ 输出PWM波形,频率为10kHz

▲ 输出PWM波形,频率为10kHz

 

02基本测试


1.测试施加电压与A1308的输出

在磁铁下面安装一个A1308线性HALL。测量在线圈施加PWM电压与A1308输出之间的关系。

设置MCU的PWM1,2 与电机驱动板连接、电机驱动板的输出与继电器线圈的连接极性,使得最终,施加的电压越大,HALL的输出越高。如果极性相反,只需要改变MCU与电机接口,或者电机接口与线圈之间的连接顺序即可。

▲ A1308线性HALL安装位置

▲ A1308线性HALL安装位置

设置SetPWMOut函数,输入参数从-100~100。分别表示施加在继电器两端的电压从-12V到+12V 。

void SetPWMOut(int nRatio) {
    unsigned long lnNumber;
    unsigned char ucNegFlag;
    unsigned int nNumber;
    ucNegFlag = 0;
    if(nRatio < 0) {
        ucNegFlag = 1;
        nRatio = -nRatio;
    }
    if(nRatio >= 100) nRatio = 100;
    lnNumber = PWM1_ARR_2;
    lnNumber *= nRatio;
    lnNumber /= 100;
    nNumber = (unsigned int)lnNumber;
    if(ucNegFlag == 0) nNumber += PWM1_ARR_2;
    else nNumber = PWM1_ARR_2 - nNumber;
    PWM1SetDuty(nNumber);
    PWM2SetDuty(PWM1_ARR_1 - nNumber);
}

▲ SetPWMOut设置与线圈两端的电压之间的关系

▲ SetPWMOut设置与线圈两端的电压之间的关系

将A1308的输出连接到STM8H1K28的ADC1(注意:不是0),读取AD1308的输出。
▲ PWM设置与A1308输出的ADC

▲ PWM设置与A1308输出的ADC

 

03施加反馈控制


从单片机的CH0读入设定电压值。
然后通过比较AD1308的电压值与输入设定电压,进行负反馈控制。

nDelta = ADCConvert() - nADC;
if(nDelta > 0) SetPWMOut(-99);
else SetPWMOut(99);

▲ 施加负反馈之后的悬浮状态

▲ 施加负反馈之后的悬浮状态

▲ 不加空气阻尼是悬浮振荡

▲ 不加空气阻尼是悬浮振荡

 

※ 结论


对于使用继电器线圈制作电磁悬浮的小实验进行实验,初步验证了该方式的可行性。遗留一下问题为今后实验所证实, 对该实验中的各个器件进行数学建模,寻找悬浮稳定参数建立理论分析。


  1. 单片机AD工程文件:AD\Test\2020\Experiment\MagneticLevitation\MLSTC8H1K28.PcbDoc * ↩︎

  2. 单片机控制软件工程:C51\STC\Test\2020\Experiment\MLSTC8H1K28\MLSTC8H1K28.uvproj ↩︎

OpenVINO计算机视觉—实例实战

11-02
手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。 课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。 基本提纲: 1、课程综述、环境配置 2、OpenVINO范例-超分辨率(super_resolution_demo) 3、OpenVINO范例-道路分割(segmentation_demo) 4、OpenVINO范例-汽车识别(security_barrier_camera_demo) 5、OpenVINO范例-人脸识别(interactive_face_detection_demo) 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo) 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo) 8、NCS和GOMFCTEMPLATE 9、课程小结,资源分享
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值