Arduino a led zesilovač RGB

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
HoldingInfinity
Příspěvky: 43
Registrován: 07 črc 2011, 02:00

Arduino a led zesilovač RGB

#1 Příspěvek od HoldingInfinity »

Zdravím všechny bastlíře.
dotaz jsem tu nenašel, snad jsem správně hledal...ale nepovedlo se. Snažím se sestrojit ovládání led pásku přes arduino, ze spousty důvodů jsem ale nechtěl jít cestou vlastního driveru s transistory a proto jsem se rozhodl využít na instructables nalezený obvod. Obrázek
případně celé instructable zde:
http://www.instructables.com/id/LED-Str ... p-Arduino/

Zdálo se mi to celé naprosto geniální a jednoduché do doby, kdy mi přišly všecky součástky a já zjistil, že to tak jednoduché asi není.

Můj obvod se liší jen tím, že používám jiné piny... resp. 9, 10, 11 (jsou pwmkové) a přijde mi to logičtější...9...10...11 R...G...B


Obrázek
Vyšší rozlišení: https://www.flickr.com/photos/holdingin ... 4/sizes/c/


Pro jistotu přikládám i jak vypadá můj obvod. Ať dělám co dělám, tak to prostě svítit nebude. Z Arduina leze až 5V...resp. voltmetr hopsá, kvůli pwm a změnám barev...

12v zdroj dává sice jen 9.8 V ale předpokládám, že arduinu to udělá dobře...a pásek napřímo svítí i tak.

Pokud připojím jen pásek a jednu barvu - rozsvítí se, když připojím zesilovač a kterékoli barvy, rozsvítí se. Jakmile přidám arduino...ani ťuk.

Aktuálně už ze zoufalství nepoužívám ani svůj kód ale tento z instructables:

Kód: Vybrat vše

int ledPinR = 9;
int ledPinG = 10;
int ledPinB = 11;

void setup()  { 
} 

void loop()  { 
  // Red
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { 
    analogWrite(ledPinR, fadeValue);         
    delay(30);                            
  }
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
    analogWrite(ledPinR, fadeValue);         
    delay(30);
  } 
  // Green
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { 
    analogWrite(ledPinG, fadeValue);         
    delay(30);                            
  } 
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
    analogWrite(ledPinG, fadeValue);         
    delay(30);
  } 
  // Blue
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { 
    analogWrite(ledPinB, fadeValue);         
    delay(30);                            
  } 
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
    analogWrite(ledPinB, fadeValue);         
    delay(30);
  } 
  // White
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) { 
    analogWrite(ledPinR, fadeValue);         
    analogWrite(ledPinG, fadeValue);
    analogWrite(ledPinB, fadeValue);
    delay(30);                            
  } 
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
    analogWrite(ledPinR, fadeValue);         
    analogWrite(ledPinG, fadeValue);
    analogWrite(ledPinB, fadeValue);
    delay(30);
  } 
}
Pásek má společné + , je možné, že kód je pro společné - ? Mám pocit, že snad pásky se společným mínus ani neexistují, ne? Nicméně, i kdybych měl obrácený cyklus PWM tak by něco muselo aspoň bliknout, ne? :/

Předem děkuji všem, za jakoukoli reakci...jsem zoufalý! :(


Děkuji a těším se na vaše odpovědi, kolegové bastlíři! :)opraven druhý náčrt
Naposledy upravil(a) HoldingInfinity dne 08 led 2015, 11:43, celkem upraveno 1 x.

Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 01:00
Bydliště: Brno

#2 Příspěvek od ross4435897 »

int ledPinR = 9;
int ledPinG = 10;
int ledPinB = 11;

pinMode(ledPinR, OUTPUT);
pinMode(ledPinG, OUTPUT);
pinMode(ledPinB, OUTPUT);

Uživatelský avatar
Michal22
Příspěvky: 7655
Registrován: 28 bře 2012, 02:00
Bydliště: Brno

#3 Příspěvek od Michal22 »

Jestli máš na pásku v místě, které máš označené +12V, jen 0,4V, tak to svítit nemůže.
Civilizace založená na oboustranné lepící pásce nemůže dobře skončit...
I kdyby se z tebe jednou stal král, neodsuzuj lidi, kteří ti nebudou provolávat slávu- raději se zeptej sám sebe, proč tomu tak není...

Uživatelský avatar
HoldingInfinity
Příspěvky: 43
Registrován: 07 črc 2011, 02:00

#4 Příspěvek od HoldingInfinity »

ross: Děkuji za odpověď. Jsem teď mimo dosah k skutečnému duinu, ale vyzkoušel jsem pomocí simulátoru http://123d.circuits.io

Na výstup z arduina jsem po úpravě kódu dle tvého návrhu přidal osciloskop ale ta křivka vypadá stejně, ať tam ten pinmode je nebo není.

Zakopaný pes bude asi jinde... Děkuji

I když teď na to koukám, že když není nastavený pinmode tak to hází míň proudu...a že by to ten zesilovač nebral, když je málo proudu?

Předem dík za odpověď, Ross i ostatní :)
Naposledy upravil(a) HoldingInfinity dne 08 led 2015, 11:21, celkem upraveno 1 x.

Uživatelský avatar
taz
Příspěvky: 312
Registrován: 16 kvě 2007, 02:00
Bydliště: Ostrava

#5 Příspěvek od taz »

Kolik by si tam chtěl naměřit, když ledky mají mít napájení 12V a ty je napájíš 5V z duina.... viz tvůj druhý obrázek...

Uživatelský avatar
HoldingInfinity
Příspěvky: 43
Registrován: 07 črc 2011, 02:00

#6 Příspěvek od HoldingInfinity »

mno ano, ale tak to má i ten chlapík z instructables a jemu to funguje... :/ o to by se měl starat právě ten amp, že by měl ztrátu napětí na dlouhým pásku vzít a naboostovat zas na 12, nebo teda tak jsem to aspoň pochopil z toho odkazovaného instructable? :)

Uživatelský avatar
HoldingInfinity
Příspěvky: 43
Registrován: 07 črc 2011, 02:00

#7 Příspěvek od HoldingInfinity »

Michal22 píše:Jestli máš na pásku v místě, které máš označené +12V, jen 0,4V, tak to svítit nemůže.
to je mi jasný...já to uvedl jako jeden ze symptomů proč to nesvítí, že to může vyjasnit můj problém třeba :cry:

Uživatelský avatar
HoldingInfinity
Příspěvky: 43
Registrován: 07 črc 2011, 02:00

#8 Příspěvek od HoldingInfinity »

jaj teď mi to došlo...na tom mým obrázku chybí napájení ze zdroje do toho zesilovače...tam jde 12V do toho zesilovače zvlášť...a - je spojené s tím arduiním, za chvili to opravím.

Uživatelský avatar
dreamer
Příspěvky: 380
Registrován: 22 říj 2014, 02:00

#9 Příspěvek od dreamer »

Nenapsal jsi jaké máš arduino ale tak jak to máš nakreslené to opravdu nemůže fungovat. 12V připojíš na arduino, tam je stabilizátor který upraví napětí na 5V (u některých arduin na 3,3) a toto napětí pak posíláš do budiče led tak je jasné že to nemůže fungovat. Ten obvod který nazýváš zesilovačem musíš napájet rovnou ze zdroje a arduinem jenom řídit, jinak to fungovat nebude.

Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 01:00
Bydliště: Brno

#10 Příspěvek od ross4435897 »

a funguje ti to vubec? zkus treba ten nejjednodussi test .... pak na osciloskopu musis videt 50% PWM


int ledPin = 9; // LED connected to digital pin 9

void setup()
{
pinMode(ledPin, OUTPUT); // sets the pin as output
}

void loop()
{
analogWrite(ledPin, 127);
}
Naposledy upravil(a) ross4435897 dne 08 led 2015, 11:44, celkem upraveno 1 x.

Uživatelský avatar
HoldingInfinity
Příspěvky: 43
Registrován: 07 črc 2011, 02:00

#11 Příspěvek od HoldingInfinity »

dreamer píše:Nenapsal jsi jaké máš arduino ale tak jak to máš nakreslené to opravdu nemůže fungovat. 12V připojíš na arduino, tam je stabilizátor který upraví napětí na 5V (u některých arduin na 3,3) a toto napětí pak posíláš do budiče led tak je jasné že to nemůže fungovat. Ten obvod který nazýváš zesilovačem musíš napájet rovnou ze zdroje a arduinem jenom řídit, jinak to fungovat nebude.

ano, ano, to jsem přesně teď opravoval....už je tam ten náčrt správně... :( pardon.

jinak arduino je UNO
Naposledy upravil(a) HoldingInfinity dne 08 led 2015, 11:47, celkem upraveno 1 x.

Uživatelský avatar
HoldingInfinity
Příspěvky: 43
Registrován: 07 črc 2011, 02:00

#12 Příspěvek od HoldingInfinity »

ross4435897 píše:a funguje ti to vubec? zkus treba ten nejjednodussi test .... pak na osciloskopu musis videt 50% PWM


int ledPin = 9; // LED connected to digital pin 9

void setup()
{
pinMode(ledPin, OUTPUT); // sets the pin as output
}

void loop()
{
analogWrite(ledPin, 127);
}
bohužel v reálu osciloskop nemám a v simulátoru rgb zesík není.

Nicméně vyzkouším tam během odpoledne nacpat pinmode output...někde jsem totiž teď načetl že, když není nastavený pin jako výstupní, nepustí moc proudu...možná je to tím?

jinak ale výstup arduina si u reálného obvodu opravdu hopká od 0 do těch 5 v...

Uživatelský avatar
Michal22
Příspěvky: 7655
Registrován: 28 bře 2012, 02:00
Bydliště: Brno

#13 Příspěvek od Michal22 »

Pokud ti na pásek nejde 12V, tak se s tím můžeš mořit jak chceš, stejně nic nerozsvítíš.
Takže, ještě jednou- kolik máš v na pásku v místě označeném +12V? Jestli jenom 0,4V, tak je problém bd v tom RGB zesilovači nebo v jeho napájení.
Civilizace založená na oboustranné lepící pásce nemůže dobře skončit...
I kdyby se z tebe jednou stal král, neodsuzuj lidi, kteří ti nebudou provolávat slávu- raději se zeptej sám sebe, proč tomu tak není...

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#14 Příspěvek od MiloPS3 »

vyskousej jestly mas spravne nastaveny ty piny, pripoj na ne obycejny ledky z odporama a uvidis jestly to funguje,

Kód: Vybrat vše

pin_ledR  output
pin_ledG  --"--
pin_ledB  --"--

loop
pwm_ledR =50
pwm_ledG =150
pwm_ledB =255
delay(1000s)
pwm_ledR =150
pwm_ledG =255
pwm_ledB =50
delay(1000s)
pwm_ledR =255
pwm_ledG =50
pwm_ledB =150
nedelam s ARD.. takze netusim jak to spravne napsat, ale pro pochopeni to snad staci
a jeste
255 is off and 0 is on.

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#15 Příspěvek od Cowley »

Podle tohoto příkladu a obrázků se to zdá všechno OK.

http://www.usledsupply.com/shop/rgb-min ... r-ttl.html

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“