Ðăng Nhập

View Full Version : Cần giúp đỡ về điều khiển động cơ


JackSanji
04-05-2012, 12:07 PM
Chào các anh chị. Em đang làm bài tập lớn đề tài điều khiển quạt, có chút thắc mắc muốn nhờ mọi người giúp đỡ đó là :
em muốn điều khiển động cơ phụ thuộc vào nhiệt độ t đọc đc từ LM35.nhiêt độ hiển thị trên led 7 đoạn, và thời gian thực hiển thị trên LCD. Nếu t>40 thì bắt đầu quay, tốc độ tăng dần khi nhiệt độ tăng và động cơ đạt tốc độ max khi t>=60 độ.

t=(float)read_adc(); //update nhiet do
t=t*100/204;
if((t>0)&&(t<40)) {duty=0;};
if((t>=60)&&(t<=99)) {duty=624;};
if((t>=40)&&(t<60)) {duty=((t-40)*15+312);};

vấn đề của em là khi mô phỏng bằng proteus thì khi tăng lm35 lên >=60 độ thì mạch ok, còn khi dưới 60 độ thì thời gian thực trên LCD chạy không đúng nữa, có khi phải đến 3 hay 4s thì mới nhảy đc lên 1s. em nghĩ cái này có thể xung đột với thời gian update từ DS1307 lên LCD, nhưng chưa biết lỗi ở đâu.
em gửi sơ đồ mô phỏng Proteus để mọi người xem giúp e với ạ.
thanks mọi người nhiều!

JackSanji
04-06-2012, 10:12 PM
Chào các anh chị. Em đang làm bài tập lớn đề tài điều khiển quạt, có chút thắc mắc muốn nhờ mọi người giúp đỡ đó là :
em muốn điều khiển động cơ phụ thuộc vào nhiệt độ t đọc đc từ LM35.nhiêt độ hiển thị trên led 7 đoạn, và thời gian thực hiển thị trên LCD. Nếu t>40 thì bắt đầu quay, tốc độ tăng dần khi nhiệt độ tăng và động cơ đạt tốc độ max khi t>=60 độ.

t=(float)read_adc(); //update nhiet do
t=t*100/204;
if((t>0)&&(t<40)) {duty=0;};
if((t>=60)&&(t<=99)) {duty=624;};
if((t>=40)&&(t<60)) {duty=((t-40)*15+312);};

vấn đề của em là khi mô phỏng bằng proteus thì khi tăng lm35 lên >=60 độ thì mạch ok, còn khi dưới 60 độ thì thời gian thực trên LCD chạy không đúng nữa, có khi phải đến 3 hay 4s thì mới nhảy đc lên 1s. em nghĩ cái này có thể xung đột với thời gian update từ DS1307 lên LCD, nhưng chưa biết lỗi ở đâu.
em gửi sơ đồ mô phỏng Proteus để mọi người xem giúp e với ạ.
thanks mọi người nhiều!
đã giải quyết đc vấn đề.:D