Nguyên văn bởi tan0710
Xem bài viết
Thông báo
Collapse
No announcement yet.
Giải phương trình bậc 3 trong avr ???
Collapse
X
-
đọc tần số vào đúng không.?
nhưng có thể nhiễu or nhiều lý do mà giá trị nó khác nhau.
nếu truyề trực tiếp giá trị này để tính thì quá trình tính toán sẽ rất nhiều lần với các giá trị khác nhau của tần số ( mà điều này là không cần thiết do độ ẩm thay đổi chậm )
nên lấy giá trị tb của vài trăm giá trị tần số đọc vào đấy rồi lấy giá trị trung bình để tính toán thôi.....
Comment
-
Anh queduong bị sai số như của e thì phải xử lý thế nào hả anh. Mong anh trả lời giúp e vớiNguyên văn bởi queduong Xem bài viếtvới cách này là đã biết chính xác điểm 50% rồi ... còn nếu như bị sai số , cho cận đầu , cận cuối thì việc tính toán sẽ phức tạp hơn ... kể cả việc lấy miền âm cũng sẽ bị sinh rom code nhiều hơn
cách cho từ 0 - 100 là cách đơn giản nhất , dễ hiểu nhất và dù ở cận đầu hay cận cuối đều được .
Nếu cần thiết thì xác định nửa đầu , nửa cuối rồi sau đó sẽ cho biến chạy từ nửa đầu hay nửa cuối ... khi đã so sánh và match kết quả thì thoát khỏi vòng for. Đó là cách an toàn và cũng rất nhanh, dễ hiểu không phức tạp !01689964729
Comment
-
Vâng em cảm ơn anh. để e thử xem thế nào.Nguyên văn bởi tan0710 Xem bài viếtđọc tần số vào đúng không.?
nhưng có thể nhiễu or nhiều lý do mà giá trị nó khác nhau.
nếu truyề trực tiếp giá trị này để tính thì quá trình tính toán sẽ rất nhiều lần với các giá trị khác nhau của tần số ( mà điều này là không cần thiết do độ ẩm thay đổi chậm )
nên lấy giá trị tb của vài trăm giá trị tần số đọc vào đấy rồi lấy giá trị trung bình để tính toán thôi.....01689964729
Comment
-
Làm trực tiếp đi ... rồi có lúc mô phỏng nó loạn lên chẳng biết đằng nào mà sửa .Nguyên văn bởi kenvindang Xem bài viếtEm thay bằng for(i = 0; i<5;i++) vẫn thế.
húc đầu cắm cổ vào proteus thì chẳng bao giờ mà khá lên được thì anh bảo em húc đầu cắm cổ vào phần mềm nào thì khá lên được ạ. anh bảo em với
đây là nguyên code của bạn , để tôi phân tích nhé :
for(i = 1; i<6;i++)
{
if(mang[i] >= freq)
{
lcd_gotoxy(0,1);
lcd_putnum(i);
}
}
--- đầu tiên bạn for(i = 1; i<6;i++) ở dưới lại kiểm tra mang[i] trong khi đó ở đầu chương trình bạn khai báo unsigned int mang[5] = {578,1234,5648,4849,2565};
mảng này chỉ có 5 phần tử ... từ 0 đến 4 ... điều gì sẽ xảy ra khi i = 5 ??? bạn mô phỏng proteus thì thằng proteus nó ngu nó cứ húc đầu chạy ... chứ ở thực tế ... thì nhiều khi ăn đòn luôn ! và không chỉ có thế ( vì nó chỉ là MÔ PHỎNG ( nếu chính xác, đúng thì nó không gọi là mô phỏng nữa mà gọi là ... Đồ nghề kiểm tra luôn )
+ Trở lại vấn đề ... mảng của bạn có 5 phần tử :
mang[0] = 578 ;(phần tử 1)
mang[1]= 1234;(phần tử 2)
mang[2]=5678;(phần tử 3)
mang[3]=4849;( phần tử 4 )
mang[4]=2565; (phần tử 5)
bạn cho lệnh kiểm tra :
if(mang[i] >= freq)
{
lcd_gotoxy(0,1);
lcd_putnum(i);
}
thì trong đó chỉ có mang[3]=4849;( phần tử 4 ) thỏa mãn điều kiện ( mang[i]>=freq) lúc này giá trị i =3 khi câu lệnh này : lcd_putnum(i); thì nó chẳng in 3 lên màn hình thì in bao nhiêu ???
nó là phần tử số 4 cơ mà . i chỉ là 1 index để kiểm tra " vị trí ô nhớ " trong mảng ... chứ không phải là giá trị " vị trí phần tử " ... trong lập trình thì vị trí xuất phát là 0 ... trong ngôn ngữ , số đếm của bạn vị trí xuất phát là 1.
bởi vậy : lcd_putnum(i+1); sẽ cho kết quả là 4 ( đó là số bạn muốn tìm ).
có thể viết lại 1 cách chuẩn xác như sau :
for(i = 0; i<5;i++)
{
if(mang[i] >= freq)
{
lcd_gotoxy(0,1);
lcd_putnum(i+1);
}
}
Đó là code chính xác hiển thị khi trong mảng đó chỉ có 1 phần tử thỏa mãn điều kiện ... nếu trong mảng mà có hơn 1 phần tử thỏa mãn điều kiện thì MCU sẽ hiển thị thằng ( phần tử )sau cùng !Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
lấy trung bình thì đọc 1 lưu vào 1 , đọc 2 lưu vào biến 2 ... đọc 10 lưu vào biến 10 .Nguyên văn bởi kenvindang Xem bài viếtVâng em lấy tần số từ cảm biến. A có thể nói rõ cho em nên lấy vài trăm mẫu rồi lấy trung bình em vẫn chưa hiểu lắm
Kết quả = (lưu 1 +lưu 2 + ... lưu 10 ) / 10 ;
trung bình đó còn gì nữa !Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
Nghĩ khác chút đi cho nó dễ làm, bạn mà lưu được pt trên vào avr ( chưa nói đến việc tìm nghiệm) đã là việc khó rồi.
Chỉ có 100 trường hợp (đo tương đối vậy thôi):
dùng casio tính ra 100 nghiệm và 100 tần số tương ứng. Rồi cứ thế chạy lòng vòng, dò tần số 1 > nghiệm 1,....tần số 100 > nghiệm 100.
Hoặc tìm xem có con sensor nào đơn giản hơn không.
protues đáng tin đến 95%, nên cứ thử cho đỡ tốn kém trước khi làm thật.
Comment
-
tôi có làm vài cái lập trình đơn giản ... nhưng sử dụng trong công nghiệp ... Ở ngoài mạch thật nó chạy năm này qua năm khác , chưa biết treo hay làm sao ...Nguyên văn bởi avr Xem bài viếtNghĩ khác chút đi cho nó dễ làm, bạn mà lưu được pt trên vào avr ( chưa nói đến việc tìm nghiệm) đã là việc khó rồi.
Chỉ có 100 trường hợp (đo tương đối vậy thôi):
dùng casio tính ra 100 nghiệm và 100 tần số tương ứng. Rồi cứ thế chạy lòng vòng, dò tần số 1 > nghiệm 1,....tần số 100 > nghiệm 100.
Hoặc tìm xem có con sensor nào đơn giản hơn không.
protues đáng tin đến 95%, nên cứ thử cho đỡ tốn kém trước khi làm thật.
Mới đầu thử trên proteus ... lởm đến mức còn không hiển thị nổi cái màn hình . Kết luận : Siêu lởm ...
- có dùng thì chỉ test những đoạn ngắn , vớ vẩn thôi ( dành cho học sinh , sinh viên mới tập tọe thì được ) ... chứ chuyên nghiệp chẳng ma nào nó sài vì mất thời gian !Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
Anh queduong ơi. Tần số mình có thể tính chính xác được băng công thức. nhưng do nhiễu của cảm biến hoặc do mạch hoặc do m lấy làm tròn Tần số sai để ghi vào trong mảng nên khi so sánh với tần số đo được nó xảy ra trường hợp lớn hơn 1 phần tử thì m làm thế nào ạ. Mong anh trả lời giúp emNguyên văn bởi queduong Xem bài viếtLàm trực tiếp đi ... rồi có lúc mô phỏng nó loạn lên chẳng biết đằng nào mà sửa .
đây là nguyên code của bạn , để tôi phân tích nhé :
for(i = 1; i<6;i++)
{
if(mang[i] >= freq)
{
lcd_gotoxy(0,1);
lcd_putnum(i);
}
}
--- đầu tiên bạn for(i = 1; i<6;i++) ở dưới lại kiểm tra mang[i] trong khi đó ở đầu chương trình bạn khai báo unsigned int mang[5] = {578,1234,5648,4849,2565};
mảng này chỉ có 5 phần tử ... từ 0 đến 4 ... điều gì sẽ xảy ra khi i = 5 ??? bạn mô phỏng proteus thì thằng proteus nó ngu nó cứ húc đầu chạy ... chứ ở thực tế ... thì nhiều khi ăn đòn luôn ! và không chỉ có thế ( vì nó chỉ là MÔ PHỎNG ( nếu chính xác, đúng thì nó không gọi là mô phỏng nữa mà gọi là ... Đồ nghề kiểm tra luôn )
+ Trở lại vấn đề ... mảng của bạn có 5 phần tử :
mang[0] = 578 ;(phần tử 1)
mang[1]= 1234;(phần tử 2)
mang[2]=5678;(phần tử 3)
mang[3]=4849;( phần tử 4 )
mang[4]=2565; (phần tử 5)
bạn cho lệnh kiểm tra :
if(mang[i] >= freq)
{
lcd_gotoxy(0,1);
lcd_putnum(i);
}
thì trong đó chỉ có mang[3]=4849;( phần tử 4 ) thỏa mãn điều kiện ( mang[i]>=freq) lúc này giá trị i =3 khi câu lệnh này : lcd_putnum(i); thì nó chẳng in 3 lên màn hình thì in bao nhiêu ???
nó là phần tử số 4 cơ mà . i chỉ là 1 index để kiểm tra " vị trí ô nhớ " trong mảng ... chứ không phải là giá trị " vị trí phần tử " ... trong lập trình thì vị trí xuất phát là 0 ... trong ngôn ngữ , số đếm của bạn vị trí xuất phát là 1.
bởi vậy : lcd_putnum(i+1); sẽ cho kết quả là 4 ( đó là số bạn muốn tìm ).
có thể viết lại 1 cách chuẩn xác như sau :
for(i = 0; i<5;i++)
{
if(mang[i] >= freq)
{
lcd_gotoxy(0,1);
lcd_putnum(i+1);
}
}
Đó là code chính xác hiển thị khi trong mảng đó chỉ có 1 phần tử thỏa mãn điều kiện ... nếu trong mảng mà có hơn 1 phần tử thỏa mãn điều kiện thì MCU sẽ hiển thị thằng ( phần tử )sau cùng !01689964729
Comment
-
thì mình lấy mẫu vài lần gần nhau để loại trừ nhiễu tức thời ... biểu quyết lấy số đông ... rồi lại so sánh với các phần tử ( kết quả nghi ngờ ) để tách lọcNguyên văn bởi kenvindang Xem bài viếtAnh queduong ơi. Tần số mình có thể tính chính xác được băng công thức. nhưng do nhiễu của cảm biến hoặc do mạch hoặc do m lấy làm tròn Tần số sai để ghi vào trong mảng nên khi so sánh với tần số đo được nó xảy ra trường hợp lớn hơn 1 phần tử thì m làm thế nào ạ. Mong anh trả lời giúp emModule RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
Anh queduong ơi. anh xem hộ e code này với. e khổng hiểu vì sai cái gì mà F nó cứ nhảy loạn mấy giá trị lên mà trong đó có giá trị đúng.Nguyên văn bởi queduong Xem bài viếtthì mình lấy mẫu vài lần gần nhau để loại trừ nhiễu tức thời ... biểu quyết lấy số đông ... rồi lại so sánh với các phần tử ( kết quả nghi ngờ ) để tách lọc
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
unsigned int x;
...
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Place your code here
Timer1_Over += 0xffff;
}
// TRINH PHUC VU NGAT INPUT CAPTURE
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
x = (unsigned int)ICR1H * 256 + ICR1L;
Chu_Ky = Timer1_Over + x - Icp1;
Icp1 = x;
Timer1_Over = 0;
}
....
while (1)
{
T = (float)(Chu_Ky);
F = 1000000/T;
lcd_gotoxy(0,1);
sprintf(Lcd_Buff_F,"F=%6.1fHz",F);
lcd_puts(Lcd_Buff_F);
}
Anh xem giúp em với.01689964729
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamCảm ơn cháu đã bỏ chút thời gian vàng ngọc xem ông già gần 80 tuổi kể hối ký chuyện tình cùa mình. Những chương trình học hồi lớp 6 ( đệ thất) và lớp 7 ( đệ luc) học họa và nhạc sau này đã giúp đỡ tôi rất nhiều trong việc tìm...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:15 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Chúc mừng bác có cuộc tình rất lãng mạn, cuộc hôn nhân gắn bó dài lâu nhé!...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 13:49 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phamHôn nhân của tôi dường như có bàn tay sắp đặt của ông tơ, bà nguyệt. Bà xả nói tôi viết hồi ký duyên số này. Tôi đã viết vào tập 100 trang học sinh. Sau 50 năm lật tới, lật lui xem quyển hối ký có nơi rách nát. Tôi viết lại bằng AI, giọng đọc VBBe, ca sĩ hát là là Synthesizer V.
...-
Channel: Tâm tình dân kỹ thuật
15-05-2026, 14:18 -
-
Trả lời cho Công thức tính định luật kirchhoffbởi nguyendinhvanCông thức này chắc là để áp dụng cho UAV để bắn máy bay F15....
-
Channel: Hỗ trợ học tập
14-05-2026, 21:17 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92GIỚI THIỆU CA KHÚC VỀ CHA MẸ:
Nặng Nghĩa Mẹ Cha
Sáng tác: Hoàng Đình Thường
Giọng hát: AI
Công cha cao tựa như Thái Sơn
Nghĩa mẹ sâu nước biếc xanh trong
Mong con khôn lớn đời hạnh phúc
Mẹ cha...-
Channel: Tâm tình dân kỹ thuật
12-05-2026, 16:22 -
-
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
11-05-2026, 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 -

Comment