امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 2
  • 1
  • 2
  • 3
  • 4
  • 5
پالس خروجی با قابلیت تغییر duty cycle و فرکانس
نویسنده پیام
متین آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 2
تاریخ عضویت: اسفند ۱۳۸۸

تشکرها : 0
( 2 تشکر در 1 ارسال )
ارسال: #1
پالس خروجی با قابلیت تغییر duty cycle و فرکانس
سلام خدمت دوستان

والا تو انجمن گشتم و مورد مشابه با سوالم نتونستم پیدا کنم اگر اطلاع داشتید آدرسش بذارید لطفا ی سری بزنم در هر صورت ممنون میشم ج بدید

من میخام برای مثال با atmega32 و چهار تا کلید همونطور که در شکل می بینید شکل موجی روی 7 پایه خروجی میکرو (که اینجا به led وصل شدند) بندازم که این پالس ساخته شده هم قابلیت تغییر در فرکانسش وجود داشته باشه هم دیوتی سایکلش - محدوده فرکانس بین 5 تا 50 هرتز هست.

یعنی در اصل میخام led ها به ترتیب از بالا به پایین و با فرکانس مشخص (و قابل تغییر) روشن و خاموش شوند(یعنی led اول روشن شده بعد خاموش بشه سپس led بعدی همین اتفاق بیفته واسش تا اخر و اینکار هی تکرار بشه از بالا به پایین) و این کار ادامه پیدا کنه و اگرم خواستم تو همون فرکانس که انداختم بتونم دیوتی سایکل همون فرکانس هم تغییر بدم (من نمیخام آبشار led یا شهاب سنگ و اینجور چیزایی که تو بعضی پست ها دیدم بسازم)

پس خیلی روشن و ساده اول بتونم با اون دوتا کلید فرکانس کم و زیاد کنم (از 5 تا 50 هرتز) بعد در هر فرکانسی(مثلا 20 هرتز) بتونم ذیوتی سایکل پالس همون فرکانس هم تغییر بدم مثلا از 10 تا 90 درصد.

من اومدم با کمک تایمر 0 مد PWM یک کارایی کردم حالا اگر لازم شد میذارم

دمتون گرم این سوال جواب بدید RolleyesRolleyes

[تصویر:  54732866752348046479.png]
۳۰-تير-۱۳۹۳, ۰۵:۵۱:۴۳
ارسال‌ها
پاسخ
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #2
RE: پالس خروجی با قابلیت تغییر duty cycle و فرکانس
سلام
کار سختی نیست
led ها رو toggle کنید و با سوئیچ ها زمان toggle شدن رو کم و زیاد کنید

یعنی برای افزایش و کاهش فرکانس، زمان رو کم و زیاد کنید
برای تنظیم دیوتی سایکل هم دوتا زمان برای قبل و بعد toggle تعریف و کم و زیادشون کنید

مثلا؛

waitms 50
toggle PORTA
waitms 50

الان این داره با دیوتی سایکل 50-50 کلاک میخوره
فرکانس هم عکس زمان محاسبه میشه

۳۰-تير-۱۳۹۳, ۱۵:۲۷:۲۵
ارسال‌ها
پاسخ
تشکر شده توسط : a.mehran, babyy, رسول, helma, robojalal, salehjg
robojalal آفلاین
كاربر دو ستاره
**

ارسال‌ها: 162
موضوع‌ها: 11
تاریخ عضویت: شهریور ۱۳۸۹

تشکرها : 125
( 463 تشکر در 142 ارسال )
ارسال: #3
RE: پالس خروجی با قابلیت تغییر duty cycle و فرکانس
سلام دوست گرامی

امیدوارم این به دردت بخوره

موفق باشی ....


فایل‌(های) پیوست شده
.rar   project duty.rar (اندازه: 10.04 KB / تعداد دفعات دریافت: 154)



در راه علم هیچ وقت نگید نمی تونیم ، همه چیز تونستنی هست و فقط کمی اراده میخواد ، که شما دارین .Cool


http://robo-elec.blogfa.com

۳۱-تير-۱۳۹۳, ۱۱:۲۹:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, رسول, babyy, omid_phoenix
متین آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 2
تاریخ عضویت: اسفند ۱۳۸۸

تشکرها : 0
( 2 تشکر در 1 ارسال )
ارسال: #4
RE: پالس خروجی با قابلیت تغییر duty cycle و فرکانس
(۳۱-تير-۱۳۹۳, ۱۱:۲۹:۳۰)robojalal نوشته است: سلام دوست گرامی

امیدوارم این به دردت بخوره

موفق باشی ....

ممنون از لطفت اما من به زبان c می نویسم
البته مشکلی نبود اگر لطف میکردی فایل پروتئوسش هم میذاشتی تا یجوری میفهمیدم چیکار میکنه

(۳۰-تير-۱۳۹۳, ۱۵:۲۷:۲۵)r0b0 نوشته است: سلام
کار سختی نیست
led ها رو toggle کنید و با سوئیچ ها زمان toggle شدن رو کم و زیاد کنید
............

سلام کاری که گفتی من انجام دادم (با c)
اما ج نمیده مثلا کد زیر ببین تو کد زیر هم دیوتی و هم فرکانس قابل تغییر است اما ج نمیده نمیدونم چرا

کد:
/*****************************************************
Chip type               : ATmega32
Program type            : Application
AVR Core Clock frequency: 1.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 512
*****************************************************/

#include <mega32.h>
#include <delay.h>
#define dutyup PINA.0
#define dutydown PINA.1                                                                                
#define frequp PINA.2
#define freqdown PINA.3

float x,y,T=200,a=0.9; اینجا با قرار دادن T=200 فرکانس 5 هرتز شروع شده
                       و a=0.9 دیوتی سایکل 90% شروع میشه
void main(void)  {

    DDRD=0xFF;
    
    
    while (1) {        
        
    
        if(dutyup==0) {
            if(a<0.9) a+=0.1;
            while(dutyup==0);
        }
        if(dutydown==0) {
            if(a>0.1) a-=0.1;
            while(dutydown==0);                      
        }
        if(frequp==0) {
            if(T>20) T-=20;
            while(frequp==0);
        }
        if(freqdown==0) {
            if(T<200) T+=20;
            while(freqdown==0);
        }
            
          
        x=a*T;  مقدار x عرض high بودن پالس نشون میده وa دیوتی سایکله
        y=T-x;  مقدار low بودن عرض پالس نشون میده

اینجا می تونستم حلقه for بذارم اما فعلا اینطوری نوشتم
        
        PORTD.0=1;
        delay_ms(x);
        PORTD.0=0;
        delay_ms(y);
        PORTD.1=1;
        delay_ms(x);
        PORTD.1=0;
        delay_ms(y);
        PORTD.2=1;
        delay_ms(x);
        PORTD.2=0;
        delay_ms(y);
        PORTD.3=1;
        delay_ms(x);
        PORTD.3=0;
        delay_ms(y);
        PORTD.4=1;
        delay_ms(x);
        PORTD.4=0;
        delay_ms(y);    
        
        
        
    }
        
                    
    
}
(آخرین ویرایش در این ارسال: ۰۱-مرداد-۱۳۹۳, ۲۱:۱۰:۳۸، توسط behzady.)
۰۱-مرداد-۱۳۹۳, ۲۰:۵۸:۰۳
ارسال‌ها
پاسخ
رسول غایب
بازنشسته
*****

ارسال‌ها: 2,458
موضوع‌ها: 237
تاریخ عضویت: دى ۱۳۸۸

تشکرها : 15003
( 20196 تشکر در 5767 ارسال )
ارسال: #5
RE: پالس خروجی با قابلیت تغییر duty cycle و فرکانس
(۰۱-مرداد-۱۳۹۳, ۲۰:۵۸:۰۳)متین نوشته است: البته مشکلی نبود اگر لطف میکردی فایل پروتئوسش هم میذاشتی تا یجوری میفهمیدم چیکار میکنه

خب مدارش همون مداریه که خودتون گذاشتین دیگه

همون عکسی که از پروتئوس گذاشتین آقا جلال هم واسه همون مدار برنامشو زحمت کشیدن و نوشتن
۰۲-مرداد-۱۳۹۳, ۱۶:۱۵:۵۲
ارسال‌ها
پاسخ
تشکر شده توسط : omid_phoenix, babyy, robojalal


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] تفاوت کلاک و فرکانس babyy 3 2,150 ۱۸-خرداد-۱۳۹۷, ۲۲:۲۵:۴۴
آخرین ارسال: salehjg
  [فوری] ایجاد موج مربعی با دو کلید و نماش فرکانس در ال سی دی mamadr 0 2,041 ۰۹-تير-۱۳۹۶, ۱۶:۲۰:۲۹
آخرین ارسال: mamadr
  شمارش تعداد پالس های یک دستور؟ Ambassador 2 2,996 ۲۷-اردیبهشت-۱۳۹۶, ۱۶:۲۰:۵۶
آخرین ارسال: Ambassador
  [سوال] تنظیم دقیق فرکانس داخلی میکرو xxabasxx 6 5,823 ۰۴-آذر-۱۳۹۵, ۰۲:۱۲:۱۳
آخرین ارسال: xxabasxx
  راهنمایی برای تولید پالس vistac2000 15 17,041 ۰۸-اردیبهشت-۱۳۹۵, ۰۰:۳۹:۴۶
آخرین ارسال: omid_phoenix
  سوال درباره نحوه تولید پالس مربعی sinohe 37 41,329 ۱۷-اسفند-۱۳۹۴, ۱۸:۳۶:۲۴
آخرین ارسال: sharin
  [سوال] اندازه گیری فرکانس پالس مربعی mohza 6 6,886 ۳۰-اردیبهشت-۱۳۹۴, ۲۱:۴۴:۵۶
آخرین ارسال: sharin
  [سوال] راهنمایی برای ساخت قطار پالس توسط atmega32 hamze_b 8 6,163 ۱۳-اردیبهشت-۱۳۹۴, ۱۶:۰۴:۲۴
آخرین ارسال: student-p
Question خروجی DS18B20 hosseinip 4 4,038 ۲۹-اسفند-۱۳۹۳, ۰۵:۰۵:۴۸
آخرین ارسال: alimogmov
Exclamation [سوال] خروجی LM35 hosseinip 5 3,345 ۲۳-اسفند-۱۳۹۳, ۰۰:۲۵:۴۸
آخرین ارسال: omid_phoenix

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS