久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1704|回復: 1
打印 上一主題 下一主題
收起左側

51單片機PID控制垂直風力擺設置角度源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:863245 發表于 2020-12-19 10:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>               
#include "i2c.h"
#include "delay.h"
#include "display.h"
#include "math.h"
#define uchar unsigned char
#define uint unsigned int
#define AddWr 0x90   //寫數據地址
#define AddRd 0x91   //讀數據地址
void timer0_init();  //定時器0初始化
void motor_run();
void control();
uchar time;
uint motor_pwm;
double count=0; //定義占空比,并初始占空比為26%
sbit PWM=P2^3;      
sbit Motor_CW=P2^4;
sbit Motor_CCW=P2^5;
float angleset=50;
float angel;
uint nowerror;
long sumerror;
uint lasterror;
float output;

float kp=0.56,ki=0.008,kd=1;
extern bit ack;
bit flag;
//bit WriteDAC(unsigned char dat);
/*------------------------------------------------
              主程序
------------------------------------------------*/
uchar ReadADC(uchar Chl)
{
  uchar val;
  Start_I2c();
SendByte(AddWr);
if(ack==0)return (0);
SendByte(Chl);
if(ack==0)return (0);
  Start_I2c();
SendByte(AddRd);
if(ack==0)return (0);
val=RcvByte();
NoAck_I2c();
Stop_I2c();
return(val);
}
void motor_run(uint pwm)
{
if(time<pwm)  //定義電機的轉速
{
   PWM=1;
}else
{
   PWM=0;
}
if(time>100)
{
   time=0;
  flag=1;
}

}
/****************************pid*****************************/
void timer0_init()
{
  TMOD=0x01; //定時器0工作于方式1
  TH0=(65536-100)/256;
  TL0=(65536-100)%256;
  TR0=1;
  ET0=1;
  EA=1;
}

/**************定時0中斷處理******************/
void timer0_int() interrupt 1
{

  TR0=0;    //設置定時器初值期間,關閉定時器
  TH0=(65536-100)/256;
  TL0=(65536-100)%256;
  TR0=1;
  
  time++;
motor_run(motor_pwm);

}

uint XIANFU_Pwm(uint pwm)
{
  if ( pwm <0) pwm = 0;
  if (pwm>=100)  pwm= 100;
return pwm;

}
float PID_Control(float angleset,float angel)
{
angel=ReadADC(0x40);
  nowerror=angleset-angel;//當前誤差
  sumerror+=nowerror;   //誤差求和
  if(sumerror>2500)
  sumerror=2500;//限幅
  output = kp*nowerror+ki*sumerror+kd*(lasterror-nowerror);
  lasterror=nowerror;
  return output;//增量輸出
}
void control()
{
motor_pwm=(uint) PID_Control(angleset,angel);
motor_pwm= XIANFU_Pwm(motor_pwm);
//motor_run(motor_pwm);
}
main()
{
      
float angleAD;   
Motor_CW=0;        //電機正反轉   
Motor_CCW=1;
        timer0_init();
        while(1)
        {
           
                if(flag==1)
        {
                    flag=0;
           control();
        }
                  
                angleAD = ReadADC(0x40);     //絕對角度數字值AD值
               display(angleAD);
             //WriteDAC(angleAD);
     
        }
}

程序.zip

98.71 KB, 下載次數: 17, 下載積分: 黑幣 -5

51程序

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2020-12-19 21:13 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情欧美激情在线五月 | 久久毛片| 日韩在线视频免费观看 | 9999国产精品欧美久久久久久 | 欧美偷偷 | 成人妇女免费播放久久久 | 中文字幕视频在线观看 | 国产精品高清一区二区三区 | 亚洲一级av毛片 | 欧美九九 | 国产精品一区二区久久 | 日韩快播电影网 | 国产一区二区三区在线 | 成人不卡视频 | 国产成人精品一区二区三区 | 麻豆changesxxx国产 | 欧美午夜精品 | 狠狠干综合视频 | 狠狠干av | 青娱乐自拍 | 国产精品乱码一区二三区小蝌蚪 | 亚洲综合色视频在线观看 | 久久久久国产 | 精品一区二区三区在线观看国产 | 欧美日韩国产一区二区三区不卡 | 欧美人妖网站 | 亚洲综合无码一区二区 | 精品不卡 | 免费观看一级特黄欧美大片 | 精品国产乱码久久久久久1区2区 | 色综合视频 | 伊人免费观看视频 | 羞羞在线视频 | 日本亚洲一区二区 | 国产婷婷色综合av蜜臀av | 午夜免费精品视频 | 国产精品自拍一区 | 免费午夜视频 | 国产精品成人一区二区三区夜夜夜 | 亚洲一区二区三区桃乃木香奈 | 国产精品一区二区av |