MẠCH SẠC PIN USB VỚI PIC16F629

MẠCH SẠC PIN USB VỚI PIC16F629


USB Pin sạc Circuit Pic16f629 vi điều khiển từ cổng USB của máy tính với tích hợp 1 100-1000 trên pin AAA sạc mạch thời gian sạc của pin 1-14 giờ tùy thuộc vào pin hiện nay khi cảnh báo được đưa ra đầy đủ với đèn LED màu kép và còi. 7805 5-volt điều mạch tích hợp sẽ được sử dụng trên sơ đồ mạch cho cổng USB besleneeg sẽ sử dụng, do đó bạn không muốn sử dụng cổng USB với 9v ... adaptor 12v phải được cắm vào 7805 ..
Cổng sạc USB
aaa-pin-sạc-usb-port-usb-sạc-sơ đồ
Mạch sạc pin USB có các tệp .asm và .hex nguồn được chuẩn bị bởi phần mềm vi điều khiển.
; Pin NiCd NiMh đã thu được

; phiên bản 1.1 - bộ xử lý PIC12F629, RC nội bộ 4.00MHz (17.12.2006)
; Đã cải thiện độ chính xác thời gian gián đoạn và thời gian cố định
; Nhấn nút và, sau khi kết thúc quá trình sạc, 10 x zapipa

; phiên bản 1.0 - bộ vi xử lý PIC12F629, RC nội bộ 4.00MHz (28.5.2006)

; Mô tả:
; Khi bật nguồn, đèn LED màu lục sẽ sáng lên. Nhấn nút
; đèn LED màu xanh lá cây tắt và đèn LED màu đỏ nhấp nháy và bắt đầu nhấp nháy
; để có dòng điện 100mA. Tiếp theo đẩy 2x (200mA) và 3x (300mA).
; 1 đèn flash - 100mA trong 14 giờ
; 2 nhấp nháy - 200mA trong 7 giờ
; 3 nhấp nháy - 300mA trong 5 giờ
; Sau khi nhấn khác, đèn LED màu đỏ sẽ ngừng nhấp nháy và pin sẽ ngừng sạc
; và đèn LED xanh lục sáng lên. Toàn bộ chu kỳ được lặp lại trong bánh xe.
; Khi pin được xả ra, đèn LED cổ tử cung tắt tiếng sẽ dừng lại và đèn LED màu xanh lục sáng lên.

; Lưu ý:
; Trước khi lập trình bộ xử lý, hãy đọc và ghi giá trị của
; byte (03FFh) của bộ nhớ chương trình. Giá trị hiệu chuẩn nội bộ được lưu trữ ở đó
; Bộ dao động 4MHz. Viết giá trị bạn cần vào đáy hộp.

; Bộ xử lý được thiết lập: 125mA full port, 25mA out.

; ************************************************* *************************
; * PIC12F629 / 12F675 *
; * -------- \ / -------- *
; * + 5V - | Vdd Vss | - 0V *
; * Thu được 200mA - | osc1 / GP5 GP0 | - Áp lực (A / D) *
; * Thu được 100mA - | osc2 / GP4 GP1 | - LED xanh *
; * Tlacitko - | MCLR / GP3 INT / GP2 | - Đèn LED Cervena *
; * ------------------ *
; * http://www.cmail.cz/doveda DOVEDA BOYS (c) 1997-2006 *
; ************************************************* *************************

; Phân bổ bộ nhớ trong bộ xử lý PIC16F629 và PIC16F675

; Procesor, EPROM, RAM, EEPROM, A / D, RS232, I2C, INT.OSC
; PIC16F629, 1024, 64, 128, ----, ----, ----, 4MhZ
; PIC16F675, 1024, 64, 128, 4, ----, ----, 4MhZ

; Banka 0 -> 20h - - 5Fh (64 byte)
; Ngân hàng 1 -> A0h - làm BANK 0 - DFh (64 byte)
; ************************************************* *************************

danh sách p = 12f629, R = DEC
bao gồm "p12f629.inc"

RAM equ 20h; RAM bộ nhớ đầu tiên cho PIC16F629 - 64 byte (20h-5Fh)
TMP_W equ RAM + 01; temp preruseni
TMP_S equ RAM + 02; gián đoạn tạm thời
TMP_PCL = RAM + 03; temp preruseni

C_10ms bằng RAM + 04
C_100ms bằng RAM + 05
C_1s = RAM + 06
PRIZNAK bằng RAM + 07; triệu chứng
Hàm hoạt động = RAM + 08
POSUN equ RAM + 10

T_SEC bằng RAM + 11
T_MIN bằng RAM + 12
T_HOD bằng RAM + 13

AL_MIN = RAM + 14
AL_HOD bằng RAM + 15

LOOP0 bằng RAM + 16
LOOP1 bằng RAM + 17
LOOP2 bằng RAM + 18
LOOP3 equ RAM + 19

T_BEEP bằng RAM + 20
BEEP1 bằng RAM + 22
BEEP0 bằng RAM + 23
POCET = RAM + 24

#define B_END PRIZNAK, 1; 1 = rất nhiều trang phục dân gian
#define B_PIP PRIZNAK, 2; 1 = bật (nhấn nút)
#define B_PIP8 PRIZNAK, 3; 1 = pipet gấp (kết thúc thu được)
#define B_PIPX PRIZNAK, 4; 1 = Đường ống thời gian được phép
#define B_TLAC PRIZNAK, 5; 1 = được đánh giá bằng 1 lần đọc
#define B_TISK PRIZNAK, 6; 1 = Nhấn OK

#define Q_PIP GPIO, 0; Áp lực (0 = yên tĩnh, 1 = đóng)
#define Q_LEDZ GPIO, 1; LED màu xanh lá cây (0 = không xác định, 1 = hoàn tác)
#define Q_LEDR GPIO, 2; Cervena LED (0 = nesviti, 1 = sviti)
#defines TLAC1 GPIO, 3; Nút (0 = đóng, 1 = yên tĩnh)
#define Q_100m GPIO, 4; Thu được 100mA (0 = clid, 1 = gain)
#define Q_200m GPIO, 5; Đạt được 200mA (0 = clid, 1 = gain)

	org 0x2007; địa chỉ cấu hình cho PIC16F629 và 675
	dw _BODEN_ON & _CP_OFF ​​& _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _CPD_OFF

	org 0x0000; phần đầu của chương trình
	goto INIT; nhảy khi khởi tạo ban đầu

	org 0x0004; phá vỡ vector
	goto PRERUS

; ************************************************* *************************
; * ngắt mỗi 250us (4000Hz) *
; ************************************************* *************************
; Lưu các giá trị W và STATUS

PRERUS movwf TMP_W
	swapf STATUS, W; chuyển NIBble STATUS thành role W
	bcf STATUS, RP0; thiết lập ngân hàng 0
	movwf TMP_S; lưu STATUS
; ------------------------
	bcf INTCON, T0IF; đặt lại cờ bộ đếm thời gian TMR0
; -------------------------------
; giờ trôi qua nhanh chóng .10
; đồng hồ đi chậm .8

	movlw .9; đặt hẹn giờ 256 - 250 = 6 + 13 (ngắt = 250us)
	addwf TMR0, F; thiết lập tỷ lệ tinh tế của lưng
; -------------------------------
	movlw b'00000001 '; phủ định bit Q_PIP (những người khác không thay đổi)
	btfsc B_PIP; bật hoặc tắt thay đổi đầu ra piezomenic
	xorwf GPIO, F; = 1, được bật (tần số Piskani = 2000Hz)
; -------------------------------
CAS_10m decfsz C_10ms, F
	goto INT_END; bạn là 0
; ------------------------ !!! kazdych 10ms !!!
	movlw .40; khi khôi phục về 0, khôi phục giá trị
	movwf C_10ms; 10ms 20ms 40ms 80ms 160ms 320ms 640ms 1,28 giây 2,56 giây
; -------------------------------
; Pipnuti

	btfss B_PIP
	goto $ + 5; = 0, pipnout được lên lịch

	decfsz T_BEEP, F
	goto $ + 3; bạn là 0
; ------------------------
	bcf B_PIP; (piponi) đã lên lịch
	bcf Q_PIP; tắt đầu ra
; -------------------------------
; Pipani

	btfss B_PIP8
	goto INT_200; = 0, pipan bị tắt
; ------------------------
	btfss B_PIPX
	goto PIP0; = 0, bỏ qua không gian
; ------------------------
	bsf B_PIP; được phép trả lời
	decfsz BEEP1, F
	goto INT_200; bạn là 0

	bcf B_PIPX
	movlw .10; khoảng cách khoảng cách 10 * 10ms -> 100 mili giây
	movwf BEEP0

	goto INT_200
; ------------------------
PIP0 bcf B_PIP; zakazano pipnout
	decfsz BEEP0, F
	goto INT_200; bạn là 0

	bsf B_PIPX
	movlw .10; delka pipnuti 10 * 10ms -> 100 mili giây
	movwf BEEP1
; ------------------------
	decfsz POCET, F
	goto $ + 3; bạn là 0

	bcf B_PIP8; zakani (cuối) pipani
	bcf Q_PIP; tắt đầu ra	
; -------------------------------
; Casovac 200 mili giây

INT_200 decfsz C_100ms, F
	goto INT_1S; bạn là 0
; ------------------------ !!! kazdych 200ms !!!
	movlw .20; khi khôi phục về 0, khôi phục giá trị
	movwf C_100ms
; -------------------------------
; nhấp nháy với đèn LED

	btfss B_END
	goto INT_1S; = 0, trình đọc theo lịch

	bcf STATUS, C; prednastaveni bitu C
	btfsc POSUN, 0
	bsf STATUS, C

	rrf POSUN, F
; ------------------------
	btfsc STATUS, C
	bsf Q_LEDR; = 1, LED sviti

	btfss STATUS, C
	bcf Q_LEDR; = 0, tắt đèn LED
; -------------------------------
INT_1S decfsz C_1, F
	goto INT_END; bạn là 0
; ------------------------ !!! kazdych 1000ms !!!
	movlw .100; khi khôi phục về 0, khôi phục giá trị
	movwf C_1s

	btfss B_END
	goto INT_END; = 0, trình đọc theo lịch

	gọi REAL_T; đếm thời gian thực mỗi giây
	gọi ALARM; so sánh thời gian đặt
; -------------------------------
; khôi phục giá trị W và STATUS

INT_END swapf TMP_S, W; prohodi nibble TMP_S a ulozi do W
	movwf STATUS; obnova STATUS

	swapf TMP_W, F; prohodi nibble TMP_W
	swapf TMP_W, W; obnova W
; ------------------------
	retfie; trở về từ sự gián đoạn
; ************************************************* *************************
REAL_T incf T_SEC, F; pricti sekundy (00 - 59)

	movlw .60
	subwf T_SEC, W
	btfss STATUS, Z
	trở lại; Chuyển giây

	clrf T_SEC
; -------------------------------
	incf T_MIN, F; pricti minuty (00 - 59)

	movlw .60
	subwf T_MIN, W
	btfss STATUS, Z
	trở lại; không chuyển phút

	clrf T_MIN
; -------------------------------
	incf T_HOD, F; giờ đồng hồ (00 - 23)

	movlw .24
	subwf T_HOD, W
	btfss STATUS, Z
	trở lại; không truyền đồng hồ

	clrf T_HOD
; -------------------------------
	trở về
; ************************************************* *************************
ALARM movlw .00; so sánh giây
	subwf T_SEC, W; T_SEC - W -> W
	btfss STATUS, Z
	trở lại; = 0, 0 giây
; -------------------------------
	movf AL_HOD, W; so sánh đồng hồ
	subwf T_HOD, W; T_HOD - W -> W
	btfss STATUS, Z
	trở lại; = 0, giá trị không khớp
; ------------------------
	movf AL_MIN, W; porovnat phút
	subwf T_MIN, W; T_MIN - W -> W
	btfss STATUS, Z
	trở lại; = 0, giá trị không khớp
; -------------------------------
; thời gian báo động được đánh giá

	movlw .10; số lượng đường ống
	movwf POCET
	movlw .10; delka pipnuti 10 * 10ms -> 100 mili giây
	movwf BEEP1
	movlw .10; khoảng cách khoảng cách 10 * 10ms -> 100 mili giây
	movwf BEEP0

	bsf B_PIP8; pipani được phép
; ------------------------
	bcf B_END; trình đọc theo lịch biểu
	clrf HOẠT ĐỘNG

	bcf Q_LEDR; LED tắt
	bsf Q_LEDZ; LED sviti

	bsf Q_100m; vypnout tự hào 100mA
	bsf Q_200m; tắt dòng 200mA
; ------------------------
	trở về
; ************************************************* *************************
INIT movlw b'110000 '; đặt trước 0 đến GP0 - GP5
	movwf GPIO

	movlw b'00000111 '; = 07h, GPIO đầu vào - GP2 (so sánh OFF)
	movwf CMCON
; ------------------------
	bsf STATUS, RP0; thiết lập NGÂN HÀNG 1

	movlw B'001000 '
	movwf TRISIO; thiết lập cổng GP0 (0 = đầu ra, 1 = đầu vào)

	movlw b'11011000 '; TẮT KHÓA CẮT, preddelic = 1: 1 kết nối với WDT
	movwf OPTION_REG; f = 4,0MHz: 4: 1: 250 = 4000Hz (250us)

	gọi 03FFh; viết hiệu chuẩn của bộ dao động bên trong
	movwf OSCCAL; 00 phút f, 80h stred f, 0FFh pro max. f
; ------------------------
	movlw b'00000000 '; Đặt PULL-UP trên GP0 - GP2, GP4 - GP5
	movwf WPU; (0 bị tắt, 1 được phép)
	movlw b'00000000 '; sự gián đoạn khi thay đổi đầu vào GP0 - GP5
	movwf IOCB; Bật INT trên CHANGE trên GP0 (0 bị tắt, 1 được phép)

	bcf STATUS, RP0; thiết lập BANK 0
; -------------------------------
	clrf PRIZNAK

	clrf AL_MIN
	clrf AL_HOD

	clrf T_SEC
	clrf T_MIN
	clrf T_HOD

	clrf HOẠT ĐỘNG
	clrf POSUN

	movlw 01h
	movwf C_10ms
	movwf C_100ms
	movwf C_1s

	bsf Q_LEDZ; LED sviti
; ------------------------
	clrf TMR0; đặt lại TMR0 (và tiền tố của nó)

	movlw b'10100000 '; để cho phép gián đoạn ghi đè TMR0
	movwf INTCON
; ************************************************* *************************
MAIN gọi STISK; đánh giá ấn nút
; ------------------------
	btfss B_TISK
	goto CHÍNH; Nút = 0 không được nhấn
; -------------------------------
; nút được nhấn

	incf PROVOZ, F
	movlw b'00000011 '
	andwf PROVOZ, F

	bcf B_TISK
; ------------------------
	movlw .0
	subwf PROVOZ, W
	btfss STATUS, Z
	goto $ + 9

	movlw b'00000000 '; đặt nhấp nháy
	movwf POSUN

	bcf B_END; trình đọc theo lịch biểu
	clrf HOẠT ĐỘNG

	bcf Q_LEDR; LED tắt
	bsf Q_LEDZ; LED sviti

	bsf Q_100m; vypnout tự hào 100mA
	bsf Q_200m; tắt dòng 200mA
; ------------------------
	movlw .1
	subwf PROVOZ, W
	btfss STATUS, Z
	goto $ +. 10

	movlw b'00000001 '; đặt nhấp nháy
	movwf POSUN
	movlw .14; đặt HOD
	movwf AL_HOD
	movlw .00; đặt MIN
	movwf AL_MIN

	bcf Q_100m; zapnout tự hào 100mA
	bsf Q_200m; tắt dòng 200mA

	gọi SET_AL
; ------------------------
	movlw .2
	subwf PROVOZ, W
	btfss STATUS, Z
	goto $ +. 10

	movlw b'00000101 '; đặt nhấp nháy
	movwf POSUN
	movlw .07; đặt HOD
	movwf AL_HOD
	movlw .00; đặt MIN
	movwf AL_MIN

	bsf Q_100m; vypnout tự hào 100mA
	bcf Q_200m; zapnout tự hào 200mA

	gọi SET_AL
; ------------------------
	movlw .3
	subwf PROVOZ, W
	btfss STATUS, Z
	goto $ +. 10

	movlw b'00010101 '; đặt nhấp nháy
	movwf POSUN
	movlw .05; đặt HOD
	movwf AL_HOD
	movlw .00; đặt MIN
	movwf AL_MIN

	bcf Q_100m; zapnout tự hào 100mA
	bcf Q_200m; zapnout tự hào 200mA

	gọi SET_AL
; -------------------------------
	goto CHÍNH

; ************************************************* *************************
SET_AL clrf T_SEC
	clrf T_MIN
	clrf T_HOD
; ------------------------
	bcf Q_LEDR; LED tắt
	bcf Q_LEDZ; LED zhasnuta

	bsf B_END; người đọc yêu dấu
; -------------------------------
	trở về
; ************************************************* *************************
; Đánh giá ấn nút

STISK btfss TLAC1
	goto $ + 3; = 0, nhấn

	bcf B_TLAC; nút không được nhấn để bit bit được nhấn
	trở về
; -------------------------------
	btfsc B_TLAC
	goto $ + 4; = 1, lần truy cập được đánh giá trong lần đọc đầu tiên

	bsf B_TLAC; hit đầu tiên được đánh giá

	movlw .10; 4ms * 10 = 40 mili giây
	movwf LOOP3
; ------------------------
STISK1 gọi CEK4m; cekej 4ms

	btfsc TLAC1
	goto STISK; = 1, nút không được nhấn
; ------------------------
	decf LOOP3, F

	movf LOOP3, W
	btfss STATUS, Z
	goto STISK1; không có kết thúc đánh giá nút thời gian
; ------------------------
	bsf B_TISK; nhấn nút
; -------------------------------
; Pipnout

	movlw .10; delka pipnuti 10ms * 10 -> 100 mili giây
	movwf T_BEEP

	bcf B_PIP8; zakani (cuối) pipani
	bsf B_PIP; được phép đường ống
; -------------------------------
	trở về
; ************************************************* *************************
CEK100m movlw 0CFh; cas = 100,009 mili giây
	movwf LOOP0
	movlw 0A0h
	movwf LOOP1
	goto SMYCKA
; -------------------------------
CEK4m movlw 0A5h; cas = 4,001 mili giây
	movwf LOOP0
	movlw 008h
	movwf LOOP1
	goto SMYCKA
; -------------------------------
SMYCKA movf LOOP0, W
	movwf LOOP2
SMYCKA1 decfsz LOOP2, F; xay đồ trang sức
	goto SMYCKA1

	decfsz LOOP1, F; chọn đồ trang sức
	goto SMYCKA
	trở về
; ************************************************* *************************

	kết thúc; kết thúc chương trình
Tôi đang thêm bản dịch của trang web nguồn đóng góp ý kiến ​​để google dịch;
Bộ sạc pin AAA với cổng USB
Phí hiện tại Bạn có thể chọn từ 3 tùy chọn. Nút số màu đỏ LED bắt đầu nhấp nháy và thời gian và thời gian sạc được đặt. Sau khi sạc, đèn báo LED màu xanh lục và âm báo bắt đầu.
Đặt chương trình để sạc lại pin theo pin. Thời gian sạc bị hạn chế và điện áp sạc được tách ra khỏi pin sau thời gian được chỉ định. Tôi đặt thời gian hiện tại và chọn cái này. 1 xung là 100mA trong 14 giờ, hai xung 200mA trong 7 giờ và 300mA trong 3 giờ và 5 giờ. Chúng tôi khuyên bạn nên vào HAZPAPP 900mA hoặc 1000mA và sạc một trong mười lần dòng định mức 0.1C, chúng tôi cũng sạc 100mA hiện tại trong 14 giờ. Có thể rút ngắn thời gian sạc này xuống 200mA, 300mA, vì thời gian quá dài và trong một điều kiện nhất định. Tôi không khuyên bạn nên sử dụng nhiều hơn up-to-date vì phí được làm nóng và pin không theo dõi nhiệt độ. Điều này có thể gây ra quá nóng và sự tiêu hủy pin tiếp theo. Sạc pin để kiểm soát nhiệt độ và giảm nhiệt độ với công suất sưởi ấm cao hoặc khi thuận tiện để dừng thời gian sạc!
Lưu ý quan trọng: Các thiết bị USB có thể vẽ tới 100mA từ PC. Bộ mô tả cấu hình phạm vi hiện tại chỉ có thể được lấy ra và được thừa nhận bởi hệ điều hành Energy. Đây không phải là tính phí và do đó mỗi máy tính có thể không hoạt động. Do đó, nó có thể ghi nhớ (và nên) được định nghĩa là hiện tượng đoản mạch và cổng USB trong một thời gian dài và vẽ hiện dứt khoát tụ C1 lớn cho nhân loại nấm.
Giải thích hoạt động: Đèn xanh lục sau khi kết nối bộ chuyển đổi với cổng USB của PC. Phí cho thấy năng lượng và sẵn sàng để sạc. Nhấn nút sẽ nhấp nháy màu xanh lá cây và sau mỗi 1,6 giây sau khi đèn LED chuyển sang màu đỏ 1. Nó sẽ nhấp nháy 2 lần khi được nhấn và 3 lần sau khi được nhấn. Đèn đỏ và xanh lục đang tắt và bộ sạc đã sẵn sàng để sạc. Mỗi khi bạn nhấn nút, nó sẽ được sau khi bạn nghe thấy một tiếng bíp và sạc tiếng bíp 10 lần.
Cổng sạc USB
Bộ sạc sẽ sạc pin theo chương trình đã cài đặt. Thời gian sạc bị hạn chế và sau thời gian đặt ngắt kết nối pin khỏi điện áp sạc. Đặt thời gian hiện tại và tôi đã chọn mục này. 1 xung là 100 mA trong 14 giờ, hai nhấp nháy là 200mA trong 7 giờ và 3 nhấp nháy là 300 mA trong 5 giờ. Nếu chúng ta đưa vào tài khoản pin 900 mA hoặc 1000 mA và đề nghị tính phí 0,1 C tức là một phần mười của dòng danh nghĩa, vì vậy chúng tôi tính phí hiện tại của 100 mA trong 14 giờ. Bởi vì thời gian quá dài một trường hợp cụ thể, có thể rút ngắn thời gian sạc và tăng dòng điện lên 200 mA và 300 mA. Tôi không khuyến cáo sử dụng nhiều dòng điện hơn vì sạc được làm nóng và bộ sạc pin không kiểm tra nhiệt độ của pin. Điều này có thể gây ra quá nóng và sự tiêu hủy pin tiếp theo.
PIC16F629 với USB Pin sạc Circuit file Nguồn: http://www.cmail.cz/doveda/konstrukce/aku_usb/index.htm liên kết thay thế: PIC16F629 với USB Pin sạc Circuit
Tệp tải xuống danh sách LINK (ở định dạng TXT) link-746.zip mật khẩu-pass: 320volt.com

Post a Comment

[disqus] [facebook] [blogger]

MKRdezign

Biểu mẫu liên hệ

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget
Hỗ trợ trực tuyến