PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 18-07-2008, 11:02 PM   #1
gong05sk
Nhập môn đệ tử
 
Tham gia ngày: Jun 2007
Bài gửi: 8
:
Vấn đề PWM của PIC 18F4331

Quả thật em đã đọc rất nhiều những bào hướng dẫn của các bác về PWM nhưng một điều rút ra là: không biết thế nào cả!
Em không biết vì sao:
Một người mới tiếp xúc như em chưa nắm được những thứ mà các bác thảo luận. Giống như kiểu đàn gảy tai trâu ấy. EM có cảm tưởng các bác nói cho những người đã biết. nói qua nói lại cho vui còn những người mới vào ngồi ngó lơ như vịt nghe sấm chả hiểu đang nói cái gì. Lục datasheet ra căng mắt mà đọc thấy toàn những thanh ghi và cấu trúc. cũng có vẻ hơi hiêu hiểu. lôi mấy bài các bác viết ra lại mù tịt. hic hic.
Có bác nào rộng lượng làm ơn viết cụ thể một chút đc không? Cụ thể như vầy nè:
- Thanh ghi nào trong PIC đảm nhận việc điều khiển chế độ PWM
- Phải thiết lập giá trị cho chúng như thế nào để có các chế độ PWM tương ứng và mỗi chế độ như vậy có công dụng gì.
- Cuối cùng là viết chương trình như thế nào. Em dùng CSS, nó có một lô thư viện. tìm nát nước cũng không thấy mấy cái định nghĩa của mấy bác. kiểu như
Trích:
setup_power_pwm_pins(PWM_OFF,PWM_OFF, PWM_OFF,PWM_OFF);
Em thực mơ hồ với những bài hướng dẫn như vậy.
Có ai có thể chỉ em bắt đầu như thế nào không vậy.
gong05sk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-07-2008, 11:25 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi gong05sk View Post
Quả thật em đã đọc rất nhiều những bào hướng dẫn của các bác về PWM nhưng một điều rút ra là: không biết thế nào cả!
Em không biết vì sao:
Một người mới tiếp xúc như em chưa nắm được những thứ mà các bác thảo luận. Giống như kiểu đàn gảy tai trâu ấy. EM có cảm tưởng các bác nói cho những người đã biết. nói qua nói lại cho vui còn những người mới vào ngồi ngó lơ như vịt nghe sấm chả hiểu đang nói cái gì. Lục datasheet ra căng mắt mà đọc thấy toàn những thanh ghi và cấu trúc. cũng có vẻ hơi hiêu hiểu. lôi mấy bài các bác viết ra lại mù tịt. hic hic.
Có bác nào rộng lượng làm ơn viết cụ thể một chút đc không? Cụ thể như vầy nè:
- Thanh ghi nào trong PIC đảm nhận việc điều khiển chế độ PWM
- Phải thiết lập giá trị cho chúng như thế nào để có các chế độ PWM tương ứng và mỗi chế độ như vậy có công dụng gì.
- Cuối cùng là viết chương trình như thế nào. Em dùng CSS, nó có một lô thư viện. tìm nát nước cũng không thấy mấy cái định nghĩa của mấy bác. kiểu như
Em thực mơ hồ với những bài hướng dẫn như vậy.
Có ai có thể chỉ em bắt đầu như thế nào không vậy.
Vì những vấn đề như bạn đang gặp phải, tôi đã khuyến khích việc tránh các hàm thư viện của các trình biên dịch. Không phải tôi không tin tưởng các hàm thư viện, mà tôi tin rằng các hàm thư viện sẽ khiến các bạn ngày càng mù mờ về những gì đang diễn ra bên trong PIC.

Bạn hãy đọc datasheet, quên các hàm thư viện của CCS C đi, tự đặt giá trị cho các thanh ghi của module PCPWM của PIC để tạo tín hiệu PWM, và tìm hiểu kết quả bằng mô phỏng, thực nghiệm. Khi bạn đã nắm được cách dùng module rồi thì mới nên dùng các hàm thư viện.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263

thay đổi nội dung bởi: namqn, 18-07-2008 lúc 11:39 PM.
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-07-2008, 11:48 PM   #3
gong05sk
Nhập môn đệ tử
 
Tham gia ngày: Jun 2007
Bài gửi: 8
:
Em cũng đã đọc rất nhiều bài viết của bác. Nhưng quả thật em gặp khó khăn trong 2 việc.
Thứ nhất là tiếng anh. Việc dịch datasheet gặp nhiều trắc trở. Có khi còn hiểu nhầm nghĩa.
Thứ 2 là cấu trúc lệnh ASM cho pic quá rắc rối và em không có tài liệu hướng dẫn. Em đến với PIC nhờ một thằng bạn nó làm rồi nó chỉ lại. Nhưng giờ nó về quê mất rồi nên chẳng biết hỏi ai. mà nó toàn chỉ bằng C. Chính bant thân nó cũng chỉ biết ứng dụng thư viện chứ giải thích nguyên lý thì nó cũng ậm àh ậm ờ.
Vậy giờ anh làm ơn chỉ lại cho em đc không. Viết một chương trình băm xung đơn giản nhưng đầy đủ cho em tham khảo đc không? về các thanh ghi em có thể tự tìm hiểu nhưng về cấu trúc lệnh em chịu anh có chỉ hãy viết thật cụ thể. chỉ cần vài bài cụ thể thì em có thể nắm đc phần nào rồi.
__________________
My home --> http://spktclup.com
gong05sk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-07-2008, 08:19 PM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi gong05sk View Post
Em cũng đã đọc rất nhiều bài viết của bác. Nhưng quả thật em gặp khó khăn trong 2 việc.
Thứ nhất là tiếng anh. Việc dịch datasheet gặp nhiều trắc trở. Có khi còn hiểu nhầm nghĩa.
Thứ 2 là cấu trúc lệnh ASM cho pic quá rắc rối và em không có tài liệu hướng dẫn. Em đến với PIC nhờ một thằng bạn nó làm rồi nó chỉ lại. Nhưng giờ nó về quê mất rồi nên chẳng biết hỏi ai. mà nó toàn chỉ bằng C. Chính bant thân nó cũng chỉ biết ứng dụng thư viện chứ giải thích nguyên lý thì nó cũng ậm àh ậm ờ.
Vậy giờ anh làm ơn chỉ lại cho em đc không. Viết một chương trình băm xung đơn giản nhưng đầy đủ cho em tham khảo đc không? về các thanh ghi em có thể tự tìm hiểu nhưng về cấu trúc lệnh em chịu anh có chỉ hãy viết thật cụ thể. chỉ cần vài bài cụ thể thì em có thể nắm đc phần nào rồi.
Bạn tham khảo bài viết sau, nếu muốn tìm hiểu kỹ hơn về hoạt động của các module liên quan đến PWM:
http://www.picvietnam.com/forum/showthread.php?t=2623

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-07-2008, 12:05 AM   #5
Macintosh
Đệ tử 3 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 48
:
to anh Nam,
em nghĩ thế mạnh của một trình dịch thể hiện ở chỗ nó có hỗ trợ cho người dùng nhiều hay không.CCS hỗ trợ rất nhiều,em không phủ nhận là phải hiểu gốc gác vấn đề,datasheet tất nhiên phải đọc.Nhưng em thiết nghĩ ,cái gì đã hỗ trợ sao lại không dùng,thời gian để nghiên cứu thứ khác .
chẳng hạn,trong thiết lập PWM,nếu phải set các bit trong các thanh ghi Config PWM,eo ui,sẽ thật khó hiểu,cho bản thân,và cả cho người khác khi đọc chương trình,trong khi trong Help của CCS có hẳn các Built in Funtion, các lệnh C thật dễ hiểu để thiết lập,dễ chỉnh sửa chương trình sau này.
Macintosh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-07-2008, 12:20 AM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi Macintosh View Post
to anh Nam,
em nghĩ thế mạnh của một trình dịch thể hiện ở chỗ nó có hỗ trợ cho người dùng nhiều hay không.CCS hỗ trợ rất nhiều,em không phủ nhận là phải hiểu gốc gác vấn đề,datasheet tất nhiên phải đọc.Nhưng em thiết nghĩ ,cái gì đã hỗ trợ sao lại không dùng,thời gian để nghiên cứu thứ khác .
chẳng hạn,trong thiết lập PWM,nếu phải set các bit trong các thanh ghi Config PWM,eo ui,sẽ thật khó hiểu,cho bản thân,và cả cho người khác khi đọc chương trình,trong khi trong Help của CCS có hẳn các Built in Funtion, các lệnh C thật dễ hiểu để thiết lập,dễ chỉnh sửa chương trình sau này.
Tùy vào thói quen học tập của mỗi người thôi. Nếu ai đó muốn tìm hiểu tường tận các module ngoại vi, các hàm thư viện sẽ là một rào cản (tâm lý) đối với người đó. Với những người không thích tìm hiểu sâu về những gì xảy ra bên trong PIC, họ có thể dùng những gì trình biên dịch đã cung cấp. Tất nhiên chấp nhận những hay dở của các tài nguyên có sẵn đó.

Quan niệm của tôi về thế mạnh của trình biên dịch lại khác: khả năng biên dịch hiệu quả, và khả năng khai thác tài nguyên giới hạn của chip.

Bạn không thích thiết lập các thanh ghi cho module PCPWM thì cứ dùng các hàm thư viện đã có sẵn, còn tôi thích làm việc đó, và không loại trừ khả năng có một số bạn khác cũng thích.

Nói như bạn thì có lẽ bạn gong05sk nên đọc lại tài liệu hướng dẫn của CCS C, vì có vẻ như bạn ấy chưa hiểu được những hàm thư viện dễ hiểu đó.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-07-2009, 11:30 AM   #7
hoangtanduong13
Nhập môn đệ tử
 
hoangtanduong13's Avatar
 
Tham gia ngày: Nov 2008
Bài gửi: 2
:
pwm cua pic 16f877a

ban nao ranh` ve pwm thi giup minh voi.minh vua tim dc cai code viet ve pwm,nhung ma compile no bao loi!de minh gui len cho cac ban!
Code:
#include <16F877A.h>
#include <DEFS_16F877A.h>
#fuses     NOWDT,PUT,HS,NOPROTECT,NOLVP
#use  delay(clock=10000000)
#use  fast_io(b)


#define  tocdo0   0     //toc do bang 0
#define  td_macdinh  80 //toc do mac dinh
#define  tocdo1   124   //1/5 toc do cuc dai
#define  tocdo2   248   //2/5 toc do cuc dai
#define  tocdo3   372   //3/5 toc do cuc dai
#define  tocdo4   496   //4/5 toc do cuc dai
#define  tocdo5   620   //toc do cuc dai

int16 duty1=0;
int16 duty2=0;
int8  bientocdo=0;
int1  bienthuan=0;
int1  biennghich=0;

   void main()                //bo PMW1 dk dco quay thuan
   {                          //bo PMW2 dk dco quay nghich
      set_tris_b(0x0ff);      //khoi tao port B la port nhap
      setup_ccp1(CCP_PWM);    //khoi tao bo PWM1
      setup_ccp2(CCP_PWM);    //khoi tao bo PWM2

      setup_timer_2(T2_div_by_16,154,1);  //tao chu ky xung 1ms
                              //(1/clock)*4*t2div*(period+1)
                              //(1/10e6)*4*16*(154+1)=1e-3=1ms

      set_pwm1_duty(duty1);   //gia tri duty cua PWM duoc tinh
      set_pwm2_duty(duty2);   //theo cong thuc duty1*t2div/clock
                              //khoi tao duty=0 ->tat dong co

     while(true)
      {
      

      if (!bit_test(portb,1))    //neu nhan phim FO : chay thuan
         {
            duty1=tocdo0;
            duty2=tocdo0;
            set_pwm1_duty(duty1);   //cho duty cua 2 bo PMW=0 de
            set_pwm2_duty(duty2);   //tat dong co
            delay_ms(1000);         //delay 1s de giam quan tinh dc
            bienthuan=1;
            biennghich=0;
            goto next;
         }
       

       if (!bit_test(portb,2))    //neu nhan phim RE : chay nghich
         {
            duty1=tocdo0;
            duty2=tocdo0;
            set_pwm1_duty(duty1);   //cho duty cua 2 bo PMW=0 de
            set_pwm2_duty(duty2);   //tat dong co
            delay_ms(1000);         //delay 1s de giam quan tinh dc
            bienthuan=0;
            biennghich=1;
            goto next;
         }
       

       if (!bit_test(portb,3))   //nhan phim toc do 1
          {
            bientocdo=1;
            goto next;
          }

       if (!bit_test(portb,4))    //nhan phim toc do 2
          {
            bientocdo=2;
            goto next;
          }

       if (!bit_test(portb,5))    //nhan phim toc do 3
          {
            bientocdo=3;
            goto next;
          }

       if (!bit_test(portb,6))    //nhan phim toc do 4
          {
            bientocdo=4;
            goto next;
          }

       if (!bit_test(portb,7))    //nhan phim toc do 5
            bientocdo=5;

     next:
      if (!bit_test(portb,0))    //neu nhan phim OFF
         {
            duty1=tocdo0;
            duty2=tocdo0;
            set_pwm1_duty(duty1);   //cho duty cua 2 bo PMW=0 de
            set_pwm2_duty(duty2);   //tat dong co
            bienthuan=0;
            biennghich=0;
            bientocdo=0;            //xoa bien toc do
         }

       if (bienthuan)
          {
            duty2 = tocdo0;
            switch (bientocdo)
               {
                  case  1: duty1= tocdo1;
                        break;
                  case  2: duty1= tocdo2;
                        break;
                  case  3: duty1= tocdo3;
                        break;
                  case  4: duty1= tocdo4;
                        break;
                  case  5: duty1= tocdo5;
                        break;
                  default  : duty1 = td_macdinh;
                        break;
               }
            set_pwm1_duty(duty1);   //cho dco chay thuan
            set_pwm2_duty(duty2);
          }

        if (biennghich)
          {
            duty1 = tocdo0;
            switch (bientocdo)
               {
                  case  1: duty2= tocdo1;
                        break;
                  case  2: duty2= tocdo2;
                        break;
                  case  3: duty2= tocdo3;
                        break;
                  case  4: duty2= tocdo4;
                        break;
                  case  5: duty2= tocdo5;
                        break;
                  default  : duty2 = td_macdinh;
                        break;
               }
            set_pwm1_duty(duty1);   //cho dco chay nghich
            set_pwm2_duty(duty2);
          }
      }
   }
no bao toi 9 loi lan!nhug ma chu yeu la undefined indentifier portb
mog cac pac giup do!thank nhieu!

thay đổi nội dung bởi: namqn, 07-07-2009 lúc 12:23 PM.
hoangtanduong13 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-07-2009, 09:56 PM   #8
nhamdtk4
Đệ tử 3 túi
 
nhamdtk4's Avatar
 
Tham gia ngày: Feb 2009
Bài gửi: 47
:
Trích:
Nguyên văn bởi hoangtanduong13 View Post
no bao toi 9 loi lan!nhug ma chu yeu la undefined indentifier portb
mog cac pac giup do!thank nhieu!
Copy file DEFS_16F877A.h cho vào thư mục Devices của PICC trong ổ C (file này đã định nghĩa các thanh ghi chức năng đặc biệt mà CCS chưa định nghĩa).
nhamdtk4 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-07-2008, 08:35 PM   #9
ttai
Đệ tử 1 túi
 
Tham gia ngày: Dec 2005
Bài gửi: 12
:
Trích:
Nguyên văn bởi Macintosh View Post
to anh Nam,
em nghĩ thế mạnh của một trình dịch thể hiện ở chỗ nó có hỗ trợ cho người dùng nhiều hay không.CCS hỗ trợ rất nhiều,em không phủ nhận là phải hiểu gốc gác vấn đề,datasheet tất nhiên phải đọc.Nhưng em thiết nghĩ ,cái gì đã hỗ trợ sao lại không dùng,thời gian để nghiên cứu thứ khác .
chẳng hạn,trong thiết lập PWM,nếu phải set các bit trong các thanh ghi Config PWM,eo ui,sẽ thật khó hiểu,cho bản thân,và cả cho người khác khi đọc chương trình,trong khi trong Help của CCS có hẳn các Built in Funtion, các lệnh C thật dễ hiểu để thiết lập,dễ chỉnh sửa chương trình sau này.
Bạn nói cũng có phần đúng, cái gì đã hỗ trợ tốt thì mình cũng nên dùng. Nhưng ...
*thứ nhất CCSC không hỗ trợ tốt cho người dùng. Bạn hãy để ý từ phiên bản đầu tiên đến bản mới nhất, phần Help của CCSC luôn rất khó sử dụng, phần ví dụ trong Help cũng khó tiếp cận. Tôi từng viết ASM cho PIC rất kỹ và hiện đang dùng CCSC nhưng lúc làm luận văn, viết PWM cho con PIC18F4431, dùng hàm của CCSC thì tôi cực kỳ vất vả. Đến lúc tức điên người lên không thèm dùng hàm built in nữa, tôi chuyển sang tự set thanh ghi cho PIC luôn, chạy tốt!
* thứ hai, như tôi đã nói, ít ra cũng phải hiểu cấu trúc PIC, hiểu cách hoạt động của các thanh ghi (và viết ASM chính là để hiểu rõ điều này) thì mới viết C tốt. Khi đó nếu gặp vấn đề gì với C, ta có thể troubleshooting rất nhanh, không được nữa thì quay lại ASM. Vì C thật ra cũng là ASM mà ra.

Tôi nghĩ nếu bạn chỉ là cần code để cho luận văn hay đề tài gì đó không dài hạn, hoặc bạn chỉ "ghé thăm" PIC trong một thời gian ngắn thì bạn cứ dùng C thoải mái mà không cần hiểu thanh ghi. Nhưng nếu đã quyết định sử dụng PIC cho công việc (dài hạn) thì nên tìm hiểu tường tận. Datasheet tuy khó hiểu nhưng hứa với bạn là chỉ trong thời gian đầu, lần thứ 2,3,4... bạn sẽ thấy dễ dần. Có gì khó hiểu bạn cứ post lên đây là ok thôi.
Bye, good luck with PIC!
ttai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-07-2008, 10:43 PM   #10
Macintosh
Đệ tử 3 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 48
:
Trích:
Nguyên văn bởi ttai View Post
Bạn nói cũng có phần đúng, cái gì đã hỗ trợ tốt thì mình cũng nên dùng. Nhưng ...
*thứ nhất CCSC không hỗ trợ tốt cho người dùng. Bạn hãy để ý từ phiên bản đầu tiên đến bản mới nhất, phần Help của CCSC luôn rất khó sử dụng, phần ví dụ trong Help cũng khó tiếp cận. Tôi từng viết ASM cho PIC rất kỹ và hiện đang dùng CCSC nhưng lúc làm luận văn, viết PWM cho con PIC18F4431, dùng hàm của CCSC thì tôi cực kỳ vất vả. Đến lúc tức điên người lên không thèm dùng hàm built in nữa, tôi chuyển sang tự set thanh ghi cho PIC luôn, chạy tốt!
* thứ hai, như tôi đã nói, ít ra cũng phải hiểu cấu trúc PIC, hiểu cách hoạt động của các thanh ghi (và viết ASM chính là để hiểu rõ điều này) thì mới viết C tốt. Khi đó nếu gặp vấn đề gì với C, ta có thể troubleshooting rất nhanh, không được nữa thì quay lại ASM. Vì C thật ra cũng là ASM mà ra.

Tôi nghĩ nếu bạn chỉ là cần code để cho luận văn hay đề tài gì đó không dài hạn, hoặc bạn chỉ "ghé thăm" PIC trong một thời gian ngắn thì bạn cứ dùng C thoải mái mà không cần hiểu thanh ghi. Nhưng nếu đã quyết định sử dụng PIC cho công việc (dài hạn) thì nên tìm hiểu tường tận. Datasheet tuy khó hiểu nhưng hứa với bạn là chỉ trong thời gian đầu, lần thứ 2,3,4... bạn sẽ thấy dễ dần. Có gì khó hiểu bạn cứ post lên đây là ok thôi.
Bye, good luck with PIC!
đã là kỹ thuật thì sao lại ghé thăm hả bạn? còn có những thứ có thể bạn nói khó,tôi lại nói dễ,và ngược lại nữa,đúng ko bạn.còn cấu trúc tất nhiên là phải biết rùi,datasheet cũng phải đọc rùi.đúng là có nhiều tính năng PIC mà CCS ko có hỗ trợ thật.
tôi cũng từng code ASM cho 8051,rùi mới xài PIC.Và tôi nghĩ đa số sv chúng ta cũng thường theo con đường đó nên cũng ko khó khi tìm hiểu cấu trúc PIC.còn C or ASM cũng chỉ là vấn đề về ngôn ngữ thui mà.
Macintosh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-07-2008, 12:28 AM   #11
gong05sk
Nhập môn đệ tử
 
Tham gia ngày: Jun 2007
Bài gửi: 8
:
Vâng, cảm ơn 2 bác. Em đã trình bày rõ quan điểm cuả mình rồi mà. em muốn học một cách căn bản cơ. ASM tuy khó và rắc rối nhưng chắc rồi sẽ quen. giống cái thời tập tành 8051 thôi. Về thanh ghi cũng có nắm bắt đôi chút nhưng gần 18 trang nói về PWM trong sách lại toàn tiếng anh. không có đoạn demo nào để có thể nắm bắt đc.
EM chỉ hi vọng các bác có thể hướng dẫn em một chút. EM thiết nghĩ việc viết lại một chút kiến thức cơ bản đâu có gì là khó lắm đối với các bác. chỉ tốn chút thời gian thôi mà.
Một chương trình viết sẵn thì em nghĩ các bác có cả đống sao không copy lấy một cái đơn giản rồi đưa lên làm ví dụ. để em dựa vàp đó mà chỗ nào không hiểu thì hỏi tiếp. Như thế vừa nhanh gọn vừa đỡ mắc công hỏi đi hỏi lại rồi chẳng đc gì cả.
Thôi thế này nhé. EM ví dụ cái mạch sau đây:
- Tần số thạch anh sử dụng là 4MHz.
- Tạm thời không quan tâm tới dòng áp hay các thông số khác. chỉ để tâm tới nguyên lý mà thôi. ânh viết hộ em một chương trình băm xung mẫu để em học tập đc chứ?
__________________
My home --> http://spktclup.com

thay đổi nội dung bởi: gong05sk, 19-07-2008 lúc 12:38 AM.
gong05sk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-07-2008, 12:42 AM   #12
Macintosh
Đệ tử 3 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 48
:
Trích:
Nguyên văn bởi gong05sk View Post
Quả thật em đã đọc rất nhiều những bào hướng dẫn của các bác về PWM nhưng một điều rút ra là: không biết thế nào cả!
Em không biết vì sao:
Một người mới tiếp xúc như em chưa nắm được những thứ mà các bác thảo luận. Giống như kiểu đàn gảy tai trâu ấy. EM có cảm tưởng các bác nói cho những người đã biết. nói qua nói lại cho vui còn những người mới vào ngồi ngó lơ như vịt nghe sấm chả hiểu đang nói cái gì. Lục datasheet ra căng mắt mà đọc thấy toàn những thanh ghi và cấu trúc. cũng có vẻ hơi hiêu hiểu. lôi mấy bài các bác viết ra lại mù tịt. hic hic.
Có bác nào rộng lượng làm ơn viết cụ thể một chút đc không? Cụ thể như vầy nè:
- Thanh ghi nào trong PIC đảm nhận việc điều khiển chế độ PWM
- Phải thiết lập giá trị cho chúng như thế nào để có các chế độ PWM tương ứng và mỗi chế độ như vậy có công dụng gì.
- Cuối cùng là viết chương trình như thế nào. Em dùng CSS, nó có một lô thư viện. tìm nát nước cũng không thấy mấy cái định nghĩa của mấy bác. kiểu như
Em thực mơ hồ với những bài hướng dẫn như vậy.
Có ai có thể chỉ em bắt đầu như thế nào không vậy.
cái dòng lệnh bác trích đó thực ra có nằm trong Thư viện đâu. Cái wan trọng nhất khi dùng CCS là thường xuyên bấm F1,bấm thử rùi biết!
Tui cũng "bầm dập" với con 4331 rùi nên tui cũng hiểu cái khó của bác bây giờ!
xin trình bày với các bác qui trình làm việc với PWM 18f4331/4431 hồi trước của tui :
- PWM là gì,cái này bác biết rùi nhẩy?
- Giở datasheet 4331 ra,thấy có 8pin power PWM,mừng hớn hở,à phen này là điều được 8 DC motor rùi đây!!!???
- lại còn 2 khối CCP(CAPTURE/COMPARE/PWM) nữa,lại 2 kênh điều xung khác,chẳng lẽ điều được 10 motor????
- Đọc kỹ datasheet lại,tại sao lại là power PWM và PWM trong CCP, có khác biệt gì không?
Thực ra Power PWM chính là điểm khác biệt giữa dòng 18FXX31 so với các Pic 18 khác.Nó là thứ mà những ai cần 1 công cụ mạnh trong điều khiển động cơ DC.
quay lại với vấn đề về 8 pin PWM (PWM0-PWM 7).Đúng là mừng hụt thật, đó là 8 chân output PWM của 4 module PWM .nghĩa là sao,nghĩa là các bác chỉ có thể điều khiên PWM 4 DC motor với 4 module này.thế tại sao lại là 8 chân PWM,đó là nó có thể thiết lập để điều khiển cầu H.Tớ thì lại không dùng cầu H,không lẽ lại bỏ phí 1 chân còn lại của 1 module à?
còn cái CCP PWM,đúng là có thể dùng để đk thêm 2 dc nữa,tổng cộng là có thể đk 6 dc trên PIC 4331.
- Giở CCS,mở help ra,vào built in funtions: CAPTURE/COMPARE/PWM có ngay
SET_POWER_PWM_OVERRIDE( )
SETUP_CCP2( )

SET_POWER_PWMX_DUTY( )
SETUP_CCP3( )

SET_PWM1_DUTY( )
SETUP_CCP4( )

SET_PWM2_DUTY( )
SETUP_CCP5( )

SET_PWM3_DUTY( )
SETUP_CCP6( )

SET_PWM4_DUTY( )
SETUP_POWER_PWM( )

SET_PWM5_DUTY( )
SETUP_POWER_PWM_PINS( )

SETUP_CCP1( )

- cái cần wan tâm chính là SETUP_POWER_PWM_PINS( ) ;SETUP_POWER_PWM( );SET_POWER_PWMX_DUTY( ) để làm việc với Power PWM.

Có vẻ gần được rùi đấy,mày mò xí nữa!!! bác phải làm rùi tớ mới hd tiếp được!
Macintosh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-04-2009, 11:11 PM   #13
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
Pwm pic

Trích:
Nguyên văn bởi Macintosh View Post

- cái cần wan tâm chính là SETUP_POWER_PWM_PINS( ) ;SETUP_POWER_PWM( );SET_POWER_PWMX_DUTY( ) để làm việc với Power PWM.

Có vẻ gần được rùi đấy,mày mò xí nữa!!! bác phải làm rùi tớ mới hd tiếp được!
Bạn cho mình hỏi cách tạo bảng since theo ý muốn, dùng matlab ấy. Mình đang tìm cách tạo bảng sin dùng matlab mà ko biết làm thế nào đây.
Có ai biết ko vậy, giúp tớ với.
À, với lại 1 vấn đề nữa, đó là cách chọn tụ cho mạch lái cầu IGBT, sử dụng IR2101. Tụ này nằm ở phía các khóa cao (high). Bạn nào đã từng làm chưa vậy.
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-07-2008, 12:54 AM   #14
Macintosh
Đệ tử 3 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 48
:
gong05sk.
Proteus không thích hợp để mô phỏng đk động cơ,bắt tay vào làm phần cứng đi.Driver fet nối với 1 trog các chân pwm 1,3,5,7 hoặc 2 khối ccp1,ccp2.
đòi hỏi một chương trình điều xung tự viết thì đâu cần dùng tới 4331 làm gì,chẳng qua là gọi một chức năng đã tích hợp sẵn trong chip ra mà dùng thui.
Macintosh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-07-2008, 01:11 AM   #15
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi Macintosh View Post
gong05sk.
Proteus không thích hợp để mô phỏng đk động cơ,bắt tay vào làm phần cứng đi.Driver fet nối với 1 trog các chân pwm 1,3,5,7 hoặc 2 khối ccp1,ccp2.
đòi hỏi một chương trình điều xung tự viết thì đâu cần dùng tới 4331 làm gì,chẳng qua là gọi một chức năng đã tích hợp sẵn trong chip ra mà dùng thui.
Thêm nữa, hạn dòng cho động cơ bằng điện trở 10 k thì không động cơ nào chạy được đâu. Để an toàn cho nguồn thì chỉ cần dùng điện trở đủ nhỏ để giới hạn dòng không quá khả năng của nguồn thôi. Ví dụ, nguồn có thể cấp 1 A ở 5 V thì dùng điện trở 4.7 ohm, công suất vài W nhé (công suất từ 5 W trở lên thì để thoải mái, còn nhỏ hơn thì phải nhanh tay ngắt nguồn khi có sự cố).

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 07:23 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam