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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4047|回復: 8
收起左側

單片機控制光電開關異常,仿真沒有這種情況

[復制鏈接]
ID:676703 發表于 2020-6-27 10:26 | 顯示全部樓層 |閱讀模式
制作光電計數器,仿真和實物都一步步摸索過來... 又有想不明白的地方,請做過或者了解的朋友能指導或者分享一下經驗、看法,謝謝大家!!
采用槽型光耦,當計數是十的整數倍時,連接單片機的led報警閃爍2s,  下方還有兩個led的模塊是光電轉換模塊,一個led作電源指示(綠色),另一個作開關指示(紅色)。仿真圖如圖1,視頻是實物操作。
問題: 1、感覺當物體經過光電開關時,數碼管顯示的計數值和物體的速度有關,速度快計數跳變少,速度慢計數很多!但仿真時不是這樣的啊。光電計數模塊的輸出作為外部中斷的輸入。
2、當物體經過速度變慢時,感覺物體進入和出來,數碼管會產生兩次跳變!不應該啊。。。
已經檢查過實際電路,感覺沒有問題,應該是代碼的問題?但是本人小白一個,而且仿真也沒有問題,現在很迷茫。。

代碼:
#include<AT89x51.H>
#define uchar unsigned char
#define uint unsigned int
typedef unsigned int u16;          //對數據類型進行聲明定義
typedef unsigned char u8;
uchar duan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位碼
uchar wei[2]={0X01,0X02}; //位的控制端
uint c,v,date; //定義數據類型
uint dispcount=0;

sbit led=P1^4;         //定義P1.4口是led
/*****延時函數*****/
void delay(uchar t)
{
        uchar i,j;
        for(i=0;i<t;i++)
                for(j=13;j>0;j--);
}
/*****數碼管動態掃描*****/
void xianshi()
{
/***數據轉換***/
        c=date/10;  //求十位
        v=date%10;      //求個位
        P2=wei[0];
        P0=duan[c];
        delay(20);
        P2=wei[1];
        P0=duan[v];
        delay(20);
}
/*****中斷函數*****/
void ExtInt0() interrupt 0   //中斷服務程序
{
        dispcount++;        //外部中斷一次,計數加一
        if(dispcount>99)   //計數范圍0~50
                dispcount=1;
}

/*******************************************************************************
* 函 數 名         : Timer0Init
* 函數功能                   : 定時器0初始化
*******************************************************************************/
void Timer0Init()
{
        TMOD|=0X01; //選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
        TH0=0XFC;   //給定時器高八位賦初值,定時1ms
        TL0=0X18;        
        ET0=1;      //打開定時器0中斷允許
        EA=1;       //打開中斷總開關
        TR0=1;      //打開定時器0                        
}
/*****主函數*****/
void main()
{
//        static u16 i;
        TCON=0x01;     //中斷設置 TCON寄存器
        IE|=0x81;       //IE外部中斷0請求標志位
        Timer0Init();  //定時器0初始化
        while(1)
        {
                date=dispcount;
                xianshi();           //調用數碼管顯示   
        }
}
/*******************************************************************************
* 函 數 名         : void Timer0() interrupt 1
* 函數功能                   : 定時器1中斷函數
*******************************************************************************/
void Timer0() interrupt 1
{
        static u16 i;
        TH0=0XFC;        //給定時器賦初值,定時1ms
        TL0=0X18;
        if(dispcount%10==0&&dispcount!=0)      
        {
                i++;
                if(i%100==0)       //100ms
                        led=~led;
                if(i>=2000)       //時間大于2s
                {
                        i=2000;
                        led=1;
                }
        }
        else
        {
                led=1;   
                i=0;
        }
}


51hei圖片20200627101759.png

VID_20200627100049.rar

11.66 MB, 下載次數: 3

實物檢驗(視頻不大)

回復

使用道具 舉報

ID:332444 發表于 2020-6-27 23:44 | 顯示全部樓層
1發光管通常導通電壓是硅三極管結電壓的2倍,這樣比較好記,即:0.6-0.7*2=1.2-1.4,供電若使用5V則5-1.3=3.7V,發光管通常選的電流在10毫安,那么,計算電阻=3.7/10=0.37K;
2接收端三極管電流按1:1計算即發光管電流多少三極管電流也多少,計算電阻=5V/10毫安=0.5K;
3仿真軟件其實可以粗略幫助確定電路參數的驗證。
4弄個仿真電路,放置信號源電壓5V,用示波器觀察817輸入與輸出波形。
無標題.png
從圖上波形看,基本符合粗略計算的值,同時也可看出,電壓的幅值可以直接送去IO用,不需要再次征信處理。
5光耦817是封閉型的,槽型的基本也差不多,甚至可能需要更大的發光管電流,比如50毫安也未可知,因此,實際電路用可調電阻調節。
6小的發光管電流經過開環放大整形,開環放大倍數極高,極大可能出現干擾波形被認為是計數波形,因而極有可能出現不穩定現象。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:319023 發表于 2020-6-27 11:55 | 顯示全部樓層
有沒看光電模塊的規格書,  會不會 和光電模塊有關呢 ? 或者需要類似軟件去抖動的功能
回復

使用道具 舉報

ID:94031 發表于 2020-6-27 14:17 | 顯示全部樓層
慢時會有一個不穩定階段,造成多計數,要消除加施密特觸發。
回復

使用道具 舉報

ID:332444 發表于 2020-6-27 23:47 | 顯示全部樓層
因此說圖中設計參數存在問題,至少放大器應該有控制增益的負反饋回路,而不是開環放大。
回復

使用道具 舉報

ID:213173 發表于 2020-6-28 07:32 | 顯示全部樓層
樓主的程序沒有嚴重問題,估計問題在自制的光電模塊。按下圖修改,在不接正反饋電阻的情況下調整電位器找到合適的比較電位,再接上正反饋電阻,這樣LM393比較器就具有施密特特性,可以有效改善可靠性。反饋電阻選擇范圍100KΩ~2.2MΩ。
無標題.jpg

回復

使用道具 舉報

ID:332444 發表于 2020-6-28 09:32 | 顯示全部樓層
先看一個演示,接著分析軟件部分。
錄像6_轉.gif
回復

使用道具 舉報

ID:676703 發表于 2020-7-1 16:35 | 顯示全部樓層
xianfajushi 發表于 2020-6-27 23:44
1發光管通常導通電壓是硅三極管結電壓的2倍,這樣比較好記,即:0.6-0.7*2=1.2-1.4,供電若使用5V則5-1.3=3 ...

解釋很有助于我理解,現在問題已解決,謝謝!
回復

使用道具 舉報

ID:676703 發表于 2020-7-1 16:37 | 顯示全部樓層
wulin 發表于 2020-6-28 07:32
樓主的程序沒有嚴重問題,估計問題在自制的光電模塊。按下圖修改,在不接正反饋電阻的情況下調整電位器找到 ...

之前考慮不細致,現在用了可調電阻,已經實現預期需求。謝謝!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 综合一区| 97精品国产97久久久久久免费 | 国产精品久久久久久久久久久久冷 | 一区二区三区在线观看视频 | 99精品久久久| 最新91在线| 久久亚洲国产精品日日av夜夜 | 国产成人精品a视频一区www | 欧美一区2区三区3区公司 | 日韩一区二区三区在线 | 国产精品一区二区在线 | 国产欧美一级二级三级在线视频 | 国产一区二区三区在线免费 | 黄色毛片免费视频 | 国产黄色大片在线观看 | 99免费视频 | 日韩精品一区二区三区在线播放 | 精品国产乱码久久久久久久久 | 新超碰97 | 综合五月婷 | 蜜桃av一区二区三区 | 精品少妇v888av | 福利网站导航 | 欧美激情在线精品一区二区三区 | 一级毛片网 | 欧美成人免费电影 | 天天操天天插 | 欧美精品一区二区免费视频 | 韩日一区二区 | 青草久久免费视频 | 国产视频线观看永久免费 | 免费在线观看一级毛片 | 国产精品久久久久久久久久久久冷 | 亚洲一区二区三区四区五区中文 | 日韩中文字幕在线观看 | www.日韩 | 免费成人在线网站 | 亚洲一区二区久久久 | 午夜资源| 国产精品视频在线播放 | 午夜男人天堂 |