Trích:
Nguyên văn bởi numb2008
mình đã sử dụng 1 chân là input rồi.Cái trục của mình quay cũng chậm thôi (khoảng 0.5-2s/vòng).Tuy nhiên mình thử đưa vào thì số nó chạy liên tục.Nghĩa là cứ mức 1 thì nó tăng biến đếm liên tục, nếu ko có xung thì giá trị vào là 1.Trong chương trình phải viết như thế nào để khi có sự thay đổi trạng thái của chân input thì biến đếm mới tăng?mình dùng ccs để viết.Hiện giờ mình chỉ cần làm sao tính được số xung trong khoảng thời gian delta t là ổn.MÌnh sử dụng chân rc5 làm input. đoạn code mình như thế này,giá trị x sau đó xuất ra led 7 đoạn.
void docxung()
{
if (input(PIN_C5)==0)
count=count+1;
x=count;
else
x=count;
}
|
Trời đất ơi!như code bạn viết thì chỉ có chức năng đếm xem cái trục của bạn quay bao nhiêu vòng từ lúc bắt đầu cái trục nó quay cho đến lúc bạn nhìn vào bảng led 7 đoạn và sẽ còn tiếp tục tăng cho đến khi nào cái trục nó không quay nữa hoặc là biến count của bạn bị tràn thì thôi ,chứ đoạn code trên đâu có chức năng đo tốc độ trục quay đâu bạn.
đo tốc độ của trục nghĩa là bạn đếm liên tục số vòng quay của trục trong khoảng thời gian nhất định gọi là thời gian lấy mẩu(có chu kỳ nha bạn -->dùng ngắt timer) rồi sau khoảng thời gian đó bạn lấy số vòng quay đó chia cho thời gian mà bạn lấy mẩu sẽ ra tốc độ của trục.
vd:
bạn đếm liên tục ngõ vào rc5 trong khoảng 1s được 5 vòng thì tốc độ trục khi đó là 5 vòng/s.
bạn nghiên cứu lại có nếu vẫn chưa thông thì cứ post lên mọi người sẽ hổ trợ bạn!