Atmega8, zapojeni 2*80*led diod

Od: Datum: 06.10.13 21:32 odpovědí: 44 změna: 08.10.13 23:14

Zdravím

Mám mikroprocesor atmega8 a chtěl bych na PORTB1 a PORTB2 (slouží jako vstupní piny) zapojit 80 a 80 ledek(U=2,5V, I=20mA), na těchto protech pak budu dělat PWM modulaci pro zmenšení a zvýšení jasu ledek. Ledky jsou zapojeny pralelně, každá se svým odporem. Komplikací je že výsledný proud z 80 ledek je 1,6A a mikroprocesor snese jen 0,3A. Nevíte teda někdo o nějakém regulátoru, nebo o nějaké jiné součástce která by do mikroprocesoru nepustila více jak 0,3A a zároveň neměla vliv na jas ledek a PWM? Pokud ano, můžete poslat i adresu s nějakým schématem zapojení, nebo datasheetem soucastky?


Seznam odpovědí:
 
moment čekejte prosím, probíhá přenos dat...
Zobrazení struktury odpovědí v otázce
Skrytí struktury odpovědí v otázce
Zobrazení struktury odpovědí v otázce

 

Odpovědi na otázku:
Datum: 06.10.13 22:16
avatar

Snad doplnit externím tranzistorem/ tranzistory.

Nebudete regulovat proud do led, ale proud do báze tranzistoru..., čili přes tranzistor poteče regulovaný proud.

Asi bude třeba externí napájení pro tranzistor...

Ohodnoceno: 0x
 
Od: hm®
Datum: 06.10.13 22:30
avatar

300 mA mi na takovou blechu připadalo hodně, tak jsem kouknul do nějakého katalogového listu a našel jsem, že 300 mA snesou jen napájecí přívody. IO piny mají max 40 mA, jestli jsem blbě nekoukal. To jen na okraj.

Pro zapojení tolika LEDek bude zapotřebí zesilovač, snad bude stačit jednoduchý z tranzistoru, možná i FETu, třeba IRF540N (to je jen první nápad, nutno ověřit). Tranzistor by měl být každopádně provozován ve spínacím režimu (tedy plně_rozepnut / plně_sepnut), jinak by se asi hřál. Jaká bude frekvence toho PWM?

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 06.10.13 23:11

Frekvence PWM je pro oba piny stejná od 500khz kdy září až po 2000hz kdy nesvítí vůbec, doufám že je to vypočítané dobře. Každopádně díky za reakci.

Od: luke237
Datum: 07.10.13 07:43
Ty frekvence vypadaji nejak divne. Ona na LED nesviti a presto blika v rytmu 2 tisice Hz? *ee* *sok* Navic 500 kilohertzu je uplne mimo. To je spise uz datovy prenos (napriklad nekde na urovni dalkoveho ovladace) nez regulace jasu nejakeho displeje.
Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 07.10.13 12:20

Je to počítané podle vzorce fPWM=fclk/(2N(1 OCRnA)) kdy fclk= frekvence hodin, N=preddělička, OCRnA=hodnota provnávacího registru tedy fPWMmin= 8Mhz/(2*8*(1 255))=1953hz - fPWMmax=8Mhz/(2*8*(1 0))=500Khz

ukázka zde, sice na FAST PWM proto jim tam vychází ještě větší Khz http://www.hw.cz/navrh-obvodu…e/efektivne-na-pwm-s-x51.html

Od: hm®
Datum: 07.10.13 15:25
avatar

Nemám čas to zkoumat víc, ale tady

http://www.electronicsblog.ne…xample-tutorial-with-program/

se zdá, že mají frekvenci i 61 Hz. Jsou tam snad nějaké předděliče, které by měly tu frekenci dostat níž. Ono totiž na koukání stačí desítky Hz (a už to nebliká), to určitě víš, a čím nižší frekvence, tím menší nároky na spínací prvek. Zkusil bych zaexperimentovat, co se z toho opravdu dá dostat.

A nezapomeň si k vývodu připnout vnitřní zvyšovací odpor (jestli je konfigurovatelný a jestli defaultně není připojen). Možná, že nakonec připojíš i vnější odpor z IOpinu na plus.

Jen pro úplnost: Kdyby se ukázalo, že opravdu stačí ten FET, tak by mohlo vyjít spínání celkem jednoduché, z IOpinu do řídicí elektrody FETu, elektrodu S na zem a elektrodu D k diodám s odpory a plusovému pólu napájení LED.

Snad jsem úplně neustřelil.

Ohodnoceno: 0x
 
Datum: 07.10.13 00:54
Skutečně po této bráně nemůžete chtít víc jak jednotky mA. Poměrně snadno bránu posílíte FET tranzistorem. Doporučuji u návrhu myslet na další věci: Kmitočet PWM volit nějaký rozumný, cca v rozsahu 300 Hz.. 3 kHz, jinak budete muset zapojení posilovače optimalizovat pro rychlost. Dále je dobré myslet na to, že po startu a resetu CPU brány obvykle chodí do "1". Takže než se CPU rozběhne, budou LED svítit naplno a odebírat maximální proud. Záleží na vás a zapojení, jestli to vadí, nebo ne. Pokud by to vadilo, bylo by potřeba signál do GATE FETu ještě invertovat.
Ohodnoceno: 0x
 
Od: luke237
Datum: 07.10.13 07:39

Uz tit o tady psali. Zadne logicke obvody se nepouzivaji uz z principu jejich technologie k ovladani zatezi.

Logicke obvody (jako napriklad ten tvuj procesor) jsou vyrobene z transistoru v technologii optimalizovane na uplne jine vlastnosti nez ovladani (spinani/rozepinani) velkych zatezi.

Logicke obvody jsou urceni k rizeni ovladacu (anglicky "driver"), ktere se staraji napriklad o spinani, napajeni nebo uzemnovani velkych zatezi. Ty "ovladace" mohou byt treba prave ty zminovane FET, at uz diskretni nebo nekolik jich integrovanych v nejakem pouzdre (zase zde pozor - pokud je to integrovane z pouzdre, tak to uz z principu cinnosti nemuze spinat takove zateze jako diskretni tranzistor, protoze se to nedokaze uchladit lepe nez jeden diskretni tranzistor s velkym chladicem na zadni strane).

Ohodnoceno: 0x
 
Od: luke237
Datum: 07.10.13 07:47

Jeste dodam, ze kdyby ten ovladac pro spinani 1,6A potreboval ovladaci proud (napriklad do baze v pripade bipolarniho tranzistoru nebo vysoke napeti v pripade elektronek apod.), ktere ten mikroprocesor nemuze dodat, tak ten procesor ovlada ten zdroj, ktery ten potrebny bazovy proud umi dodat tomu vykonovemu tranzistoru.

V praxi to pak vypada tak, ze vyvod procesoru je vyveden na bazi maleho tranzistoru, jehoz emitorovy proud uz je dostatecne velky pro sepnuti baze nasledneho vykonoveho tranzistoru.

Ohodnoceno: 0x
 
Od: zabu
Datum: 07.10.13 13:51

LED se dají z procesoru ovládat mnoha způsoby, např obvod ULN2003 to umí. Je 7mi násobný, výstup tvoří tranzistory s otevřeným koélektorem.

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 07.10.13 14:29

Máte někdo zkušenosti s tímhle zapojením? Je možné takhle za sebe nastřádat až 80 ledek? popřípadě jaký by byl výsledný proud jdoucí do (arduino pinu).

Od: mrmonroe
Datum: 07.10.13 14:35

spíš asi z arduiino pinu

Od: bmbx®
Datum: 07.10.13 14:44

Samozřejmě že lze ledky takto napojit v jakémkoliv počtu, ale musí se úměrně zvednout napájecí napětí, s proudem to nehne.

Nehne to s proudem z arduino pinu díky tranzistoru a nehne to ani z proudem obvodu ledek - SERIOVÉ ŘAZENÍ

doplněno 07.10.13 14:45:

Myšleno přidání ledek do větve.

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 07.10.13 14:52

Když takle zapojím 80 ledek budu je moct regulovat z pinu pomocí PWM?

Datum: 07.10.13 19:56
avatar

Ty tranzistory nepotřebují odpor do báze?

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 07.10.13 20:21

No to nevim, pravda je že jsem tranzistory nikdy nezapojoval, tady nakresleny odpor není, v jiných schémat ho zase najdete.

Od: hm®
Datum: 07.10.13 19:19
avatar

No, přesně takhle ti to asi fungovat nebude. Jestli máš LED, které potřebují 20 mA (jak píšeš v otázce), tak by na odporu vzniklo napětí 6,6 V, k tomu se přičte asi 0,5 V napětí báze-emitor toho tranzistoru a potřebné napětí na řídicím pinu (zde arduina) je přes 7 V. A ty tam budeš mít nejvíc 5?

A taky bys těch LEDek v sérii musel mít víc, při napájení ze 24 V.

Takže: zmenšit odpor, doplnit LED na množství odpovídající napájecímu napětí té LEDkové sítě, zjistit, jestli dá řídicí pin potřebný proud do bází tranzistorů.

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 07.10.13 20:02

Ono tohle není schéma stavěné pro můj případ, to sem našel zde http://forums.adafruit.com/viewtopic.php?f=8&t=16469, šlo mi spíš jestli by to takle mohlo principielně fungovat a mohl sem takhle normálně regulovat jas přes PWM. Já budu mít jiné hodnoty. Mé hodnoty by byly VCC 24V 24-5=19 19/2,5=7 R=75 OHM

Datum: 07.10.13 20:19
avatar

24 V, ale s tranzistorem na LED zbývá jen něco přes 23 V, to je na LED těchto LEDek. 23 - 22,5 = 0,5 V @ 20 mA --> 25 Ω, bere se nejbližší vyšší z řady, takže 27 nebo 33 Ω.

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 07.10.13 20:40

Takže můžu zapojit na tohle napětí 9 ledek. Víte co znamená to odečítání 24V-6V?

Datum: 07.10.13 20:44
avatar

Nevím, nedává to smysl.

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 07.10.13 20:48

měl bych teda počítat tak jak jste napsal vy normalně s 9 ledkama a R=25

Datum: 07.10.13 21:02
avatar

Ano.

doplněno 07.10.13 21:03:

A ještě musíš vypočítat odpor do báze tranzistoru, nebo použít nějaký logic-level MOSFET.

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 07.10.13 21:04

Díky za opovědi

Od: mrmonroe
Datum: 07.10.13 20:57

Chci se zeptat, víte co znamená to odečtení 24V-6V? http://forums.adafruit.com/viewtopic.php?f=8&t=16469 Jinak vystup z pinu atmegy8 je 20mA a 5V na portech B,C,D

Od: pavelv*
Datum: 07.10.13 21:52

To odečtení je proto, že tranzistor nemá připojen v bázi odpor. Takže bázi připojím na +5V, a musím tedy proud Ibe omezit odporem v emitoru. Odpor bude tak velký, aby protekl potřebný proud do báze, dle převodní charakteristiky. No a zároveň ten odpor omezuje proud tekoucí diodama. Čili pokud budu diodama hnát proud 20mA, bude úbytek na tom odporu 0.02*330 = 6,6V.

Takto zapojený tranzistor má zápornou zpětnou vazbu. Procházejícím proudem se zahřeje, tím se více otevře a začne procházet větší proud. Zde zapůsobí zpětná vazba. Při rostoucím proudu totiž i roste úbytek napětí na odporu a protože báze je připojena na +5V, musí se logicky zmenšit napětí na bázi a tím se tranzistor přivře, takže ve výsledku prochází stejný proud.

Takovéto zapojení bych ale vůbec nevolil. Máš možnosti připojit diody sériově, nebo paralellně, nebo jejich kombinaci. To chceš mít 80 ledek na jednom pinu/portu? V datasheetu tě totiž nezajímá jenom hodnota na jeden pin, ale také hodnota na celou bránu a nakonec také proud na napájecím vývodu. Můžeš mít procík co na pinu dá 50mA, na bránu 200mA a na přívodu maximálně 250mA. Budeš-li mít 5V aplikaci, což by bylo nejlepší vše připojit na jeden zdroj, tak ledky zapojíš paralelně a použiješ mosfet. Můžeš použít v podstatě jakýkoliv N-MOSFET co zvládne ten proud. Spínací frekvenci vol cca 100 - 1000 Hz. Nemusíš tam dávat ani žádný odpor k těm ledkám. Jen ale musíš spočíst maximální velikost střídy PWM kdy nima protéká 20mA. Pak budeš programově nastavovat střídu například v rozmezí 0-80%.

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 07.10.13 22:48

No ony ty ledky by byly po sedmi v serii az do 80 paralelne, skoro tedy 12*7. Právě že potřebuju 80 ledek na pin PORTB1 a 80 ledek na pin PORTB2, protože právě na těchto pinech je PWM modulace, proto nemužu použít jiné piny s vyžším výstupním proudem.

Od: mrmonroe
Datum: 07.10.13 23:00

pardon ty ledky by byli serioparalelne na jednom pinu 9*9

Od: pavelv*
Datum: 07.10.13 23:50

Pokud opravdu budeš mít 81 ledek, pak by mohl vyhovovat tranzistor BS108. Nevím jak jsi zběhlý s SMD, tak jsem hledal THT. Pokud zapojíš 9*9 ledek, bude výsledný proud 9*20 = 180mA, to zvládne v pohodě, napájecí napětí potřebuješ minimálně 9*Uf, kde Uf je napětí jedné diody. Použiješ-li napětí menší, diodam to vadit nebude, ba naopak budou rádi. Použiješ-li větší napětí, musíš buď´omezit proud pomocí rezistoru, nebo to řídit tou střídou, jak jsem psal výše. U toho pozor, aby se na výstupní pin nikdy nedostala travalá 1, obvykle při programování, možná by to šlo řešit odporem proti zemi, nejlépe vyzkoušet - vzít multimetr nastavit výstup na GND a spustit programování a následně inicializaci procesoru. Pokud se objeví něco nenulového, připojit odpor cca 10Kohm a zkusit znova. Pokud to nepomůže, tak buď vypínat ledky nebo tam napočítat ten předřadný odpor.

Ohodnoceno: 0x
 
Od: pavelv*
Datum: 08.10.13 00:23

Mimochodem, pokus tam máš nějaký výstup s vyšším proudem tak si můžeš udělat PWM softwarově

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 08.10.13 07:32

PWM dělam softwarově právě na těch PORTB1 A PORTB2 pinech, ano mohlch bych je dat prakticky na jakykoliv pin a PWM si vytvorit z casovace a negace, tak ze bych menil cas jak rychle by se mi ledky zapnuli/vypnuli, cim rychlejc bych negoval tím jasnějsí by světlo bylo a naopak, nicméně potřebuju abych docílil od naprostého vypnutí až k nejvyžšímu jasu, a to s časovačem a negací nedokážu, když to zpomalím moc budou mi jen velmi pomalu blikat. Právě proto je to na těhle dvou pinech , jen tady je PWM mod.

Datum: 08.10.13 07:47
avatar
To ale není PWM.
Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 08.10.13 09:42

jen sem narážel na to že je nemůžu přehodit na jiné piny protže tam PWM není, potřebuji to prostě na piny které PWM podporují.

Od: mrmonroe
Datum: 08.10.13 09:48

jo už to vidim, napsal sem že můžu PWM vytvořit z časovače a negace a to není pravda, jen sem chtěl říct že i přes časovač a negaci můžu do nějaké míry ztmavit a zesvětlit ledky, to se mi ale nehodí

Od: pavelv*
Datum: 08.10.13 20:27

PWM funguje tak, že si vezmeš nějaký časový interval a rozsekáš ho na libovolnej počet kroků, typicky 100. Poté inkrementuješ nějakou proměnou a když je menší než cas tak led svítí, pokud je větší, tak nesvítí. No a proměnou cas si nastavis jak chces. Můj jednoduchý generátor PWM pouštěný v čítači 1KHz vypadá takto:

pwm++;
if(pwm>100)
pwm = 0;
if(pwm P1OUT |= BIT1; //rozsvit led
else
P1OUT &= ~BIT1; // zhasni led

v proměnné pwm_set si nastavíš onu střídu v rozsahu 0 - 100

Ohodnoceno: 0x
 
Od: pavelv*
Datum: 08.10.13 20:29

špatné formátování, tak ještě jednou

pwm++;
if(pwm>100)
pwm = 0;
if(pwm P1OUT |= BIT1; //rozsvit led
else
P1OUT &= ~BIT1; // zhasni led

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 08.10.13 21:57

To je šikovné, díky za návrh programu. To by mohlo vyřešit můj problém, pokud takhle nastavím 5 pinů s tolerancí těch 50mA jak jste výše psal, a na každý pin dám 8led seriově *2 poteče mi do jednoho pinu 40mA, pokud bych měl napětí na 24V nemusím tam dát už ani jednu součástku navíc, pokud se nemílim. Navíc mám pocit že vstupní proud na pinech atmega8 je 40mA, takže ani procesor bych nemusel měnit. pokud tam je někde chyba, prosím opravte mě. Jinak díky za pomoc doufám že to dobře dopadne.

Od: pavelv*
Datum: 08.10.13 22:11

Ne, tak jednoduché to není. Psal jsem jen odhad proudů, ale chtěl jsem tim naznačit že daleko podstatnější je proud napájecím pinem a tím je to vše omezeno. Navíc pokud spojíte sériově led a připojíte proti 24V, tak jak je budete ovládat? Na pinu bude buď 0 nebo 5 V, LED tedy budou svítit vždy. Základní pravidlo nárhu čehokoli je vyhnout se zatěžování procesoru. Tranzistor tam prostě při takovéto aplikaci být musí, buďte rád, že to je jen taková malá součástka s třema packama.

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 08.10.13 22:19

Jakto? já budu mít přece piny nastaveny jako vstupní ne jako výstupní, tím chci říct že 40mA pude do pinu, ne z něj.

 

Od: pavelv*
Datum: 08.10.13 22:44

Ok, pokud pujde proud do pinu, kudy se dostane ven z procesoru do zdroje? Přes GND pin, takže to je to samé.

Jinak co si pomůžete tím, že piny budou jako vstupní? Nastavím-li pin jako vstup, pouze monitoruju jaká logická hodnota na něm je - tzn. že tímto pinem neteče žádný proud - tzn. led nesvítí. Navíc pokud připojíte led proti +24V, tak se toto napětí objeví i na tom pinu, a to vás procesor hodně rychle pochválí :-D Pin nutno použít jako výstupní. Proti pinu lze zapojit pouze takovou zátěž která je připojena na stejné napájecí napětí jako procesor. Takže typicky max. 1 led proti zemi, či plusu. 20mA zátěž procesor ještě snese. Chci-li použít více diod, či je připojit na jiné napětí, musím použít nějaký posilovací obvod(hradlo, tranzistor).

Možná jste nepochopil orientaci vstupní/výstupní pin. Vstupním pinem nikdy neteče žádný proud(ve skutečnosti teče, ale jsou to nA). Používá se pro zjištění logické úrovně, zjistím tím jestli mám vypínač sepnutý nebo rozepnutý. Někdy se tento stav označuje také jako vysoká impedance. Vezmete-li mulťák a změříte napětí přímo na tom pinu, bude neurčité, může být jakýkoliv, protože není nikam připojen. Výstupním pinem pokud je připojen teče proud, ať již ven (z VCC procesoru) nebo dovnitř (na GND pin procesoru). Výstupní napětí může být +5V(log. 1), nebo 0V(log .0).

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 08.10.13 23:04

Střípky se začínají pomalu skládat :) . No dobře no zatím se mi jeví nejlíp ta možnost s tím připojením 80 led diod jako 8*10, na 24 a připojit je na BS108 tranzistor jak ste psal výše. Popřipadě nějake odpory k ledkam a na zem?

Od: pavelv*
Datum: 08.10.13 23:00

Takhle bych to zapojil já, v případě že bych chtěl napájet LED 24V. Napětí jedné led jsem zvolil 2V(nutno zvolit pro konkrétní led). Napětí na odporu mám tedy 24-10*2=4V, proud je 20mA a tedy R=4/0.02 = 200ohm. Dalších deset diod připojit zase přímo k tranzistoru, tam jak jsem to popsal a opět dáš stejný odpor.

Ohodnoceno: 0x
 
Od: mrmonroe
Datum: 08.10.13 23:14

Paráda, díky. O víkendu to budu zkouset. Jinak mikroprocesory trochu programovat zvládám, ale jak vidim na tu technickou stránku sem porad levy. Vzdy sem si to zkousel jen na ledkach po jedne na pinu a nic vic me nezajimalo. Každopádně díky za čas a chytré odpovědi.

 

 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz

 
Copyright © 2004-2016 Poradna Poradte.cz. Všechna práva na poradně Poradte.cz vyhrazena.