pic 16f628a и max6675 по spi
|
|
sandro37 |
Дата: Вт, 24.07.2012, 17:43 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
21
Замечания:
±
На сайте с 06.02.2012
Статус:
Offline
|
Как получить данные по spi от max6675 и записать в переменную ? Если можно пример кода с комментами.
|
|
|
|
sandro37 |
Дата: Вт, 20.11.2012, 16:46 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
21
Замечания:
±
На сайте с 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 Во вложениях код моей программы, мой проект и проект из примера с компенсатором
|
|
|
|
Matrix252005 |
Дата: Вт, 20.11.2012, 16:59 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Приятного времени суток!!!
sandro37, Вы забыли, что порт RA.4 - это порт с ОК!!! Его нужно подтягивать резом к плюс питания!!!!
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
sandro37 |
Дата: Вт, 20.11.2012, 17:35 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
21
Замечания:
±
На сайте с 06.02.2012
Статус:
Offline
|
Подтянул, проблема осталась (
|
|
|
|
Matrix252005 |
Дата: Вт, 20.11.2012, 17:47 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 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 там есть схема, исходник...
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
sandro37 |
Дата: Ср, 21.11.2012, 20:05 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
21
Замечания:
±
На сайте с 06.02.2012
Статус:
Offline
|
Все таки -24, хотя в даташите ни слова. Все равно не много врет, зажав термопару в руке показывает 40. И еще скачет в пределах 2-х градусов (38, 39, 40).
|
|
|
|
Andriy76 |
Дата: Ср, 21.11.2012, 21:07 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
231
Замечания:
±
На сайте с 06.04.2010
Статус:
Offline
|
Что бы не прыгало можно суммировать или метод цифрового фильтра .
|
|
|
|
sandro37 |
Дата: Чт, 22.11.2012, 23:09 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
21
Замечания:
±
На сайте с 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
|
|
|
|