Mesajlar Etiketlendi ‘atmega’

MIDI   (Musical Instrument Digital Interface)  (Müzik Enstrümanları Dijital arabirimi)
elektronik müzik aletleri ve bilgisayarlar arasında gerçek zamanlı veri alışverişini sağlayan, endüstri standardı haline gelmiş yaygın bir iletişim protokolü.   (http://tr.wikipedia.org)

midiIşık masasıyla kullanmak üzere yaptığım MIDI devresi.
Başlangıçta hazır bir modül almayı düşünmüştüm ancak Türkiye’de fiyatların pahalı oluşu ve kargo bekleme süresinin uzun olması nedeniyle kendim yapmaya karar verdim.
Aslında yapmak istediğim işe uygun olanı, MIDI Show Control (MSC) protokolü kullanmaktı, MSC için araştırma yaparken, bir çok ışık masasının, MSC’ye gerek duymadan da “note on”, “note off” komutlarını tanıdığını öğrendim. Bu işimi daha da kolaylaştırdı.

Devrede Atmega 328P kullandım, sonraki projelerimde aynı işi 18F2550 ile de yaptım.
Devre, USB (veya sanal seri port) üzerinden aldığı <nota> ve <velocity> komutlarını midi aygıtına gönderiyor.

Arabirim bilgisayara USB üzerinden bağlanıyor ve beslemeyi de USB’den alıyor.
Şayet bilgisayar ile midi girişi yapılacak cihaz arasındaki mesafe uzun ise
arada hat kuvvetlendirici kullanmak gerekiyor. Hat kuvvetlendiriciler de piyasada
satılıyor(muş) ama ben bulamadım.

midi_driverOnun yerine tek taraflı çalışan bir çevirici yaptım. MIDI çıkışı bir optokuplör ile TX modülüne giriyor. Alıcı tarafta tekrar çevrilerek midi aygıtına bağlanıyor. İki modüle de harici olarak 5V besleme veriliyor. Tx-Rx modül arası çift burgulu kablo ile 100 metrede sorunsuz çalışıyor.

Yarışma programlarında, senkron çalışması gereken ses,ışık ve grafik animasyonları MIDI sayesinde kolaylıkla yapılabiliyor. Bazı robotlarda, DMX haricinde MIDI girişi de bulunuyor.

midi test
Bu da başka bir MIDI devresi. Devre hem USB hem de Ethernet üzerinden kullanılabiliyor.
Böylece uzak mesafeler için ayrıca hat kuvvetlendirici kullanmaya gerek kalmıyor.

Fotoğraf0780

midi2

Reklamlar

Atmel programlayıcınız yoksa ve bootloader yüklü kontrolcü satın almadıysanız, aşağıdaki yöntemle ATMega168 ve AtMega328 kontrolcülerine bootloader kodunu atabilirsiniz. Tabi bunun için elinizde en azından bir Arduino kartı olması gerekiyor.

UNO kartını bilgisayara takıyoruz ve “Examples” klasöründeki ArduinoISP kodunu IDE’ye yüklüyoruz.


Arduino 1.0 sürümünü kullanıyorsanız bu kod içinde bir değişiklik yapmak gerekiyor.
Bunun için; kod içinde heartbeat fonksiyonunu aratın ve fonksiyon içindeki delay(40) değerini, delay(20) olarak değiştirin.

Bu kodu karta yükleyin ve alttaki devrelerden birini kurun.

Ben ATMega328P-PU için sağdaki devreyi kurdum ancak RESET ucundaki 10k direnci kullanmadım. Bağlantılar aşağıdaki şekilde;

UNO D10  ->  ATmega RESET (1)
UNO D11  ->  ATmega SCK (19)

UNO D12  ->  ATmega MISO (18)
UNO D13  ->  ATmega MOSI (17)
UNO 5V    ->  ATmega VCC (7,20)
UNO GND ->  ATmega GND (8,22)

Bunların dışında; isterseniz UNO’ya status ledlerini de bağlayabilirsiniz. 

D9: Heartbeat         – shows the programmer is running
D8: Error                – Lights up if something goes wrong (use red if that makes sense)
D7: Programming    – In communication with the slave

Seri port seçimini de yaptıktan sonra, Programlayıcı olarak “Arduino as ISP” seçiyorsunuz
ve <Burn Bootloader> ‘ı seçiyorsunuz.  Birkaç saniyede, bootloader kodu yükleniyor.



Uno’nun yeni sürümlerinde deneme şansım olmadı. Yüklemede sorun yaşarsanız, ArduinoISP kodunu attıktan sonra, 
Uno’nun reset ucunu 10uF kondansatör ile şaseye bağlayarak deneyebilirsiniz. 

Arduino sayfasında bu konuyla ilgili detaylı bilgi bulabilirsiniz. link

ATMEGA 328P

Time Code Reader

Yayınlandı: Temmuz 14, 2012 / LTC, reader, server, sync, timecode
Etiketler:, , , ,

LTC Longitidinal (veya Linear) time code reader

Yayın sistemlerinde kullanılan timecode jeneratörden üretilen sinyalin, timecode girişi olmayan cihazlara veya yazılım tabanlı sistemlere entegrasyonu için timecode okuyucular piyasada mevcut. Ancak broadcast cihazların fiyatları malum. Yayın cihazlarıyla, bilgisayar tabanlı sistemleri senkronize etmek için, ucuz çözüm olarak, aşağıdaki sistem kullanılabilir.

Mikrokontrolcü tabanlı bir devre, sistemdeki cihazlara dağıtılan LTC sinyalini çözümleyerek, USB veya seri port (RS232) üzerinden bilgisayara gönderir. Bilgisayardaki sunucu yazılımı, çevrilmiş LTC sinyalini işleyerek, hem kendi saatini günceller hem de ağ üzerinden kendisine bağlanan diğer bilgisayarlara dağıtır.
Böylece, sistem saati ile yazılımlar senkron yapılmış olur. (kayıt yazılımları, saatler, bilgisayarlar, log yazılımları vs.)

LTC sinyali, dijital bir sinyaldir, ancak bir mikrokontrolcüye bağlamak için TTL seviyesine çevirmek gerekir. LTC sinyali, basit bir devre yardımıyla, genliği düzeltilerek kontrolcünün dijital girişine gönderilir, kontrolcü, 80 bitlik datayı çözüp formatlayarak, RS232 veya USB portundan bilgisayara gönderir.

Aşağıda, LTC sinyalin yapısı görülmektedir.

buffer devresi
Server uygulaması

Client uygulaması
Time Server, donanımdan (burada, time kod jeneratöründen) aldığı saat bilgisi ile, lokal saatini eşleştirir. Bu işlem belirli kriterlere bağlı olarak sürekli tekrarlanır. 

Uygulama aynı zamanda NTP server olarak çalışır, yani ağ üzerindeki diğer bilgisayarlar, client yazılımı üzerinden, periyodik olarak server’a bağlanarak kendi saatlerini güncellerler. 
 
kaynaklar: