1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận Văn Thiết kế và thi công dây chuyền phân loại đai ốc ứng dụng xử lý ảnh

105 69 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 105
Dung lượng 5,49 MB

Nội dung

B TR NGă GIỄOăD Că&ă ÀOăT O I H CăS ăPH M K THU T TP H CHệăMINH KHOAă I N ậ I N T B MỌNă I N T CỌNGăNGHI P ậ Y SINH ỄNăT T NGHI P NGÀNHăCỌNGăNGH K THU Tă I N T TRUY NăTHỌNG TÀI: THI T K VÀăTHIăCỌNGăDỂYăCHUY N PHỂNăLO Iă AIă C NG D NG X GVHD: THS.ăVÕă SVTH: Lụă NH CăD NG NGUY NăV NăTÀIăăăăăă 15141273 NGUY NăMINHă C 15141135 Tp H ChíăMinhă- 6/2019 TR NGă HăSPKTăTP.ăH ăCHệăMINH KHOAă I N- I NăT B ăMỌNă I NăT ăCỌNGăNGHI Păậ Y SINH C NGăHọAăXÃăH IăCH ăNGH AăVI TăNAM CăL Pă- T ăDOă- H NHăPHÚC o0o Tp HCM, ngƠy 20 tháng n m 2019 NHI MăV ă H tên sinh viên: Chuyên ngƠnh: H đƠo t o: Khóa: I TểN ăỄNăT TăNGHI P Nguy n V n TƠi Nguy n Minh c K thu t n t - truy n thông i h c quy 2015 MSSV: 15141273 MSSV: 15141135 Mư ngƠnh: 141 Mư h : L p: 15141DT2C TÀI: THI TăK ăVÀăTHIăCỌNGăDỂYăCHUY NăPHỂNăLO Iă AIă Că NGăD NGăX ăLụă NH II NHI M V Các s li u ban đ u: Mơ hình dơy chuy n phơn lo i đai c ng d ng x lỦ nh s d ng đ ng c DC 12V, khung xơy d ng b ng nhơm đ nh hình, camera s d ng lƠ lo i webcam C270, vi u n s d ng STM32F103C8T6, ph n x lỦ nh dùng máy vi tính Giao ti p gi a máy tính vƠ vi u n qua IC PL2303 d a giao ti p UART Ch ng trình x lỦ nh máy tính vi t b ng ngôn ng C++ d a b th vi n mư ngu n m OpenCV vƠ đ c t o giao di n b ng ph n m m QT Creator N i dung th c hi n: - Tìm hi u cách th c ho t đ ng c a h th ng phơn lo i dùng x lỦ nh - Tìm hi u chu n giao ti p UART, đ ng c DC, c m bi n h ng ngo i, encoder - Tìm hi u v vi u n STM32F103C8T6 - Thi t k vƠ thi cơng mơ hình dơy chuy n phơn lo i - Thi t k vƠ thi công m ch n cho h th ng - Vi t ch ng trình x lỦ nh máy tính dùng ph n m m QT Creator - Vi t ch ng trình u n cho vi u n STM32F103C8T6 - Ch y th nghi m mô hình, ch nh s a vƠ hoƠn thi n h th ng - Th c hi n vi t lu n v n báo cáo - Ti n hƠnh báo cáo đ tƠi t t nghi p III NGÀY GIAO NHI M V : 18/2/2019 IV NGÀY HOÀN THÀNH NHI M V : 20/6/2019 V H VÀ TểN CÁN B H NG D N: ThS Võ c D ng CỄNăB ăH SINH NGăD NăăăăăăăăăăăăăăăăăăăăăăăăăBM.ă I NăT ăCỌNGăNGHI Păậ Y i TR B NG H SPKT TP H CHệ MINH KHOAă I N- I N T MỌNă I N T CỌNGăNGHI P ậ Y SINH C NGăHọAăXÃăH I CH NGH AăVI T NAM C L P - T DO - H NHăPHÚC o0o Tp HCM, ngƠy 18 tháng 02 n m 2019 L CHăTRỊNHăTH C HI Nă H tên sinh viên 1: Nguy n Minh H tên sinh viên 2: Nguy n V n TƠi c ỄNăT T NGHI P L p: 15141DT2C MSSV: 15141135 L p: 15141DT2C MSSV: 15141273 Tên đ tƠi: THI T K VÀăTHIăCỌNGăDỂYăCHUY NăPHỂNăLO I AIă C Tu n/ngƠy NG D NG X Lụă NH N iădung Xácănh nă GVHD - G p GVHD đ nghe ph bi n yêu c u lƠm đ án, ti n hƠnh ch n đ tƠi, GVHD ti n hƠnh xét (18/02 - 24/02) t đ tƠi Tu n Tu n (25/02 - 03/03) Tu n (04/03 - 10/03) Tu n (11/03 - 17/03) - Vi t đ c ng tóm t t n i dung đ án - Tìm hi u t ng quan vƠ ph ng th c ho t đ ng c a Module STM32f103c8t6, Camera - Tìm hi u v cơng ngh x lỦ nh - Tìm hi u vƠ nghiên c u u n đ ng c vƠ khí nén dùng STM32f103c8t6 - Tìm hi u k t n i Camera đ thu th p hình nh Tu n - Tìm hi u vƠ nghiêm c u giao ti p Uart gi a máy (18/03 - 24/03) tính vƠ STM32f103c8t6 Tu n - - Tìm hi u cách l p trình vƠ ngôn ng vi t cho x (25/03 - 07/04) lỦ nh ii Tu n - Mô ph ng m ch, ki m tra vƠ ch nh m ch (08/04 - 14/04) - V PCB Tu n - 10 - Ti n hƠnh thi công m ch (15/04 - 28/04) - Ki m tra m ch thi công Tu n 11 (29/04 - 05/05) Tu n 12 ậ 13 (06/05 - 19/05) Tu n 14 - Ki m tra vƠ c i ti n h th ng - Vi t báo cáo nh ng n i dung đư lƠm (20/05- 26/05) - HoƠn thi n báo cáo vƠ g i cho GVHD đ xem xét góp Ủ l n cu i tr c in vƠ báo cáo Tu n 15 - N p quy n báo cáo vƠ báo cáo đ tƠi (27/05 - 02/06) - Thi t k Slide báo cáo GV H NG D N (KỦ vƠ ghi rõ h vƠ tên) iii L IăCAMă OAN tƠi nƠy lƠ nhóm t th c hi n, d a vƠo m t s đ tƠi tr c c ng nh tƠi li u tham kh o vƠ không chép t tƠi li u hay cơng trình đư có tr c TP H Chí Minh, ngƠy 20/6/2019 Ng i th c hi n đ tƠi Nguy n V n TƠi Nguy n Minh c iv L I C Mă N L i đ u tiên, nhóm th c hi n đ tƠi xin g i l i c m n chơn thƠnh đ n th y Võ c D ng - gi ng viên khoa i n- i n t , đư theo sát h tr vƠ h ng d n nhóm m t cách chi ti t trình th c hi n đ tƠi Th y h tr h t mình, gi i đáp th c m c, ch sai sót c ng nh g i Ủ nh ng ph ng án th c hi n cho kh thi vƠ d ti p c n nh t Trong trình th c hi n án t t ngi p chúng em đư nh n đ vƠ ng h c a th y, cô khoa c s giúp đ i n- i n t S h tr c a th y, cô đư góp ph n khơng nh giúp chúng em hoƠn thƠnh đ tƠi nƠy Nhóm đ tƠi c ng xin c m n b n sinh viên khoa i n- i n t đư nhi t tình giúp đ , h tr nhóm, chia s kinh nghi m Nh ng đóng góp c a b n ln đ c nhóm ti p nh n vƠ xem xét k l ng Cu i cùng, nhóm xin c m n chơn thƠnh vƠ sơu s c đ n nh ng ng bi t lƠ quỦ ph huynh - nh ng ng i thơn đ c i bên c nh h tr h t v tƠi c ng nh tinh th n su t trình h c t p c ng nh th c hi n đ tƠi nƠy Dù đư c g ng vƠ n l c nhiên v i nh ng h n ch v ki n th c vƠ kinh nghi m, đ tƠi khơng th tránh đ c nhi u thi u sót Nhóm mong nh n đ cs đóng góp, nh n xét đ c a th y, vƠ b n bè đ có th hoƠn thi n đ tƠi h n Xin chơn thƠnh c m n! Ng i th c hi n đ tƠi Nguy n V n TƠi Nguy n Minh c v M CL C L CH TRỊNH TH C HI N ÁN T T NGHI P ii L I CAM OAN iv L I C M N v LI T Kể HỊNH viii LI T Kể B NG x TịM T T xi Ch ng T NG QUAN TV N 1.1 1.2 M C TIểU VÀ GI I H N 1.3 N I DUNG NGHIểN C U 1.4 GI I H N 1.5 B C C Ch ng C S Lụ THUY T 2.1 T NG QUAN V X Lụ NH 2.1.1 Gi i thi u v nh s 2.1.2 Ph 2.1.3 Gi i thi u v th vi n OpenCV vƠ camera Logitech C270 ng pháp thu nh n nh i u ch nh đ sáng vƠ đ t 2.1.4 2.1.5 ng ph n L c nhi u nh 2.2 TỊM NG BIểN C A NH 13 2.3 GIAO TI P UART 15 2.4 VI I U KHI N STM32F103C8T6 17 2.4.1 T ng quan 17 2.4.2 C u trúc h th ng 18 2.4.3 Tìm hi u GPIO 21 2.4.4 Timer vƠ PWM 23 2.5 NG C DC 25 2.6 ENCODER 26 2.7 C M BI N H NG NGO I 29 Ch ng TệNH TOÁN VÀ THI T K H TH NG 31 3.1 THI T K S 3.2 TệNH TOÁN THI T K M CH 32 3.2.1 KH I 31 Kh i vi u n vƠ giao ti p máy tính 32 vi 3.2.2 Kh i c m bi n vƠ encoder 35 3.2.3 Kh i công su t u n t i 35 3.2.4 Kh i ngu n 39 3.2.5 M ch PCB 41 3.2.6 S đ nguyên lỦ toƠn m ch 43 3.3 Ch TệNH TOÁN THI T K MỌ HỊNH 44 3.3.1 C c u c p phôi 44 3.3.2 B ng t i 46 3.3.3 C c u phơn lo i 46 3.3.4 H p n 49 ng THI CỌNG H TH NG 50 4.1 GI I THI U 50 4.2 THI CỌNG M CH I N 50 4.2.1 Linh ki n s d ng m ch n 50 4.2.2 L p ráp vƠ ki m tra m ch n 51 4.3 THI CỌNG MỌ HỊNH 52 4.3.1 V t li u, linh ki n s d ng 52 4.3.2 Các b 4.4 c thi công 53 L P TRỊNH H TH NG 57 4.4.1 L u đ gi i thu t cho vi u n 57 4.4.2 L u đ gi i thu t cho ch 4.4.3 Ph n m m QT Creator 65 4.4.4 Trình biên d ch Keil µVision 70 ng trình x lỦ nh 63 Ch ng K T QU - NH N XÉT ậ ÁNH GIÁ 75 Ch ng K T LU N VÀ H NG PHÁT TRI N 81 6.1 K T LU N 81 6.2 H NG PHÁT TRI N 81 TÀI LI U THAM KH O 82 PH L C 83 vii LI TăKể HỊNH Hình Trang Hình Các b c x lỦ nh .5 Hình 2 Hình nh Webcam Logitech C270 Hình M t m t n l c kích th c 3x3 Hình Ví d v ph n t trung v 10 Hình Các h ng xét giá tr 15 Hình S đ c u trúc kh i c a STM32F103C8T6 18 Hình S đ ngu n xung clock c a STM32F103C8T6 20 Hình Thanh ghi c u hình ch c n ng chơn GPIO c a port 22 Hình Thanh ghi đ c giá tr ngõ vƠo 23 Hình 10 Thanh ghi ch n giá tr ngõ c a port 23 Hình 11 ng c GA25 26 Hình 12 a encoder t ng đ i ki u quay 28 Hình 13 Hình nh encoder quang 100 xung 28 Hình 14 Led phát h ng ngo i 29 Hình 15 Kí hi u đi- t quang 29 Hình 16 Kí hi u transistor quang 30 Hình 17 C m bi n h ng ngo i E18-D80NK 30 Hình S đ kh i c a h th ng .31 Hình S đ m ch vi u n 33 Hình 3 M ch chuy n USB UART PL2303 34 Hình C ng domino k t n i c m bi n vƠ encoder .35 Hình S đ k t n i c m bi n vƠ encoder 35 Hình S đ m ch công su t u n đ ng c DC dùng PWM 36 Hình S đ m ch cơng su t u n đ ng c DC b ng relay .37 Hình S đ m ch công su t u n servo 38 Hình S đ m ch công su t u n led r i 38 Hình 10 S đ m ch led báo tr ng thái t i .39 Hình 11 S đ m ch ngu n 41 Hình 12 Hình nh m ch PCB 41 Hình 13 Hình nh 3D c a m ch in m t 42 Hình 14 Hình nh 3D c a m ch in nhìn nghiêng 42 Hình 15 S đ nguyên lỦ toƠn m ch .43 Hình 16 Hình nh l n thi t k 44 Hình 17 Hình nh bánh r ng thi t k 45 Hình 18 M t tr c puly 46 Hình 19 Tr c ph c a đ a quay .47 Hình 20 Puly tr c đ a 48 Hình 21 S đ n i dơy h p n 49 viii Hình Servo g t v t không đ t yêu c u Sau đ kích th c camera ch p vƠ máy tính x lỦ, đai c khơng đ t u c u, có c nh , s b Servo g t sang m t bên, đai c đ t yêu c u s không b g t Hình Thanh g t đai c đ t yêu c u Các đai c đ t yêu c u s qua Servo vƠ t i m t g t l p đai c s b g t kh i đ a quay Nh v y hai lo i c đư đ B MỌNă I N T CỌNGăNGHI P- Y SINH sau Servo, t i đơy c phơn lo i riêng bi t 78 Hình Các hình ch p đ Sau camera ch p hình đ c l u l i th m c c l u l i m t th m c vƠ đ th i gian ch p v i đ nh d ng tên lƠ ắAnh_gi _phút_giơy.jpg” c đ t tên theo i u nƠy giúp ki m tra vƠ qu n lỦ vi c x lỦ nh n u c n thi t Sau trình lƠm vi c vƠ nghiên c u nhóm đư đ t đ c m t s k t qu sau:  Có th l p trình cho vi u n STM32F103C8T6 V i xu h ng x d ng dòng vi u n lõi ARM v i chi phí r vƠ hi u su t cao vƠ STM32F103C8T6 lƠ m t s nhóm đư có ki n th c c b n v dòng vi u n nƠy vƠ có th m r ng lo i vi u n t ng t  Có th tính tốn, thi t k vƠ v m ch n Tính tốn, thi t k vƠ v m ch lƠ nh ng yêu c u không th thi u c a m t ng i h c n t , sau th c hi n đ tƠi, nhóm đư bi t v n d ng nh ng ki n th c đư h c đ tính tốn vƠ thi t k m ch cơng su t theo yêu c u Có th v m ch n PCB phù h p v i tiêu chu n vƠ đ m b o th m m  Bi t cách l p trình ph n m m ng d ng có giao di n b ng QT Creator Qua q trình lƠm vi c nhóm đư có ki n th c c b n đ đ t o m t ng d ng có th ch y máy tính vƠ có giao di n thơn thi n v i ng i dùng giúp ng i s d ng đ c d dƠng B MỌNă I N T CỌNGăNGHI P- Y SINH 79  Có th giao ti p gi a máy tính vƠ vi u n Giao ti p gi a vi u n vƠ máy tính lƠ m t yêu c u th ng g p th c t vƠ sau th c hi n đ tƠi, nhóm đư n m rõ ki n th c c n thi t đ giao ti p gi a thi t b  Hi u vƠ có th s d ng th vi n OpenCV cho vi c x lỦ nh Th vi n OpenCV lƠ m t th vi n n n t ng vƠ ph bi n cho vi c l p trình x lỦ nh, giúp vi c x lỦ nhanh chóng vƠ d dƠng Nhóm đư tìm hi u đ c cách s d ng vƠ ki n th c c b n s d ng th vi n OpenCV giúp vi c hi u rõ nguyên lỦ vƠ ng d ng m r ng th vi n khác ho c n n t ng x lỦ nh khác H th ng sau hoƠn thƠnh ho t đ ng v n thi u sót vƠ ch a th c s n đ nh, có tình tr ng phơn lo i b sai, nguyên nhơn camera s d ng v n ch a đáp ng t t yêu c u c a h th ng nên vi c x lỦ phơn lo i ch a đ c t t nh t NgoƠi v m t th m m nhi u chi ti t ch a t t B MỌNă I N T CỌNGăNGHI P- Y SINH 80 Ch 6.1 ngă6 K T LU NăVÀăH NGăPHỄTăTRI N K T LU N Sau m t th i gian nghiên c u vƠ lƠm vi c ch m ch nhóm đư c b n đ t đ c nh ng m c tiêu đ ra:  Vi t đ c ch  Nh n d ng đ ng trình x lỦ nh máy tính có giao di n c đai c có kích th c khác  Giao ti p t máy tính t i vi u n n đ nh vƠ xác  Các b ph n c khí ho t đ ng t H 6.2 ng đ i t t NGăPHỄTăTRI N tƠi v n nhi u thi u sót v y nhóm đ xu t m t s h - ng đ phát tri n thêm: Thay th webcam b ng m t lo i camera có t c đ ch p nhanh h n giúp x lỦ hình nh t c đ cao h n - Nghiên c u thêm thu t toán hi u qu h n vi c phát hi n l i - Thi t k m ch phù h p v i môi tr ng công nghi p, tiêu chu n công nghi p - HoƠn thi n ph n m m máy tính đ có th đóng gói vƠ s d ng m t cách hoƠn ch nh - C i ti n c c u c khí đ ho t đ ng đ c hi u qu vƠ phù h p v i yêu c u c a th c t B MỌNă I N T CỌNGăNGHI P- Y SINH 81 TÀIăLI U THAM KH O [1] Nguy n ình Phú, “Giáo trình vi x lý”, Tr [2] Nguy n ng HSPKT, Tp.HCM, 2013 ình Phú, “Giáo trình: Th c hành vi u n - ARM STM32”, Tr ng HSPKT, Tp.HCM, 2014 [3] Phan V n Ph ng, Tr n Trí Tơm, “ ng d ng x lý nh c nh báo tài x ng g t”, án t t nghi p, Tr ng HSPKT Tp HCM, 2014 [4] Phan Tr ng Thu t, Nguy n V n úng, “Phân lo i s n ph m dùng camera”, t t nghi p, Tr án ng HSPKT Tp HCM, 2014 [5] Lê Qu c Nh t, Chơu Thái B o, “Nh n d ng th t màu cho cáp k t n i công nghi p dùng x lý nh”, án t t nghi p, Tr ng HSPKT Tp HCM, 2016 [6] Tr n Thanh Sang, Tr n M nh Hùng, ắThi t k h th ng nh n d ng bi n s xe”, án t t nghi p, Tr ng HSPKT Tp HCM, 2014 [7] Lê Doưn Th ng, “Thi t k thi công b u n máy ch y b n”, nghi p, Tr án t t ng HSPKT Tp HCM, 2015 [8] T.Lê, ” Dùng webcam phân lo i s n ph m”, nld.com.vn, 8/2008 [9] Nguy n ình Phú, Nguy n Tr ng Duy, “Giáo Trình: K Thu t S ”, NhƠ xu t b n H Qu c Gia Tp.HCM, 2013 [10] Tr n Thu HƠ, Tr ng Th Bích NgƠ, Nguy n Th L ng, Bùi Th Tuy t an, Phù Th Ng c Hi u, D ng Th C m Tú, ắGiáo Trình: i n t c b n”, NhƠ xu t b n H Qu c Gia Tp.HCM, 2013 B MỌNă I N T CỌNGăNGHI P- Y SINH 82 PH L C CH  NGăTRỊNHăVIă I U KHI N HƠmămain.c #include "stm32f10x.h" GPIO_InitTypeDef TIM_TimeBaseInitTypeDef NVIC_InitTypeDef USART_InitTypeDef TIM_OCInitTypeDef TIM_BDTRInitTypeDef uint32_t uint32_t uint32_t float uint16_t uint8_t uint8_t uint8_t GPIO_InitStructure; TIM_TimeBaseInitStructure; NVIC_InitStructure; UART_InitStructure; TIM_OCInitStructure; TIM_BDTRInitStructure; encoder_pulse1=0; // khai bao bien doc encoder count_temp1=0, count_test=0; count_recent1 =0, count_update1=0; motor_speed1=0; data; fail; a[5]; number; void GPIO_Configuration(void); void Delay_ms(uint16_t time); void TIM4_TIME(void); // timer4 dem thoi gian toc void TIM1_PWM(void);// pwm dung timer1 dieu khien dong co void TIM2_ENCODER_Configuration(void);//doc gia tri encoder timer2,3 void UART_Configuration (void); //cau hinh cho UART void TIM3_SERVO(void); dung int main(void) { GPIO_Configuration(); UART_Configuration(); TIM4_TIME(); TIM1_PWM(); TIM2_ENCODER_Configuration(); TIM3_SERVO(); TIM_SetCompare2(TIM3,520); while (1) { if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12)==0)//tin hieu cam bien { if(USART_GetITStatus(USART2, USART_IT_TXE)== RESET) { Delay_ms(25); USART_SendData(USART2,0x64); } if(fail==1) { Delay_ms(1600); TIM_SetCompare2(TIM3,1400); Delay_ms(300); B MỌNă I N T CỌNGăNGHI P- Y SINH 83 TIM_SetCompare2(TIM3,520); if(USART_GetITStatus(USART2,USART_IT_TXE)== RESET) USART_SendData(USART2,0x65); fail=0; } } } } void GPIO_Configuration(void) { /*Cap clock cho port*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin GPIO_Pin_1; GPIO_InitStructure.GPIO_Speed GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure); } = = = = = = = = = void Delay_ms(uint16_t time) { uint32_t time_n=time*12000; while(time_n!=0){time_n ;} } /*C u hình giao ti p UART*/ void UART_Configuration (void) B MỌNă I N T CỌNGăNGHI P- Y SINH 84 { /*C p clock cho USART port A*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); /* C u hình chân TX RX*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; // chân TX c a UART2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //chân RX c a UART2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); /*Cau hinh USART*/ UART_InitStructure.USART_BaudRate = 9600; UART_InitStructure.USART_WordLength = USART_WordLength_8b; UART_InitStructure.USART_StopBits = USART_StopBits_1; UART_InitStructure.USART_Parity = USART_Parity_No; UART_InitStructure.USART_HardwareFlowControl= USART_HardwareFlowControl_None; UART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART2, &UART_InitStructure); /* C u hình ng t UART */ NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); USART_ClearFlag(USART2, USART_IT_RXNE); USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); /* Cho phep UART hoat dong */ USART_Cmd(USART2, ENABLE); } /*C u hình TIMER4 đ m th i gian*/ void TIM4_TIME(void) { RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM4 , ENABLE); /*c u hình TIM4*/ TIM_TimeBaseInitStructure.TIM_Period = 99; // delay 10ms TIM_TimeBaseInitStructure.TIM_Prescaler = (7200 - 1);//1khz TIM_TimeBaseInitStructure.TIM_ClockDivision = 0x0; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStructure); /* C u hình ng t UART */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); TIM_ClearFlag(TIM4, TIM_FLAG_Update); B MỌNă I N T CỌNGăNGHI P- Y SINH 85 TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); TIM_Cmd(TIM4, ENABLE); } /*C u hình PWM v i TIMER1 u n đ ng c */ void TIM1_PWM(void) { /*C p clock cho TIMER1 port A*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8| GPIO_Pin_9;// motor GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /*c u hình TIM1*/ TIM_TimeBaseInitStructure.TIM_Prescaler =7; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period = 899; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructure); /*C u hình PWM1*/ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; /*PWM Channel 1*/ TIM_OC1Init(TIM1, &TIM_OCInitStructure); TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1); TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable); /*PWM Channel 2*/ TIM_OC2Init(TIM1, &TIM_OCInitStructure); TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1); TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable); /*cho phép PWM_TIM1 ho t đ ng*/ TIM_Cmd(TIM1, ENABLE); TIM_CtrlPWMOutputs(TIM1, ENABLE); } /*C u hình TIMER2 đ m xung encoder*/ void TIM2_ENCODER_Configuration(void) { TIM_ICInitTypeDef TIM_ICInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); B MỌNă I N T CỌNGăNGHI P- Y SINH 86 /* c u hình TIM2*/ TIM_TimeBaseInitStructure.TIM_Prescaler=0; TIM_TimeBaseInitStructure.TIM_Period=0xFFFF; TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure); TIM_ICInitStructure.TIM_Channel=TIM_Channel_1 | TIM_Channel_2; TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Falling; TIM_ICInitStructure.TIM_ICFilter=15; TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI; TIM_ICInit(TIM2, &TIM_ICInitStructure); TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12, TIM_ICPolarity_Falling, TIM_ICPolarity_Falling); TIM_SetCounter(TIM2, 0); TIM_Cmd(TIM2, ENABLE); TIM_ClearFlag(TIM2, TIM_FLAG_Update); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } /*C u hình TIMER3 u n Servo*/ void TIM3_SERVO(void) { /*C p xung clock cho TIMER3 port A*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; // servo GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /*Tao xung tan so 50hz dieu khien servo*/ TIM_TimeBaseInitStructure.TIM_Prescaler =99; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period = 14399; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure); /*C u hình PWM*/ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); /*PWM Channel 2*/ TIM_OC2Init(TIM3, &TIM_OCInitStructure); B MỌNă I N T CỌNGăNGHI P- Y SINH 87 TIM_SelectOCxM(TIM3, TIM_Channel_2, TIM_OCMode_PWM1); TIM_CCxCmd(TIM3, TIM_Channel_2, TIM_CCx_Enable); TIM_Cmd(TIM3, ENABLE); TIM_CtrlPWMOutputs(TIM3, ENABLE); }  Ch ng trình ng t /* Hàm ng t UART*/ void USART2_IRQHandler(void) { uint16_t data; if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) { data = USART_ReceiveData(USART2); if(data==0x61) // Start he thong chay- ki tu 'a' { GPIO_SetBits(GPIOA,GPIO_Pin_12); GPIO_SetBits(GPIOA,GPIO_Pin_11); TIM_SetCompare1(TIM1,170); TIM_SetCompare2(TIM1,150); } else if(data==0x62) // Stop he thong- ki tu 'b' { GPIO_ResetBits(GPIOA,GPIO_Pin_12); GPIO_ResetBits(GPIOA,GPIO_Pin_11); TIM_SetCompare1(TIM1,0); TIM_SetCompare2(TIM1,0); } else if(data==0x63)// co vat loi- ki tu 'c' { fail=1; } } } B MỌNă I N T CỌNGăNGHI P- Y SINH 88 /* Hàm ng t TIMER4*/ void TIM4_IRQHandler(void) { if (TIM_GetFlagStatus(TIM4, TIM_FLAG_Update)==SET) { TIM_ClearFlag(TIM4, TIM_FLAG_Update); encoder_pulse1 = 500000000 + TIM_GetCounter(TIM2) + 65536*count_temp1; count_recent1 = encoder_pulse1; if (count_recent1 > count_update1) {motor_speed1 = (float)(count_recent1 – count_update1)*6000/100;} else if (count_recent1 < count_update1) {motor_speed1 = 0- (float)(count_update1 – count_recent1)*6000/100;} else {motor_speed1 = 0;} count_update1 = count_recent1; } } /* Hàm ng t TIMER2*/ void TIM2_IRQHandler(void) { uint16_t timer_temp1; if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update)==SET) { TIM_ClearFlag(TIM2, TIM_FLAG_Update); timer_temp1 = TIM2->CNT; if (timer_temp1 == 65535) count_temp1 ; if (timer_temp1 == 0) count_temp1++; } } B MỌNă I N T CỌNGăNGHI P- Y SINH 89 CH  NGăTRỊNHăX Lụă NH HƠmănh n d li u void MainWindow::readData() { const QByteArray data = m_serial->readAll(); if (data.size() == 0) { qDebug() dataGet->insertPlainText(QString(data.at(i))); } } const char* t = strstr(data, "d"); if(t != nullptr) { m_ui-> dataSend-> insertPlainText("ok"); flag=true; } const char* r = strstr(data, "e"); if(r != nullptr) fail++; } }  Ch ngătrìnhăchính void MainWindow::on_StartBtn_clicked() { using namespace cv; using namespace std; if(video.isOpened()) { m_ui->StartBtn->setText("Start"); video.release(); writeData("b"); return; } if(!video.open(1)) { QMessageBox::critical(this,"Camera L i"); return; } B MỌNă I N T CỌNGăNGHI P- Y SINH 90 m_ui->StartBtn->setText("Stop"); writeData("a"); Mat frame,img; Mat canny_output; while(video.isOpened()) { video >> frame; if(!frame.empty()) { cvtColor(frame,frame,CV_RGB2GRAY); QImage qimg(frame.data,frame.cols,frame.rows, QImage::Format_Indexed8); pixmap.setPixmap( QPixmap::fromImage(qimg)); m_ui->IMG_1->fitInView(&pixmap, Qt::KeepAspectRatio); Mat threshold_output; vector contours; vector hierarchy; if(flag==1) { QTime ct = QTime::currentTime(); QString fileName=("G:/DATotNgiep/capture/Anh_"+ ct.toString("hh-mm-ss")+".jpg"); GaussianBlur(frame,img,Size(3, 3), 2); //loc anh threshold(img,threshold_output, m_SettingSystem.Thresh,255,THRESH_BINARY); findContours( threshold_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0,0)); // Draw contours vector contours_poly(contours.size()); vectorcenter(contours.size()); vectorradius(contours.size()); for(unsigned int i=0;i 1000) && (contourArea(contours[i]) < 8000)) { drawContours(drawing, contours_poly, int(i), Scalar(255,0,255), 3, 8, vector(), 0, Point()); circle(drawing, center[i], int(radius[i]), Scalar(255,255,255), 2, 8, 0); if (max < radius[i]) max = radius[i]; B MỌNă I N T CỌNGăNGHI P- Y SINH 91 } } if(max45) { writeData("c"); m_ui->lbl_Capture-> setText("FAIL"); } else if(max>63) { writeData("d"); m_ui->lbl_Capture-> setText("PASS"); } QImage imdisplay(drawing.data, drawing.cols, drawing.rows, QImage::Format_RGB888); m_ui->lEd_NumberFalse->setText(QString("%1").arg(fail)); pixmap2.setPixmap( QPixmap::fromImage(imdisplay)); m_ui->IMG_2->fitInView(&pixmap2, Qt::KeepAspectRatio); flag=false; } void MainWindow::on_Thresh_slider_valueChanged(int value) { m_ui-> lbl_Thresh_Value-> setText(QString("%1").arg(value)); m_SettingSystem.Thresh=value; } B MỌNă I N T CỌNGăNGHI P- Y SINH 92 ... LụăTHUY T Gi i thi u c s lỦ thuy t g m lỦ thuy t v x lỦ nh, linh ki n vƠ thi t b s d ng đ thi t k h th ng vƠ trình bƠy chu n truy n, giao th c Ch ngă3:ăTệNHăTOỄNăVÀ THI T K H TH NG Thi t k s đ kh... [8] 1.2 M CăTIểUăVÀăGI I H N Thi t k vƠ thi cơng m t dơy chuy n có th phơn lo i đai c ng d ng x lỦ nh dùng th vi n mư ngu n m OpenCV vi t ngơn ng C++ Dơy chuy n có th phơn lo i đai c b sai kích... m bi n h ng ngo i, encoder - Tìm hi u v vi u n STM32F103C8T6 - Thi t k vƠ thi cơng mơ hình dơy chuy n phơn lo i - Thi t k vƠ thi công m ch n cho h th ng - Vi t ch ng trình x lỦ nh máy tính dùng

Ngày đăng: 16/11/2019, 15:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN