PDA

View Full Version : hỏi về đo dung lượng pin


littlephoc
21-06-2007, 02:30 PM
Mình muốn đo dung lượng pin còn lại của board mạch. chân RB3 được nối với 1 cục gọi là 4041 (PDV), chẳng biết nó là cục gì nhưng người ta bảo nó dùng để đo năng lượng pin còn lại của cục pin gắn trong mạch.
Vậy mình muốn đo thì phải làm sao, mong được chỉ giáo.

namqn
21-06-2007, 06:48 PM
Mình muốn đo dung lượng pin còn lại của board mạch. chân RB3 được nối với 1 cục gọi là 4041 (PDV), chẳng biết nó là cục gì nhưng người ta bảo nó dùng để đo năng lượng pin còn lại của cục pin gắn trong mạch.
Vậy mình muốn đo thì phải làm sao, mong được chỉ giáo.
Đã có người cho biết đó là linh kiện để đo năng lượng của pin thì bạn cố hỏi thêm là hãng nào sản xuất, có datasheet hay không. Chứ chỉ có 1 cái hộp đen thì không thể nào sử dụng được vì không có thông tin. Nếu bạn vẫn dùng PIC18F2620 thì chân RB3 có thể là chân analog (AN9).

Thân,

littlephoc
24-06-2007, 07:21 AM
device đo dung lượng pin là LM4041
Em đã thử viết nhưng kết quả trả về đều là giá trị 0. Có lẽ em chưa hiểu nguyên lý nó hoạt động thế nào. Và vấn đề hình như có liên quan đến Vref.
sau đây là đoạn code:

#include <p18f2620.h>
#include <delays.h>
#include <usart.h>
#include <adc.h>
#include <stdio.h>

#pragma config OSC = HS, WDT=OFF, LVP=ON

void main (void)
{
int result,i;
OpenADC(ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_12_TAD,
ADC_CH9 & ADC_INT_OFF & ADC_VREFPLUS_VDD,3);
OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON &
USART_ASYNCH_MODE & USART_EIGHT_BIT &
USART_CONT_RX & USART_BRGH_HIGH, 8); //8 bits, 57600
Delay10TCYx(5); //delay for 50T cycle
TRISA=0x2F;
TRISB=0xFF;
while(1){
ConvertADC(); //start conversion
while(BusyADC()); //wait for completion
result = ReadADC(); //read result
Delay1KTCYx(100000); //delay
Delay1KTCYx(100000);
PORTAbits.RA4=0;
printf("%x,",result);
Delay1KTCYx(100000);
Delay1KTCYx(100000);
PORTAbits.RA4=1;
}
}

namqn
24-06-2007, 08:09 PM
Nếu con LM4041 đó có 3 chân thì có lẽ nó chỉ là một chip voltage reference thôi, chứ không phải thiết bị đo gì cả. Trong phần code có dùng Delay1KTCYx(), hàm này chỉ nhận đối số kiểu unsign char (byte), do đó Delay1KTCYx(100000) tương đương với Delay1KTCYx(160), vì các byte cao hơn của tham số không được quan tâm.

Nếu nhiệt độ có thể xem là không thay đổi nhiều thì chỉ cần đo điện áp và dòng điện, ngược lại thì phải đo cả 3 đại lượng, và dựa vào các đường cong do nhà sản xuất battery cung cấp thì mới đo đúng dung lượng của battery. Phần cứng do người khác thiết kế mà không hề có thông tin gì về nó thì rất khó sử dụng.

Thân,

littlephoc
25-06-2007, 03:09 AM
Em không rõ cách tính dung lượng pin. Có phải tính là P=U.I ?
như vậy, vì A/D converter không thấy nói gì về đo cường độ dòng điện nên em có thể đo P=U.I = U^2/R ?
chip LM4041 do bên design chỉ đưa 1 chân vào chân A/D của PIC, 1 chân nối mass, vậy có lẽ là họ thiết kế có thiếu sót cho nên em nhận tín hiệu lúc nào cũng có giá trị 0. Cần có 1 dòng điện từ nguồn nối với 1 điện trở để nối tiếp với điện trở shunt của LM4041. Vậy cho em hỏi giá trị của điện trở này khoảng bao nhiêu thì vừa ?

littlephoc
25-06-2007, 05:25 PM
Bắt đầu đọc nhiều về A/D converter thấy nhiều quá. Sử dụng 3 sensor : đo nhiệt độ, light, và dung lượng pin.
Đo nhiệt độ dùng pin B4. nối nguồn Vcc cho sensor device.
Về phần đo dung lượng pin (chân B2) và light (chân B3), mỗi chân đều nối trực tiếp đến sensor device, đồng thời nối song song với 1 điện trở.
Điều em không hiểu ở đây là tại sao lại nối với chân B5 ?
Chân A2 theo datasheet thì nó là Vref-/CVref.
pic18F2620,dao động của thạch anh là 8Mhz, cấp nguồn 3V.
- Vậy xin hỏi phải cấu hình như thế nào khi dùng C18.
- Khi chọn A/D converter cho nhiệt độ, thì bắt buộc phải chọn Vref là Vcc, như vậy gọi hàm SetChanADC (ADC_CH11) rồi thì ghi thẳng giá trị cho VCFG hay là phải gọi lại hàm OpenADC ?
- Xin giải thích giùm về nguyên lý cách dùng pin A2 trong trường hợp này.

namqn
25-06-2007, 07:03 PM
Em không rõ cách tính dung lượng pin. Có phải tính là P=U.I ?
như vậy, vì A/D converter không thấy nói gì về đo cường độ dòng điện nên em có thể đo P=U.I = U^2/R ?
chip LM4041 do bên design chỉ đưa 1 chân vào chân A/D của PIC, 1 chân nối mass, vậy có lẽ là họ thiết kế có thiếu sót cho nên em nhận tín hiệu lúc nào cũng có giá trị 0. Cần có 1 dòng điện từ nguồn nối với 1 điện trở để nối tiếp với điện trở shunt của LM4041. Vậy cho em hỏi giá trị của điện trở này khoảng bao nhiêu thì vừa ?
P là công suất chứ không phải dung lượng đâu. Dung lượng battery là năng lượng lưu trữ trong nó, đơn vị đúng là Ws, Wh hay kWh. Tuy nhiên, vì điện áp của battery đã biết, nên dung lượng của pin thường được tính là mAh hay Ah. Ví dụ, một battery cỡ AAA có dung lượng 2300 mAh sẽ chạy được 10 h nếu nó cấp dòng 230 mA, và chạy được 100 h nếu dòng cung cấp là 23 mA.

Quan hệ giữa dung lượng của battery và điện áp đầu cực của nó thường không có công thức tính, vì nó phụ thuộc mạnh vào nhiệt độ, và dòng điện tiêu thụ (dòng cấp ra từ battery). Do đó, nên sử dụng các datasheet của các nhà sản xuất battery cho từng loại cụ thể. Khi đó mới có thể từ điện áp đầu cực của battery, dòng cung cấp, và nhiệt độ mà suy ra dung lượng. Hãy thử đọc một datasheet của battery.

Thân,

littlephoc
25-06-2007, 07:30 PM
Em dùng 2 viên pin AAA loại Alkaline bình thường bán rất nhiều ở siêu thị.
Anh Nam có thể giải thích cho em các phần mà em có hình minh họa không ạ ?