Регулировка ШИМ минуса.

Kota
Offline
Зарегистрирован: 17.10.2019

Добрый день. Всех с наступающим Новым годом.
В общем задача такая. Имеется гирлянда с 6 светодиодами.
У всех светодиодов общий плюс 12 вольт и у каждого светодиода свой минус. Вопрос, как отрегулировать яркость каждого светодиода по ШИМ? Подойдут ли стандартно предлагаемые платы к ардуино? Я если честно не особо шарю. Но если схему на бросаете то пойму. У меня в арсенале платы с ключами irf520 и lr7843. Спасибо большое.

nik182
Offline
Зарегистрирован: 04.05.2015

Лучше дать ссылки на платы, чтобы понимать что там на платах напаяно. А вообще можно управлять "по минусу" любым транзистором n-p-n или мосфетом с n затвором.

Kota
Offline
Зарегистрирован: 17.10.2019

Ну, я так понимаю ардуинка выдает только 0 или 1, то есть 0 или +5 вольт. Или я ошибаюсь? Ссылку сейчас найду.

b707
Offline
Зарегистрирован: 26.05.2017

Kota пишет:
Ну, я так понимаю ардуинка выдает только 0 или 1, то есть 0 или +5 вольт. Или я ошибаюсь?

все верно. Но быстро-быстро меняя 0 и 1 - можно получить любое промежуточное значение. Именно так и работает ШИМ

Kota
Offline
Зарегистрирован: 17.10.2019

81,43 руб. 6%OFF | Комплект из 2 предметов, топ Mosfet Кнопка IRF520 Mosfet драйвер модуль для Arduino MCU ARM Raspberry Pi 3,3 в-5 в IRF520 Мощность MOS ШИМ затемнением светодиодный
https://a.aliexpress.com/_ATNFQV
Вот такие и
35,77 руб. 5%OFF | Модуль МОП-транзистора LR7843, модуль управления полевым эффектом
https://a.aliexpress.com/_9R89xP

То есть получается положительный шим сигнал будет идти на транзистор и регулировать отрицательный минус.

b707
Offline
Зарегистрирован: 26.05.2017

Kota пишет:
То есть получается положительный шим сигнал будет идти на транзистор и регулировать отрицательный минус.

в вашей светодиодной гирлянде нет "отрицательного минуса", там есть только +12в и GND. Вот подключение к GND вы и будете регулировать ШИМ

Kota
Offline
Зарегистрирован: 17.10.2019

Ой, пардон, ступил. Походу красные платы и регулируют GND.

Гриша
Offline
Зарегистрирован: 27.04.2014

я так понимаю про ток светодиодов спрашивать бесполезно?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Гриша пишет:

я так понимаю про ток светодиодов спрашивать бесполезно?

Почему бесполезно? 3 вольта!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А почему не Ватта?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:

А почему не Ватта?

Может и Ватта, но не килограмма точно - тут зуб даю!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А если киллограма?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Тогда может быть.

Kota
Offline
Зарегистрирован: 17.10.2019

Смысл спрашивать про ток если транзюки до 15 ампер держат? Правда если больше 2 ампер, уже охлаждение нужно. Набросал код, хочу многорежимный сделать. Но пока не получается. Придется отслеживание нажатий вставлять в циклы....

 




int R = 3;
int G = 5;
int B = 6;
int but1 = 7;
int but1_push;
int state_but1 = 0;

boolean state = false;

int time1;
int time2;
int time3;
int time4;
int time5;
int time6;

int lightTimer = 0;
int timepush;
int timeunpush;
int timetopush;

int s1;
int s2;
int s3;

unsigned long t;

void setup()
{
Serial.begin(9600);
pinMode(R, OUTPUT); // put your setup code here, to run once:
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
pinMode(but1, INPUT_PULLUP);
digitalWrite(but1, HIGH);
}

void loop()
{
but1_push=digitalRead(but1);

if(but1_push == LOW && state == false)
{
timepush = millis();
state = true;
}
if(but1_push == HIGH && state == true)
{
timeunpush = millis();
timetopush = timeunpush - timepush;
if(timetopush >= 50)
{
state_but1 +=1;
}
state = false;
}
if(state_but1 == 1)
{
if(millis()-time1 >= 200)
{
for(s1=0;s1<=255;s1++)
{
time1=millis();
analogWrite(R, s1);
Serial.print("S1 =" );
Serial.println(s1);
}
for(s1=255;s1>=0;s1--)
{
time1=millis();
analogWrite(R, s1);
Serial.print("S1 =" );
Serial.println(s1);
}
}
if(millis()-time2 >= 200)
{
for(s2=0;s2<=255;s2++)
{
time2=millis();
analogWrite(B, s2);
Serial.print("S2 =" );
Serial.println(s2);
}
for(s2=255;s2>=0;s2--)
{
time2=millis();
analogWrite(B, s2);
Serial.print("S2 =" );
Serial.println(s2);
Serial.print("state_but1=");
Serial.println(state_but1);
}
}
if(millis()-time2 >= 200)
{
for(s3=0;s3<=255;s3++)
{
time2=millis();
analogWrite(G, s3);
Serial.print("S3 =" );
Serial.println(s3);
}
for(s3=255;s3>=0;s3--)
{
time2=millis();
analogWrite(G, s3);
Serial.print("S3 =" );
Serial.println(s3);
}
}
}
if(state_but1 == 2)
{
if(millis()-time1 >= 100)
{
for(s1=0;s1<=255;s1++)
{
time1=millis();
analogWrite(R, s1);
Serial.print("S1 =" );
Serial.println(s1);
}
for(s1=255;s1>=0;s1--)
{
time1=millis();
analogWrite(R, s1);
Serial.print("S1 =" );
Serial.println(s1);
}
}
if(millis()-time2 >= 100)
{
for(s2=0;s2<=255;s2++)
{
time2=millis();
analogWrite(B, s2);
Serial.print("S2 =" );
Serial.println(s2);
}
for(s2=255;s2>=0;s2--)
{
time2=millis();
analogWrite(B, s2);
Serial.print("S2 =" );
Serial.println(s2);
}
}
if(millis()-time2 >= 100)
{
for(s3=0;s3<=255;s3++)
{
time2=millis();
analogWrite(G, s3);
Serial.print("S3 =" );
Serial.println(s3);
}
for(s3=255;s3>=0;s3--)
{
time2=millis();
analogWrite(G, s3);
Serial.print("S3 =" );
Serial.println(s3);
}
}
}
b707
Offline
Зарегистрирован: 26.05.2017

вставьте код как положено на форуме