Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 110 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
110
Dung lượng
1,82 MB
Nội dung
DIY Smart hút bụi làm sạch sử dụng Arduino Bởi B.Aswinth Raj 23 Nhận xét Arduino dựa trên trở ngại Tránh máy hút bụi làm sạch Hi guys, bạn là một newbie cho thế giới của Robotics hoặc điện tử? Hoặc Bạn đang tìm kiếm một dự án đơn giản nhưng mạnh mẽ để làm cho bạn bè và giáo viên ấn tượng? Sau đó, đây là nơi Trong dự án này, chúng tơi sẽ sử dụng sức mạnh của Hệ thống Nhúng và Điện tử để tạo ra robot của riêng chúng tơi có thể giúp chúng tơi giữ nơi ở hoặc nơi làm việc gọn gàng và gọn gàng. Robot này là máy hút bụi có bánh xe bốn bánh đơn giản , có thể thơng minh tránh chướng ngại vật và hút chân khơng sàn cùng một lúc. Ý tưởng này lấy cảm hứng từ máy hút bụi nổi tiếng Robot Roomba được hiển thị trong hình dưới đây Ý tưởng của chúng tơi là làm cho một robot đơn giản ngay từ đầu có thể tự động tránh những trở ngại trong khi dọn dẹp sàn nhà . Tin tưởng tơi mọi người thật vui vẻ! Vật liệu và thành phần bắt buộc: Được rồi, bây giờ chúng tơi có ý tưởng về Robot Máy hút bụi Tự động của chúng tơi và chúng tơi biết chúng tơi đang làm gì. Vì vậy, chúng ta hãy xem xét nơi chúng ta nên bắt đầu thực hiện của chúng tơi. Để xây dựng một robot của ý tưởng của chúng tôi, trước tiên chúng ta cần phải quyết định những điều sau: Loại vi điều khiển Cảm biến yêu cầu Yêu cầu động cơ Vật liệu khung xe Dung lượng pin Bây giờ, cho phép chúng tơi quyết định về từng điểm nêu trên Bằng cách này, sẽ rất hữu ích nếu bạn khơng chỉ xây dựng robot làm sạch nhà này mà còn cho bất kỳ robot nào khác mà làm nổi bật trí tưởng tượng của bạn Loại vi điều khiển: Chọn Vi điều khiển là một nhiệm vụ rất quan trọng, vì bộ điều khiển này sẽ hoạt động như bộ não robot của bạn. Hầu hết các dự án Tự làm được thực hiện xung quanh Arduino và Raspberry Pi , không phải nhau. Khơng có Microcontroller cụ thể mà bạn có thể làm việc trên. Tất cả phụ thuộc vào u cầu và chi phí . Giống như một Tablet khơng thể được thiết kế trên Microcontroller 8 bit và khơng có giá trị sử dụng ARM cortex m4 để thiết kế một máy tính điện tử Lựa chọn vi điều khiển hồn tồn phụ thuộc vào các u cầu của sản phẩm: 1. Trước tiên u cầu kỹ thuật được xác định như số lượng u cầu I / O pins, kích thước flash, số lượng / loại giao thức truyền thơng, bất kỳ tính năng đặc biệt vv 2. Sau đó liệt kê các bộ điều khiển được lựa chọn theo u cầu kỹ thuật. Danh sách này chứa bộ điều khiển từ các nhà sản xuất khác nhau Nhiều bộ điều khiển ứng dụng cụ thể có sẵn 3. Sau đó bộ điều khiển được hồn tất dựa trên chi phí, tính khả dụng và sự hỗ trợ từ nhà sản xuất Nếu bạn khơng muốn làm rất nhiều nâng nặng và chỉ muốn tìm hiểu những điều cơ vi điều khiển sau có sâu vào nó, sau bạn có thể chọn Arduino. Trong dự án này, chúng tơi sẽ sử dụng Arduino . Trước đây chúng tơi đã tạo ra nhiều loại Robot sử dụng Arduino : Robot kiểm sốt DTMF sử dụng Arduino Line Follower Robot sử dụng Arduino Robot điều khiển bằng máy tính sử dụng Arduino Robot điều khiển bằng WiFi sử dụng Arduino Accelerometer Dựa trên Tay cử chỉ Kiểm sốt Robot sử dụng Arduino Xe đồ chơi có điều khiển Bluetooth bằng Arduino Cảm biến bắt buộc: Có rất nhiều cảm biến có sẵn trên thị trường mỗi người có cách sử dụng riêng của mình. Mỗi robot được nhập thơng qua một cảm biến, chúng hoạt động như các cơ quan cảm giác cho Robot . Trong trường hợp của chúng tơi robot của chúng tơi sẽ có thể phát hiện những trở ngại và tránh chúng Có rất nhiều cảm biến mát mẻ khác mà chúng tơi sẽ sử dụng trong các dự án tương lai của chúng tơi, nhưng bây giờ chúng ta hãy tập trung vào bộ cảm biến hồng ngoại và bộ cảm biến siêu âm của Mỹ vì hai người này sẽ cung cấp tầm nhìn cho chiếc xe robo. Kiểm tra hoạt động cảm biến hồng ngoại ở đây. Dưới hình ảnh của bộ cảm biến hồng ngoại và cảm biến siêu âm : Bộ cảm biến siêu âm bao gồm hai mắt tròn mà trong đó một cái được sử dụng để truyền tín hiệu của Hoa Kỳ và một tín hiệu khác để nhận các tia nước Mỹ Thời gian của các tia để nhận được truyền và nhận lại được tính bởi vi điều khiển Bây giờ, vì thời gian và tốc độ của âm thanh được biết, chúng ta có thể tính tốn khoảng cách theo các cơng thức sau đây Khoảng cách = Thời gian x Tốc độ âm thanh chia cho 2 Giá trị được chia cho hai vì ray đi về phía trước và phía sau bao phủ cùng một khoảng cách. Giải thích chi tiết về việc sử dụng cảm biến siêu âm được đưa ra ở đây Các động cơ u cầu: Có khá nhiều động cơ được sử dụng trong lĩnh vực robot học những người sử dụng nhất là động cơ bước và servo. Vì dự án này khơng có bất kỳ thiết bị truyền động phức tạp mã hoá quay, chúng sử dụng PMDC Motor bình thường . Nhưng pin của chúng tơi là một chút cồng kềnh và nặng nề vì vậy chúng tơi sử dụng bốn động cơ để lái xe của chúng tơi tất cả bốn robot là cùng một động cơ PMDC. Nhưng bạn nên đặt vào động cơ bước và động cơ servo một khi bạn cảm thấy thoải mái với động cơ PMDC Robot vật liệu khung: Là một sinh viên hay một người u thích phần khó nhất trong khi làm một robot là chuẩn bị khung gầm của robot của chúng tơi. Vấn đề là với sự sẵn có của các cơng cụ và vật liệu. Vật liệu lý tưởng nhất cho dự án này là Acrylic, nhưng nó đòi hỏi khoan và các cơng cụ khác để làm việc với nó. Do đó gỗ được chọn để mọi người có thể làm việc trên nó dễ dàng. Vấn đề này đã hồn tồn biến mất khỏi lĩnh vực này sau khi giới thiệu máy in 3D Tơi đang lên kế hoạch cho phần in 3D một ngày nào đó và cập nhật cho bạn những người có cùng một. Vì vậy, bây giờ chúng ta hãy sử dụng tấm gỗ để xây dựng robot của chúng tơi Dung lượng pin: Lựa chọn dung lượng pin nên là phần cuối cùng của chúng tơi vì nó hồn tồn phụ thuộc vào khung xe và động cơ của bạn Ở đây pin của chúng tơi nên lái một máy hút bụi mà rút ra khoảng 35A và bốn động cơ PMDC. Do đó chúng tơi sẽ u cầu một pin nặng. Tơi đã chọn 12V 20Ah SLAB (Pin axit chì kết dính ) và chiếc cồng kềnh của nó làm cho robot của chúng tơi có được bốn động cơ PMDC để kéo gã khổng lồ này Bây giờ chúng ta đã chọn tất cả các thành phần bắt buộc của chúng ta để liệt kê chúng Tấm gỗ khung Cảm biến IR và US Máy hút bụi hoạt động trên dòng DC Arduino Uno Pin 12V 20Ah IC điều khiển động cơ (L293D) Cơng cụ làm việc Dây kết nối Năng động nhiệt tình để học tập và làm việc Hầu hết các thành phần của chúng tơi được bao gồm trong mơ tả trên, tơi sẽ giải thích các bên trái bên dưới DC máy hút bụi: Kể từ khi robot của chúng tơi chạy trên một hệ thống 12V 20Ah DC. Chân khơng của chúng tơi cũng nên được một máy hút bụi DC 12V. Nếu bạn đang bối rối về nơi để có được một thì bạn có thể truy cập vào eBay hoặc Amazon để làm sạch xe máy hút bụi Chúng ta sẽ sử dụng như thể hiện trong hình trên Trình điều khiển mơ tơ (L293D): Một trình điều khiển động cơ là một mơđun trung gian giữa Arduino và Motor. Điều này là do microcontroller Arduino sẽ khơng thể cung cấp cho các u cầu hiện tại cho động cơ để làm việc nó và chỉ có thể cung cấp 40mA, do đó vẽ thêm hiện nay sẽ làm hỏng bộ điều khiển vĩnh viễn. Vì vậy, chúng tơi kích hoạt các trình điều khiển động cơ mà lần lượt kiểm sốt động cơ Chúng tơi sẽ sử dụng động cơ L293D Motor Driver IC mà có thể cung cấp đến 1A, do đó người lái xe này sẽ nhận được thơng tin từ Arduino và làm cho động cơ hoạt động như mong muốn Đó là nó!! Tơi đã đưa ra hầu hết các thơng tin quan trọng nhưng trước khi chúng tơi bắt đầu xây dựng robot, bạn nên qua thông số kỹ thuật L293D Arduino. Nếu bạn có bất kỳ nghi ngờ hoặc vấn đề nào bạn có thể liên hệ với chúng tơi qua phần nhận xét Xây dựng và thử nghiệm Robot: Máy hút bụi là phần quan trọng nhất trong việc đặt Robot. Nó phải được đặt góc nghiêng như thể hiện trong hình ảnh, để nó có thể cung cấp hoạt động chân khơng thích hợp. Máy hút bụi khơng được kiểm sốt bởi Arduino . Một khi bạn bật robot, chân khơng cũng được bật lên Một q trình mệt mỏi của việc xây dựng Robot của chúng tơi là các cơng trình bằng gỗ. Chúng tơi phải khắc gỗ của chúng tơi và khoan một số lỗ để đặt các bộ cảm biến và máy hút bụi Bạn nên kiểm tra Ride Robot bằng mã sau đây khi bạn sắp xếp Motor và Motor trước khi kết nối Sensors Thiết lập void () { Serial.begin (9600); PinMode (9, OUTPUT); PinMode (10, OUTPUT); PinMode (11, OUTPUT); PinMode (12, OUTPUT); } Void loop () { Chậm trễ (1000); Serial.print ("chuyển tiếp"); DigitalWrite (9, CAO); DigitalWrite (10, LOW); DigitalWrite (11, CAO); DigitalWrite (12, LOW); Chậm trễ (500); Serial.print ("lùi"); DigitalWrite (9, LOW); DigitalWrite (10, CAO); DigitalWrite (11, LOW); DigitalWrite (12, CAO); } ((((void setup() { Serial.begin(9600); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); } void loop() { delay(1000); Serial.print("forward"); digitalWrite(9,HIGH); digitalWrite(10,LOW); digitalWrite(11,HIGH); digitalWrite(12,LOW); delay(500); Serial.print("backward"); digitalWrite(9,LOW); digitalWrite(10,HIGH); digitalWrite(11,LOW); digitalWrite(12,HIGH); } )))) Nếu tất cả mọi thứ hoạt động tốt thì bạn có thể kết nối các cảm biến với Arduino như trong Sơ đồ mạch và sử dụng Mã số đầy đủ ở cuối. Như bạn thấy, tơi đã lắp một cảm biến siêu âm lên phía trước hai cảm biến hồng ngoại hai bên robot. Tản nhiệt được lắp vào L293D chỉ trong trường hợp vi mạch nóng lên nhanh Bạn cũng có thể thêm vài phần phụ như thế này Đây là một sắp xếp Sweeping có thể được đặt trên cả hai đầu của phần phía trước đó sẽ đẩy bụi dọc theo các mặt vào khu vực hút Hơn nữa, bạn cũng có một lựa chọn để làm một phiên bản nhỏ hơn của máy hút bụi này như thế này ADC is the Analog to Digital converter, which converts analog data into digital format; usually it is used to convert analog voltage into digital format. Analog signal has infinite no of values like a sine wave or our speech, ADC converts them into particular levels or states, which can be measured in numbers as a physical quantity Instead of continuous conversion, ADC converts data periodically, which is usually known as sampling rate. Telephone modem is one of the examples of ADC, which is used for internet, it converts analog data into digital data, so that computer can understand, because computer can only understand Digital data The major advantage, of using ADC is that, we noise can be efficiently eliminated from the original signal and digital signal can travel more efficiently than analog one. That’s the reason that digital audio is very clear, while listening In present time there are lots of microcontrollers in market which has inbuilt ADC with one or more channels. And by using their ADC register we can interface. When we select 8051 microcontrollerfamily for making any project, in which we need of an ADC conversion, then we use external ADC Some external ADC chips are 0803,0804,0808,0809 and there are many more. Today we are going to interface 8 channel ADC with AT89s52 Microcontroller namely ADC0808/0809 Components: 8051 Microcontroller (AT89S52) ADC0808/0809 16x2 LCD Resistor (1k,10k) POT(10k x4) Capacitor(10uf,1000uf) Red led Bread board or PCB 7805 11.0592 MHz Crystal Power Connecting wires ADC0808/0809: ADC0808/0809 is a monolithic CMOS device and microprocessor compatible control logic and has 28 pin which gives 8bit value in output and 8 channel ADC input pins (IN0IN7) Its resolution is 8 so it can encode the analog data into one of the 256 levels (2 8) This device has three channel address line namely: ADDA, ADDB and ADDC for selecting channel. Below is the Pin Diagram for ADC0808: ADC0808/0809 requires a clock pulse for conversion. We can provide it by using oscillator or by using microcontroller In this project we have applied frequency by using microcontroller We can select the any input channel by using the Address lines, like we can select the input line IN0 by keeping all three address lines (ADDA, ADDB and ADDC) Low. If we want to select input channel IN2 then we need to keep ADDA, ADDB low and ADDC high. For selecting all the other input channels, have a look on the given table: ADC Channel Name ADDC PIN ADDB PIN ADDA PIN IN0 LOW LOW LOW IN1 LOW LOW HIGH IN2 LOW HIGH LOW IN3 LOW HIGH HIGH IN4 HIGH LOW LOW IN5 HIGH LOW HIGH IN6 HIGH HIGH LOW IN7 HIGH HIGH HIGH Circuit Description: Circuit of “Interfacing ADC0808 with 8051” is little complex which contains more connecting wire for connecting device to each other. In this circuit we have mainly used AT89s52 as 8051 microcontroller, ADC0808, Potentiometer and LCD A 16x2 LCD is connected with 89s52 microcontroller in 4bit mode. Control pin RS, RW and En are directly connected to pin P2.0, GND and P2.2. And data pin D4D7 is connected to pins P2.4, P2.5, P2.6 and P2.7 of 89s52 ADC0808 output pin are directly connected to port P1 of AT89s52. Address line pins ADDA, ADDB, AADC are connected at P3.0, P3.1, and P3.2 ALE (Address latch enable), SC (Start conversion), EOC (End of conversion), OE (Output enable) and clock pins are connected at P3.3, P3.4, P3.5, P3.6 and P3.7 And here we have used three potentiometers connected at pin 26, 27, and 28 of ADC0808 A 9 volt battery and a 5 volt voltage regulator namely 7805 are used for powering the circuit Working: In this project we have interfaced three channels of ADC0808. And for demonstration we have used three variable resistors. When we power the circuit then microcontroller initialize the LCD by using appropriate command, gives clock to ADC chip, selects ADC channel by using address line and send start conversion signal to ADC. After this ADC first reads selected ADC channel input and gives its converted output to microcontroller. Then microcontroller shows its value at Ch1 position in LCD. And then microcontroller changes ADC channel by using address line. And then ADC reads selected channel and send output to microcontroller. And show on LCD as name Ch2 And like wise for other channels Working of ADC0808 is much similar to working of ADC0804 In this, first microcontroller provides a 500 KHz clock signal to ADC0808, using the Timer 0 interrupt, as ADC requires clock signal to operate. Now microcontroller sends a LOW to HIGH level signal to ALE pin (its activehigh pin) of ADC0808 to enable the latch in the address Then by applying HIGH to LOW Level signal to SC (Start Conversion), ADC starts analog to digital conversion. And then wait for the EOC (End of Conversion) pin to go LOW When EOC goes LOW, it means analog to digital conversion has been completed and data is ready to use. After this, microcontroller enables the output line by applying a HIGH to LOW signal to OE pin of ADC0808 ADC0808 gives ratio metric conversion output at its output pins. And the formula for radiometric conversion is given by: Vin/(VfsVz)= Dx/(DmaxDmin) Where Vin is input voltage Vfs is full Vz is zero Dx is data point Dmax is Maximum Dmin is Minimum data limit for scale being data conversion Voltage voltage measure limit Program Explanation: In the program, first of all we include header file sand defines variable and input & output pins for ADC and LCD # include #include sbit ale=P3^3; sbit oe=P3^6; sbit sc=P3^4; sbit eoc=P3^5; sbit clk=P3^7; sbit ADDA=P3^0; //Address pins for selecting input channels sbit ADDB=P3^1; sbit ADDC=P3^2; #define lcdport P2 //lcd sbit rs=P2^0; sbit rw=P2^2; sbit en=P2^1; #define input_port P1 //ADC int result[3],number; Function for creating the delay has been created (void delay), along with some LCD functions like for LCD initialization, printing the string, for LCD commands etc. You can easily find them in Code Check this article for LCD interfacing with 8051 and its functions After this in main program we have initialize LCD and set the EOC, ALE, EO, SC pins accordingly. void main() { int i=0; eoc=1; ale=0; oe=0; sc=0; TMOD=0x02; TH0=0xFD; lcd_ini(); lcdprint(" ADC 0808/0809 "); And then program reads the ADC and stores ADC output in a variable and then sends it to LCD after decimal to ASCII conversion, using void read_adc() and void adc(int i) functions: void read_adc() { number=0; ale=1; sc=1; delay(1); ale=0; sc=0; while(eoc==1); while(eoc==0); oe=1; number=input_port; delay(1); oe=0; } void adc(int i) { switch(i) { case 0: ADDC=0; ADDB=0; ADDA=0; lcdcmd(0xc0); read_adc(); Code: # include #include sbit ale=P3^3; sbit oe=P3^6; sbit sc=P3^4; sbit eoc=P3^5; sbit clk=P3^7; sbit ADDA=P3^0; //Address pins for selecting input channels sbit ADDB=P3^1; sbit ADDC=P3^2; #define lcdport P2 //lcd sbit rs=P2^0; sbit rw=P2^2; sbit en=P2^1; #define input_port P1 //ADC int result[3],number; void timer0() interrupt 1 // Function to generate clock of frequency 500KHZ using Timer 0 interrupt { clk=~clk; } void delay(unsigned int count) { int i,j; for(i=0;i