Например TDA7294

Форум РадиоКот • Просмотр темы - Термометр на Ds18B20
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 14:46:21

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Термометр на Ds18B20
СообщениеДобавлено: Вс май 28, 2017 16:08:28 
Родился

Зарегистрирован: Вс май 28, 2017 15:49:14
Сообщений: 2
Рейтинг сообщения: 0
Всем привет! Только начинаю программировать МК. Пытаюсь сделать термометр на ATmega8 и DS18B20. Делаю в Bascom, а не на Си. Мк не видит датчик, т.е. на шине 1 wire все время логическая единица, на экране 127. Подтяжка шины к питанию есть. Датчик на шине один. Пробовал подключать к ногам 9 и 10 (порт B6 и B7). Пробовал менять сам датчик. Ставил в две разные схемы с 16*2 экраном и с трехразрядным динамическим индикатором. Все одно и то же. Подскажите, может есть кака-то особенность, 1-wire работает не на всех портах, или еще что-то, м.б фьюзы. Читал много статей в инете про подключение, везде написано что подключается просто. Код брал отсюда http://cxem.net/mc/mc181.php


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термометр на Ds18B20
СообщениеДобавлено: Пн май 29, 2017 03:42:23 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6619
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
собери вхему в протеусе - там и детали исправные и схему на обозрение выложить проще

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термометр на Ds18B20
СообщениеДобавлено: Пн май 29, 2017 12:18:52 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 94
Зарегистрирован: Вт ноя 06, 2012 12:37:08
Сообщений: 139
Откуда: СПб
Рейтинг сообщения: 0
Для начала выложите СВОЮ схему и СВОЙ код, а не ссылки на сторонние ресурсы.
Схему желательно в графическом формате, а не файл "Протеуса" - он не у всех есть. Код - просто текст, а не файл с раcширением bas.

_________________
Лом - это сложное техническое устройство.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Код программы
СообщениеДобавлено: Вт май 30, 2017 22:16:37 
Родился

Зарегистрирован: Вс май 28, 2017 15:49:14
Сообщений: 2
Рейтинг сообщения: 0
$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Portd = Output
Config Portc = Output
Config Portb.0 = Output
Config 1wire = Portb.7




Declare Sub Disp
Declare Sub Temp

Dim Value As String * 3
Dim Value1 As String * 3
Dim Digit As String * 1
Dim Screen As Integer


Dim Screen1 As Byte
Dim Screen2 As Byte
Dim Screen3 As Byte
Dim Pos As Byte
Dim Length As Byte
Dim X As Byte

Dim A As Byte
Dim B As Byte
Dim C As Byte

'Const Startt = &H44
'Const Readt = &HBE
'Const Status = &B00011111
'Const Skiprom = &HCC



Dim Znak As Byte


Pos = 1
Length = 1
Portd.4 = 1
Portd.7 = 1
Portb.0 = 1
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
Portd.6 = 1

Portc.3 = 0
Portc.4 = 0
Portc.5 = 0
Screen = 0
X = 0



Do

X = X + 1
If X = 100 Then
Portc.5 = 0
Call Temp
X = 0

Else
End If


Call Disp

If Znak = 128 Then
Screen1 = 10
Else
End If

If Screen1 = 0 Then


Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 1

Elseif Screen1 = 1 Then

Portd.4 = 1
Portd.7 = 0
Portb.0 = 0
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
Elseif Screen1 = 2 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 1
Portc.2 = 0
Portd.2 = 0
Portd.5 = 1
Portd.3 = 0

Elseif Screen1 = 3 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 1
Portd.5 = 1
Portd.3 = 0
Elseif Screen1 = 4 Then

Portd.4 = 1
Portd.7 = 0
Portb.0 = 0
Portc.2 = 1
Portd.2 = 1
Portd.5 = 0
Portd.3 = 0
Elseif Screen1 = 5 Then

Portd.4 = 0
Portd.7 = 1
Portb.0 = 0
Portc.2 = 0
Portd.2 = 1
Portd.5 = 0
Portd.3 = 0

Elseif Screen1 = 6 Then

Portd.4 = 0
Portd.7 = 1
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 0
Elseif Screen1 = 7 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
Elseif Screen1 = 8 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 0
Elseif Screen1 = 9 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 1
Portd.5 = 0
Portd.3 = 0
Elseif Screen1 = 10 Then

Portd.4 = 1
Portd.7 = 1
Portb.0 = 1
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 0
Elseif Screen1 = 11 Then

Portd.4 = 1
Portd.7 = 1
Portb.0 = 1
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
End If

Portc.3 = 1
Portc.4 = 0
Portc.5 = 0

Waitms 3

If Screen2 = 0 Then


Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 1

Elseif Screen2 = 1 Then

Portd.4 = 1
Portd.7 = 0
Portb.0 = 0
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
Elseif Screen2 = 2 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 1
Portc.2 = 0
Portd.2 = 0
Portd.5 = 1
Portd.3 = 0

Elseif Screen2 = 3 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 1
Portd.5 = 1
Portd.3 = 0
Elseif Screen2 = 4 Then

Portd.4 = 1
Portd.7 = 0
Portb.0 = 0
Portc.2 = 1
Portd.2 = 1
Portd.5 = 0
Portd.3 = 0
Elseif Screen2 = 5 Then

Portd.4 = 0
Portd.7 = 1
Portb.0 = 0
Portc.2 = 0
Portd.2 = 1
Portd.5 = 0
Portd.3 = 0

Elseif Screen2 = 6 Then

Portd.4 = 0
Portd.7 = 1
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 0
Elseif Screen2 = 7 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
Elseif Screen2 = 8 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 0
Elseif Screen2 = 9 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 1
Portd.5 = 0
Portd.3 = 0
Elseif Screen2 = 10 Then

Portd.4 = 1
Portd.7 = 1
Portb.0 = 1
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
End If

Portc.3 = 0
Portc.4 = 1
Portc.5 = 0

Waitms 3

If Screen3 = 0 Then


Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 1

Elseif Screen3 = 1 Then

Portd.4 = 1
Portd.7 = 0
Portb.0 = 0
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
Elseif Screen3 = 2 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 1
Portc.2 = 0
Portd.2 = 0
Portd.5 = 1
Portd.3 = 0

Elseif Screen3 = 3 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 1
Portd.5 = 1
Portd.3 = 0
Elseif Screen3 = 4 Then

Portd.4 = 1
Portd.7 = 0
Portb.0 = 0
Portc.2 = 1
Portd.2 = 1
Portd.5 = 0
Portd.3 = 0
Elseif Screen3 = 5 Then

Portd.4 = 0
Portd.7 = 1
Portb.0 = 0
Portc.2 = 0
Portd.2 = 1
Portd.5 = 0
Portd.3 = 0

Elseif Screen3 = 6 Then

Portd.4 = 0
Portd.7 = 1
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 0
Elseif Screen3 = 7 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
Elseif Screen3 = 8 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 0
Elseif Screen3 = 9 Then

Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 1
Portd.5 = 0
Portd.3 = 0
Elseif Screen3 = 10 Then

Portd.4 = 1
Portd.7 = 1
Portb.0 = 1
Portc.2 = 1
Portd.2 = 1
Portd.5 = 1
Portd.3 = 1
End If

Portc.3 = 0
Portc.4 = 0
Portc.5 = 1

Waitms 3


Loop

Sub Temp

1wreset


If Err = 1 Then

Screen = 888
Exit Sub
Else
End If
1wwrite &HCC , 1
1wwrite &H44 , 1
Waitms 750
1wreset
1wwrite &HCC , 1

1wwrite &HBE
A = 1wread(1)
B = 1wread(1)
1wreset




A = A And &B11110000
Shift A , Right , 4

B = B And &B00001111

Shift B , Left , 4

C = A + B


Znak = C And &B10000000


Screen = C And &B01111111


End Sub


Sub Disp
Value = Str(screen)
Value1 = Format(value , “000”)

Digit = Mid(value1 , Pos , Length)
Screen1 = Val(digit)

Pos = Pos + 1

Digit = Mid(value1 , Pos , Length)
Screen2 = Val(digit)

Pos = Pos + 1

Digit = Mid(value1 , Pos , Length)
Screen3 = Val(digit)
Pos = 1

End Sub


End

Добавлено after 3 minutes 31 second:
Re: Термометр на Ds18B20
Термодатчик подключал так же, как в этой схеме:


Вложения:
mc56-1.png [117.57 KiB]
Скачиваний: 432
Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Термометр на Ds18B20
СообщениеДобавлено: Чт июн 01, 2017 09:27:30 
Встал на лапы
Аватар пользователя

Карма: 1
Рейтинг сообщений: 94
Зарегистрирован: Вт ноя 06, 2012 12:37:08
Сообщений: 139
Откуда: СПб
Рейтинг сообщения: 0
Во-первых, судя по схеме и коду, у вас используется внутренний RC-генератор, максимальная частота которого 8 МГц, а в коде прописано
Цитата:
$crystal = 16000000

Непорядок. Исходя из этого компилятор рассчитывает все временные параметры. Исправляйте.
Во-вторых, UART у вас, похоже, тоже не используется. Тогда есть смысл отдать весь порт D под управление сегментами индикатора,
а порт C - под управление разрядами. Получилось бы значительно проще - не было бы вот этой бесконечной вереницы:
Цитата:
Portd.4 = 0
Portd.7 = 0
Portb.0 = 0
Portc.2 = 0
Portd.2 = 0
Portd.5 = 0
Portd.3 = 1

Почитайте про динамическую индикацию хотя бы здесь
В дальнейшее я особо не вникал, но вот здесь
Цитата:
X = X + 1
If X = 100 Then
Portc.5 = 0
Call Temp
X = 0

Else
End If

"Else" - не нужно. И далее в аналогичных конструкциях тоже. "Else" необходимо в тех случаях, когда при несоблюдении условий, указанных после "If", нужно пропустить действия, указанные после "Then" и перейти к другим действиям, которые описаны после "Else". Например:
If A=10 Then
Set Portb.0
Else
Incr A
End If
Это все в Helpe описано. Еще хорошо описано в книге "СПРАВОЧНИК ПО ПРОГРАММИРОВАНИЮ
BASCOM-8051", автор Кулиш М.Л.
СпойлерIF, ELSE , ELSEIF, END IF
Действие: Проверить условия, в результате которых выполняются или пропускаются указанные действия.
Производится проверка значений и сравнение всех типов переменных, включая значения
отдельных битов одно-, двух- и четырехбайтных переменных!!!
Синтаксис: 1-я конструкция. Исполняется действие Action 1 если выполнено условие expression 1:
IF expression 1 THEN
‘Action 1
END IF
2-я конструкция. Исполняется действие Action 1 если выполнено условие expression 1 и Action 2
если не выполнено:
IF expression 1 THEN
‘Action 1
ELSE
‘Action 2
END IF
3-я конструкция. Исполняется Action 1, если выполнено условие expression 1, Action 2 если не
выполнено, однако при условии выполнения expression 2, и Action 3, если не выполнено ни одно
из предыдущих условий. Может быть задано несколько проверок дополнительных условий:
IF expression 1 THEN
‘Action 1
ELSEIF expression 2 THEN
‘Action 2
ELSE
‘Action 3
END IF
Пример 1: DIM A AS INTEGER
A = 10
IF A = 10 THEN ‘проверка
PRINT « This part is executed.» ‘это отпечатается
ELSE PRINT « This will never be executed.»
THEN
PRINT «BIT 15 IS SET»
END IF
REM Пример использования в одной строке
IF THEN IF A.15 = 0 THEN PRINT «BIT 15=0»
ELSE PRINT «BIT 15=1»
END IF
Пример 2: Dim X As Integer
‘новая возможность проверки – сравнение со значением символа
If X = "A" Then 'when X = 65 the test will pass
Пример 3: ‘новая возможность проверки – запись опертора в одну строку
If X = 10 Then Goto M1 Else Goto M2

_________________
Лом - это сложное техническое устройство.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Термометр на Ds18B20
СообщениеДобавлено: Пт июн 02, 2017 22:15:24 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Два варианта термометров.


Вложения:
Termo_Led.rar [33.18 KiB]
Скачиваний: 197
1Wire_Usart.zip [21.53 KiB]
Скачиваний: 148
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y