■ 前言


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

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

01单片机电路模块1


1.电路模块设计

▲ STC8H1K28原理图

▲ 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

02基本测试


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

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

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

▲ 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设置与线圈两端的电压之间的关系

将A1308的输出连接到STM8H1K28的ADC1(注意:不是0),读取AD1308的输出。

▲ 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 ↩︎

使用STC8H1K28控制微型磁悬浮相关推荐

  1. STM32F407控制微型推拉式电磁铁(通过继电器)

    1.继电器 继电器相当于开关,单片机通过io口高低电平的控制来控制继电器的开闭.采用继电器的好处除了能够用低电压控制高电压(如32单片机控制220V的电压)外,还可以防止电流反冲,弄烧单片机. 本文采 ...

  2. 磁铁驱动反向续流串接电阻的的分析

    ■ 电磁铁驱动 电磁铁对外产生的磁场与流过的电流之间,在电磁铁没有饱和之前大体呈现线性关系.如果忽略磁滞.磁饱和等非线性的特点,可以通过控制流经电磁铁的电流来控制它的电磁吸引力. 电磁铁一般可以等效成 ...

  3. 集成两路MAX1169的STC8G1K08模块,带有两路PWM输出

    ■ 设计背景 在 集成有MAX1169,MAX520的DAAC单片STC8G1K08机电路板 中设计了集成有MAX1169的ADDA模块,对于一些需要使用PWM驱动的实验,这款模块还无法进行集成实验. ...

  4. 基于OEP30WD类音频功率放大器驱动电磁铁--以失败告终

    ■ 实验背景 近期需要做一些与电磁铁相关的实验,包括 使用STC8H1K28控制微型磁悬浮 : 磁悬浮地球仪控制初步测试: 磁悬浮地球仪拆解 : 电磁铁的磁芯实验 等.模拟驱动电磁铁可以使用PWM波形 ...

  5. 基于L298N的微型直流电机的控制课程设计报告

    1 绪论 1.1  直流电机简介 直流电机就是将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机.直流电机的结构应由定子和转子两大部分组成.直流电机运行时静止不动的部 ...

  6. 香港城市大学全球首创3D打印微型机器人技术 有望作治疗癌症用途

    香港城市大学(香港城大)的研究团队开发出了全球首创以磁力控制的3D打印微型机器人,该微型机器人技术能做到在生物体内精准运载细胞到指定的位置.新研发的微型机器人有望应用在治疗癌症的靶向治疗,并为细胞层面 ...

  7. 香港城大:首创3D打印磁控微型机器人技术,推动人体送药研究发展

    香港城市大学研究团队全球首创由磁力推动.3D打印的微型机器人技术,能于生物体内精确地运载细胞到指定位置,预料可用作人体送药,为癌症治疗.细胞层面的治疗.再生医学等方面的应用,带来革命性改变. 近年,再 ...

  8. 【论文笔记】虚拟领导者控制编队机动

    [名称]Formation control of unmanned micro aerial vehicles for straitened environments [刊物]Autonomous R ...

  9. Ardunio开发实例-微型振动电机

    微型振动电机 微型振动电机,适合作为不可听见的指示器. 当输入为高电平时,电动机将像在静音模式下的手机一样振动. 本次实例将通过高低电平控制微型振动电机的振动. 1.硬件准备 Arduino UNO ...

最新文章

  1. Android系统--TouchEvent的处理流程
  2. iOS Sprite Kit教程之编写程序以及Xcode的介绍
  3. XDocument 获取包括第一行的声明(版本、编码)的所有节点
  4. where和having的区别
  5. el表达式 if 和 if else 的写法
  6. Spring REST XML和JSON示例
  7. Java jar 修改(springfox-swagger-ui-2.9.2.jar 修改去掉顶部的绿色topbar,汉化)
  8. pythonjam可以画图吗_GitHub - jamfs/pyecharts: Python Echarts Plotting Library
  9. 二、kafka基本操作和管理
  10. HP FC MSA2000服务器raid数据恢复成功案例
  11. 第二节20181110
  12. 全网首发:使用安卓MediaCodec Encoder进行编码时的方向问题
  13. 机器人matlab仿真步骤,MATLAB机器人仿真程序.doc
  14. 硬盘GPT和MBR分区表转换方法
  15. 将base64指纹编码输出为指定大小的图片
  16. u大师U盘装系统教程
  17. 开发一个 Chrome 浏览器插件,拢共分几步?
  18. 【随机优化】李雅普诺夫优化在通信与排队系统中的应用(第一章)-绪论
  19. 盘点2019大佬申请证书,快来盘算下你的职业生涯
  20. 如何培养新人总结_新手总结3----剑客角色培养篇

热门文章

  1. java之final
  2. 转:android实时语音问题分析
  3. html5图片懒加载
  4. 实战2--应用EL表达式显示投票结果
  5. 从指纹到眼球识别:漫谈手机安全方案
  6. JQuery设置checkbox的值,取checkbox的值,设置radio的值,取radio的值,设置下拉选select的值,取select的值...
  7. 前端神器—Google Chrome Devtools细节详解
  8. java资料——线性表(转)
  9. 闭关第1天——儿童节快乐,永远年轻快乐
  10. 在fvwm中将右手习惯改为左手习惯的简单办法