![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| Điều khiển Lý thuyết điều khiển và ứng dụng lý thuyết điều khiển trong những trường hợp thực tế |
![]() |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#1 |
|
PIC Bang chủ
|
Bộ điều khiển fuzzy
Các bạn có thể download chương trình fuzzytech phiên bản 5.52f tại đây và bản crack đi kèm.
Chúc vui.
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
|
|
|
|
|
#2 |
|
Đệ tử 6 túi
Tham gia ngày: Jun 2005
Bài gửi: 141
: |
Không có password thì làm sao cài được chương trình này hả Admin?
|
|
|
|
|
|
#3 |
|
PIC Bang chủ
|
Đó là ý tôi muốn các bạn ít ra cũng phải lên tham quan thử cái trang FuzzyTech xem nó ra làm sao, chứ tôi không muốn các bạn cứ thế là down về xài mà không quan tâm gì đến nó cả.
Trong FuzzyTech nó có hướng dẫn chi tiết làm sao để cài đặt. pw: purple Sau đó các bạn dùng một trong 2 pw này cho phần tiếp theo. pw: 00000 pw: 123456 Chúc vui.
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? thay đổi nội dung bởi: falleaf, 16-11-2005 lúc 08:08 PM. |
|
|
|
|
|
#4 |
|
Nhập môn đệ tử
Tham gia ngày: Nov 2005
Bài gửi: 6
: |
Đây là các bước cài đặt phần mềm fuzzyTech 5.52 từ nguồn của anh admin.Tôi đã cài đặt thành công. Các bạn cứ làm y như thế này là dùng được.
http://picvietnam.com/download/Fuzzy...YEN.201105.pdf |
|
|
|
|
|
#5 |
|
Nhập môn đệ tử
Tham gia ngày: Nov 2005
Bài gửi: 6
: |
Fuzzy Logic Controller in Matlab7.0
Bài viết sau mô tả quá trình thiết kế và mô phỏng một bộ điều khiển mờ trên Matlab.
Bộ điều khiển mờ ở đây gồm 2 input và 1 output với 3 hàm thuộc cho mỗi input và 5 hàm thuộc cho output. Bộ luật gồm có 5 luật. http://picvietnam.com/download/Fuzzy...YEN.201105.pdf
__________________
Người vá trời lấp bể Kẻ đắp lũy xây thành Ta chỉ là chiếc lá Phận của mình là xanh |
|
|
|
|
|
#6 |
|
Nhập môn đệ tử
Tham gia ngày: May 2006
Bài gửi: 1
: |
Em dang quan tam den viec dua Fuzzy controller len Vi dieu khien ho PIC chang han. Bac nao, co phan mem hay co tai lieu noi ve van de nay, xin vui long post len nhe.
Cam on rat nhieu ncngon |
|
|
|
|
|
#7 |
|
PIC Bang chủ
|
Bạn xem bài toán mẫu viết bằng matlab, từ matlab chuyển sang C hoàn toàn không khác gì nhau. Và chuyển qua vi điều khiển thực chất chỉ là thêm việc xuất các tín hiệu ra port, hoặc đọc các giá trị input từ các port vào thôi.
Chính vì vậy, vấn đề chính là bạn cần tìm hiểu bộ điều khiển fuzzy thật rõ ràng, phần lập trình dùng PIC hoàn toàn không phải vấn đề. Chỉ cần bạn giải một cách rõ ràng bài toán fuzzy trên matlab, mọi thành viên có kinh nghiệm của picvietnam đều có thể giúp bạn lập trình trên PIC một cách rất nhanh chóng. Đừng vội quan tâm tới vi điều khiển ở giai đoạn này, hãy quan tâm đến bài toán fuzzy một cách nghiêm túc. Chúc vui.
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
|
|
|
|
|
#8 |
|
PIC Bang chủ
|
Thực hành một bộ điều khiển fuzzy với PIC
Hãy chuẩn bị những linh kiện sau để bắt đầu
Part Description PIC18C452 PIC18C452-JW 7805 7805 in TO-220 Package MAX232 Maxim MAX232 IRF510 IRF510 N-Channel MOSFET in TO-220 Package OPB804 OPB804 "Slotted Opto Isolator Switch" or equivalent modified as described in the text LED 8x LED, Individual or use 10x LED "Bargraph" Display 4 MHz 4 MHz Ceramic Resonator with Internal Capacitors 10K 2x 10K, 1/4 Watt Resistors 220 220 Ohm, 1/4 Watt Resistor 10K Pot 10K Single Turn Potentiometer 0.1 uF 2x 0.1 uF, 16 Volt Tantalum Capacitors 1.0 uF 5x 1.0 uF, 16 Volt Tantalum Capacitors Miscellaneous Prototyping Card, Wiring, +12 Volt 500 mA Power Supply, 8x Screw Terminal
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
|
|
|
|
|
#9 |
|
PIC Bang chủ
|
Sơ đồ nguyên lý
![]() ![]()
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
|
|
|
|
|
#10 |
|
PIC Bang chủ
|
Source code
Phần khai báo
Code:
title "fuzzy2 - PIC18C452 Fuzzy Logic Fan Controller"
#define nDebug
;
; This application uses the "fuzzyTECH" Heater/Motor control Interface
; to implement a Fuzzy Logic Fan Controller on the PIC18C452. To simplify the
; software, the built in functions of the PICmicro to simplify the code development
; tasks. This application runs in two modes, a basic POT Interface and a fuzzy logic
; control interface.
;
; The Difference between Fuzzy1 and Fuzzy2 is that Fuzzy2 Accepts Deltas to the PWM.
; This was done to see if the Oscillations can be eliminated.
;
; Hardware Notes:
; PIC18C452 running at 4 MHz with "_MCLR" pulled up
; Clock is running with the 4x PLL Enabled
; LED Displays:
#define Polling PORTB, 7
#define Sending PORTB, 6
#define Receive PORTB, 5
; RA2 - Pot Input Pin
#define PotIn PORTA, 2
; RC2 - PWM Output Pin
#define PWMOut PORTC, 2
;
;
LIST R=DEC, F=INHX32
INCLUDE "p18c452.inc"
; Register Usage
CBLOCK 0x000
TMR1Save:2 ; TMR1 Count Save Value
DDSave, DDOut:4 ; DecDisplay Variables
Dlay:3 ; Delay 1 Second
SetSpeed, DeltaSpeed, LEDTemp ; Output Values
RXData:16 ; Want to Be able to Delete DPs
NewPWM, TempPWM ; New PWM Value
ENDC
; Macros
TXOut Macro ; Transmit the Data in "w"
ifdef Debug
nop
nop
else
btfss TXSTA, TRMT ; Wait for the Previous Byte to be Sent
bra $ - (2 * 1)
endif
movwf TXREG ; Output the Digit
btg Sending ; Indicate Data Being Sent
endm
PAGE
__CONFIG _CONFIG0, _CP_OFF_0
__CONFIG _CONFIG1, _OSCS_OFF_1 & _HSPLL_OSC_1
__CONFIG _CONFIG2, _PWRT_ON_2 & _BOR_ON_2 & _BORV_42_2
__CONFIG _CONFIG3, _WDT_OFF_3
__CONFIG _CONFIG5, _CCP2MX_OFF_5
__CONFIG _CONFIG6, _STVR_OFF_6
; Note that the WatchDog Timer is OFF
; Mainline of "Fuzzy1"
org 0 ; Reset Vector
variable i = 0 ; Clear the Start of Memory
ifdef Delete
while (i < 0x0100)
nop
i = i + 1
endw
while (i < 0x0200)
nop
i = i + 1
endw
while (i < 0x0300)
nop
i = i + 1
endw
while (i < 0x0400)
nop
i = i + 1
endw
while (i < 0x0500)
nop
i = i + 1
endw
endif
setf PORTB
clrf TRISB ; Use PORTB for Output
movlw 0x002 ; Set ADC to Fosc/8, ADFM "Left" Justified
movwf ADCON1 ; AN2 is the ADC Select
movlw 0x051
movwf ADCON0
movlw 200 ; Setup the 20 KHz PWM
movwf PR2
movlw 0x004 ; On TMR2
movwf T2CON
movlw 100 ; Start with a 50% Duty Cycle
movwf CCPR1L
bcf TRISC, 2
movlw 0x00F ; Enable PWM Mode
movwf CCP1CON
movlw 0x020 ; Enable the RS-232 Port
movwf TXSTA
movlw 0x090
movwf RCSTA
movlw 25 ; Run the Data Output at 9600 bps
movwf SPBRG ; - Note this is 2400 bps Except for the
movlw 0x002 ; Setup TMR1
movwf T1CON
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
|
|
|
|
|
#11 |
|
PIC Bang chủ
|
Source code (tiếp theo và hết)
Phần vòng lặp chính
Code:
Loop
ifdef Debug
movlw 1
else
movlw 4 ; Wait a Quarter Second
endif
movwf Dlay + 2
clrf TMR1H ; Setup the Timer
clrf TMR1L
bsf T1CON, TMR1ON ; Enable the Counter
SecondLoopStart
ifdef Debug
movlw 1
else
movlw HIGH (50000 + 255) ; Inner Loop is 1/16 Second
endif
movwf Dlay + 1
ifdef Debug
movlw 1
else
movlw LOW (50000 + 255)
endif
SecondLoop
addlw 0x0FF
btfsc STATUS, Z
decfsz Dlay + 1, f
bra SecondLoop
decfsz Dlay + 2, f
bra SecondLoopStart
bcf T1CON, TMR1ON ; Stop the Timer
bsf ADCON0, GO ; Start the ADC Operation
bsf Polling ; Not Polling Yet
bcf STATUS, C
rrcf TMR1H, w ; Read the Timer with the Range 0-800
movwf TMR1Save + 1
rrcf TMR1L, w
movwf TMR1Save ; In Range 0 to 400
bcf STATUS, C
rrcf TMR1Save + 1, f
rrcf TMR1Save, f ; In Range 0 to 200
bcf STATUS, C
rrcf TMR1Save + 1, f
rrcf TMR1Save, f ; In Range 0 to 100
movlw 100 ; Go to a Maximum of 100
subwf TMR1Save, w
btfsc STATUS, C
subwf TMR1Save, f
btfsc ADCON0, GO ; Wait for ADC to Complete
bra $ - (2 * 1)
movf ADRESH, w ; Get the MSB 8 Bits of the ADC Operation
mullw 100 ; Get the Fraction of 100
movf PRODH, w
movwf SetSpeed ; Get the Set Speed to 100
movf TMR1Save, w ; Get the "DeltaSpeed"
subwf SetSpeed, w
movwf DeltaSpeed
btfsc DeltaSpeed, 7 ; Output the Delta Speed on LEDs (RB0-RB4)
bra LEDNegative
movlw 3 ; Is the Difference Between 0 and 2?
subwf DeltaSpeed, w
bc LEDPosGreat
bcf PORTB, 2 ; Yes, Nuts On
bra RetryLoop
LEDPosGreat
movlw 6 ; Is the Difference Between 3 and 5
subwf DeltaSpeed, w
bc LEDPosOut
bcf PORTB, 1 ; Yes, Slight Difference
bra RetryLoop
LEDPosOut ; Difference Greater than 5
bcf PORTB, 0
bra RetryLoop
LEDNegative ; What is the Negative Value
movf DeltaSpeed, w
sublw 0
movwf LEDTemp
movlw 3 ; Between 0 and -2?
subwf LEDTemp, w
bc LEDNegGreat
bcf PORTB, 2 ; Yes, Nuts On
bra RetryLoop
LEDNegGreat
movlw 6 ; Difference Between -3 and -6?
subwf LEDTemp, w
bc LEDNegOut
bcf PORTB, 3
bra RetryLoop
LEDNegOut ; Else, Out there
bcf PORTB, 4
RetryLoop ; Keep Retrying Here
clrf FSR1H ; Use FSR1 for the Received Data
movlw LOW RXData
movwf FSR1L
movf RCREG, w ; Make Sure Receive is Clear
bcf PIR1, RCIF ; As well As Interrupt Requests
movlw 0x01F ; Turn Off Delta Speed LEDs
iorwf PORTB, w
movf DeltaSpeed, w
movwf DDSave ; Send to the PC
call DecDisplay ; Send as a Decimal String
movlw 0x01A ; Output Ctrl-Z for End of the Record
call CharDisplay
nop
CharWaitLoop
ifdef Debug ; Wait for PC Reply
movlw 1
else
movlw 16 ; Wait a Full Second
endif
movwf Dlay + 2
ThirdLoopStart
ifdef Debug
movlw 1
else
movlw HIGH (35714 + 255) ; Inner Loop is 1/16 Second
endif
movwf Dlay + 1
ifdef Debug
movlw 1
else
movlw LOW (35714 + 255)
endif
ThirdLoop
btfsc PIR1, RCIF ; Has a Character Been Received?
bra GetChar
addlw 0x0FF
btfsc STATUS, Z
decfsz Dlay + 1, f
bra ThirdLoop
bcf Polling ; Turn on the "Polling" LED
decfsz Dlay + 2, f
bra ThirdLoopStart
bra RetryLoop ; Nothing Received, Try Sending Again
GetChar ; Get the Character and Compare to a Ctrl-Z
movf RCREG, w ; Read Character and Reset the Interrupt Request Flag
bcf PIR1, RCIF
movwf POSTINC1 ; Save the Character
btg Receive ; Toggle the Receive LED
xorlw 0x01A ; End Character?
bnz CharWaitLoop ; Yes, Have the New PWM Value
bsf Receive ; Turn Off the LEDs
bsf Polling
bsf Sending
clrf NewPWM ; Clear the New PWM Value
movlw RXData ; Read the New PWM Value/Past +/-
movwf FSR1L
movf INDF1, w ; Do we Have a Valid Decimal or +/-
xorlw '+'
bz GetCharSkip ; Yes, Skip Over
xorlw '-' ^ '+'
bnz GetCharLoop
GetCharSkip ; Have a + or - Character
movf POSTINC1, w ; Increment FSR
GetCharLoop ; Loop Here Until \0 Char Encountered
movf NewPWM, w ; Multiply the "NewPWM" Variable by 10 to be ready for the Next Value
mullw 10
movf POSTINC1, w ; Add the Next Variable to it
bz HaveChar ; At the End of the String
xorlw "." ; Have Decimal Point (with Everything to the Right)
bz HaveChar
xorlw "."
andlw 0x00F
addwf PRODL, w
movwf NewPWM
bra GetCharLoop
HaveChar ; "NewPWM" has the New PWM Value
movlw '-'
xorwf RXData, w ; Is the First Character + or -?
bnz MakePosPWM ; Plus, Keep it the Way it is
MakeNegPWM ; Negative PWM, do the Subtraction
movf NewPWM, w ; Negate the Value in NewPWM
subwf CCPR1L, w
btfss STATUS, C
movlw 0
movwf CCPR1L ; Update the PWM Value
bra Loop
MakePosPWM ; Add the Delta PWM to Get the New Value
movf NewPWM, w
addwf CCPR1L, w
movwf TempPWM
movlw 200 ; Go to a Maximum of 200
subwf TempPWM, w
btfsc STATUS, C
subwf TempPWM, f
movf TempPWM, w ; Get the New PWM Value
movwf CCPR1L
bra Loop ; Finished with the Delta PWM Value, Loop Again
DecDisplay ; Send the 8 Bit Value in "DDSave" as a Decimal Number
; Out Via RS-232
movlw '0' ; Set up the Data to Output
movwf DDOut
movwf DDOut + 1
movwf DDOut + 2
movlw '+' ; Positive or Negative
movwf DDOut + 3
btfss DDSave, 7 ; 2's Complement Negative Number?
bra DD_Hund ; No, Calculate the Value
movf DDSave, w ; Invert the Value to Convert
sublw 0
movwf DDSave
movlw '-'
movwf DDOut + 3
DD_Hund ; Find Out what each Digit Values are
movlw LOW 100
subwf DDSave, w
bnc DD_Ten ; Can't Take Away any More Tens
movwf DDSave
incf DDOut + 2, f
bra DD_Hund
DD_Ten ; Find Out what each Digit Values are
movlw 10
subwf DDSave, w
bnc DD_One ; Can't Take Away any More Ones
movwf DDSave
incf DDOut + 1, f
bra DD_Ten
DD_One ; Find Out what each Digit Values are
movlw 1
subwf DDSave, w
bnc DD_Display ; Display the Value
movwf DDSave
incf DDOut, f
bra DD_One
DD_Display
clrf FSR0H ; Point to Data to Display
movlw LOW DDOut + 3
movwf FSR0L
DD_DNumber
movf POSTDEC0, w ; Display the Digit
TXOut
movlw LOW (DDOut - 1) ; Past the End?
subwf FSR0L, w
bnz DD_DNumber ; No, Loop Around Again
DD_NUL ; Output the NUL of the String
movlw 0x000
TXOut
return
CharDisplay ; Output the Character in "WREG"
TXOut
return
end
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
|
|
|
|
|
#12 |
|
Nhập môn đệ tử
Tham gia ngày: Jul 2006
Bài gửi: 8
: |
Cho em hỏi là bộ FuzzyTECH này có phiên bản fuzzyTECH MCU Pack for Embedded Control ko ạ, và nó có hỗ trợ dsPIC ko?
Em xin cảm ơn |
|
|
|
|
|
#13 |
|
Super Moderator
Tham gia ngày: Jun 2005
Bài gửi: 385
: |
Theo thông tin của fuzzyTech thì họ vẫn chưa hỗ trợ generate code cho dsPIC:
http://www.fuzzytech.com/e/fteo.html#mcu Tuy nhiên cái chính vẫn là tạo được code C, từ code C bạn có thể chỉnh các cài đặt để nó hoạt động với dsPIC. (tôi không làm việc với dsPIC nên không rõ cần thiết lập như thế nào) Nhưng các bộ điều khiển fuzzy không cần đến mức độ tính toán mạnh như của dsPIC đâu, bạn chọn MCU là PIC16 chắc cũng đủ để làm fuzzy controller rồi.
__________________
Cách tìm link DOI để yêu cầu bài báo ở Sciencedirect: http://www.picvietnam.com/forum/show...&postcount=682 Cách tìm link DOI để yêu cầu bài báo ở IEEE: http://www.picvietnam.com/forum/show...&postcount=760 Cuộc thi thiết kế PIC (tạm ngưng): http://www.picvietnam.com/contest |
|
|
|
|
|
#14 |
|
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 1
: |
Bạn nào có hình ảnh của điều khiển Fuzzy controller thi gửi chô mình với. Mình muốn được hình dung rõ hơn về ứng dụng của điều khiển FZ trong thực tế.Cảm ơn nhieu......
|
|
|
|
|
|
#15 |
|
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 2
: |
có hướng dẫn sử dụng fuzzytech không vậy,làm ơn upload lên cho mình nha,mình cần gấp lắm,hoặc gời qua mail cũng được:
hgnam2005us@yahoo.com.vn thank!!! |
|
|
|
![]() |
|
|
Similar Threads
|
||||
| Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
| Fuzzy Logic trên Matlab | ami | Matlab-Simulink & Labview & 20-Sim | 14 | 31-10-2009 11:31 PM |
| Điều chỉnh tham số Fuzzy Controller online | Vững Bước | Matlab-Simulink & Labview & 20-Sim | 2 | 30-05-2006 09:35 PM |