Soru:
How do I hook up an LED across the tx pin on my Atmega328?
ZackB
2014-08-09 19:13:00 UTC
view on stackexchange narkive permalink

Bağımsız bir Arduino kurdum ve bu yöntemle Arduino'dan Breadboard'daki Mikrodenetleyiciye çizimleri yükledim. Arduino kartında olduğu gibi TX boyunca bir LED bağlamak istiyorum, bu yüzden toprağa giden bir dirençle TX pinine bağladım. Ve seri veriyi 9200 baud hızında gönderdiğim bir taslak üzerinde çalışıyor. Hem Arduino TX hem de ATmega TX LED'lerim doğru şekilde yanıp sönüyor.

Ancak, uygulamam 19200 baud hızı içeriyor, ancak bu çizimi yüklediğimde, ATmega'mdaki TX pini, seri veri gönderilmese bile sürekli olarak açık kalıyor. Daha da ilginç olan şey, Arduino TX ledinin aynı taslak için doğru şekilde yanıp sönmesidir. Biri yardım edebilir mi?

LED'inizi nasıl bağladığınızı bize gösterebilir misiniz?Ya da en azından bize tam olarak hangi pime bağlı olduğunu söyleTeknik olarak, kullandığınız pinler seri arayüzdekiler değildir (pin 2 ve 3), bu nedenle büyük olasılıkla ISP programlaması sırasında kullanılan başka bir pin (MISO, MOSI vb.) Kullanıyorsunuzdur.
TX seri pinini kullanıyorsanız, UART (seri arayüz) boşta olduğundan (yani hiçbir şey olmadığında Vcc seviyelerinde kaldıklarından), LED'i Vcc'ye (seri akım sınırlama direnci ile) bağlamanız gerekir.iletilen).Bu nedenle, LED'inizi hangi pimle bağladığınızı bilmek faydalı olacaktır.
@ZackB - Bir Arduino'ya yakından bakarsanız, TX ve Rx LED'lerinin ATmega'nın Tx ve Rx pinlerine * bağlı olmadığını * göreceksiniz.Bir Arduino'da, USB üzerindeki pinler tarafından seri arayüz çipine sürülürler.Spesifikasyonlara bakmadım, ancak yüksek baud hızlarında veya uzun kablolarda (veya azaltılmış sürücü sinyalli diğer şeylerde) iletişimin güvenilmez olmaya başladığını, çünkü LED'ler bağlantıya fazladan bir yük getirdiğini görebilirsiniz.LED'leri dolaylı olarak bir MOSFET veya darlington transistör ile sürmeyi düşünebilirsiniz.
@Ricardo Led'i vcc'ye bağladım ve herhangi bir aktivite görmüyorum.Led'in nasıl kablolandığına dair bir görselin nasıl yayınlanacağından emin değilim, ancak bir ucunda tx pinine ve diğer ucunda toprağa bir dirençle bağlı.
@gbulmer Söyledikleriniz doğruysa, seri iletimi kurmaya ve yönetmeye çalışmakla uğraşmayacağım çünkü projem için gerçekten gerekli değil.
@Ricard Önceki yorumuma aykırı olarak - Vcc'ye doğru kablolamadan sonra led çalışıyor!Teşekkürler.(Ledlerin gerçekten sadece diyotlar olduğunu unuttum)
@ZackB - lütfen bunu yapmanıza izin vermeyin;Seni takip etmemeye çalışmıyordum.Yanıp sönen LED'lerin kullanışlı, basit bir insan arayüzü olduğunu düşünüyorum.Ben sadece sizi önceden uyarılmış olan bir şeylerin ters gitme olasılığı olduğu konusunda uyarmak istiyorum;iletişim biraz kesintili hale gelirse, LED'leri çıkarın ve düzeltip düzeltmediğine bakın.Hangi boyutta direnç kullanıyorsunuz?
@gbulmer Aslında hangi direncin olduğundan emin değilim çünkü [led] (https://www.sparkfun.com/products/11372) ürün sayfasına göre, büyük bir dirence ihtiyacı yok gibi görünüyor, ancak yine de son derece parlak10k dirençle bağlandığında.Bu normal mi?
@ZackB - Doğrulamak için, bu LED'i * 5V * 'dan bir seri, * 10k * akım sınırlayıcı direnci ile çalıştırıyorsunuz?Bu (5V-3.4V) / 10k = 0.16mA olur, evet?Mavi LED'ler çok dikkat çekicidir ancak bu çok etkileyici.Tx & Rx LED'lerinizi 4k-ish dirençlerle (1mA akımın altında) çalıştırabilirseniz, muhtemelen endişelendiğim sorunlardan kaçınacağınızı önermek üzereydim.Örneğin.Bazı eski RS232 - seri dönüştürücüler düşük akımlıdır (IIRC 4mA altında), bu nedenle bir LED için yaklaşık 4mA çok fazla olabilir.Bunun etkisi, sinyali yeterince hızlı aşağı çekmeye çalışırken bazı bit modellerini bozmak olabilir.
@gbulmer Evet, led bu kadar düşük bir akımda bile makul çıktı üretir.Bunun yerine 220 Ohm'luk bir direnç koydum ve bakmak neredeyse parlıyordu.Şu anda bir 2.2k'ye sahibim, bu sadece bir saniye için yanıp söndüğünü düşünürsek iyi görünüyor.
@ZackB - Geri bildiriminiz için teşekkür ederiz, LED'i 4.4k, i, e, bu 2.2k serilerinden ikisi ile denediniz mi?2.2k ile sürülen, endişelendiğim sorunları önemli ölçüde azaltacaktır.
Beş yanıtlar:
Chetan Bhargava
2015-06-17 10:19:15 UTC
view on stackexchange narkive permalink

Genel olarak, LED'leri çalıştırmak için Rx ve Tx hatlarınızdan çok fazla akım çekmek iyi bir fikir değildir. Ekstra akım çekilişi hedefinize olan Fan-out oranınızı azaltabilir.

Çizgilerinizden ekstra akım çekilmesini önlemek için ikili bir OpAmp kullanabilirsiniz. Bu LED'leri çalıştırmak için LM358D gibi.

enter image description here

LM358 TI

Yüksek OpAmp girişlerinin empedansı, Tx ve Rx hatlarınızdan çok fazla akım çekmeyecek ve hatlardaki yayılmayı koruyacaktır.

Bu şemayı LTSPICE ve fiziksel olarak simüle ettim. devre tahtasında LM324 (TI) ile doğrulandı. Maalesef kullanışlı bir LM358D yoktu ama benzer şekilde çalışıyorlar.

Düzenleme: arudino.tyro'nun işaretçilerine teşekkürler. LM358D ile yeni şemayı deneyebildim. Eski şematik burada: http://i.stack.imgur.com/GHauy.png

Yanılmıyorsam bu op-amp tampon olarak kullanılıyor mu?Böyle mi deniyor?
R1 ve R2 için tipik bir değer nedir?5V Vcc ve 5v TTL varsayılarak 1 ve 7'deki tipik çıkış akımı nedir?1 ve 7'nin maksimum akım değerinin 40mA olduğunu düşünüyorum.Fakat verilen değerlerle tipik değer nedir?Teşekkürler
@arudino.tyro R1 ve R2 değerleri, LED'in mevcut değerine, LED'den geçmek istediğiniz akım miktarına ve (veya) LED'in açık durumda olmasını istediğiniz parlaklığa bağlıdır.LED akım hesaplayıcısı için google yapabilirsiniz.
@ChetanBhargava, Devrenizi kullandım ve her zaman açık kalıyor.Sorunu bulduğuma inanıyorum: Voltaj 0.7V veya daha düşükse TTL seviyeleri gerçekten düşük ve 2V veya daha yüksek olduğunda yüksek.Yani devrenizle iki gerilimi "karşılaştırırsınız".Biri IN-'deki TTL seviyesi ve diğeri IN +.Karşılaştırıcı çıkışı, sinyal hatlarının (ters çevrilmiş) durumu olması gerekiyorsa, bunları 0.7V ile 2.0V arasında sabit bir voltajla karşılaştırmalısınız.Sorun şudur: Çıktıyla karşılaştırırsınız.(OUT, IN + 'ya bağlıdır)
@ChetanBhargava, Çıkış yüksekse (5V), çıkış anahtarını yapmak için IN- girişi 5V kadar yüksek olmalıdır. Aynısı, çıkış düşük olduğunda, çıkışın değişmesi için 0V'den daha düşük bir giriş voltajına ihtiyacınız vardır.Problem 1. OUT ile IN + arasındaki bağlantıyı keserek, 2. Voltaj bölücü (veya muhtemelen bir Zener diyotu) yoluyla 5v'den 1.5v sağlayarak çözüldü.Şemalarınızı düzeltebilirseniz minnettar olurum.teşekkür ederim
Sevgili @ChetanBhargava, Evet, onu bir breadboard üzerinde test ettim ve her zaman açık kaldı.İnterneti araştırdım ve edaboard'da bir forum konusuyla karşılaştım: "http://www.edaboard.com/thread346127.html" OP, üzerinde isminizle tam olarak sizin şemalarınızı kullandı!Şemaları görebilmek için üye olmanız gerekmektedir.Aynı şeyi bildirdi.Orada önerilen numarayı yaptım ve devrenizi düzelttim.Geri besleme hattı yerine, v + (ters çevirmeyen ...) sağlayın, 0.7v ile 2.0v arasında bir voltaj sağlayın.Bir voltaj bölücü ile 5v hattından 1.5v sağladım.Bunu LTspice'de de simüle ettim.
@arudino.tyro İşaretçiler için teşekkürler, cevabımı geliştirdim.Yeni şemayı deneyebilirseniz sevinirim.Eski şemam sadece bir tampondu (ters çeviren bir tampon değil).UART sinyallerinin tersine çevrildiğini unuttum.
@ChetanBhargava, Tamam ... En kısa zamanda yapacağım, Şema çizmek için hangi programı kullanıyorsunuz?
Ricardo
2014-08-09 19:57:15 UTC
view on stackexchange narkive permalink

Uyarı: OP cevabımı en iyisi olarak kabul etse de, ondan sonra daha iyi bir cevap gönderildi, benim cevabımı okumadan önce okumak isteyebilirsiniz. Chetan Bhargava'nın belirttiği gibi, benim çözümüm LED'leri seri hatlardan sürmek için çok fazla akım çekebilir.


Aşağıda bir RS232'den UART'a dönüştürücünün şemasının bir parçası verilmiştir. ben yaptım. İçinde, RX ve TX hatlarından LED'leri (ve ilgili serileri sınırlayıcı dirençleri), tam da sizinkini bağlayabileceğiniz şekilde Vcc hattına bağladım. Anotları Vcc'ye ve katotları da seri olarak akım sınırlayıcı dirençle (LED'den önce veya sonra) TX / RX hatlarına bağlayın.

RX and TX LED connections

LED'ler Vcc'ye bağlanmalı ve toprağa bağlanmamalıdır çünkü UART hatları (yani ATmega seri arabirimi) boşta YÜKSEK, yani hiçbir şey aktarılmadığında Vcc seviyelerinde kalıyorlar.

Gbulmer'ın yorumlarında ne dediğine dikkat edin. , yine de:

... yüksek baud hızlarında veya uzun kablolarda (veya düşük sürücü sinyalli diğer şeylerde) iletişimin güvenilmez olmaya başladığını fark edebilirsiniz çünkü LED'ler fazladan bir yük bindirir bağlantı. LED'leri dolaylı olarak bir MOSFET veya darlington transistör ile sürmeyi düşünebilirsiniz.

78600 baud'a kadar seri hatlara bağlı bu LED'lerle ilgili hiçbir sorun yaşamadım, ancak yapabilirseniz Daha hızlı gidin.


ISP programlayıcınızda geri bildirim olarak gösterge LED'lerini bağlamak ilginizi çekiyorsa, aşağıdakileri yapabilirsiniz. ArduinoISP taslağı (aygıt yazılımı) zaten üç gösterge LED'ini çalıştırıyor:

  1. D9'da kalp atışı: taslağın düzgün çalıştığını göstermek için yanıp sönüyor (soluyor);
  2. D7'de programlama : gerçek programlama gerçekleştiğinde açıktır;
  3. D8'de hata: bir şeyler ters gittiğinde yanar.

Bu göstergeler ArduinoISP taslağıyla mükemmel çalışır.

Bu LED'leri bağlamak için aşağıdaki şemayı kullanın:

ArduinoISP shield

Şema, ArduinoISP taslağı ile kullanmak üzere ATmegas ve ATtinies programlamak için yaptığım bir Arduino Shield içindir. Umarım bu yardımcı olur.

Vericiye LED'leri gerçekten eklemek istiyorsanız satırları, lütfen yorum olarak gönderdiğim soruları cevaplayın, ardından cevabımı güncelleyeceğim.

ISP taslağını atmega'yı önyüklemek için kullandım, ancak ondan sonra çizimleri yüklemek için sadece tx, rx ve ikisi arasındaki sıfırlama çizgilerini kullandım.
Orada!Cevabımı, açıklamalarınızı hesaba katmak ve ayrıca gelecekte referans olarak hizmet etmek için güncelledim.
Lütfen, size en çok yardımcı olan yanıtı olumlu oyla ve kabul etmekten çekinmeyin.Sol taraftaki yukarıyı gösteren oku ve cevabın üst kısmının yanındaki onay işaretini tıklayarak bunu yapın.
@Ricardo - ilk diyagram * gerçekten * şematiğin bir parçası mı, yoksa bu soruyu yanıtlamak için bir şey çizdiniz mi?Kırık olduğunu düşünüyorum ve gösterildiği gibi çalışamaz.Şematik, Rx'in doğrudan + 5V'ye bağlı olduğunu gösteriyor, bu yüzden işe yaraması pek olası değil.Ayrıca, R1 ve R2'nin değerini gösterir misiniz?Ayrıca, bu UART için bir R@232'dir ve soru RS232'den bahsetmez.
@gbulmer Çok iyi görüldü !!Resim, sahip olduğum gerçek bir çalışma tahtasına aitti, ancak Olin'in görmesi durumunda daha iyi görünmesi için fotoğraf çekildi.Şimdi düzeltildi.
@gbulmer Dirençlerin her ikisi de 1K'dır.Resim, dönüştürücümün ATmega UART TX ve RX pinlerine bağlı olan kısmından.LED'leri nasıl bağlayacağımı göstermem gereken en iyi örnek olarak kullandım.
@Ricardo - tamam, bu daha iyi.Bununla birlikte, şimdi devreyi, RS232 sinyal seviyesini 5V UART sinyal seviyesine dönüştüren yakındaki bir elektronik parçasına sahip olarak okudum.Bu kesinlikle ZackB'yi uyardığım şey değil.Bir tampon görevi görecek ve dolayısıyla elektroniği * çalıştıracak yerel bir elektronik parçası önerdiğim şeydir *.Soruna nasıl yaklaşıldığı konusunda rahatım.Bununla birlikte, devrenizin ZackB'nin devresinin sağlam ve güvenilir olduğuna dair bir kanıt olmadığını düşünüyorum.Sadece kafa karışıklığını en aza indirmek için net olmaya çalışıyorum.
@gbulmer Ne demek istediğinizi daha detaylı açıklayabilir misiniz?Örneğin, bu kurulum neden tam olarak güvenilir değil?Verilerin kaybolma ihtimali olduğu için mi?Neden o zaman?
@gbulmer Açıklama için teşekkürler.Ancak yorumunuza yaptığım referansın açık ve yanlış olduğunu düşünüyorsanız, düzenlemekten çekinmeyin.Veya isterseniz tamamen kaldırabilirim.Ya da onu açıklayan bir cevap verebilirsiniz.Hangi seçeneği seçerseniz seçin sorun yok.
@ZackB aslında, bağladığım sorudan LED'leri kaldırdım, çünkü yanlış kablolandıklarını biliyordum ...
@Ricardo - Her şeyin yolunda gittiği gerçek bir durumu belirlemenize hiç aldırmıyorum! -) Benim amacım üst devre şeması * RS232'den seriye dönüştürücü ile UART arasındaki çizgiyi temsil ediyor olabilir, yapamamemin ol.Ancak, bu iki uç nokta arasındaysa ve hepsi yerel kartınızda bulunuyorsa, "uzun kablolara (veya azaltılmış sürücü sinyallerine sahip diğer şeylere)" tabi olamazlar.Ancak, durum böyle değilse ve bu sinyaller bu tehlikelere maruz kalıyorsa, o zaman çalıştığının kanıtı olarak durur ve ZackB'nin uygun olması gereken koşulları tanımlar.
"RX ve TX LED bağlantıları" şeklindeki @Ricardo (Şekil 1), LED'leri sürmek için RX ve TX hatlarından çok fazla akım çekilmez mi?
@Chetan Gerçekten R1 ve R2'ye bağlı.1K dirençlerle genellikle 5mA akım alıyorum.Bu çok mu?SöyleyememBenim için çalışıyor.Bu seri hatları bozmaya yeter mi?
@Ricardo, TX ve RX hatlarında çekilen akım miktarına ve TTL çıkış sürücüsüne bağlıdır.Bazı FTDI kablo veri sayfalarına bakarak, 6-8ma batabileceklerini söylüyor.Pimlerden 5ma çizmenin iyi bir fikir olup olmadığından emin değilim.
@Chetan - LED'leri anahtar olarak BJT'leri kullanarak sürmek, tabanlarını seri hatlara uygun seri sınırlayıcı dirençler kullanarak bağlamak uygun olur mu?
@Ricardo evet, yüksek hFE'li BJT ile ve MOSFET'lerle de mümkün olabilir.
m3x1m0m
2017-06-26 14:30:23 UTC
view on stackexchange narkive permalink

Chetan Bhargava tarafından yayınlanan devrenin doğru çalıştığını hayal edemiyorum, çünkü onu simüle ettiğimde LED arudino.tyro tarafından sürekli olarak yapılan bir yorumda belirtildiği gibi. Ayrıca davranış, Ricardo tarafından önerilen basit direnç artı LED devresine kıyasla farklıdır.

UART, BOŞTA olduğunda YÜKSEK olur, bu nedenle veri yolu DÜŞÜK olduğunda LED'i açmanız gerekir. Bir iletim devam ederken "yanlış devre" ile bir miktar yanıp sönme görmeyi bekleyebilirsiniz, çünkü LED hala değişiyor, değil mi? Ancak, bence bu çok hızlı, gözlerinizle görebiliyorsunuz (örneğin 9600 kHz).

Bu sorunu çözmek için önerim aşağıdaki devre. Temelde bir voltaj izleyicidir (1'lik bir kazanç ile tersine çevrilemeyen amplifikatör), ancak çıkış 5 V'a kadar bağlanan LED devresine bağlanır.Bu, giriş negatif olduğunda lambadan geçen akımla sonuçlanır. .

UART LED schematics.

LTSpice'e göre, akım yalnızca bir iletim devam ederken LED'den geçer (bunu, iletimler devam ederken "daha uzun AÇIK durum" olarak görürsünüz). Birkaç iletim arasında küçük bir duraklama olursa, biraz yanıp sönme göreceksiniz (LED KAPALI).

UART LED simulation.

Devrimi I2C ve UART için bir kart üzerine kuruyorum.Benim de simüle ettiğim I2C, yalnızca daha uzun aktarımlar görüyor veya otobüs bozuksa (ki bu da güzel).Kontrol edebilirsiniz: https://github.com/m3x1m0m/UppSense2017/blob/master/pcbs/backplane/output/electrical_spec_interface.pdf Devrenizde LED de yanıp sönebilir, ancak hayır olduğunda sürekli yanar.iletim devam ediyor çünkü UART boş modda YÜKSEK.
theMastermind
2020-08-07 01:36:57 UTC
view on stackexchange narkive permalink

@Chetan Bhargava devreniz her zaman açık olacaktır.Boş modda UART YÜKSEK olduğu için.Bu sorunu önlemek için lütfen LED'lerin yönünü değiştirin.Aşağıdaki resimde gösterildiği gibi

enter image description here

Dee Jay
2016-04-24 21:48:06 UTC
view on stackexchange narkive permalink

Bunun işe yarayacağını düşünüyorum

schematic

bu devreyi simüle edin - CircuitLab kullanılarak oluşturulan şema



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...