Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 102 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
102
Dung lượng
2,61 MB
Nội dung
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠ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 ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG Đề Tài: THIẾTKẾ VÀ THICÔNGMẠCHĐIỀUKHIỂN TỐC ĐỘ ĐỘNGCƠ DC SỬDỤNGTHUẬTTOÁNPID GVHD: TS Nguyễn Minh Tâm SVTH: Thiều Đoàn Quang Huy MSSV: 16341011 Tp Hồ Chí Minh – 01/2018 i TRƯỜNG ĐH SƯ PHẠM KỸ THUẬTCỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TP HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH Tp HCM, ngày 15 tháng 01 năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Thiều Đoàn Quang Huy MSSV: 16341011 Chuyên ngành: CNKT Điện Tử Truyền Thông Mã ngành: 41 Hệ đào tạo: Đại học quy Mã hệ: Khóa: 2016 Lớp: 163410A I TÊN ĐỀ TÀI: THIẾTKẾ VÀ THICÔNGMẠCHĐIỀUKHIỂN TỐC ĐỘ ĐỘNGCƠ DC SỬDỤNGTHUẬTTOÁNPID II NHIỆM VỤ Các số liệu ban đầu: Nhóm tiến hành việc khảo sát loại vi điều khiển, lựa chọn động DC, khảo sát linh kiện liên quan để tiến hành thiếtkếmạch Tiến hành tìm hiểu thu thập số liệu từ trang mạng sách lập trình vi điềukhiển ARM Tham khảo mơ hình điềukhiểnđộng để xây dựng lên mơ hình điềukhiển Tìm hiểu mơ hình điềukhiểnđộng để lựa chọn tham khảo cách thức hoạt động phù hợp cho mơ hình Nội dung thực hiện: NỘI DUNG 1: Nghiên cứu tài liệu điềukhiểnPID DRIVER để điềukhiển tốc độ động DC NỘI DUNG 2: Dựa liệu thu thập được, tiến hành lựa chọn giải pháp thiếtkếthicơng mơ hình phần mạchđiềukhiển NỘI DUNG 3: Thiếtkếthicông hệ thống điềukhiểnđộng DC NỘI DUNG 4: Thiếtkế lưu đồ giải thuật viết chương trình điềukhiển cho Vi điều khiển, thiếtkế giao diện hình để điềukhiển NỘI DUNG 5: Thử nghiệm điều chỉnh phần cứng chương trình để mơ hình tối ưu Đánh giá thơng số mơ hình so với thông số thực tế ii NỘI DUNG 6: Viết báo cáo thực III NGÀY GIAO NHIỆM VỤ: 25/09/2017 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 15/01/2018 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: TS.Nguyễn Minh Tâm CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP-Y SINH iii TRƯỜNG ĐH SƯ PHẠM KỸ THUẬTCỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TP HỒ CHÍ MINH ĐỘC LẬP - TỰ DO - HẠNH PHÚC KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH Tp HCM, ngày 15 tháng 01 năm 2018 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên : THIỀU ĐOÀN QUANG HUY Lớp: 163410A MSSV: 16341011 Tên đề tài: THIẾTKẾ VÀ THICÔNGMẠCHĐIỀUKHIỂN TỐC ĐỘ ĐỘNGCƠ DC SỬDỤNGTHUẬTTOÁNPID Xác nhận GVHD Tuần/ngày Nội dung 25/09/2017 Tìm tài liệu điềukhiểnPID DRIVER để điềukhiển 01/10/2017 tốc độ động DC Dựa liệu thu thập được, tiến hành lựa chọn 01/10/2017 15/10/2017 15/10/2017 giải pháp thiếtkếthicơng mơ hình phần mạchđiềukhiểnThiếtkế hệ thống điềukhiểnđộng DC 29/10/2017 29/10/2017 Thiếtkế lưu đồ giải thuật kiểm tra độ ổn định 10/11/2017 mạchthicông 10/11/2017 Viết chương trình điềukhiển cho vi điềukhiển 28/11/2017 28/11/2017 Thiếtkế giao diện hiển thị để điềukhiểnđộng DC 15/12/2017 15/12/2017 02/01/2018 02/01/2018 15/01/2018 Thử nghiệm điều chỉnh phần cứng chương trình để mơ hình tối ưu Đánh giá thơng số mơ hình Viết báo cáo thực GV HƯỚNG DẪN (Ký ghi rõ họ tên) iv LỜI CAM ĐOAN Nhóm xin cam đoan đề tài nhóm tự thực dựa vào số tài liệu đề tài trước Các số liệu đề tài nhóm thu thập từ tài liệu hướng dẫn tham khảo số đề tài liên quan từ nhóm nghiên cứu phát triển để thực đề tài Không chép từ tài liệu hay cơng trình có trước TP Hồ Chí Minh, ngày 15 tháng 01 năm 2018 Sinh viên thực THIỀU ĐOÀN QUANG HUY v LỜI CẢM ƠN Sau trình học tập trường với kiến thức Thầy Cô giảng dạy, kinh nghiệm học hỏi, trình thực đồ án nhóm Thầy Cơ tạo điều kiện tốt để thực đồ án Nhóm xin gửi lời cảm ơn tới tất Thầy, Cô Trường Đại Học Sư Phạm Kỹ Thuật TPHCM nói chung, đặc biệt giảng viên Khoa Điện - Điện Tử nói riêng giảng dạy cung cấp cho Nhóm có kiến thức quý báu, tạo tiền đề quan cho Nhóm thực đồ án Nhóm xin gửi lời cảm ơn chân thành sâu sắc tới Thầy Nguyễn Minh Tâm trực tiếp hướng dẫn tận tình cho nhóm suốt trình làm đồ án, cảm ơn Thầy giành thời gian quý báu để hướng dẫn cho nhóm, hỗ trợ thiết bị đưa hướng giải cho nhóm gặp khó khăn Bên cạnh nhóm xin cảm ơn tập thể lớp 163410A đồng hành với nhóm suốt trình học tập thực đồ án Các bạn giúp đỡ, chia sẻ kinh nghiệm tạo thêm động lực để nhóm hồn thành đồ án Nhóm xin chân thành cảm ơn bố mẹ, người thân bạn bè Những người giúp đỡ mặt tinh thần vật chất nhiều để hồn thành tốt đồ án Xin chân thành cảm ơn người Trong trình nghiên cứu thực đồ án, thời gian trình độ có giới hạn nên khơng tránh khỏi thiếu sót Vì vậy, nhóm hy vọng nhận ý kiến đóng góp quý báu từ Thầy Cô, bạn bè người quan tâm để đề tài hoàn thiện Xin chân thành cảm ơn Sinh viên thực THIỀU ĐOÀN QUANG HUY vi LIỆT KÊ HÌNH VẼ Hình Trang Hình 2.1 Sơ đồ tổng quát hệ thống điềukhiển tự động Hình 2.2 Sơ đồ nguyên tắc điềukhiển theo sai lệch Hình 2.3 Sơ đồ nguyên tắc điềukhiển bù nhiễu Hình 2.4 Sơ đồ nguyên tắc điềukhiển theo sai lệch bù nhiễu Hình 2.5 Qúa trình điềukhiển với hệ số Kp khác Hình 2.6 Ảnh hưởng khâu hiệu chỉnh tỷ lệ-tích phân với số thời gian 10 Hình 2.7: Ảnh hưởng khâu hiệu chỉnh tỷ lệ-vi phân với số thời gian 12 Hình 2.8 So sánh khâu hiệu chình PD, PI, PID 13 Hình 2.9 Sơ đồ pipline 15 Hình 2.10 Sơ đồ module STM32F103VET617 16 Hình 2.11 Sơ đồ động DC 17 Hình 2.12 Cấu tạo Rotor 18 Hình 2.13: Stator động điện chiều 19 Hình 2.14: Cổ góp chổi than 19 Hình 2.15 Nguyên lý hoạt độngđộng chiều 21 Hình 2.16 Encoder động DC 21 Hình 2.17 Hai kênh A B lệch pha 22 Hình 2.18 OptoPC817 23 Hình 2.19 Mosfet IRF3205 24 Hình 2.20 Cấu tạo Mosfet 25 Hình 2.21 Hoạt động Mosfet 26 Hình 2.22 IC SN74HCO2N 27 Hình 2.23 IC SN74HC14N 28 Hình 2.24 Phần mềm Visual studio 2012 29 Hình 2.26 Chạy file vs_ premium 31 Hình 2.27 Click vào I agree the license sau chọn Next 32 Hình 2.28 Bắt đầu cài đặt Install 32 Hình 2.29 Qúa trình chờ cài đặt 33 x Hình 2.30 Cài đặt giao diện thành công 33 Hình 3.1 Sơ đồ khối hệ thống 34 Hình 3.2 Khối xử lý trung tâm 36 Hình 3.3 Khối Driver 37 Hình 3.4 Khối Logic 37 Hình 3.5 Khối Nguồn 5V 38 Hình 3.6 Khối Nguồn 3.3V 38 Hình 4.1 Mạch in lớp 40 Hình 4.2 Mạch in lớp 41 Hình 4.3 Mạch in 3D lớp 41 Hình 4.4 Mạch in 3D lớp 42 Hình 4.5 Hình ảnh khối nguồn điềukhiển 45 Hình 4.6 Hình ảnh mạchPID DRIVER đóng gói 46 Hình 4.7 MạchPID DRIVER đặt vào bên hộp 46 Hình 4.8 Mơ hình hệ thống hồn chỉnh 47 Hình 4.9 Lưu đồ điềukhiển chương trình 48 Hình 4.10 Giao diện trình biên dịch Keil uVision5 49 Hình 4.11 Giao diện trình biên dịch STM32CubeMX 51 Hình 4.12 Giao diện điềukhiểnPID 52 Hình 5.1 Điềukhiểnđộng Planet (24V, 60W) 55 Hình 5.2 Điềukhiểnđộng (24V, 19W) 55 Hình 5.2 Điềukhiểnđộng (24V, 38W) 56 Hình 5.3 Trường hợp Kp, Kd, Ki=1 56 Hình 5.5 Trường hợp Kp, Kd, Ki=0.001 57 Hình 5.6 Trường hợp Kp, Kd, Ki=0.005 57 Hình 5.3 Kết luận rút từ việc thay đổi hệ số Kp, Kd, Ki từ thực nghiệm 58 x x LIỆT KÊ BẢNG Bảng Trang Bảng 4.1: Danh sách linh kiện .42 xiii PHỤ LỤC sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) { _Error_Handler( FILE , LINE ); } HAL_TIM_MspPostInit(&htim1); } static void MX_TIM2_Init(void) { TIM_SlaveConfigTypeDef sSlaveConfig; TIM_MasterConfigTypeDef sMasterConfig; htim2.Instance = TIM2; htim2.Init.Prescaler = 0; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 65000; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim2) != HAL_OK) { _Error_Handler( FILE , LINE ); } sSlaveConfig.SlaveMode = TIM_SLAVEMODE_EXTERNAL1; sSlaveConfig.InputTrigger = TIM_TS_TI1FP1; sSlaveConfig.TriggerPolarity = TIM_TRIGGERPOLARITY_RISING; sSlaveConfig.TriggerFilter = 0; if (HAL_TIM_SlaveConfigSynchronization(&htim2, &sSlaveConfig) != HAL_OK) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 72 PHỤ LỤC { _Error_Handler( FILE , LINE ); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) { _Error_Handler( FILE , LINE ); } } static void MX_TIM3_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigTypeDef sMasterConfig; htim3.Instance = TIM3; htim3.Init.Prescaler = 48000; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 99; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim3) != HAL_OK) { _Error_Handler( FILE , LINE ); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 73 PHỤ LỤC if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) { _Error_Handler( FILE , LINE ); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) { _Error_Handler( FILE , LINE ); } } static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; HAL_RCC_GPIOA_CLK_ENABLE(); HAL_RCC_GPIOE_CLK_ENABLE(); HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11, GPIO_PIN_SET); GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); } /** * @brief This function is executed in case of error occurrence BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 74 PHỤ LỤC * @param None * @retval None */ void _Error_Handler(char * file, int line) { while(1) { } } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t* file, uint32_t line) { } #endif /** * @} */ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 75 PHỤ LỤC /** * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ CODE CHƯƠNG TRÌNH CON WEB APPLICATION: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.IO; using System.Xml; namespace WindowsFormsApplication4 { public partial class Form1 : Form { string InputData = String.Empty; Int16 ND = 0; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 76 PHỤ LỤC Int16 set = 0; string huong = "0"; int tocdoo = 0; int a = 0; int[] tocdo = new int[50] ; int[] potlo = new int[100]; public Form1() { InitializeComponent(); string[] ports = SerialPort.GetPortNames(); cbCom.Items.AddRange(ports); serialPort1.ReadTimeout = 1000; serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceive); String[] _bitsPerSecond = { "75", "110", "134", "150", "300", "600", "1200", "1800", "2400", "4800", "7200", "9600", "14400", "19200", "38400", "57600", "115200", "128000" }; cbBaudRate.Items.AddRange(_bitsPerSecond); cbBaudRate.SelectedIndex = 11; } private void DataReceive(object obj, SerialDataReceivedEventArgs e) { try { InputData = serialPort1.ReadTo("\n"); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 77 PHỤ LỤC catch (Exception e7) {} if (InputData == "a") { MessageBox.Show("Kết nối thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); InputData = String.Empty; } else { if (InputData.Length > 2) { StText(InputData); InputData = String.Empty; } } } delegate void SetTextCallback(string text); private void StText(string text) { if (this.label7.InvokeRequired) { SetTextCallback d = new SetTextCallback(StText); this.Invoke(d, new object[] { text }); } else this.label7.Text = text; } private void ketnoi_Click(object sender, EventArgs e) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 78 PHỤ LỤC { ngat.BackColor = Color.Red; if (ketnoi.BackColor == Color.Red) ketnoi.BackColor = Color.White; else ketnoi.BackColor = Color.Red; if (!serialPort1.IsOpen) { if (String.IsNullOrEmpty(cbCom.Text)) { MessageBox.Show("Chưa chọn cổng COM", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } serialPort1.PortName = cbCom.Text; serialPort1.BaudRate = Convert.ToInt32(cbBaudRate.Text); serialPort1.DataBits = 8; serialPort1.Parity = System.IO.Ports.Parity.None; serialPort1.StopBits = System.IO.Ports.StopBits.One; serialPort1.Open(); ketnoi.Enabled = false; //serialPort1.Write("a"); } } private void cbCom_SelectedIndexChanged(object sender, EventArgs e) { serialPort1.Close(); ketnoi.Enabled = true; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 79 PHỤ LỤC } private void thoat_Click(object sender, EventArgs e) { DialogResult h = MessageBox.Show("Bạn có muốn khơng", "Cảnh báo", MessageBoxButtons.OKCancel); if (h == DialogResult.OK) { Application.Exit(); } } private void timer1_Tick(object sender, EventArgs e) { lbTime.Text = DateTime.Now.ToString(); try { tocdoo = Int32.Parse(label7.Text); } catch (Exception e6) { } for (int ab = 49; ab >0; ab ) { tocdo[ab] = tocdo[ab-1]; } tocdo[0] = tocdoo; this.chart1.Series["VẬN TỐC"].Points.DataBindY(tocdo); this.chart1.Series["VẬN TỐC"].Points.ResumeUpdates(); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 80 PHỤ LỤC int max=0,min=0; private void set1_Click(object sender, EventArgs e) { a = Int32.Parse(SetText.Text); timer2.Start(); label10.Text = " " + 00 + "00 ms"; if (serialPort1.IsOpen) { serialPort1.Write(SetText.Text + "S" + huong + "C" + "0D"); serialPort1.Write("!"); } } private void label7_Click(object sender, EventArgs e) { } private void lbTime_Click_1(object sender, EventArgs e) { } private void SetText_TextChanged(object sender, EventArgs e) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 81 PHỤ LỤC } private void label3_Click(object sender, EventArgs e) { } private void ngat_Click(object sender, EventArgs e) { ketnoi.BackColor = Color.Red; if (ngat.BackColor == Color.Red) ngat.BackColor = Color.White; serialPort1.Close(); MessageBox.Show("Đã ngắt kết nôi" ,"Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } private void chart1_Click(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { } private void Form1_Load_1(object sender, EventArgs e) { chart1.ChartAreas[0].AxisX.Minimum = 0; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 82 PHỤ LỤC chart1.ChartAreas[0].AxisX.Interval = 1; chart1.ChartAreas[0].AxisX.Maximum = 50; chart1.ChartAreas[0].AxisY.Maximum = 25000; label7.Text = "0"; } private void button1_Click(object sender, EventArgs e) { button3.BackColor = Color.Orange; if (button1.BackColor == Color.Orange) button1.BackColor = Color.White; else button1.BackColor = Color.Orange; if (serialPort1.IsOpen) { serialPort1.Write(SetText.Text+"S"+huong+"C"+"0D"); serialPort1.Write("!"); } } private void button2_Click(object sender, EventArgs e) { if (huong =="0") huong = "1"; else huong = "0"; if (serialPort1.IsOpen) { serialPort1.Write(SetText.Text + "S" + huong + "C" + "0D"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 83 PHỤ LỤC serialPort1.Write("!"); } } private void button3_Click(object sender, EventArgs e) { button1.BackColor = Color.Orange; if (button3.BackColor == Color.Orange) button3.BackColor = Color.White; else button3.BackColor = Color.Orange; if (serialPort1.IsOpen) { serialPort1.Write("00000" + "S" + huong + "C" + "1D"); serialPort1.Write("!"); } } int b=0,c = 0,d=0; int i; private void timer2_Tick(object sender, EventArgs e) { i++; b= a + 100; c = a - 100; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 84 PHỤ LỤC if (tocdoo > c && tocdoo