pic-контроллер + RF24L01 + max31855

Здесь обсуждаем устройства на МК и программы для них
Ответить
za9c
Читатель
Читатель
Сообщения: 94
Зарегистрирован: 31 авг 2011, 15:50

pic-контроллер + RF24L01 + max31855

Сообщение za9c »

Здравствуйте!!! Кто нибудь пробовал работать в связке pic-контроллер + NRF24L01 + max31855 - для съёма температуры термопарой К-типа с подвижных частей машин!!! Температура варьируется от 200 до 1500 градусов!!! Какой пик посоветуете? может у микрочипа есть аналог приёмопередающего модуля? И как правильно организовать - пониженное потребление питания (модуль автономный)??? Если есть наработки - советуйте - я по мере разбора полётов - буду то же выкладывать!!!!
za9c
Читатель
Читатель
Сообщения: 94
Зарегистрирован: 31 авг 2011, 15:50

Re: pic-контроллер + RF24L01 + max31855

Сообщение za9c »

Не хочу тем лишних плодить - долго в коммандировке был - приехал микросхемы приёмопередатчика и термопреобразователя уже приехали! устройство спаял, запрограммировал - но есть одно! Не могу добиться низкого потребления самого пика! пик16ф628а.. Откинул max3185 и NRF24l01 700mkA потребляет - хоть тресни! Алгоритм такой - включаю WDT ставлю предделитель перед WDT 1:8, все порты на выход подтяжка отключена, запрещаю прерывания, USART и VRCON выключены потом Sleep!! И так 144млсек поспал - проснулся увеличил счётчик на 1 и заснул - так 71 раз - получается 10 секунд спячки! потом просыпается - и 2млсек снимает и посылает температуру - и опять спать 10 секунд! Так вот кроме потребления непонятки с мплабом - при компиляции два раза отсчитывает ровно 10 секунд - на третий раз 6,5 сек - потом просыпается сам - засыпает и досчитывает остальные 3,5 сек! и это постоянно! Что делать? :cry2:
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: pic-контроллер + RF24L01 + max31855

Сообщение rhf-admin »

Ну, тут так просто без схемы и программы не скажешь. В доке написано, что для того, чтобы уменьшить потребление нужно чтобы внешние цепи не потребляли ничего от пинов, скофигуреных на выход, пины сконфигуреные на вход должны быть подтянуты к питанию или к общему. Кроме того, если даже прерывания выключены глобальным битом, но индивидуальный бит прерывания установлен и флаг прерывания установлен, то контроллер не перейдёт в режим sleep, вместо этого просто будет выполнен nop.
С уважением, администрация сайта.
za9c
Читатель
Читатель
Сообщения: 94
Зарегистрирован: 31 авг 2011, 15:50

Re: pic-контроллер + RF24L01 + max31855

Сообщение za9c »

Кроме того, если даже прерывания выключены глобальным битом, но индивидуальный бит прерывания установлен и флаг прерывания установлен, то контроллер не перейдёт в режим sleep, вместо этого просто будет выполнен nop.
даже если clrf INTCON перед sleep сделать?
я так понимаю что если
bsf Intcon,GIE --- то при выходе из сна - очнёмся по адресу 0004h
если
bсf Intcon,GIE
bsf Intcon,PIE---то при выходе проснёмся PC+1(обычно nop)
или я хомячу не то?
za9c
Читатель
Читатель
Сообщения: 94
Зарегистрирован: 31 авг 2011, 15:50

Re: pic-контроллер + RF24L01 + max31855

Сообщение za9c »

В принципе разобрался с проблемой - выкинул все подтягивающие резисторы в схеме - теперь потребление во сне 8-10mkA раз в 10 секунд на 2-3 млсек потребление 15-25 млА - вопрос на сколько хватит последовательно соединённых трёх пальчиковых аккумуляторов Philips 2700мAh - 1,2Вольта?
za9c
Читатель
Читатель
Сообщения: 94
Зарегистрирован: 31 авг 2011, 15:50

Re: pic-контроллер + RF24L01 + max31855

Сообщение za9c »

Не могу успокоится никак! Ладно - потребления заявленное в режиме сна при 3,3В около 2,5-3мкА! У меня получается 10мкА! Собрал для эксперимента схему! 10-15мкА плавает! Время сна увеличил до минуты - думал тестер долго соображает - нет тестер не врёт!! После долгих мучений - разорвал ножку RX - usart к компу подключён... Данные на комп по ТХ все равно раз в минуту приходят - но ток упал до 2,4мкА во время сна!! преобразователь USB/USART такой (http://xrobot.by/connection/usb_to_serial)! и ещё когда контроллер спит - светодиод на преобразователе еле еле светится! Что только не делал - во время сна вывод RB1 поднимал в высокий уровень, опускал в низкий - потребление 10-15мкА, только его обрубишь - физически - 2,5мкА!!
кусок кода подготовки ко сну и выхода прилагаю!

Main: movlw .7
movwf CMCON
Bank1
movlw .92 ;скорость 9600
movwf SPBRG
movlw b'10101111' ;1:128 - 2.3 сек
movwf OPTION_REG
Bank0

MainLoop: ;спим
Bank0

;подготовка ко сну
clrf RCSTA ;
clrf INTCON ;
clrf PORTA
clrf PORTB
Bank1
clrf TRISA
clrf TRISB ;всё на выход
clrf PIE1
clrf TXSTA
Bank0
bcf PORTB,1 ; тут менял по разному - результат один!!!!!!!!!!!!!!!!!!!!!!!!!!!!

bsf PORTB,2

movlw .26 ;26*2,3=60 сек
movwf count
nait sleep
nop
decfsz count,F
goto nait
Bank1
movlw b'10010110' ;настройка на вход Tx(RB2), Rx(RB1),CS,(RB3) SO(RB4)
movwf TRISB ;остальные выход
movlw b'00000000' ;портА весь на выход
movwf TRISA
movlw b'00100100' ;включаем передатчик,
movwf TXSTA ;высокоскоростной асинхронный режим
Bank0
movlw b'10010000' ;включаем приёмник и разрешаем приём
movwf RCSTA
movlw b'11000000' ;разрешаем прерывания от перефирии
movwf INTCON ;и глобальные
call CLRF_REG
bsf Power
bsf CS
далее по SPI снимаем все данные - разрешаем прерывания для передатчика USART и отправляем - цикл!
Вложения
схема.JPG
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: pic-контроллер + RF24L01 + max31855

Сообщение rhf-admin »

Среднее потребление будет примерно (10*0,01+3*25)/13=5,78 мА. Значит аккумулятора на 2700 мАч должно хватить на 467 часов. Ну, с учётом саморазряда и того, что до конца его вряд ли высосешь, я думаю часов на 400 хватит. Это при том, что все токи в расчётах взяты по максимуму. Ну, то есть дней на 17 точно хватит.

Судя по схеме максимка питается от пика, да? (только 4-я нога максимки - это Vcc, а не Vss). Попробуй ради эксперимента вообще направление работы всех пинов, которые настроены на выход, менять с
выхода на вход (только без внутренней подтяжки, чтобы Z-состояние получилось).
С уважением, администрация сайта.
za9c
Читатель
Читатель
Сообщения: 94
Зарегистрирован: 31 авг 2011, 15:50

Re: pic-контроллер + RF24L01 + max31855

Сообщение za9c »

А ещё вопрос небольшой! Вот спит контроллер - просыпается - настраиваю ЮАРТ на передачу - так вот без сна ставлю 8 байт - передаёт 8 - всё нормально! Если уснул - проснулся - чтоб передать пакет из восьми байт - нужно ставить 10! Как от этого избавится???
InterruptCode:
movwf WREG_TEMP
movf STATUS,W
clrf STATUS
movwf STATUS_TEMP
movf PCLATH,W
movwf PCLATH_TEMP
clrf PCLATH
movf FSR,W
movwf FSR_TEMP
;=========================================================================
;ПРОВЕРКА ПРЕРЫВАНИЯ ОТ ПРИЁМНИКА
;=========================================================================
Bank0
btfsc PIR1,RCIF ;проверка буфера приёмника (если занят на обработку принимаемых данных)
bsf STATUS,RP0 ;приёмник полон=1, пуст=0
btfsc PIE1,RCIE ;разрешено ли прерывание от приёмника?
goto RCDataERR ;
;=========================================================================
;ПРОВЕРКА ПРЕРЫВАНИЯ ОТ ПЕРЕДАТЧИКА
;=========================================================================
Bank0
btfsc PIR1,TXIF ;проверка буфера передатчика (если занят на выход)
bsf STATUS,RP0 ;не занят=1 занят =0
btfsc PIE1,TXIE ;разрешено ли прерывание от передтчика?
goto TXData
;=========================================================================
;ВЫХОД ИЗ ПРЕРЫВАНИЯ
;=========================================================================
EndInt:
Bank0
movf FSR_TEMP,W
movwf FSR
movf PCLATH_TEMP,W
movwf PCLATH
movf STATUS_TEMP,W
movwf STATUS
swapf WREG_TEMP,F
swapf WREG_TEMP,W
retfie
;=========================================================================
;ОБРАБОТКА ПЕРЕДАВАЕМЫХ ДАННЫХ
;=========================================================================
TXData Bank0
btfsc Flags,0
goto READ_DATA_LOOP
bsf Flags,0
movlw TXbyte0
movwf FSR
movlw .10 если тут ставить 8 байт - то после сна передаёт 6 - если без сна - всё нормально - 8!! ПОЧЕМУ?
movwf count
movf FSR,W
movwf FSR_TEMP_2
READ_DATA_LOOP
Bank0
movf FSR_TEMP_2,W
movwf FSR
movf INDF,W
movwf TXREG
incf FSR,F
movf FSR,W
movwf FSR_TEMP_2
decfsz count,F
goto EndInt
bsf Flags,7
goto EndInt
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: pic-контроллер + RF24L01 + max31855

Сообщение rhf-admin »

Чё-то я по этому куску вообще нифига не пойму. Зачем нужны манипуляции со счётчиком команд? Что происходит внутри READ_DATA_LOOP?
С уважением, администрация сайта.
Ответить

Вернуться в «Устройства на микроконтроллерах»