Thông báo

Collapse
No announcement yet.

LM35 và AVR

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

  • LM35 và AVR

    Tôi muốn đo nhiệt độ dùng LM35 giao tiếp với bộ ADC của ATmega16L.Tuy nhiên tôi đang gặp khó khăn về lắp mạch và lập trình.Xin mọi người giúp đỡ.Cám ơn nhiều.

  • #2
    Cái này có ví dụ trong Codevision rồi cậu ơi, cậu vào ví dụ xem thử nhé

    Comment


    • #3
      Tôi đưa chân OUT của LM35 vào kênh 0 (chân AD0) của ADC.
      Chương trình như sau:
      //real_time_hut@yahoo.com
      //khai bao thu vien
      #include<mega16.h>
      #include<stdio.h>
      #include <delay.h>

      //khai bao bien toan cuc
      unsigned int temp;

      //mau ham
      void khoi_tao_serial(void);
      void khoi_tao_ports(void);
      void khoi_tao_ADC(void);
      unsigned int doc_ADC(void);

      void main(void)
      {

      khoi_tao_ports();
      khoi_tao_serial();
      khoi_tao_ADC();

      while(1) //vong lap chinh
      {

      temp=~doc_ADC();
      temp=380*(temp/1024); //Vref=3.8V
      //10mV ung voi 1 do C

      printf("%i\n\r",temp);
      delay_ms(100); //cap nhat du lieu sau 100ms

      }
      }

      unsigned int doc_ADC(void)
      {
      unsigned int value;

      ADCSRA = ADCSRA | 0x40; // bat dau chuyen doi

      while( (ADCSRA & 0x10) == 0 ); // cho cho den khi chuyen doi //thanh cong

      value = ADCW; //lay gia tri ADC
      ADCSRA = ADCSRA | 0x10; // xoa co

      return value;
      }

      void khoi_tao_serial(void) //9600/8/N/1
      {
      UCSRA=0x02;
      UCSRB=0xD8;
      UCSRC=0x86;
      UBRRH=0x00;
      UBRRL=0x67;
      }

      void khoi_tao_ports(void)
      {
      DDRC = 0xFF; // PortC lam cong ra
      PORTC = 0x00;
      }

      void khoi_tao_ADC(void)
      {
      ADMUX = 0x00; // chon kenh 0
      ADMUX = ADMUX | 0x40; // chon dien ap nguong
      ADMUX = ADMUX | 0x20;

      ADCSRA = 0x07; // chon tan so thach anh
      ADCSRA = ADCSRA | 0x80; // cho phep ADC hoat dong
      }
      Last edited by digi_pow; 13-10-2006, 22:07.

      Comment


      • #4
        bat chuong trinh HyperTerminal len và quan sat nhiet do.
        Chuc bac thanh công.

        Comment


        • #5
          chờ 2 tuần nữa nhé. tôi sẽ giúp từ a->z
          |

          Comment


          • #6
            tôi gửi bạn đoạn code
            ;=====================
            ;last edition 28/9/06;
            ;=====================
            .include "m16def.inc"
            .org 0x000
            rjmp main
            .org 0x01C
            rjmp ADC_Complete
            main:
            ;Dat con tro ngan xep
            ldi temp,HIGH(RAMEND)
            out SPH,temp
            ldi temp,LOW(RAMEND)
            out SPL,temp
            ldi temp,0xFF
            out DDRB,temp ;ra led 7 thanh
            out DDRC,temp ;dk nhiet do
            out DDRD,temp ;ra led 7 thanh
            ldi temp,0b11111100 ;chi dung 2 bit 0,1 de lam dau vao co`n lai la` da^`u ra
            out DDRA,temp

            ;Dat clk cho ADC
            ldi temp,0b11011110 ;tan so 125 KHz 110
            out ADCSRA,temp
            ;===================
            ;Chon MUX va Vref
            ;AREF Internal Vref turn of; Mux 0:00000
            ldi temp,0b01100000 ;
            out ADMUX,temp
            sei ;Cho phep ngat
            ;wait interrupt
            loop:
            rjmp loop
            ;============
            ; ISR ;
            ;============
            ADC_Complete:

            ;dk nhiet do
            ;Calling: convert; display, control
            clr rdivL
            clr rdivH
            in rdivL,ADCL
            in rdivH,ADCH
            rcall Convert
            rcall Display
            rcall Control
            reti
            còn lại bạn làm tiếp nhé
            Bạn phải viết chương trình đổi số 10bit sang BCD để hiển thị
            |

            Comment


            • #7
              Nguyên văn bởi digi_pow Xem bài viết
              Tôi đưa chân OUT của LM35 vào kênh 0 (chân AD0) của ADC.
              Chương trình như sau:
              //real_time_hut@yahoo.com
              //khai bao thu vien
              #include<mega16.h>
              #include<stdio.h>
              #include <delay.h>

              //khai bao bien toan cuc
              unsigned int temp;

              //mau ham
              void khoi_tao_serial(void);
              void khoi_tao_ports(void);
              void khoi_tao_ADC(void);
              unsigned int doc_ADC(void);

              void main(void)
              {

              khoi_tao_ports();
              khoi_tao_serial();
              khoi_tao_ADC();

              while(1) //vong lap chinh
              {

              temp=~doc_ADC();
              temp=380*(temp/1024); //Vref=3.8V
              //10mV ung voi 1 do C

              printf("%i\n\r",temp);
              delay_ms(100); //cap nhat du lieu sau 100ms

              }
              }

              unsigned int doc_ADC(void)
              {
              unsigned int value;

              ADCSRA = ADCSRA | 0x40; // bat dau chuyen doi

              while( (ADCSRA & 0x10) == 0 ); // cho cho den khi chuyen doi //thanh cong

              value = ADCW; //lay gia tri ADC
              ADCSRA = ADCSRA | 0x10; // xoa co

              return value;
              }

              void khoi_tao_serial(void) //9600/8/N/1
              {
              UCSRA=0x02;
              UCSRB=0xD8;
              UCSRC=0x86;
              UBRRH=0x00;
              UBRRL=0x67;
              }

              void khoi_tao_ports(void)
              {
              DDRC = 0xFF; // PortC lam cong ra
              PORTC = 0x00;
              }

              void khoi_tao_ADC(void)
              {
              ADMUX = 0x00; // chon kenh 0
              ADMUX = ADMUX | 0x40; // chon dien ap nguong
              ADMUX = ADMUX | 0x20;

              ADCSRA = 0x07; // chon tan so thach anh
              ADCSRA = ADCSRA | 0x80; // cho phep ADC hoat dong
              }
              sao mình dùng terminal của protues lại không thấy gì nhỉ??? mình nối 2chân RXD và TXD tương ứng với 2 chân RXD và TXD của vi diều khiển. mình copy code của bạn vào mà vẫn không được. ai biết chỉ giúp mình cái.
              cảm ơn nhiều.
              Never forget who you are!

              Comment


              • #8
                hihi mình làm được rồi tại set sai tần số dao động
                Never forget who you are!

                Comment

                Về tác giả

                Collapse

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

                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