Thứ Sáu, 17 tháng 12, 2010

công nghệ điều khiển

công nghệ điều khiển tự động

Sinh viên thưc hiên : Nguyễn Đức Hải
Lớp : DKTD K7A
Môn : Thực tập nghề ban đầu

Mạch Kiểm Soát Tốc độ  Động Cơ DC
Dùng Pic18F2620 processor

Giới thiệu:
           Mạch điện tủ sẽ điều khiển và duy trì tốc độ không đổi cho động cơ DC
          ( DC speed controller )
         Điều khiển tôc độ nhanh chậm so với tốc độ quy định của động cơ
         Phát hiện chính xác tốc độ động cơ đang chạy
         Kiểm tra trạng thái động cơ theo đèn led

I  Phần cứng   
1 Sơ đồ mạch
2 Sơ đồ mẫu
3 Mô tả mạch
4 các thành phần cơ bản
5 vẽ mạch in bằng orcad

II Bộ công cụ làm việc với PIC18F2620



 I  Phần cứng   

I.1 Sơ đồ mạch



Sơ  đồ 1  (sơ đồ mẫu )
Sơ đồ 2  ( sơ đồ nguyên lý được vẽ bằng phần mềm orcad )
Chú giải: sơ đồ 1 là sơ đồ tổng quát
            Sơ đồ 2 sơ đồ chính
 Gồm khối vi xủ lý , khối cống suất ,khối nguồn . và connecter kết nối vơi động cơ ,     nguồn điện , bộ phân hiển thị  .      
      
I.3 mô tả mạch
I.3.1 Là mạch điều khiển điện áp đầu vào








Sơ đồ trên ta thấy
         Điều khiển điện áp để phát hiện tốc độ quay của đầu vào cho các mạch PIC. 
         đầu vào cho PIC là chuyển đổi A / D được sử dụng để kiểm soát thông tin, PWM( điều chế độ rộng xung   
         động cơ M2  được sử dụng như một máy phát điện. 
         PIC điều khiển động cơ M1 khi M2 thay đổi tốc độ

         D1 ( diot zenner) để phát hiện tốc độ động cơ điện áp cao hơn PIC phép (5V) được vượt quá đối với 5V điốt Zener.
          C1 là để bỏ qua  độ nhiễu. 
         VR1 là biến trở  động cơ tăng hoặc giảm tốc độ thi biến trơ sẽ thay đổi
I.3.2   mạch điều khiển M1
Sơ đồ
     Gồm các phần tử công suất , vi xủ lý , động cơ
         . Trong PWM CCP1 nhiệm vụ  có thể thay đổi dữ liệu đầu ra xung . 
          
         kiểm soát động cơ hiện tại do bộ điều chế độ rộng xung PWM của PIC (Pulse Width Modulation) của bộ định thời

I.3.3 bộ cộng hưởng


        
 sử dụng một bộ cộng hưởng 10MHz.
Tốc độ quay của động cơ sẽ không trực tiếp liên quan liên quan đến chu kỳ xung chạy bằng mô tơ
I.3.4 bộ ổn định nguồn
Sử dụng IC KA7805  
I.4  Các thành phần cơ bản trong mạch
- PIC     18F2620 ( chíp dán )
    + cấutrúc phần cứng theo cấu trúc Voneuman    havard

được sử dụng.
Trong mạch ,kiểm soát PWM. Tốc độ quay của động cơ (động cơ này được sử dụng để phát hiện tốc độ), một điện áp tương ứng với các A / D sẽ được để nắm bắt điều khiển của tôc độ hiện hành để chuyển đổi
.Ngoài ra, điều khiên bộ hiển thị LED cũng kiểm soát các tốc độ của động cơ.
PIC18F2620









3 điều chỉnh thiết bị đầu cuối (7805)


+ được sử dụng để tạo ra ổn định5 V điện ápKA7805




MOS FET ổ đĩa bán dẫn (2SC1815)


Dầu ra PIC là 0V tới 5V đầu ra, FET để kiểm soát các chuyển đổi điện áp 0V-12V.
Power MOS FET (2SK3142)


N-kênh MOS FET.
60A giá trị tối đa tiêu hiện nay là ở đó.
Về nhà nước khi thoát FET – trở kháng là 4mΩ.
Vì vậy, về 10A trong khi mất điện là 0.4W khi dòng chảy.
Trong mạch này, FET là công suất lớn hơn nhiều, nhưng không có nhu cầu sử dụng, vì vậy tôi sử dụng được trên tay.
Điốt Zener (RD5A)


PIC pin điện áp đến phải chịu +5 V là. Điều này đi-ốt phát hiện điện áp của 5V cho việc bảo vệ vượt quá tốc độ động cơ. Nếu cần sử dụng một điện áp V 5 bên ngoài được áp dụng trên nó thì không.
Bảo vệ động cơ đi-ốt cầu kết nối tốc độ phát hiện (W02G)


Tôi đặt một cây cầu đi-ốt silic là một vấn đề kết nối thậm chí đảo ngược các điện cực vận động phát hiện tốc độ. Nếu không có cần phải sử dụng kết nối sai.




IC Socket


28-pin PIC18F2620 LA CHIP DÁN có thể sử dụng hai 28-pin socket . 
BỘ CỘNG HƯỞNG


 sử dụng một bộ cộng hưởng 10MHz.
Nếu bạn thay đổi tần số cộng hưởng, bạn cần thay đổi các thiết lập khác nhau trong phần mềm.


Tốc độ điều chỉnh điên  áp
 đã được sử dụng cho một cái gì đó.
Trong mạch này, số pinđược hiển thị bên trái.
Khi bạn rẽ trái và chậm, chuyển sang bên phải nhanh hơn.
Pin số cũng có thể đảo ngược các mạch sử dụng một thứ hai và thứ ba. Có vẻ như có nhiều chính xác.


Điện trở


1/8W là OK.




Tụ điện gốm nhiều lớp


Được sử dụng để chống nhiễu .


Bảng mạch


Universal in bảng mạch được sử dụng cho 15 × 25 lỗ.




LED, kết nối tốc độ động cơ điều chỉnh chiết áp

Ban đầu, đèn LED điện trở biến để thiết lập tốc độ động cơ và không có kế hoạch sử dụng một phần của kết nối này để đính kèm vào nắp. Tuy nhiên, trường hợp không thể được lưu trữ để sử dụng trong thiết bị đầu cuối nối dây.



Dây thiết bị đầu cuối

Được sử dụng như thiết bị đầu cuối để kết nối các đường dây điện và dây chuyền sản xuất.
Động cơ chính
Trong mạch này, để lái xe máy. Mabuchimota của sử dụng RS-380PH. Motor thông số kỹ thuật như sau: I.
Giới hạn điện áp:
12V
Đúng tải RPM:
14.200 vòng / phút
Sửa điện áp:
7.2V

Thích hợp tải trọng tĩnh hiện tại:
2.90A
Thích hợp tải trọng:
· Cm 100g

Shaft:
2.30mm
Không RPM Load:
16.400 vòng / phút







Tốc độ phát hiện
Tôi không tìm thấy một động cơ cho các lái xe một mạch động cơ tốc độ phát hiện thời gian này. Mabuchimota RE-280 được sử dụng. Motor thông số kỹ thuật như sau: I.
Giới hạn điện áp:
1.5V ~ 4.5V
Đúng tải RPM:
6.850 vòng / phút
Sửa điện áp:
3.0V

Thích hợp tải trọng tĩnh hiện tại:
750mA
Thích hợp tải trọng:
17.7g · cm

Shaft:
2.0mm
Không RPM Load:
9.000 vòng / phút




Nếu bạn xoay tốc độ động cơ truyền động, ngoài các thông số kỹ thuật trên. Tạo ra điện áp vượt quá đặc tả kỹ thuật, hiện tại là gần như tuôn ra bởi vì tôi không nghĩ. Nói đúng ra, có một vấn đề vì cách điện chịu được điện áp hơn so với điện áp quy định là có lẽ không phải là một điện áp cao mà không gặp khó khăn.


 lắp khung Động cơ

Các động cơ đã được mở các vít cố định ở bên động cơ của ổ trục trụ. Panel để gắn động cơ và sử dụng lỗ này. Chúng tôi sử dụng một động cơ loại bánh gắn khung.





Gear


Được sử dụng để phát hiện và kết nối tốc độ của động cơ truyền động động cơ. Vì tình hình hoạt động của động cơ điều khiển tốc độ động cơ không chỉ là một động cơ biến để phát hiện tốc độ.



LED hiển thị trạng thái động cơ (GL-107S12)

LED 7 thanh hiển thị một biểu đồ được xây dựng trong hình LED thanh. Hai 8 mạch điều khiển LED có để có thể kiểm soát, từng có 8 LED với điều đó trong bảy không thể có được


Power connector

kết nối này được sử dụng để kết nối các điện.




AC Adapter


Việc đầu tiên là sức mạnh động cơ chính sẽ được chia sẻ với một đơn vị kiểm soát chuyên dụng cung cấp năng lượng bởi vì nó là yêu cầu của các loại động cơ.
bộ chuyển đổi này là dành cho bộ điều khiển.
Núm điều chỉnh tốc độ


Các núm điện trở biến để kiểm soát tốc độ.


Thiết bị đầu cuối bao gồm

FET cống bị đầu cuối (giữa) tôi đặt một trải trên thiết bị đầu cuối. Điều này là để ngăn ngừa tiếp xúc với thiết bị đầu cuối liền kề.

Connecter




I.5 VẼ MẠCH IN VỚI PHẦN MỀM  ORCAD


Các chú ý quan trọng khi vẽ bảng mạch thiết kế:
Trong phần Layout chúng ta chú ý đến 2 vấn  đề chính là vẽ mạch in tự động và vẽ
mạch in bằng tay (manual), nhưng cho dù là vẽ bằng cách nào đi chăng nữa chúng ta cũng có
một số chú ý sau: 
1.  Để biết được kích thước của bảng mạch in thì ta vào Tool/Dimension/New (hoặc select
tool),rồi ra màn hình vẽ mạch ta chỉ cần nhấp chuột trái và khi thấy có hình 2 mũi tên
hương ra và ta kéo chuột đi và muốn đo đến đoạn nào thì ta nhấp chuột trái thì thanh
thước đo sẽ hiển thị ra giá trị đo được, nhưng giá trị này mặc nhiên là Mils do đó muốn
đổi về dạng mm hoặc cm thì ta vào Options/systems setting và chọn đơn vị cần đo. Và

bây giờ giá trị này vẫn chưa thay đổi, muốn thay dổi thì ta chỉ cần nhấp chuột vào thước
đo trên bản mạch in rồi nhấp chuột lại lần nữa để xác định. 
2.  Phải vẽ đường viền bao quanh bản mạch in để kiểm soát đường vẽ, linh kiện để khi vẽ
sẽ không bị vượt ra ngoài giới hạn cho phép. Để làm được điều này ta làm như sau:
Vào Tool/Obstacle/new (hoặc select tool) hay nhấp chuột vào Obstacle Tool trên Menu
lệnh, rồi chọn 0 Global layer (có màu vàng).Nhấp chuột trái và khi thấy con trỏ là dấu
cộng nhỏ hơn. Sau đó kéo chuột cà muồn dừng tại điểm nào thì nhấp chuột trái. Khi
điểm đầu và điểm cuối gặp nhau thì ta nhấp chuột phải để chọn End Command để kết
thúc. 
3.  Để  đặt chiến lươc vẽ mạch in tự  động ta vào trong menu Options/ Route
Strategies/Route Sweep. Để chọn vẽ lớp trên bao nhiêu % và lớp dưới bao nhiêu %.
4.  Vào Options chọn Global Spacing để chọn khoảng cách giữa các track to track, via to
via, track to via, track to pad, via to pad …

5.   Tạo Copper pour cho bản mạch in khi đã thiết kế xong, mục đích của vấn đề này là để
chống nhiễu cho mạch điện. Có thể kéo lớp phủ này đối với VCC hay với GND. Cách
làm như sau:
Từ menu Tool/Obstacle/properties ( nếu đã tạo đường viền bao quanh bản mạch rồi) hoặc
là Tool/Obstacle/new đối với trường hợp chưa tạo đường viền cho bản mạch in và ta phải
vẽ đường viền bao quanh bản mạch. Khi vẽ xong, nhấp chuột trái khi thấy con trỏ co
hình dấu + nhỏ thì nhấp chuột trái chọn Properties. Sau khi trên màn hình xuất hiện hộp
thoại Edit Obstacle. Kế tiếp chúng ta chọn Obstacle Type chọn Copper pour, chọn
Obstacle layer chọn lớp cần phủ copper pour ( có thể là TOP hay BOTTOM…) còn Net
Attachment thì chọn là GND hay VCC tùy theo chúng ta muốn phủ theo GND hay VCC
… Còn Hatch Pattern thì ta chọn là Line hay Cross Hatching hay Soild rồi chọn OK. Sau
đó chọn tiếp OK Sau đó chọn ESC hoặc nhấp chuột phải rồi chọn End Command hoặc
Finish. Thi chúng ta sẽ có một bản mạch in đã phủ Copper pour.


6.  Kích hoạt kiểm tra lỗi khi vẽ mạch in vào menu Tool/erro chọn select tool để kích hoạt
bẩy lỗi. Muốn xem lỗi thì chọn menu Tool/erro/select from spreadsheet hoặc cũng có
thể chọn menu Auto/Design rule check để kiểm tra lỗi, hoặc kích chuột vào menu lệnh
Design Rule Check.
7.  In các linh kiện trên board mạch ở mặt trên của board mạch để thuận tiện cho việc gắn
linh kiện về sau thì ta làm như sau:
Vào menu Options/Post Process Settings thì hộp hộithoại xuất hiện. Sau đó chọn Plot
Output File name là *.AST nhấp chuột phải và chọn Preview để xem các linh kiện ở
mặt trên của board mạch. Bây giờ chỉ cần ta in file này ra để thấy các linh kiện đã được
sắp xếp ở mặt trêncủa board mạch.
8.  Sau khi vẽ xong board mạch  in, bây giờ Layout trong Orcad có hỗ trợ chức năng filter
tối ưu hóa để làm cho mạch gọn và tối ưu nhất ( trong cả hai chế độ vẽ tự động và vẽ
bằng tay đều sử dụng được tính năng này và chỉ co trong Layout và Layout Plus). Bằng
cách chọn Menu Auto\ Cleanup Design hoặc có thể vào từ Menu

Auto\Refresh/minimize conections .
9.  Để thay đổi độ rộng của đường mạch ta chọn đường mạch cần thay đổi độ rộng (lúc này
ta có thể ở đang ở chế độ vẽ manual hay đã kết thúc việc vẽ tự đông, chỉ còn chỉnh độ
rộng đường mạch cho phù hợp) tacó thể chọn  ở mode autopath Route hoặc Add/edit

route hoặc Edit segment và nhấn phím W thì có một hộp hội thoại hiện ra cho chúng ta
chọn để có thể thay đổi có thể là cả segment, net hoặc conections. 
10. Ta có thể chọn một khối mạch riêng lẻ trên một board để vẽ. Nhằm kiểm tra các chiến
thuật vẽ  đã chọn và  để tối  ưu board mạch in vẽ sau này. Vào menu View\Zoom
DRC/Route Box để rãi linh kiện ( ta có thể thay đổi kích thước của DRC/Route Box
hiện hành, dời nó hoặc có thể đặt kích cỡ của DRC/Route box bằng mouse và phóng to
và chuyển để ở một vị trí khác). Sau đó vào Menu Auto\Autoroute\DRC/Route Box để
vẽ khối mạch đã chọn. Còn nếu muốn Unroute khối mạch đã vẽ trên thì ta làm ngược
lại vào menu Auto\Unroute\DRC/Route Box để không vẽ. 

sơ đồ mạch in 



Mạch lớp trên
Mạch đã phủ đồng

Mạch lớp dưới




Hình ảnh cho toàn bộ phần cứng

II Bộ công cụ làm việc với PIC18F2620
1.Mạch nạp: DCSPEED CONTROLLER
2.Chương trình nạp: IC - PROG
3.Bootloader: bootloader  FOR PIC18FXXX
4.Debugger: ICD2 Clone
5.Chương trình dịch: MPLAB IDE - CCS C
6. Phần mềm


3.Bootloader : PIC-P28 DEVELOPMENT PROTOTYPE BOARD FOR 28 PIN PIC MICROCONTROLLERS



SƠ ĐỒ CHO BOARD ( design on eagle solfwear )
6 .Phan mem
( dang code ASM)

 ;********************************************************
;
;              DC motor speed controller
;
;                                 Device : PIC18F2620
;                                 Author : Seiichi Inoue
;********************************************************

        list            p=pic16f873
        include         p16f873.inc
       __config _hs_osc & _wdt_off & _pwrte_on & _lvp_off
        errorlevel      -302    ;Suppress bank warning

;****************  Label Definition  ********************
speed   equ     d'8'   ;Reference speed (5x8/256=0.156V)
change  equ     d'1'    ;Change value (10mV/ms)

led     equ     h'20'   ;LED control data save area

;****************  Program Start  ***********************
        org     0               ;Reset Vector
        goto    init
        org     4               ;Interrupt Vector
        goto    int

;****************  Initial Process  *********************
init

;*** Port initialization
        bsf     status,rp0      ;Change to Bank1
        movlw   b'00000001'     ;AN0 to input mode
        movwf   trisa           ;Set TRISA register
        clrf    trisb           ;Set TRISB to uotput mode
        clrf    trisc           ;Set TRISC to output mode
        bcf     status,rp0      ;Change to Bank0

;*** A/D converter initialization
        movlw   b'10000001'     ;ADCS=10 CHS=AN0 ADON=ON
        movwf   adcon0          ;Set ADCON0 register
        bsf     status,rp0      ;Change to Bank1
        movlw   b'00001110'     ;ADFM=0 PCFG=1110
        movwf   adcon1          ;Set ADCON1 register
        bcf     status,rp0      ;Change to Bank0

;*** PWM initialization
        clrf    tmr2            ;Clear TMR2 register
        movlw   b'11111111'     ;Max duty (low speed)
        movwf   ccpr1l          ;Set CCPR1L register
        bsf     status,rp0      ;Change to Bank1
        movlw   d'255'          ;Period=1638.4usec(610Hz)
        movwf   pr2             ;Set PR2 register
        bcf     status,rp0      ;Change to Bank0
        movlw   b'00000110'     ;Pst=1:1 TMR2=ON Pre=1:16
        movwf   t2con           ;Set T2CON register
        movlw   b'00001100'     ;CCP1XY=0 CCP1M=1100(PWM)
        movwf   ccp1con         ;Set CCP1CON register

;*** Compare mode initialization
        clrf    tmr1h           ;Clear TMR1H register
        clrf    tmr1l           ;Clear TMR1L register
        movlw   h'61'           ;H'61A8'=25000
        movwf   ccpr2h          ;Set CCPR2H register
        movlw   h'a8'           ;25000*0.4usec = 10msec
        movwf   ccpr2l          ;Set CCPR2L register
        movlw   b'00000001'     ;Pre=1:1 TMR1=Int TMR1=ON
        movwf   t1con           ;Set T1CON register
        movlw   b'00001011'     ;CCP2M=1011(Compare)
        movwf   ccp2con         ;Set CCP2CON register

;*** Interruption control
        bsf     status,rp0      ;Change to Bank1
        movlw   b'00000001'     ;CCP2IE=Enable
        movwf   pie2            ;Set PIE2 register
        bcf     status,rp0      ;Change to Bank0
        movlw   b'11000000'     ;GIE=ON PEIE=ON
        movwf   intcon          ;Set INTCON register

wait
        goto    $               ;Interruption wait

;***************  Interruption Process  *****************
int
        clrf    pir2            ;Clear interruption flag
ad_check
        btfsc   adcon0,go       ;A/D convert end ?
        goto    ad_check        ;No. Again
        movfw   adresh          ;Read ADRESH register
        sublw   speed           ;Ref speed - Detect speed
        btfsc   status,c        ;Reference < Detect ?
        goto    check1          ;No. Jump to > or = check

;--- control to low speed ---
        movfw   ccpr1l          ;Read CCPR1L register
        addlw   change          ;Change value + CCPR1L
        btfss   status,c        ;Overflow ?
        movwf   ccpr1l          ;No. Write CCPR1L
        goto    led_cont        ;Jump to LED control

check1
        btfsc   status,z        ;Reference = Detect ?
        goto    led_cont        ;Yes. Jump to LED control

;--- control to fast speed ---
        movlw   change          ;Set change value
        subwf   ccpr1l,f        ;CCPR1L - Change value
        btfsc   status,c        ;Underflow ?
        goto    led_cont        ;Jump to LED control
        clrf    ccpr1l          ;Set fastest speed

;****************  LED control Process ******************
led_cont
        comf    ccpr1l,w        ;Complement CCPR1L bit
        movwf   led             ;Save LED data
        movlw   b'00010000'     ;Set compare data
        subwf   led,w           ;LED - data
        btfsc   status,c        ;Under ?
        goto    led1            ;No.
        movlw   b'00000000'     ;Set LED control data
        goto    int_end         ;Jump to interrupt end
led1    movlw   b'00100000'     ;Set compare data
        subwf   led,w           ;LED - data
        btfsc   status,c        ;Under ?
        goto    led2            ;No.
        movlw   b'00000001'     ;Set LED control data
        goto    int_end         ;Jump to interrupt end
led2    movlw   b'01000000'     ;Set compare data
        subwf   led,w           ;LED - data
        btfsc   status,c        ;Under ?
        goto    led3            ;No.
        movlw   b'00000011'     ;Set LED control data
        goto    int_end         ;Jump to interrupt end
led3    movlw   b'01100000'     ;Set compare data
        subwf   led,w           ;LED - data
        btfsc   status,c        ;Under ?
        goto    led4            ;No.
        movlw   b'00000111'     ;Set LED control data
        goto    int_end         ;Jump to interrupt end
led4    movlw   b'10000000'     ;Set compare data
        subwf   led,w           ;LED - data
        btfsc   status,c        ;Under ?
        goto    led5            ;No.
        movlw   b'00001111'     ;Set LED control data
        goto    int_end         ;Jump to interrupt end
led5    movlw   b'10100000'     ;Set compare data
        subwf   led,w           ;LED - data
        btfsc   status,c        ;Under ?
        goto    led6            ;No.
        movlw   b'00011111'     ;Set LED control data
        goto    int_end         ;Jump to interrupt end
led6    movlw   b'11000000'     ;Set compare data
        subwf   led,w           ;LED - data
        btfsc   status,c        ;Under ?
        goto    led7            ;No.
        movlw   b'00111111'     ;Set LED control data
        goto    int_end         ;Jump to interrupt end
led7    movlw   b'11100000'     ;Set compare data
        subwf   led,w           ;LED - data
        btfsc   status,c        ;Under ?
        goto    led8            ;No.
        movlw   b'01111111'     ;Set LED control data
        goto    int_end         ;Jump to interrupt end
led8    movlw   b'11111111'     ;Set LED control data

;************  END of Interruption Process **************
int_end
        movwf   portb           ;Set PROTB
        retfie

;********************************************************
;            END of DC motor speed controller
;********************************************************

        End
Tài liệu được tham khảo trên các trang web
                 http://www.olimex.com/
                 http://siscobf.webcindario.com/winpic800.htm
                 http://www.microchip.com/
                  và datasheet
                 http://www.piclist.com/
                Và một số trang web khác
                Địa chỉ liên hê k7aduchai@live.com

                                                    THANK YOU