Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
pic 16f628a и max6675 по spi
sandro37 Дата: Вт, 24.07.2012, 17:43  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 21
Репутация: 0   ±
Замечания:   ±
На сайте с 06.02.2012

Статус: Offline

Как получить данные по spi от max6675 и записать в переменную ?
Если можно пример кода с комментами.
ЯНДЕКС Дата: 24.07.2012
sandro37 Дата: Вт, 20.11.2012, 16:46  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 21
Репутация: 0   ±
Замечания:   ±
На сайте с 06.02.2012

Статус: Offline

Данные получить получилось, вот код:
Code

Device = 16F628A
Xtal=4
Include "modedefs.bas"  
PortB_Pullups = OFF
Declare All_Digital = On 'все порты цыфровые
Config BODEN_OFF, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT, CP_OFF, DATA_CP_OFF  

Declare LCD_Type ALPHA ' Тип ЖКИ - буквенно -цифровой  
Declare LCD_DTPin PORTA.0 ' Порт данных ЖКИ  
Declare LCD_ENPin PORTA.7 ' Управление линией E  
Declare LCD_RSPin PORTA.6 ' Управление линией RS  
Declare LCD_Interface 4 ' Разрядность шины данных  
Declare LCD_Lines 2
Declare LCD_CommandUs 2000  
Declare LCD_DataUs 50  

TRISA = %00010000
PORTA = %00000000
TRISB = %00000000
PORTB = %00000000

Symbol MAXData1=PORTA.4  
Symbol MAXcs=PORTB.0  
Symbol MAXClock=PORTB.1  

Dim Res1 As Word 'пременная результата измерений

Print $FE,1

Main:
Res1=0
MAXcs=0 'начинаем получение данных
SHIn MAXData1,MAXClock,MsbPost,[Res1\16] 'считываем данные (16бит) в переменную Res1
MAXcs=1 'закончили получение данных
Res1=Res1>>3 'сдвигаем на 3 бита вправо (по даташиту)  
Res1=Res1/4 'делим на 4, т.к шаг 0,25
Print $FE, 2, Dec Res1,"     " 'выводим на дисплей
DelayMS 20
GoTo Main

но результат получается завышенный. Получение данных из MAX6675 точно правильное, пробовал получать побитно в цикле, результат один и то тже. В других схемах в сети к плюсу термопары подают очень низкое напряжение для компенсации окружающей среды. Но ведь в MAX6675 уже встроен датчик для компенсации температуры концов термопары. Почему завышенные показания?
MAX6675
Во вложениях код моей программы, мой проект и проект из примера с компенсатором
Прикрепления: termopara.bas (1.1 Kb) · termopara.dsn (97.0 Kb) · MAX6675_Thermom.rar (100.1 Kb)
Matrix252005 Дата: Вт, 20.11.2012, 16:59  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток!!!

sandro37, Вы забыли, что порт RA.4 - это порт с ОК!!! Его нужно подтягивать резом к плюс питания!!!!


THE TRUTH IS OUT THERE.

С уважением, Николай.
sandro37 Дата: Вт, 20.11.2012, 17:35  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 21
Репутация: 0   ±
Замечания:   ±
На сайте с 06.02.2012

Статус: Offline

Подтянул, проблема осталась (
Matrix252005 Дата: Вт, 20.11.2012, 17:47  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Я нашел пример в инете и проверил!!! Теперь работает!!! Вот ссылки:
http://pwmccs.wordpress.com/2012....rmostat - тут я взял формулу X=((X>>2)/4)-24

Пробуйте!!! Удачи!!!

Добавлено (20.11.2012, 17:47)
---------------------------------------------
Да!!! По той ссылке есть пример, вот прямая ссылка: http://dl.dropbox.com/u/59120073/max6675termostad.zip там есть схема, исходник...

Прикрепления: 2960415.dsn (98.7 Kb) · termopara.hex (2.1 Kb) · 4723277.bas (1.6 Kb)


THE TRUTH IS OUT THERE.

С уважением, Николай.
sandro37 Дата: Ср, 21.11.2012, 20:05  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 21
Репутация: 0   ±
Замечания:   ±
На сайте с 06.02.2012

Статус: Offline

Все таки -24, хотя в даташите ни слова. Все равно не много врет, зажав термопару в руке показывает 40. И еще скачет в пределах 2-х градусов (38, 39, 40).
Andriy76 Дата: Ср, 21.11.2012, 21:07  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 231
Репутация: 10   ±
Замечания:   ±
На сайте с 06.04.2010

Статус: Offline

Что бы не прыгало можно суммировать или метод цифрового фильтра .
sandro37 Дата: Чт, 22.11.2012, 23:09  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 21
Репутация: 0   ±
Замечания:   ±
На сайте с 06.02.2012

Статус: Offline

Получилось добиться приемлемого результата, результат отличается от спиртового градусника на 1-1,5 градуса.
SHIn MAXData1,MAXClock,MsbPre,[Res1\16] 'считываем данные (16бит) в переменную Res1
а далее по даташиту
Res1=Res1>>3 'сдвигаем на 3 бита вправо (по даташиту)
Res1=Res1/4 'делим на 4, т.к шаг 0,25
  • Страница 1 из 1
  • 1
Поиск: