Thông báo

Collapse
No announcement yet.

[Help] Đọc giá trị ADC của IR sensor

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • [Help] Đọc giá trị ADC của IR sensor

    Mình dùng atmega 8 và ir sensor hàn theo hình sau

    IR sensor mình đọc = arduino vẫn bình thường, nhưng đọc bằng atmega8 qua lcd thì chỉ hiện ra giá trị 1023. (Code này mình đọc giá trị biến trở qua Proteus thì vẫn ok)






    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.05.0 Professional
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    HP InfoTech - CodeVisionAVR C Compiler

    Project :
    Version :
    Date : 8/15/2014
    Author : NeVaDa
    Company :
    Comments:


    Chip type : ATmega8
    Program type : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    ************************************************** ***/

    #include <mega8.h>

    #include <delay.h>

    // Alphanumeric LCD Module functions
    #include <alcd.h>

    #define ADC_VREF_TYPE 0x00

    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Delay needed for the stabilization of the ADC input voltage
    delay_us(10);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }

    // Declare your global variables here
    int adc = 0;
    void lcd_putnum(unsigned int z)
    {
    unsigned int nghin, tram, chuc, dv;
    nghin = z/1000;
    tram = (z%1000)/100;
    chuc = (z%100)/10;
    dv = z%10;
    lcd_putchar(nghin+48);
    lcd_putchar(tram+48);
    lcd_putchar(chuc+48);
    lcd_putchar(dv+48);
    }

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0x00;

    // Port C initialization
    // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    TCCR0=0x00;
    TCNT0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    MCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // USART initialization
    // USART disabled
    UCSRB=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // ADC initialization
    // ADC Clock frequency: 125.000 kHz
    // ADC Voltage Reference: AREF pin
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x86;

    // SPI initialization
    // SPI disabled
    SPCR=0x00;

    // TWI initialization
    // TWI disabled
    TWCR=0x00;

    // Alphanumeric LCD initialization
    // Connections specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTB Bit 1
    // RD - PORTC Bit 2
    // EN - PORTC Bit 3
    // D4 - PORTD Bit 4
    // D5 - PORTD Bit 5
    // D6 - PORTD Bit 6
    // D7 - PORTD Bit 7
    // Characters/line: 16
    lcd_init(16);

    while (1)
    {


    adc = read_adc(0);
    lcd_gotoxy(0,0);
    lcd_putnum(adc);
    delay_ms(100);

    }
    }

  • #2
    Nguyên văn bởi nameless1305 Xem bài viết
    Mình dùng atmega 8 và ir sensor hàn theo hình sau

    IR sensor mình đọc = arduino vẫn bình thường, nhưng đọc bằng atmega8 qua lcd thì chỉ hiện ra giá trị 1023. (Code này mình đọc giá trị biến trở qua Proteus thì vẫn ok)




    cầm đồng hồ ra đo xem điện áp là bao nhiêu, có khi con quang nó không dẫn nên trở kháng vẫn cao nên đọc 1023, bạn dùng vref nội 2.56 V à
    sale of Gobal Automation Solution Company Limited

    Comment


    • #3
      Nguyên văn bởi dangtuandat Xem bài viết
      cầm đồng hồ ra đo xem điện áp là bao nhiêu, có khi con quang nó không dẫn nên trở kháng vẫn cao nên đọc 1023, bạn dùng vref nội 2.56 V à
      Mình rút cảm biến ra nó vẫn đọc là 1023 bạn ạ . Có lẻ phần code của mình có vấn đề gì chăng ?
      Chân AREF mình cho qua tụ 104 xuống GND.

      Comment


      • #4
        Nguyên văn bởi nameless1305 Xem bài viết
        mình rút cảm biến ra nó vẫn đọc là 1023 bạn ạ . Có lẻ phần code của mình có vấn đề gì chăng ?
        Chân aref mình cho qua tụ 104 xuống gnd.
        aref+avcc treo 5v.

        Comment


        • #5
          mạch thế này nè bạn







          Nguyên văn bởi ken___ Xem bài viết
          aref+avcc treo 5v.
          Attached Files
          Last edited by nameless1305; 15-08-2014, 19:42.

          Comment

          Về tác giả

          Collapse

          nameless1305 Tìm hiểu thêm về nameless1305

          Bài viết mới nhất

          Collapse

          • bqviet
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi bqviet
            Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
            06-12-2025, 17:17
          • nguyendinhvan
            Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
            bởi nguyendinhvan
            Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
            05-12-2025, 19:59
          • afrendly
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi afrendly
            Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
            04-12-2025, 01:27
          • nick22
            Trả lời cho Máy điện châm ?
            bởi nick22
            Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
            01-12-2025, 13:23
          Đang tải...
          X