Nejste přihlášen/a.
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?
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?
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.
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 hw.cz/...
Nemám čas to zkoumat víc, ale tady
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.
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).
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.
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).
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.
No to nevim, pravda je že jsem tranzistory nikdy nezapojoval, tady nakresleny odpor není, v jiných schémat ho zase najdete.
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ů.
Ono tohle není schéma stavěné pro můj případ, to sem našel zde forums.adafruit.com/..., š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
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 Ω.
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.
Chci se zeptat, víte co znamená to odečtení 24V-6V? forums.adafruit.com/... Jinak vystup z pinu atmegy8 je 20mA a 5V na portech B,C,D
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%.
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.
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.
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.
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í.
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í
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 < pwm_set)
P1OUT |= BIT1; //rozsvit led
else
P1OUT &= ~BIT1; // zhasni led
v proměnné pwm_set si nastavíš onu střídu v rozsahu 0 - 100
špatné formátování, tak ještě jednou
pwm++;
if(pwm> 100)
pwm = 0;
if(pwm < pwm_set)
P1OUT |= BIT1; //rozsvit led
else
P1OUT &= ~BIT1; // zhasni led
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.
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.
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.
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í 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 multá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, at 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).
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?
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.
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.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.