با سلام خدمت تمامی دوستان
من یه مداری طراحی کردم که میخوام با میکرو بتونم یه استپ موتور را راه اندازی کنم.بنابراین با استفاده از دو کلید که بتونه استپ موتور به چپ یا راست چرخش کنه.بستم .برنامه اون هم مطابق زیر نوشتم.فقط برای تست اینکه کلیدی فشارداده شده یا خیر با توجه به اینکه هنوز با کدویژن و وقفه های خارجی زیاد بلد نبودم .نیومدم با وقفه خارجی این کار را انجام بدم.مدار بعد از تست نهایی خوب عمل میکرد(البته این نکته هم بگم که مدار مذکور
ور تو صنعت کاربرد داره).ولی در عمل بعدا به دو تا مشکل زیر برخورد کردم به مطرح میکنم
1- بعضی مواقع با اینکه فرمان داده بودیم اما میکرو پالس برای راه اندازی تولید نمیکرد که این مشکل مربوط به هنگ نمودن میکرو بود که با توجه به راهنمایی دوستان و جناب اقای مهندس اوژن نژاد و اون مدار منبع تغذیه پیشنهادی این مشکلم حل شد
2- مشکل دومی که یک دفعه پیدا شد این بود که بعضی مواقع وقتی مثلا فرمان میدادیم که موتور به سمت چپ چرخش کنه .اما با برداشتن فرمان موتور قطع نمیشد و همچنان فرمان روی اون بود(این مشکل هم برای چرخش موتور به سمت چپ و هم برای چرخش به سمت راست میباشد.البته بعضی مواقع)
میشه دوستان راهنماییم کنند
لازم به ذکر است که از مقاومتهای پش پول خارجی و کریستال خارجی هم استفاده نموده ام
این هم از کد برنامه:
#include <tiny26.h>
#include <delay.h>
void main(void)
{
char i=1;
unsigned char a[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x0F;
while (1){
//Shift Right
if (PINA.0==0){
PORTB=a[i++];
delay_ms(300);
if (i==8)
i=0;
if(PINA.0==1){
delay_ms(50);
if(PINA.0==1)
PORTB=0x00;
}
}
//Shift Left
if (PINA.1==0){
PORTB=a[--i];
delay_ms(300);
if (i==0)
i=8;
if(PINA.1==1){
delay_ms(50);
if(PINA.1==1)
PORTB=0x00;
}
}
}
}
من یه مداری طراحی کردم که میخوام با میکرو بتونم یه استپ موتور را راه اندازی کنم.بنابراین با استفاده از دو کلید که بتونه استپ موتور به چپ یا راست چرخش کنه.بستم .برنامه اون هم مطابق زیر نوشتم.فقط برای تست اینکه کلیدی فشارداده شده یا خیر با توجه به اینکه هنوز با کدویژن و وقفه های خارجی زیاد بلد نبودم .نیومدم با وقفه خارجی این کار را انجام بدم.مدار بعد از تست نهایی خوب عمل میکرد(البته این نکته هم بگم که مدار مذکور
ور تو صنعت کاربرد داره).ولی در عمل بعدا به دو تا مشکل زیر برخورد کردم به مطرح میکنم
1- بعضی مواقع با اینکه فرمان داده بودیم اما میکرو پالس برای راه اندازی تولید نمیکرد که این مشکل مربوط به هنگ نمودن میکرو بود که با توجه به راهنمایی دوستان و جناب اقای مهندس اوژن نژاد و اون مدار منبع تغذیه پیشنهادی این مشکلم حل شد
2- مشکل دومی که یک دفعه پیدا شد این بود که بعضی مواقع وقتی مثلا فرمان میدادیم که موتور به سمت چپ چرخش کنه .اما با برداشتن فرمان موتور قطع نمیشد و همچنان فرمان روی اون بود(این مشکل هم برای چرخش موتور به سمت چپ و هم برای چرخش به سمت راست میباشد.البته بعضی مواقع)
میشه دوستان راهنماییم کنند
لازم به ذکر است که از مقاومتهای پش پول خارجی و کریستال خارجی هم استفاده نموده ام
این هم از کد برنامه:
#include <tiny26.h>
#include <delay.h>
void main(void)
{
char i=1;
unsigned char a[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x0F;
while (1){
//Shift Right
if (PINA.0==0){
PORTB=a[i++];
delay_ms(300);
if (i==8)
i=0;
if(PINA.0==1){
delay_ms(50);
if(PINA.0==1)
PORTB=0x00;
}
}
//Shift Left
if (PINA.1==0){
PORTB=a[--i];
delay_ms(300);
if (i==0)
i=8;
if(PINA.1==1){
delay_ms(50);
if(PINA.1==1)
PORTB=0x00;
}
}
}
}