SlideShare a Scribd company logo
Mục lục

Lời mở đầu

Lời cảm ơn

Chương 1:Thiết kế bộ điều khiển PID số……………………………………5

1.1/Thiết kế mô hình phần cứng mạch điều khiển………………………….5

1.1.1/Yêu cầu thiết kế……………………………………………………….…5

1.1.2/Các khối chức năng trên mạch điều khiển………………………………,5

a)Khối vi điều khiển trung tâm………………………………………………..5

b)Khối giao tiếp với máy tính thông qua RS232……………………………...6

c)Khối động lực điều khiển…………………………………………………...7

1.2/Thiết kế phần mềm……………………………………………………….8

1.2.1/Yêu cầu phần mềm……………………………………………………...8

1.2.2/Giải thuật chương trình………………………………………………....8

a)Loop điều khiển………………………………………………………….…8

b)Thuật toán điều khiển……………………………………………………...10

1.2.3/ Thiết kế phần mềm điều khiển và giám sát trên máy tính………….…10

1.3/Kit điều khiển…………………………………………………………....11

Chương 2: Điều khiển động cơ điện 1 chiều……………………………….12

2.1/Đối tượng điều khiển

2.1.1/Thông số kỹ thuật……………………………………………………... 12

2.2/Xác định các thông số động cơ:

2.2.1/Nhận dạng mô hình động học của động cơ điện một chiều……………15

2.2.2/Thu thập dữ liệu vào/ra của động cơ điện một chiều từ thực nghiệm….21
2.2.3/Nhận diện động cơ một chiều bằng Toolbox Identification của Matlab..23

2.2.4/Đánh giá chất lượng mô hình….….……………………………………..28

2.3/Điều khiển vận tốc…………………...…………………………………….28

2.3.1/Loop điều khiển………………….….…………………………………...28

2.3.2/Giải thuật chương trình…………….….…………………………………29

2.3.3/Ảnh hưởng của ѡ đến hệ thống…………………………………… …30

2.4/Điều khiển vị trí……………………………………………………… ….43

2.4.1/Loop điều khiển……………………………………………………… ..43

2.4.2/Giải thuật chương trình……………………………………………… …43

2.4.3/Ảnh hưởng của ѡ đến hệ thống………………………………………..44
Lời mở đầu
Khoa học công nghệ hiện đại đã có những bước tiến nhanh và xa đi theo đó là
những thành tựu ứng dụng trong mọi lĩnh vực dời sống, công nghiệp. Kĩ thuật điều
khiển trong tiến trình hoàn thiện lý thuyết cũng tạo cho mình nhiều phát triển có ý
nghĩa. Bây giờ khi nhắc tới điều khiển con người dưòng như hình dung đến sự
chính xác, tốc độ xử lý và thuật toán thông minh đồng nghĩa là lượng chất xám cao
hơn.

Có thể nói trong lĩnh vực điều khiển và trong công nghiệp thì bộ điều khiển PID có
ứng dụng kha rộng rãi, một giả pháp đa năng cho các ứng dụng cả Analog cũng
như Digital. Thống kê cho thấy có tới hơn 90% các bộ điều khiển sử dụng trong
thực tế là PID. Rõ ràng nếu có thiết kế và chọn lựa các thông số hợp lý cho bộ điều
khiển PID thì việc đạt được các chỉ tiêu chất lượng mong muốn là khả thi Bộ điều
khiển PID cũng giúp người sử dụng dễ dàng tích hợp cũng như chọn các luật điều
khiển như : tỉ lệ(P), tích phân(I), tỉ lệ tích phân(PI), tỉ lệ vi phân(PD)… sao cho
phù hợp đối với các đối tượng điều khiển. Nhiều quá trình trong công nghiệp việc
sử dụng bộ điều khiển PID là không thể thay thế như khống chế nhiệt độ, mức, tốc
độ…? Ngay cả những lý thuyết điều khiển hiện đại cũng không cho ta những hiệu
quả cao như bộ điều khiển PID mang lại.Ngoài ra bộ điều khiển PID còn ứng dụng
nhiều trong điều khiển thích nghi,bền vững vẫn mang lại hiệu quả cao trong các cơ
cấu chỉnh định.

Bài toán thiết kế và điều khiển động cơ một chiều là bài toán cơ bản và quen thuộc
trong ngành cơ điện tử. Có thể thiết kế điều khiển cho đối tượng độngcơ điện một
chiều theo nhiều phương pháp như :dùng PLC & biến tần, điện tử công suất, vi
điều khiển… Mỗi phương pháp có ưu và nhược điểm khác nhau nhưng đều có mục
đích ổn định và điều khiển được tốc độ động cơ. Ngày nay vi điều khiển phát triển
sâu rộng và ngày càng ứng dụng nhiều trong cài đặt thiết kế bộ điều khiển cho các
đối tượng công nghiệp. Trên cơ sở muốn tìm hiểu về lĩnh vực điều khiển tự động
chúng em chọn đề tài: Thiết kế bộ điều khiển PID số trên nền vi điều khiển PIC. Vì
khả năng và thời gian có hạn nên không thể tránh khỏi những thiếu sót trong
project. Do vậy chúng em rất mong được thầy cô và bạn bè đóng góp xây dựng để
đồ án của chúng em được hoàn thiện hơn.
Lời cảm ơn
Đầu tiên chúng em xin chân thành gửi lời cảm ơn tới nhà truờng, khoa Cơ Khí
Máy, bộ môn Cơ Điện tử, các thầy cô đã dạy dỗ và dìu dắt chúng em trong suốt 3
năm học vừa qua để có được những kiến thức chuyên môn cơ sở sau này chúng em
có thể vào đời làm việc, sử dụng có ích cho xã hội.

Để thực hiện thành công project là sự hướng dẫn, chỉ bảo tận tình của TS Trương
Nguyễn Vũ, Người đã hướng dẫn tận tình , giúp chúng em định hướng, góp ý và
cung cấp ý tưởng cũng như chỉ dẫn tài liệu và các tiến trình thực hiện project .Sự
hướng dẫn của thầy là một yếu tố quan trọng để chúng em có thể hoàn thành
project này .

Cuối cùng chúng em xin chân thành gửi những lời cảm ơn sâu sắc đến cha mẹ và
gia đình, những người luôn sát cánh cùng chúng em, nuôi dưỡng chăm sóc chúng
em tạo điều kiện tốt nhất cho chúng em học tập để có kết quả như ngày hôm nay.

Chúng em xin chân thành cảm ơn!
Chương1:Thiết kế bộ PID số




             Chương 1:Thiết kế bộ PID số
1.1/Thiết kế mô hình phần cứng mạch điều khiển

1.1.1/Yêu cầu thiết kế:

-Tốc độ tính toán nhanh.

-Có khả năng giao tiếp với:

+Máy tính.

+Các thiết bị chấp hành:Cảm biến,động cơ.

1.1.2/Các khối chức năng trên kit điều khiển:

a/Khối vi điều khiển trung tâm
Chương1:Thiết kế bộ PID số


b/Khối giao tiếp với máy tính
Chương1:Thiết kế bộ PID số



       c/Khối động lực điều khiển-Sử dụng L298D-Thay thế mạch cầu H




L298D Datasheet:
Chương1:Thiết kế bộ PID số




1.2/Thiết kế phần mềm:

1.2.1/Yêu cầu thiết kế:

-Nhận dữ liệu từ máy tính và bàn phím.

-Truyền dữ liệu máy tính lên thông qua cổng truyển thông RS232.

-Tính toán đầu ra cho bộ điều khiển thiết kế,trong đề tài là bộ PID số.

1.2.2/Giải thuật chương trình.

a)Loop điều khiển
Chương1:Thiết kế bộ PID số




1.2.3/ Thiết kế phần mề m điều khiển và giám sát trên máy tính.

-Thu nhận dữ liệu do người dùng nhập vào.

-Phân tích xử lý dữ liệu,truyền xuống cho vi điều khiển.

-Nhận dữ liệu từ vi điều khiển và vẽ đồ thị.
Chương1:Thiết kế bộ PID số




1.3/Kit điều khiển
Chương 2 : Điều khiển động cơ điện 1 chiều

Chương 2:Điều khiển động cơ điện 1 chiều

2.1/Đối tượng điều khiển:

2.1.1/Thông số kỹ thuật:




                       Động cơ được sử dụng trong project

Chúng ta sử dụng Servo Motor với các thông số cơ bản sau:

-Điện áp nguồn tối đa:12V

-Tốc độ tối đa 850(vòng/phút).

-Có gắn liền với encoder quang tương đối 200 xung.

-Công suất 30-50W.

Encoder:
Chương 2 : Điều khiển động cơ điện 1 chiều
Để điều khiển số vòng quay hay vận tốc động cơ thì chúng ta nhất thiết phải đọc
được góc quay của motor. Một số phương pháp có thể được dùng để xác định góc
quay của motor bao gồm tachometer (thật ra tachometer đo vận tốc quay), dùng
biến trở xoay, hoặc dùng encoder. Trong đó 2 phương pháp đầu tiên là phương
pháp analog và dùng optiacal encoder (encoder quang) thuộc nhóm phương pháp
digital. Hệ thống optical encoder bao gồm một nguồn phát quang (thường là hồng
ngoại – infrared), một cảm biến quang và một đĩa có chia rãnh. Optical encoder lại
được chia thành 2 loại: encoder tuyệt đối (absolute optical encoder) và encoder
tương đối (incremental optical encoder). Trong đa số các DC Motor, incremental
optical encoder được dùng và mô hình động cơ servo trong bài này cũng không
ngoại lệ. Từ bây giờ khi tôi nói encoder tức là incremental encoder. Hình 2 là mô
hình của encoder loại này.




                      Hình 2. Optical Encoder (trích từ [1]).

    Encoder thường có 3 kênh (3 ngõ ra) bao gồm kênh A, kênh B và kênh I
(Index). Trong hình 2 bạn thấy hãy chú ý một lỗ nhỏ bên phía trong của đĩa quay
và một cặp phat-thu dành riêng cho lỗ nhỏ này. Đó là kênh I của encoder. Cữ mỗi
lần motor quay được một vòng, lỗ nhỏ xuất hiện tại vị trí của cặp phát-thu, hồng
ngoại từ nguồn phát sẽ xuyên qua lỗ nhỏ đến cảm biến quang, một tín hiệu xuất
hiện trên cảm biến. Như thế kênh I xuất hiện một “xung” mỗi vòng quay của
motor. Bên ngoài đĩa quay được chia thành các rãnh nhỏ và một cặp thu-phát khác
Chương 2 : Điều khiển động cơ điện 1 chiều
dành cho các rãnh này. Đây là kênh A của encoder, hoạt động của kênh A cũng
tương tự kênh I, điểm khác nhau là trong 1 vòng quay của motor, có N “xung” xuất
hiện trên kênh A. N là số rãnh trên đĩa và được gọi là độ phân giải (resolution) của
encoder. Mỗi loại encoder có độ phân giải khác nhau, có khi trên mỗi đĩa chĩ có vài
rãnh nhưng cũng có trường hợp đến hàng nghìn rãnh được chia. Để điều khiển
động cơ, bạn phải biết độ phân giải của encoder đang dùng. Độ phân giải ảnh
hưởng đến độ chính xác điều khiển và cả phương pháp điều khiển. Không được vẽ
trong hình 2, tuy nhiên trên các encoder còn có một cặp thu phát khác được đặt
trên cùng đường tròn với kênh A nhưng lệch một chút (lệch M+0,5 rãnh), đây là
kênh B của encoder. Tín hiệu xung từ kênh B có cùng tần số với kênh A nhưng
lệch pha 90o. Bằng cách phối hợp kênh A và B người đọc sẽ biết chiều quay của
động cơ. Hãy quan sát hình 3.




           Hình 3. Hai kênh A và B lệch pha trong encoder (trích từ [1])
    Hình trên cùng trong hình 3 thể hiện sự bộ trí của 2 cảm biến kênh A và B lệch
pha nhau. Khi cảm biến A bắt đầu bị che thì cảm biến B hoàn toàn nhận được hồng
ngoại xuyên qua, và ngược lại. Hình thấp là dạng xung ngõ ra trên 2 kênh. Xét
trường hợp motor quay cùng chiều kim đồng hồ, tín hiệu “đi” từ trái sang phải.
Bạn hãy quan sát lúc tín hiệu A chuyển từ mức cao xuống thấp (cạnh xuống) thì
Chương 2 : Điều khiển động cơ điện 1 chiều
kênh B đang ở mức thấp. Ngược lại, nếu động cơ quay ngược chiều kim đồng hồ,
tín hiệu “đi” từ phải qua trái. Lúc này, tại cạnh xuống của kênh A thì kênh B đang
ở mức cao. Như vậy, bằng cách phối hợp 2 kênh A và B chúng ta không những xác
định được góc quay (thông qua số xung) mà còn biết được chiều quay của động cơ
(thông qua mức của kênh B ở cạnh xuống của kênh A).




2.2/Xác định thông số J’,B’ của động cơ:

2.2.1/Nhận dạng mô hình động học của động cơ điện một chiều

Cấu trúc mô hình động học được đề xuất tham khảo các tài liệu điều khiển tự động
có dạng:




Cơ sở lý thuyết:

   a. Khảo sát trong miền thời gian:
Chương 2 : Điều khiển động cơ điện 1 chiều
Chương 2 : Điều khiển động cơ điện 1 chiều
Các biểu thức trên cho thấy đặc tính thời gian của khâu dao động bậc hai có dạng
dao động tắc dần. Hàm quá độ suy giảm về giá trị xác lập K và hàm trọng lượng
suy giảm về 0. Giá trị ؏ càng lớn, dao động suy giảm càng nhanh, do đó ؏ gọi là hệ
số suy giảm hay hệ số tắt dần.
Chương 2 : Điều khiển động cơ điện 1 chiều




b. Khảo sát trong miền tần số:
Chương 2 : Điều khiển động cơ điện 1 chiều
Chương 2 : Điều khiển động cơ điện 1 chiều




2.2.2/ Thu thập dữ liệu vào/ra của động cơ điện một chiều từ thực nghiệm




a/Xác định các thông số J’,B’ thông qua đồ thị:
Chương 2 : Điều khiển động cơ điện 1 chiều




Đồ thị trên thể hiện vận tốc của động cơ theo thời gian tuân theo qui tắc:

-Động cơ chạy với 80% PWM trong thời gian 3s sau đó dảo chiều.

-Thời gian lấy mẫu là 20(ms).
Chương 2 : Điều khiển động cơ điện 1 chiều

                                                     ‫ح‬
                                               J =     = 0.680272 ∗ 10
                                                     k
Phương pháp xác định J’,B’:                          1
                                               B =     = 0.01088
                                                     k
                                                     ∆w 73.5
                                               k=        =     = 91.875
                                                     0.8   0.8
                                             w=72.5(rad/s)

                                             ‫(7666.14=ح‬ms)
                                                 k = 90.625
                                             => J = 0.000459
                                                 B = 0.1103



Vì đáp ứng của động cơ ở phần chạy thuận và chạy nghịch là gần như giống nhau
nên ta tính 2 thông số J’,B’.Nếu như đáp ứng chạy thuận và chạy nghịch của động
cơ là khác nhau ,chúng ta phải tìm 4 thông sô J’,B’ và J”,B”.

Mô phỏng Matlab:
Chương 2 : Điều khiển động cơ điện 1 chiều




                               Kết quả mô phỏng

2.2.3/Nhận diện động cơ một chiều bằng Toolbox Identification của Matlab:
Chương 2 : Điều khiển động cơ điện 1 chiều
Xuất số liệu từ mô phỏng ra bảng excel:   Số liệu từ thực nghiệm:
Chương 2 : Điều khiển động cơ điện 1 chiều



Mô phỏng dựa vào số liệu thực:

Import số liệu vào Matlab:




Mở ứng dụng Identification:

>>ident
Chương 2 : Điều khiển động cơ điện 1 chiều




Đưa dữ liệu vào:
Chương 2 : Điều khiển động cơ điện 1 chiều
Chương 2 : Điều khiển động cơ điện 1 chiều
2.2.4/Đánh giá chất lượng mô hình:




Tính toán:

>>sysc=d2c(pss1,'zoh');
>>step(sysc);
>>[a,b,c,d]=ssdata(sysc);
>>[num,den]=ss2tf(a,b,c,d);
>>ss=tf(num,den);
>>step(sysc);


2.3/Điều khiến vận tốc:

2.3.1/Loop điều khiển:
Chương 2 : Điều khiển động cơ điện 1 chiều




Thay số Kp,Ki vào mô phỏng và xem xét đáp ứng hệ thống.

     = 2ѡ     −

     = ′ѡ
        = 0.0138
=>
        = 0.1836
2.3.2/Giải thuật chương trình

Thuật toán điều khiển

  {v=(count*3.14/2)/2;

      err = setpoint - v;

      up=kp*err;

      ui=ui + ki*err*0.02;

      pid = up + ui ;

      if(pid>=256.0)pid=256.0;

      if(pid<=0.0)pid=0.0;

      pwm((int)pid);}
Chương 2 : Điều khiển động cơ điện 1 chiều
2.3.3/Ảnh hưởng của wn đến hệ thống

->Ứng với mỗi ѡ khác nhau hệ số Kp,Ki khác nhau .




                   Bộ điều khiển PI với ѡ =20




                 Bộ điều khiển PI với ѡ =30
              Thời gian đáp ứng vận tốc nhanh hơn so với wn=20
Chương 2 : Điều khiển động cơ điện 1 chiều




          Bộ điều khiển PI với wn=40
Cho động cơ chạy với vận tốc 20(rad/s)->100(rad/s)->20(rad/s).
     Tốc độ đáp ứng nhanh hơn nhưng độ nhiễu tăng lên.
Chương 2 : Điều khiển động cơ điện 1 chiều




            Bộ điều khiển PI với ѡ =50
 Cho động cơ chạy với vận tốc 100(rad/s)->50(rad/s).




        Bộ điều khiển PI với ѡ ==100
      Cho động cơ chạy với tốc độ 100(rad/s).
Chương 2 : Điều khiển động cơ điện 1 chiều
          Tốc độ đáp ứng tăng lên khá nhiều và chưa bị vọt lố.




                Bộ điều khiển PI với ѡ ==120
Tốc độ đáp ứng của động cơ nhanh nhưng bị vọt lố,động cơ dao động nhẹ.
Chương 2 : Điều khiển động cơ điện 1 chiều
                      Bộ điều khiển PI với ѡ ==150
  Tốc độ đáp ứng của động cơ rất nhanh nhưng bị vọt lố mạnh,động cơ dao động
                                    mạnh.




                     Bộ điều khiển PI với ѡ ==200
Đồ thị vận tốc có dạng dao động tắt dần kiều bậc 2,tốc độ đáp ứng nhanh nhưng độ
vọt lố cao.
Kết luận:
Càng tăng ѡ tốc độ đáp ứng của động cơ càng nhanh nhưng đồng thời độ vọt lố
cũng tăng theo.
Giải thích:
Với cách chọn hệ số tắt dần ؏=1 hàm truyền của hệ có dạng:
                             G(s)=
                                           ѡ         ѡ
                                       ѡ                 ѡ
                             G(t)=1-       -ѡ   t.
Chương 2 : Điều khiển động cơ điện 1 chiều
Hệ có nghiệm kép:-	ѡ =>Cặp cực này luôn nằm phần âm của trục thực
=>Đáp ứng của hệ thông không có dao động.
ѡ cảng tăng->hàm G(t) càng nhanh tiến về 1 ->Nhanh đạt được tốc độ tương ứng.


Mô hình nhiễu trong điều khiển động cơ:

Nhiễu là các biến mà nó không chứa trong mô hình hệ thống nhưng ảnhhưởng đến
đáp ứng của hệ thống. Chúng có thể được xác định, chẳng hạn nhưmômen tải trong
hệ thống điều khiển vị trí, cũng như các nhiễu từ các cảm biến hay từ cơ cấu chấp
hành.
Chương 2 : Điều khiển động cơ điện 1 chiều
Điều khiển động cơ với bộ PI chưa có lọc nhiễu:




                  Bộ điều khiển PI với vận tốc động cơ 30rad/s
                 Tốc độ càng thấp càng dễ ảnh hưởng bởi nhiễu.
                    Độ mịn của đồ thị ít(có nhiều răng cưa).
Chương 2 : Điều khiển động cơ điện 1 chiều




                 Bộ điều khiển PI với vận tốc động cơ 50rad/s
a. Điều khiển động cơ với bộ PI có lọc nhiễu tần số thấp:
    i. Chương trình code:

               v=(count*3.14/2);
               vf=vf+3.18*0.02*(v-vf);
               err = setpoint - vf;
               up=sp*err;
               ui=ui + si*err*0.02;
               pi = up + ui ;
               if(pi>=256.0)pid=256.0;
               if(pi<=0.0)pid=0.0;
               pwm((int)pi);
Chương 2 : Điều khiển động cơ điện 1 chiều
       ii.      Đồ thị vận tốc :




                Bộ điều khiển PI có bộ lọc nhiễu với vận tốc V=100rad/s
             Tốc độ càng cao thì càng ít bị ảnh hưởng nhiễu của tần số thấp .
Qua đồ thị ta có thể thấy ở tốc độ này,những “răng cưa”(nhiễu) đã nhỏ lại rất nhiều
                            Vì thế độ mịn của đồ thị tăng lên.
Chương 2 : Điều khiển động cơ điện 1 chiều




        Bộ điều khiển PI có bộ lọc nhiễu với vận tốc V=50rad/s
Độ răng cưa đã giảm đáng kể,khi động cơ đạt được tốc độ định sẵn thì các nhiễu
                  tần số nhỏ gần như được lọc bỏ hoàn toàn.
 b. Điều khiển động cơ với bộ PI có lọc nhiễu giá trị trung bình:
          i.    Chương trình code:
                {
                      vf=(vf+count*3.14/2)/2;
                      err = setpoint - vf;
                      up=sp*err;
                      ui=ui + si*err*0.02;
                      pi = up + ui ;
                      if(pi>=256.0)pi=256.0;
                      if(pi<=0.0)pi=0.0;
                      pwm((int)pi);
                }
Chương 2 : Điều khiển động cơ điện 1 chiều

          ii.   Đồ thị vận tốc :




     Bộ điều khiển PI có bộ lọc nhiễu trung bình với vận tốc ѡ =30rad/s

Ở tốc độ này cũng với cách lọc nhiễu trung bình,mặc dù đã được loại bỏ nhưng
                      động cơ vẫn bị ảnh hưởng nhiều.
                    Do đó,độ mịn của đồ thị còn rất thấp.
Chương 2 : Điều khiển động cơ điện 1 chiều




       Bộ điều khiển PI có bộ lọc nhiễu trung bình với vận tốc ѡ =50rad/s
Chạy ở tốc độ cao hơn,động cơ ít bị ảnh hưởng bởi nhiễu hơn do đó độ mịn của đồ
                               thị được tăng lên.
Chương 2 : Điều khiển động cơ điện 1 chiều




       Bộ điều khiển PI có bộ lọc nhiễu trung bình với vận tốc ѡ =100rad/s
Chạy ở tốc độ cao động cơ ít chịu ảnh hưởng của nhiễu vì thế độ răng cưa đã giảm
                                   bớt đáng kể.
Chương 2 : Điều khiển động cơ điện 1 chiều
2.4/Điều khiển vị trí

2.4.1/Loop điều khiển




2.4.2/Giải thuật chương trình

Thuật toán điều khiển:

Các hệ số:

K2 = 2J‘ѡ –B’

K1 k2 =J‘ѡ    2


                                = 0.00068027
                                  = 0.01088
Giải thuật:

      v=count*3.14/2.0;
      vf=vf+3.18*0.02*(v-vf);
      err = setpoint - post;
      u2=k2*(k1*err-vf);
      u2=abss(u2);
      CCPR2L=(int)u2;
Chương 2 : Điều khiển động cơ điện 1 chiều


2.4.3/Ảnh hưởng của ѡ đến hệ thống




                                   ѡ =50

             Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:60(rad)

             Cho động cơ chạy tới vị trí 200(rad)-Đáp ứng:160(rad)

          Cho động cơ chạy ngược tới vị trí 80(rad)-Đáp ứng:120(rad)

 Hệ thống chỉ đáp ứng được với những vị trí có góc >=60(rad),còn đối với những
                   góc nhỏ hơn thì không thể đáp ứng được.

Xung PWM được điều chế không đủ điện áp cho động cơ chạy với những góc nhỏ

          Sai số kéo về nằm trong khoảng(-2;2)(rad).->Sai số khá lớn.
Chương 2 : Điều khiển động cơ điện 1 chiều




                        ѡ =80

  Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:30(rad)

  Cho động cơ chạy tới vị trí 200(rad)-Đáp ứng:70(rad)

Cho động cơ chạy ngược tới vị trí 20(rad)-Đáp ứng:30(rad)

Hệ thống có thể đáp ứng được với góc nhỏ khoảng 30(rad).

         Sai số kéo về trong khoảng (-2,2)(rad).
Chương 2 : Điều khiển động cơ điện 1 chiều




                        ѡ =100

  Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:20(rad)

  Cho động cơ chạy tới vị trí 200(rad)-Đáp ứng:50(rad)

  Cho động cơ chạy tới vị trí 300(rad)-Đáp ứng:90(rad)

  Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:30(rad)

Cho động cơ chạy ngược tới vị trí 50(rad)-Đáp ứng:50(rad)

Cho động cơ chạy ngược tới vị trí 30(rad)-Đáp ứng:30(rad)

 Nhưng sai số kéo về vẫn chưa được cải thiện(-2;2)(rad).
Chương 2 : Điều khiển động cơ điện 1 chiều




                        ѡ =200

 Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:102(rad)

 Cho động cơ chạy tới vị trí 200(rad)-Đáp ứng:202(rad)

             Đáp ứng của động cơ rất nhanh.

 Động cơ có thể quay được với các góc nhỏ hơn 10(rad)

Sai số kéo về được cải thiện nằm trong khoảng (-1,1)(rad).
Chương 2 : Điều khiển động cơ điện 1 chiều




                                      ѡ =250

              Cho động cơ chạy tới vị trí 1000(rad)-Đáp ứng:1000(rad)

            Cho động cơ chạy ngược tới vị trí 500(rad)-Đáp ứng:500(rad)

               Cho động cơ chạy tới vị trí 550(rad)-Đáp ứng:551(rad)

                   Động cơ đáp ứng rất nhanh tớsi vị trí đặt trước.

             Với những vị trí có góc càng lớn thì độ chính xác càng cao.

                   Sai số kéo về nằm trong khoảng(-0.5;0.5)(rad)

            Vẫn chưa khắc phục được sai số ở các vị trí có số đo góc thấp.

Kết luận:

ѡ càng nhỏ hệ thống đáp ứng càng lâu,đồng thời không đáp ứng được những vị
trí có góc nhỏ.
Chương 2 : Điều khiển động cơ điện 1 chiều
ѡ nhỏ sai số càng lớn.

ѡ càng lớn,thời gian đáp ứng nhanh,sai số nhỏ đồng thời đáp ứng được các vị trí
có góc nhỏ.

Giải thích:

Khi ѡ nhỏ,các hệ số K1 và K2 nhỏ nên tín hiệu hồi tiếp về cho vi điều khiển cấp
xung PWM nhỏ nên không đủ điện áp cho động cơ chạy.

Ngoài ra,động cơ có độ “trì hoãn” ban đầu nên ít nhiều đã ảnh hưởng đến sai số.

Một nguyên nhân khác có thể là các hệ số J’,B’-rất quan trọng-chúng ta tìm chưa
chính xác hoặc chưa hợp lý.

Muốn điều khiển chính xác các vị trí có góc nhỏ chúng ta cũng cần có thuật toán
lọc nhiễu,xác định mô hình toán của động cơ thật chính xác đồng thời cách điều
chế xung PWM cũng phải hợp lý,chính xác và nhanh.
Chương 2 : Điều khiển động cơ điện 1 chiều
Phụ lục code phần mềm:

Điều khiển vận tốc:

#include<htc.h>

__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON &
CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF &
DEBUG_OFF); //1st config. Word

__CONFIG(BOR4V_BOR21V); //2st config. Word

#ifndef _XTAL_FREQ

#define _XTAL_FREQ 20000000

#endif

#include<stdio.h>

#include<string.h>

#include<ctype.h>

#include<stdlib.h>

#include<conio.h>

#define dir RE0

#define ham RE1

unsigned int count,setpoint,v,vf,k;

char x;

char data;

bit tx;

char send;

char chuoi[20];
Chương 2 : Điều khiển động cơ điện 1 chiều
char i;



void ram();

int pwm(int a);

double abss(double a);

void forward();

void backward();

void brake();

void velocity();

void reset();

void delstr(void);

void guikytu(char c);

void guichuoi(const char* s);

// Khai bao bo PID

int err;

double u1,pid, ui,up,u;

float q;

//Nhap kp,ki tai day

float sp;//=0.070748;

float si;//;=2.44897;

float sd;//=0.1;

//Chuong trinh chinh
Chương 2 : Điều khiển động cơ điện 1 chiều
void main()

{

      ANSEL=ANSELH=0;

      TRISE0=TRISE1=0;

      dir=0;

      ham=0;



      //Khoi tao PWM

      TRISC2=1;

     TRISC1=0;

      T2CKPS1=0;

      T2CKPS0=0;

      PR2=124;//Tao xung PWM 10kHz

      CCP2CON = 0X0C;

      DC2B0 = 0;

      DC2B1 = 0;

      TMR2ON=1;

      //Thiet lap UART

      TXSTA = 0x24;

      RCSTA = 0x90;

      BRG16 = 1;    //chon baund rate 20MhZ/(20*(520+1))~9600

      SPBRGH = 2;
Chương 2 : Điều khiển động cơ điện 1 chiều
SPBRG = 8;

RCIF=0;

RCIE=1;

PEIE=1;

GIE=1;

//THIET LAP TIMER0 LAM COUNNTER

TRISA4=1;

T0CS=1;

T0SE=0;

PSA=1;

TMR0=0;

//NGAT TIMER0

T0IE=1;

T0IF=0;

//THIET LAP TIMER1 LAM TIMER DINH THOI GIAN LAY MAU 20ms

TMR1CS=0;

T1CKPS0=1;

T1CKPS1=0;

T1SYNC=1;

//T1OSCEN=1;

TMR1L=0Xb0;

TMR1H=0X3c;
Chương 2 : Điều khiển động cơ điện 1 chiều
      TMR1ON=1;

      //THIET LAP NGAT TIMER1

      TMR1IF=0;

      TMR1IE=1;

      tx=0;

      while(1)

      {

      }

}



//Chuong trinh ngat

void interrupt isr()

{

      //Ngat Uart

      if(RCIE&&RCIF)

      {

              RCIF=0;

              data=RCREG;

              switch(data)

              {

                       //setpoint

                       case 'v':
Chương 2 : Điều khiển động cơ điện 1 chiều
    setpoint=atoi(chuoi);

    i=0;

    delstr();

    break;

    //cho phep Send

    case 't':

    tx=1;

    RE1=1;

    RE0=0;

    break;

    //stop

    case 's':

    brake();

    pwm(0);

    break;

    //gui kp

    case 'p':

    sp=atof(chuoi);

    i=0;

    delstr();

    break;

    //gui ki
Chương 2 : Điều khiển động cơ điện 1 chiều
        case 'i':

        si=atof(chuoi);

        i=0;

        delstr();

        break;



        //gui kd

        case 'd':

        sd=atof(chuoi);

        i=0;

        delstr();

        break;

        case 'z':

        reset();

        break;



        default:

        chuoi[i++]= data;

        break;

    }

}
Chương 2 : Điều khiển động cơ điện 1 chiều
//Ngat T1 10ms

if(TMR1IE&&TMR1IF)

{

      TMR1IF=0;

      TMR1ON=0;

      TMR1L=0Xb0;

    TMR1H=0X3c;

    TMR1ON=1;

      count=x*256+TMR0;

      x=0;

      TMR0=0;

      velocity();

      //ram();

      if(tx)

      {

                    //k++;

                    printf("%dn",vf);



      }




}
Chương 2 : Điều khiển động cơ điện 1 chiều


      //Ngat T0

      if(T0IE&&T0IF)

      {

            T0IF=0;

            x++;

      }

}



//Chuong trinh con

void guikytu(char c)

{

      while(TXIF==0);

      TXREG=c;

}

void guichuoi(const char* s)

{

      while(*s){

            guikytu(*s++);

      }

}

void putch (char c)
Chương 2 : Điều khiển động cơ điện 1 chiều
{

      guikytu(c);

}

// Ham de xoa chuoi sau khi da nhan dc gia tri

void delstr(void)

{

      for(char i=20; i>0;i--)

      {

               chuoi[i]='0';

      }

      return;

}

//Dieu che PWM tu PID

int pwm(int a)

{

      int n;



      if (a>=100)

      {

      n=100;

      CCPR2L=125;

      TMR2ON=1;
Chương 2 : Điều khiển động cơ điện 1 chiều
      }

      else

      {

      n = (a*125)/100;

      CCPR2L = n ;

      TMR2ON=1;



      }




      return;

}

void forward()

{

      dir=1;

      ham=0;

}

void backward()

{

      dir=0;

      ham=1;

}
Chương 2 : Điều khiển động cơ điện 1 chiều
void brake()

{

      ham=1;

      pwm(0);

TMR2ON=0;

pid=0;

}

double abss(double a)

{

      double b;

      if (a<0){

               b=-a;

      }

      else {

               b=a;

      }

      return b;

}

void velocity()

{

      vf=count*3.14/2;

      //vf=(vf+count*3.14/2)/2;   // lọc nhiễu trung bình
Chương 2 : Điều khiển động cơ điện 1 chiều
      //vf=vf+3.18*0.02*(v-vf);    //lọc nhiễu tần số thấp

      err = setpoint - vf;

      up=sp*err;

      ui=ui + si*err*0.02;

      //der=(err-errold)/0.02;

      pid = up + ui ;

      pid=abss(pid);



      if(pid>=256.0)pid=256.0;

      if(pid<=0.0)pid=0.0;

      pwm((int)pid);

}

void reset()

{

      setpoint=v=count=TMR0=x=0;

      sp=si=0;

      err=0;

      pid=0.0;

      dir=0;

      ham=0;

}
Chương 2 : Điều khiển động cơ điện 1 chiều

More Related Content

DOC
Bài giảng kỹ thuật điều khiển tự động
PDF
Đề tài: Thiết kế hệ thống đếm và điều khiển đóng gói sản phẩm, 9đ
DOCX
Đề tài: Tính toán và thiết kế hộp giảm tốc đồng trục hai cấp
PDF
ĐIều khiển con lắc ngược quay
PDF
Đồ án Thiết kế mạch điều khiển động cơ bước (Step Motor)
PDF
Đồ án Điều khiển và giám sát dây chuyền chiết rót sử dụng PLC s7 - 1200
PDF
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
PDF
Bài giảng CAD/CAM/CNC
Bài giảng kỹ thuật điều khiển tự động
Đề tài: Thiết kế hệ thống đếm và điều khiển đóng gói sản phẩm, 9đ
Đề tài: Tính toán và thiết kế hộp giảm tốc đồng trục hai cấp
ĐIều khiển con lắc ngược quay
Đồ án Thiết kế mạch điều khiển động cơ bước (Step Motor)
Đồ án Điều khiển và giám sát dây chuyền chiết rót sử dụng PLC s7 - 1200
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
Bài giảng CAD/CAM/CNC

What's hot (20)

PDF
Điều khiển khí nén thuỷ lực.pdf
DOCX
đồ án chi tiết máy 2 cấp phân đôi cấp nhanh
PDF
Xe hai bánh tự cân bằng.pdf
DOCX
Thiết kế bộ nguồn chỉnh lưu điều khiển động cơ một chiều kích từ độc lập
PDF
Thiết kế và chế tạo mô hình máy cắt khắc laser.pdf
PDF
huong-dan-su-dung-eplan-electric-p8
PDF
Đề tài: Thiết kế hệ thống phân loại sản phẩm ứng dụng PLC, HOT
PDF
Robot Scara - Tính Toán Động Học & Điều Khiển
PDF
đIều khiển logic và plc ts. nguyễn như hiền
PDF
Thi công mạch điều khiển tốc độ động cơ DC sử dụng thuật toán Pid
PDF
Đề tài: Thiết kế hệ thống điều khiển trạm trộn nhiên liệu, HAY
PDF
ĐIều khiển con lắc ngược quay
DOCX
Robot bám đường ứng dụng thuật toán PID - Line follow robot with PID . Chu Qu...
PDF
6 tính toán thiết kế bộ truyền bánh răng trụ
DOC
Mô phỏng động cơ điện 1 chiều
PDF
mạng truyền thông công nghiệp
PDF
Xây dựng bộ điều khiển p, pi, pid truyền thống cơ khả năng dùng cho các hệ đi...
PDF
đề Tài thiết kế hệ thống đèn giao thông tại ngã tư
PDF
Thiết kế hệ thống rửa xe tự động và chế tạo mô hình.pdf
DOC
Cam bien trong robot(sensor robot)
Điều khiển khí nén thuỷ lực.pdf
đồ án chi tiết máy 2 cấp phân đôi cấp nhanh
Xe hai bánh tự cân bằng.pdf
Thiết kế bộ nguồn chỉnh lưu điều khiển động cơ một chiều kích từ độc lập
Thiết kế và chế tạo mô hình máy cắt khắc laser.pdf
huong-dan-su-dung-eplan-electric-p8
Đề tài: Thiết kế hệ thống phân loại sản phẩm ứng dụng PLC, HOT
Robot Scara - Tính Toán Động Học & Điều Khiển
đIều khiển logic và plc ts. nguyễn như hiền
Thi công mạch điều khiển tốc độ động cơ DC sử dụng thuật toán Pid
Đề tài: Thiết kế hệ thống điều khiển trạm trộn nhiên liệu, HAY
ĐIều khiển con lắc ngược quay
Robot bám đường ứng dụng thuật toán PID - Line follow robot with PID . Chu Qu...
6 tính toán thiết kế bộ truyền bánh răng trụ
Mô phỏng động cơ điện 1 chiều
mạng truyền thông công nghiệp
Xây dựng bộ điều khiển p, pi, pid truyền thống cơ khả năng dùng cho các hệ đi...
đề Tài thiết kế hệ thống đèn giao thông tại ngã tư
Thiết kế hệ thống rửa xe tự động và chế tạo mô hình.pdf
Cam bien trong robot(sensor robot)
Ad

Viewers also liked (20)

PDF
Encoder
PDF
Servo 1
PDF
BLDC Motors
PDF
Giới thiệu các_máy_điều_khiển_số
PDF
Bai giang may cnc
PDF
Thực hành thiết kế ngược Rapidform cơ bản
PDF
Thực hành thiết kế ngược Rapidform nâng cao
PPTX
Bao cao dong co BLDC
PDF
Servo 2
PDF
V1 08-dieu-khien-qua-trinh
PDF
Sử dụng CNCkad 8.5 cho máy đột dập
PDF
Giáo trình đào tạo thiết kế Creo parametrics 2.0 cơ bản
PDF
Lý thuyết và thực hành Rhinocecos 5.0
PDF
Sử dụng modul gia công gỗ TopsolidWood Cam
PDF
Hướng dẫn thiết kế Rhinoceros 4.0
PDF
Lập trình gia công nâng cao Siemens NX9
PDF
Giáo trình khuôn dập NX 11 cơ bản
PDF
Giáo trình thiết kế kim loại tấm Solidworks 2016
PDF
Giáo trình xuất bản vẽ Solidworks 2016
Encoder
Servo 1
BLDC Motors
Giới thiệu các_máy_điều_khiển_số
Bai giang may cnc
Thực hành thiết kế ngược Rapidform cơ bản
Thực hành thiết kế ngược Rapidform nâng cao
Bao cao dong co BLDC
Servo 2
V1 08-dieu-khien-qua-trinh
Sử dụng CNCkad 8.5 cho máy đột dập
Giáo trình đào tạo thiết kế Creo parametrics 2.0 cơ bản
Lý thuyết và thực hành Rhinocecos 5.0
Sử dụng modul gia công gỗ TopsolidWood Cam
Hướng dẫn thiết kế Rhinoceros 4.0
Lập trình gia công nâng cao Siemens NX9
Giáo trình khuôn dập NX 11 cơ bản
Giáo trình thiết kế kim loại tấm Solidworks 2016
Giáo trình xuất bản vẽ Solidworks 2016
Ad

Similar to Bao cao servo (20)

PDF
Đồ án Đo và điều khiển tốc độ động cơ dùng 8051
DOCX
Đề tài: Đo và điều khiển tốc độ động cơ dùng 8051, HAY
PDF
Đề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PID
PDF
DA2_PPT.pjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
DOC
Luận văn: Chương trình WinCC kết hợp vói các PLC, HAY
DOCX
Nhóm 7 - Báo cáo Bài tập lớn kjafoashfioahoifhioahfioahofh
DOC
Luận văn: Thiết kế mạch báo chuông trường Đại Học Vinh, HOT
PDF
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
PDF
Luận văn Nghiên cứu thiết kế bộ điều khiển tốc độ động cơ tuyến tính không đồ...
PDF
Đồ án tốt nghiệp Điều khiển đèn giao thông điểm cao - sdt/ ZALO 093 189 2701
DOC
ĐỒ ÁN - Điều khiển tốc độ động cơ sử dụng giải thuật Fuzzy (mờ) và PID.doc
DOCX
Máy chuẩn đoán
DOC
Plc nang cao
DOCX
BTL lt nhung.docx
PPTX
Máy toàn đạc điện tử
DOCX
Bao cao do an dieu khien dong co dc
PDF
Giao trinh tien_phay_cnc_1
PPTX
BTCN_nhom10aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pptx
PDF
[ĐAMH] Điều khiển thiết bị điện qua máy tính
PDF
Baigiangmaycnc 130628122849-phpapp01
Đồ án Đo và điều khiển tốc độ động cơ dùng 8051
Đề tài: Đo và điều khiển tốc độ động cơ dùng 8051, HAY
Đề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PID
DA2_PPT.pjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
Luận văn: Chương trình WinCC kết hợp vói các PLC, HAY
Nhóm 7 - Báo cáo Bài tập lớn kjafoashfioahoifhioahfioahofh
Luận văn: Thiết kế mạch báo chuông trường Đại Học Vinh, HOT
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
Luận văn Nghiên cứu thiết kế bộ điều khiển tốc độ động cơ tuyến tính không đồ...
Đồ án tốt nghiệp Điều khiển đèn giao thông điểm cao - sdt/ ZALO 093 189 2701
ĐỒ ÁN - Điều khiển tốc độ động cơ sử dụng giải thuật Fuzzy (mờ) và PID.doc
Máy chuẩn đoán
Plc nang cao
BTL lt nhung.docx
Máy toàn đạc điện tử
Bao cao do an dieu khien dong co dc
Giao trinh tien_phay_cnc_1
BTCN_nhom10aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.pptx
[ĐAMH] Điều khiển thiết bị điện qua máy tính
Baigiangmaycnc 130628122849-phpapp01

Recently uploaded (20)

PDF
Public economy và vai trò trong phân bổ nguồn lực, cung cấp hàng hóa công, đi...
DOCX
Chủ nghĩa xã hội khoa học - Đề Cương Cuối Kỳ.docx
PDF
BÀI TẬP TEST FOR UNIT TIẾNG ANH LỚP 8 GLOBAL SUCCESS CẢ NĂM THEO TỪNG ĐƠN VỊ ...
PPTX
CHƯƠNG I excel,,,,,,,,,,,,,,,,,,,,,,,,,,
PPTX
14. thoát vị bẹn nghẹt bệnh học ngoại khoa.pptx
PDF
CHƯƠNG 1-P2: ĐẢNG CỘNG SẢN VIỆT NAM RA ĐỜI VÀ LÃNH ĐẠO ĐẤU TRANH GIÀNH CHÍNH ...
PPTX
Chương 1 – Tổng quan về Cơ sở dữ liệu.pptx
DOCX
Set menu 3 món rất hay và hiện đại dành cho người
PPTX
SLIDE BV CHÍNH THỨC LATSKH - note.pptx
DOCX
2024-2025 HSG HÓA 12 CỤM LẦN 3 - Hải Dương - đề.docx
DOCX
6.CQ_KT_Ke toan tai chinh 2_Pham Thi Phuong Thao.docx
PPTX
Bài 9.4 TUYẾN SINH DỤC NAM VÀ NU CẤU TẠO VÀ CHỨC NĂNG
PPTX
Chương 2 - Mô hình thực thể kết hợp.pptx
PDF
Vision - Language - Model-- - Ebook.pdf
PPTX
White and Purple Modern Artificial Intelligence Presentation.pptx
DOCX
Bài tập trăc nghiệm vận tốc. tốc độ trong chuyển động thẳng
PDF
TeétOrganicChemistryFromVietNamVeryHardd
PPTX
Direct Marketing- chieu thi truyen thong
PDF
12894-44864-1-CE-1037-1038_Văn bản của bài báo.pdf
PDF
100-Mon-Ngon-Christine-Ha.pdfnfeifefefefef
Public economy và vai trò trong phân bổ nguồn lực, cung cấp hàng hóa công, đi...
Chủ nghĩa xã hội khoa học - Đề Cương Cuối Kỳ.docx
BÀI TẬP TEST FOR UNIT TIẾNG ANH LỚP 8 GLOBAL SUCCESS CẢ NĂM THEO TỪNG ĐƠN VỊ ...
CHƯƠNG I excel,,,,,,,,,,,,,,,,,,,,,,,,,,
14. thoát vị bẹn nghẹt bệnh học ngoại khoa.pptx
CHƯƠNG 1-P2: ĐẢNG CỘNG SẢN VIỆT NAM RA ĐỜI VÀ LÃNH ĐẠO ĐẤU TRANH GIÀNH CHÍNH ...
Chương 1 – Tổng quan về Cơ sở dữ liệu.pptx
Set menu 3 món rất hay và hiện đại dành cho người
SLIDE BV CHÍNH THỨC LATSKH - note.pptx
2024-2025 HSG HÓA 12 CỤM LẦN 3 - Hải Dương - đề.docx
6.CQ_KT_Ke toan tai chinh 2_Pham Thi Phuong Thao.docx
Bài 9.4 TUYẾN SINH DỤC NAM VÀ NU CẤU TẠO VÀ CHỨC NĂNG
Chương 2 - Mô hình thực thể kết hợp.pptx
Vision - Language - Model-- - Ebook.pdf
White and Purple Modern Artificial Intelligence Presentation.pptx
Bài tập trăc nghiệm vận tốc. tốc độ trong chuyển động thẳng
TeétOrganicChemistryFromVietNamVeryHardd
Direct Marketing- chieu thi truyen thong
12894-44864-1-CE-1037-1038_Văn bản của bài báo.pdf
100-Mon-Ngon-Christine-Ha.pdfnfeifefefefef

Bao cao servo

  • 1. Mục lục Lời mở đầu Lời cảm ơn Chương 1:Thiết kế bộ điều khiển PID số……………………………………5 1.1/Thiết kế mô hình phần cứng mạch điều khiển………………………….5 1.1.1/Yêu cầu thiết kế……………………………………………………….…5 1.1.2/Các khối chức năng trên mạch điều khiển………………………………,5 a)Khối vi điều khiển trung tâm………………………………………………..5 b)Khối giao tiếp với máy tính thông qua RS232……………………………...6 c)Khối động lực điều khiển…………………………………………………...7 1.2/Thiết kế phần mềm……………………………………………………….8 1.2.1/Yêu cầu phần mềm……………………………………………………...8 1.2.2/Giải thuật chương trình………………………………………………....8 a)Loop điều khiển………………………………………………………….…8 b)Thuật toán điều khiển……………………………………………………...10 1.2.3/ Thiết kế phần mềm điều khiển và giám sát trên máy tính………….…10 1.3/Kit điều khiển…………………………………………………………....11 Chương 2: Điều khiển động cơ điện 1 chiều……………………………….12 2.1/Đối tượng điều khiển 2.1.1/Thông số kỹ thuật……………………………………………………... 12 2.2/Xác định các thông số động cơ: 2.2.1/Nhận dạng mô hình động học của động cơ điện một chiều……………15 2.2.2/Thu thập dữ liệu vào/ra của động cơ điện một chiều từ thực nghiệm….21
  • 2. 2.2.3/Nhận diện động cơ một chiều bằng Toolbox Identification của Matlab..23 2.2.4/Đánh giá chất lượng mô hình….….……………………………………..28 2.3/Điều khiển vận tốc…………………...…………………………………….28 2.3.1/Loop điều khiển………………….….…………………………………...28 2.3.2/Giải thuật chương trình…………….….…………………………………29 2.3.3/Ảnh hưởng của ѡ đến hệ thống…………………………………… …30 2.4/Điều khiển vị trí……………………………………………………… ….43 2.4.1/Loop điều khiển……………………………………………………… ..43 2.4.2/Giải thuật chương trình……………………………………………… …43 2.4.3/Ảnh hưởng của ѡ đến hệ thống………………………………………..44
  • 3. Lời mở đầu Khoa học công nghệ hiện đại đã có những bước tiến nhanh và xa đi theo đó là những thành tựu ứng dụng trong mọi lĩnh vực dời sống, công nghiệp. Kĩ thuật điều khiển trong tiến trình hoàn thiện lý thuyết cũng tạo cho mình nhiều phát triển có ý nghĩa. Bây giờ khi nhắc tới điều khiển con người dưòng như hình dung đến sự chính xác, tốc độ xử lý và thuật toán thông minh đồng nghĩa là lượng chất xám cao hơn. Có thể nói trong lĩnh vực điều khiển và trong công nghiệp thì bộ điều khiển PID có ứng dụng kha rộng rãi, một giả pháp đa năng cho các ứng dụng cả Analog cũng như Digital. Thống kê cho thấy có tới hơn 90% các bộ điều khiển sử dụng trong thực tế là PID. Rõ ràng nếu có thiết kế và chọn lựa các thông số hợp lý cho bộ điều khiển PID thì việc đạt được các chỉ tiêu chất lượng mong muốn là khả thi Bộ điều khiển PID cũng giúp người sử dụng dễ dàng tích hợp cũng như chọn các luật điều khiển như : tỉ lệ(P), tích phân(I), tỉ lệ tích phân(PI), tỉ lệ vi phân(PD)… sao cho phù hợp đối với các đối tượng điều khiển. Nhiều quá trình trong công nghiệp việc sử dụng bộ điều khiển PID là không thể thay thế như khống chế nhiệt độ, mức, tốc độ…? Ngay cả những lý thuyết điều khiển hiện đại cũng không cho ta những hiệu quả cao như bộ điều khiển PID mang lại.Ngoài ra bộ điều khiển PID còn ứng dụng nhiều trong điều khiển thích nghi,bền vững vẫn mang lại hiệu quả cao trong các cơ cấu chỉnh định. Bài toán thiết kế và điều khiển động cơ một chiều là bài toán cơ bản và quen thuộc trong ngành cơ điện tử. Có thể thiết kế điều khiển cho đối tượng độngcơ điện một chiều theo nhiều phương pháp như :dùng PLC & biến tần, điện tử công suất, vi điều khiển… Mỗi phương pháp có ưu và nhược điểm khác nhau nhưng đều có mục đích ổn định và điều khiển được tốc độ động cơ. Ngày nay vi điều khiển phát triển sâu rộng và ngày càng ứng dụng nhiều trong cài đặt thiết kế bộ điều khiển cho các đối tượng công nghiệp. Trên cơ sở muốn tìm hiểu về lĩnh vực điều khiển tự động chúng em chọn đề tài: Thiết kế bộ điều khiển PID số trên nền vi điều khiển PIC. Vì khả năng và thời gian có hạn nên không thể tránh khỏi những thiếu sót trong project. Do vậy chúng em rất mong được thầy cô và bạn bè đóng góp xây dựng để đồ án của chúng em được hoàn thiện hơn.
  • 4. Lời cảm ơn Đầu tiên chúng em xin chân thành gửi lời cảm ơn tới nhà truờng, khoa Cơ Khí Máy, bộ môn Cơ Điện tử, các thầy cô đã dạy dỗ và dìu dắt chúng em trong suốt 3 năm học vừa qua để có được những kiến thức chuyên môn cơ sở sau này chúng em có thể vào đời làm việc, sử dụng có ích cho xã hội. Để thực hiện thành công project là sự hướng dẫn, chỉ bảo tận tình của TS Trương Nguyễn Vũ, Người đã hướng dẫn tận tình , giúp chúng em định hướng, góp ý và cung cấp ý tưởng cũng như chỉ dẫn tài liệu và các tiến trình thực hiện project .Sự hướng dẫn của thầy là một yếu tố quan trọng để chúng em có thể hoàn thành project này . Cuối cùng chúng em xin chân thành gửi những lời cảm ơn sâu sắc đến cha mẹ và gia đình, những người luôn sát cánh cùng chúng em, nuôi dưỡng chăm sóc chúng em tạo điều kiện tốt nhất cho chúng em học tập để có kết quả như ngày hôm nay. Chúng em xin chân thành cảm ơn!
  • 5. Chương1:Thiết kế bộ PID số Chương 1:Thiết kế bộ PID số 1.1/Thiết kế mô hình phần cứng mạch điều khiển 1.1.1/Yêu cầu thiết kế: -Tốc độ tính toán nhanh. -Có khả năng giao tiếp với: +Máy tính. +Các thiết bị chấp hành:Cảm biến,động cơ. 1.1.2/Các khối chức năng trên kit điều khiển: a/Khối vi điều khiển trung tâm
  • 6. Chương1:Thiết kế bộ PID số b/Khối giao tiếp với máy tính
  • 7. Chương1:Thiết kế bộ PID số c/Khối động lực điều khiển-Sử dụng L298D-Thay thế mạch cầu H L298D Datasheet:
  • 8. Chương1:Thiết kế bộ PID số 1.2/Thiết kế phần mềm: 1.2.1/Yêu cầu thiết kế: -Nhận dữ liệu từ máy tính và bàn phím. -Truyền dữ liệu máy tính lên thông qua cổng truyển thông RS232. -Tính toán đầu ra cho bộ điều khiển thiết kế,trong đề tài là bộ PID số. 1.2.2/Giải thuật chương trình. a)Loop điều khiển
  • 9. Chương1:Thiết kế bộ PID số 1.2.3/ Thiết kế phần mề m điều khiển và giám sát trên máy tính. -Thu nhận dữ liệu do người dùng nhập vào. -Phân tích xử lý dữ liệu,truyền xuống cho vi điều khiển. -Nhận dữ liệu từ vi điều khiển và vẽ đồ thị.
  • 10. Chương1:Thiết kế bộ PID số 1.3/Kit điều khiển
  • 11. Chương 2 : Điều khiển động cơ điện 1 chiều Chương 2:Điều khiển động cơ điện 1 chiều 2.1/Đối tượng điều khiển: 2.1.1/Thông số kỹ thuật: Động cơ được sử dụng trong project Chúng ta sử dụng Servo Motor với các thông số cơ bản sau: -Điện áp nguồn tối đa:12V -Tốc độ tối đa 850(vòng/phút). -Có gắn liền với encoder quang tương đối 200 xung. -Công suất 30-50W. Encoder:
  • 12. Chương 2 : Điều khiển động cơ điện 1 chiều Để điều khiển số vòng quay hay vận tốc động cơ thì chúng ta nhất thiết phải đọc được góc quay của motor. Một số phương pháp có thể được dùng để xác định góc quay của motor bao gồm tachometer (thật ra tachometer đo vận tốc quay), dùng biến trở xoay, hoặc dùng encoder. Trong đó 2 phương pháp đầu tiên là phương pháp analog và dùng optiacal encoder (encoder quang) thuộc nhóm phương pháp digital. Hệ thống optical encoder bao gồm một nguồn phát quang (thường là hồng ngoại – infrared), một cảm biến quang và một đĩa có chia rãnh. Optical encoder lại được chia thành 2 loại: encoder tuyệt đối (absolute optical encoder) và encoder tương đối (incremental optical encoder). Trong đa số các DC Motor, incremental optical encoder được dùng và mô hình động cơ servo trong bài này cũng không ngoại lệ. Từ bây giờ khi tôi nói encoder tức là incremental encoder. Hình 2 là mô hình của encoder loại này. Hình 2. Optical Encoder (trích từ [1]). Encoder thường có 3 kênh (3 ngõ ra) bao gồm kênh A, kênh B và kênh I (Index). Trong hình 2 bạn thấy hãy chú ý một lỗ nhỏ bên phía trong của đĩa quay và một cặp phat-thu dành riêng cho lỗ nhỏ này. Đó là kênh I của encoder. Cữ mỗi lần motor quay được một vòng, lỗ nhỏ xuất hiện tại vị trí của cặp phát-thu, hồng ngoại từ nguồn phát sẽ xuyên qua lỗ nhỏ đến cảm biến quang, một tín hiệu xuất hiện trên cảm biến. Như thế kênh I xuất hiện một “xung” mỗi vòng quay của motor. Bên ngoài đĩa quay được chia thành các rãnh nhỏ và một cặp thu-phát khác
  • 13. Chương 2 : Điều khiển động cơ điện 1 chiều dành cho các rãnh này. Đây là kênh A của encoder, hoạt động của kênh A cũng tương tự kênh I, điểm khác nhau là trong 1 vòng quay của motor, có N “xung” xuất hiện trên kênh A. N là số rãnh trên đĩa và được gọi là độ phân giải (resolution) của encoder. Mỗi loại encoder có độ phân giải khác nhau, có khi trên mỗi đĩa chĩ có vài rãnh nhưng cũng có trường hợp đến hàng nghìn rãnh được chia. Để điều khiển động cơ, bạn phải biết độ phân giải của encoder đang dùng. Độ phân giải ảnh hưởng đến độ chính xác điều khiển và cả phương pháp điều khiển. Không được vẽ trong hình 2, tuy nhiên trên các encoder còn có một cặp thu phát khác được đặt trên cùng đường tròn với kênh A nhưng lệch một chút (lệch M+0,5 rãnh), đây là kênh B của encoder. Tín hiệu xung từ kênh B có cùng tần số với kênh A nhưng lệch pha 90o. Bằng cách phối hợp kênh A và B người đọc sẽ biết chiều quay của động cơ. Hãy quan sát hình 3. Hình 3. Hai kênh A và B lệch pha trong encoder (trích từ [1]) Hình trên cùng trong hình 3 thể hiện sự bộ trí của 2 cảm biến kênh A và B lệch pha nhau. Khi cảm biến A bắt đầu bị che thì cảm biến B hoàn toàn nhận được hồng ngoại xuyên qua, và ngược lại. Hình thấp là dạng xung ngõ ra trên 2 kênh. Xét trường hợp motor quay cùng chiều kim đồng hồ, tín hiệu “đi” từ trái sang phải. Bạn hãy quan sát lúc tín hiệu A chuyển từ mức cao xuống thấp (cạnh xuống) thì
  • 14. Chương 2 : Điều khiển động cơ điện 1 chiều kênh B đang ở mức thấp. Ngược lại, nếu động cơ quay ngược chiều kim đồng hồ, tín hiệu “đi” từ phải qua trái. Lúc này, tại cạnh xuống của kênh A thì kênh B đang ở mức cao. Như vậy, bằng cách phối hợp 2 kênh A và B chúng ta không những xác định được góc quay (thông qua số xung) mà còn biết được chiều quay của động cơ (thông qua mức của kênh B ở cạnh xuống của kênh A). 2.2/Xác định thông số J’,B’ của động cơ: 2.2.1/Nhận dạng mô hình động học của động cơ điện một chiều Cấu trúc mô hình động học được đề xuất tham khảo các tài liệu điều khiển tự động có dạng: Cơ sở lý thuyết: a. Khảo sát trong miền thời gian:
  • 15. Chương 2 : Điều khiển động cơ điện 1 chiều
  • 16. Chương 2 : Điều khiển động cơ điện 1 chiều Các biểu thức trên cho thấy đặc tính thời gian của khâu dao động bậc hai có dạng dao động tắc dần. Hàm quá độ suy giảm về giá trị xác lập K và hàm trọng lượng suy giảm về 0. Giá trị ؏ càng lớn, dao động suy giảm càng nhanh, do đó ؏ gọi là hệ số suy giảm hay hệ số tắt dần.
  • 17. Chương 2 : Điều khiển động cơ điện 1 chiều b. Khảo sát trong miền tần số:
  • 18. Chương 2 : Điều khiển động cơ điện 1 chiều
  • 19. Chương 2 : Điều khiển động cơ điện 1 chiều 2.2.2/ Thu thập dữ liệu vào/ra của động cơ điện một chiều từ thực nghiệm a/Xác định các thông số J’,B’ thông qua đồ thị:
  • 20. Chương 2 : Điều khiển động cơ điện 1 chiều Đồ thị trên thể hiện vận tốc của động cơ theo thời gian tuân theo qui tắc: -Động cơ chạy với 80% PWM trong thời gian 3s sau đó dảo chiều. -Thời gian lấy mẫu là 20(ms).
  • 21. Chương 2 : Điều khiển động cơ điện 1 chiều ‫ح‬ J = = 0.680272 ∗ 10 k Phương pháp xác định J’,B’: 1 B = = 0.01088 k ∆w 73.5 k= = = 91.875 0.8 0.8 w=72.5(rad/s) ‫(7666.14=ح‬ms) k = 90.625 => J = 0.000459 B = 0.1103 Vì đáp ứng của động cơ ở phần chạy thuận và chạy nghịch là gần như giống nhau nên ta tính 2 thông số J’,B’.Nếu như đáp ứng chạy thuận và chạy nghịch của động cơ là khác nhau ,chúng ta phải tìm 4 thông sô J’,B’ và J”,B”. Mô phỏng Matlab:
  • 22. Chương 2 : Điều khiển động cơ điện 1 chiều Kết quả mô phỏng 2.2.3/Nhận diện động cơ một chiều bằng Toolbox Identification của Matlab:
  • 23. Chương 2 : Điều khiển động cơ điện 1 chiều Xuất số liệu từ mô phỏng ra bảng excel: Số liệu từ thực nghiệm:
  • 24. Chương 2 : Điều khiển động cơ điện 1 chiều Mô phỏng dựa vào số liệu thực: Import số liệu vào Matlab: Mở ứng dụng Identification: >>ident
  • 25. Chương 2 : Điều khiển động cơ điện 1 chiều Đưa dữ liệu vào:
  • 26. Chương 2 : Điều khiển động cơ điện 1 chiều
  • 27. Chương 2 : Điều khiển động cơ điện 1 chiều 2.2.4/Đánh giá chất lượng mô hình: Tính toán: >>sysc=d2c(pss1,'zoh'); >>step(sysc); >>[a,b,c,d]=ssdata(sysc); >>[num,den]=ss2tf(a,b,c,d); >>ss=tf(num,den); >>step(sysc); 2.3/Điều khiến vận tốc: 2.3.1/Loop điều khiển:
  • 28. Chương 2 : Điều khiển động cơ điện 1 chiều Thay số Kp,Ki vào mô phỏng và xem xét đáp ứng hệ thống. = 2ѡ − = ′ѡ = 0.0138 => = 0.1836 2.3.2/Giải thuật chương trình Thuật toán điều khiển {v=(count*3.14/2)/2; err = setpoint - v; up=kp*err; ui=ui + ki*err*0.02; pid = up + ui ; if(pid>=256.0)pid=256.0; if(pid<=0.0)pid=0.0; pwm((int)pid);}
  • 29. Chương 2 : Điều khiển động cơ điện 1 chiều 2.3.3/Ảnh hưởng của wn đến hệ thống ->Ứng với mỗi ѡ khác nhau hệ số Kp,Ki khác nhau . Bộ điều khiển PI với ѡ =20 Bộ điều khiển PI với ѡ =30 Thời gian đáp ứng vận tốc nhanh hơn so với wn=20
  • 30. Chương 2 : Điều khiển động cơ điện 1 chiều Bộ điều khiển PI với wn=40 Cho động cơ chạy với vận tốc 20(rad/s)->100(rad/s)->20(rad/s). Tốc độ đáp ứng nhanh hơn nhưng độ nhiễu tăng lên.
  • 31. Chương 2 : Điều khiển động cơ điện 1 chiều Bộ điều khiển PI với ѡ =50 Cho động cơ chạy với vận tốc 100(rad/s)->50(rad/s). Bộ điều khiển PI với ѡ ==100 Cho động cơ chạy với tốc độ 100(rad/s).
  • 32. Chương 2 : Điều khiển động cơ điện 1 chiều Tốc độ đáp ứng tăng lên khá nhiều và chưa bị vọt lố. Bộ điều khiển PI với ѡ ==120 Tốc độ đáp ứng của động cơ nhanh nhưng bị vọt lố,động cơ dao động nhẹ.
  • 33. Chương 2 : Điều khiển động cơ điện 1 chiều Bộ điều khiển PI với ѡ ==150 Tốc độ đáp ứng của động cơ rất nhanh nhưng bị vọt lố mạnh,động cơ dao động mạnh. Bộ điều khiển PI với ѡ ==200 Đồ thị vận tốc có dạng dao động tắt dần kiều bậc 2,tốc độ đáp ứng nhanh nhưng độ vọt lố cao. Kết luận: Càng tăng ѡ tốc độ đáp ứng của động cơ càng nhanh nhưng đồng thời độ vọt lố cũng tăng theo. Giải thích: Với cách chọn hệ số tắt dần ؏=1 hàm truyền của hệ có dạng: G(s)= ѡ ѡ ѡ ѡ G(t)=1- -ѡ t.
  • 34. Chương 2 : Điều khiển động cơ điện 1 chiều Hệ có nghiệm kép:- ѡ =>Cặp cực này luôn nằm phần âm của trục thực =>Đáp ứng của hệ thông không có dao động. ѡ cảng tăng->hàm G(t) càng nhanh tiến về 1 ->Nhanh đạt được tốc độ tương ứng. Mô hình nhiễu trong điều khiển động cơ: Nhiễu là các biến mà nó không chứa trong mô hình hệ thống nhưng ảnhhưởng đến đáp ứng của hệ thống. Chúng có thể được xác định, chẳng hạn nhưmômen tải trong hệ thống điều khiển vị trí, cũng như các nhiễu từ các cảm biến hay từ cơ cấu chấp hành.
  • 35. Chương 2 : Điều khiển động cơ điện 1 chiều Điều khiển động cơ với bộ PI chưa có lọc nhiễu: Bộ điều khiển PI với vận tốc động cơ 30rad/s Tốc độ càng thấp càng dễ ảnh hưởng bởi nhiễu. Độ mịn của đồ thị ít(có nhiều răng cưa).
  • 36. Chương 2 : Điều khiển động cơ điện 1 chiều Bộ điều khiển PI với vận tốc động cơ 50rad/s a. Điều khiển động cơ với bộ PI có lọc nhiễu tần số thấp: i. Chương trình code: v=(count*3.14/2); vf=vf+3.18*0.02*(v-vf); err = setpoint - vf; up=sp*err; ui=ui + si*err*0.02; pi = up + ui ; if(pi>=256.0)pid=256.0; if(pi<=0.0)pid=0.0; pwm((int)pi);
  • 37. Chương 2 : Điều khiển động cơ điện 1 chiều ii. Đồ thị vận tốc : Bộ điều khiển PI có bộ lọc nhiễu với vận tốc V=100rad/s Tốc độ càng cao thì càng ít bị ảnh hưởng nhiễu của tần số thấp . Qua đồ thị ta có thể thấy ở tốc độ này,những “răng cưa”(nhiễu) đã nhỏ lại rất nhiều Vì thế độ mịn của đồ thị tăng lên.
  • 38. Chương 2 : Điều khiển động cơ điện 1 chiều Bộ điều khiển PI có bộ lọc nhiễu với vận tốc V=50rad/s Độ răng cưa đã giảm đáng kể,khi động cơ đạt được tốc độ định sẵn thì các nhiễu tần số nhỏ gần như được lọc bỏ hoàn toàn. b. Điều khiển động cơ với bộ PI có lọc nhiễu giá trị trung bình: i. Chương trình code: { vf=(vf+count*3.14/2)/2; err = setpoint - vf; up=sp*err; ui=ui + si*err*0.02; pi = up + ui ; if(pi>=256.0)pi=256.0; if(pi<=0.0)pi=0.0; pwm((int)pi); }
  • 39. Chương 2 : Điều khiển động cơ điện 1 chiều ii. Đồ thị vận tốc : Bộ điều khiển PI có bộ lọc nhiễu trung bình với vận tốc ѡ =30rad/s Ở tốc độ này cũng với cách lọc nhiễu trung bình,mặc dù đã được loại bỏ nhưng động cơ vẫn bị ảnh hưởng nhiều. Do đó,độ mịn của đồ thị còn rất thấp.
  • 40. Chương 2 : Điều khiển động cơ điện 1 chiều Bộ điều khiển PI có bộ lọc nhiễu trung bình với vận tốc ѡ =50rad/s Chạy ở tốc độ cao hơn,động cơ ít bị ảnh hưởng bởi nhiễu hơn do đó độ mịn của đồ thị được tăng lên.
  • 41. Chương 2 : Điều khiển động cơ điện 1 chiều Bộ điều khiển PI có bộ lọc nhiễu trung bình với vận tốc ѡ =100rad/s Chạy ở tốc độ cao động cơ ít chịu ảnh hưởng của nhiễu vì thế độ răng cưa đã giảm bớt đáng kể.
  • 42. Chương 2 : Điều khiển động cơ điện 1 chiều 2.4/Điều khiển vị trí 2.4.1/Loop điều khiển 2.4.2/Giải thuật chương trình Thuật toán điều khiển: Các hệ số: K2 = 2J‘ѡ –B’ K1 k2 =J‘ѡ 2 = 0.00068027 = 0.01088 Giải thuật: v=count*3.14/2.0; vf=vf+3.18*0.02*(v-vf); err = setpoint - post; u2=k2*(k1*err-vf); u2=abss(u2); CCPR2L=(int)u2;
  • 43. Chương 2 : Điều khiển động cơ điện 1 chiều 2.4.3/Ảnh hưởng của ѡ đến hệ thống ѡ =50 Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:60(rad) Cho động cơ chạy tới vị trí 200(rad)-Đáp ứng:160(rad) Cho động cơ chạy ngược tới vị trí 80(rad)-Đáp ứng:120(rad) Hệ thống chỉ đáp ứng được với những vị trí có góc >=60(rad),còn đối với những góc nhỏ hơn thì không thể đáp ứng được. Xung PWM được điều chế không đủ điện áp cho động cơ chạy với những góc nhỏ Sai số kéo về nằm trong khoảng(-2;2)(rad).->Sai số khá lớn.
  • 44. Chương 2 : Điều khiển động cơ điện 1 chiều ѡ =80 Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:30(rad) Cho động cơ chạy tới vị trí 200(rad)-Đáp ứng:70(rad) Cho động cơ chạy ngược tới vị trí 20(rad)-Đáp ứng:30(rad) Hệ thống có thể đáp ứng được với góc nhỏ khoảng 30(rad). Sai số kéo về trong khoảng (-2,2)(rad).
  • 45. Chương 2 : Điều khiển động cơ điện 1 chiều ѡ =100 Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:20(rad) Cho động cơ chạy tới vị trí 200(rad)-Đáp ứng:50(rad) Cho động cơ chạy tới vị trí 300(rad)-Đáp ứng:90(rad) Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:30(rad) Cho động cơ chạy ngược tới vị trí 50(rad)-Đáp ứng:50(rad) Cho động cơ chạy ngược tới vị trí 30(rad)-Đáp ứng:30(rad) Nhưng sai số kéo về vẫn chưa được cải thiện(-2;2)(rad).
  • 46. Chương 2 : Điều khiển động cơ điện 1 chiều ѡ =200 Cho động cơ chạy tới vị trí 100(rad)-Đáp ứng:102(rad) Cho động cơ chạy tới vị trí 200(rad)-Đáp ứng:202(rad) Đáp ứng của động cơ rất nhanh. Động cơ có thể quay được với các góc nhỏ hơn 10(rad) Sai số kéo về được cải thiện nằm trong khoảng (-1,1)(rad).
  • 47. Chương 2 : Điều khiển động cơ điện 1 chiều ѡ =250 Cho động cơ chạy tới vị trí 1000(rad)-Đáp ứng:1000(rad) Cho động cơ chạy ngược tới vị trí 500(rad)-Đáp ứng:500(rad) Cho động cơ chạy tới vị trí 550(rad)-Đáp ứng:551(rad) Động cơ đáp ứng rất nhanh tớsi vị trí đặt trước. Với những vị trí có góc càng lớn thì độ chính xác càng cao. Sai số kéo về nằm trong khoảng(-0.5;0.5)(rad) Vẫn chưa khắc phục được sai số ở các vị trí có số đo góc thấp. Kết luận: ѡ càng nhỏ hệ thống đáp ứng càng lâu,đồng thời không đáp ứng được những vị trí có góc nhỏ.
  • 48. Chương 2 : Điều khiển động cơ điện 1 chiều ѡ nhỏ sai số càng lớn. ѡ càng lớn,thời gian đáp ứng nhanh,sai số nhỏ đồng thời đáp ứng được các vị trí có góc nhỏ. Giải thích: Khi ѡ nhỏ,các hệ số K1 và K2 nhỏ nên tín hiệu hồi tiếp về cho vi điều khiển cấp xung PWM nhỏ nên không đủ điện áp cho động cơ chạy. Ngoài ra,động cơ có độ “trì hoãn” ban đầu nên ít nhiều đã ảnh hưởng đến sai số. Một nguyên nhân khác có thể là các hệ số J’,B’-rất quan trọng-chúng ta tìm chưa chính xác hoặc chưa hợp lý. Muốn điều khiển chính xác các vị trí có góc nhỏ chúng ta cũng cần có thuật toán lọc nhiễu,xác định mô hình toán của động cơ thật chính xác đồng thời cách điều chế xung PWM cũng phải hợp lý,chính xác và nhanh.
  • 49. Chương 2 : Điều khiển động cơ điện 1 chiều Phụ lục code phần mềm: Điều khiển vận tốc: #include<htc.h> __CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word __CONFIG(BOR4V_BOR21V); //2st config. Word #ifndef _XTAL_FREQ #define _XTAL_FREQ 20000000 #endif #include<stdio.h> #include<string.h> #include<ctype.h> #include<stdlib.h> #include<conio.h> #define dir RE0 #define ham RE1 unsigned int count,setpoint,v,vf,k; char x; char data; bit tx; char send; char chuoi[20];
  • 50. Chương 2 : Điều khiển động cơ điện 1 chiều char i; void ram(); int pwm(int a); double abss(double a); void forward(); void backward(); void brake(); void velocity(); void reset(); void delstr(void); void guikytu(char c); void guichuoi(const char* s); // Khai bao bo PID int err; double u1,pid, ui,up,u; float q; //Nhap kp,ki tai day float sp;//=0.070748; float si;//;=2.44897; float sd;//=0.1; //Chuong trinh chinh
  • 51. Chương 2 : Điều khiển động cơ điện 1 chiều void main() { ANSEL=ANSELH=0; TRISE0=TRISE1=0; dir=0; ham=0; //Khoi tao PWM TRISC2=1; TRISC1=0; T2CKPS1=0; T2CKPS0=0; PR2=124;//Tao xung PWM 10kHz CCP2CON = 0X0C; DC2B0 = 0; DC2B1 = 0; TMR2ON=1; //Thiet lap UART TXSTA = 0x24; RCSTA = 0x90; BRG16 = 1; //chon baund rate 20MhZ/(20*(520+1))~9600 SPBRGH = 2;
  • 52. Chương 2 : Điều khiển động cơ điện 1 chiều SPBRG = 8; RCIF=0; RCIE=1; PEIE=1; GIE=1; //THIET LAP TIMER0 LAM COUNNTER TRISA4=1; T0CS=1; T0SE=0; PSA=1; TMR0=0; //NGAT TIMER0 T0IE=1; T0IF=0; //THIET LAP TIMER1 LAM TIMER DINH THOI GIAN LAY MAU 20ms TMR1CS=0; T1CKPS0=1; T1CKPS1=0; T1SYNC=1; //T1OSCEN=1; TMR1L=0Xb0; TMR1H=0X3c;
  • 53. Chương 2 : Điều khiển động cơ điện 1 chiều TMR1ON=1; //THIET LAP NGAT TIMER1 TMR1IF=0; TMR1IE=1; tx=0; while(1) { } } //Chuong trinh ngat void interrupt isr() { //Ngat Uart if(RCIE&&RCIF) { RCIF=0; data=RCREG; switch(data) { //setpoint case 'v':
  • 54. Chương 2 : Điều khiển động cơ điện 1 chiều setpoint=atoi(chuoi); i=0; delstr(); break; //cho phep Send case 't': tx=1; RE1=1; RE0=0; break; //stop case 's': brake(); pwm(0); break; //gui kp case 'p': sp=atof(chuoi); i=0; delstr(); break; //gui ki
  • 55. Chương 2 : Điều khiển động cơ điện 1 chiều case 'i': si=atof(chuoi); i=0; delstr(); break; //gui kd case 'd': sd=atof(chuoi); i=0; delstr(); break; case 'z': reset(); break; default: chuoi[i++]= data; break; } }
  • 56. Chương 2 : Điều khiển động cơ điện 1 chiều //Ngat T1 10ms if(TMR1IE&&TMR1IF) { TMR1IF=0; TMR1ON=0; TMR1L=0Xb0; TMR1H=0X3c; TMR1ON=1; count=x*256+TMR0; x=0; TMR0=0; velocity(); //ram(); if(tx) { //k++; printf("%dn",vf); } }
  • 57. Chương 2 : Điều khiển động cơ điện 1 chiều //Ngat T0 if(T0IE&&T0IF) { T0IF=0; x++; } } //Chuong trinh con void guikytu(char c) { while(TXIF==0); TXREG=c; } void guichuoi(const char* s) { while(*s){ guikytu(*s++); } } void putch (char c)
  • 58. Chương 2 : Điều khiển động cơ điện 1 chiều { guikytu(c); } // Ham de xoa chuoi sau khi da nhan dc gia tri void delstr(void) { for(char i=20; i>0;i--) { chuoi[i]='0'; } return; } //Dieu che PWM tu PID int pwm(int a) { int n; if (a>=100) { n=100; CCPR2L=125; TMR2ON=1;
  • 59. Chương 2 : Điều khiển động cơ điện 1 chiều } else { n = (a*125)/100; CCPR2L = n ; TMR2ON=1; } return; } void forward() { dir=1; ham=0; } void backward() { dir=0; ham=1; }
  • 60. Chương 2 : Điều khiển động cơ điện 1 chiều void brake() { ham=1; pwm(0); TMR2ON=0; pid=0; } double abss(double a) { double b; if (a<0){ b=-a; } else { b=a; } return b; } void velocity() { vf=count*3.14/2; //vf=(vf+count*3.14/2)/2; // lọc nhiễu trung bình
  • 61. Chương 2 : Điều khiển động cơ điện 1 chiều //vf=vf+3.18*0.02*(v-vf); //lọc nhiễu tần số thấp err = setpoint - vf; up=sp*err; ui=ui + si*err*0.02; //der=(err-errold)/0.02; pid = up + ui ; pid=abss(pid); if(pid>=256.0)pid=256.0; if(pid<=0.0)pid=0.0; pwm((int)pid); } void reset() { setpoint=v=count=TMR0=x=0; sp=si=0; err=0; pid=0.0; dir=0; ham=0; }
  • 62. Chương 2 : Điều khiển động cơ điện 1 chiều