1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Thiết kế xe dò đường dùng ardunino

17 180 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 17
Dung lượng 1,01 MB

Nội dung

1.1.1 Vi xử lý PIC16f887a (số lượng 1))Đặc Điểm chung:1Tần số hoạt động: DC20MHZ2 Reset :PORT,BOR3 Bộ nhớ chương trinh flash(14bit word) :8K4Bộ nhớ dữ liệu( byte) : 3685 Bộ nhớ dữ liệu EEPROM (byte) : 256byte6Các nguồn ngắt : 157 Các port xuất nhập : PORT A,B,C,D.E8Timer : 39Các module capturecomparePWM: 210 Giao tiếp nối tiếp : MSSP,USART11Giao tiếp song song : PSP12MODULE AD 10 bit : 8 kênh ngõ vào13Bộ so sánh tương tự :214Tập lệnh : 35 tập lệnh15 số chân : 40 chân PDIP,44 chân PLCC,44 chân TQFP,44 chân QFN1.1.2 L298P SMDa) Hình ảnh và sơ đồ chân.4 LM393a)Hình LM393 là vi mạch gồm 2 bộ so sánh hoạt động độc lập với điện áp bù nhỏ cỡ 2mV, hoạt động với cả nguồn cấp đơn hoặc hai nguồn đối xứng. Vi mạch LM393 tương thích với cả TTL và CMOS, được sử dụng nhiều trong các bộ chuyển đổi tương Đặc điểm của Lm393Modul cảm biến TCRT 5000 ( số lượng 5 Cảm biến dò line TCRT5000 làm việc dựa trên nguyên lý cảm biến hồng ngoại. Về cơ bản, module TCRT5000 gồm một đèn led phát hồng ngoại và một led thu hồng ngoại. Khi nhận được tín hiệu hồng ngoại từ đèn phát thì đèn thu sẽ hoạt động. Khi có ánh sáng hồng ngoại từ led phát, nếu có một vật cản, ánh sáng sẽ được phản xạ lại led thu.Động cơ giảm tốc V3cầu H L298N để điều khiển động tốc độ và chiều của động cơ.1.Giới thiệu về mạch cầu H L298NTrên thị trường hiện có nhiều loại mạch cầu H, tuy nhiên loại thông dụng và thích hợp với board Arduino là mạch cầu H L298N. Loại mạch cầu H này chịu được dòng tối đa là 2A, điện áp điều khiển từ 5V đến 35V, có thể điều khiển được 2 động cơ. Hình bên dưới là module mạch cầu H L298.Module này gồm có IC L298N, 1 khối điều khiển động cơ A, 1 khối điều khiển động cơ B, các chân cấp nguồn, 2 jump.2.Khối điều khiển động cơ AKhối này có 2 chân nhằm để kết nối với động cơ A3.Khối điều khiển động cơ BKhối này cũng có 2 chân nhằm để kết nối với động cơ B4.Các chân cấp nguồnChân cấp nguồn gồm 2 chân, chân GND nối với nguồn âm còn chân +12V nối với nguồn dương của acquy hoặc adapter 12V. Chân +5V dùng khi cần sử lấy nguồn 5V từ mạch cầu H ra để dùng. Thường thì chân này ít sử dụng.5.Các jumpCó 2 jump tại ENA và ENB khi 2 jump này ở 2 vị trí như trên thì sẽ điều khiển động cơ chạy 100% công suất, ENA được dùng cho động cơ A và ENB được dùng cho động B. Ta có thể rút 2 jump này ra và kết nối các ENA, ENB với các chân băm xung của Arduino. Việc này sẽ giúp người sử dụng điều khiển được tốt độ của động cơ.6.Các chân IN1, IN2, IN3, IN4Các chân này dùng để kết nối với chân ra của Arduino nhằm điều khiển chiều của động cơ. IN1, IN2 dùng cho động cơ A và IN3, IN4 được dùng cho động cơ B.Việc điều khiển chiều của động cơ được thực hiện như sau:Bảng 3. Bảng điều kh

Trang 1

MỤC LỤC

Giai đoạn 1: Thực hiện bằng vi xử lý PIC 16f887a.

1.1 Thiết kế hệ thống

1.1.1 Các linh kiện chính 1.1.2 Sơ đồ nguyên lý 1.1.3 Sản phẩm 1.2 Chương trình đưa vào vi xử lý

1.3 Đánh giá lại (chuyển phương án)

Giai đoạn 2: Thực hiện bằng Module Arduino Uno R3

1.4 Thiết kế lại hệ thống

1.4.1 Các linh kiện mới 1.4.2 Sản phẩm 1.5 Chương trình đưa vào vi xử lý

1.6 Đánh giá

Kết luận.

PHỤ LỤC

Trang 2

GIAI ĐOẠN 1: THỰC HIỆN BẰNG VI XỬ LÝ PIC 16F887A 1.Thiết kế hệ thống

1.1 Các linh kiện chính

1.1.1 Vi xử lý PIC16f887a (số lượng 1)

a)Hình ảnh thực:

b)Sơ đồ chân:

Trang 3

c)Đặc Điểm chung:

1-Tần số hoạt động: DC-20MHZ 2- Reset :PORT,BOR

3- Bộ nhớ chương trinh flash(14-bit word) :8K 4-Bộ nhớ dữ liệu( byte) : 368

5- Bộ nhớ dữ liệu EEPROM (byte) : 256byte 6-Các nguồn ngắt : 15

7- Các port xuất nhập : PORT A,B,C,D.E 8-Timer : 3

9-Các module capture/compare/PWM: 2 10- Giao tiếp nối tiếp : MSSP,USART 11-Giao tiếp song song : PSP

12-MODULE A/D 10 bit : 8 kênh ngõ vào 13-Bộ so sánh tương tự :2

14-Tập lệnh : 35 tập lệnh 15- số chân : 40 chân PDIP,44 chân PLCC,44 chân TQFP,44 chân QFN

1.1.2 L298P SMD

a) Hình ảnh và sơ đồ chân

Trang 4

b)Thông số kĩ thuật:

 Driver: L298N tích hợp 2 mạch cầu H

 Điện áp điều khiển: +5V~ +12V

 Dòng tối đa cho mỗi cầu H là: 2A

 Điện áp của tín hiệu điều khiển : +5V~+7V

 Dòng tín hiệu điều khiển:0-36mA

 Công suất hao phí:20W(t=75)

 Nhiệt độ bảo quản: -25 ~ +130

c) Chức năng các chân:

 4 Chân INPUT: IN1, IN2, IN3, IN4 :Đây là các chân nhận tín hiệu điều khiển

 4 Chân OUTPUT: OUT1, OUT2, OUT3, OUT4 Các chân nãy sẽ được nối với động cơ

 Hai chân ENA và ENB dùng để điều khiển mạch cầu H trong L298p Nếu ở mức logic

1 cho phép mạch cầu H hoạt động, nếu ở mức logic 0 thì mạch cầu H không hoạt động

Khi ENA=0: Động cơ không quay với mọi đầu vào

Khi ENA=1

INT1=1; INT2=0: động cơ quay thuận

INT1=0; INT2=1: động cơ quay ngược

Với ENB cũng tương tự với INT3, INT4

d) chức năng trong mạch

Để điều khiển động tốc độ và chiều của động cơ

1.1.3 IC LM324

a)Sơ đồ chân:

Trang 5

b)Thông số kỹ thuật

IC khuếch đại thuật toán LM3234 được tạo bởi bốn bộ khuếch đại thuật toán (OP-OAMP) độc lập được tích hợp trên một chip đơn Đặc điểm của LM324 là nó được thiết

kế để hoạt động với nguồn nuôi có điện áp rộng LM324 có thể hoạt động với cả nguồn đôi Nguồn cấp cho cực máng thấp và độc lập với biên độ điện áp cung cấp

- Vùng điện áp lối vào: -0.3 đến +32 v

- Dòng cực máng nhỏ: 0.7mA

- Dòng Offset lối vào: 30Ma max

- Điện áo offset lối vào: 3mA max

- Vùng nhiệt độ hoạt động: 0 đến 70 độ C

c)Ứng dụng

- Mạch khuếch đại công suất

- Mạch so sánh

- Mạch nháy theo nhạc

- Mạch sạc pin cho xe đạp điện

- Mạch cộng tín hiệu, mạch trừ tín hiệu, mạch khuếch đại vi sai

- Mạch điều khiển tự động hóa PID

d) chức năng trong mạch

1.1.4 LM393

a)Hình ảnh

b)Sơ đồ chân:

Trang 6

LM393 là vi mạch gồm 2 bộ so sánh hoạt động độc lập với điện áp bù nhỏ cỡ 2mV, hoạt động với cả nguồn cấp đơn hoặc hai nguồn đối xứng Vi mạch LM393 tương thích với cả TTL và CMOS, được sử dụng nhiều trong các bộ chuyển đổi tương tự số đơn giản, trong các khối VCO, trong các mạch tạo trễ thời gian, sóng vuông, các mạch dao động và cổng logic số cao thế

c)Đặc điểm của Lm393

1 Dải nguồn nuôi rộng 2VDC đến 36VDC

2 Dải nguồn nuôi kép 1 đến

3 Dòng cực máng rất thấp độc lập với điện áp nguồn nuôi: 0,4mA

4 Dòng lối vào thấp 25mA

5 Dòng offset lối vào thấp 5mA và điện áp offset cực đại A

6 Dải điện áp lồi vào chung thấp

7 Dải điện áp vào vi sai bằng với điện áp của nguồn cung cấp

8 Điện áp offset lối vào thấp: -2mA đối với Lm393A -5mA đối với LM293/393

9 Điện áp lối ra tương thích với các mức logic DTL,ECL,TTL,MOS,CMOS

10 Điện áp bão hòa lối ra thấp: 250mV, 4mA

d) chức năng trong mạch

1.1.5 Modul cảm biến TCRT 5000 ( số lượng 5 modul)

Cảm biến dò line TCRT5000 làm việc dựa trên nguyên lý cảm biến hồng ngoại

Về cơ bản, module TCRT5000 gồm một đèn led phát hồng ngoại và một led thu hồng ngoại Khi nhận được tín hiệu hồng ngoại từ đèn phát thì đèn thu sẽ hoạt động Khi có

Trang 7

ánh sáng hồng ngoại từ led phát, nếu có một vật cản, ánh sáng sẽ được phản xạ lại led thu

Sơ đồ nguyên lý như hình bên dưới:

+ Thông số kỹ thuật

 Nguồn cung cấp: 5V

 Dòng điện tiêu thụ: <10mA

 Dải nhiệt độ hoạt động:0~50 độ C

1.1.6 Khối nguồn

a)- 1 IC loại LM7805

+ Thông số kỹ thuật

 Điện áp vào: 0V ÷ 35VDC

 Điện áp ra: 5VDC

Trang 8

 Dòng ra: 1,5A

 Tản nhiệt tốt cho IC để mạch chạy ổn định

+ Một số điểm lưu ý khác:

 Thực tế áp lối ra có thể đạt giá trị nào đó trong khoảng 4.8 5.2 V

 Nên nếu đo được áp là 4.85V thì không vội kết luận là IC bị hỏng

 Độ trôi nhiệt của 7805 xấp xỉ: 1mV/1 độ C Nó có hệ số trôi nhiệt âm, nên nhiệt độ tăng, điện áp ra sẽ giảm

 7805 là ic ổn áp 5V cho ra điện áp 5VDC

 78xx là loại dòng IC dùng để ổn định điện áp dương đầu ra với điều kiện đầu vào luôn luôn lớn hơn đầu ra 3V

b)TIP42C loại pnp : có tác dụng tăng dòng ra của 7805

1.1.7-Khối tạo dao động

Dùng thạch anh 20MHz

Các thành phần của khối

a)1 Thạch anh 2 chân 20MHz

 Tần số: 20MHz

 Dung sai tần số: ±20ppm

 ESR (Equivalent series resistance): 30 Ohm

 Nhiệt độ hoạt động: -20oC ~ 70oC

Thạch anh 2 chân 20M là một linh kiện làm bằng tinh thể đá thạch anh được mài phẳng

và chính xác.Thạch anh 2 chân 20M làm việc dựa trên hiệu ứng áp điện, hiệu ứng này có tính

thuận nghịch Khi áp một điện áp vào 2 mặt của thạch anh, nó sẽ bị biến dạng Ngược lại,khi tạo sức ép vào 2 bề mặt đó,nó sẽ phát ra điện áp

Tần số cộng hưởng của Thạch anh tùy thuộc vào hình dáng và kích thước của nó Tần số của thạch anh 2 chân 20M có trị số khá bền vững, hầu như rất ít bị ảnh hưởng bởi các điều kiện

môi trường bên ngoài Ngoài ra, hệ số phẩm chất của mạch cộng hưởng rất lớn, nên tổn hao rất thấp

Trang 9

Kích thước của thạch anh 20MHz

Chức năng: Tạo ra tần sô dao động ổn định cho vi điều khiển vì tần số của thạch anh tạo ra rất ít

bị ảnh hưởng bởi nhiệt độ

1.1.8 Động cơ giảm tốc V3

a) Hình ảnh và kích thước

b) Thông số kỹ thuật:

-Điện áp hoạt động: DC 3-6V

- Mômen xoắn cực đại: 800gf cm min 1:48 (3V)

- Tốc độ không tải:

+ DC3V: 150mA 90 RPM 10RPM + DC3V: 200mA 200 RPM 10RPM

-Dòng không tải: 70mA (250mA MAX)

c) Chức năng:

Chuyển đổi năng lượng điện thành cơ năng tạo chuyển dộng cho xe

Trang 10

1.2 Sơ đồ nguyên lý

Nguyên lý hoạt động của mạch:

Khi cấp nguồn hoạt động cảm biến quét tín hiệu đầu vào truyền về vi điều khiển Cảm biến truyền về tín hiệu vạch đen là ở mức 0 và mức là không ở vạch đen (dựa theo nguyên lý màu

Trang 11

đen không phản xạ ánh sáng hồng ngoại).Vi điều khiển nhận và xử lý tín hiệu thông qua chương trình định sẵn xuất ra các xung điều khiển đến L298p để điều khiển động cơ Động cơ làm cho

xe di chuyển theo đường đã định sẵn Quá trình này lặp đi lặp lại giúp xe di chuyển liên tục và bắt đường

Trang 12

1.1 Sản phẩm

///

1.2 Chương trình đưa vào vi xử lý.

Chương2 // Developer : Tran Van Den

Chương3 // Date : 21-12-2017

Chương4 // Class : Dien-Dien Tu B k58

Chương5 //

Chương6 // pwm1 la banh phai nhin tu dit xe len dau xe b3 hight b2 low la chieu thuan xe di len Chương7 // pw2 la banh trai nhin tu dit xe len dau xe b1 hight b0 low la chieu thuan xe di len Chương8 //********************************************* robot line black

***********************************//

Chương9 //********************************************* robot line black

***********************************//

Chương10

Chương11 //#include <main.h>

Chương12 #INCLUDE <16F887.H>

Chương13 #FUSES NOWDT, PUT, HS, NOPROTECT, NOLVP

Chương14 #USE delay(CLOCK=20M)

Chương15 #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

Chương16

Chương17 //================================== define var

===================================================//

Chương18 int1

Var_sensor_1=0,Var_sensor_2=0,Var_sensor_3=0,Var_sensor_4=0,Var_sensor_5=0,mode; Chương19 int8 Var_in_line_last=0,Var_in_line=0;

Chương20

Chương21 //================================== define function subroutine

===================================//

Chương22 void Fn_Send_uart(char s);

Chương23 void Fn_Send_uart_sensor(char s);

Chương24 void Fn_Checksensor_send_uart(void);

Chương25 void Fn_convenienty_motor_left(void);

Chương26 void Fn_convenienty_motor_right(void);

Chương27 void Fn_reverse_motor_left(void);

Chương28 void Fn_reverse_motor_left(void);

Chương29 signed int8 Fn_in_sensor();

Trang 13

Chương30 //!void Fn_robot_mover(int8 line);

Chương31 void Fn_robot_mover(char line);

Chương32

Chương33 #define sensor1

Chương34 void main()

Chương35 {

Chương36 set_tris_c(0x00);

Chương37 set_tris_d(0xff);

Chương38

Chương39 setup_timer_2(T2_DIV_BY_16,249,1); // tan so

Chương40 setup_ccp1(CCP_PWM);

Chương41 setup_ccp2(CCP_PWM);

Chương42 Fn_convenienty_motor_left(); // chan trai pwm2 5-1-2018 Chương43 Fn_convenienty_motor_right(); // chan phai pwm1 5-1-2018 Chương44

Chương45 printf("test uart pic 16f887 \r\n");

Chương46 //!

Chương47 //! set_pwm1_duty(400); // phai

Chương48 //! set_pwm2_duty(100); // trai

Chương49 //!

Chương50 int8 Var=128;

Chương51 while(TRUE)

Chương52 {

Chương53 Var_in_line_last = Var_in_line;

Chương54 Var_in_line = Fn_in_sensor();

Chương55 if(Var_in_line != Var_in_line_last)

Chương56 {

Chương57 if(Var_in_line_last != 5)

Chương58 {

Chương59 Fn_robot_mover(Var_in_line);

Chương60 }

Chương61 }

Chương62 //! Fn_in_sensor();

Chương63 //! Fn_Send_uart("\r\n");

Chương64 //! delay_ms(500);

Chương65 //!Fn_robot_mover(0);

Chương66 }

Chương67 }

Chương68 void Fn_Send_uart(char s)

Chương69 {

Chương70 #ifndef debug

Trang 14

Chương71 printf("%c",s);

Chương72 #endif

Chương73 }

Chương74 void Fn_Send_uart_sensor(char s)

Chương75 {

Chương76 #ifndef sensor

Chương77 printf("%d",s);

Chương78 #endif

Chương79 }

Chương80 void Fn_Checksensor_send_uart(void)

Chương81 {

Chương82 Fn_Send_uart_sensor(Var_sensor_1);

Chương83 Fn_Send_uart_sensor(Var_sensor_2);

Chương84 Fn_Send_uart_sensor(Var_sensor_3);

Chương85 Fn_Send_uart_sensor(Var_sensor_4);

Chương86 Fn_Send_uart_sensor(Var_sensor_5);

Chương87 }

Chương88 //************************************************** Huong cua motor PHAI

thuan (PWM2) ***********************************//

Chương89 void Fn_convenienty_motor_left(void)

Chương90 {

Chương91 output_high(PIN_B1); // xung banh PHAI cua PWM2 (thuan)

Chương92 output_low(PIN_B0);

Chương93 }

Chương94 //************************************************** Huong cua motor TRAI

thuan (PWM1) ***********************************//

Chương95 void Fn_convenienty_motor_right(void)

Chương96 {

Chương97 output_high(PIN_B3); // xung banh TRAI cua PWM1 (thuan)

Chương98 output_low(PIN_B2);

Chương99 }

Chương100 //************************************************** Huong cua motor PHAI

nguoc (PWM2) **********************************//

Chương101 void Fn_reverse_motor_left(void)

Chương102 {

Chương103 output_high(PIN_B0); // xung banh PHAI cua PWM2 (nguoc)

Chương104 output_low(PIN_B1);

Chương105 }

Chương106 //************************************************** Huong cua motor TRAI

nguoc (PWM1) **********************************//

Chương107 void Fn_reverse_motor_right(void)

Trang 15

Chương108 {

Chương109 output_high(PIN_B2); // xung banh TRAI cua PWM1 (nguoc)

Chương110 output_low(PIN_B3);

Chương111 }

Chương112 signed int8 Fn_in_sensor()

Chương113 {

Chương114 Var_sensor_1=input(PIN_D0);

Chương115 Var_sensor_2=input(PIN_D1);

Chương116 Var_sensor_3=input(PIN_D2);

Chương117 Var_sensor_4=input(PIN_D3);

Chương118 Var_sensor_5=input(PIN_D5);

Chương119 Fn_Checksensor_send_uart(); // send uart go to computer

Chương120

Chương121 if((Var_sensor_1==1)&&(Var_sensor_2==1)&&(Var_sensor_3==0)&&(Var_sensor_4==1)

&&(Var_sensor_5==1))

Chương122 {

Chương123 return 0;

Chương124 }

Chương125 else

if((Var_sensor_1==0)&&(Var_sensor_2==1)&&(Var_sensor_3==1)&&(Var_sensor_4==1)&&( Var_sensor_5==1))

Chương126 {

Chương127 mode = 1;

Chương128 return 1;

Chương129 }

Chương130 else

if((Var_sensor_1==1)&&(Var_sensor_2==0)&&(Var_sensor_3==1)&&(Var_sensor_4==1)&&( Var_sensor_5==1))

Chương131 {

Chương132 mode = 1;

Chương133 return 2;

Chương134 }

Chương135 else

if((Var_sensor_1==1)&&(Var_sensor_2==1)&&(Var_sensor_3==1)&&(Var_sensor_4==1)&&( Var_sensor_5==0))

Chương136 {

Chương137 mode = 0;

Chương138 return -1;

Chương139 }

Trang 16

Chương140 else

if((Var_sensor_1==1)&&(Var_sensor_2==1)&&(Var_sensor_3==1)&&(Var_sensor_4==0)&&( Var_sensor_5==1))

Chương141 {

Chương142 mode = 0;

Chương143 return -2;

Chương144 }

Chương145 else

if((Var_sensor_1==1)&&(Var_sensor_2==1)&&(Var_sensor_3==1)&&(Var_sensor_4==1)&&( Var_sensor_5==1))

Chương146 {

Chương147 return 5;

Chương148 }

Chương149 }

Chương150 void Fn_robot_mover(char line)

Chương151 {

Chương152 switch (line)

Chương153 {

Chương154 case 1 : // lech phai lv1

Chương155 {

Chương156 set_pwm2_duty(200); // phai 400

Chương157 set_pwm1_duty(50); // trai 100

Chương158 Fn_Send_uart("case :-4");

Chương159 break;

Chương160 }

Chương161 case 2 :// lech phai lv2

Chương162 {

Chương163 set_pwm2_duty(180); // phai 600

Chương164 set_pwm1_duty(100); // trai 200

Chương165 Fn_Send_uart("case :-3");

Chương166 break;

Chương167 }

Chương168 case -1 : // lech trai lv1

Chương169 {

Chương170 set_pwm2_duty(200); // 560

Chương171 set_pwm1_duty(500); // 280

Chương172 Fn_Send_uart("case :-2");

Chương173 break;

Chương174 }

Chương175 case -2 :// lech trai lv2

Chương176 {

Trang 17

Chương177 set_pwm2_duty(180); // 520 Chương178 set_pwm1_duty(100); // 400 Chương179 Fn_Send_uart("case :-1");

Chương180 break;

Chương181 }

Chương182 case 0 :

Chương183 {

Chương184 set_pwm1_duty(250);

Chương185 set_pwm2_duty(250);

Chương186 Fn_Send_uart("case :0");

Chương187 break;

Chương188 }

Chương189

Chương190 case 5 :

Chương191 {

Chương192 if(mode==0)

Chương193 {

Chương194 set_pwm1_duty(100); // 600 Chương195 set_pwm2_duty(20); // 0 Chương196 Fn_Send_uart("case :5 mode 0"); Chương197 }

Chương198 else

Chương199 {

Chương200 set_pwm1_duty(20); // 0 Chương201 set_pwm2_duty(100); // 600 Chương202 Fn_Send_uart("case :5 mode 1"); Chương203 }

Chương204 } break;

Chương205 default :

Chương206 {

Chương207 set_pwm1_duty(0);

Chương208 set_pwm2_duty(0);

Chương209 }

Chương210 break;

Chương211 }

Chương212 }

Chương213

Chương214

Ngày đăng: 20/03/2018, 21:39

TỪ KHÓA LIÊN QUAN

w