Uživatel:Soukujak

Z MAM wiki

Přejít na: navigace, hledání

Jakub Soukup


Obsah

[editovat] Semestrální práce

Teploměr zobrazující aktuální teplotu na LCD display. Možné použití pro měření teploty uvnitř PC skříně, při řešení napájení přes Molex či USB. Prezentaci semestrální práce si můžete prohlédnout zde

[editovat] SOUČÁSTKY

[editovat] mikroprocesor ATmega168


Soubor:Atmega168+PinMap2.jpg‎


Mikroprocesor z rodiny ATmega8 od firmy ATMEL. ATmega168 disponuje 16kB FLASH paměti, která je programovatelná přímo v aplikaci s možností uzamknutí, 10.000 zápisových/mazacích cylků s volitelnou velikostí bootovací sekce s nezávislým uzamykáním.

  • mikroprocesor AVR
  • 16kByte ISP FLASH memory
  • 1kByte RAM
  • 512Byte EEPROM
  • 2x8bit + 1x16bit čítač/časovač
  • 6xPWM
  • 6x10bit A/D
  • USART, SPI, TWI (~I2C)
  • debugWire
  • pracovní teplota: -40°C až +85°C


ATmega168 DATASHEET


[editovat] LCD


Soubor:LCD.jpg


Znakový LCD displej MC2004B-SBL/H

  • 20x4 řádků
  • velikost: 98x60x14 (délka x šířka x výška v mm)
  • LCD řadič: S6A0069, 5x8 s kurzorovými tečkami, 20znaků/4řádky
  • typ podsvícení: LED na straně
  • typ panelu: Typ STN (modrá na bílé, kontrast 2 až 4)
  • pracovní teplota: -20 / + 70 st.C.
  • znaková sada: základní (anglická abeceda)


MC2004B-SBL/H DATASHEET


[editovat] krystal


Soubor:Q10MHz.jpg


Krystal HC-49U

  • 10 MHz
  • 30ppm
  • Pracovní teplota: -10/+60°C


Krystal DATASHEET


[editovat] teplotní čidlo LM35DZ


Soubor:LM35.jpg


  • teplotní senzor 0..100°C TO-92


LM35 DATASHEET



[editovat] SOFTWARE

[editovat] Bascom

Popis a příklady jazyka Bascom dobře popsal kolega Polanský. BASCOM

[editovat] Vlastní Program

 $regfile = "m168def.dat"                                    ' ATMega168

 $crystal = 10000000                                         ' krystal 10 MHz


 Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 32 , 32        ' znaky pro a stupnici
 Deflcdchar 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1
 Deflcdchar 2 , 16 , 16 , 16 , 16 , 16 , 16 , 16 , 16        ' pouzity z praktickych prikladu v instalacni slozce BASCOM-AVR
 Deflcdchar 3 , 16 , 16 , 31 , 31 , 31 , 31 , 16 , 16
 Deflcdchar 4 , 1 , 1 , 31 , 31 , 31 , 31 , 1 , 1
 Deflcdchar 5 , 32 , 32 , 28 , 28 , 28 , 28 , 32 , 32
 Deflcdchar 6 , 14 , 17 , 17 , 17 , 14 , 32 , 32 , 32        ' znak pro stupen




 Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5       ' prirazeni portu atmega168 k portum LCD

 Config Lcd = 20 * 4                                         ' konfigurace LCD

 Config Adc = Single , Prescaler = Auto , Reference = Avcc   ' konfigurace AD převodníku

 Start Adc

 Dim W As Word , Temp As Word , Tmax As Word , Tmin As Word , Temp_d As Byte , I As Byte , Atemp As Byte , Atemp_d As Byte

 Cls
 Cursor Off
 Locate 1 , 6                                                ' Vykresleni stupnice a znaku pro stupen celsia
 Lcd Chr(6) ; "C"
 Locate 3 , 1
 Lcd "0"
 Locate 3 , 5
 Lcd "10"
 Locate 3 , 10
 Lcd "20"
 Locate 3 , 15
 Lcd "30"
 Locate 3 , 19
 Lcd Chr(6) ; "C"
 Locate 4 , 6
 Lcd Chr(6) ; "C"
 Locate 4 , 15
 Lcd Chr(6) ; "C"


 W = Getadc(0)                                               ' nacteni aktualni teploty pro referenci minimalni teploty
 Temp = W * 5
 Temp_d = Temp Mod 10
 Temp = Temp / 10
 Tmin = Temp
 Do                                                          ' samotny cyklus nacitani aktualni teploty
  W = Getadc(0)
  Temp = W * 5
  Temp_d = Temp Mod 10
  Temp = Temp / 10
  Locate 1 , 1
  Lcd Temp ; "," ; Temp_d

  If Temp > Tmax Then                                       ' porovnavani Max a Min teploty
  Tmax = Temp
  End If
  If Temp < Tmin Then
  Tmin = Temp
  Else
  Tmin = Tmin
  End If
  Locate 4 , 1
  Lcd "H=" ; Tmax
  Locate 4 , 10
  Lcd "L=" ; Tmin

  Atemp = Temp / 2                                          ' vypocet a vykresleni teploty do stupnice

  Locate 2 , 1
  For I = 1 To Atemp
   Select Case I
   Case 1 : Lcd Chr(3)
   Case 5 : Lcd Chr(4)
   Case 10 : Lcd Chr(4)
   Case 15 : Lcd Chr(4)
   Case 20 : Lcd Chr(4)
   Case Else : Lcd Chr(0)
  End Select
  Next I

  Atemp_d = Atemp Mod 2
  If Atemp_d > 0 Then
  Lcd Chr(5)
  Atemp = Atemp + 2
  Else
  Atemp = Atemp + 1
 End If

  For I = Atemp To 20
  Select Case I
   Case 1 : Lcd Chr(2)
   Case 5 : Lcd Chr(1)
   Case 10 : Lcd Chr(1)
   Case 15 : Lcd Chr(1)
   Case 20 : Lcd Chr(1)
   Case Else : Lcd Chr(32)
   End Select
   Next I

   Waitms 1000
  Loop
End

[editovat] Výsledek na nepájivém poli

Soubor:Teplomer.jpg‎


--Soukujak 10. 5. 2010, 16:28 (UTC)

vypracování spolu s kolegou R. Zeleným 

Osobní nástroje