اطلاعیه

Collapse
No announcement yet.

کنترل pid با نرم افزار labvieew

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کنترل pid با نرم افزار labvieew

    سلام دوستان یه پروژه با labview واسه درسی میخوام اگه سراغ دارید کمک کنید استادم گیر داده!!!!!!
    شبیه سازی کنترل سطح مایعات یا دما باشه بدک نیس ولی فقط با pidباشه مرسی دوستان با عرض پوزش فراوان :wow: :wow: :wow: :wow:
    من به آمار زمین مشکوکم...
    اگر این شهر پر از آدم هاست......
    پس چرا این همه دل ها تنهاست؟

    #2
    پاسخ : کنترل pid با نرم افزار labvieew

    سلام. اولا باید بدونی که ماژول pid رو باید تو لبو ویو نصب کرده باشی. بقیش کار ساده ای.
    برو کتاب کنترل اوگاتا را نگاه کن . تو فصل دوم به نظرم در مورد کنترل سطح مایعات و چیزهای دیگه صحبت کرده. فقط کافیه تو لب ویو پیاده کنی...

    دیدگاه


      #3
      پاسخ : کنترل pid با نرم افزار labvieew

      تو بخش Example های LabVIEW مثال هایی از کنترل سطح مایع در تانک (Tank level) هستش. می تونی PID رو هم سرچ کنی. مثال خیلی زیاد داره و اینجوری کاری که می خوای انجام بدی فکر نکنم سخت باشه ...

      دیدگاه


        #4
        استفاده از همه پینهای port a به عنوان adc

        سلام به دوستان عزیز
        میخواستم از همه پینهای port a به عنوان adc استفاده کنم و داده های تبدیل شده به دیجیتال را از طریق پورت سریال به متلب بفرستم
        باید از 6 نقطه مدار بصورت دیفرانسیلی وتقریبا همزمان نمونه برداری وبه دیجیتال تبدیل کنم
        این کار را برای یک نقطه(دو نقطه بصورت دیفرانسیلی) انجام دادم و بخوبی در متلب دریافت کردم و ان را آنالیز کردم
        حالا که از میخوام از همه پینهای port a به عنوان adc استفاده کنم جه تغییراتی را باید در مدارم بدم؟ :arrow:
        لطفا کمکم کنید
        اینا کد های کدویژن و متلب من هستن
        /************************************************
        This program was produced by the
        CodeWizardAVR V2.05.0 Professional
        Automatic Program Generator
        © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
        http://www.hpinfotech.com

        Project :
        Version :
        Date : 06/22/2011
        Author :
        Company :
        Comments:


        Chip type : ATmega32A
        Program type : Application
        AVR Core Clock frequency: 11.059200 MHz
        Memory model : Small
        External RAM size : 0
        Data Stack size : 512
        ************************************************** ***/

        #include <mega32a.h>

        #include <delay.h>

        // Standard Input/Output functions
        #include <stdio.h>

        #define ADC_VREF_TYPE 0x4B
        // Alphanumeric LCD Module functions
        #include <alcd.h>

        #asm
        .equ __lcd_port = 0x18
        #endasm
        // Read the AD conversion result
        char code[20];
        unsigned int data;
        unsigned int read_adc(unsigned int adc_input)
        {
        ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
        // Delay needed for the stabilization of the ADC input voltage
        delay_us(10);
        // Start the AD conversion
        ADCSRA|=0x40;
        // Wait for the AD conversion to complete
        while ((ADCSRA & 0x10)==0);
        ADCSRA|=0x10;
        return ADCW;
        }

        // Declare your global variables here
        int a;
        void main(void)
        {
        // Declare your local variables here

        // Input/Output Ports initialization
        // Port A 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
        PORTA=0x00;
        DDRA=0x00;

        // Port B 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
        PORTB=0x00;
        DDRB=0x01;

        // Port C 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
        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
        // Mode: Normal top=0xFF
        // OC0 output: Disconnected
        TCCR0=0x00;
        TCNT0=0x00;
        OCR0=0x00;

        // Timer/Counter 1 initialization
        // Clock source: System Clock
        // Clock value: Timer1 Stopped
        // Mode: Normal top=0xFFFF
        // OC1A output: Discon.
        // OC1B output: Discon.
        // 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=0x00;
        TCCR1B=0x00;
        TCNT1H=0x00;
        TCNT1L=0x00;
        ICR1H=0x00;
        ICR1L=0x00;
        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
        // INT2: Off
        MCUCR=0x00;
        MCUCSR=0x00;

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

        // USART initialization
        // Communication Parameters: 8 Data, 1 Stop, No Parity
        // USART Receiver: On
        // USART Transmitter: On
        // USART Mode: Asynchronous
        // USART Baud Rate: 9600
        UCSRA=0x00;
        UCSRB=0x18;
        UCSRC=0x06;
        UBRRH=0x00;
        UBRRL=0x47;

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

        // ADC initialization
        // ADC Clock frequency: 172.800 kHz
        // ADC Voltage Reference: AVCC pin
        ADMUX=ADC_VREF_TYPE & 0xff;
        ADCSRA=0x87;

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

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

        // Alphanumeric LCD initialization
        // Connections specified in the
        // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
        // RS - PORTC Bit 0
        // RD - PORTC Bit 1
        // EN - PORTC Bit 2
        // D4 - PORTC Bit 4
        // D5 - PORTC Bit 5
        // D6 - PORTC Bit 6
        // D7 - PORTC Bit 7
        // Characters/line: 16
        lcd_init(16);

        while (1)
        {
        // Place your code here
        PORTB.0=1;
        delay_ms(500);
        PORTB.0=0;

        data=ADCW ;
        lcd_clear();
        sprintf(code,"%d",data);
        lcd_puts(code);
        a=read_adc(0);
        printf("%d \n",a);
        delay_ms(100);
        }
        }


        و اینها هم متلب

        for i=0:.5:50
        s = serial('COM1','BAUD',9600); % Create serial object (PORT Dependent)
        fopen(s) % Open the serial port for r/w
        myChar = 'a';
        prompt = 'Enter a character (q to exit): ';

        fprintf(s, '%u', myChar(1)) % Write first char of user input to serial port

        k=fscanf(s);

        fprintf(k) ; % Read Data back from avr

        l=str2num(k)
        fclose(s); % Close the serial port
        delete(s);


        x=[1 1 8];
        y=[2 5 7];
        z=[1 4.5 9];



        if (l<=15) &&(l>=0)
        teta=0;
        elseif (l<=30) &&(l>=15)
        teta=pi/54;
        elseif (l<=45) &&(l>=30)
        teta=2*pi/54;
        elseif (l<=60) &&(l>=45)
        teta=3*pi/54;
        elseif (l<=75) &&(l>=60)
        teta=4*pi/54;
        elseif (l<=90) &&(l>=75)
        teta=5*pi/54;
        elseif (l<=105) &&(l>=90)
        teta=6*pi/54;
        elseif (l<=120) &&(l>=105)
        teta=7*pi/54;
        elseif (l<=135) &&(l>=120)
        teta=8*pi/54;
        elseif (l<=150) &&(l>=135)
        teta=9*pi/54;
        elseif (l<=165) &&(l>=150)
        teta=10*pi/54;
        elseif (l<=180) &&(l>=165)
        teta=11*pi/54;
        elseif (l<=195) &&(l>=180)
        teta=12*pi/54;
        elseif (l<=210) &&(l>=195)
        teta=13*pi/54;
        elseif (l<=225) &&(l>=210)
        teta=14*pi/54;
        elseif (l<=240) &&(l>=225)
        teta=15*pi/54;
        elseif (l<=255) &&(l>=240)
        teta=16*pi/54;
        elseif (l<=270) &&(l>=255)
        teta=17*pi/54;
        elseif (l<=285) &&(l>=270)
        teta=18*pi/54;
        elseif (l<=300) &&(l>=285)
        teta=19*pi/54;
        elseif (l<=315) &&(l>=300)
        teta=20*pi/54;
        elseif (l<=330) &&(l>=315)
        teta=21*pi/54;
        elseif (l<=345) &&(l>=330)
        teta=22*pi/54;
        elseif (l<=360) &&(l>=345)
        teta=23*pi/54;
        elseif (l<=375) &&(l>=360)
        teta=24*pi/54;
        elseif (l<=390) &&(l>=375)
        teta=25*pi/54;
        else

        teta=pi/2;
        end
        r=[ 1 0 0; 0 cos(teta) -sin(teta);0 sin(teta) cos(teta) ];

        point= [x(3) y(3) z(3)]*r;
        x(3)=point(1);

        y(3)=point(2);
        z(3)=point(3);

        plot3(x,y,z,'LineWidth',18)
        grid on
        axis([-1 8 -13 8 -1 8]);
        pause(.2)
        end
        اینم فایل پروتئوس و و فایل hex
        http://www.up.98ia.com/images/2r36p2yw7ypsl37a2jff.rar

        دیدگاه

        لطفا صبر کنید...
        X