welkyb
Присъединил се: 20 Януари 2009 Мнения: 2
| 03 юли 2009 18:05 atmega8L AVR със сензора за температура | | |
|
| Здрасти, Аз правя моята първа AVR EXP използва температурата на сензора LM35 към небето синьо зелено или червено водена в зависимост от температурата на помещението. • Свързани светодиодите да PORT Б на atmega8L UC и температурата на сензора за ADC 3 входа. • Използване на вътрешния осцилатор 1MHz като clk, вътрешен референтен напрежение от 2,56 като референтни напрежение в свободно RUNING готовност. • ADLAR = 0, т.е. правото коригира. • Свързани 0.1uF един развързващ кондензатор в VREF ПИН по дейташитове, "Вътрешен 2.56V Напрежение Референтен с външни кондензатор в Aref ПИН". • Използване на prolight светодиоди 1W (за добро интензитет), транзистор в наситеността с Ic около 10 mA. Според това, което HV разбира със сензора за температура 10,0 СрН / ˚ С мащаба фактор, изходно напрежение на датчика е въвеждане на напрежение на ADC ... ... ADC = (VIN * 1024 / Vref) Ако стайна температура = 30 ˚ С, Вин = 300mV = 0.3V, така ADC = (.3 * 1024/2.56) = 120. Така че аз HV разделена на резултата по 4.
Фиг b.png
Тук ми е код, който аз HV написани на AVR Studio4 # включват <avr\io.h> # определят F_CPU 1000000UL # включват <util/delay.h> INT главната (недействителни) ( неподписан INT ТЕМП; ADMUX = (1 <<REFS1) | (1 <<REFS0) | (1 <<MUX1) | (1 <<MUX0); ADCSRA = (1 <<Аден) | (1 <<ADFR); DDRB | = 0xFF; докато (1) ( ТЕМП = ADCL ADCH * 256; / / ADCH се четат само за да обновите данните ADC регистър, в противен случай няма нужда ТЕМП = ТЕМП / 4; ако (ТЕМП <= 20) PORTB = 1 <<PB1; / / BLUE иначе ако (ТЕМП> 20 & & ТЕМП <= 2  PORTB = 1 <<PB0; / / ЗЕЛЕН иначе ако (ТЕМП> 28 & & ТЕМП <= 35) PORTB = 1 <<ПБ3; / / ЧЕРВЕН в противен случай PORTB = ((1 <<PB1) | (1 <<PB0) | (1 <<ПБ3)); ) )
Но аз не знам какъв е проблемът; UC само мига светодиода, които отговарят на минималните критерии за температура т.е. синьо. Дори и да се размножават окончателния ТЕМП променлива от 10000 и пазят мин. температура критерии за сини води до небето, както по-малко от 2 ˚ С, а след това също само сини води мига. Тя изглежда UC се не на напрежение, както въвеждане. Аз HV проверява, че ако аз пиша (PORTB = 1 <<PB0), а след това зелена доведе мига или (PORTB = 1 <<ПБ3), след това червен доведе мига вместо (PORTB = 1 <<PB1)
Имам свързан изход за закрепване на сензора директно UC, има ли проблем в нея или трябва да използвате по-развързващ кондензатори някъде по веригата.
PLZ Помощ |
|