Форум » Розробки » Безконтактний Регулятор Яскравості » Ответить

Безконтактний Регулятор Яскравості

Reshtunn: Зробив на днях до свого Тавроджипа таку от примочку. Дозволяє регулювати яскравість підсвітки панелі приладів. Розмішується глибоко під пластиковою обшивкою і його ззовні не видно. Тим не менше, свою функцію він виконує на відмінно. Короткий опис: "Безконтакний регулятор Яскравості (БРЯ) це невелика плата із ємнісним слайдером розміщеним на одній стороні та компонентами на іншій яка дозволяє ругулювати яскравість лампи накалювання. Мікропроцесор вимірює положення пальця на слайдері та виставляє яскравість лампи відповідно до неї.. Позиція пальця може відслідковуватися через більш як 4мм пластику і відповідно до неї регулюватися потужність навантаження в широких межах. Пристрій може бути змонтований за допомогою двостороннього скотчу в інстуючу конструкцію без додаткових отворів чи елементів кріплення. Технічні характеристики: - Вхідна напруга…………………...….7.5V - 30V - Вихідний Струм……….......…….....0A – 10A - Рівні Яскравості......……………..….….255 - Вихідна Частота.....………...…….…1200 Hz - Період Watchdog таймера....…………1s - Товщина Оверлею……………....….1mm…4mm - Розміри плати....………………......40mm x 12mm БРЯ виставляє щілинність PWM вв межах від 0 до 255 в залежності від положення пальця на слайдері.Якщо яскравість не змінювалася протягом десяти секунд то вона зберігається в памяті і виставляється під час наступного ввімкнення. Яскравість може бути змінена двома шляхами. Позиція пальця на слайдері напряму відповідає вихіждній яскравості. Це означає якщо ми поставили палець на початок слайдера то одразу ж одержимо нульову яскравість на виході. Якшо на середині – половину яскравості. Якщо в кінці – повну яскравість. Другий спосіб зміни яскравості полягає в доторканні до слайдера і плавній зміні позиції пальця. Логічне питання: як аткий малий транзистор без радіатора може регулювати таке потужне навантаження? Відповідь: “Тому що ми використовуємо PWM”. Широтно-Імпульсна Модуляція (PWM), є дуже ефективний шлях для задання рівня вихідної потужності з малими втратами. Рівень вихідної потужності залежить від співвідношення часу вмикання і вимикання.  Потужність витрачається лише на перехідні процеси між цими двома станами. Схема присртою показана на нижче Вхідна напруга поступає на конектор J1 і далі йде на лінійний регулятор U2. Діод D2 захищає регулятор від напруги зворотньої полярності. Регулятор забезпечує стабільну напругу 5V для живлення мікропроцесора U1. Мікропроцесор вимірює ємність елементів слайдера Slider1….Slider8 і по цьому визначає позицію дотику. Програмний блок CSD з математичним апаратом усереднення сигналів від сусідніх сенсорів забезпечує 255 рівнів яскравості. R1 є резистором зворотнього звязку сігма-дельта модулятора. C2 це інтегруючий конденсатор для нього. Транзистори Q1 та Q2 формують схему керування навантаженням. Транзистор Q1 ввімкнений по схемі верхнього ключа, ним керує транзистор Q2. Топологія верхнього ключа вибрана по причині необхідності керування заземленими навантаженнями, які часто зустрічаються в автомобілях. Внутрішні підтягуючі до плюча резистори всередині мікроконтроллера U1 обмежують струм бази для транзистора Q2. Коли транзистор Q2 відктритий тоді затвор транзитора Q1 зєднаний з землею і він є відкритий також. Коли транзистор Q2 є закритий тоді затвор транзистора Q1 підєднаний до витоку через резистори R2 та R4, тому транзистор Q1 є закритий. Резистори R2 і R4 визначають щвидкість закривання транзистора Q1, тобто потужність розсіювання на ньому. Менші значення цих резисторів завжди кращі, але їх зменшення обмежується граничними потужностями розсіювання на резисторах та Q2.  Світлодіод D1 призначений для моніторингу роботи пристрою без підєднання зовнішнього навантаження. Схема підєднання пристрою показана нижче Джерело живлення з напругою 12V показано для прикладу. Будь-яка напруга в дозволеному діапазоні може бути підєднана замість неї. Пристрій змонтовано на двосторонній друкованій платі, яка показана нижче 1:5. Всі компоненти розміщені на нижній стороні ДП. Лише вісім перехідних отворів зєднують елементи слайдера з мікроконтроллером. Код програми дуже простий, містить лише одну головну функцію. void main(void) {   //--> Initialization PWM8_WritePulseWidth(bBrightness);            // Read stored in ROM value PWM8_Start();                                 // Start PWM8 Drive_1_GlobalSelect_ADDR |= (Drive_1_MASK | Drive_2_MASK); // Connect pin to bus     M8C_ClearWDTAndSleep;  // Clear Watchdog and Sleep Timer       M8C_EnableWatchDog;  // Enable Watchdog M8C_EnableGInt;                               // Enable Global Interrupts TX8SW_Start();                                // Start Debug Information transmitter       CSDADC_Start();                                // Start CSD user module       CSDADC_SetDefaultFingerThresholds();           // Initialize filger thresholds       CSDADC_InitializeBaselines();                  // Initialize sensors baselines      // --> Non-ending loop is here    while (1) {   CSDADC_ScanAllSensors();                     // Scan All sensors     CSDADC_UpdateAllBaselines();                 // Update all baselines for them //--> Position calculation if(CSDADC_bIsAnySensorActive())              // Check for touch {   wPosition=CSDADC_wGetCentroidPos(1);     // Calculate touch position if (wPosition != 0xFFFF)                 // Check for error { if (wPosition > RESOLUTION) wPosition=RESOLUTION; // Check for over range bWriteFlashFlag=1;                            // Set Flash write flag PWM8_Stop();                                  // Stop PWM8 bCurBrightness=(BYTE)wPosition;               // Convert position to BYTE PWM8_WritePulseWidth(bCurBrightness);         // Write new brightness PWM8_Start();                                 // Start PWM8 } // end if wPosition } // end if SensorActive //--> Flash Writing if (bWriteFlashFlag != 0)             // Check is writing to flash new brightness { bWriteFlashFlag++;            // Increase flash flag that add some delay if (bWriteFlashFlag == SAVETIME)        // Check for write condition { bWriteFlashFlag=0;              // Do not write to flash next time fwStruct.bARG_BlockId = 127;    // Block Id to write, use last block                       fwStruct.pARG_FlashBuffer = (char *)(&bCurBrightness);                       fwStruct.cARG_Temperature = 20;                 bFlashWriteBlock(&fwStruct);                  // write new brightness } } // end bWriteFlash //--> Transmit Data TX8SW_PutCRLF();      // Start condition TX8SW_Write((char *)(&CSDADC_waSnsResult), CSDADC_TotalSensorCount*2); // RawCounts TX8SW_Write((char *)(&CSDADC_waSnsBaseline), CSDADC_TotalSensorCount*2); // Baselines TX8SW_Write((char *)(&CSDADC_waSnsDiff), CSDADC_TotalSensorCount*2);     // Differences TX8SW_PutChar(0xFF);    // Stop Conditions        TX8SW_PutChar(0xFF); M8C_ClearWDTAndSleep;                                 // Reset WatchDowg     } // end while(1) } // end main function Для досягнення найкращої роботи пристрою необхідно настроїти його чутливість. Якшо чутливість зависока тоді яскравість міняється коли палець ше в повітрі, шо не дуже зручно. Коли чутливість занизька тоді потрібно дуже сильно тиснути на елеменнти слайдера. Чутливість може бути змінена шляхом модифікації параметра “Finger Threshold” в CSD модулі. Мікропроцесор посилає рав дані, бейслайни та діференси через пін P1[0] (SDA точка). Стандартний UART TX може приймати дані, швидкість передачі 115200 baud, 8 bit даних, no parity. Програма “Multichart” є рекомендованою для використання при ввідлагодження. Тим не менше будь-яка інша відповідна програма може бути використана.. Покрокова інструкція першого ввімкнення: - Підєднати 12V живлення до J1 - Виміряти напругу на C5.Повинно бути 5V. якшо ні – слід перевірити полярність і правильність монтажу. - Виміряти анпругу на C2. Повинна бути 1.2V. Якшо ні – перевірити чи запрограмований мікроконтроллер та правильність монтажу. - Підєднати до піна P1[0] (точка SDA) до входу UART RX використовуючи зовнішній транслятор рівнів або USB-UART місток. - Запустити програму “Multichart” або будь-яку іншу підходящу утиліту. - Рав Дані повинні бути в діапазоні 300…3000. Бейслайни повинні бути рівними рав даним а діференси - нуль - Шум рав даних повинен бути не більше 10 точок від піку до піку - Тепер слід доторкнутися до слайдера. Відношення сигнал.шум повинно бути в межах 5...15 Якшо діференси значно вищі за це значення слід збільшити параметр Finger Threshold. Якшо діференси значно нижчі тоді слід збільшити роздільну здатність та час сканування. Більше деталей про тюнінг чутливості можна дізнатися з документації до CSD. Відео на YouTube що демонструє роботу ємінсного регулятора яскравості. Дизайно повністю Open Source. Скачати всі потрібні файли можна тут: Проект Плата Завтра додам як воно в машині виглядає.

Ответов - 2

svt: Зачот, описав суперово

Miclem: Згідно вище наведеного алгоритму яскравість лампи змінюється лінійно відповідно позиції пальця на слайдері. Проте людске око має логарифмічну чутливість. Тому, як на мене, єфективно з точки зору людського ока регулювання буде на початку слайдера. Незле б було доати перетвореня позиції слайдера в освітленість через лагарифмування



полная версия страницы