آموزش میکروکنترولر AVR-راه اندازی ماژول رله 2 کاناله

سلام حالتون چطوره؟؟امیدوارم حالتون خوب باشه.

[icon name=”star-half-o” class=”” unprefixed_class=””] امروز ما در این قسمت از آموزش میکروکنترلر AVR قصد داریم به راه اندازی ماژول رله 2کاناله بپردازم.

 

رله چیست؟

رله یک نوع کلید الکتریکی سریع است که با هدایت یک مدار الکتریکی دیگر قطع و وصل می‌شود.

به تعبیری دیگر رله یک کلید تبدیل است، با این تفاوت که در کلید تبدیل به یک انسان نیاز است تا با دست خود، کلید تبدیل را فشار دهد. ولی در رله یک جریان برق این کلید را تغییر حالت می دهد. یعنی ما یک ولتاژ برق را به رله می دهیم و رله، کلیدِ تبدیلی را که در داخل آن تعبیه شده است، برای ما خاموش و روشن می کند.

 

تصویرشماتیک رله در آموزش میکروکنترلرهای AVR

کاربرد های رله:

  • حفاظت(این مورد بیشتر در رله های قدرت و حفاظتی مطرح می گردد)
  • کنترل کننده ای موثر
  • استفاده به عنوان کنترلر خاص(درایو موتور و…)

 

[icon name=”star-half-o” class=”” unprefixed_class=””]  چرا باید از رله استفاده کنیم؟

  • اگر بخواهید با وصل شدن ولتاژ به پایه‌های فرمان، وسیله برقی شما روشن شود باید سیم رابط فاز را از NO به وسیله برقی خود ببرید. (فرمان مستقیم)
  • اگر بخواهید با وصل شدن ولتاژ به پایه‌های فرمان، وسیله برقی شما خاموش شود باید سیم رابط فاز را از NC به وسیله برقی خود ببرید. (فرمان معکوس یا NOT)

و این ویژگی به هیچ وجه در کلید موجود نمی باشد.

 

وسایل مورد نیاز:

[icon name=”check-circle” class=”” unprefixed_class=””] ماژول رله 2 کانال

[icon name=”check-circle” class=”” unprefixed_class=””] تعدادی سیم بربردمخصوص ماژول

[icon name=”check-circle” class=”” unprefixed_class=””] یک برد برد

[icon name=”check-circle” class=”” unprefixed_class=””] یک میکرو که ما atmega32استفاده کردیم

 

جدول اتصالات:

[su_table responsive=”yes”]

VCC پین VCCروی ماژول و همچنین پین 10میکرو
GND پین GNDروی ماژول و همچنین پین 11میکرو
IN1 , IN2 وصل میشود به  PB.0  , PB.1

 [/su_table]

 

 

 

 

 

[icon name=”circle” class=”” unprefixed_class=””] سیم برد برد ماژول:

 

 

 

[icon name=”circle” class=”” unprefixed_class=””] ماژول رله2 کانال:

 

 

 

حالا روش کارشو براتون توضیح میدیم…

همانطور که در آموزش AVR قبلی هم توضیح دادیم برنامه ای که برای روشن کردن روشن کردن رله می نویسیم مانند برنامه روشن کردن یکled است.پس برای شروع برنامه ساده مثل روشن کردن یکledرو روی میکرو پروگرم می کنیم تا ماژول رله 2کانال رو راه اندازی کنیم.

باهربار روشن شدن پایه بجای روشن کردن led پایه وسط رله ای که میکرو به IN اش وصله (مثلاIN1) درقست سه پایه  بین دو پایه No.Nc جابجا میشه…

وباهربار جابجایی چراغ روی ماژول یکبار روشن میشه وتیک تاک میکنه،که این تیک تاک ها نشاندهنده ی عوض شدن کنتاکای رله است.

 

 

دستورات:

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

#include <mega32.h>

با این دستور توابع میکروکنترلر Atmega32 رابه برنامه فرا میخوانیم.

#include <mega32.h>

 

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

#include <delay.h>

بااین دستور تابع تاخیر, که وظیفه اش ایجاد وقفه بین زمان روشن وخاموش کردن پایه است, رابه برنامه فرامیخوانیم.

#include <delay.h>
void main(void)
{
//تابع main

 

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

DDRB.0=1;

بااین دستوربیت هفتم پورتDراخروجی میکنیم.

 DDRB.0=1;

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

while (1)
{

این دستور یک حلقه همیشه درسته چون شرط حلقه یک عدد.

که ما دستوراتی که میخواهیم دائما اجراشود را داخل آن مینویسیم

while (1)
      {

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

PORTB.0=1;

بااین دستور بیت صفرم پورت B را خاموش میکنیم.

PORTB.0=1;

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

delay_ms(500);

بااین دستور تاخیر 500ms ایجاد میکنیم.

delay_ms(500);

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

PORTB.0=1;

بااین دستور بیت صفرم پورت B را روشن میکنیم.

PORTB.0=0;

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

delay_ms(500);

بااین دستور تاخیر 500ms ایجاد میکنیم.

delay_ms(500);

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

PORTB.1=1;

بااین دستور بیت یکم پورت B را روشن میکنیم.

PORTB.1=1;

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

delay_ms(500);

بااین دستور تاخیر 500ms ایجاد میکنیم.

delay_ms(500);

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

PORTB.1=0;

بااین دستور بیت یکم پورت B راخاموش میکنیم.

PORTB.1=0;

 

 

[icon name=”circle-o” class=”” unprefixed_class=””] دستور:

delay_ms(500);

بااین دستور تاخیر 500ms ایجاد میکنیم.

delay_ms(500);

 

sourceکامل پروژه:

#include <mega32.h>
#include <delay.h>

// Declare your global variables here

void main(void)
{
  
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization
// Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
// State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In 
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T 
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=(0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0<<AS2;
TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);
TCNT2=0x00;
OCR2=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<TOIE0);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);

// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

// Analog Comparator initialization
// Analog Comparator: Off
// The Analog Comparator's positive input is
// connected to the AIN0 pin
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
SFIOR=(0<<ACME);

// ADC initialization
// ADC disabled
ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

// SPI initialization
// SPI disabled
SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

// TWI initialization
// TWI disabled
TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);
   DDRD.B=1;
while (1)
      {   
     PORTB.0=1; 
        delay_ms(500);
       PORTB.0=0;
	   delay_ms(500); 
	   PORTB.1=1;
        delay_ms(500);
       PORTB.1=0; 
	   delay_ms(500);
      }
}

جمع بندی:

دراین آموزش نحوه راه اندازی ماژول رله دو کانال را آموزش داده ایم.

ازاین ماژول در ساخت وسایل بسیاری همچون دزدگیر میتوانید استفاده کنید.

 

تصویر Dozgir در آموزش راه اندازی رله 2 کاناله با AVR

 

 

خب اینم از آموزش امروز امیدوارم که لذت برده باشید و پروژه  های مختلفی رو با این ماژول  بسازید و فیلمشو روی صفحه اینستگرام خودتون بزارید ، مارو تگ کنید و کپن تخفیف از ما بگیرید.

راستی یادتون نره ، حتما به اینستاگرام ماهم سربزنید

[icon name=”asterisk” class=”” unprefixed_class=””] حجم فایل : زیر 1 مگابایت – رمز فایل : robotafzar.com

[sdfile url=”https://school.robotafzar.com/wp-content/uploads/2019/06/2-channel-relay.rar”]

 

 

اگر می‌خواهید از آخرین و محبوب‌ترین مقالات ما در ایمیل خود مطلع شوید، همین الان ایمیل و شماره موبایل خود را در کادر زیر وارد کنید:
تعداد علاقه مندانی که تاکنون عضو خبرنامه ما شده اند: 0 نفر
دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *