Регулировка ШИМ минуса.
- Войдите на сайт для отправки комментариев
Пнд, 07/12/2020 - 12:47
Добрый день. Всех с наступающим Новым годом.
В общем задача такая. Имеется гирлянда с 6 светодиодами.
У всех светодиодов общий плюс 12 вольт и у каждого светодиода свой минус. Вопрос, как отрегулировать яркость каждого светодиода по ШИМ? Подойдут ли стандартно предлагаемые платы к ардуино? Я если честно не особо шарю. Но если схему на бросаете то пойму. У меня в арсенале платы с ключами irf520 и lr7843. Спасибо большое.
Лучше дать ссылки на платы, чтобы понимать что там на платах напаяно. А вообще можно управлять "по минусу" любым транзистором n-p-n или мосфетом с n затвором.
Ну, я так понимаю ардуинка выдает только 0 или 1, то есть 0 или +5 вольт. Или я ошибаюсь? Ссылку сейчас найду.
все верно. Но быстро-быстро меняя 0 и 1 - можно получить любое промежуточное значение. Именно так и работает ШИМ
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
То есть получается положительный шим сигнал будет идти на транзистор и регулировать отрицательный минус.
в вашей светодиодной гирлянде нет "отрицательного минуса", там есть только +12в и GND. Вот подключение к GND вы и будете регулировать ШИМ
Ой, пардон, ступил. Походу красные платы и регулируют GND.
я так понимаю про ток светодиодов спрашивать бесполезно?
я так понимаю про ток светодиодов спрашивать бесполезно?
Почему бесполезно? 3 вольта!
А почему не Ватта?
А почему не Ватта?
Может и Ватта, но не килограмма точно - тут зуб даю!
А если киллограма?
Тогда может быть.
Смысл спрашивать про ток если транзюки до 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); } } }вставьте код как положено на форуме