Thông báo

Collapse
No announcement yet.

PWM động cơ DC đk bằng 89

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

  • PWM động cơ DC đk bằng 89

    Mình làm 1 mạch đo nhiệt độ 6 kênh trên VDK 89 và ý định là sẽ điều khiển tốc độ động cơ DC theo nhiệt độ (động cơ quạt của máy tính dùng nguồn 5V ) bằng pp PWM, mình chưa hiểu về pp này lắm.có nhiều phương án để thiết kế cho mạch PWM, trong ừng dụng của mình chỉ để đk 1 động cơ nhơ như thế này thì nên thiết kế như thế nào?
    mong các bạn chỉ giúp!
    thanks

  • #2
    Nếu bạn đã có kênh ADC cho con 8051 này thì bạn chỉ việc điều khiển PWM theo cái giá trị ADC đó là đc.Với 8051 bạn cần viết PWM cho nó(Vì loại của Atmel ko có PWM -Dùng 89V của Philip thì có sẵn).Để viết PWM cho 8051 bạn dùng timer.


    Add: 97 Quán Nam - Lê Chân - Hải Phòng.
    Tel: 031 518648 Phone: 0904 283 505

    Comment


    • #3
      đây là đoạn code mình làm BT lớn.Tham khảo nhé
      #include <regx51.h>
      unsigned char x_pc=0,x_vdk=0,w=0,d=0;
      unsigned int tg=0;
      #define dao_chieu P1_1
      void init()//khoi tao ban dau cho ngat
      {
      EA=1;//cho phep ngat toan cuc
      ES=1;//cho phep ngat noi tiep
      PS=1;//uu tien ngat noi tiep
      ET0=1;
      EX0=1;
      //----------------thiet lap tna so bus---------------------
      TMOD=0x22;//chon timer 1 che do 8 bit tu lap lai
      TH1=0xFD;//chon toc do bauds la 9600
      SCON=0x50;//chon khung du lieu 8 bit
      TR1=1;//khoi dong timer 1
      TH0=0x0E;//thoi gian ngat ~2us
      TL0=0x0E;//thoi gian ngat ~2us
      IT0=1;//ngat theo suon xuong
      TR0=1;//khoi dong timer 0

      }
      //---------------ham xu ly ngat noi tiep-------------------
      void ngat_noi_tiep(void) interrupt 4
      {
      if(RI==1)//kiem tra co nhan RI
      {
      RI=0;
      x_pc=SBUF;
      }
      }
      void ngat_dinh_thoi_0(void) interrupt 1
      {
      TF0=0;
      d++;
      tg++;
      if(tg==500)//1ms cap nhat toc do 1 lan
      {
      tg=0;
      if(x_vdk < x_pc)
      {
      w++;
      }
      if(w>100)
      {
      w--;
      }
      else if(x_vdk > x_pc)
      {
      w--;
      }
      SBUF=x_vdk;
      while(TI==0){}
      TI=0;
      x_vdk=0;
      }
      }
      void ngat_ngoai_0(void) interrupt 0
      {
      x_vdk ++;
      }
      //---------chuong trinh chinh--------------------------------
      void main()
      {
      init();
      P1=0xF0;
      //---------tao xung tren P3.7--------------------------------
      while(1)
      {
      //nhay led o day
      while(x_pc==0)
      {
      P1_0=0;//tat PWM
      }
      if(d<=w)
      {
      P1_0=1;//setb P1_0-bat PWM
      }
      else if(d>w && d<=100)
      {
      P1_0=0;//xoa PWM
      }
      else
      d=0;
      }

      }


      Add: 97 Quán Nam - Lê Chân - Hải Phòng.
      Tel: 031 518648 Phone: 0904 283 505

      Comment


      • #4
        Nguyên văn bởi hoangdai Xem bài viết
        đây là đoạn code mình làm BT lớn.Tham khảo nhé
        #include <regx51.h>
        unsigned char x_pc=0,x_vdk=0,w=0,d=0;
        unsigned int tg=0;
        #define dao_chieu P1_1
        void init()//khoi tao ban dau cho ngat
        {
        EA=1;//cho phep ngat toan cuc
        ES=1;//cho phep ngat noi tiep
        PS=1;//uu tien ngat noi tiep
        ET0=1;
        EX0=1;
        //----------------thiet lap tna so bus---------------------
        TMOD=0x22;//chon timer 1 che do 8 bit tu lap lai
        TH1=0xFD;//chon toc do bauds la 9600
        SCON=0x50;//chon khung du lieu 8 bit
        TR1=1;//khoi dong timer 1
        TH0=0x0E;//thoi gian ngat ~2us
        TL0=0x0E;//thoi gian ngat ~2us
        IT0=1;//ngat theo suon xuong
        TR0=1;//khoi dong timer 0

        }
        //---------------ham xu ly ngat noi tiep-------------------
        void ngat_noi_tiep(void) interrupt 4
        {
        if(RI==1)//kiem tra co nhan RI
        {
        RI=0;
        x_pc=SBUF;
        }
        }
        void ngat_dinh_thoi_0(void) interrupt 1
        {
        TF0=0;
        d++;
        tg++;
        if(tg==500)//1ms cap nhat toc do 1 lan
        {
        tg=0;
        if(x_vdk < x_pc)
        {
        w++;
        }
        if(w>100)
        {
        w--;
        }
        else if(x_vdk > x_pc)
        {
        w--;
        }
        SBUF=x_vdk;
        while(TI==0){}
        TI=0;
        x_vdk=0;
        }
        }
        void ngat_ngoai_0(void) interrupt 0
        {
        x_vdk ++;
        }
        //---------chuong trinh chinh--------------------------------
        void main()
        {
        init();
        P1=0xF0;
        //---------tao xung tren P3.7--------------------------------
        while(1)
        {
        //nhay led o day
        while(x_pc==0)
        {
        P1_0=0;//tat PWM
        }
        if(d<=w)
        {
        P1_0=1;//setb P1_0-bat PWM
        }
        else if(d>w && d<=100)
        {
        P1_0=0;//xoa PWM
        }
        else
        d=0;
        }

        }
        cám ơn bạn chia sẻ, bạn có thể cho mình biết lưu đồ của pp timer PWM trong 89 không?

        Comment

        Về tác giả

        Collapse

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

        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
        Đang tải...
        X