|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
jozzze2000 Član
Pridružen-a: Pet 25 Nov 2011 8:36 Prispevkov: 167 Aktiv.: 1.11 Kraj: Novo mesto
|
Objavljeno: Čet Sep 19, 2013 1:53 pm Naslov sporočila: ATMega8 termometer - utripanje zaslona |
|
|
Naredil sem termometer po tem načrtu:
http://www.instructables.com/id/DIY-Digital-Thermometer/?ALLSTEPS
Vezje sem sestavil in sprogramiral ATMega8. Načeloma sem zadovoljen, moti pa me, da ko vzorči (preračunava novo vrednost) za kratek čas ugasne display
Se da to na kak način odpraviti?
Hvala, Jože |
|
Nazaj na vrh |
|
|
Obelix Član
Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1862 Aktiv.: 9.60 Kraj: Maribor
|
Objavljeno: Čet Sep 19, 2013 2:02 pm Naslov sporočila: |
|
|
Ena možnost je z uporabo "BCD to 7 segment" dekoderja. Na primer 74HCT4511. |
|
Nazaj na vrh |
|
|
jozzze2000 Član
Pridružen-a: Pet 25 Nov 2011 8:36 Prispevkov: 167 Aktiv.: 1.11 Kraj: Novo mesto
|
|
Nazaj na vrh |
|
|
Obelix Član
Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1862 Aktiv.: 9.60 Kraj: Maribor
|
Objavljeno: Čet Sep 19, 2013 2:33 pm Naslov sporočila: |
|
|
Malce drugače. Vsak 7-segmentni ima svoj 4511. Atmega pa vpisuje vrednosti na vhode ABCD in z enable/store izbira v kateri diplay bo vpisoval. Potem pa lahko Atmega računa in pretvarja, vrednost na displayu se ne bo spremenila do ponovnega vpisa. |
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.04
|
Objavljeno: Čet Sep 19, 2013 2:40 pm Naslov sporočila: |
|
|
Utripanje se ne bi smelo pojaviti niti pri štirih 7-segmentnih prikazovalnikih, kaj šele pri dveh.
Težava je torej povsem programska. Glede na to, da imaš tudi .c datoteko, se raje loti predelave programa, vezje pa zaenkrat pusti pri miru. _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
piroman Član
Pridružen-a: Čet 23 Okt 2003 12:06 Prispevkov: 2707 Aktiv.: 12.14 Kraj: Ljubljana
|
Objavljeno: Čet Sep 19, 2013 3:48 pm Naslov sporočila: |
|
|
Avtor programa zganja precej matematike pa še vse se vrti v glavni zanki. Ni čudno, da uboga 8 bitna žival pri tem počepne _________________ One shouldn’t work on semiconductors, that is a filthy mess; who knows if they really exist!
Wolfgang Pauli, 1931 |
|
Nazaj na vrh |
|
|
jozzze2000 Član
Pridružen-a: Pet 25 Nov 2011 8:36 Prispevkov: 167 Aktiv.: 1.11 Kraj: Novo mesto
|
Objavljeno: Čet Sep 19, 2013 4:28 pm Naslov sporočila: |
|
|
Sem probal postavit enostavno enačbo, ki sešteje dve števili, pa je vseeno utripalo.
Če se vam zdi, da je pomankljivost v kodi, lahko predlagate kakšno rešitev? |
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.04
|
Objavljeno: Čet Sep 19, 2013 5:47 pm Naslov sporočila: |
|
|
Hmm, ... Vezje nima tranzistorjev za vklop prikazovalnikov. Svetilnost bo torej odvisna od števila trenutno vklopljenih segmentov. Dobro bi bilo dodati dva PNP tranzistorja, saj je prikazovalnik s skupno anodo.
MCU---[470ohm]---|<|---BAZApnp (samo takrat bo segment svetil, ko bo portD pin na 0)
Pogojno lahko tudi pavze prilagodiš številu prižganih segmentov. Rabiš eno še tabelico števil, ki vrne StevecPavza, glede na stanje displej[], nato pa v prazno zavrti eno for zanko s StevecPavza++ in 100mikrosekundno pavzo v njej.
Z n-mikrosekundnimi pavzami poskrbiš, da meritev+izračun traja približno enako dolgo kot pavza za prikaz cifre. Če lahko simuliraš trajanje prehoda skozi posamezne dele programa, boš lahko pavze zelo natančno določil.
V vsakem primeru se začni učiti uporabljati prekinitve.
Glede programa pa malo uredi sintakso:
Koda: |
while(1)
if stevec == 0
sprozi ADC meritev
izracuna vse
pavza 2ms // oziroma (5ms - konstanta + for)
else
pavza 5ms (ali nastavljiva 5ms + for zanka)
endif
portB = portB & 0xF9 // 1111 1001
if (stevec & 0x01)==0 // liho da 0, sodo da 1
portD = prva cifra
portB = portB logicniALI 0x02
else
portD = druga cifra
portB = portB logicniALI 0x04
endif
stevec = stevec + 1 // stevec++
konec while |
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
int47 Član
Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2066 Aktiv.: 9.27 Kraj: Ljubljana
|
Objavljeno: Čet Sep 19, 2013 6:19 pm Naslov sporočila: |
|
|
jozzze2000 je napisal/a: |
Če se vam zdi, da je pomankljivost v kodi, lahko predlagate kakšno rešitev? |
Za osveževanje display-ev zadolži prekinitev timerja. |
|
Nazaj na vrh |
|
|
. Član
Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 75257.36
|
Objavljeno: Pon Sep 23, 2013 11:37 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
|
jozzze2000 Član
Pridružen-a: Pet 25 Nov 2011 8:36 Prispevkov: 167 Aktiv.: 1.11 Kraj: Novo mesto
|
Objavljeno: Tor Sep 24, 2013 10:52 am Naslov sporočila: |
|
|
Je uspelo s prekinitvijo |
|
Nazaj na vrh |
|
|
Mare_m Član
Pridružen-a: Ned 31 Jul 2011 16:22 Prispevkov: 97 Aktiv.: 0.63 Kraj: JN75PV
|
Objavljeno: Tor Apr 08, 2014 6:43 am Naslov sporočila: Mega 8 termostat |
|
|
Zdravo
Rad bi si sestavil termostat z mega8 in ds1820, z nastavljanjanjem temperature, LED izvedba. Ima kdo kaksen dober nacrt s programom.
Sem ze pregledal po net-u, veloko verzij a kompleta ne najdem.
http://www.instructables.com/id/DIY-Digital-Thermometer/?ALLSTEPS
Termomoter bi ustrezal, vendar potrebujem nastavitev in izhod za rele.
Pozdrav, Mare |
|
Nazaj na vrh |
|
|
Nikolaj Neznanec
Pridružen-a: Pon 14 Okt 2013 10:36 Prispevkov: 7 Aktiv.: 0.05 Kraj: Škofljica
|
Objavljeno: Tor Jun 10, 2014 2:14 pm Naslov sporočila: |
|
|
Za nastavljanje točke vklopa potrebuješ še en ADC vhod na mega8 na katerega lahko priklopiš potenciometer. Z njim uravnavaš napetost, ki jo bo prebral ADC.
Za rele boš potreboval še en izhod na mega8 s katerim boš preko tranzistorja krmilil rele - nekaj v stilu
http://atmega32-avr.com/relay-timer-with-atmega8-avr-mcu/
V kodi potrebuješ še logiko, ki bo glede na vrednost temperature in vrednost nastavljene mejne vrednosti vklopil/izklopil izhod na rele. Primerjaš lahko vrednosti izmerjenih napetosti "voltage_on_bit" prvega ADC-ja (ki je že vpisan v kodi) in tega novega, ki ga boš dodal.
LP, J _________________ Strpnost in poštenost! |
|
Nazaj na vrh |
|
|
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5773 Aktiv.: 25.90 Kraj: Grosuplje
|
Objavljeno: Tor Jun 10, 2014 2:31 pm Naslov sporočila: |
|
|
@Mare_m: eden naših članov (@rkulcar2) je to naredil za krmiljenje obtočne črpalke sončnih kolektorjev, sicer na Arduino platki, toda sam program ni nič drugačen. pobrskaj malo po forumu, pod Arduino temami, končni izdelek pa lahko vidiš v temi, kaj trenutno počnem (ne vem točno ali za maj ali april). _________________ Lp, Jaka |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 74 dni
Powered by phpBB © 2001, 2005 phpBB Group
|