娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月31日(星期五)

2020年01月31日 | 單片機PWM+紅外對管控制直流電機設計

發布者:leader5 來源: 51hei關鍵字:單片機  PWM  紅外對管控制  直流電機 手機看文章 掃描二維碼
隨時隨地手機看文章

設計中采用了專門的芯片組成了PWM信號的發生系統并且對PWM信號的原理、產生方法以及如何通過軟件編程對PWM信號占空比進行調節從而控制其輸入信號波形等均作了詳細的闡述。另外本系統中使用了紅外對管對直流電機的轉速進行測量,經過整形電路后將測量值送到單片機,并且最終作為反饋值輸入到單片機進行PID運算從而實現了對直流電機速度的控制。在軟件方面,文章中詳細介紹了PID運算程序初始化程序等的編寫思路和具體的程序實現。
 

1 單片機最小系統:單片機最小系統由51單片機,晶振電路,復位電路,電源組成。大家都比較熟悉,這里不再贅述。


2 四位數碼管顯示:在應用系統中,設計要求不同,使用的LED顯示器的位數也不同,因此就生產了位數,尺寸,型號不同的LED顯示器供選擇,在本設計中,選擇4位一體的數碼型LED顯示器,簡稱“4-LED”。本系統中前三位顯示電壓的整數位,最后一位顯示轉速的小數位。4-LED顯示器引腳如圖2所示,是一個共陰極接法的4位LED數碼顯示管,其中a,b,c,e,f,g為4位LED各段的公共輸出端,1、2、3、4分別是每一位的位數選端,dp是小數點引出端,4位一體LED數碼顯示管的內部結構是由4個單獨的LED組成,每個LED的段輸出引腳在內部都并聯后,引出到器件的外部。


3 電機驅動電路:電機驅動電中是采用ULN2003來驅動。ULN2003是高耐壓、大電流達林頓陳列,由七個硅NPN達林頓管組成。該電路的特點:ULN2003的每一對達林頓都串聯一個2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路直接相連,可以直接處理原先需要標準邏輯緩沖器來處理的數據,輸入5VTTL電平,輸出可達500mA/50V。ULN2003的引腳圖,其中IN1~IN7為輸入控制端;OUT1~OUT7為輸出端;8腳為芯片的接地端;9腳為公共端,該腳是內部7個續流二極管負極的公共端,各二極管的正極分別接各達林頓管的集電極。用于感性負載時,該腳接負載電源正極,實現續流作用。如果該腳接地,實際上就是達林頓管的集電極對地接通。


當P1.0中為高電平時,其內部三極管導通,使電機轉動。當P1.0為低電平時,內部三極管截止,電路斷開,電機停止轉動。所以在程序中可以利用P1.0口輸出PWM波來控制電機的轉速。


4 紅外測速電路:發射管工作時發出紅外線,當接收管收到紅外信號時,其電阻變?。ū驹O計相當于從無窮大變到1k左右)。利用其電阻變化,改變接收管分壓情況。擋片是利用圓盤上剪四個孔,當擋片隨電機轉動時,接收管兩端電平發生變化,產生脈沖。


5 整形電路:本設計的整形電路是用555定時器接成的施密特觸發器。

6 源程序:

#include "reg52.h"

#define uchar unsigned char

#define uint unsigned int

uchar code table[10]={0x3f,0x06,0x5b,

0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰數碼管顯示碼(0-9)

sbit xiaoshudian=P0^7;

sbit wei1=P2^4; //數碼管位選定義

sbit wei2=P2^5;

sbit wei3=P2^6;

sbit wei4=P2^7;

sbit beep=P2^3; //蜂鳴器控制端

sbit motor = P1^0; //電機控制

sbit s1_jiasu = P1^4; //加速按鍵

sbit s2_jiansu= P1^5; //減速按鍵

sbit s3_jiting=P1^6; //停止/開始按鍵

uint pulse_count; //INT0接收到的脈沖數

uint num=0; //num相當于占空比調節的精度

uchar speed[3]; //四位速度值存儲

float bianhuasudu; //當前速度(理論計算值)

float reallyspeed; //實際測得的速度

float vv_min=0.0;vv_max=250.0;

float vi_Ref=60.0; //給定值

float vi_PreError,vi_PreDerror;

uint pwm=100; //相當于占空比標志變量

int sample_time=0; //采樣標志

float v_kp=1.2,v_ki=0.6,v_kd=0.2; //比例,積分,微分常數

void delay (uint z)

{

uint x,y;

for(x=z;x>0;x--)

for (y=20;y>0;y--);

}

void time_init()

{

ET1=1; //允許定時器T1中斷

ET0=1; //允許定時器T0中斷

TMOD = 0x15; //定時器0計數,模式1;定時器1定時,模式1

TH1 = (65536-100)/256; //定時器1值,負責PID中斷 ,0.1ms定時

TL1 = (65536-100)%6;

TR0 = 1; //開定時器

TR1 = 1;

IP=0X08; //定時器1為高優級

EA=1; //開總中斷

}

void keyscan()

{

float j;

if(s1_jiasu==0) //加速

{

delay(20);

if(s1_jiasu==0)

vi_Ref+=10;

j=vi_Ref;

}

while(s1_jiasu==0);

if(s2_jiansu==0) //減速

{

delay(20);

if(s2_jiansu==0)

vi_Ref-=10;

j=vi_Ref;

}

while(s2_jiansu==0);

if(s3_jiting==0)

{

delay(20);

motor=0;

P1=0X00;

P3=0X00;

P0=0x00;

}

while(s3_jiting==0);

}

float v_PIDCalc(float vi_Ref,floatvi_SpeedBack)

{

register floaterror1,d_error,dd_error;

error1=vi_Ref-vi_SpeedBack; //偏差的計算

d_error=error1-vi_PreError; //誤差的偏差

dd_error=d_error-vi_PreDerror; //誤差變化率

vi_PreError=error1; //存儲當前偏差

vi_PreDerror=d_error;

bianhuasudu=(v_kp*d_error+v_ki*vi_PreError+v_kd*dd_error);

return (bianhuasudu);

}

void v_Display()

{

uint sudu;

sudu=(int)(reallyspeed*10); //乘以10之后強制轉化成整型

speed[3]=sudu/1000; //百位

speed[2]=(sudu00)/100; //十位

speed[1]=(sudu0)/10; //個位

speed[0]=sudu; //小數點后一位

wei1=0; //第一位打開

P0=table[speed[3]];

delay(5);

wei1=1; //第一位關閉

wei2=0;

P0=table[speed[2]];

delay(5);

wei2=1;

wei3=0;

P0=table[speed[1]];

xiaoshudian=1;

delay(5);

wei3=1;

wei4=0;

P0=table[speed[0]];

delay(5);

wei4=1;

}

void BEEP()

{

if((reallyspeed)>=vi_Ref+5||(reallyspeed

{

beep=~beep;

delay(4);

}

}

void main()

{

time_init();

motor=0;

while(1)

{

v_Display();

BEEP();

}

if(s3_jiting==0) //對按鍵3進行掃描,增強急停效果

{

delay(20);

motor=0;

P1=0X00;

P3=0X00;

P0=0x00;

}

while(s3_jiting==0);

}

void timer0() interrupt 1

{

}

void timer1() interrupt 3

{

TH1 = (65536-100)/256; //1ms定時

TL1 = (65536-100)%6;

sample_time++;

if(sample_time==5000) //采樣時間0.1ms*5000=0.5s

{

TR0=0; //關閉定時器0

sample_time=0;

pulse_count=TH0*255+TL0; //保存當前脈沖數

keyscan(); //掃描按鍵

reallyspeed=pulse_count/(4*0.6); //計算速度

pwm=pwm+v_PIDCalc(vi_Ref,reallyspeed);

if(pwm

if(pwm>100)pwm=100;

TH0=TL0=0;

TR0=1; //開啟定時器0

}

num++;

if(num==pwm) //此處的num值,就是占空比

{

motor=0;

}

if(num==100) //100相當于占空比調節的精度

{

num=0;

motor=1;

}

}


關鍵字:單片機  PWM  紅外對管控制  直流電機 引用地址:單片機PWM+紅外對管控制直流電機設計

上一篇:單片機+LCD12864數字示波器程序+Proteus仿真
下一篇:一文看懂STC單片機冷啟動和復位有什么區別

推薦閱讀

2018年1月31日 – 最新半導體和電子元件的全球授權分銷商貿澤電子 (Mouser Electronics) 宣布與Insight SiP簽訂了全球分銷協議,即日起備貨可立即使用的Insight SiP射頻 (RF) 模塊。Insight SiP的藍牙低功耗模塊專為低功耗無線連接應用而設計,如電信和移動計算、便攜式消費類設備、醫療保健、聯網汽車、工業和物聯網 (IoT) 等應用。貿澤電子...
集微網消息,今天上海發布在官微發表消息,稱上海市場監管對本市銷售的各品牌手機質量進行了監督抽查。其中包含了32批次手機產品和20批次老年人手機產,經檢驗后發現手機不合格的批次有4批,老年人手機不合格的批次有5批。這些不合格批次中的不合格項目大多為SAR標志、電源端子的傳導騷擾和靜電放電抗擾度等。
在大灣區的硬科技創新中,和機器人無疑是未來的重中之重,而聚集了全球眾多半導體公司和創新團隊的香港科學園力圖在這一趨勢中發揮出重要的作用,包括提供配套設施、技術支持和知識交流平臺等。香港科技園正在積極推動他們的與的影響力,這一被稱為A.I.R.的項目聚焦在AI和機器人的應用落地,而那些雄心勃勃的企業也正在借助這樣的平臺,希望在潛藏著巨大...
在兩周前的分析中,我們看到Keysight新一代萬用表使用了同樣的硬件平臺,尤其是34465A與34470A的主電路板簡直完全相同。這可是售價相差一倍的六位半與七位半萬用表,難道兩者之間真的差別僅僅是軟件截取位數的不同么...我們今天接著嘮一下。雖然主板上所有焊接元器件完全相同,但兩者之間還是存在差別。請注意下圖的中心部分。在34460/61/65A三款六位半萬...

史海拾趣

問答坊 | AI 解惑

uc_os2 for arm詳解

郁悶,發點資料,uc_os2 for arm詳解…

查看全部問答∨

單片機讀寫多路U盤

單片機對存儲設備的讀寫對USB存儲設備的讀寫需要對存儲體的格式有一定了解。當前USB存儲體多數為FAT16和FAT32格式,還有極少數的使用FAT12格式。FAT16多見于優盤,而FAT32多見于移動硬盤。這里簡價介紹優盤普遍采用的一種文件格式:FAT16。對于只有 ...…

查看全部問答∨

萬用表使用技巧

一、指針表和數字表的選用:   1、指針表讀取精度較差,但指針擺動的過程比較直觀,其擺動速度幅度有時也能比較客觀地反映了被測量的大?。ū热鐪y電視機數據總線(SDL)在傳送數據時的輕微抖動);數字表讀數直觀,但數字變化的過程看起來很雜亂 ...…

查看全部問答∨

adsv1.2 for arm 新建工程出現問題?望大俠幫幫忙

有哪位大俠知道下面的問題,請幫忙解答,本人不勝感激。 我用adsv1.2新建了一個工程文件然后make出現一個錯誤提示“error:All50E:Bad symbol  start.s line 635 ”。這里聲明一下:創建工程時我添加的文件是fs2410用戶光盤里的s3c2410_b ...…

查看全部問答∨

請問如何修改Wince的開機界面,改成和手機的功能菜單一樣,要怎么辦?

請問如何修改Wince的開機界面,改成和手機的功能菜單一樣,要怎么辦?…

查看全部問答∨

新手詢問一下有關ARM的開發問題

想了解一下這個行業,但有很多問題不懂,想請教一下大家 1.為什么搞ARM需要一塊什么開發板啊?是不是為了測試用呢?那我有一個ARM的游戲機(NDSL),不知道能不能用來測試呢? 2.我想在ARM游戲機上安裝WinCE或Linux,不知道怎么安裝? 3.ARM仿真 ...…

查看全部問答∨

關于BitBlt函數的問題

WinCE在32位色模式下使用BitBlt函數時會卡死,進了API就出不來了,這是怎么回事? 同樣的代碼在16位色模式下沒有問題?!?

查看全部問答∨

【已關閉】【征詢貼】3.5寸TFT觸摸屏

本帖最后由 ddllxxrr 于 2016-1-7 17:10 編輯 1.團長備案號:個人001 2.品牌:信利(全新原裝) 26萬色 3.團購價格:數量50-100個:38元,100-200個:35元,200個以上30元 4.預計團購發起日期:2011.2.28 5.預計團購結束日期:2011.3.15 6.報 ...…

查看全部問答∨

arv32 ad轉換連續采樣模式

我用avr 32 進行ad采樣,采用pa0口,設置為連續采樣模式,但是每次采樣的時候都只能顯示第一次采樣的結果,貌似聯系的設置都沒有效果呀,哪位大蝦幫忙看看吧,謝謝哈,代碼如下:void adc0_init(void) {//ADCSR = 0x00;   //disable adcA ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 屯门区| 永修县| 黄浦区| 新干县| 白山市| 扶风县| 静宁县| 南乐县| 容城县| 和平县| 贵南县| 长岛县| 枣庄市| 阿拉尔市| 洛阳市| 阜康市| 安徽省| 毕节市| 曲沃县| 永城市| 米脂县| 墨竹工卡县| 阿合奇县| 望奎县| 镇平县| 洛川县| 大同县| 弋阳县| 安仁县| 井研县| 化德县| 临海市| 潼南县| 遵义县| 香格里拉县| 邯郸市| 安乡县| 临沂市| 三门峡市| 河西区| 镇巴县|