打印

AVR单片机ATtiny13上拉式磁悬浮代码

[复制链接]
1793|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
/*****************************************************
panxiaoyi
CodeWizardAVR
Chip type           : ATtiny13
Clock frequency     : 9.6 MHz
上拉式磁悬浮
本程序与电磁力学和惯性和重力加速度有关
电磁铁在上,螺丝钉在下,螺丝钉的底部有强磁小磁铁吸附
网购的电磁铁铁心直径8MM,高15MM,6欧姆,580匝
主供电18V/2A,强磁铁直径10MM,高5MM,空心。螺丝钉长30MM,直径5MM
单片机OC0A(PD6)直接驱动MOS管K2749,无保护二极管,无续流二极管
线性霍尔元件49E贴于磁铁底部中央,无磁时输出VCC/2电压,有南北磁时电压变大或者变小
霍尔元件有印字面朝向大地,背面贴于电磁铁,调换电磁铁接线,使线圈通电时E49输出电压变小
电磁铁由连续的PWM驱动,在每个方波的下降沿开始计数延时,然后检测49E输出电压
方波出现下降沿后延时是为了等待剩磁消失,以免由此引起的测量误差
电磁铁没有续流二极管时,剩磁消失快,有续流二级管时,剩磁消失慢会影响霍尔检测
PWM频率不宜太高,高电平最大占空比不宜太大,这样做的目的是保证检测49E时没有剩磁干扰
也保证在模数转换完成之前,下一个方波还没有出现
特别注意:
由于上述多种作用力的存在,悬浮物上升时和下降时应该分别处理,使用PID算法也要分开处理
当悬浮物上升时,即使它没有上升到预期点,也应该减少磁电力
当悬浮物下降时,即使它没有下降到预期点,也应该增大磁电力
使用8位ADC和8位PWM即可
*****************************************************/


#include <tiny13.h>                                       
#define SET  80                                           //期望值
#define E49L 45                                           //完全吸合时测量霍尔元件E49的值


unsigned int adc_new, adc_old, pwm ;


interrupt [TIM0_COMPB] void timer0_ovf_isr(void)          //在PWM低电平期间检测霍尔数据
{
  adc_old=adc_new;                                        //更新旧数据
  ADMUX=32+2;                                             //参考电压VCC/结果左对齐/通道ADC_IO=0-3
  ADCSRA=0b11000111;                                      //ADC使能/启动ADC转换/128分频
  while((ADCSRA&16)==0);                                  //等待转换结束
  adc_new=ADCH;                                           //读取数据
  ADCSRA|=16;                                             //清除转换结束标记
  
  if(adc_old<adc_new)                                     //下降时   
  {
    if(adc_new<SET) pwm=(adc_new-E49L)*4;                 //悬浮物下降到期望值之前
    else pwm=(adc_new-E49L)*5;                            //悬浮物下降到期望值之后
  }
  if(adc_old>adc_new)                                     //上升时
  {
    if(adc_new<SET) pwm=(adc_new-E49L)*2;                 //悬浮物上升到期望值之后
    else pwm=(adc_new-E49L)*3;                            //悬浮物上升到期望值之前
  }
  
  if(adc_new<110)DDRB.0=1; else DDRB.0=0;                 //无磁时保护
  if(adc_old<E49L && adc_new<E49L) pwm=0;                 //防吸死保护
  
  if(pwm>150) pwm=150;                                    //占空比不能太多  
  OCR0A=pwm;                                              //更新pwm占空比
  OCR0B=pwm+90;                                           //在PWM输出低电平后延时中断以确保没有剩磁
  
}


void main(void)
{
  TCCR0A=0b10000011;                                      //OCR0A快速PWM
  TCCR0B=0b00000011;                                      //7.3728M除以256计数再除以64分频=590Hz
  TIMSK0=0b00001000;                                      //OCR0B比较匹配中断使能
  SREG|=128;                                              //全局中断使能         
  while (1)
  {                                                                                


  };
}


使用特权

评论回复

相关帖子

沙发
panxiaoyi|  楼主 | 2021-2-2 14:57 | 只看该作者
完整代码

ATtiny13上拉式磁悬浮.rar

99.83 KB

使用特权

评论回复
板凳
panxiaoyi|  楼主 | 2021-2-2 15:10 | 只看该作者
上图

微信图片_20210202150809.jpg (279.27 KB )

微信图片_20210202150809.jpg

微信图片_20210202150803.jpg (287.28 KB )

微信图片_20210202150803.jpg

微信图片_20210202150753.jpg (292.52 KB )

微信图片_20210202150753.jpg

使用特权

评论回复
地板
panxiaoyi|  楼主 | 2021-2-2 15:29 | 只看该作者
有十多年没有玩单片机和电子技术了,这段时间脚受伤行动不了无聊,顺便玩玩旧爱

使用特权

评论回复
5
panxiaoyi|  楼主 | 2021-2-2 15:30 | 只看该作者
我想咨询一下,我现在想了解一下笙泉单片机,请问从什么型号的芯片开始?

不是说笙泉好不好,而是笙泉单片机有中文数据手册,我英文特差的,所以,ST再热门也没有我的份,现在AVR也没有新的中文资料了,听说现在AVR也很少人用了,是吗?

使用特权

评论回复
6
wh6ic| | 2021-2-2 15:56 | 只看该作者
panxiaoyi 发表于 2021-2-2 15:30
我想咨询一下,我现在想了解一下笙泉单片机,请问从什么型号的芯片开始?

不是说笙泉好不好,而是笙泉单片 ...

现在大陆产的 MCU 基本都有 比较详细的中文 PDF
   RISC 核的 上海 ChipOn
   51核的 上海芯圣、深圳赛元
   M0核的 上海华大、深圳航顺、佛山华芯微特 ... ...

使用特权

评论回复
7
henangongda123| | 2021-2-2 17:35 | 只看该作者
panxiaoyi 发表于 2021-2-2 15:30
我想咨询一下,我现在想了解一下笙泉单片机,请问从什么型号的芯片开始?

不是说笙泉好不好,而是笙泉单片 ...

STM8S大把的中文资料,而且用的人多,有问题你搜索一大堆结果参考,只是现在价格疯涨

使用特权

评论回复
8
henangongda123| | 2021-2-2 17:52 | 只看该作者
AVR十年前就退出市场了,现在没多少人用

使用特权

评论回复
9
ddllxxrr| | 2021-2-3 09:30 | 只看该作者
我说楼主32位的单片机都几块钱了,还搞8位。我都觉得有点不合时宜了

使用特权

评论回复
10
panxiaoyi|  楼主 | 2021-2-3 19:07 | 只看该作者
@ddllxxrr 是啊,我也想玩一下32位机,请问大家,32位机中,有那种是常见的、好用的、有官方中文资料的、且将来估计还会有中文支持的,满足这4个条件的32位机是什么品牌?

使用特权

评论回复
11
panxiaoyi|  楼主 | 2021-2-3 19:16 | 只看该作者
@henangongda123  我去ST官方网站看了,没有找到STM8S的中文数据手册啊,之前有,我也下载有,但是,现在官网没有了,说明官方不打算支持中文了,我本身就是业余爱好者,既然它(包括AVR、)现在或者将来不支持中文,我就不考虑花时间去学它了。
所以,我还是想咨询:
8位机、32位机中,有那种是常见的、好用的、官方网站必须能下载到中文资料的,满足这3个条件的8/32位机是什么品牌?谢谢

使用特权

评论回复
12
ddllxxrr| | 2021-2-4 06:54 | 只看该作者
panxiaoyi 发表于 2021-2-3 19:16
@henangongda123  我去ST官方网站看了,没有找到STM8S的中文数据手册啊,之前有,我也下载有,但是,现在官 ...

STM32F0系列

使用特权

评论回复
13
panxiaoyi|  楼主 | 2021-11-8 15:05 | 只看该作者
下面也是我设计的STM8S105驱动的下推式磁悬浮源代码

https://bbs.21ic.com/icview-3170340-1-1.html

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

384

帖子

2

粉丝