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


امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
سوالات برنامه نویسی با بسکام
(22 ارديبهشت 1392، 07:23 عصر)hossienshiraz نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سلام
ممنون
همون طور که شما فرمودید.
با تایمر 2 میکرو یک ساعت درست کردم که در چهار بازده زمانی تعدادی رله را کنترل میکنه.همراه با کنترل دما.با نمایش روی lcd و 7 seg . همون طور که قبلا عرض کردم می خوام یکی از پورتها در ساعت مثلا 7:30 50ms یک و 50ms صفر بشه .واین عمل چندین بار تکرار بشه.قابل تغییر باشه.برای اینکه دید بهتری داشته باشید.این پروژه برای کنترل آکواریوم استفاده میشه. که تمام تجهیزاتشون کنترل کنه.مشکل اصلی من برای سیستم غذا دهیش هست که باید در یک زمان مشخص چندین بار یک دریچه بازو بسته بشه برای تخلیه غذا.امیدوارم درست توضیح داده باشم.
تشکر

راستی یکمی هم تازه کارم...

برنامه ای رو که نوشتید ، بذارید تا بررسی بشه ...
پاسخ
با سلام
بابت تاخیرم می بخشید . جند روزی نبودم.
فایل برنامه خدمتتون می فرستم. جای که مشکل دارم با علامت ***** مشخص کردم
ممنون از لطفتون


فایل‌(های) پیوست شده
.rar   temp.rar (اندازه: 26.74 KB / تعداد دفعات دریافت: 9)
پاسخ
سلام
فایلی که فرستادم بدستتون رسید.تونستید بازش کنید.
منتظر راهنماییم شما هستم کنید
پاسخ
(2 خرداد 1392، 03:05 عصر)hossienshiraz نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سلام
فایلی که فرستادم بدستتون رسید.تونستید بازش کنید.
منتظر راهنماییم شما هستم کنید
سلام :

ساختار برنامهء شما به گونه ای هست که متأسفانه با یک یا چند دستور اضافی نمیشه این قابلیت رو برای برنامهء شما ایجاد کرد و باید تغییرات اساسی در برنامه و یا سخت افزار شما ایجاد بشه که من بدلیل مشغله و گرفتاریهایی که دارم ، متأسفانه فرصت انجام این کارو ندارم . اما حداقل میتونم راهنمایی کنم که چطور این تغییراتو باید اعمال کنید :

شما یا باید کلاک سیستم برنامه رو از مد نرم افزاری خارج کنید و از DS1307 استفاده کنید تا راحتتر بشه با دکمه های میکرو سوئیچ به متغیرهای ساعت ، دقیقه و ثانیه دسترسی داشته باشید و بتونید تنظیمشون کنید که طبیعتا" در اینصورت PCB شما هم تغییر خواهد کرد و البته مزایای خوبی هم این آیسی داره .

و یا اینکه با استفاده از دستور gosub = sectic در جلوی خط کانفیگ کلاک ، به زیر برنامه ای بنام sectic رفته و در اونجا وضعیت کلیدها رو بخونید و مشخص کنید چنانچه فشرده شده باشند ، مثلا" وارد زیربرنامهء Alarm بشه و متغیرهایی برای مقایسه با ساعت ، دقیقه و ثانیه رو تنظیم کنه و با دستور Return هم ازش برگردید ...
پاسخ
سلام.
این اولین پستمه !
من می خوام تو یسکام یه AVR رو برنامه نویسی کنم. تازه اول بسمالله هستم.
وقتی یه پین رو صفر کنم، یه پورت کامل یک بشه و با دوباره زدنش همه صفر شن.
فقط نمی دونم چطوری اون کلید فرمان رو تعریف کنم که وقتی صفر یا یک میشه، AVR بفهمه.

میخوام این جوری باشه :
if pin b.0 = 0 then (دقیقا مشکلم اینجاست)
reset portA

ولی کار نمی کنه.
ممنونم
پاسخ
(7 آذر 1392، 12:44 صبح)daniva نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
سلام.
این اولین پستمه !
من می خوام تو یسکام یه AVR رو برنامه نویسی کنم. تازه اول بسمالله هستم.
وقتی یه پین رو صفر کنم، یه پورت کامل یک بشه و با دوباره زدنش همه صفر شن.
فقط نمی دونم چطوری اون کلید فرمان رو تعریف کنم که وقتی صفر یا یک میشه، AVR بفهمه.

میخوام این جوری باشه :
if pin b.0 = 0 then (دقیقا مشکلم اینجاست)
reset portA

ولی کار نمی کنه.
ممنونم
سلام دوست عزیز
خیلی خوش آمدینAx
ببخشید برای دیر پاسخ دادن
از این دستور استفاده کنین
if pinb.0=0 then
porta=0xff
end if
یعنی مقدار hex رو بنویسین جلوی porta
برای بدست اوردن کد هگز از ماشین حساب ویندوز استفاده کنین
به سلامتی مهره های تخته نرد
که تا وقتی رفیقشون تو حبسه به احترامش بازی نمیکنن ...
پاسخ
سلام و خسته نباشید . من خیلی توی اینترنت گشتم تا موتور براشلس رو با بسکام راه اندازی کنم ولی چیزی گیرم نیومد . من خودم اطلاعاتی از موتور براشلس و اسپید دارم و میدونم که باید با pwm راه اندازی کنم . ولی روند کار و برنامه رو بلد نیستم و نمی دونم که باید چه طوری باید بنویسم . کسی هست که کمکم کنه ؟ خیلی نیازمندم ؟Sign_helpSign_helpSign_helpSign_help
پاسخ
سلام Ax
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
یه مثاله .
برا کنترل موتور کافیه اول یه پالس یک با عرض 1ms برا فعال شدن اسپید به پایه کنترلیش بدی و بعد از شنیدن صدای بوق با زیاد کردن عرض یک پالس میتونی سرعت موتور رو زیاد کنی و به ازای 2ms موتور توی حداکثر سرعته . بهتره این پالس رو با pwm بدی چون دقتش بالاست .
پاسخ
کسی هست که یه سورس ساده از موتور براشلس با avr داشته یاشه؟ فرق نداره با چه زبانی باشه.Sign_help
پاسخ
سلام.
ببین موتور براشلس چیزی نیس که راه اندازیش .
یه درایور یا همون موتور کنترل میخواد ، اونو که براش خریدی طبق دیتا شیتی که داره واسه هر سرعتی که بخوای باید یه پالس بخصوصی رو بش بدی ، فک کنم خطی هم باشه .
بعدشم راحت میچرخه.
سرور رو هم باید داشته باشم ، میگردم واست ، پیداش که کردم پیوستش میکنم.

یک فایل آموزشی دپش هم واست پیوست کردم.
اینم سورس :
کد:
#include <16F873a.h>
#use delay(xtal=20Mhz)
#fuses HS,NOWDT

int1 bemf_a,bemf_b,bemf_c;
int8 j=0,s;

void   station(s)
{
    if(s==0)
{
      output_low(pin_c4);
      output_low(pin_c7);    // diod  
      output_high(pin_c3);   // disactive channel A
      
      output_low(pin_a3);
      output_low(pin_b2);    // diod  
      output_high(pin_a5);   // disactive channel B
      
      output_low(pin_a1);  
      output_low(pin_b3);    // diod  
      output_high(pin_a2);   // disactive channel C
}


else if(s==1)  
{
      output_low(pin_c4);
      output_low(pin_c7);    // diod
      output_high(pin_c3);   // disactive channel A
      
      output_high(pin_a3);   //    HI
      output_low(pin_b2);    // diod
      output_low(pin_a5);    // active channel B
      
      output_low(pin_a1);    //    LOW
      output_high(pin_b3);   // diod    
      output_high(pin_a2);   // active channel C
}
else if(s==2)  
{
      output_high(pin_c4);   //    HI
      output_low(pin_c7);    // diod
      output_low(pin_c3);    // active channel A
      
      output_low(pin_a3);
      output_low(pin_b2);    // diod
      output_high(pin_a5);   // disactive channel B
      
      output_low(pin_a1);    //    LOW
      output_high(pin_b3);   // diod    
      output_high(pin_a2);   // active channel C
}
else if(s==3)  
{
      output_high(pin_c4);   //    HI
      output_low(pin_c7);    // diod      
      output_low(pin_c3);    // active channel A
      
      output_low(pin_a3);    //    LOW  
      output_high(pin_b2);   // diod    
      output_high(pin_a5);   // active channel B
      
      output_low(pin_a1);
      output_low(pin_b3);    // diod
      output_high(pin_a2);   // disactive channel C
}
else if(s==4)  
{
      output_low(pin_c4);
      output_low(pin_c7);    // diod        
      output_high(pin_c3);   // disactive channel A
      
      output_low(pin_a3);    //    LOW  
      output_high(pin_b2);   // diod  
      output_high(pin_a5);   // active channel B
      
      output_high(pin_a1);   //    HI
      output_low(pin_b3);    // diod      
      output_low(pin_a2);    // active channel C
}
else if(s==5)  
{
      output_low(pin_c4);    //    LOW
      output_high(pin_c7);   // diod      
      output_high(pin_c3);   // active channel A
      
      output_low(pin_a3);    
      output_low(pin_b2);    // diod        
      output_high(pin_a5);   // disactive channel B
      
      output_high(pin_a1);   //    HI
      output_low(pin_b3);    // diod  
      output_low(pin_a2);    // active channel C
}
else if(s==6)  
{
      output_low(pin_c4);    //    LOW
      output_high(pin_c7);   // diod  
      output_high(pin_c3);   // active channel A
      
      output_high(pin_a3);   //    HI    
      output_low(pin_b2);    // diod        
      output_low(pin_a5);    // active channel B
      
      output_low(pin_a1);  
      output_low(pin_b3);    // diod      
      output_high(pin_a2);   // disactive channel C
}
}


void main()
{
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);    

   setup_timer_2(T2_DIV_BY_1,62,1);     //8.4 us overflow, 8.4 us interrupt

   setup_ccp1(CCP_PWM);
   set_pwm1_duty((int16)200);
   setup_comparator(NC_NC_NC_NC);
  
   setup_adc_ports(AN0);
   setup_adc( ADC_CLOCK_INTERNAL );
  

while(true)
{
j=read_adc();

if(j>190) j=190;

   set_pwm1_duty((int16) j);
    

  
bemf_a=input(pin_b7);
station(1);
set_timer1(0);
while(true) {
          if(bemf_a!=input(pin_b7)) break;
            
          if(get_timer1()>65400)
          {      
          if(j>85) set_pwm1_duty((int16)170);
          if(j<80) while(j<85) {j=read_adc();  set_pwm1_duty((int16)0); station(0); }      
          break;
          }
          }        

bemf_b=input(pin_b6);
station(2);
set_timer1(0);
while(true) {
          if(bemf_b!=input(pin_b6)) break;
                        
          if(get_timer1()>65400)
          {        
          if(j>85) set_pwm1_duty((int16)170);
          if(j<80) while(j<85) {j=read_adc();  set_pwm1_duty((int16)0); station(0); }        
          break;
          }
          }
  

bemf_c=input(pin_b5);
station(3);
set_timer1(0);
while(true) {
          if(bemf_c!=input(pin_b5)) break;
                        
          if(get_timer1()>65400)                          
          {        
          if(j>85) set_pwm1_duty((int16)170);
          if(j<80) while(j<85) {j=read_adc();  set_pwm1_duty((int16)0); station(0); }          
          break;
          }
          }


bemf_a=input(pin_b7);
station(4);
set_timer1(0);
while(true) {
          if(bemf_a!=input(pin_b7)) break;
                      
          if(get_timer1()>65400)    
          {        
          if(j>85) set_pwm1_duty((int16)170);
          if(j<80) while(j<85) {j=read_adc();  set_pwm1_duty((int16)0); station(0); }          
          break;          
          }
          }


bemf_b=input(pin_b6);
station(5);
set_timer1(0);
while(true) {
          if(bemf_b!=input(pin_b6)) break;
                        
          if(get_timer1()>65400)                          
          {        
          if(j>85) set_pwm1_duty((int16)170);
          if(j<80) while(j<85) {j=read_adc();  set_pwm1_duty((int16)0); station(0); }          
          break;
          }
          }


bemf_c=input(pin_b5);
station(6);
set_timer1(0);
while(true) {
          if(bemf_c!=input(pin_b5)) break;
                        
          if(get_timer1()>65400)                          
          {
          if(j>85) set_pwm1_duty((int16)170);
          if(j<80) while(j<85) {j=read_adc();  set_pwm1_duty((int16)0); station(0); }          
          break;
          }
          }
}

}


فایل‌(های) پیوست شده
.pdf   3 - Brushless.pdf (اندازه: 783.58 KB / تعداد دفعات دریافت: 8)
آموزش میکرو کنترل ARM - NXP ( دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
)

سوالات ، پیشنهادات ، انتقاد ها و نظر خودتونو در این تاپیک مطرح کنید ( دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
)
پاسخ
مشترک شدن در این موضوع


پرش به انجمن:

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

انتخاب پوسته :

دسترسی سریع
درباره ما
انجمن سرزمین الکترونیک در 20 شهریور 91 تاسیس شده ، که همیشه سعی کرده با ظاهری متفاوت و سرعتی خوب رضایت کاربران را جلب کند ، امیدواریم توانسته باشیم گامی کوچک در پیشرفت فناوری در ایران برداشته باشیم...
نیرو گرفته از MyBB 1.8.6 با فارسی سازی مای بی بی ایران - طراحی شده در : ملت دیزاین
© تمامی حقوق برای انجمن سرزمین الکترونیک محفوظ می باشد .

پوسته‌ی انجمن: