ايران ويج

نسخه‌ی کامل: پالس خروجی با قابلیت تغییر duty cycle و فرکانس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام خدمت دوستان

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

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

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

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

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

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

[تصویر:  54732866752348046479.png]
سلام
کار سختی نیست
led ها رو toggle کنید و با سوئیچ ها زمان toggle شدن رو کم و زیاد کنید

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

مثلا؛

waitms 50
toggle PORTA
waitms 50

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

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

موفق باشی ....
(۳۱-تير-۱۳۹۳, ۱۱:۲۹:۳۰)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);    
        
        
        
    }
        
                    
    
}
(۰۱-مرداد-۱۳۹۳, ۲۰:۵۸:۰۳)متین نوشته است: [ -> ]البته مشکلی نبود اگر لطف میکردی فایل پروتئوسش هم میذاشتی تا یجوری میفهمیدم چیکار میکنه

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

همون عکسی که از پروتئوس گذاشتین آقا جلال هم واسه همون مدار برنامشو زحمت کشیدن و نوشتن