上拉式的磁悬浮
还不是很稳定,硬件完全是是仿照gzhuli 前辈的,2路变一路。学单片机的第一个作品,三天的泡面没白吃,献丑了在此谢谢gzhuli 前辈
#include<avr/io.h>
#define F_CPU 8000000UL
#define uint unsigned int
#define uchar unsigned char
void Delay_ms(uint i)
{
uint j;
while(i--)
{
for(j=0;j<1200;j++);
}
}
uint get_adc()
{
uint a=0,b=0;
ADMUX=0X60;
ADCSRA=0X87;
Delay_ms(1);
ADCSRA|=0X40;
while(!(ADCSRA&0X10));
a=ADCL;
b=ADCH;
ADCH=0x00;
ADCL=0x00;
ADCSRA&=0Xef;
return b;
}
int ads,m;
int kp=1,ki=0,kd=1;
int temp=0;
int pid()
{
static int n1,n2,n3,res;
n1=get_adc();
res=196+kp*n1*n1/676+(n1-n2)*kd/3;
n3=n2;
n2=n1;
return res;
}
int main(void)
{
DDRA&=~(1<<0);
DDRB|=0x30;
DDRD|=0X30;
PORTB|=0x10;
TCCR1A=0X63;
TCCR1B=0X1B;
while(1)
{
get_adc();
Delay_ms(5);
OCR1A=255;
temp=pid();
if(temp>255)temp=255;
if(temp<0)temp=0;
OCR1B=temp;
}
}
晕死,上拉式的根本不用程序。用MCU成本太高啦! 嘿嘿,路过,帮顶一下 看着不错,挺好玩的 自己觉得好玩就行!!!{:lol:} chaily 发表于 2013-4-22 11:38 static/image/common/back.gif
晕死,上拉式的根本不用程序。用MCU成本太高啦!
你意思是用条绳子吗? {:titter:}{:titter:}绳子,真搞笑! 用绳子。。。。少年好机智{:lol:} 很不错!顶一下。 你好。我也是机械电子工程的研究人员。我最近在调一个上拉式的磁悬浮。没有用到hall传感器,反馈的信号是装有红外灯头的位移信号。MCU用的是stm32f429. PID控制代码如下:
disp_err = SET_disp - Now_disp;
increment_disp = kp * (disp_err - err_pre) + ki * (disp_err) + kd * (disp_err - 2*err_pre + err_pre_pre);//PID输出增量
Actual_disp += increment_disp;
err_pre_pre =err_pre;
err_pre = disp_err;
出现的现象当把铁球放在位移传感器的中点附近,PID控制的输出电压不能保持与其位移对应的电压值。会很快降到0。把球网上动一点,就会马上被磁铁吸上去,并且一直吸住,直到掉下来。总的来说,就是不能保持在空中悬浮的状态。想问问你,应该怎么写这个磁悬浮的PID控制程序。
页:
[1]