找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7408|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

關(guān)于傳感器與單片機的一些問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:162935 發(fā)表于 2017-2-2 15:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
為什么有的傳感器可以直接與單片機連接就能顯示讀數(shù)比如18b20,有的卻要在傳感器與單片機之間加入AD轉(zhuǎn)換芯片 比如fc-28濕度傳感器
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:149451 發(fā)表于 2017-2-3 11:13 | 只看該作者
從18b20資料看,其輸出是數(shù)字信號,當(dāng)然可以直接與單片機I/O口接;fc-28沒查到資料,但你既然說需加AD轉(zhuǎn)換再接單片機,那只能說明它是個模擬器件,輸出模擬量,單片機要識別的它的信息,必須轉(zhuǎn)換成數(shù)字量---這就是AD的功能。綜上所述:有的傳感器是數(shù)字器件,而有的是模擬器件。
回復(fù)

使用道具 舉報

板凳
ID:123289 發(fā)表于 2017-2-4 09:43 | 只看該作者
不是所有的菜買回家都可以生吃的。
回復(fù)

使用道具 舉報

地板
ID:153041 發(fā)表于 2017-2-4 10:16 | 只看該作者
傳感器種類特別多,有脈沖計數(shù)式的,有模擬量的(電壓或電流的高低表示溫度、濕度、壓力、速度的大小);模擬量的信號要輸入單片機必須轉(zhuǎn)換成數(shù)字信號,有些傳感器自帶AD和編碼電路,比如18b20;有些傳感器則不帶,就需要設(shè)計者自己考慮AD的問題。建議在使用具體傳感器之前一定要仔細研究一下它的數(shù)據(jù)手冊(技術(shù)手冊),這樣才能徹底。不能靠猜

評分

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

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:155507 發(fā)表于 2017-2-4 19:24 | 只看該作者
一般傳感器比如fc-28濕度傳感器,一般輸出是模擬信號,要輸入到單片機就需要經(jīng)過模數(shù)(AD)轉(zhuǎn)換,可以考慮加AD轉(zhuǎn)換芯片,當(dāng)然有些單片機本身是有模擬輸入口的,由內(nèi)部進行AD轉(zhuǎn)換。 也有數(shù)字溫度傳感器比如18b20,那就可以直接連接到單片機的普通IO口進行處理了。

數(shù)字溫度傳感器采集信號,傳輸?shù)綌?shù)字芯片,由數(shù)字芯片將信號處理成單片機可以接受的信號方式,最后通過單片機實現(xiàn)輸出顯示、存儲、發(fā)出報警信號等功能

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

6#
ID:7485 發(fā)表于 2017-2-4 19:46 | 只看該作者
凡是輸出的是數(shù)字信號的傳感器內(nèi)部都有類似CPU的運算芯片。
回復(fù)

使用道具 舉報

7#
ID:162935 發(fā)表于 2017-2-15 13:33 | 只看該作者
angmall 發(fā)表于 2017-2-4 19:24
一般傳感器比如fc-28濕度傳感器,一般輸出是模擬信號,要輸入到單片機就需要經(jīng)過模數(shù)(AD)轉(zhuǎn)換,可以考慮加AD ...

你好啊 我最近在用FC-28濕度傳感器檢測濕度 發(fā)現(xiàn)濕度值一直都大于50 最高為65  我不知道是不是程序錯了 還是傳感器啊
下面附上程序 希望你能為我看一下 困擾我好久了=;=
#include <reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code table1[]={
0xbf,0x86,0xdb,0xcf,
0xe6,0xed,0xfd,0x87,
0xff,0xef,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uint adc_finished,n;
float a,c;
uchar shi,ge,bai,num;
int b;
sfr ADC_CONTR=0xBC;//adc控制寄存器,不可位尋址,用或運算來設(shè)置
sfr ADC_RES=0xBD;//轉(zhuǎn)換結(jié)果寄存器,高八位
sfr ADC_LOW2=0xBE;//轉(zhuǎn)換結(jié)果寄存器,低兩位
sfr P1ASF=0x9d;//設(shè)置p1的那一口為輸入口,不可位尋址.
/*以下都是控制寄存器的各位地址*/
#define ADC_POWER 0x80;//adc電源,第7位
#define ADC_FLAG 0x10;//轉(zhuǎn)換結(jié)束標(biāo)志位,第4位
#define ADC_START 0x08;//轉(zhuǎn)換開始,第3位
#define ADC_SPEEDLL 0x00;//速度位,第5,6位
#define ADC_SPEEDL 0x20;
#define ADC_SPEEDH 0x40;
#define ADC_SPEEDHH 0x60;
#define ADC_CHS 0x00;//輸入通道為第p1.0,1,2,3三位可設(shè)置p10-p17
//位定義完成
void Delay(uint n)
{
    uchar x;

    while (n--)
    {
        x = 5000;
        while (x--);
    }
}
void adcinit()       //adc初始化函數(shù)
{         


P1ASF=0x01;          //設(shè)置p10 為ad轉(zhuǎn)換輸入口
ADC_CONTR=0xe0;      //打開電源,設(shè)最高速度
_nop_();
_nop_();                          //設(shè)置好ADC控制寄存器之后要加>4us
_nop_();                  //的延時才能繼續(xù)正確讀取ADC控制寄存器的值
_nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
ADC_CONTR|=ADC_CHS;  //設(shè)置頻道
_nop_();
_nop_();                          //設(shè)置好ADC控制寄存器之后要加>4us
_nop_();                  //的延時才能繼續(xù)正確讀取ADC控制寄存器的值
_nop_();_nop_();
}
float  huqushuju()                //adc轉(zhuǎn)換函數(shù),數(shù)據(jù)得到
{
adcinit();
ADC_RES=0;
ADC_LOW2=0;
ADC_CONTR|=ADC_START;//啟動ad轉(zhuǎn)換,置1為起動,轉(zhuǎn)換結(jié)束后自動置0
_nop_();
_nop_();                        
_nop_();                  
_nop_();

adc_finished=0;
while(adc_finished==0)
{
adc_finished=ADC_CONTR&ADC_FLAG;//檢測是否轉(zhuǎn)換結(jié)束,沒結(jié)束一直等
}

_nop_();
_nop_();                          //設(shè)置好ADC控制寄存器之后要加>4us
_nop_();                  //的延時才能繼續(xù)正確讀取ADC控制寄存器的值
_nop_(); _nop_();
a=ADC_RES*4+ADC_LOW2;
a=100-100*a/1023;
a=a*10;


ADC_CONTR=0;
_nop_();
_nop_();                          //設(shè)置好ADC控制寄存器之后要加>4us
_nop_();                  //的延時才能繼續(xù)正確讀取ADC控制寄存器的值
_nop_();
return a;
}

void display(uchar bai,uchar shi,uchar ge)
{
          uint i,t;
        for(i=0;i<3;i++)
        {
                switch(i)         //位選,選擇點亮的數(shù)碼管,
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0;P0=table[ge]; break;//顯示第0位
                        case(1):
                                LSA=1;LSB=0;LSC=0; P0=table1[shi];break;//顯示第1位
                        case(2):
                                LSA=0;LSB=1;LSC=0;P0=table[bai]; break;//顯示第2位
                                          
                }
                  t=1000;
                  while(t--);
        }
}


void main()
{  
  while(1)
  {
   huqushuju();
     b=(int)a;
     ge=b%10;
         shi=b/10%10;
         bai=b/100;
         display(bai, shi,ge);
        }
           
}
回復(fù)

使用道具 舉報

8#
ID:162935 發(fā)表于 2017-2-18 10:12 | 只看該作者
angmall 發(fā)表于 2017-2-4 19:24
一般傳感器比如fc-28濕度傳感器,一般輸出是模擬信號,要輸入到單片機就需要經(jīng)過模數(shù)(AD)轉(zhuǎn)換,可以考慮加AD ...

請問你用過FC28濕度傳感器?
它的濕度對應(yīng)的一個電阻值是多少啊
回復(fù)

使用道具 舉報

9#
ID:162242 發(fā)表于 2017-2-20 13:01 | 只看該作者
傳感器可以直接傳感器可以直接
回復(fù)

使用道具 舉報

10#
ID:162242 發(fā)表于 2017-2-20 13:02 | 只看該作者
有的傳感器是數(shù)字器件
回復(fù)

使用道具 舉報

11#
ID:165525 發(fā)表于 2017-2-20 13:49 | 只看該作者
額。。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表