Welcome & Happy Holidays!
Trang 3 của 3 Đầu tiênĐầu tiên 123
Kết quả 21 đến 27 của 27
  1. #21
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình xin cung cấp cho các bạn yêu robocon đường link vào một trang web giới thiệu về mạch công suất dùng trong điều khiển động cơ robot - Build an H-Bridge Motor Control with Power MOSFETS (Tutorial).

    Trong đó họ sử dụng MOSFET để điều khiển động cơ điện DC đồng thời cho phép nối với các cổng vào ra của vi điều khiển. Tuy nhiên có điều cần lưu ý khi ráp mạch nên đeo kính bảo hộ mắt vì nếu bạn sơ ý lắp trật thì các MOSFET có thể bị kích bất ngờ và gây nổ (nổ rất nhỏ thôi) nhưng có thể văng vào mắt nếu không để ý... Nhớ dùng tay kiểm tra khi MOSFET hoạt động có bị quá nhiệt không nhé.



    Có hai đường dùng thay đổi chiều động cơ tất nhiên cần tránh để hai tín hiệu này kích cùng lúc. Mặt khác bạn có thể điều chỉnhh tốc độ động cơ theo phương pháp độ rộng xung (PWM) nghĩa là tạo ra một loạt các xung vuông với các tần số khác nhau nhờ chương trình viết cho vđk - tần số càng cao thì tốc độ càng nhanh và ngược lại.

    Chúc bạn thành công.

  2. #22
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    à mà quên, trong mạch này họ cũng giới thiệu cả hai cảm biến quang opto-couple có thể dùng để dò đường trong robocon. Còn phần tạo ra tín hiệu độ rộng xung trong vđk các bạn có thể tham khảo trong cuốn 8051 của tác giả Tống Văn On hoặc trong các trang web khác... Nếu sử dụng trong phòng có độ sáng cao các bạn nên che chắn tốt để tránh bị nhiễu từ ánh sáng đèn...

  3. #23
    Ngày tham gia
    May 2016
    Bài viết
    0
    các bạn yêu robot có thể down thêm tài liệu này về ROBOT BUILDER'S BONANZA - Download - 4shared trong đó tác giả hướng dẫn khá đầy đủ về cách làm một robot từ a-z

  4. #24
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    cho xin cái code tham khảo đi bạn

  5. #25
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    các anh ơi! em đang làm đề tài về robot các anh có thể cho em xin cái mạch dò line dùng adc không? anh nào có thì gửi vào mail meohero9395@gmail.com

  6. #26
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    học năm mấy mà làm robot rồi

  7. #27
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    /************************************************** ***
    This program was produced by the
    CodeWizardAVR V2.05.0 Professional
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    HP InfoTech - CodeVisionAVR C Compiler

    Project :
    Version :
    Date : 10/25/2015
    Author : NeVaDa
    Company :
    Comments:


    Chip type : ATmega8L
    Program type : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 256
    ************************************************** ***/

    #include <mega8.h>
    void khoitao()
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=T
    PORTB=0x00;
    DDRB=0x06;

    // Port C initialization
    // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    TCCR0=0x00;
    TCNT0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: 8000.000 kHz
    // Mode: Ph. & fr. cor. PWM top=ICR1
    // OC1A output: Non-Inv.
    // OC1B output: Non-Inv.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0xA0;
    TCCR1B=0x11;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x03;
    ICR1L=0xE8;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    MCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // USART initialization
    // USART disabled
    UCSRB=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;

    // ADC initialization
    // ADC disabled
    ADCSRA=0x00;

    // SPI initialization
    // SPI disabled
    SPCR=0x00;

    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    }

    int loin=0, pid0=0,loitr;
    // Declare your global variables here
    int pid(int loi, unsigned int kp,unsigned int ki,unsigned int kd)
    {
    static int loi0=0, iloi=0, dloi=0;
    iloi+=loi;
    dloi=loi-loi0;
    loi0=loi;
    if(iloi>=999)
    iloi=999;
    if(iloi<=-999)
    iloi=-999;
    if(loi==0)
    {
    loi0=0;
    iloi=0;
    dloi=0;
    }
    return kp*loi+ki*loi+kd*loi;
    }
    void main(void)
    {
    khoitao();
    while (1)
    {
    loin=(int)(PIND.0)*(-3)+(int)(PIND.1)*(-2)+(int)(PIND.2)*(-1)+(int)(PIND.5)*3+(int)(PIND.4)*2+(int)(PIND.3)*1 ;
    pid0=pid(loin,30,9,0);
    if(PIND.5||PIND.4||PIND.3||PIND.2||PIND.1||PIND.0)
    {
    if(pid0>=999)
    {
    pid0=0;
    }
    if(pid0<=-999)
    {
    pid0=0;
    }
    if(pid0<0)
    {
    OCR1B=(-pid0);
    OCR1A=0;
    }
    if(pid0>0)
    {
    OCR1A=pid0;
    OCR1B=0;
    }
    if(pid0==0)
    {
    OCR1A=900;
    OCR1B=900;
    }
    loitr=loin;
    }
    if(PIND.5+PIND.4+PIND.3+PIND.2+PIND.1+PIND.0==0)

    {
    if(loitr>0)
    {
    OCR1B=0;
    OCR1A=600;
    }

    if(loitr<0)
    {
    OCR1B=600;
    OCR1A=0;
    }
    }
    }
    }

 

 
Trang 3 của 3 Đầu tiênĐầu tiên 123

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 09:59 PM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2025 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.