-=FISHER=- Опубликовано 15 ноября, 2018 Поделиться Опубликовано 15 ноября, 2018 (изменено) Всех приветствую! Собрал я незамысловатое устройство, основной задачей которого является является управление полевым транзистором, посредством ШИМ, в зависимости от входных сигналов. Вот принципиальная схема и код: Скрытый текст Скрытый текст #include "main.h" uint8_t EE_lights EEMEM; //переменные EEPROM uint8_t lights, default_lights=200; //перменные для чтения из EEPROM unsigned char but_down, but_down1, dir=1; uint8_t get_button (void) { char code; code=PINB & PIN_BUTTON; _delay_ms(5); if(code!=(PINB & PIN_BUTTON)){return 0;} //если нажатие было неуверенным вернем 0 else{return PINB & PIN_BUTTON;} //если нажатие было уверенным то вернем 1 } static flash(void) { while(!get_button()){TCCR0A^=(1<<COM0A1);_delay_ms(100);} if(TCCR0A&=~(1<<COM0A1)){TCCR0A|=(1<<COM0A1);} } static get_up(void) { if(OCR0A!=0) { OCR0A--; } else { flash(); } } static get_down(void) { if(OCR0A<255) { OCR0A++; } } uint8_t park_light(void) { char code; code=PINB & PIN_LIGHTS; _delay_ms(5); if(code!=(PINB & PIN_LIGHTS)){return 0;} else {return PINB & PIN_LIGHTS;} } static rise() //функция плавного розжига { if(OCR0A==255) //если ДХО потушены, то { _delay_ms(DELAY*1000); //ждём... } while(OCR0A>0) //пока ДХО полностью не разгорятся { OCR0A--; _delay_ms(3); //плавно розжигаем } } static down() //функция плавного затухания { if(OCR0A>lights) //если яркость меньше заданной яркости ДХО при включенных габаритах, то { if(OCR0A==255) //если ДХО совсем погашены, то { _delay_ms(DELAY*1000); //ждем... } while(OCR0A>lights) //пока яркость ДХО меньше заданной { OCR0A--; _delay_ms(3); //плавно розжигаем } } else //иначе { while(OCR0A<lights) //пока яркость ДХО больше заданной, то { OCR0A++; _delay_ms(3); //плавно тушим } } } static port_ini(void) { PORTB=0x1C; DDRB=0x1; } static drl_state(uint8_t state) { if(state) { park_light() ? down() : rise()); } else { while(OCR0A<255){OCR0A++; _delay_ms(3);} //плавно гасим до нуля } } static lights_bright(uint8_t state) { if(state) { dir ? get_up() : get_down(); but_down1=1; lights=OCR0A; } else{if(but_down1){eeprom_write_byte(&EE_lights, lights);if(dir){dir=0;}else{dir=1;}but_down1=0;}} } uint8_t start_conditions(void) { char code; code=PINB&ANY_KEY; _delay_ms(5); if(code!=(PINB&ANY_KEY)){return 0;} else {if(code == 0x18){return 1;}else{return 0;}} } int main(void) { port_ini(); pwm_ini(); lights=eeprom_read_byte(&EE_lights); //читаем во временную переменную из EEPROM значение яркости ДХО //при включенных габаритах while(1) { drl_state(start_conditions()); //проверка условий для запуска ДХО (ручник, датчик давления масла) lights_bright(!get_button() && park_light()); //обработка нажатия на кнопку ТОЛЬКО при включенных габаритах } } К примеру, если "прижать" контакт BRAKE или OIL LAMP к земле, то МК должен плавно погасить светодиод D1 (который служит только для отладки схемы, а вообще погаснуть должны светодиодные модули подключенные минусом на контакт DRL-) до полного выключения. Сначала я подумал что беда в инициализации режима ШИМ в таймере, изначально он у меня был настроен так: void pwm_ini (void) { TCCR0A |= (1<<WGM00) | (1<<WGM01)//выбираем режим БЫСТРЫЙ ШИМ (FAST PWM) | (1<<COM0A1);//выбираем ножку OC0A, устанавливаем на ней 1 при совпадении с регистром OCR0A, //сбрасываем в 0 наверху (OCR0A = 255) TCCR0B |= (1<<CS02); //настройка предделителя ШИМ на 256, частота ШИМ равна 31250 Гц = 31,25 кГц OCR0A = 0; //по умолчанию светодиод полностью погашен } В Протеусе, при такой настройке ШИМ осциллограф показывал некоторые "иголки" при установке значения OCR0A в 0. Я подумал что в этом корень всего зла и решил перенастроить ШИМ вот таким образом: void pwm_ini (void) { TCCR0A |= (1<<WGM00) | (1<<WGM01)//выбираем режим БЫСТРЫЙ ШИМ (FAST PWM) | (1<<COM0A1) | (1<<COM0A0);//выбираем ножку OC0A, устанавливаем на ней 0 при совпадении с регистром OCR0A, //устанавливаем в 1 наверху (OCR0A = 255) TCCR0B |= (1<<CS02); //настройка предделителя ШИМ на 256, частота ШИМ равна 31250 Гц = 31,25 кГц OCR0A = 255; //по умолчанию светодиод полностью погашен } Это помогло, но только в том плане, что в Протеусе пропали "иголки", я со спокойной душой собрал схему "в железе" и с огорчением обнаружил, что в реальности светодиод не гаснет до конца. Вольтметр на ножке PB2 (OC0A), в состоянии когда транзистор должен быть полностью закрыт, показывает напряжение 1,6 мВ (а должно быть ровно 0 В, как я понимаю?) относительно общего минуса. А напряжение, если плюсовой щуп поставить на +12В, а минусовой щуп на сток транзистора показывает 7,09 В. Поэтому я решил что проблема моя не в прошивке, а в схеме устройства. Получается что транзистор закрывается не до конца при установке ШИМ в первом случае OCR0A = 0 и OCR0A = 255 во втором. Внимание вопрос: как мне посредством ШИМ полностью закрыть n-канальный полевой транзистор и тем самым полностью погасить светодиод? Возможно ли с помощью ШИМ до конца закрыть транзистор? Заранее спасибо! Изменено 15 ноября, 2018 пользователем -=FISHER=- 0 Мы все учились по-немногу, чему-нибудь и как-нибудь... Ссылка на комментарий Поделиться на другие сайты Поделиться
DrobyshevAlex Опубликовано 15 ноября, 2018 Поделиться Опубликовано 15 ноября, 2018 Почему просто не перевести ногу в выход когда светодиод нужно выключить? То есть ШИМом гасите а потом просто порт на 0. Ну хотя бы потому что прерывания с другими прерываниями могут бороться за время и это я думаю уже может повлиять на промежутки между поддержкой 0 на выводе таймера. Ну и на сколько я знаю полевым транзистором управлять напрямую с МК плохо, я буквально на днях подключал полевик всего на 2 ампера смд, и то сомневался после всех этих статей что нашел)) То есть есть вероятность спалить мк пишут, к тому же если на открытие транзистора подавать 5 вольт то он через себя пропустит меньше до 2х раз, + почему то там потери из за сопротивления Вообщем нужно или драйвер добавить для полевика специальный или 2-мя биполярными управлять им, можно одним, схем полно в гугле по запросу "полевой транзистор atmega". Но не знаю на сколько точна эта инфа 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Berg Опубликовано 15 ноября, 2018 Поделиться Опубликовано 15 ноября, 2018 39 минут назад, -=FISHER=- сказал: Получается что транзистор закрывается не до конца 1.6мВ не должен открыть мосфет Можно замерить сопротивление сток - исток. Мож флюс или еще какая хрень попалась. Вообще инвертирование com должно было помочь, но "иголки" останутся, т.е. шим будет не полные 100% Можно выставлять на пине соответствующий уровень в нужный момент, и до кучи остановить таймер. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
ARV Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 11 час назад, -=FISHER=- сказал: А напряжение, если плюсовой щуп поставить на +12В, а минусовой щуп на сток транзистора показывает 7,09 В. А сколько вы ожидали там увидеть? У вас же сток подперт питание +5В, следовательно, 12-5=7. Что вольтметр и показывает. Да и полевик мощноватый для прямого управления, как мне кажется. Мощнее IRLML2401 я бы не посоветовал напрямую от ножки МК шимить (правда, опыта личного нет - теоретические измышления). Хотя к теме статически запертого состояния транзистора это отношения не имеет. 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
-=FISHER=- Опубликовано 16 ноября, 2018 Автор Поделиться Опубликовано 16 ноября, 2018 54 минуты назад, ARV сказал: (правда, опыта личного нет - теоретические измышления). Хотя к теме статически запертого состояния транзистора это отношения не имеет. Хорошо, а тогда теоретически можно ли погасить светодиод, закрыть транзистор полностью средствами ШИМ? Почему же присутствует паразитное свечение?... 12 часа назад, Berg сказал: Можно замерить сопротивление сток - исток. Мож флюс или еще какая хрень попалась При обесточенном устройстве?.. 0 Мы все учились по-немногу, чему-нибудь и как-нибудь... Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey-Ufa Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 Если светодиод светится лишь чуть чуть , то скорее всего это из-за тока утечки закрытого транзистора. У мощных полевиков он может достигать нескольких десятков микроампер. При таком токе светодиод уже начинает подсвечивать. Зашунтируйте светодиод резистором 0,5-1 ком и посмотрите, что получится. 13 часа назад, -=FISHER=- сказал: ножке PB2 (OC0A), в состоянии когда транзистор должен быть полностью закрыт, показывает напряжение 1,6 мВ (а должно быть ровно 0 В, как я понимаю?) относительно общего минуса. никогда чистого нуля не будет 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 Только что, -=FISHER=- сказал: Хорошо, а тогда теоретически можно ли погасить светодиод, закрыть транзистор полностью средствами ШИМ? Почему же присутствует паразитное свечение? Что значит "погасить теоретически"? Да они ПРАКТИЧЕСКИ гасятся в миллионах изделий! Как всегда, надо отсечь неизвестное, прежде чем бороться с ситуацией. Отсоедините от вывода МК резистор R1 - светодиод будет подсвечиваться? Если будет - транзистор не годный, меняйте. Ну а если не будет - будем думать дальше. Только что, Sergey-Ufa сказал: никогда чистого нуля не будет Чистый и не нужен - "логический" полевик имеет отсечку примерно 2 вольта, все, что меньше, для него "ноль" по сути. 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
Sergey-Ufa Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 12 минуты назад, ARV сказал: логический" полевик имеет отсечку примерно 2 вольта Спасибо, просветили. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 Я не вас просвещал, а топикстартера, которого вы хотели напугать отсутствием нуля 1 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
Berg Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 26 минут назад, -=FISHER=- сказал: При обесточенном устройстве?.. Да. А какой ток на нагрузке? Подсвечивается только контрольный светодиод или нагрузка тоже? R7 не обоснованно низкое сопротивление (470-1к). Я вон сейчас взял светодиод (3мм), держу пальцами, не важно за анод или катод, и вторым выводом касаюсь: общий вывод аудио колонок, общий вывод монитора, корпус светильника, и светодиод слегка светится, а если коснуться корпуса ЛБП то вообще ярко 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
-=FISHER=- Опубликовано 16 ноября, 2018 Автор Поделиться Опубликовано 16 ноября, 2018 1 час назад, ARV сказал: Чистый и не нужен - "логический" полевик имеет отсечку примерно 2 вольта, все, что меньше, для него "ноль" по сути. Выходит если все компоненты исправны, то свечения быть не должно? 1 час назад, Sergey-Ufa сказал: Зашунтируйте светодиод резистором 0,5-1 ком и посмотрите, что получится. Зашунтировал отладочный светодиод резистором 1 кОм, теперь он гаснет полностью, а если я нагрузку тоже зашунтирую и она перестанет подсвечиваться, будет ли это грамотным решением моего вопроса? 0 Мы все учились по-немногу, чему-нибудь и как-нибудь... Ссылка на комментарий Поделиться на другие сайты Поделиться
snn_krs Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 В руководстве по МК написано Quote If the OCR0A is set equal to BOTTOM, the output will be a narrow spike for each MAX+1 timer clock cycle. тоесть короткие импульсы будут присутствовать обязательно. Используйте Phase Correct PWM Mode в этом режиме не должно быть подсвечивания. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
musa56 Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 22 минуты назад, -=FISHER=- сказал: будет ли это грамотным решением моего вопроса? Грамотным будет поставить хотя бы простейший драйвер на паре транзисторов . У полевиков достаточно большая емкость затвора и у контролера просто нехватает мощности чтобы быстро переключить полевик. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
-=FISHER=- Опубликовано 16 ноября, 2018 Автор Поделиться Опубликовано 16 ноября, 2018 12 минуты назад, snn_krs сказал: короткие импульсы будут присутствовать обязательно. Но такой скважности не должно хватить чтобы открыть полевик 0 Мы все учились по-немногу, чему-нибудь и как-нибудь... Ссылка на комментарий Поделиться на другие сайты Поделиться
ARV Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 (изменено) Только что, -=FISHER=- сказал: Зашунтировал отладочный светодиод резистором 1 кОм, теперь он гаснет полностью Нормальный подход. Когда у вас капает кран в ванной, вы тоже губку на дно ванны подкладываете, чтобы не слышать капание? Изменено 16 ноября, 2018 пользователем ARV 0 Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют... Ссылка на комментарий Поделиться на другие сайты Поделиться
Armenn Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 (изменено) 15 hours ago, -=FISHER=- said: тем самым полностью погасить светодиод? А если затвор пинцетом на землю, светится? Изменено 16 ноября, 2018 пользователем Armenn 0 Избегайте тех, кто старается подорвать вашу веру в себя. Эта черта свойственна мелким людям. Великий человек, наоборот, внушает чувство, что вы можете стать великим. (Марк Твен) Ссылка на комментарий Поделиться на другие сайты Поделиться
snn_krs Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 14 minutes ago, -=FISHER=- said: Но такой скважности не должно хватить Открывает не скважность а амплитуда импульса ( 5В ) и длительность импульса. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
-=FISHER=- Опубликовано 16 ноября, 2018 Автор Поделиться Опубликовано 16 ноября, 2018 2 часа назад, ARV сказал: Нормальный подход. = не нормальный?) 0 Мы все учились по-немногу, чему-нибудь и как-нибудь... Ссылка на комментарий Поделиться на другие сайты Поделиться
fuckir Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 7 часов назад, musa56 сказал: Грамотным будет поставить хотя бы простейший драйвер на паре транзисторов . У полевиков достаточно большая емкость затвора и у контролера просто нехватает мощности чтобы быстро переключить полевик. Ну.. "большая" - понятие растяжимое.. Если 460 с емкостью более 4 тыр и зарядом за 2 сотни, то да..(это все про гейт). А тысяча пФ на сотнях кГ ворочается на ура. 0 В поисках работы.. Looking for job Ссылка на комментарий Поделиться на другие сайты Поделиться
-=FISHER=- Опубликовано 16 ноября, 2018 Автор Поделиться Опубликовано 16 ноября, 2018 (изменено) Господа, наконец-то добрался до паяльника, ситуация следующая: 11 час назад, ARV сказал: Отсоедините от вывода МК резистор R1 - светодиод будет подсвечиваться? Ничего не изменилось, светодиоды нагрузки и отладки всё так же еле-еле святятся. В 15.11.2018 в 23:17, Berg сказал: Можно замерить сопротивление сток - исток. Когда впаян то 6,2 кОм, а если снять и мерить на столе, то мультиметр показывает обрыв. 9 часов назад, Armenn сказал: А если затвор пинцетом на землю, светится? Всё равно светится. Ваши выводы? Косяк на плате? Но слишком уж четко, ровно 6.2 кОм, если снять мосфет, то показания при замере на контактных площадках стока и истока не меняются.... Если снимаю R7 то мультиметр и на плате начинает показывать обрыв... Изменено 16 ноября, 2018 пользователем -=FISHER=- 0 Мы все учились по-немногу, чему-нибудь и как-нибудь... Ссылка на комментарий Поделиться на другие сайты Поделиться
-=FISHER=- Опубликовано 16 ноября, 2018 Автор Поделиться Опубликовано 16 ноября, 2018 В общем господа, видимо был косяк на плате. Сейчас снял шунт у отладочного светодиода и все светодиоды стали тухнуть до конца))) всем спасибо простите мою глупость пожалуйста 0 Мы все учились по-немногу, чему-нибудь и как-нибудь... Ссылка на комментарий Поделиться на другие сайты Поделиться
Sstvov Опубликовано 16 ноября, 2018 Поделиться Опубликовано 16 ноября, 2018 Через паршивый флюс утечка? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
-=FISHER=- Опубликовано 17 ноября, 2018 Автор Поделиться Опубликовано 17 ноября, 2018 11 час назад, Sstvov сказал: Через паршивый флюс утечка? Видимо была "сопля" 0 Мы все учились по-немногу, чему-нибудь и как-нибудь... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.