Перейти к содержанию

RGB шар на Pic12F629


Yanshun

Рекомендуемые сообщения

Предверье новогодних праздников захотелось мне собрать RGB "шар", рассеиватель  от светодиодных ламп, коих за год накопилась целая коробка. Выкидывать как-то не хотелось и вот думал куда применить их, идея нашлась сама собой. Вы данное устройство можете применить там где хотите, подсветка аквариума или стеклянных ваз, а можно детишкам ночник сделать, область применения зависит от Вашей изобретательности. 
Оригинальная статья http://www.picprojects.org.uk/projects/rgb/index.htm тут Вы сможете более подробно ознакомиться с устройством, правда она на английском, но можно воспользоваться google переводчиком.


Схема очень проста и содержит минимум деталей, собрать ее сможет любой, кто умеет держать паяльник и прошивать микроконтроллеры.
Внимание: только не надо забывать про константу в последней ячейке микроконтроллера, которую необходимо считать с нового PIC'а и записать её на бумажку или запомнить, а после того как выбрали в программе программатора соответствующий PIC и открыли управляющую программу(прошивку), то надо записать в последнюю ячейку эту константу. Но если Вы по какой-то причине все-же стерли ее, не нужно отчаиваться попробуйте записать значение 341С, дело в том, что у меня по 10 штук 629 и 675, и у всех такая константа.
Устройство питается от +5В и током не менее 200 мА, на прямую можно подключать к USB ПК.  Красный, зеленый и синий светодиоды расположены на ПП хаотично для равномерного засвета и подключены параллельно, что дало возможно подключать к +5В. Ограничевающие  резисторы R5 по R13 ограничивают ток для каждого светодиода. Катодами светодиоды подключены к NPN транзисторам 2N5551, которые зажигают светодиоды, а управляет этими транзисторами микроконтроллер, посредством ШИМ.

Собранное устройство в настройке не нуждается. Смена световых эффектов производится нажатием на кнопку SB1, кнопка тактовая. В версии прошивки V3.0.3 смена эффектов производится двойным нажатием на кнопку, одиночное позволяет приостановить эффект, как бы поставить на паузу, такое же одиночное нажатие возобновляет смену цветов. Выключить и включить можно длительно зажав кнопку. В программе присутствуют эффекты от плавного и медленного изменения спектра до интенсивных миганий. В программе всего 27 вариантов. Если Вам они не понравятся и Вы умеете программировать, тогда в исходном коде может подстроить под себя, на первоисточнике есть  инструкция по настройки оттенков под себя. У данного микроконтроллера остался один свободный порт и если у Вас будет желание можете к нему подключить датчик пульта и управление уже делать с пульта, (правда придется дописать программный код для управления с пульта). Код программы написан в MPLAB IDE. 
Приложил PDF инструкцию расчета сопротивления под Ваши конкретные светодиоды. Но если Вам лень этим пользоваться или не удобно, есть онлайн калькулятор http://cxem.net/calc/ledcalc.php
В данном устройстве применяются сверхяркие светодиоды, поэтому при работающем устройстве, на него, нужно смотреть под углом, ни в коем случает не под прямым, иначе могут пострадать Ваши глаза. Led можно использовать как круглые, так и квадратные 5 мм.
 

Печатная плата получилась односторонней с размеров D=47, минимальный зазор 0,3, минимальная дорожка 0,3, минимальный поясок 0,3 мм. Данный размер был выбран потому, что он идеально подходит взамен сгоревшей матрицы в светодиодной лампе. Разумеется Вы можете перерисовать ПП под себя, либо сделать ее квадратной, а не круглой, у Вас появятся место под крепежные болтики.
Печатная плата в форматах DipTrace, Lay6, Gerber, Pdf, каждый выберет лучшей для себя вариант. Обратите внимание на то, как расположены светодиоды, чтобы потом не было проблем. Приложил анимацию ПП, чтобы можно было ее оценить со всех сторон. Компоненты деталей использовались как Dip так и SMD из-за того, чтобы втиснуться в размеры ПП. 
На ПП всего 3 перемычки получилось, меньше не вышло.  При замене каких-либо деталей обязательно проверяйте их совместимость с данной конструкцией и цоколевку.

А это видео демонстрации работы данного устройства. 

 

Схема RGB.jpg

Ashampoo_Snap_2017.11.25_20h42m18s_001_.png

Ashampoo_Snap_2017.11.25_20h42m33s_002_.png

Ashampoo_Snap_2017.11.25_20h42m55s_003_.png

Ashampoo_Snap_2017.11.25_20h43m19s_004_.png

ПП.jpg

3D Animation.gif

Gerber.rar

RGB DipTrace.rar

RGB.lay6

PCB.pdf

RGB101 effects.pdf

Калькулятор R.pdf

Прошивка Pic12F629 и исодный код.rar

Корпорация Mars

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Добрый день.
Закончил собирать RGB, после прошивке и подачи питания все сразу запускается и начинает работать. Настраивать ничего не нужно. Режимы переключаются быстрым двойным нажатием на кнопку, если нажать один раз эффект становиться на паузу, если зажать на более чем 3 сек. устройство переходит в ждущий режим, засыпает, аналогично из него выводиться.
При сборки очень ответственно подойдите к выбору светодиодов и рассеивателя. Я выбрал точечные сверхяркие светодиоды 5 мм и для маленьких рассеивателей диаметром 50 мм они плохо  подходят, т.к. в центе рассеивателя, верху, видны окружности цвета светодиодов.  
Большинство эффектов плавного гашения и зажигания светодиодов, есть всего парочку эффектов интенсивных.

Довольно хорошая игрушка выходит, кому что-то подходящее необходимо, советую.

Яркого света Вам.

SNC00577.jpg

SNC00578.jpg

SNC00579.jpg

SNC00581.jpg

SNC00583.jpg

SNC00585.jpg

Корпорация Mars

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • #include <Wire.h> #include <Oregon_TM.h> #include <BME280I2C.h> //////////////////////////////////////////////////////////////////////////////////////////////////////////// //Скетч для устройства, передающего данные датчика BME280 в формате Oregon Scientific THGN132N //Принципиальная схема прилагается. //Для работы необходима библиотека https://github.com/finitespace/BME280/ //Устройство работает от 3-ех пальчиковых батареек, для экономии электричества заливать скетч нужно через ISP //////////////////////////////////////////////////////////////////////////////////////////////////////////// //Также возможна передача данных в формате - THP (температура, влажность, давление, напряжение батареи) //Пример с приёмником поддерживает расшифоовку THP //////////////////////////////////////////////////////////////////////////////////////////////////////////// # define THGN_SEND 1 // Передавать ли данные в формате THGN132 # define THP_SEND 0 // Передавать ли данные в формате THP # define DEVICE_LOG 1 //Писать ли лог В Serial # define DONE_PIN 15 // вывод сигнала об окончании работы на таймер # define BME_WAIT 10 // Сколько мс ожидать датчик BME # define BATTERY_THR 3.5 // Порог напряжения для выставляения флага разряда батарейки (THGN) ///////////////////////////////////////////////////////////////////////////////////////////////// //Ниблы датчика THP //Во всех полях младшие ниблы идут вперёд!!! // 1-2 - тип (55) // 3 - канал (0-7) // 4-6 - (температура от -100С) * 10. Т.е. +25.1С = 1251 = 4E3h // 7-9 - Влажность *10 Т.е. 25.1% = 251 = 0FBh // 10-12 - (давление от 500ммртст) * 10. Т.е. 765мм = 2650 = A5Ah // 13-15 - данные с АЦП (A0) // 16-17 - CheckSUM // 18-19 - CRC8 (poly 0x07 start 0x00) ///////////////////////////////////////////////////////////////////////////////////////////////// Oregon_TM transmitter(4); BME280I2C bme; bool bme_present = false; float bme_temp(NAN), bme_hum(NAN), bme_pres(NAN); ///////////////////////////////////////////////////////////////////////////////////////////////// void setup() { digitalWrite(DONE_PIN, LOW); pinMode(DONE_PIN, OUTPUT); #ifdef DEVICE_LOG Serial.begin(115200); Serial.println("Waiting for BMEsensor..."); #endif //Обмен данными с BME////////////////////////////////// Wire.begin(); while(!bme.begin()) { if (millis() > BME_WAIT) break; } if (!bme.begin()) { #ifdef DEVICE_LOG Serial.println("No BME sensor found"); #endif bme_present = false; } else { switch(bme.chipModel()) { case BME280::ChipModel_BME280: bme_present = true; bme.read(bme_pres, bme_temp, bme_hum); #ifdef DEVICE_LOG Serial.println("Found BME280 sensor! Success."); Serial.print("Temperature = "); Serial.print(bme_temp, 1); Serial.println("C"); Serial.print("Humidity = "); Serial.print(bme_hum, 1); Serial.println("%"); Serial.print("Pressure = "); Serial.print(bme_pres * 0.75, 1); Serial.println("mmHg"); #endif break; default: #ifdef DEVICE_LOG Serial.println("Found UNKNOWN sensor! Error!"); #endif bme_present = false; } } //Напряжения батареи/////////////////////////////////////////// word battvotage = (word)(((float)(1.1 * 16368) / Vbg()) * 100); #ifdef DEVICE_LOG Serial.print("Battery voltage = "); Serial.println(battvotage,HEX); #endif //Подготовка и отправка данных THGN////////////////////////////////////// transmitter.protocol == 2; if (THGN_SEND) { transmitter.setType(THGN132); transmitter.setChannel(3); transmitter.setBatteryFlag(battvotage < BATTERY_THR); if (bme_present) { if (bme_hum > 98) bme_hum = 98; if (bme_hum < 2) bme_hum = 2; if (bme_temp > 70) bme_temp = 70; if (bme_temp < -50) bme_temp = -50; transmitter.setTemperature(bme_temp); transmitter.setHumidity(bme_hum); transmitter.setComfort(bme_temp, bme_hum); } else { transmitter.setTemperature(-49.9); transmitter.setHumidity(2); transmitter.setComfort(-49.9, 2); } transmitter.SendPacket(); } // Если отправляются оба формата пакетов, межу ними надо выдержать паузу if (THP_SEND && THGN_SEND) delay(100); //Подготовка и отправка данных THP////////////////////////////////////// if (THP_SEND) { transmitter.setType(THP); transmitter.setChannelTHP(1); transmitter.setBatteryTHP( battvotage); if (bme_present) { transmitter.setTemperatureTHP(bme_temp); transmitter.setHumidityTHP(bme_hum); transmitter.setPressureTHP(bme_pres * 0.75); // перевод Pa в mmHg } else { transmitter.setErrorTHP(); } transmitter.SendPacket(); } #ifdef DEVICE_LOG Serial.println(); Serial.print(millis()); Serial.println("ms"); Serial.println(); #endif //Команда на отключение питания digitalWrite(DONE_PIN, HIGH); } ///////////////////////////////////////////////////////////////////////////////////////////////// void loop(){} ///////////////////////////////////////////////////////////////////////////////////////////////// int Vbg() { ADMUX = (1<<REFS0)|(0<<REFS1)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(0<<MUX0); long buffersamp=0; for (int n=0x0; n<=0xff; n++ ) { ADCSRA = 0xc7; while (bit_is_set(ADCSRA,ADSC)); buffersamp += ADC; } buffersamp >>=4; //16368 full scale 14bit ADCSRA &= ~(1 << ADEN); // отключаем АЦП return buffersamp; } Вот код программы. Пробовал по разному и от 5в запитывал и всю систему от 3,3 в. Причем голая ардуинка с таймером работает в нормальном режиме некоторое время, но потом все равно слетает и начинает питать мк постоянно( Причем это происходит всегда через разный промежуток времени.
    • На фото может быть название , характеристики и т.д. И по этому фото я смогу выбрать такой же в инете.. самому мне не собрать..
    • А что даст фотка? Тот же щуп, только чуть крупнее и с проводами питания.
    • Для меня наверное лучше купить готовый.. цель повысить чувствительность до 1 mV.. Наверное на Авто стоит покупать , мне бы фотку какую нить..такого активного щупа..))
    • Так на схемах обозначается подключение к сети 220 В.
    • Привет, радионарод! Вот, решил показать, рассказать и дать попробовать свою придумку, как я внешнюю синхронизацию к "ослику" прикрутил. DSO138 уже не так популярен, но кто-то пользуется, кому-то быть может пригодится. Подробной информации по таким доработкам в сети не встречал, так что делюсь, чем сам измыслился. Собственно, схема. Немного фоточек. С "ослика" не пугайтесь, не умею я делать красивые корпуса с красивыми мордами лица к ним. Двухканального функционального генератора с возможностью двигать фазу у меня нет, поэтому какая-то программа-генератор из Интернетов, звуковая карта и DSO138. Смотрим синус, т.к. меандр из звуковухи никакой. Конечно, видна погрешность в измерениях. Прибор-то - игрушка. Да и генератор не блещет точным сигналом. Полноценного аналога внешней синхронизации (как у аналоговых приборов) не получится, но даже в таком виде эта доработка расширяет функционал осциллографа и дает в некоторых случаях возможность изучать два сигнала. Как пользоваться. Из иных доработок. Как видите, дурацкие ползунковые переключатели заменены на сдвоенные галетники на три положения. Кнопки поставлены большие тактовые 12х12 мм. Подпаяны паралельно, старые удалять не нужно. Светодиод тоже в паралель. Питание батарейное, от аккумулятора старого "умнофона". Полтора ампер-часа, наверное. Плата зарядки, плюс повышайка с фильтрами по питанию. Корпус алюминиевый от "не-знаю-как-правильно-называется", там жесткий диск стоял с парой ветродуйчиков. Гетинакс, оргстекло.   Короче, удачи!
×
×
  • Создать...