اطلاعیه

Collapse
No announcement yet.

مدار و برنامه کنترل سطح اب

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

    مدار و برنامه کنترل سطح اب

    سلام دوستان،یه برنامه واسه کنترل سطح اب نوشتم که وقتی اب مخزن کم شد پمپ روشن شه ،حالا این مدارو در شبیه ساز میبندم کار میکنه،ولی وقتی در عمل میبندم،فقط وصلشو میفهمه،مشکل از کجای کاره؟
    این از کدی که نوشتم:


    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=ifndef"]#ifndef[/URL] F_CPU
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] F_CPU 1000000UL /* CPU CLOCK FREQUENCY */
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=endif"]#endif[/URL]


    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <avr/io.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <stdlib.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <stdio.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <util/delay.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <avr/interrupt.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] "LCD16x2_4bit.h"


    volatile int readLevel=0;


    ISR(TIMER2_COMP_vect){

    readLevel = PINB & 0x03;
    switch(readLevel)
    {
    case 0x00:
    PORTD &= ~(1<<6);
    break;
    case 0x02:
    PORTD |= (1<<6);
    break;
    case 0x03:
    PORTD |= (1<<6);
    break;
    default:
    PORTD &= ~(1<<6);
    }
    }






    int main(void)
    {


    lcdinit();




    DDRD = 0b01010011;
    PORTD = 0b00000000;


    DDRB = 0b00000000;
    PORTB = 0b00000000;


    TCCR2 |= (1 << WGM01) | (1 << CS00) | (1 << CS02);
    OCR2 = 0x60;
    TIFR |= (1 << OCF2);
    TIMSK |= (1 << OCIE2);
    TCNT2 = 0;

    while(1)
    {
    [FONT=Yekan] [/FONT]
    }
    }

    اینم عکس شبیه ساز:

    ممنون میشم کمکم کنید
    جدیدترین ویرایش توسط mohammadgh1370; ۱۸:۰۱ ۱۳۹۷/۰۳/۰۲.

    #2
    پاسخ : مدار و برنامه کنترل سطح اب

    نوشته اصلی توسط mohammadgh1370 نمایش پست ها
    سلام دوستان،یه برنامه واسه کنترل سطح اب نوشتم که وقتی اب مخزن کم شد پمپ روشن شه ،حالا این مدارو در شبیه ساز میبندم کار میکنه،ولی وقتی در عمل میبندم،فقط وصلشو میفهمه،مشکل از کجای کاره؟
    این از کدی که نوشتم:


    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=ifndef"]#ifndef[/URL] F_CPU
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=define"]#define[/URL] F_CPU 1000000UL /* CPU CLOCK FREQUENCY */
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=endif"]#endif[/URL]


    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <avr/io.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <stdlib.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <stdio.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <util/delay.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <avr/interrupt.h>
    [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] "LCD16x2_4bit.h"


    volatile int readLevel=0;


    ISR(TIMER2_COMP_vect){

    readLevel = PINB & 0x03;
    switch(readLevel)
    {
    case 0x00:
    PORTD &= ~(1<<6);
    break;
    case 0x02:
    PORTD |= (1<<6);
    break;
    case 0x03:
    PORTD |= (1<<6);
    break;
    default:
    PORTD &= ~(1<<6);
    }
    }






    int main(void)
    {


    lcdinit();




    DDRD = 0b01010011;
    PORTD = 0b00000000;


    DDRB = 0b00000000;
    PORTB = 0b00000000;


    TCCR2 |= (1 << WGM01) | (1 << CS00) | (1 << CS02);
    OCR2 = 0x60;
    TIFR |= (1 << OCF2);
    TIMSK |= (1 << OCIE2);
    TCNT2 = 0;

    while(1)
    {
    [FONT=Yekan] [/FONT]
    }
    }

    اینم عکس شبیه ساز:

    ممنون میشم کمکم کنید
    کسی نیس کمکم کنه؟

    دیدگاه


      #3
      پاسخ : مدار و برنامه کنترل سطح اب

      نوشته اصلی توسط mohammadgh1370 نمایش پست ها
      کسی نیس کمکم کنه؟
      بیشتر و بهتر مشکلتون رو توضیج بدید یعنی چی "فقط وصلشو میفهمه" ؟ در صورت امکان یه شماتیک هم از مدارتون قرار بدید
      تایمر کارش چیه تو برنامه؟
      چجوری میفهمه سطح آب کمه با int? چرا فعال نشده ؟
      رفقا مهم نیست چطوری بازی می کنید؛ اگه شروع نکنید، قطعا بازنده هستید.

      دیدگاه


        #4
        پاسخ : مدار و برنامه کنترل سطح اب

        نوشته اصلی توسط pencil نمایش پست ها
        بیشتر و بهتر مشکلتون رو توضیج بدید یعنی چی "فقط وصلشو میفهمه" ؟ در صورت امکان یه شماتیک هم از مدارتون قرار بدید
        تایمر کارش چیه تو برنامه؟
        چجوری میفهمه سطح آب کمه با int? چرا فعال نشده ؟
        اگه تو عکسی که گذاشتم ببینید،دو تا بیس ترانزیستورها دو سطح بالا و پایین مخزن رو نشون میدن،چون تعداد کدها زیاد هس و از دو تا اینتراپت و یه تایمر دیگه میخوام در برنامم استفاده کنم،و while برنامه سنگین میشه،یه قسمتی از کدهامو در تایمر دو نوشتم،این مدارو وقتی در عمل میبندم،یه حالت وصل رله داره،که همون عمل میکنه،حالات دیگه اتفاق نمیوفته،در صورتی که در شبیه سازی حالات نوشته شده به درستی کار میکنن،اینم عکس از پروتئوسم که مدارو بستم

        دیدگاه


          #5
          پاسخ : مدار و برنامه کنترل سطح اب

          دوستان کسی کنترل سطح مخزن با avr انجام داده؟کدشو واسم بفرسته؟یا بگه این کد کجاش مشکل داره؟

          دیدگاه


            #6
            پاسخ : مدار و برنامه کنترل سطح اب

            اگر در شبیه سازی درست کار میکنه ، به معنی درست بودن کد هست. در عمل احتمالا ورودی LOw شما درست اعمال نمیشه. به نظر من در قدم اول کد رو ف راموش کنید و برید سروقت ورودی Low

            دیدگاه


              #7
              پاسخ : مدار و برنامه کنترل سطح اب

              نوشته اصلی توسط mojalan نمایش پست ها
              اگر در شبیه سازی درست کار میکنه ، به معنی درست بودن کد هست. در عمل احتمالا ورودی LOw شما درست اعمال نمیشه. به نظر من در قدم اول کد رو ف راموش کنید و برید سروقت ورودی Low
              خیلی ممنون،چک میکنم

              دیدگاه

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