logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Schemat termostatu z Atmel i DS1820, wyświetlacz 7-segmentowy, 0,1°C

Gizmo39 25 Lis 2006 09:48 2441 7
  • #1 3260955
    Gizmo39
    Poziom 13  
    Posty: 53
    Pomógł: 3
    Ocena: 1
    Poszukuje schematu termostatu na procesorze Atmel i czujnikem DS1820 lub podobnym . Przeglądałem elektrode i nic nie znalazłem , oprucz termometru .
    Szukam termostatu z wyświetlaczem siedmiosegmentowym , z rozdzielczością wyświetlanego wyniku 0,1°C .
  • #2 3260969
    janek1815
    Poziom 38  
    Posty: 4513
    Pomógł: 372
    Ocena: 1064
    jesli znalazles termometr to wystarczy jeszcze tylko dolaczyc tranzystor i przekaznik (lepsze rozwiazanie optotriak i triak) i masz termostat reszte zrobisz na drodze programowej.
  • #3 3261159
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Gizmo39 napisał:
    Poszukuje schematu termostatu na procesorze Atmel i czujnikem DS1820 lub podobnym . Przeglądałem elektrode i nic nie znalazłem , oprucz termometru .
    Jeżeli potrzebny ci termostat to nie prościej zastosować DS1620 i nie będziesz musiał stosować procesora.
  • #4 3263663
    Gizmo39
    Poziom 13  
    Posty: 53
    Pomógł: 3
    Ocena: 1
    Wiem że wystarczy tylko tranzystor i wyjście mocy , ale jest jeden mały problem - nie umiem pisać programów i szukam gotowca !
    Jeśli chodzi o DS1820 to żeby zmienić w nim temperature to trzeba go podpiąć pod komputer i przeprogramować .
    Szukam takiego drobiazgu w necie od trzech dni i nic nie znalazłem .
    Mam nadzieje że ktoś mi pomoże !
  • #5 3264192
    janek1815
    Poziom 38  
    Posty: 4513
    Pomógł: 372
    Ocena: 1064
    to poszukaj na stronie www.elportal.pl tam znajdziesz gotowce
  • #6 3264430
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Gizmo39 napisał:
    Jeśli chodzi o DS1820 to żeby zmienić w nim temperature to trzeba go podpiąć pod komputer i przeprogramować .
    to się grubo mylisz. DS1820 się odczytuje, on nie posiada wyjścia sterującego jak to jest w DS1620.
    A tu masz kod mojego sterownika pieca CO, którym możesz programować właśnie tego Dallasa (DS1620!).
    ;Program TERMO.ASM odczytuje temperature z ukladu "DS 1620" oraz umozliwia programowanie tego ukladu
    ;komunikacja, to klawiatura (3x4) oraz wyswietlacz na "SAA 1064" (dwie cyfry)
    ;Wyjście ZAMEK steruje klapą pieca CO
    
    AZ1064	equ	70h	;adresy dla SAA 1064
    AO1064	equ	71h
    R_Termo	equ	0aah	;COD odczytu temperatury z DS 1620, 9 bitow
    R_TH	equ	0a1h
    R_TL	equ	0a2h
    R_CO	equ	0ach
    W_TH	equ	1
    W_TL	equ	2
    JASNO	equ	40h
    CIEMNO	equ	10h
    	; Funkcje
    SETHI	equ	11
    SETLO	equ	10
    
    LCZYN	equ	1	;jeden bajty konwersji
    WL	equ	20h	;lewy wyswietlacz
    WP	equ	21h	;prawy wyswietlacz
    CONTR	equ	22h	;dla SAA 1064
    OLDK	equ	23h
    NEWK	equ	5	;R5
    BUFTL	equ	24h	;bufor Temperatury
    BUFTH	equ	25h	;
    BufT	equ	24h
    BufL	equ	26h
    BufH	equ	28h
    BCD	equ	2ah
    RST	bit	p3.3	;RST dla DS 1620
    SCL	bit	p3.4
    SDA	bit	p3.5
    ZAMEK	bit	p3.7	;sterowanie klapa
    ;=======================
    	org	0
    	clr	RST
    	mov	CONTR,#CIEMNO
    
    Start:
    ;	call	Czyt_CO
    	call	Czyt_TH
    	mov	BufH,r7
    	mov	BufH+1,r6
    	call	Czyt_TL
    	mov	BufL,r7
    	mov	BufL+1,r6
    	acall	Czyt_Termo	;wynik w [r6:r7]
    	mov	BufT,r7
    	mov	BufT+1,r6
    	call	Porownaj
    	acall	Wyswietlij
    ;	 mov	WP,r7
    ;	 mov	WL,r6
    	mov	CONTR,#CIEMNO	;Disp ON
    	acall	Ustaw
    	call	KEY
    	mov	a,NEWK
    	mov	OLDK,a
    	jz	Start
    	call	PoFunkcje
    	jmp	Start
    
    	call	KOD_K
    	call	TabKon
    	call	WRL
    	mov	a,NEWK
    	call	KOD_K
    	call	TabKon
    	call	WRP
    	mov	CONTR,#20h	;0 = Disp OFF
    	call	Ustaw
    Stop:	ajmp	Start
    ;============================
    Porownaj:	;procedura porownuje odczytana temperature z rejestrami TL i TH
    		;i steruje odpowiednio wyjsciem ZAMEK
    	mov	r0,#BufT
    	mov	r1,#BufL
    	call	R0_R1
    	jc	T_L	;T<L
    	mov	r0,#BufT
    	inc	r1
    	call	R0_R1
    	jnc	T_H	;T>H
    	ret
    R0_R1:	clr	c
    	mov	a,@r0
    	subb	a,@r1
    	inc	r0
    	inc	r1
    	mov	a,@r0
    	subb	a,@r1
    	ret
    T_L:	clr	ZAMEK
    	ret
    T_H:	setb	ZAMEK
    	ret
    ;============================
    ; Wybor Funkcji sterujacej, kod w ACC
    PoFunkcje:
    	call	KOD_K
    	cjne	a,#SETHI,Nie1
    	mov	a,#01110110b	;'H
    	call	WRL
    	mov	a,#00010000b	;'i
    	call	WRP
    	call	Ustaw
    Po1:	call	GET_KEY
    Po11:	cjne	a,#SETHI,Nie2
    	call	Czyt_TH	
    	call	DoBufora
    	acall	Wyswietlij
    	mov	CONTR,#CIEMNO	;Disp ON
    	acall	Ustaw
    	call	KorBUF
    	jmp	Po11
    Nie1:	cjne	a,#SETLO,Nie2
    	mov	a,#00111000b	;'L
    	call	WRL
    	mov	a,#01011100b	;'o
    	call	WRP
    	call	Ustaw
    Po2:	call	GET_KEY
    Po22:	cjne	a,#SETLO,Nie2
    	call	Czyt_TL
    	call	DoBufora
    	acall	Wyswietlij
    	mov	CONTR,#CIEMNO	;Disp ON
    	acall	Ustaw
    	call	KorBUF
    	jmp	Po22
    Nie2:	cjne	a,#4,NieOt
    	clr	ZAMEK
    	call	OPen
    	ret
    NieOt:	cjne	a,#6,NieZa
    	setb	ZAMEK
    	call	CLose
    NieZa:	ret
    ;=========================
    DISP_OFF:
    	mov	CONTR,#0
    	call	Ustaw
    	jmp	GET_KEY
    ;=========================
    OPen:	mov	a,#00111111b	;'O
    	call	WRL
    	mov	a,#01110011b	;'P
    	call	WRP
    	call	Ustaw
    	jmp	GET_KEY
    ;=========================
    CLose:	mov	a,#00111001b	;'C
    	call	WRL
    	mov	a,#00111000b	;'L
    	call	WRP
    	call	Ustaw
    	jmp	GET_KEY
    ;=========================
    ; Procedura dodaje do bufora.		Odejmuje od bufora
    ; 1 - 0,5 stopnia			7 - 0,5 stopnia
    ; 2 - 1,0				8 - 1,0
    ; 3 - 5,0				9 - 5,0
    KorBUF:	call	GET_KEY
    	cjne	a,#2,Nie3
    	mov	a,#2		;+1
    	call	DodajBUF
    KorB1:	call	OdBufora
    	acall	Wyswietlij
    	mov	CONTR,#JASNO	;Disp ON
    	acall	Ustaw
    	jmp	KorBUF
    Nie3:	cjne	a,#8,Nie4
    	mov	a,#2		;-1
    	call	MinusBUF
    	jmp	KorB1
    Nie4:	cjne	a,#SETLO,Nie5
    	mov	a,CONTR
    	cjne	a,#JASNO,Nie6	;czy byla modyfikacja
    	call	OdBufora
    	call	Zap_TL
    	ret
    Nie5:	cjne	a,#SETHI,Nie6
    	mov	a,CONTR
    	cjne	a,#JASNO,Nie6	;czy byla modyfikacja
    	call	OdBufora
    	call	Zap_TH
    Nie6:	cjne	a,#3,Nie7
    	mov	a,#10		;+5
    	call	DodajBUF
    	jmp	KorB1
    Nie7:	cjne	a,#9,Nie8
    	mov	a,#10		;-5
    	call	MinusBUF
    	jmp	KorB1
    Nie8:	cjne	a,#1,Nie9
    	mov	a,#1		;+0,5
    	call	DodajBUF
    	jmp	KorB1
    Nie9:	cjne	a,#7,Nie10
    	mov	a,#1		;-0,5
    	call	MinusBUF
    	jmp	KorB1
    Nie10:	ret
    ;=========================
    DodajBUF:	;dodaje ACC do BUFTn
    	add	a,BUFTL
    	mov	BUFTL,a
    	clr	a
    	addc	a,BUFTH
    	anl	a,#1
    	mov	BUFTH,a
    	ret
    ;=========================
    MinusBUF:	;odejmuje od BUFTn ACC
    	clr	c
    	xch	a,BUFTL
    	subb	a,BUFTL
    	mov	BUFTL,a
    	clr	a
    	xch	a,BUFTH
    	subb	a,BUFTH
    	anl	a,#1
    	mov	BUFTH,a
    	ret
    ;=========================
    OdBufora:
    	mov	r7,BUFTL
    	mov	r6,BUFTH
    	ret
    ;=========================
    DoBufora:
    	mov	BUFTL,r7
    	mov	BUFTH,r6
    	ret
    ;=========================
    Wyswietlij:
    	mov	a,r6
    	jnb	acc.0,PLUS
    	mov	a,r7
    	cpl	a
    	inc	a
    	mov	r7,a
    PLUS:	clr	c	;konwersja do calych stopni
    	mov	a,r7
    	rrc	a
    	mov	r7,a
    	mov	BIN,a
    	acall	BBCD
    	mov	a,BCD+1	;wynik w BCD dwa bajty
    	swap	a
    	acall	TabKon
    	acall	WRL
    	mov	a,r6
    	mov	c,acc.0	;znak do CARY
    	mov	WL.4,c	;znak do lewego wyswietlacza na "h"
    	mov	a,BCD+1
    	acall	TabKon
    	acall	WRP
    	clr	c
    	mov	a,BCD
    	jz	Normal
    	setb	c
    Normal:	mov	WP.7,c
    	ret
    ;============================
    Ustaw:	acall	PStart
    	mov	a,#AZ1064
    	acall	NadAcc
    	jc	POP1
    	mov	a,#0	;sub adres
    	acall	NadAcc
    	jc	POP1
    	mov	a,CONTR
    	acall	NadAcc
    	jc	POP1
    	mov	a,WP
    	acall	NadAcc
    	jc	POP1
    	mov	a,WL
    	acall	NadAcc
    	jc	POP1
    	acall	PStop
    POP1:	ret
    ;=========================
    Stat_Disp:
    	acall	PStart
    	mov	a,#AO1064
    	acall	NadAcc
    	jc	POPERR
    	acall	Odczyt
    	setb	c
    	acall	NadPot
    	mov	r0,a
    	acall	PStop
    POPERR:	ret
    ;=========================
    Czyt_TH:		;odczyt Hi temperatury
    	setb	RST
    	clr	SCL
    	mov	a,#R_TH
    	jmp	Czyt_R
    ;=========================
    Czyt_TL:		;odczyt Lo temperatury
    	setb	RST
    	clr	SCL
    	mov	a,#R_TL
    	jmp	Czyt_R
    ;=========================
    Czyt_CO:		;odczyt Configuracji
    	setb	RST
    	clr	SCL
    	mov	a,#R_CO
    	jmp	Czyt_R
    ;=========================
    Czyt_Termo:	;wynik znajduje sie w [r6:r7]
    	setb	RST
    	clr	SCL
    	mov	a,#R_Termo
    Czyt_R:	acall	Na_Acc
    	acall	Od1620
    	mov	r7,a
    	acall	Od1620
    	mov	r6,a
    	clr	RST
    	ret
    ;============================
    Zap_TH:		;zapis [r6:r7] do TL DS1620
    	setb	RST
    	clr	SCL
    	mov	a,#W_TH
    	jmp	Zap_R
    ;============================
    Zap_TL:		;zapis [r6:r7] do TL DS1620
    	setb	RST
    	clr	SCL
    	mov	a,#W_TL
    Zap_R:	call	Na_Acc
    	mov	a,r7
    	call	Na_Acc
    	mov	a,r6
    	call	Na_Acc
    	ret
    ;============================
    $include (Termo.a51)
    ;============================
    	end
    
  • #7 3267153
    Gizmo39
    Poziom 13  
    Posty: 53
    Pomógł: 3
    Ocena: 1
    Dzięki za pomoc !
    Zamykam temat .
  • #8 3641861
    markoz7874
    Poziom 31  
    Posty: 1776
    Pomógł: 132
    Ocena: 208
    GienekS napisał:
    ...]Jeżeli potrzebny ci termostat to nie prościej zastosować DS1620 i nie będziesz musiał stosować procesora.

    Witam
    Chcialem wykonac termostat z ukladem DS1620.
    Zalezy mi na prostocie ukladu. Z tego co sie zorientowalem, mozna taki uklad zaprogramowac z komputera z lacza COM lub LPT.
    Niestety nie moge nigdzie znalesc schematu takiego lacza i programu ktory by mi umozliwil programowanie.
    Jedyne co znalazlem to DS1620 Programming Tool . Jest tam uklad i program do obslugi. Niestety nie dziala.
    Zmienilem sposob zasilania, odpalilem na W98, ale program twierdzi, ze nie podlaczono zadnego ukladu.
    Czy mogl by ktos udostepnic schemat ukladu i program do zaprogramowania termostatu DS1620?

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy poszukiwania schematu termostatu opartego na procesorze Atmel i czujniku temperatury DS1820 lub podobnym, z wyświetlaczem siedmiosegmentowym i rozdzielczością 0,1°C. Użytkownik posiada schemat termometru z DS1820, ale potrzebuje gotowego programu do sterowania przekaźnikiem lub triakiem, gdyż nie potrafi pisać oprogramowania. Wskazano, że DS1820 jest czujnikiem do odczytu temperatury, nie posiada wyjścia sterującego, w przeciwieństwie do DS1620, który umożliwia programowanie temperatury i sterowanie. Podano fragment kodu asemblerowego dla sterownika pieca CO z procesorem Atmel i DS1620, obsługującego wyświetlacz SAA1064 (dwie cyfry) oraz klawiaturę 3x4. Zasugerowano poszukiwanie gotowych rozwiązań na stronach typu elportal.pl. W dalszej części dyskusji pojawiły się problemy z programowaniem DS1620 przez port COM/LPT oraz brak dostępnych schematów i oprogramowania do tego celu. Ostatecznie autor zamknął temat po uzyskaniu wskazówek.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA