Thiết kế và thi công mạch điều khiển tốc độ động cơ DC sử dụng thuật toán PID

102 67 0
Thiết kế và thi công mạch điều khiển tốc độ động cơ DC sử dụng thuật toán PID

Đ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

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ẾT KẾ VÀ THI CÔNG MẠCH ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ DC SỬ DỤNG THUẬT TOÁN PID 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ẬT CỘ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ẾT KẾ VÀ THI CÔNG MẠCH ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ DC SỬ DỤNG THUẬT TOÁN PID 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ết kế 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ều khiển ARM Tham khảo mơ hình điều khiển động để xây dựng lên mơ hình điều khiển  Tìm hiểu mơ hình điều khiể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ều khiển PID DRIVER để điều khiể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ết kế thi cơng mơ hình phần mạch điều khiển  NỘI DUNG 3: Thiết kế thi công hệ thống điều khiển động DC  NỘI DUNG 4: Thiết kế lưu đồ giải thuật viết chương trình điều khiển cho Vi điều khiển, thiết kế giao diện hình để điều khiể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ẬT CỘ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ẾT KẾ VÀ THI CÔNG MẠCH ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ DC SỬ DỤNG THUẬT TOÁN PID Xác nhận GVHD Tuần/ngày Nội dung 25/09/2017 Tìm tài liệu điều khiển PID DRIVER để điều khiể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ết kế thi cơng mơ hình phần mạch điều khiển Thiết kế hệ thống điều khiển động DC 29/10/2017 29/10/2017 Thiết kế lưu đồ giải thuật kiểm tra độ ổn định 10/11/2017 mạch thi công 10/11/2017 Viết chương trình điều khiển cho vi điều khiển 28/11/2017 28/11/2017 Thiết kế giao diện hiển thị để điều khiể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ều khiển tự động Hình 2.2 Sơ đồ nguyên tắc điều khiển theo sai lệch Hình 2.3 Sơ đồ nguyên tắc điều khiển bù nhiễu Hình 2.4 Sơ đồ nguyên tắc điều khiển theo sai lệch bù nhiễu Hình 2.5 Qúa trình điều khiể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ều khiển 45 Hình 4.6 Hình ảnh mạch PID DRIVER đóng gói 46 Hình 4.7 Mạch PID 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ều khiể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ều khiển PID 52 Hình 5.1 Điều khiển động Planet (24V, 60W) 55 Hình 5.2 Điều khiển động (24V, 19W) 55 Hình 5.2 Điều khiể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

Ngày đăng: 23/03/2020, 17:29

Từ khóa liên quan

Mục lục

  • DATN_MAU_02_Bia Trong.pdf

  • DATN_MAU_03_Nhiem Vu.pdf

  • DATN_MAU_04_Lich Trinh Lam DATN.pdf

  • DATN_MAU_05_Cam Doan.pdf

  • DATN_MAU_06_Loi Cam On.pdf

  • LIỆT KÊ HINH _BANG.pdf

  • DATN_MAU_10_Tom Tat.pdf

  • nd_cuon_baocao_e chinh_sua.pdf

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan