Помогите с софтом для TMP03
Есть несколько датчиков TMP03,нашёл здесьhttp://shatura.laser.ru/Thermometer/aboutTermometr.htmlсхему но софта там нет,может кто поможет с написанием софта,может кто находил другие схемы с софтом под этот датчик.
Я на МЕШКЕ https://meshok.net/?user=468271
- Реклама
Может кто нибудь напишет,рабочая ли схема,а то сказали что комп не может микросекунды считать, только миллисекунды,и для чего нужна микросхема 74HC86.
Я на МЕШКЕ https://meshok.net/?user=468271
Теоретически схема рабочая, но похоже это не термометр, а термостат.
Микросхема 74С86 тут похоже служит для коммутации питания датчиков + на ней собрано что-то вроде интегратора. Я бы понял если бы 10-й контакт LPT порта был аналоговым входом (как входы игрового порта), тогда можно мерить не микросекунды, а напряжение, которое уже пропорционально температуре.
С датчиком TMP03 я работал, но мне было проще, так как я его опрашивал при помощи МК, а уже МК передавал обработанные данные по последовательному интерфейсу.
Микросхема 74С86 тут похоже служит для коммутации питания датчиков + на ней собрано что-то вроде интегратора. Я бы понял если бы 10-й контакт LPT порта был аналоговым входом (как входы игрового порта), тогда можно мерить не микросекунды, а напряжение, которое уже пропорционально температуре.
С датчиком TMP03 я работал, но мне было проще, так как я его опрашивал при помощи МК, а уже МК передавал обработанные данные по последовательному интерфейсу.
Ну хоть один написал,хоть помощь не большая, спасибо тебе БОЛЬШОЕ,с этим датчиком почему то совсем мало схем.А с МК есть схема,если есть,может выложишь здесь.Спасибо.
Я на МЕШКЕ https://meshok.net/?user=468271
Просто датчики DS18B20 гораздо более распространенные, выдают уже числовой результат, не требуют питания, поэтому их все и используют. А про TMP03 большая часть народа неверно даже не догадывается.
Схема-то простая: датчик->МК->преобразователь уровня (UART-RS232 или UART-RS485), главное программа для МК. Хотя для простоты можно замеренные интервалы передавать в компьютер, а уже в нем считать по формуле температуру. Тогда программа для МК будет элементарная (я так сначала и сделал, но потом пришлось переделать). Схему и прошивку выкладывать не буду (да и права не имею), так как МК специфический и измерение температуры лишь вспомогательная функция. Для этого сгодится любой распространенный МК с UART-ом (если нужно выводить в комп), например ATtiny2313 (хоть 10 датчиков можно повесить).
Схема-то простая: датчик->МК->преобразователь уровня (UART-RS232 или UART-RS485), главное программа для МК. Хотя для простоты можно замеренные интервалы передавать в компьютер, а уже в нем считать по формуле температуру. Тогда программа для МК будет элементарная (я так сначала и сделал, но потом пришлось переделать). Схему и прошивку выкладывать не буду (да и права не имею), так как МК специфический и измерение температуры лишь вспомогательная функция. Для этого сгодится любой распространенный МК с UART-ом (если нужно выводить в комп), например ATtiny2313 (хоть 10 датчиков можно повесить).
- Реклама
Так вот в прошивке и софте вся и проблема в программировании я никакой,так что положу я его наверно подальше до лучших времён...
Я на МЕШКЕ https://meshok.net/?user=468271
Если вдруг кому понадобится, переписал под AVRс поддержкой команды MUL (АТМеги) c MUL и без нее. Без измерения интервалов, только арифметика. Аргументы: T1 в регистрах R18:R19, T2 в R16:R17, результат в R17.
PS: с отрицательными температурами не проверял 
Прескалер должен быть таким, чтобы счетчик считал T2 не более чем до 0xA3D7
Код: Выделить всё
;+------------------------------------------------------+
;|Temperature calculation for TMP03/04 By Engineer_Keen |
;| AVR Assembler |
;| T=235-400*T2/T1 |
;|Use 16-bit Timer to measure T1&T2 |
;|Registers used: |
;|R16,R17 (T2) |
;|R18,R19 (T1) |
;|R0,R1,R20,R21,R22 |
;|Result in R17 |
;|~11uS (Fc=11.059MHz) |
;+------------------------------------------------------+
.macro MULT_MEGA
LDI R20,0x90
MOV R1,R17
MUL R1,R20
MOV R22,R0
MOV R21,R1
MOV R1,R16
MUL R1,R20
ADD R0,R21
ADC R0,R17
MOV R21,R0
ADC R1,R16
MOV R20,R1
.endm
.macro MULT_TINY
CLR R0
MOV R22,R17
MOV R21,R16
CLR R20
LSL R22
ROL R21
ROL R20
ADD R22,R17
ADC R21,R16
ADC R20,R0
LSL R22
ROL R21
ROL R20
LSL R22
ROL R21
ROL R20
LSL R22
ROL R21
ROL R20
ADD R22,R17
ADC R21,R16
ADC R20,R0
LSL R22
ROL R21
ROL R20
LSL R22
ROL R21
ROL R20
LSL R22
ROL R21
ROL R20
LSL R22
ROL R21
ROL R20
.endm
CALC:
MULT_MEGA
CLR R16
LDI R17,0x09
CYC1: MOVW R0,R20
SUB R1,R19
SBC R0,R18
BRCS CC1
MOVW R20,R0
INC R16
CC1: DEC R17
BRNE CC2
RJMP EC1
CC2: LSL R16
LSL R22
ROL R21
ROL R20
RJMP CYC1
EC1: LDI R17,235
SUB R17,R16
RET
Прескалер должен быть таким, чтобы счетчик считал T2 не более чем до 0xA3D7


