• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 8/2/2020 11:38:31 PM'Basit' Yazılım Dili
  • 6/25/2020 3:18:13 PMderleme hatası
  • 12/11/2017 4:49:15 PMWindows Hizmeti Hk.
  • 4/23/2016 12:55:33 AMC programlama 2 oyun

Popüler Sorular

  • 5/27/2012 5:49:50 AMAsp.Net ile Date time alana veri ekleyemiiyorum ?
  • 4/2/2012 12:45:18 AM.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 5/12/2012 8:44:49 AMAcil Yardım
  • 5/27/2012 1:46:51 PMveri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LibreOffice
  • LINQ
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

AVR MİKRO DENETLEYİCİ TIMER DOĞRU PWM MOD FAZI ve PROGRAMLAMA

Gömülü Sistemler ile ilgili yazı serimize ATMEL firmasına ait AVR mikro denetleyici yazı serisi ile devam ediyoruz. Bu yazımızda bir AVR mikro denetleyicisi zamanlayıcısının(timer) doğru PWM (Pulse Width Modulation - Pals Genişliği Modülasyonu) Mod fazını ele alacağız.

30.06.2013

Yazar: Muhammed ÖNAL (Google+)

Kategori: Gömülü Sistemler

7176

AVR MİKRO DENETLEYİCİ ZAMANLAYICISININ DOĞRU PWM MOD FAZI

Merhaba arkadaşlar,

Gömülü Sistemler ile ilgili yazı serimize ATMEL firmasına ait AVR mikro denetleyici yazı serisi ile devam ediyoruz. Bu yazımızda bir AVR mikro denetleyicisi zamanlayıcısının(timer) doğru PWM (Pulse Width Modulation - Pals Genişliği Modülasyonu) Mod fazını ele alacağız.
 

PWM – Pals Genişliği Modülasyonu, SCR (Silicion-Controlled Rectifier), IGBT (Insulated,Gate,Bipolar,Transistor) gibi güç elektorniği cihazlarını kontrol etmek için bilinen en iyi yöntemdir. PWM aynı zamanda motor hız kontrollünde de kullanılmaktadır. AVR zamanlayıcıları (AVR Timers) kullanılarak kare dalgaları üretirler. Bu üretimi nasıl yaptıklarına dair ilerleyen yazılarımızda ele alacağız.

Bu teknik yazımız, AVR Zamanlayıcılarının (AVR Timers), PWM üretim yeteneğini açıklayan bir yazıdır.

Gömülü Sistem ve PWM Mod Fazı

Örnek anlatımlarımızı ATMEL ürünlerinden olan ATmega 16 AVR mikro denetleyicisi üzerinden gerçekleştireceğiz.

ATmega 16 mikro denetleyicisinde dâhili 4 PWM kanalı bulunmaktadır. PWM çıkışları ise OC0,OC1A,OC1B ve OC2 PIN’leri üzerinden alınmaktadır.

Bu PIN’lere ait detayları bir sonraki makalemizde bulabilirsiniz. AVR zamanlayıcısı PWM sinyalleri üretmek için iki moda sahiptir.

Bu modlar;

  1. Doğru PWM modu Fazı
  2. Hızlı PWM modu


A- Doğru PWM Modu Fazı tarafından Üretilen Pals Genişliği Modülasyonu (PWM)

Doğru PWM Modu Fazı, atama biti olan WGM0[1:0]=01 tarafından seçilebilir. Bu Mod, çift eğilimli çalışmaya dayanmaktadır.

Çift Eğilimli Çalışma; TCNTn, Maksimum değerden en alt değere ve en alt değerden maksimum değere sayar.

OCRn yazaçları, aşağı sayma ve yukarı sayma esnasında sürekli TCNTn yazaçları ile değerleri karşılaştırır. Karşılaştırma da COMn [1:0] bitlerinin programlama tarafından seçilebilir PWM çıkış PIN’leri (OCn) ters veya ters olmayan moda göre davranır.

Aşağıdaki tablo  COM [1:0] bitlerin ayarlarını göstermektedir.

COM[1:0] ve açıklamaları

Çift eğimli çalışma simetrik dalga üretimi sağladığı için faz doğrulama PWM modu motor kontörlü için tercih edilir.

Pals Görev Döngüsü ( Duty Cycle), OCRn yazaç için değerler yazılarak değiştirilebilir.

OCRn değeri aşağıdaki formül kullanılarak hesaplanabilir.

OCR Değeri = (% Görev Döngüsü) x 256 

Örneğin; Görev Döngüsü %75 ise, OCR Değeri nedir?

             OCR değeri = ( 75/100) x256  dir.

PWM çıkış frekansı ise aşağıdaki gibi olacaktır.

Çıkış Frekansı = Kristal Frekansı / (Ön Ölçekleme x 510 )

Ön ölçekleme: Pre-scaler

Amaç: Timer 0’dan  %75’lik görev döngüsünün (duty cycle) PWM sinyalinin üretimidir.


Elektronik Devre Açıklaması:

ATmega 16 Mikro denetleyicisine ait bağlantı devre şeması üzerinde gösterilmiştir. Timer 0, OC0 PINi üzerinde PWM dalga çıkışı üretir ve kullanır. Bu nedenle, dalga formunu gözlemlemek için 4 numaralı PIN CRO’ya bağlanır.

Aşağıdaki devre şemasını inceleyelim

ATMEGA 16 , PWM ,Osilator, Osiloskop

Programlama Adımları:

  1. WGM0[1:0] bit programlama için doğru PWM modu fazını seçmek.
  2. COM0[1:0] bit program ve inverting mod ve non-inverting modu’nun seçilmesi.
  3. OC0 PIN’inin çıkış PIN’i olarak set edilmesi
  4. TIMSK yazacı için OCIE0 bitinin set edilmesi
  5. Sei() komutu tarafından global kesmenin etkinleştirilmesi.

Çıkış Dalgası:

Frekans hesaplama formülü:

Çıkış Frekansı = Kristal Frekansı / (Ön Ölçekleme x 510 )

                          = 12000000 / (1x510)
                          =  23529.41 = 23.53KHz

ATMEL STUDIO 6 ile PROGRAMLAMA

Programlama adımlarını gösterdikten sonra şimdi uygulamamıza ait kodlarımızı ATMEL STUDIO 6 ile kodlayarak göstermeye çalışalım. İlk olarak yeni bir proje oluşturuyoruz. İzleyeceğimiz adımlar aşağıdaki gibidir

Atmel Studio 6 Yeni proje oluşturma

Şekildeki gibi numaralı adımlar izlenildiğinde File --> New--> Project yolu ile yeni bir proje belirlenebilir. Bu yol izlenildikten sonra karşımıza çıkan formda

Atmel Studio 6 Dil seçimi

Açılan formda numaralı işlemler takip edilirse;

  1. C/C++ ile hangi programlama dili ile uygulamak istediğinizi seçersiniz. Biz uygulamamızı C programlama dili ile programlayacağımızdan dolayı adım 2 ye bakınız.
  2. Adım 2 ile GCC C executable Project ile Gömülü C dilini tercih ettiğimizi belirtiriz.
  3. Adım 3 ile uygulamanıza ait Proje ismini belirtebilirsiniz
  4. Adım 4 ile Projenizi kaydetmek istediğiniz konumu belirliyoruz.
  5. Adım 5 ile OK diyerek projemizi onaylayıp bir diğer adıma geçiyoruz.

Bu adımların ardından üzerinde işlem yapacağımız ATMEL AVR mikro denetleyici cihaz ailesini seçmemiz gerekmektedir

Atmel Studio 6 Device Family

 

  1. 1 no’lu adımda megaAVR , 8-bit cihaz ailesini seçerek ATmega 16 adlı mikro denetleyicimizi seçeriz.
  2. 2 no’lu adımda seçtiğimiz cihaz ailesinin ürünü olan ATmega16 seçilir,
  3. 3 no’lu adımda ise bu mikro denetleyiciye ait datasheete erişerek mikro denetleyici üzerindeki PIN konfigürasyonlarına göz atmakta fayda olabilecek bir dökümantasyonu bizlere seçenek olarak sunmaktadır.
  4. 4 no’lu adımda OK seçeneğini tıklayarak KOD geliştirme editörümüze erişmiş oluruz.

 

Uygulamamıza ait kodlarımız aşağıdaki gibidir.

/*
 * ATmega16_PWM.c
 * Created: 25.06.2013 20:40:38
 *  Author: muhammed.onal
 */ 
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define FREKANS 12000000
#define duty_cycle 75    // Görev döngüsü için gerekli
#define prescaler 1

#define OCR_degeri ((duty_cycle*256)/100)
void t0_pwm_init(void);

int main(void)
{
   t0_pwm_init();
   sei();	          // Global kesmenin etkinleştirilmesi
   while(1);
}
//Timer0'ın başlatılması
void t0_pwm_init()
{
	// WGM0[1:0]= 01, Doğru PWM Modu Fazı için
	// COM0[1:0]= 10, non-inverting modunun seçilmesi
	// CS0[2:0] =001. prescaler (ön ölçeklemenin) olmaması durumu
	
	TCCR0=(1<<WGM00)|(2<<COM00)|(1<<CS00);
	DDRB|=(1<<PB3);	    // OC0'ın çıkış PIN'i olarak set edilmesi
	TIMSK|=(1<<OCIE0);  // Etkinleştirilen çıkış PIN'inin kesme karşılaştırılması
}
ISR(TIMER0_COMP_vect)			// Alt Program Kesme Hizmeti
{
	OCR0=(uint8_t)OCR_degeri;       // OCR değerinin yerleştirilmesi
}

Program derlendikten sonra Solution Explorer tarafında giriş çıkışa bağlı dosyalarımız aşağıdaki şekildeki gibidir.

Atmel Studio 6 Solution Explorer

Bir makalemizin daha sonuna daha geldik. Bir sonraki yazımızda görüşmek dileğiyle faydalı olmasını temenni ederim.

 

Muhammed ÖNAL
Bilgisayar Mühendisi
RFID Sistemleri Uzmanı
BT Yönetişimcisi

Blog:  http://www.muhammedonal.com
Web : http://www.yazilimdilleri.net

Yazar Hakkında

Muhammed ÖNAL

Muhammed ÖNAL

www.muhammedonal.com

Bilgisayar Mühendisi | RFID Sistemleri Uzmanı | BT Yönetişimcisi | Strateji Planlama ve İş Geliştirme 2015 itibariyle sağlık sektöründe Bilgi Sistemleri Yöneticisi ve Üst yönetim Stratejik Planlama ve İş Geliştirme Koordinatörü pozisyonunda çalışmaktadır.

Sosyal Medya

ORANLAR

  • 7176izleme

Arkadaşlarınla Paylaş

  • Tweet

0 Yorum

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Böyle bir sayfalama ağ trafiğini hafifleti...
  • Merhaba, ellerinize sağlık çok yardımcı ol...
  • Merhaba Bu uygulama örneğinden ASP.net ...
  • Hocam Link başka sayfaya yönlendiriyor.

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 124113
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 71306
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 51908
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ