các bác cho em hỏi 1 chút, em muốn đo dải điện áp thừ 0-30V chẳng hạn, em làm = ADC 8bit của AVR. mạch cứng em dùng cầu phân áp đưa về 0-5V vào chân AIN của VDK .như vậy có đúng không ạ, và công thức để suy ra điện áp thực trên LCD như thế nào vậy ạ, mong giúp em sớm chút.
Thông báo
Collapse
No announcement yet.
đo điện áp bằng AVR hiển thị LCD
Collapse
X
-
chân AIN0 và AIN1 của nó là 2 chân so sánh,nó là 2 chân vào của bộ so sanh bên trong,cũng có thể làm như bộ ADC nhưng fai có mạch ngoài.bạn đưa tín hiệu vào các chân ADC để đo lun.
vdu bộ ADC 8bit:
256 ~ 30V
ADC -> ADC*30/256 (V)
khi làm tốt phần đo thì sẽ tối ưu code nhé.email:trangonthuocthom@gmail.com
-
em lấy AIN2 làm chân vào điện áp. ADC của em là 8 bit tương ứng là 30V=5V ở đầu ra cầu phân áp. và 30V=5V=256 ở đầu vào AIN2. em test thử thì thấy ko đúng.Nguyên văn bởi trathuoc Xem bài viếtchân AIN0 và AIN1 của nó là 2 chân so sánh,nó là 2 chân vào của bộ so sanh bên trong,cũng có thể làm như bộ ADC nhưng fai có mạch ngoài.bạn đưa tín hiệu vào các chân ADC để đo lun.
vdu bộ ADC 8bit:
256 ~ 30V
ADC -> ADC*30/256 (V)
khi làm tốt phần đo thì sẽ tối ưu code nhé.
sau đó em sửa lại là qua cầu phân áp em lấy 2,5678V thì đưa vào thấy đúng.vì em dùng điện áp tham chiếu nội mà. nên em nghĩ là lấy 0-5V qua cầu phân áp là ko ổn. lúc em cho 2,67V vào thì hiển thị đúng bác ạ. cách tinh em tham khảo trên mạng là read_adc(2)*20/167
với công thức trên thì khi em tính là em lấy 5V đầu vào để ra được công thức trên. nhưng mà llaij hiển thị ko đúng. nên em đổi mỗi cái điện áp vào thành 2,67 thì lại hiển thị đúng điện áp. em không hiểu chỗ này lắm vì sao nó lại đúng khi em thay đổi điện áp vào ANI2 là 5 sang 2,67V.
đây là web mà em tham khảo công thức, họ làm với nhiệt độ. nhưng em áp dụng làm với điện áp. bác xem giúp em với.
http://hoiquandientu.com/read.php?636
bây giờ em còn 2 chõ vướng là chỗ này và chỗ hiểu thị lên LCD là giá trị thực dấu phẩy động. em làm mãi mà nó không hiển thị được điện áp là giá trị thực, các bác giúp em cái này nữa nha. cảm ơn các bác nhiều.
Comment
-
hai chân đó là chân so sánh của một opam bên trong mà,có thể lấy chân tham chiếu nội bên trong,hình như là 1,22V thì phải.
còn vấn đề hiện thị lên Lcd thì bạn ko nên dùng dấu phẩy động,mà nên quy định nó gấp n lần đi
ví dụ: quy định 256 ~ 5000 =>hiện thi lcd: U=5.000(V),chứ đùng để biến số thực trong code,vì như vậy sẽ tốn tài nguyên của chíp.khi hiện thị lên lcd thì fai chuyển sang mã BCD để hiện thị.email:trangonthuocthom@gmail.com
Comment
-
cái này bạn phải quy đổi từ số thức sang số nguyên.
ví dụ điện áp là 12.345(V) thì nhân nó với 1000.->số nguyên.sau đó chuyển sang mã bcd, sẽ có mã lần lượt là a,b,c,d,e(tương ứng 1,2,3,4,5);
hiện thị: lcd_putchar(a+48);lcd_putchar(b+48);lcd_putchar('. ');lcd_putchar(c+48);lcd_putchar(d+48);lcd_putchar (2+48);email:trangonthuocthom@gmail.com
Comment
-
vâng em cảm ơn anh nhiều lắm, nhưng mà em chưa hiểu lắm cái chỗ chuyển qua mã BCD,
em làm để quy ra hàng chục trăm đơn vị như thế này anh ạ, vd điện áp đo là 12,345 V thì em mới chỉ làm được là tram=VIN/100//hang tram;;;;;;;chuc=VIN-tram*10 //
donvi=VIN-tram*100-chuc*10,, sau đó đến dấu "." như anh nói. và đến số sau dấu phẩy em gán tên là phay=(VIN-tram*100-chuc*10-donvi) ;
nhưng mà nó ko hiển thị ra số sau dấu phẩy anh ạ. em thử sửa cái VIN sang kiểu float nhưng nó cũng ko ra. code em gửi qua mail cho anh anh xem hộ em với ạ.
Comment
-
cách làm tòi ra dấu phẩy như sau:
// hien thi so len lcd
void Hienthi(unsigned int input){
unsigned char tg[5],i;
tg[4]=(Tab_ascII[input%10]);// hàng trăm
input/=10;
tg[3]=(Tab_ascII[input%10]);
input/=10;
tg[2]='.';// hiẻn thị ký tự phẩy vào giữa hang trục và đơn vị
tg[1]=(Tab_ascII[input%10]);// hàng chục
input/=10;
tg[0]=(Tab_ascII[input%10]);// hàng đơn vị
Disp_write(tg);// chương trình con hiển thị một ký tự lên LCD
}
Comment
Bài viết mới nhất
Collapse
-
bởi afrendlyCảm ơn bạn. Mình hỏi để thợ có thể tham khảo thôi chứ không đủ kiển thức để sửa, mà cũng không có đồ nghề, mua đồ nghề quá tiền máy. Gọi nhiều lần mà thợ hẹn mãi chưa có tới ấy bạn. Mình muốn sửa được chứ bỏ thì uống, nhưng sợ là được mỗi người thợ mà lại không sửa nổi....
-
Channel: Điện tử gia dụng
Hôm qua, 00:34 -
-
bởi mèomướpDạ nó bị tắc ẩm hoặc rò thiếu gas hoặc lốc yếu hoặc van tiết lưu có vấn đề hoặc tất cả những nguyên nhân trên ạ. Chú ko chuyên về mảng này thì bán đi, giành thời gian trồng rau sạch đem ra chợ bán lấy tiền mua tủ mới ạ. Còn...
-
Channel: Điện tử gia dụng
10-05-2026, 17:01 -
-
bởi afrendlyXin chào mọi người. Mình lại có vấn đề về đồ điện cần nhờ mọi người hỗ trợ giúp. Mình có tủ lạnh Sharp dùng cũng lâu rồi. Trước có bị kém lạnh, không đông đá thì có thợ họ mang về, sục đường ga gì đó hết 900k và đã dùng...
-
Channel: Điện tử gia dụng
10-05-2026, 16:53 -
-
bởi dinhthuong92Đấy, cái tôi thắc mắc là chỗ màu hồng ấy bạn, để áp vào cao chứ không bị sụt gần bằng áp pin thì rất cần cuộc cảm để làm điều đó. Tuy nhiên, trong công thức bác thớt dẫn không thấy mặt L, và một vài mạch MPPT tôi đã kiểm...
-
Channel: Nguồn!
09-05-2026, 10:01 -
-
bởi mèomướpDạ mạch sạc là 1 cục nguồn, nó sẽ điều chỉnh công suất đầu ra để có tổng trở bằng nội trở của pin ạ. Và cái cách nó chỉnh công suất đầu ra sẽ là dạng buck, boot. Đều cần đến cuộn cảm ạ. Tất nhiên chú thích thì có thể dùng dạng tuyến tính transistor để bù trừ nhưng mà nó đốt năng lượng vô ích ạ...
-
Channel: Nguồn!
08-05-2026, 16:26 -
-
bởi dinhthuong92Tng trở R của tải (gồm pin và mạch sạc) trong công thức đó rõ ràng khống có L xuất hiện. Nếu tính các dây dẫn thì rất nhỏ, bỏ qua. Vì nội trở pin là rất nhỏ, có thể nói luôn lớn hơn nội trở solar, nên mạch MPPT sẽ hầu như luôn tính...
-
Channel: Nguồn!
08-05-2026, 11:00 -
-
bởi dinhthuong92Chào bác. Đã là công thức phải tổng quát chứ, nó phải thể hiện cả quá trình, rối thì quá độ hay xác lập tính sau vì tùy điều kiện. Cũng như công thức tính diện tích chả hạn, phải là tích phân....
-
Channel: Nguồn!
08-05-2026, 10:49 -

Comment