Ngày nay, với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ thống đo lường và điều khiển dần dần được tự động hóa. Với những kỹ thuật tiên tiến như vi xử lí, vi mạch số đựơc ứng dụng vào lĩnh vực đo lường và điều khiển, thì các hệ thống đo lường và điều khiển cơ khí thô sơ, với tốc độ xử lí chậm chạp ít chính xác được thay thế bằng các hệ thống đo lường và điều khiển tựđộng với các lệnh chương trình đã được thiết lập trước.
Trong quá trình sản xuất ở các nhà máy, xí nghiệp hiện nay, việc đo và khống chế nhiệt độ tự động là một yêu cầu hết sức cần thiết và quan trọng. Vì nếu nắm bắt được nhiệt độ làm việc của các hệ thống, dây chuyền sản xuất giúp ta biết được tình trạng làm việc của chúng và có những xử lý kịp thời tránh được những hư hỏng và sự cố có thể xảy ra.
Nhận biết được tầm quan trọng của việc đo và khống chế nhiệt độ và đồng thời đây cũng là đồ án môn học nên nhóm sinh viên đã quyết tâm nghiên cứu đề tài này , một phần vừa để kiểm chứng khả năng kiến thức của bản thân , hai là để trau dồi thêm những kiến thức mà mình còn thiếu để có thể phục vụ học tập một cách tốt nhất .
20 trang |
Chia sẻ: lvbuiluyen | Lượt xem: 7100 | Lượt tải: 2
Bạn đang xem nội dung tài liệu Đề tài Thiết kế mạch đo nhiệt độ, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
BÀI TẬP LỚN
Môn : Đo Lường – Cảm Biến
Đề tài
Thiết kế mạch đo nhiệt độ
Giáo viên hướng dẫn: Hà Thanh Sơn
Sinh viên thực hiện : Nhóm sv 509121
Lê Tuấn Anh MSSV : 509121002
Hoàng Ngọc Tuấn Anh MSSV : 509121001
Lã Thị Thu Thủy MSSV : 509121029
Phạm Tuân MSSV : 509121031
Vũ Thành Luân MSSV : 509121018
Trần Văn Duy MSSV : 509121007
Hà nội, tháng 12 năm 2011
PHẦN A: PHẦN MỞ ĐẦU
1. Đặt vấn đề.
Ngày nay, với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ thống đo lường và điều khiển dần dần được tự động hóa. Với những kỹ thuật tiên tiến như vi xử lí, vi mạch số … đựơc ứng dụng vào lĩnh vực đo lường và điều khiển, thì các hệ thống đo lường và điều khiển cơ khí thô sơ, với tốc độ xử lí chậm chạp ít chính xác được thay thế bằng các hệ thống đo lường và điều khiển tựđộng với các lệnh chương trình đã được thiết lập trước.Trong quá trình sản xuất ở các nhà máy, xí nghiệp hiện nay, việc đo và khống chế nhiệt độ tự động là một yêu cầu hết sức cần thiết và quan trọng. Vì nếu nắm bắt được nhiệt độ làm việc của các hệ thống, dây chuyền sản xuất… giúp ta biết được tình trạng làm việc của chúng và có những xử lý kịp thời tránh được những hư hỏng và sự cố có thể xảy ra.Nhận biết được tầm quan trọng của việc đo và khống chế nhiệt độ và đồng thời đây cũng là đồ án môn học nên nhóm sinh viên đã quyết tâm nghiên cứu đề tài này , một phần vừa để kiểm chứng khả năng kiến thức của bản thân , hai là để trau dồi thêm những kiến thức mà mình còn thiếu để có thể phục vụ học tập một cách tốt nhất .
2. Giới thiệu đề tài.
Đề tài “Thiết kế mạch đo nhiệt độ” của chúng em gồm hai phần chính:
+ Phần 1 là phần Cơ sơ lý thuyết, phần này em đi sâu nghiên cứu lý thuyết của những thiết bị sẽ được sử dụng trong mạch đo nhiệt độ đó là lý thuyết của cảm biến, bộ biến đổi tương tự – số và cấu trúc máy vi tính. Phần này chiếm vị trí hết sức quan trọng trong đồ án, nó chính là nền tảng cho việc lựa chọn linh kiện và thiết kế mạch một cách thích hợp nhất. Nói cách khác phần 1 là phần cơ sở để thực hiện phần 2.
+ Phần 2 là phần thực hành lắp ráp mạch, phần này là phần chứng minh sự hiểu biết của chúng em về lý thuyết dựa trên việc ứng dụng lý thuyết vào thực tế. Ở phần này, em thực hiện việc thiết kế, tính toán và lựa chọn linh kiện cho mạch. Sau cùng là việc kiểm tra mạch, tinh chỉnh và thiết kế mạch.
3. Mục đích nghiên cứu.
Mục đích trước hết khi thực hiện đề tài này là hoàn thành môn học và đạt kết quả một cách tốt nhất
+ Cụ thể khi nghiên cứu thực hiện đề tài này chúng em muốn phát huy thành quả của kiến thức mà mình đã học được và đồng thời cũng là việc chứng thực sự đúng đắn của kiến thức.
+ Mặt khác quá trình nghiên cứu thực hiện đề tài là một cơ hội để chúng em tự phát huy tính sáng tạo, khả năng giải quyết một vấn đề theo yêu cầu đặt ra.
+ Ngoài ra đồ án này cũng có thể làm tài liệu tham khảo cho những sinh viên khóa sau. Giúp họ hiểu rõ hơn về mạch đo nhiệt độ và sẽ giúp họ một phần nào trong việc hoàn chỉnh hệ thống đo và không chế nhiệt độ.
+ Để làm được một mạch thật hoàn chỉnh chúng em phải trải qua rất nhiều khâu. Qua đây chúng em có một cách nhìn tổng quát cho một dây chuyền sản xuất các ứng dụng của ngành điện tử.
Chính những lợi ích đó cũng là những mục đích mà nhóm sinh viên chúng em mong muốn đặt được.
PHẦN B: CƠ SỞ LÝ THUYẾT.
Chương 1: Các linh kiện được sử dụng.
1.ATMEGA16:
Vi điều khiển là gì ?
Vi điều khiển là một máy tính được tích hợp trên một chíp, nó thường được sử dụng để điều khiển các thiết bị điện tử. Vi điều khiển, thực chất, là một hệ thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các mô đun vào/ra, các mô đun biến đổi số sang tương tự và tương tự sang số,... Ở máy tính thì các mô đun thường được xây dựng bởi các chíp và mạch ngoài.
Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng. Nó xuất hiện khá nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, đầu đọc DVD, thiết bị đa phương tiện, dây chuyền tự động…
Vi điều khiển AVR.
Vi điều khiển AVR (Atmel Norway design) thuộc họ vi điều khiển Atmel, nó là họ Vi điều khiển khá mới trên thị trường cũng như đối với người sử dụng. Đây là họ Vi Điều Khiển được chế tạo theo kiến trúc RISC (Reduced Intruction Set Computer) có cấu trúc khá phức tạp. Ngoài các tính năng như các họ VĐK khác, nó còn tích hợp nhiều tính năng mới rất tiện lợi cho người thiết kế và lập trình.
Sự ra đời của AVR bắt nguồn từ yêu cầu thực tế là hầu hết khi cần lập trình cho vi điều khiển, chúng ta thường dùng những ngôn ngữ bậc cao HLL (Hight Level Language) để lập trình ngay cả với loại chip xử lí 8 bit trong đó ngôn ngữ C là ngôn ngữ phổ biến nhất. Tuy nhiên khi biên dịch thì kích thước đoạn mã sẽ tăng nhiều so với dùng ngôn ngữ Assembly. Hãng Atmel nhận thấy rằng cần phải phát triển một cấu trúc đặc biệt cho ngôn ngữ C để giảm thiểu sự chênh lệch kích thước mã đã nói trên. Và kết quả là họ vi điều khiển AVR ra đời với việc làm giảm kích thước đoạn mã khi biên dịch và thêm vào đó là thực hiện lệnh đúng đơn chu kỳ máy với 32 thanh ghi tích lũy và đạt tốc độ nhanh hơn các họ vi điều khiển khác từ 4 đến 12 lần. Vì thế nghiên cứu AVR là một đề tài khá lý thú và giúp cho sinh viên biết thêm một họ vi điều khiển vào loại mạnh nhất hiện nay.
Tổng quan về vi điều khiển atmega16.
Giới thiệu.
ATMEGA 16 là bộ vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựa trên kiến trúc RISC (Reduced Intruction Set Computer). Với công nghệ này cho phép các lệnh thực thi chỉ trong một chu kì xung nhịp, vì thế tốc độ xử lý dữ liệu có thể đạt đến 1 triệu lệnh trên giây ở tần số 1 Mhz. Vi Điều Khiển này cho phép người thiết kế có thể tối ưu hoá mức độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lí.
Phần cốt lõi của AVR kết hợp tập lệnh phong phú về số lượng với 32 thanh ghi làm việc đa năng. Toàn bộ 32 thanh ghi đều được nối trực tiếp với ALU (Arithmetic Logic Unit), cho phép truy cập 2 thanh ghi độc lập bằng một chu kì xung nhịp. Kiến trúc đạt được có tốc độ xử lý nhanh gấp 10 lần vi điều khiển dạng CISC (Complex Intruction Set Computer) thông thường.
Về Cấu trúc
- Được chế tạo theo kiến trúc RISC, hiệu suất cao và điện năng tiêu thụ thấp.
- Bộ lệnh gồm 118 lệnh, hầu hết đều thực thi chỉ trong một chu kì xung nhịp.
- 32x8 thanh ghi làm việc đa dụng.
- 8kb Flash ROM lập trình được ngay trên hệ thống.
+ Giao diện nối tiếp SPI cho phép lập trình ngay trên hệ thống.
+ Cho phép 1000 lần ghi/xoá.
- Bộ EEPROM 512 byte.
+ Cho phép 100.000 ghi/xoá.
- Bộ nhớ SRAM 512 byte.
- Bộ biến đổi ADC 8 kênh, 10 bit.
- 32 ngõ I/O lập trình được.
- Bộ truyền nối tiếp bất đồng bộ vạn năng UART.
- Vcc=2.7V đến 6V.
- Tốc độ làm việc: 0 đến 8 MHz.
- Tốc độ xử lí lệnh đến 8 MIPS ở 8 MHz nghĩa là 8 triệu lệnh trên giây.
- Bộ đếm thời gian thực (RTC) với bộ dao động và chế độ đếm tách biệt.
- 2 bộ Timer 8 bit và 1 bộ Timer 16 bit với chế độ so sánh và chia tần số tách biệt và chế độ bắt mẫu.
- Ba kênh điều chế độ rộng xung PWM.
- Có đến 13 interrupt ngoài và trong.
- Bộ định thời Watchdog lập trình được, tự động reset khi treo máy.
- Bộ so sánh tương tự.
- Ba chế độ ngủ: chế độ rỗi (Idle), tiết kiệm điện (Power save) và chế độ Power Down.
Ý nghĩa các chân của ATMEGA 16
- VCC: Điện áp nguồn nuôi.
- GND: Nối mass.
- AVCC: cấp điện áp so sánh cho bộ ADC.
- AREF: điện áp so sánh tín hiệu vào ADC.
- PortA (PA7…PA0): PortA là Port vào/ ra hai hướng 8 bit, các chân của Port có các điện trở nối lên nguồn dương. Các chân ra của Port A có thể cho phép dòng điện 20mA đi qua và trực tiếp điều khiển LED hiển thị.
Khi các chân PA0 đến PA7 là các lối vào và được đặt xuống mức thấp từ bên ngoài, chúng sẽ là nguồn dòng nếu các điện trở nối lên nguồn dương được kích hoạt. Các chân của cổng A ở vào trạng thái có điện trở cao khi tín hiệu reset ở mức tích cực hoặc ngay cả khi không có tín hiệu xung clock.
Port A: cung cấp các đường địa chỉ/ dữ liệu vào/ ra hoạt động theo kiểu đa hợp kênh khi dùng bộ nhớ SRAM ở bên ngoài. Port A còn có thêm chức năng là ngõ vào tương tự và đưa đến bộ chuyển đổi AD.
Các Port B, C, D tương tự như Port A.
- RESET: Lối vào đặt lại. Bộ vi điều khiển sẽ được đặt lại khi chân này ở mức thấp trong hơn 50ns, các xung ngắn hơn không tạo ra tín hiệu đặt lại.
- XTAL1: Lối vào bộ khuếch đại đảo và lối vào mạch tạo xung nhịp bên trong.
- XTAL2: Lối ra bộ khuếch đại đảo.
- XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một bộ khuếch đại đảo. Bộ khuếch đại này được bố trí để làm bộ tạo dao động trên chip. Một bộ tinh thể thạch anh hoặc một bộ cộng hưởng gốm có thể được sử dụng. Để điều khiển bộ vi điều khiển từ một nguồn xung nhịp bên ngoài, chân XTAL2 để trống, còn chân XTAL1 được nối với bộ dao động bên ngoài.
- ICP: Là chân vào cho chức năng bắt tín hiệu vào bộ timer/ counter1.
- OC1B: Là chân ra PWM, ngõ ra so sánh của timer/ counter1.
- ALE: Là chân tín hiệu cho phép chốt địa chỉ được dùng khi truy nhập bộ nhớ ngoài. Xung ALE được dùng để chốt 8 bit địa chỉ thấp vào một bộ chốt địa chỉ trong chu kỳ truy cập bộ nhớ thứ nhất. Sau đó các chân AD0-7 được dùng làm các đường dữ liệu trong chu kỳ truy nhập bộ nhớ thứ hai.
2.Cảm biến nhiệt LM35.
LM35 là một họ IC cảm biến nhiệt độ sản xuất theo công nghệ bán dẫn dựa trên các chất bán dẫn dễ bị tác động bởi sự thay đổi của nhiệt độ , đầu ra của cảm biến là điện áp(V) tỉ lệ với nhiệt độ mà nó được đặt trong môi trường cần đo.Họ LM35 có rất nhiều loại và nhiều kiểu đóng vỏ khác nhau.
Cảm biến nhiệt độ LM35
Nguyên lý làm việc :
Nguyên lý của chúng là dựa trên mức độ phân cực của các lớp P-N tuyến tính với nhiệt độ môi trường.
Khi làm việc LM35 sẽ làm việc dựa vào sự thay đổi nhiệt độ làm cho điện áp ra thay đổi. Điện áp này được phân áp từ một điện áp chuẩn có trong mạch.
Đặc điểm nổi bật :
+ Độ chính xác cao, cảm biến nhạy, ở nhiệt độ 250°C nó sai số không quá 1%.
+ Đo nhiệt độ với thang đo nhiệt bách phân (0°C).
+ Độ phân giải : 10mV/1°C.
+ Khả năng đo nhiệt độ trong khoảng: - 55 đến +150 (0°C) .
+ Nguồn áp hoạt động : 4V đến 30V.
+ Điện áp đầu ra : +6V đến -1V.
+ Dòng làm việc : từ 400μA đến 5mA.
Ưu điểm: Rẻ tiền, dễ chế tạo,chống nhiễu tốt, mạch xử lý đơn giản.
Khuyết điểm: Không chịu nhiệt độ cao, kém bền. Nếu vượt ngưỡng bảo vệ có thể làm hỏng cảm biến.
+ Thường dùng: Đo nhiệt độ không khí, dùng trong các thiết bị đo, bảo vệ các mạch điện tử.
3. LCD 16x2.
Đây là loại gồm 16 ký tự x2 dòng , mỗi ký tự được tạo ra từ một ma trận điểm sáng kích cỡ 5×7 hoặc 5×10
Sơ đồ chân.
Các Text LCD theo chuẩn HD44780U thường có 16 chân trong đó 14 chân kết nối với bộ điều khiển và 2 chân nguồn cho “đèn LED nền”. Thứ tự các chân thường được sắp xếp như trong bảng :
Trong một số LCD 2 chân LED nền được đánh số 15 và 16 nhưng trong một số trường hợp 2 chân này được ghi là A (Anode) và K (Cathode). Hình dưới đây mô tả cách kết nối LCD với nguồn và mạch điều khiển.
Kết nối Text LCD.
Chân 1 và chân 2 là các chân nguồn, được nối với GND và nguồn 5V. Chân 3 là chân chỉnh độ tương phản (contrast), chân này cần được nối với 1 biến trở chia áp như trong hình 2.Trong khi hoạt động, chỉnh để thay đổi giá trị biến trở để đạt được độ tương phản cần thiết, sau đó giữ mức biến trở này. Các chân điều khiển RS, R/W, EN và các đường dữ liệu được nối trực tiếp với vi điều khiển. Tùy theo chế độ hoạt động 4 bit hay 8 bit mà các chân từ D0 đến D3 có thể bỏ qua hoặc nối với vi điều khiển.
4. Thạch anh.
-Thạch anh điện tử: 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. Linh kiện thạch anh 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.
- Như vậy nếu ta đặt một điện áp xoay chiều vào thì nó sẽ biến dạng theo tần số của điện áp đó.
Khi thay đổi đến một tần số nào đó, thì nó sẽ cộng hưởng. Mạch tương đương của nó gồm một L và một C nối tiếp với nhau. Cả cụm ấy song song với một C khác và một R cách điện.
- 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ó. Mỗi tinh thể thạch anh có 2 tần số cộng hưởng: tần số cộng hưởng nối tiếp, và tần số cộng hưởng song song. Hai tần số này khá gần nhau và 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.
- Mạch dao động thạch anh: cho ra tần số rất ổn định, sử dụng rất nhiều trong các đồng hồ điện tử (như đồng hồ đeo tay, đồng hồ để bàn...), trong các thiết bị đo lường điện tử (tạo xung chuẩn), trong mạch đồng bộ màu của TV, VCR, trong các thiết bị tin học (máy vi tính, các thiết bị nối với máy vi tính), trong các nhạc cụ điện tử như Piano điện, organ...
-Mạch lọc tích cực dùng Thạch anh: sử dụng nhiều trong các mạch khuếch đại trung tần của các máy thu thông tin liên lạc, TV, Radio...
5. Diod :
-Mô tả: Diode được cấu tạo từ 2 lớp bán dẫn tiếp xúc với nhau. Diode có
2 cực Anốt và Katốt. Nó chỉ cho dòng điện đi theo 1 chiều từ Anốt sang
Katốt(Chính xác là khả năng cản trở dòng điện theo chiều AK là rất nhỏ,
Còn KA là rất lớn). Nó được dùng như van 1 chiều trong mạch điện.
-Phân loại:
Theo chức năng có một số loại diode ngoài diode chuẩn. Một số loại diode thường gặp:
Diode chuẩn phổ biến: 4007,4004,…
+ Led: Diode có khả năng phát sáng.
+ Diode zener: dùng để ổn định điện áp. Hoạt động ở chế độ phân cực ngược(KA).
+ Photo diode: Khi không có ánh sáng nó hoạt động như 1 diode thường còn khi có ánh sáng nó dẫn theo cả 2 hướng (KA,AK)
Có 1 loại diode có tác dụng đặc biệt đó là diode zener dùng để ổn áp.
Led(Light Emitting Diode) : Là diode có khả năng phát sáng các bảng điện tử mà các bạn nhìn thấy trên phố là tập hợp của rất nhiều led.
Tác dụng của led là làm đèn báo.
Diode phát laze cũng là 1 loại led.
Điều cần ghi nhớ đó là hiệu điện thế giữa 2 đầu của diode khoảng 0,6V.
6. Tụ.
Tụ điện là linh kiện cũng được dùng phổ biến như điện trở. Sự khác nhau giữa tụ điện và điện trở đó là sự cản trở của tụ điện phụ thuộc vào tần số điện áp. Đặc trưng cho tính cản trở của tụ là dung kháng.
Tính theo công thức sau:
f: tần số điện áp- Hz.
C: giá trị của tụ điện- Fara.
Ký hiệu của tụ điện:
Tụ điện phân cực Tụ điện không phân cực.
Sự khác nhau giữa tụ phân cực và không phân cực: Tụ không phân cực thì 2 cực của tụ có vai trò như nhau, giá trị của tụ không phân cực thường nhỏ( picro Fara). Tụ phân cực thì có 2 cực tính dương và âm không thể dùng lẫn lộn. Giá trị của tụ phân cực thường lớn 1 đến hàng ngàn uF(Micro Fara).
Phân loại:
Tụ điện trong thực tế được phân ra làm nhiều loại và theo nhiều cách khác nhau nhưng có thể kể ra là: tụ thường, tụ hóa, tụ xoay, vv..
+ Theo chất liệu có tụ giấy, tụ gốm, tụ sứ, vv…
+ Bản chất tụ điện là một kho điện nó có khả năng nạp điện và cho tới khi đã bão hòa thì nó sẽ lại phóng điện
Sơ đồ nạp – phóng của tụ.
Do vậy mà tụ điện được sử dụng đặc biệt trong mạch tạo dao động, tạo xung, mạch lọc vv…
Chú ý khi sử dụng tụ hóa do đặc thù nó có chân + và chân – nên khi đấu vào mạch ta cần chú ý chiều của nó.
-Tụ hóa :
Cách đoc giá trị tụ điện:
Tụ không phân cực, phổ biến là tụ gốm( tụ đất), đọc giống đọc trở dán. Đơn vị là pF.
Tụ phân cực( tụ hóa) giá trị và cực tính ghi trên tụ.
Tụ xoay:
Ngoài loại tụ có giá trị thay đổi bằng cách vặn vít như biến trở.
6.IC 7805.
Với những mạch điện không đòi hỏi độ ổn định của điện áp quá cao, sử dụng IC ổn áp thường được người thiết kế sử dụng vì mạch điện khá đơn giản. Các loại ổn áp thường được sử dụng là IC 78xx, với xx là điện áp cần ổn áp. Ví dụ 7805 ổn áp 5V, 7812 ổn áp 12V.
Việc dùng các loại IC ổn áp 78xx tương tự nhau, dưới đây là minh họa cho IC ổn áp 7805.
Sơ đồ phía dưới IC 7805 có 3 chân:
+ Chân số 1 là chân IN (hình vẽ trên).
+ Chân số 2 là chân GND (hình vẽ trên).
+ Chân số 3 là chân OUT (hình vẽ trên).
Ngõ ra OUT luôn ổn định ở 5V dù điện áp từ nguồn cung cấp thay đổi. Mạch này dùng để bảo vệ những mạch điện chỉ hoạt động ở điện áp 5V (các loại IC thường hoạt động ở điện áp này). Nếu nguồn điện có sự cố đột ngột: điện áp tăng cao thì mạch điện vẫn hoạt động ổn định nhờ có IC 7805 vẫn giữ được điện áp ở ngõ ra OUT 5V không đổi.
Mạch trên lấy nguồn một chiều từ một máy biến áp với điện áp từ 7V đến 9V để đưa vào ngõ IN. Khi kết nối mạch điện, do nhiều nguyên nhân, người dùng dễ nhầm lẫn cực tính của nguồn cung.
Chương 2 : Thiết kế và láp ráp mạch.
Sơ đồ nguyên lý mạch.
Khối nguồn.
Khối tạo xung sử dụng thạch anh.
Các chân nạp chip.
Khối hiển thị sử dụng LCD.
Khối thu và xử lý tín hiệu sử dụng LM35 và ATMEGA16.
Sơ đồ tổng quát.
Lắp ráp mạch.
- mạch được lắp ráp và kiểm tra theo sơ đồ nguyên lý đã có ở trên.
3. cosde lập trình
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.8 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
Project :
Version :
Date : 12/5/2011
Author : F4CG
Company : F4CG
Comments:
Chip type : ATmega16
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include
#include
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include
#include
#define ADC_VREF_TYPE 0x60
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
// Declare your global variables here
void main(void)
{
char y;
char lcd_buffer[20];
float x;
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Tim