Trích:
Thân, |
Sai ở hàm main đó bạn,
Trích:
Vong lặp while(1) của bạn đặt ở cuối chương trình nên không hiện thị nhiệy độ đúng, bạn sửa lại như sau: Code:
void main(void) |
Trích:
Thân, |
Ha ha, được rồi bác ạ . Em bị lỗi tý phần cứng, giờ ngon rồi, ha ha! Thank cả nhà rất rất là nhiều.
|
Thầy Nam cho em hỏi (hơi ngoài luồng) : em đang làm đồ án muôn học là dùng vi điều khiển (dsPIC) để PID tốc độ và vị trí động cơ, em dung động cơ DC secvo 24v/60w, và encoder 504xung/vòng; về thuật toán PID thì em được học rồi nhưng khi vào làm thực tế thì em không biết cách nào để xác định được Kpgh, Ki , Kd, ?!
Trên lí thuyết : xác định Kpgh bằng cách cho ki = 0,Kd = 0, sau đó tăng từ từ Kp cho tới khi có dao động (với chu kì là Tgh) ở ngõ ra, thì đây là Kpgh, và lúc này ta có Kp = 0.6*Kpgh còn Ki = kp / Ti , Kd = Kp*Td, với Ti = 0.5*Tgh, Td = 0.125*Tgh Thầy nói rõ cho em hơn chố này được không thầy , ý em là viết phần mềm như thế nào để tăng Kp mà ta có thể tìm được Kgh và Tgh? Em cảm ơn thầy nhiều lắm !. Trân trọng !. |
Trích:
Thân, |
Trích:
Cảm ơn tất cả !. Trân trọng !. |
Trích:
|
Một chú ý khi sử dụng ADC auto input scanning là buffer kết quả kô phải là tương ứng 1-1 với kênh ADC. Ví dụ bạn scan AN3,4,5 ở chế độ auto scanning
ADCON2bits.CSCNA = 1; ADPCFGbits.PCFG3 = 0; ADPCFGbits.PCFG4 = 0; ADPCFGbits.PCFG5 = 0; ADCSSLbits.CSSL3 = 1; ADCSSLbits.CSSL4 = 1; ADCSSLbits.CSSL5 = 1; thì kết quả ADCBUF0 sẽ là của AN3, ADCBUF1 là của AN4.... |
Help me!
Trích:
|
Trích:
#define Fpwm 40000 //Tan so PWM = 40 kHz Thành : #define Fpwm 200000 //Tan so PWM = 200 kHz Trân trọng !. |
Giúp em về dead time của dsPIC.
Thầy Nam và các anh chị trong diễn đàn cho em hỏi về dead time của dsPIC cái ah.
Ở hình 15-16 trang 360 mục Motor control PWM của tài liêu dsPIC Family Reference , họ có nói là trong lúc dead time thì mức tín hiệu ở hai chân PWMxH và PWMxL đều ở mức thấp (LOW), do mạch công suất của em (đã đặt và thi công mất rồi) nếu cả hai chân này đều ở mức thấp thì sẽ kích cả 2 nửa cầu H cùng lúc và xảy ra trùng dẫn, vậy trong dsPIC có cung cấp cho mình lựa chọn mức tín hiệu của 2 chân PWMxH và PWMxL trong lúc dead time không ah ?. cụ thể là em muốn mức tín hiệu của 2 chân PWM lúc dead time là mức cao (High). Do sự cố trên nên trước mắt , em đang điều khiển động cơ mà không set dead time (dead time = 0 ) , nó vẫn chạy được nhưng FET rất nóng (do quá trình chuyển trạng thái của 2 mức tín hiệu trên cặp chân PWM không lý tưởng) nên sau đó một lúc (hơn 3 phút) bị chết FET. Thầy và anh chị cho em hỏi câu nữa là trong thanh ghi FBORPOR ( BOR and POR Configuration Register) mục Device Configuration trang 710 của tài liêu dsPIC Family Reference có 2 bit là HPOL và LPOL, họ có giải thích nhưng em chưa hiểu rõ lắm về mục đích của 2 bit này, liệu có phải 2 bit này dùng để set trạng thái của chân PWM khi dead time không ah ? Em xin chân thành cảm ơn !. Trân trọng !. |
hỏi về tutorial của thầy Nam.thầy cho em hỏi,cái câu lệnh:
ADCValue = ADCBUF0 >>1 //chi lay 9 bit cao nhat tại sao chỉ lấy 9 bit cao nhất.em chưa hiểu rõ chỗ này.em mới đang tiếp cận ADC,mong thầy chỉ rõ cho. cho em hỏi thêm về sơ đồ mạch,cái con MAX232 có tác dụng gì a. |
Trích:
|
Trích:
Các bit HPOL và LPOL trong thanh ghi cấu hình FBORPOR cho phép chọn trạng thái tích cực của các chân PWMxH và PWMxL một cách tương ứng (nếu bạn không mô tả chúng thì mặc định là các bit này ở mức cao, tương ứng với các chân PWMxH và PWMxL là active-high). Bạn có thể thiết lập xóa các bit cấu hình này để các chân PWMxH và PWMxL là tích cực mức thấp (active-low), khi đó trong khoảng deadtime các chân PWMxH và PWMxL sẽ ở mức cao. Và kiểu logic này mới tương thích với mạch công suất của bạn. Thân, |
Múi giờ GMT. Hiện tại là 01:02 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam