اطلاعات خویش را به دیگران بیاموزید تا دیگران راه رفته شما را دوباره نروند بلکه ادامه دهند!
سلام
سروو موتور چی هست ؟
سروو موتور ها ، موتور های قوی هستند که میتوانند در یک زاویه خاص با قدرت بسیار بالا بچرخند ، از سروو ها در بازو های ربات ، باز وبسته کردن درب ها و دریچه ها و ... استفاده میشود .
سروو ها معمولا از سه بخش : موتور dc ، گیربکس و مدار کنترل تشکیل میشوند .
چون این سروو ها باید در یک زاویه خاص بچرخند ، در داخل انها مداری برای اندازه گیری زاویه (مقدار درجه چرخش موتور dc )تعبیه شده است . این مدار کنترل کننده ، متناسب با پالس ورودی موتور dc را روشن یا خاموش میکند ، برای دیدن این پالس باید به دیتا شیت سروو مراجعه شود ، در بالا قسمتی از دیتا شیت یک نمونه سروو را مشاهده میکنید .
قسمت گیربکس برای تقویت کردن قدرت موتور dc (افزایش قدرت و کاهش سرعت) استفاده میشود .
در بسکام توابع راه اندازی سروو موتور وجود دارد که در داخل کتاب اموزش avr به زبان بیسک توضیح داده شد ، شما خودتان نیز میتوانید توسط تایمر ها پالس مورد نیاز برای سروو را بسازید .
سروو موتور ها در نمونه های 3 یا 5 سیمه ساخته میشوند ، در نمونه های 3 سیمه ، تغذیه مدار کنترلر داخلی از ولتاژ اصلی گرفته شده است و در نمونه های 5 سیمه 2 سیم برای تغذیه موتور dc و دوسیم برای تغذیه مدار کنترلر وسیم اخر سیم کنترل زاوایه میباشد که شما باید به ان پالسی که در دیتاشیت گفته شده را اعمال کنید .
در ادرس زیر در مورد راه اندازی این نوع موتور بحث شده است :
http://ir-man.com/showthread.php?tid=74&pid=164#pid164
#include <mega8.h>
#include <delay.h>
#define xtal 1000000
void main(void)
{
PORTB=0x00;
DDRB=0x02;
PORTC=0x00;
DDRC=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 2000.000 kHz
// Mode: Ph. & fr. cor. PWM top=ICR1
// OC1A output: Non-Inv.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x80;
TCCR1B=0x12;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1=2000;
//ICR1L=0x20;
while (1)
{
/*
if(PINC.0==1)
{
OCR1A = OCR1A+1;
delay_ms(1);
if(OCR1A>2000){OCR1A=2000;}
}
if(PINC.1==1)
{
OCR1A = OCR1A-1;
delay_ms(1);
if(OCR1A<1000){OCR1A=1000;}
}*/
if(PINC.0=1 && PINC.1=1){
for(OCR1=1000;OCR1=2000,OCR++)
{
delay_ms(1);
}
}
}
}
آقا این مشکل میده تو پروتئوس میشه یکی مشکلش رو به من بگه؟؟؟
#include <mega8.h>
#include <delay.h>
#define xtal 1000000
void main(void)
{
PORTB=0x00;
DDRB=0x02;
PORTC=0x00;
DDRC=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 2000.000 kHz
// Mode: Ph. & fr. cor. PWM top=ICR1
// OC1A output: Non-Inv.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x80;
TCCR1B=0x12;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1=2000;
//ICR1L=0x20;
while (1)
{
/*
if(PINC.0==1)
{
OCR1A = OCR1A+1;
delay_ms(1);
if(OCR1A>2000){OCR1A=2000;}
}
if(PINC.1==1)
{
OCR1A = OCR1A-1;
delay_ms(1);
if(OCR1A<1000){OCR1A=1000;}
}*/
if(PINC.0=1 && PINC.1=1){
for(OCR1=1000;OCR1=2000,OCR++)
{
delay_ms(1);
}
}
}
}
آقا این مشکل میده تو پروتئوس میشه یکی مشکلش رو به من بگه؟؟؟
سلام
آقا من یه پروژه دارم حدودا کاراش رو انجام دادم ولی سر این سروو موتور که آخرشه گیر افتادم نمیدونم چرا کار نمیده هر کاری میکنم.
GWS Mini STD یه برنامه ساده هم که میریزم تو میکرو کنترلر درست کار نمیکنه میچرخه تا آخر و دیگه هیچ کاری نمیکنه همین این پایین هم یه کد ساده میزارم که براش نوشتم ولی کار نمیده: baad:
#include <mega8.h>
#include <delay.h>
void main(void)
{
PORTB=0x00;
DDRB=0x02;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x80;
TCCR1B=0x12;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1=2500;
OCR1A=2500/10;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
while (1)
{
// Place your code here
delay_ms(1000) ;
OCR1A=2500/10;
delay_ms(200);
OCR1A=2500/20;
delay_ms(200);
}
}
من تو پروژم کلا عدد از کامپیوتر میفرستم به میکرو طبق اون عدد باید با سرغتای مختلف سرو بچرخه یا اینکه اصلا آزاد باشه و هیچ سیگنالی به اون نره. ممنون میشم اگه جوابم رو بدین خیلی نیازه
هیچکسی نبود جواب بده؟؟؟؟؟
خوب این فرکانس 50 هرتز پیدا نمیشه باید چی کار کنیم؟