Stránka 1 z 4

Arduino a led zesilovač RGB

Napsal: 08 led 2015, 10:43
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

Napsal: 08 led 2015, 11:01
od ross4435897
int ledPinR = 9;
int ledPinG = 10;
int ledPinB = 11;

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

Napsal: 08 led 2015, 11:11
od Michal22
Jestli máš na pásku v místě, které máš označené +12V, jen 0,4V, tak to svítit nemůže.

Napsal: 08 led 2015, 11:15
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í :)

Napsal: 08 led 2015, 11:20
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...

Napsal: 08 led 2015, 11:23
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? :)

Napsal: 08 led 2015, 11:24
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:

Napsal: 08 led 2015, 11:36
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.

Napsal: 08 led 2015, 11:37
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.

Napsal: 08 led 2015, 11:41
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);
}

Napsal: 08 led 2015, 11:44
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

Napsal: 08 led 2015, 11:46
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...

Napsal: 08 led 2015, 12:18
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í.

Napsal: 08 led 2015, 12:46
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.

Napsal: 08 led 2015, 17:51
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