LỜI NÓI ĐẦU LedCube dùng Arduinor
Đây là báo cáo đồ án môn học 1 đề tài tạo hiệu ứng cho LedCube dùng Arduinor. Trong đó cặp thu phát hồng ngoại được dùng làm cảm biến điều khiển hiệu ứng cho led. Đề tài đạt được đúng yêu cầu đề ra, mạch hoạt động tốt.
Lẽ tất nhiên, đồ án này không thể tránh khỏi nhiều thiếu sót, em rất mong nhận được sự đóng góp ý kiến từ phía các thầy cô để hoàn chỉnh đồ án cũng như phục vụ cho việc thực hiện đồ án môn học 2 & luận văn tốt nghiệp sau này.
Cuối cùng, em xin bày tỏ lòng biết ơn sâu sắc đến giáo viên hướng dẫn,Thầy HUỲNH HỮU PHƯƠNG, vì sự giúp đỡ, hướng dẫn tận tình của thầy trong suốt thời gian qua.
MỤC LỤC
Trang
LỜI NÓI ĐẦU.. 1
MỤC LỤC.. 2
CHƯƠNG 1: GIỚI THIỆU LEDCUBE.. 4
CHƯƠNG 2: GIỚI THIỆU VỀ ARDUINOR VI ĐIỀU KHIỂN ATMEGA 168. 5
2.1 Tổng quan.. 6
2.2 Tóm tắt thông tin.. 6
2.3 Nguồn.. 6
2.4 Bộ nhớ.. 7
2.5 I/O.. 7
2.6 Thông tin.. 7
2.7 Lập trình.. 7
2.8 USB quá dòng bảo vệ.. 7
2.9 Đặc điểm vật lý.. 7
CHƯƠNG 3: THÀNH PHẦN MẠCH LED CUBE.. 8
3.1. Khối LedCube.8
3.2. Mạch cảm biến.8
3.2.1. Mạch thu phát hồng ngoại.8
3.2.2. Khối so sánh sử dụng opam TL082.9
3.2.3. Kết quả đạt được. 11
3.3. Mạch dịch dùng 74HC595 và Transistor số. 12
3.3.1 IC 74HC595. 12
3.3.2 BJT.. 14
3.4 Tính toán trở hạn dòng cho led.18
3.5. Kết quả thực hiện.19
3.5.1. Sơ đồ nguyên lý.19
3.5.2. Kết quả đạt được.20
CHƯƠNG 4: LƯU ĐỒ GIẢI THUẬT.. 21
4.1. Chương trình chính. 21
4.2 Chương trình ngắt.22
CHƯƠNG 5: KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI. 23
CHƯƠNG 6: PHỤ LỤC.. 24
6.1 Danh sách hình vẽ.24
6.2 Code.25
6.3 Tài liệu tham khảo.56
CHƯƠNG 1: GIỚI THIỆU LEDCUBE
-LED Cube là một màn hình LED có khả năng biểu đạt thông tin và hình ảnh trực tiếp dưới dạng 3 chiều. LED Cube có khả năng tự chạy một mình hay điều khiển để thực hiện những hiệu ứng phức tạp.
-Khối LED Cube là quà tặng, lưu niệm trong những dịp lễ, ngày kỉ niệm, đám cưới hoặc dùng làm vật trưng bày trang trí, quảng cáo cho quán Cà Phê, Karaoke, nhà hàng, Bar, vũ trường , ... tạo cảm giác mới lạ và sinh động cho không gian xung quanh. LED Cube có cấu trúc dạng khối 3 chiều với nhiều kích thước khác nhau sẽ giúp bạn truyền tải được những nội dung vô cùng phong phú mà bạn khó có thể nói được bằng lời!!!
- Hiển thị các hiệu ứng từ đơn giản đến phức tạp với nhiều kiểu phong phú, đẹp mắt.
- Có khả năng hiển thị chữ , hình ảnh theo dạng 2 chiều và 3 chiều sinh động và khác biệt so với cách thông thường.
- Hiển thị các hiệu ứng khác nhau theo sự thay đổi của âm thanh xung quanh ( nhạc, giọng nói....)
- Điều khiển sự thay đổi hiệu ứng theo ý muốn từ xa hoặc chạy tự động.
- Hổ trợ giao tiếp và thay đổi nội dung từ máy vi tính trực tiếp thông qua cổng USB.
- Có khả năng thay đổi nội dung, tạo ý tưởng hiệu ứng theo mọi yêu cầu.
CHƯƠNG 2: GIỚI THIỆU VỀ ARDUINOR VI ĐIỀU KHIỂN ATMEGA 168
Hình 2.1 Sơ đồ chân và các khối chức năng của Atmega 168.
2.1 Tổng quan.
- Arduino Uno SMD là một phiên bản của Uno Arduino sử dụng ATmega168. Có 13 pin I/O, 6 ANALOG, thạch anh 16 MHz , kết nối USB, 1 jack cắm điện, header ICSP, và một nút reset. Nó cung cấp mọi thứ cần thiết để hỗ trợ các vi điều khiển, chỉ cần kết nối với máy tính bằng cáp USB hoặc một adapter AC-DC hoặc pin.
2.2 Tóm tắt thông tin.
Vi điều khiển |
ATmega168 |
Điện áp hoạt động |
5V |
Điện áp đầu vào (đề nghị) |
7-12V |
Điện áp vào (giới hạn) |
6-20V |
Digital I / O Pins |
13 |
Ngõ vào Analog Pins |
6 |
Dòng điện DC mỗi I/O |
40 mA |
Flash Memory |
16 KB |
SRAM |
1024B |
EEPROM |
512B |
Clock Speed |
16 MHz |
2.3 Nguồn.
- Uno Arduino được hỗ trợ thông qua kết nối USB hoặc một nguồn cung cấp điện bên ngoài. Nguồn điện được chọn tự động.Uno Arduino có thể hoạt động trên một nguồn cung cấp bên ngoài từ 6 đến 20 volt. Tuy nhiên, nếu được cung cấp ít hơn 5 volt, Uno Arduino có thể hoạt động không ổn định. Nếu sử dụng nhiều hơn 12V, Uno Arduino bị quá nóng và làm hỏng các linh kiện. Phạm vi đề nghị là 7 đến 12 volt.
Các chân điện như sau:
- VIN. điện áp đầu vào Arduino .
- 5V. Nguồn quy định cho vi điều khiển và các thành phần khác trên board.
- 3V3 3.3 v out. Dòng điện là 50 mA.
- GND. chân đất.
2.4 Bộ nhớ.
- ATmega168 có 16 KB, EEPROM 512B, SRAM 2014 B.
2.5 I/O.
- Có 13 I/O sử dụng như một đầu vào hoặc đầu ra: pinMode(), digitalWrite (), và digitalRead (). Hoạt động ở 5 volts. Mỗi pins có thể cung cấp hoặc nhận được tối đa 40 mA .
- Serial: 0 (RX) và 1 (TX) Được sử dụng để nhận (RX) và truyền (TX) TTL dữ liệu nối tiếp. Ngắt bên ngoài: Pin2 và 3.
- PWM: 3, 5, 6, 9, 10, và 11 Cung cấp 8-bit đầu ra PWM dung lệnh analogWrite ().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Những hỗ trợ chân SPI truyền thông bằng cách sử dụng thư viện SPI .
- LED: 13. Có một LED kết nối kỹ thuật số chân 13. Khi pin là giá trị cao, đèn LED, khi pin là LOW.
- Uno có 6 đầu vào tương tự, từ A0 đến A5, cung cấp 10 bit độ phân giải (tức là 1024 giá trị khác nhau).
2.6 Thông tin.
- Uno Arduino có một số cơ sở để giao tiếp với một máy tính, Arduino khác, hoặc vi điều khiển khác. ATmega168 cung cấp UART TTL (5V) giao tiếp nối tiếp, trong đó có sẵn trên các chân số 0 (RX) và 1 (TX).
2.7 Lập trình.
- Uno Arduino có thể được lập trình với phần mềm Arduino.Uno Arduino đi kèm với một bộ nạp khởi động cho phép bạn tải lên mã mới cho nó mà không cần sử dụng một lập trình phần cứng bên ngoài. Nó giao tiếp bằng cách sử dụng giao thức STK500.
2.8 USB quá dòng bảo vệ
- Uno Arduino có một polyfuse resettable bảo vệ cổng USB của máy tính của bạn khi quá dòng. Mặc dù hầu hết các máy tính cung cấp bảo vệ bên trong, cầu chì cung cấp thêm một lớp bảo vệ. Nếu dòng điện hơn 500mA được áp dụng vào cổng USB, các cầu chì sẽ tự động phá vỡ kết nối.
2.9 Đặc điểm vật lý.
- Chiều dài và chiều rộng tối đa của PCB Uno là 2,7 và 2,1 inch tương ứng, với các kết nối USB và jack cắm điện mở rộng vượt ra ngoài kích thước cũ.
CHƯƠNG 3: THÀNH PHẦN MẠCH LED CUBE
3.1. Khối LedCube.
- Led cube được ghép lại từ rất nhiều led nhỏ tạo thành hình khối , với khối này ta có thể
xây dựng được các hiệu ứng.
Hình 3.1.1 Khối LedCube.
3.2. Mạch cảm biến.
3.2.1. Mạch thu phát hồng ngoại.
a. Khái niệm về hồng ngoại.
- Ánh sáng hồng ngoại là ánh sang không thể nhìn thấy được bằng mắt thường, có bước song khoảng từ 0.86um đến 0.98um. Có vận tốc truyền bằng vận tốc ánh sáng.
- Tia hồng ngoại có thể truyền đi được nhiều kênh tín hiệu. Nó được ứng dụng rộng rãi trong công nghiệp. Lượng thông tin truyền đi với ánh sang hồng ngoại lớn gấp nhiều lần so với song điện từ mà người ta vẫn dùng. Lượng thông tin có thể đạt 3 mega bit/s.
- Tia hồng ngoại dễ bị hấp thụ, khả năng xuyên thấu kém. Trong điều khiển từ xa tia bằng hồng ngoại, chùm tia hồng ngoại phát đi hẹp, có hướng, do đó khi thu phải đúng hướng. Sóng hồng ngoại có những đặc tính quan trọng giống như ánh sang (sự hội tụ qua thấu kính, tiêu cự …). Ánh sáng thường và ánh sang hồng ngoại khác nhau rất rõ trong sự xuyên suốt qua vật chất. Có những vật chất ta thấy nó dưới một màu xám đục nhưng với ánh sáng hồng ngoại nó trởnên xuyên suốt . Vì vật liệu bán dẫn “trong suốt” đối với ánh sáng hồng ngoại , tia hồng ngoại không bị yếu đi khi nó vượt qua các lớp bán dẫn để đi ra ngoài .
b. Nguyên tắc thu phát hồng ngoại.
- Khối thiết bị phát : là một LED hồng ngoại.
- Khối thiết bị thu : Tia hồng ngoại từ phần phát được tiếp nhận bởi LED thu hồng ngoại.
3.2.2. Khối so sánh sử dụng opam TL082.
- Opam TL082 có chi phí thấp, tốc độ cao, có 2 JFET khuếch đại. Opam được sử dụng trong các ứng dụng tích hợp tốc độ cao, D / A chuyển đổi mẫu nhanh, và các mạch bù đắp điện áp đầu vào thấp, trở kháng đầu vào cao, tốc độ quay cao và băng thông rộng.
Pins:
Hình 3.2.2.1 Opam TL082.
Mạch so sánh:
Ðiện thế ngõ ra bảo hòa:
Hình 3.2.2.2 Mạch so sánh.
Trong đó A là độ lợi vòng hở của op-amp. Vì A rất lớn nên theo công thức trên v0 rất lớn.
Khi Ed nhỏ, v0 được xác định. Khi Ed vượt quá một trị số nào đó thì v0 đạt đến trị số bảo hòa và được gọi là VSat.. Trị số của Ed tùy thuộc vào mỗi op-amp và có trị số vào khoảng vài chục μV.
- Khi Ed âm, mạch đảo pha nên v0=-VSat
- Khi Ed dương, tức v1>v2 thì v0=+VSat.
3.2.3. Kết quả đạt được
a. Sơ đồ nguyên lý
Hình 3.2.3.1 Sơ đồ nguyên lý thu phát hồng ngoại.
b.Kết quả thực hiện.
Hình 3.2.3.2 Mạch thực tế thu phát hồng ngoại.
3.3. Mạch dịch dùng 74HC595 và Transistor số
3.3.1 IC 74HC595
Hình 3.3.1.1 IC 74HC595.
- Chức năng :
- Là ic ghi dịch 8 bit kết hợp chốt dữ liệu , đầu vào nối tiếp đầu ra song song.
- Chức năng: Thường dùng trong các mạch quét led 7 , led matrix …để tiết kiệm số chân VDK tối đa (3 chân) . Có thể mở rộng số chân vi điều khiển bao nhiêu tùy thích mà không ic nào có thể làm được bằng việc mắc nối tiếp đầu vào dữ liệu các ic với nhau . - Sơ đồ chân:
PINS 1-7, 15 |
Q0 " Q7 |
Output Pins |
|
PIN 8 |
GND |
Ground, Vss |
|
PIN 9 |
Q7" |
Serial Out |
|
PIN 10 |
MR |
Master Reclear, active low |
|
PIN 11 |
SH_CP |
Shift register clock pin |
|
PIN 12 |
ST_CP |
Storage register clock pin (latch pin) |
|
PIN 13 |
OE |
Output enable, active low |
|
PIN 14 |
DS |
Serial data input |
|
PIN 16 |
Vcc |
Positive supply voltage |
Sơ đồ hoạt động của chíp :
Hình 3.3.2 Sơ đồ hoạt động của chip 74HC595.
...........................
CHƯƠNG 6: PHỤ LỤC
6.1 Danh sách hình vẽ.
Hình 2.1 Sơ đồ chân và các khối chức năng của Atmega 168.5
Hình 3.1.1 Khối LedCube.8
Hình 3.2.2.1 Opam TL082. 9
Hình 3.2.2.2 Mạch so sánh. 10
Hình 3.2.3.1 Sơ đồ nguyên lý thu phát hồng ngoại.11
Hình 3.2.3.2 Mạch thực tế thu phát hồng ngoại.11
Hình 3.3.1.1 IC 74HC595.12
Hình 3.4.1.1 Phân cực BJT.. 18
Hình 3.5.1.1 Sơ đồ nguyên lý 74HC595 và BJT.. 19
Hình 3.5.1.2 Mạch thực tế 74HC595 và BJT.20
Hình 4.1.1 Lưu đồ chương trình chính.21
Hình 4.1.2 Lưu đồ chương trình ngắt.22
Hình 5.1 kết quả đạt được.23
6.2 Code.
#include
#include
int data = 7;
int clock = 4;
int latch = 3;
int a = 0;
int t1 = 8;
int t2 = 9;
int t3 = 10;
int t4 = 11;
int t5 = 12;
int c25 = 6;
void setup()
{
pinMode(t1, OUTPUT);
pinMode(t2, OUTPUT);
pinMode(t3, OUTPUT);
pinMode(t4, OUTPUT);
pinMode(t5, OUTPUT);
pinMode(c25, OUTPUT);
pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
pinMode(2, INPUT);
EIMSK |= (1 << INT0);
// chon ngat canh len: 11
EICRA = _BV(ISC01) | _BV(ISC00);
}
ISR(INT0_vect)
{
a++;
if (a>=6)
{
a=0;
}
}
void loop()
{
switch (a)
{
case 0:
shiftOut(data, clock, MSBFIRST,0XFF);
shiftOut(data, clock, MSBFIRST,0XEF);
shiftOut(data, clock, MSBFIRST,0XFF);
digitalWrite(latch, HIGH);
delay(25);
digitalWrite(latch, LOW);
digitalWrite(t2,LOW);
digitalWrite(t1, HIGH);
digitalWrite(t3,LOW);
digitalWrite(t4,LOW);
digitalWrite(t5,LOW);
digitalWrite(c25, HIGH);
delay(75);
digitalWrite(t1, HIGH);
digitalWrite(t2,HIGH);
digitalWrite(t3,LOW);
digitalWrite(t4,LOW);
digitalWrite(t5,LOW);
digitalWrite(c25, HIGH);
delay(75);
digitalWrite(t1, HIGH);
digitalWrite(t2,HIGH);
digitalWrite(t3,HIGH);
digitalWrite(t4,LOW);
digitalWrite(t5,LOW);
digitalWrite(c25, HIGH);
delay(75);
digitalWrite(t1, HIGH);
digitalWrite(t2,HIGH);
digitalWrite(t3,HIGH);
digitalWrite(t4,HIGH);
digitalWrite(t5,LOW);
digitalWrite(c25, HIGH);
delay(75);
digitalWrite(t1, HIGH);
digitalWrite(t2,HIGH);
digitalWrite(t3,HIGH);
digitalWrite(t4,HIGH);
digitalWrite(t5,HIGH);
digitalWrite(c25, HIGH);
shiftOut(data, clock, MSBFIRST,0XFF);
shiftOut(data, clock, MSBFIRST,0XEF);
shiftOut(data, clock, MSBFIRST,0XBE);
digitalWrite(c25, HIGH);
digitalWrite(latch, HIGH);
delay(25);
digitalWrite(latch, LOW);
delay(75);
digitalWrite(c25, HIGH);
shiftOut(data, clock, MSBFIRST,0XFF);
shiftOut(data, clock, MSBFIRST,0XEF);
shiftOut(data, clock, MSBFIRST,0X7B);
digitalWrite(c25, HIGH);
digitalWrite(latch, HIGH);
delay(25);
digitalWrite(latch, LOW);
delay(75);
shiftOut(data, clock, MSBFIRST,0XFF);
shiftOut(data, clock, MSBFIRST,0XEE);
shiftOut(data, clock, MSBFIRST,0XEF);
digitalWrite(c25, HIGH);
digitalWrite(latch, HIGH);
delay(25);
digitalWrite(latch, LOW);
delay(75);
shiftOut(data, clock, MSBFIRST,0XFF);
shiftOut(data, clock, MSBFIRST,0X8F);
shiftOut(data, clock, MSBFIRST,0XFF);
digitalWrite(c25, HIGH);
digitalWrite(latch, HIGH);
delay(25);
digitalWrite(latch, LOW);
delay(75);
shiftOut(data, clock, MSBFIRST,0XFB);
shiftOut(data, clock, MSBFIRST,0XEF);
shiftOut(data, clock, MSBFIRST,0XFF);
digitalWrite(c25, LOW);
digitalWrite(latch, HIGH);
delay(25);
digitalWrite(latch, LOW);
delay(75);
shiftOut(data, clock, MSBFIRST,0XBD);
shiftOut(data, clock, MSBFIRST,0XEF);
shiftOut(data, clock, MSBFIRST,0XFF);
digitalWrite(c25, HIGH);
digitalWrite(latch, HIGH);
delay(25);
digitalWrite(latch, LOW);
delay(75);