Перейти к содержанию

Помощь Написании Pic16F877A


Andrey_Ch8

Рекомендуемые сообщения

всем привет, имеются вышеназванный пик и датчик температуры ds1821 в этои теме хочу задавать вопросы по ассемблеру и алгоритму деиствий,

skqhq9noh8.jpg

вобщем устроиство будет делать: Измерять температуру и отображать её на семисегментнике.

вставать на охрану помещения нажатием на кнопку

Посылать смс и вызов используя SIM300bz

Посылать температуру при запросе.

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов 54
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Что-ж начал изучать, но все же приведу краткий алгоритм программы Инициализация мк > инициализация DS > измеряем t > выводим на индикатор > опрашиваем кнопку. если не нажата то сначала.

если нажата то остчитываем 10 сек и смотрим на датчик движения. Ну дальше все просто если сработал посылаем тревожную смс.

Полезная статья об 1-wire Моя ссылка. Скачал компилятор MicroC и книжку по си от Шпака, но там другои компиль описан, что сводит её пользу на нет(((

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

SIM300 имеет некоторые особенности, которые необходимо учесть при разработке устройства.

Посмотрел схему, порт С вам не удастся полностью использовать на индикацию, с6 и с7 нужно будет задействовать под UART.Лучше для индикации возьмите порт D и E, а аноды(катоды)индикаторов подключите через транзисторные ключи.

и ещё - где ограничевающие ток резисторы.

SIM300 seminar.rar

Изменено пользователем Станислав
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Тем временем готова часть кода измерения температуры..

// Сигнализация на gsm модуле датчике движения и ds1821
// Кварц 4 мГц
// Разработал Андреи_Ч
#include <pic.h>
#include <htc.h>/* Примеры

               _delay(1000);           // delay for 1000 instruction cycles
               CLRWDT();
               __delay_us(400);        // delay for 400 microseconds
               CLRWDT();
               __delay_ms(2);          // delay for 2 milliseconds
*/
#define _XTAL_FREQ 4000000  // Определяю частоту МК
#define   RB0      DQ
__CONFIG ( XT & WDTDIS & PWRTEN & BOREN & LVPDIS & DUNPROT &
WRTEN & DEBUGDIS & UNPROTECT );
char val ; // Переменная того что будем записывать в DS
bit  DQ = 0;
unsigned char presence;
unsigned char temper = 0;          // Температура

unsigned char ow_reset()           ;// 
void izmer(void)                   ;
unsigned char write_byte(char val) ;
void write_bit(char bitval)        ;
unsigned char read_byte(void)      ;
unsigned char read_bit(void)       ; 
void main (void)
{
   OPTION = 0b00000011 ;
   CMCON =  0b00000111 ;
   TRISA = 1 ; // Button
   TRISB = 1 ; // DS1821
   TRISC = 0 ; // Led display
   TRISD = 0 ; // Zoomer
presence=ow_reset(); // Так вызываем, и presence равен значению, которое вернется
if (presence == 0)
izmer();          // Если есть presence

{ow_reset();}        // Если его нет
}
//RESET///////////////////////////
unsigned char ow_reset(void)
{
unsigned char presence;
DQ = 0;             //pull DQ line low
__delay_us(480);    // leave it low for 480us
DQ = 1;             // allow line to return high
__delay_us(60);     // wait for presence
presence = DQ;      // get presence signal
__delay_us(240);    // wait for end of timeslot
return(presence);   // presence signal returned
} // 0=presence, 1 = no part
//IZMER//////////////////////////
void izmer(void)
   {
char val = 0x0C   ; // Активирую запись в конфиг регистр
write_byte(val)   ;
char val = 0x01   ; //Одноразовое преобразование
write_byte(val)   ;
ow_reset()        ; // Опять ресет
char val = 0xEE   ; // Начало преобразования
write_byte(val)   ;
read_byte()       ; // Читаем

   }
////WRITE_BYTE/////////////////////
unsigned char write_byte(char val) 
{unsigned char i;
unsigned char temp;
for (i=0; i<8; i++) // writes byte, one bit at a time
{
temp = val>>i;      // shifts val right 'i' spaces
temp &= 0x01;       // copy that bit to temp
write_bit(temp);    // write bit in temp into
}
__delay_us(100);
}
//WRITE_BIT///////////////////////
void write_bit(char bitval)
{
DQ = 0; // pull DQ low to start timeslot
if(bitval==1) DQ =1; // return DQ high if write 1
__delay_us(104); // hold value for remainder of timeslot
DQ = 1;
}
//READ_BYTE/////////////////////////
unsigned char read_byte(void)
{
unsigned char i;

for (i=0;i<8;i++)
{
if(read_bit()) temper|=0x01<<i; // reads byte in, one byte at a time and then
// shifts it left
__delay_us(120); // wait for rest of timeslot
}
return(temper);
}
//READ_BIT//////////////////////////////
unsigned char read_bit(void)
{
unsigned char i;
DQ = 0; // pull DQ low to start timeslot
DQ = 1; // then return high
for (i=0; i<3; i++); // delay 15us from start of timeslot
return(DQ); // return value of DQ line
}

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Функция READ_BYTE возвращает беззнаковый баит, хотя в моем датчике, 1821 значение выдает со знаком, т.е 7ои бит и есть знак, получается мне надо переделать на signed char?

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

вчера я написал, ЧТО нужно делать.

по данному куску кода - ничего не нужно делать.

во-первых, здесь абсолютно без разницы, знаковый тип или беззнаковый возвращает функция чтения байта - работать она будет идентично.

во-вторых, вы неправильно вызываете функцию, по сути теряя возвращаемое ею значение (или, как вариант, вы зря сделали ее функцией, поскольку результат хранится в глобальной переменной temper)

в-третьих, результатом работы функции чтения байта вы не пользуетесь вовсе, что не дает возможности утверждать, нужен ли вам ее знаковый тип.

поскольку в памяти оба варианта хранятся как байт, а учитывать знак или нет - это лишь вопрос интерпретации полученных восьми бит.

повторюсь, ЧИТАЙТЕ про функции и процедуры в си.

БОЛЬШЕ читайте, иначе у каждого очередного светофора будете спрашивать, на какой цвет переходить улицу.

Ссылка на комментарий
Поделиться на другие сайты

Сеичас я вызываю так

void izmer(void)
   {
char val = 0x0C   ; // Активирую запись в конфиг регистр
write_byte(val)   ;
char val = 0x01   ; //Одноразовое преобразование
write_byte(val)   ;
ow_reset()        ; // Опять ресет
char val = 0xEE   ; // Начало преобразования
write_byte(val)   ;
temper=read_byte()       ; // Читаем

надеюсь сеичас правильно. Но теперь когда у меня есть значение температуры в регистре, мне надо это все дело отобразить всего на двух знаках индикатора.

Подскажите где почитать про динамическую индикацию на си? Если у кого есть последовательность деиствий, выложите пожалуиста?

Я пока написал это

void indic(void)
{
ind_1 = temper/10;   // Первый индикатор это десятки
ind_2 = temper%10;   // Второй - еденицы (остаток от деления на 10)
}

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

почитать наверное проще в гугле, уверен наткнетесь на форуме на кусок кода конкретно по вопросу, а не на целую книжку на 300 страниц :)

если индикаторы семисегментные, то для каждой цифры задайте битами в массиве из десяти байтов (по числу десятичных цифр) такое число, чтобы горели нужные сегменты.

и используйте ind_1 и 2 как индексы вв этом массиве.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Я тут опять на ассемблер переполз потихоничку, Вот и писАл писал. И написал))) Что теперь симулятор тормозит

вот для такои схемки2150517m.jpgпока без сим 300

вот такой довольно запутанный код

;Сигналка

	#include <P16f877A.INC>
	__CONFIG  _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC
cblock 20H
       W_Temp
       Stat_Temp
       SecL
       SecM
       SecH
       Znaki
       T_TMR1L
       T_TMR1H
endc
;+++++++++++++++++++++++++++
       FLAG equ 7FH
tm           equ 0
Nado_s       equ 1
Indicator    equ 3   ; флаг включения индикатора
ohr          equ 4   ; охрана вкл/выкл
dat          equ 5   ; датчик движения

;++++++++++++++++++++++++++       
	org 0x00
	goto START
       org 0x04
       goto INT
;=================
START   	bsf     STATUS, RP0   ; Банк1
       	movwf   b'10000000'
       	movwf   OPTION_REG    ; RBPU on
       	movlw   0xFF
       	movwf   TRISA         ; INPUT
       	movwf   TRISB         ; INPUT
       	clrf    TRISC         ; OUT
       	clrf    TRISD         ; OUT
       	bcf     STATUS, RP0   ; Банк 0
       	clrf    PORTA
       	clrf    PORTB
      	 	clrf    PORTC
       	clrf    PORTD
       	CLRF 	T1CON 		  ; Stop Timer1, Internal Clock Source,
; Инициализация таимера
           CLRF    TMR1L
           CLRF    TMR1H
		BSF     STATUS,RP0    ; Банк 1
		CLRF    INTCON        ; Disable interrupts
		MOVLW 	b'00000111'
		MOVWF 	ADCON1        ; Comparator OFF
		CLRF 	PIE1          ; Disable peripheral interrupts
		BCF 	STATUS, RP0   ; Bank0
		CLRF 	PIR1          ; Clear peripheral interrupts Flags
		MOVLW 	b'00000000'   ; Internal Clock source with 1:1 prescaler
		MOVWF 	T1CON         ; Timer1 is stopped and T1 osc is disabled
		BSF 	T1CON, TMR1ON ; Timer1 starts to increment
; Прерывания от таимера1
;=================================================
		bsf     STATUS, RP0
		bsf     PIE1,TMR1IE    ; Включить прер от TMR1
		bsf     INTCON, PEIE   ; Включит периферийные прерывания
		bsf     INTCON, GIE    ; Global
		bcf     STATUS, RP0    ; BANK 0
;Установить таимер на 10 000 циклов (10мс)
		movlw   0xF0           ; Загрузить сначала во 
		movwf   T_TMR1L        ; временные регистры, 
		movlw   0xD8           ; потом в регистры таимера
           movwf   T_TMR1H
           movf    T_TMR1L,W
           movwf   TMR1L
           movf    T_TMR1H,W
           movwf   TMR1H
;=================================================
;Прерывания включены (10мс)смотрим на флаг
;Если установлен, то смотрим на кнопку
           clrf    FLAG
Prover_f_tm btfsc	FLAG,tm		; Проверить флаг
			goto    KNOPKA      ; Если установлен, то проверить кнопку
     	    goto    Prover_f_tm
		nop

KNOPKA      bcf     FLAG,tm     ; сбросить флаг прерывания
           btfsc   PORTA,1     ; проверить кнопку
           goto    BUZER       ; если нажата

           btfsc   FLAG,ohr    ; если не нажата то проверить флаг охраны
           return       ; если он установлен, то вернуться в подпрограмму индикации
           goto    START       ; Не установлен флаг и не нажата кнопка
BUZER       movlw   .51          
           movwf   SecL         ; 0,5 сек
           bsf     FLAG,Nado_s
period      bsf     PORTC,1      ; звуковои сигнал 1кГц.; 
           movlw   .166         ; Положительный полупериод
           movwf   SecM
           decfsz  SecM,F
           goto    $-1
           nop
           bcf     PORTC,1      ; Отрицательный
           movlw   .166
           movwf   SecM
           decfsz  SecM,F
           goto    $-1
           nop
           btfsc   FLAG,Nado_s
           goto    period
           ; КУДА ИДТИ ПОСЛЕ  ПИПА?
           btfsc   FLAG,ohr         ; Если установлен флаг охраны 

           goto    START            ; нажата кнопка, то СТАРТ!!!( все отменяем) 
INDIC                                ; Если не установлет, то далее
           movf    T_TMR1L          ; Загружается таимер
		movwf   TMR1L            ; из временных регистров
		movf    T_TMR1H
           movwf   TMR1H     
           BSF 	T1CON, TMR1ON    ; Старт таимер
           movlw       .10          ; То что будет отображаться и
           movwf       SecH         ; количество секунд
loop        movlw       .100
           movwf       SecL         ; Переменная однои секунды.
           bsf         FLAG,Nado_s  ; Начнем отсчет( сбросится в прерывании когда досчитает)
           decf        SecH,1       ; Декремент, сохраняется в регистре
           movf        SecH,0
           call        TABLE
           movwf       PORTB
pros        btfsc       FLAG,Nado_s  ; секунда прошла?
           call        UZNAT        ; Пока ждем, посмотрим надо ли обрабатывать кнопу
           movf        SecH         ; Проверим на ноль
           btfss       STATUS,2     ; Если ноль, флаг =1
           goto        loop         ; Если в регистре SecH еще не =
           ; в конце индикации проверить флаг срабатывания датчика ohr
           btfsc       FLAG,ohr
           goto        ALARM       ; если установлен, и не было отмены тревоги, то АЛАРМА!!!
           goto        OHRANA      ; если нет, то на ОХРАНУ только ставим.
TABLE      addwf       PCL,F       ; Содержимое счетчика команд PC увеличивается
           retlw       b'00111111' ; ..FEDCBA = 0   Происходит скачек по таблице
           retlw       b'00000110' ; .....CB. = 1   на строку со значением, 
           retlw       b'01011011' ; .G.ED.BA = 2   записанным в аккумуляторе,
           retlw       b'01001111' ; .G..DCBA = 3   и далее - возврат по стеку.
           retlw       b'01100110' ; .GF..CB. = 4       
           retlw       b'01101101' ; .GF.DC.A = 5      
           retlw       b'01111101' ; .GFEDC.A = 6        
           retlw       b'00000111' ; .....CBA = 7                                     
           retlw       b'01111111' ; .GFEDCBA = 8                                     
           retlw       b'01101111' ; .GF.DCBA = 9
UZNAT 
; Узнать, надо ли обрабатывать кнопку, если надо то обработаем
; кнопка отменит тревогу, если установлен флаг ohr
; Если не установлен флаг ohr , то не обрабатывать кнопку
           btfss   FLAG,ohr       ; 
           goto    pros           ;если флаг установлен вернуться в подпрограмму индикации
           call    KNOPKA         ; если не установлен 
           return                 ; в индикацию
;===============================================
;=============================================== 

           clrf    PORTB
OHRANA      movf    T_TMR1L,w     ; Загружается таимер
		movwf   TMR1L         ; из временных регистров
		movf    T_TMR1H,w
           movwf   TMR1H     
           BSF 	T1CON, TMR1ON ; Старт таимер
cucles      movlw   .51           ; переменная пол-секунды
           movwf   SecL
           movlw   .13           ; 12 знаков для отображения
           movwf   Znaki
           decf    Znaki,f       ; Декремент с сохранением результата
           movf    Znaki         ; копир в W
           call    TABZNAKOV     ; загрузить знак
           movwf   PORTB         ; загрузить знак в порт
           call    DATCHIK       ; нет, проверить датчик
           goto    cucles        ; если нет срабатывания датчика, то повторим
TABZNAKOV
           addwf   PCL,F         
           retlw   .3
           retlw   .2
           retlw   .6
           retlw   .4
           retlw   .12
           retlw   .8
           retlw   .24
           retlw   .16
           retlw   .48
           retlw   .32
           retlw   .33
           retlw   .1
DATCHIK
           bsf     FLAG,Nado_s  ; Пол секундный интервал
           btfsc   FLAG,Nado_s  ; для отображения знака
           goto    $-1          ; По истечение 
           btfss   PORTA,2      ; Проверить датчик
           return               ; если нет срабатывания ,то возврат в OHRANA
           bsf     FLAG,ohr     ; если сработал, установим флаг
           goto    INDIC        ; на индикацию от 9 до 0, там же смотреть кнопку на отмену.  
ALARM      
           nop
;===============================================
;ПРЕРЫВАНИЕ
;===============================================
INT 		movwf   W_Temp      ; Скопировать содержимое регистра W
		movf 	STATUS,W    ; Скопировать содержимое регистра Status
		movwf 	Stat_Temp   ; Скопировать содержимое регистр

           bsf     FLAG,tm     ; флаг прерывания
		btfss   FLAG,Nado_s ; Проверим флаг
		goto    Ne_nado     ; Если не установлен, то не декремент
		decfsz  SecL        ; Декр,с пропуском если не ноль
		goto    Ne_nado     ; Пропустим, если еще не ноль.
	    bcf     FLAG,Nado_s ; Сбросили флаг

Ne_nado	    movf    T_TMR1L,w     ; Загружается таимер
		movwf   TMR1L       ; из временных регистров
		movf    T_TMR1H,w
           movwf   TMR1H

		bcf     PIR1, TMR1IF  ; Сброс флага прерывания от TMR1
		movf    Stat_Temp,W   ; Скопировать содержимое регистра Stat_Temp
		movwf   STATUS        ; Скопировать содержимое регистра W
		swapf   W_Temp,F      ; Поменять местами старший и младший полубайты
		swapf   W_Temp,W      ; Поменять местами старший и младший полубайты
           retfie
;--------------------------------------------------------------------------------
			goto    START			
           end

кто может что дополнить, пожалуиста.

Изменено пользователем Andrey_Ch8

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

закинул проэкт, глюк заключается в том что, при выходе из подпрограммы UZNAT, симулятор останавливается, хотя никаких точек останова нет , А в пошаговом режиме все нормально, но там отсчет времени 10 секунд, вручную как-то неудобно симулировать.

Изменено пользователем Andrey_Ch8

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

поторопился))оказыватся исходник в другои папке лежал))signpic.zip

Изменено пользователем Andrey_Ch8

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Первое на что наткнулся при нажатии одной из кнопок.

pros        btfsc       FLAG,Nado_s  ; секунда прошла?
           call        UZNAT        ; Пока ждем, посмотрим надо ли обрабатывать кнопу

Программа переходит на

UZNAT
           btfss   FLAG,ohr       ; 
           goto    pros           ;если флаг установлен вернуться в подпрограмму индикации

И оператором goto улетает обратно на метку pros. А возврат где ? У Вас получается зайикливание программы без возврата (return) и соответственно переполняется стек.

Исправляем ошибку и выкладываем сюда проект.

PS: Создайте проект в протеусе, такие мелкие программы легко в нём отлаживать.

Ссылка на комментарий
Поделиться на другие сайты

pros        btfsc       FLAG,Nado_s  ; секунда прошла?
           call        UZNAT        ; Пока ждем, посмотрим надо ли обрабатывать кнопу
           movf        SecH         ; Проверим на ноль

Но ведь флаг Nado_s сбрасывается в прерывании и когда он сбросится ( 1 секунда), то должны перейти на

movf        SecH         ; Проверим на ноль

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Поустранял недочеты но полюбому не все мне так кажется, пока вместо call поставил goto в первом режиме когда поставили на охрану, вроде сработало.Завтра продолжу просимулирую.

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Как в симуляторе MPLAB посмотреть что находится в стеке, у меня программа не туда возвращается, ввобще не понятно где она этот адрес взяла.

Извините нашел,HARDWARE STACK разбираюсь дальше.

Жалко что стек недоступен для модифицирования, при одном исполнении программы один адрес лишний( не используется)

Это так мысли вслух. простите.

Кстати придумал как решить проблему, когда в стеке верхний адрес не тот который нужен, можно в том месте куда вернулись ( не то место) организовать проверку флагов состояния программы и если условие совпадет, поставить еще один return, программа возьмет из стека то что надо и вернется туда куда надо. :)

Изменено пользователем Andrey_Ch8

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Кстати придумал как решить проблему,....
Андрей, не извращайся :) Программу надо писАть так, чтобы не было проблем со стеком. Если вызвал подпрограмму, значит из неё должен быть возврат.
Ссылка на комментарий
Поделиться на другие сайты

Подправил исходник в МПЛАБе все работает, хотел посмотреть как будет в Протеусе но не видно на индикаторе ничего, а сигнал и светодиод работают.signpic.zip

В четырнацатом посте тоже изменил аттач, чтобы не смущать народ, а то там ошибок куча была.

Не смог скомпилировать в протеусе, чтобы отладить в пошаговом режиме. выбирал разные компиляторы уже стандартный mpasmwin заменял на тот который в папке c MPLAB. Такая ошибка 2159604m.jpg

никто не знает какие здесь2143220m.jpg должны быть параметры, что-то не могу разобраться?

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Так получилось что вызвал подпрограмму ветвления а там еще одно, вот один адрес и забылся , но ничего все решил уже как нильзя проще : просто заменил call на goto)))

C хексом работает, просто не видно как сам исходник то не видно, вот я хотел чтоб Протеус сам скомпилировал, я так делал раньше для 16ф84 пика, а сеичас что-то не получается.

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

C хексом работает, просто не видно как сам исходник то не видно,
Я и говорю, в свойствах МК в протеусе указывай не хекс, а коф :)
вот я хотел чтоб Протеус сам скомпилировал
Зачем ?
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Имел дело с зарядкой батареек еще с советских времен. Тогда еще в магазине (!) купил специальную зарядку для ртутно-цинковых батареек, очень миниатюрная, зарядка шла от встроенного солнечного элемента (и это еще в советские времена!). Использовал для зарядки батареек для наручных часов, после первой зарядки батарейки хватало примерно на полгода, потом на 3-4 месяца. Потом (когда батарейка служила меньше двух месяцев) батарейка отправлялась на упокой. Спасала студента тогда очень эта вещица. Жалею что тогда не срисовал ее внутренности. А вот с зарядкой щелочных батареек пришлось заниматься уже значительно позже. Мне кто-то подарил такой набор (зарядка с комплектом перезаряжаемых батареек) - вот его обзор https://aphnetworks.com/reviews/pure_energy_xl  Все было нормально, но у всех этих батареек ресурс очень ограничен, примерно 25 циклов максимум. После чего емкость уменьшается и нет смысла их дальше использовать. После каждой зарядки емкость уменьшается, но не сильно. Реально раз десять заряжать можно точно без проблем. После того как выработался ресурс последней батарейки стал вопрос - а можно ли заряжать обычные батарейки тоже? Зарядка-то осталась... И как раз в то время приобрел обычные (т.е. "незаряжаемые") батарейки той же фирмы (PureEnergy). Оказалось что они заряжаются точно также, как и "заряжаемые"! Возможно что у них та же химия... Пробовал батарейки разных фирм, степени разряда. Короче говоря, фирменные всякие Дюраселлы и Энержайзеры не заряжаются вообще, и даже могут потечь во время зарядки. А вот самые дикие и дешевые нонейм чаще всего заряжаются без проблем. Насчет емкости - конечно емкость полностью не восстанавливается, но для работы в беспроводной клаве,, мышке или пульте вполне хватает и достаточно надолго.  Но занимаюсь этим нечасто, просто когда лень ехать в магазин за очередной партией батареек.  А если есть возможность, то предпочитаю переделывать питание под литий. Очень сильно достает саморазряд всяких Ni-Cd, Ni-MH - разряжаются даже те, которые якобы должны долго держать заряд. Схему зарядки еще не срисовывал (лень было разбирать), но схема сложнее чем все что я видел в Интернете. Напряжение заряда примерно 1,7в. xlaa_tds.pdf
    • Я делаю ставку на контакты NC реле запуска и NO реле торможения. Тем более они такие хлипенькие.
    • Раз смогли срисовать схему "силы", то и решить проблему для вас вряд ли сложно будет... Проверьте емкость и ЭПС C-20мкФ и сопротивление контактов этих двух реле в on/off
    • Как? Вы ж никакой информации для работы мозга не дали. Ну, что-то собрали, как-то подключили, подаёте 220 на схему с незапаянным трансформатором, лампочка моргает, защита не срабатывает... Единственный вариант - вас отодвинуть и посмотреть, что там происходит. Но вы даже где обитаете не указали... Единственное, что можно вытянуть из вашего текста: Как может работать микросхема, если у неё замкнуто питание? Перед подачей 220 вы эту перемычку сняли?  
    • Если тут нет необходимой инфы, на это можно забить. Вот если он отвечает на АТ несколькими строками, то стоит разбирать на лету (во время приема) из кольцевого буфера.
    • Так что? Помогите реализовать, нужно за меня реализовать, подскажите как реализовать?? "Барыня лягли и просють..." Вас что в школе, дома, на улице никто не учил диалог вести. 
×
×
  • Создать...