PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 02-10-2012, 10:05 PM   #1
lvdinh_tvtsth
Nhập môn đệ tử
 
Tham gia ngày: Apr 2011
Bài gửi: 7
:
Xin hướng dẫn chi tiết cách điều khiển servo bằng 16f877a

Chào mọi người, em có tìm trong diễn đàn thấy nhiều bài nói về PWM nhưng đọc khó hiểu quá, em lập topic xin được hướng dẫn chi tiết cách điều khiển 1 servo bằng PWM ạ. Cụ thể em cần biết những điều sau:
--cách nối servo như thế nào? (Nó có 3 dây (đỏ-đen-vàng), các dây đó làm việc gì? Dây nào nối với chân số mấy của PIC?)
--hàm điều khiển nó trong PIC cụ thể và ví dụ đi liền cách nối dây.
--em muốn nó quay theo 1 góc theo ý muốn thì phải làm thế nào? Góc quay tối đa mà nó thực hiện được là bao nhiêu?
----------------------
Rất mong được mọi người giúp ạ. Em xin cám ơn!
lvdinh_tvtsth vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-10-2012, 10:07 PM   #2
lvdinh_tvtsth
Nhập môn đệ tử
 
Tham gia ngày: Apr 2011
Bài gửi: 7
:
À nếu bác nào có bài này rồi thì cho em xin link ạ, em tìm google mãi không ra.
lvdinh_tvtsth vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-10-2012, 12:45 PM   #3
lvdinh_tvtsth
Nhập môn đệ tử
 
Tham gia ngày: Apr 2011
Bài gửi: 7
:
Cuối cùng cũng mày mò ra cách dùng ngắt TIMER0. Trong đoạn code này chỉ cần thay đổi thông số Center là nó sẽ quay theo những góc khác nhau. Ở hàm Main có thay đổi Center bằng cách gán lần lượt với 3 biến. Nó sẽ quay trái-giữa-phải-giữa-...

Cách nối dây rất đơn giản, chỉ cần nối dây đỏ của Servo với (+) nguồn, dây đen với (-) nguồn, còn dây vàng nối với chân RA0 của PIC. Nếu bạn muốn nối dây vàng với chân khác của PIC thì chỉ cần thay đổi trong hàm ngắt và thiết lập chân đó thành chân xuất là ok.

Code:
#include <16F877A.H>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#define MAX_VALUE 200

#define Right MAX_VALUE-35   //quay phai -23

#define Center MAX_VALUE-17  // quay trai -17

#define Left MAX_VALUE-1    //o giua -11

unsigned char pulse_max=0;
unsigned char pulse_top=0;
unsigned char top_value=0;
#INT_TIMER0
void interrupt_timer0()
 {
   set_timer0(56);
   pulse_max++;            
   pulse_top++;
   if (pulse_max >= MAX_VALUE) 
    {
      pulse_max=0;
      pulse_top=0;
      RA0=0;                // Turn off RC2
    }
   if (pulse_top == top_value) 
    {
      RA0=1;                // Turn On RC2
    } 
 }
/* TIMER0 period = [(TMR0 + 1)] x 4 x Tosc x (TIMER0 prescaler value) second
   Init TIMER0: Period: Fosc/4 x Prescaler x TMR0
*/
void main()
 {
   trisa=0x00;
   trisd=0xff;
   portC = 0x00;
   //trisd=0x00;
   //portd=0;
   top_value = Center;
   
   enable_interrupts(global);
   enable_interrupts(int_timer0);
   
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
   
   set_timer0(156);
   
   top_value=Center;/*
   while(1)
    {    
      switch(portd){
         case 1: top_value=Right; delay_ms(100); top_value=Center;  break;
         case 2: top_value=Left; delay_ms(100); top_value=Center; break;
         case 4: top_value=Center; break;
         default: break;
      }*/
      while(1){
       top_value=Right;        delay_ms(1000);
       top_value=Center;       delay_ms(1000);
      top_value=Left;       delay_ms(1000); 
      top_value=Center;    delay_ms(1000);
      }
      
 }

thay đổi nội dung bởi: lvdinh_tvtsth, 03-10-2012 lúc 12:50 PM.
lvdinh_tvtsth vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-10-2012, 09:09 PM   #4
toancdt
Đệ tử 2 túi
 
toancdt's Avatar
 
Tham gia ngày: Apr 2011
Bài gửi: 31
:
Send a message via Yahoo to toancdt
bạn này tự biên tự diễn hay nhỉ
__________________
[email]toancdt09@gmail.com
toancdt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-10-2012, 05:37 PM   #5
lvdinh_tvtsth
Nhập môn đệ tử
 
Tham gia ngày: Apr 2011
Bài gửi: 7
:
Sao trong diễn đàn thấy nhiều người đặt câu hỏi mà chả có ai trả lời. Mình gặp khó khăn và tự mày mò trên mạng ra được nên muốn những ai đi sau tìm được nhanh chóng hơn.
lvdinh_tvtsth vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-10-2012, 07:37 PM   #6
congbinh
Nhập môn đệ tử
 
Tham gia ngày: Sep 2012
Bài gửi: 3
:
ae ơi giúp mình về đồng hồ số sử dụng pic 16F877A

ae ơi giúp mình về đồng hồ số sử dụng pic 16F877A
AE ƠI ! hiện tại mình đang làm một đề tài về pic 16F877A. cụ thê là hiện tại mình đang làm một đề tài đồng hồ số hiển thị giờ phút giây va ngày tháng năm phải sử dụng PIC 16F877A mà tài liệu mình tìm kiếm chưa đầy đủ lắm do đó mình k thể thực hiện đc đề tài.cho mình hỏi có ae nào đã làm qua loại nay chưa xin chỉ giáo giúp mình với. hoặc ae nào có tư liệu cho mình xin với hiện tại minh rất cần mình rất mong đc sự giúp đỡ nhiệt tình từ ae rất mong và rất mong.thank ae nhìu lắm.
phamcongbinh.binh@yahoo.com
0908962269 bình
congbinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 09:48 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam