ايران ويج

نسخه‌ی کامل: كنترل موتور با PWM (توسط ولوم و کلید)
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام.

این برنامه کنترل موتور با ولوم به زبان C :
کد:
#include <mega16.h>
#include <delay.h>

int a;
int b;

unsigned int read_adc(unsigned char adc_input){
ADMUX=adc_input | (0x40 & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;}

void main(){
ADMUX=0x40 & 0xff;
ADCSRA=0x83;
TCCR1A=0xC3;
TCCR1B=0x0A;
DDRB=0xff;
DDRD=0xff;
PIND.6=1;
do{
b=read_adc(0);
OCR1A=b;
a=b;
a=a*0.0097751710654936;
PORTB=a;
}while(1);}

اینم شبیه ساز:
[تصویر:  Control_Motor_Dc_pic.jpg]
اینم کنترل موتور با کلید UP و DOWN با بیسکام :
یه برنامه و مدار دیگه برای کنترل موتور با کلید UP و DOWN با بیسکام:

کد:
$regfile = "m16def.dat"
$crystal = 8000000

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
Config Porta = Input
Config Portc = Output
Config Pind.6 = Output

Dim A As Word
Dim B As Word

Do
If Pina.0 = 1 Then A = A + 3
If Pina.1 = 1 Then A = A - 3
If A > 1023 And A < 2000 Then A = 1023
If A < 65535 And A > 65000 Then A = 0
Pwm1a = A
B = A / 100
Portc = B
Print "a:" ; A
Waitms 1
Print "b:" ; B
Waitms 1
Loop

End 'end

اینم شبیه ساز:
[تصویر:  2013_01_07_231127.jpg]
برنامه و مدار اولی (کنترل موتور با ولوم) به زبان بیسیک:

کد:
$regfile = "m16def.dat"
$crystal = 8000000

Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
Config Adc = Single , Prescaler = Auto
Config Portc = Output

Dim A As Word
Dim B As Word

Start Adc

Do
A = Getadc(0)
Pwm1a = A
B = A / 100
Portc = B
Loop

End 'end program

شبیه ساز:
[تصویر:  2013_01_08_005557.jpg]
سلام
دستت درد نکنه
ولی فکر کنم یه مشکل داشته باشه برنامه اولی
دستور اینتراپت رو نذاشتی
کد:
#asm("sei")

موفق باشید
سلام.
نیازی نیست Biggrin
خیالت راحت باشه اگع میخواست میزاشتم ِBiggrin