Поиск сообщества
Показаны результаты для тегов 'ШИМ'.
Найдено: 91 результат
-
Прошу помощи сообщества в решении такой проблемы. Имеем Attiny13 задачей которой стоит формирование ШИМ сигнала, скважность задаём состояние входов PB4 PB3 PB2. Загвоздка в том, что не могу заставить тиньку сменить скважность, несмотря на то, что на прерывание по состоянию входов реагирует, значения в OCR0A заносит. Маленькое замечание в железе не делал, только в Proteus. Код: #define F_CPU 9600000 #include <avr/io.h> #include <avr/eeprom.h> #include <avr/interrupt.h> volatile bool SetMode_flag = false; volatile char Select_Mode = 0; //------------------------------------------------- void PWM_init() { //Порты PB0 и PB1 устанавливаем на выход, остальные на вход DDRB = 0b00000011; //Входные порты PINB0 и PINB1 в HIGH, остальные в Pull-UP PORTB = 0b00111111; //Разрешаем прерывания PCINT1 - по изменению вывода GIMSK |= (1<<PCIE); //Накладываем маску на выводы PCMSK |= (1<<PINB4) |(1<<PINB3) |(1<<PINB2); //Запрещаем все прерывания пo совпадению и переполнению TIMSK0 = 0x00; //Устанавливаем режим работы таймера в режиме ШИМ с фазовой коррекцией TCCR0A |= (1<<COM0A1) |(1<<COM0B1) |(0<<WGM01) |(1<<WGM00); TCCR0B |= (1<WGM02); //Предделитель частоты уставливаем clk\1024 или приблизительно 18Гц // Fclk_I/O //Fpcpwm = -------- (N предделитель 1, 8, 64, 256, 1024) // N *510 TCCR0B |= (1<<CS02) |(0<<CS01) |(1<<CS00); //Обнуляем счётный регистр TCNT0 = 0x00; } //------------------------------------------------- ISR (PCINT0_vect) { SetMode_flag = true; // Устанавливаем флаг события Select_Mode = (PINB >> 2); //Сохраняем значение со сдвигом младших разрядов } //------------------------------------------------- int main(void) { PWM_init(); sei(); while (1) { if (SetMode_flag) { switch ( Select_Mode ) { case 0: OCR0A = 0; break; // ШИМ выключен case 1: OCR0A = 40; break; //Скважность 15% case 2: OCR0A = 80; break; //Скважность 30% case 3: OCR0A = 120; break; //Скважность 45% case 4: OCR0A = 150; break; //Скважность 60% case 5: OCR0A = 180; break; //Скважность 75% case 6: OCR0A = 210; break; //Скважность 90% case 7: OCR0A = 255; break; //Включен постоянно default: break; } SetMode_flag = false; //Сбрасывем флаг } } } main.cpp PWM neew.pdsprj
-
Этот ШИМ генератор мне предоставил на обзор магазин ICstation (ссылка на генератор) Фото генератора. Что может этот генератор? Взглянем на параметры. Рабочее напряжение: 3.3 - 30V; Частота генерации: 1Hz - 150KHz; Точность генерации частоты: 2%; Мощность нагрузки: 5…30mА; Амплитуда выходного сигнала равна напряжению питания; Температура окружающей среды: -20 … +70 °С. На дисплей можно вывести только 2 числа по 3 цифры в каждом. В нижней строке отображается скважность ШИМ в процентах, а в верхней – частота. Частота выводится на дисплей по следующим правилам: XXX, шаг в 1Гц, в диапазоне 1 – 999Гц; X.XX, шаг в 0.01кГц, в диапазоне 1.00 - 9.99кГц; XX.X, шаг в 0.1кГц; в диапазоне 10.0 - 99.9кГц; X.X.X, шаг в 1 кГц; в диапазоне 100 - 150 кГц. Дисплей управляется микросхемой HT1621B, дисплей универсальный, на нем имеются символы, необходимые для построения термометра, гигрометра, вольтметра, амперметра и ваттметра, но в нашем случае они не используются. Дисплей имеет яркую синюю подсветку. К слову, замечу, что дисплей на моем генераторе оказался потертым, будто его откуда-то сняли. Так же отсутствовала защитная пленка на дисплее. Главной микросхемой генератора является микроконтроллер STM8S003F3P6. И поскольку этот микроконтроллер имеет EEPROM память, то настройки сохраняются при выключении. Управлять генератором можно двумя способами: кнопками и по UART. С кнопками всё ясно, одна пара кнопок управляет частотой, вторая скважностью. А вот с UART всё намного интереснее. Обмен данными должен происходить со следующими параметрами: 9600 bps Data bits: 8 Stop bit: 1 Check digit: none Flow control: none Для того что бы установить частоту генерации, необходимо отправить частоту так, как она отображается на дисплее прибавив перед значением частоты букву F. Например, для установки частоты в 100 Гц необходимо отправить F100, для 105 кГц - F1.0.5, для 10.5 кГц - F10.5 и так далее. Для установки скважности необходимо отправить трехзначное число скважности добавив перед ним букву D . Например, D050, D100, D001. Что бы прочитать установленные параметры, необходимо отправить слово "read". Если отправлена верная команда, то генератор ответит DOWN, если ошибочная – FALL. Но есть одно НО, я так и не смог настроить работу с генератором через UART. Я решил проверить генератор при помощи логического анализатора. Вот что получилось. Частота 1 Гц, скважность 1%. Как видим погрешность пока небольшая. Частота 1 Гц, скважность 50%. Частота 1 Гц, скважность 99%. Частота 1 кГц, скважность 1%. Частота 1 кГц, скважность 50%. Частота 1 кГц, скважность 99%. Тут мы видим, что при установленных 99% скважности на самом деле заполнение составляет 100%. Частота 1 кГц, скважность 91%. Я начал снижать скважность, и вплоть до 92% заполнение составляло 100%, и только при 91% ситуация исправляется. Частота 50 кГц, скважность 1%. Как видим что тут всего 0,2% вместо 1%. Частота 50 кГц, скважность 50%. Здесь отличается на -1%. Частота 50 кГц, скважность 99%. И тут снова отклонение -1%. Частота 100 кГц, скважность 1%. А вот тут ещё ничего нет. Частота 100 кГц, скважность 2%. А при 2% сигнал появляется, но на самом деле заполнение 0,4%. Частота 100 кГц, скважность 50%. Отклонение почти -2%. Частота 100 кГц, скважность 99%. И тут почти -1%. Частота 150 кГц, скважность 1%. Снова нет сигнала. Частота 150 Гц, скважность 3%. И появляется сигнал только при 3%, но заполнение составляет 0,6%. Частота 150 кГц, скважность 50%. Но на самом деле заполнение 46,5%, на -3,5% уже отличие. Частота 150 кГц, скважность 99%. И тут отличается, но всего -1,5%. Выборка достаточно грубая, но на этом исследования не закончены. Я решил измерить скважность при различном заполнении (шаг 5%) и на различных частотах (шаг 25000 Гц) и занести их в таблицу. Верхняя строка содержит частоту, я выбрал шаг в 25 кГц, левый столбец – установленная скважность, в остальных ячейках замеренная скважность. В этой таблице указана разница между установленной и замеренной скважности. Чем выше частота, тем больше отклонение между установленным и замеренным значениями. Так же замеренная скважность всегда ниже установленной, но строгой закономерности в отклонении не наблюдается. Так же я проверил соответствие установленной и замеренной частоты. Результат так же занес в таблицу. Заявленная точность в 2% от установленной частоты соблюдается. В итоге, если вам необходимо установить точные значения генерации, то проверяйте установленные параметры перед использованием генератора. Если же необходимо просто управлять яркостью светодиода или скоростью вращения двигателя, то этот генератор без проблем подойдет для этих задач.
-
Доброго времени суток. Имеется: 1. RGB LED лента 12 метров, 11,4вт/м. 2.Импульсный блок питания JC12-240-12. Входное напряжение 170-240В, выходное 10-15В (регулируется), 20А. 3. китайский LED - контроллер, собранный на ШИМ регуляторе LM2576S - 3.3. Управление осуществляется через приложение, подключение - по WiFi. При подключении ленты через контроллер - блок питания начинает сильно пищать и заметно нагреваться. Если снизить яркость - писк становится тише. Залил дроссель эпоксидкой - не помогло. Помимо дросселя в БП установлены трансформатор и две катушки индуктивности. Кажется, этот ансамбль и издает этот противный писк. Пробовал добавить на выход БП керамические конденсаторы разной емкости (47 пФ, 47 нФ, 10пФ и т.д.) - не дало никакого результата. Как я понимаю это проблема возникает именно из-за ШИМ модуляции. и частота с которой пищит БП и есть частота работы ШИМ. Если подключать ленту напрямую - никакого писка нет. без нагрузки БП также ведет себя тихо. Подскажите, как проще всего избавиться от этого писка?
-
Здраствуйте. Мне нужен шим регулятор на полуавтомат , двигатель подачи проволоки напряжение 80v 1.5А 30W. Может кто подскажет какую то несложную схему. Буду очень благадарен.
-
Помогите собрать схему Преобразователь код-ШИМ. На входе 2-х разрядный код, который определяет коэффициент заполнения по следующему правилу: 00 0% 01 33% 10 66% 11 100% Сделал делитель частоты на 3 на основе двух D-триггеров, но не могу додуматься, как проссумировать сигналы...
-
Здравствуйте, давно читаю форум, зарегистрировался только сегодня, хочу попросить советов у вас для очередной работы. 1. Мощность 30 кВт, напряжение 2 кВт, 15 А ток. 2. Планирую полумост; вопросы: 1. Шим контроллер должен поддерживать регулировку к.заполнения, с заданным dU/dT, это планирую делать с МК, потому что в случае пробоя быстроействуюий ключ даст сигнал об остановке преобразователя, потом будет строб, потом пуск источника, при этом он должен выйти на напряжение на котором произошла остановка работы с более коротким (быстрее) dU/dT, это можно реализовать с МК, завести сигнал с датчика КЗ. При этом нужна регулировка напряжение и регулировка уставки максимального тока(в приципе в схеме защиты от КЗ она уже реализована) 2. Полумоста хватит на такую мощность? 3. Можно ли с помощью софта рассчитать трансформатор на такие характеристики? Lite_calcIT не осилил такую задачу. 4. 1 трансформатор или набор модулей соединенных последовательно для обеспечения нужного напряжения? 5. Ткните носом в краткую но понятную ветку/статью о резонансных и квазирезонансных и других типах схем, т.к. я недостаточно в этом подкован, немного другие интересы, однако. Заранее спасибо!
-
ДОброго времени суток. Почему при регуляции ШИМе на ne555 при подключении нагрузки в виде любого мотора слышен писк от моторов который проходит, когда ключ полностью открыт. То есть, при значениях в процентном соотношении открытости ключа в виде rf540 равном 0-80% слышен нарастающий писк, потом движок входт в "безписковый" режим.
-
Всем доброго дня ! Ребята, имеется грозовой телек , с блоком питания , построенный на ШИМ ssc9512s , и дежурка на tny274 , тк вот -дежурку я воскресил , а вот с основным ШИМом проблема , его сложно найти , отсюда и хотел спросить возможно ли его заместить другим ШИМом . . . например tl494 ? ? ? Ещё в проблема в том , что не известны характеристики ssc9512 в даташите всё пусто . . . неизвестна рабочая частота и т. д. , Сам ШИМ питается от дежурки 13Вольт SSC9512S.pdf tl494.pdf
-
Доброго времени суток! Подскажи, будьте любезны. Посоветуйте шим контроллер на подобии sg3525, чуть по-проще и только с одним выходом, желательно в корпусе на 8 пин.
-
Atmega8 2 ШИМ и прерывание по таймеру для чтения DS18B20
balistik опубликовал тема в МК для начинающих
Всем доброго времени суток. Я реальный нуб в ATMEGA. Могу более-менее понять чужой код и из кусков сделать целое. Вопрос такой: реально ли на ATMEGA8 сделать 2 ШИМ (таймер 1 и2) и внутреннее прерывание (по таймеру 0) для чтения данных с DS18B20 на 8Мгц чтобы еще осталось на опрос кнопок и небольшую логику? Я выложу пример кода. По отдельность: ШИМ, прерывания, логика, запись в ЕПРОМ работает. Собираю все вместе - не работает. Пробовал в Протеусе, тоже глючит, да и протеус тормозит. Может кто чего подскажет. //#define F_CPU 8000000UL // устанавливаем рабочую частоту контроллера #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/eeprom.h> #include "ds18x20.h" #include "onewire.h" #define MAXSENSORS 1 unsigned int tempint = 0; // переменная для целого значения температуры unsigned int subzero = 0; // переменная отрицательных значений температуры unsigned int clock = 0; //задержка для опроса датчика температуры unsigned int termo_error = 0; //флаг ошибки термодатчика unsigned char regim, R1_SHIBER, R1_VENT, R2_SHIBER, R2_VENT, R3_SHIBER, R3_VENT; //переменные режимов работы volatile char press = 0, pr = 0, pr1 = 0, set = 0; //дополнительные переменные для кнопок #define SHIBER_PB 1 //шибер подачи топлива #define SHIBER_PWM OCR1A #define VENT_PB 2 //вентилятор подачи воздуха #define VENT_PWM OCR1B #define LED1_ON PORTD |= _BV(PD3) // светодиод режим 1 #define LED1_OFF PORTD &= ~_BV(PD3) #define LED2_ON PORTD |= _BV(PD4) // светодиод режим 2 #define LED2_OFF PORTD &= ~_BV(PD4) #define LED3_ON PORTD |= _BV(PD6) // светодиод режим 3 #define LED3_OFF PORTD &= ~_BV(PD6) #define LED4_ON PORTD |= _BV(PD7) // светодиод 4 программирование #define LED4_OFF PORTD &= ~_BV(PD7) #define BUT_M PIND & (1 << PD1) // кнопка MENU #define BUT_U PIND & (1 << PD2) // кнопка UP #define BUT_D PIND & (1 << PD0) // кнопка DOWN unsigned char eep1 EEMEM; // режим работы unsigned char eep2 EEMEM; // режим 1 ШИМ вентилятор unsigned char eep3 EEMEM; //режим 1 ШИМ шибер unsigned char eep4 EEMEM; // режим 2 ШИМ вентилятор unsigned char eep5 EEMEM; // режим 2 ШИМ шибер unsigned char eep6 EEMEM; // режим 3 ШИМ вентилятор unsigned char eep7 EEMEM; // режим 3 ШИМ шибер unsigned char eep8 EEMEM; // флаг первого запуска uint8_t Temperature, szero; //-255 uint8_t nSensors, j; uint8_t cel_frac_bits; uint8_t gSensorIDs[MAXSENSORS][OW_ROMCODE_SIZE]; uint8_t search_sensors(void) // поиск DS18B20 { uint8_t i; uint8_t id[OW_ROMCODE_SIZE]; uint8_t diff, nSensors; nSensors = 0; for( diff = OW_SEARCH_FIRST; diff != OW_LAST_DEVICE && nSensors < MAXSENSORS ; ) { DS18X20_find_sensor( &diff, &id[0] ); if( diff == OW_PRESENCE_ERR ) { Temperature = 255; szero = 1; break; } if( diff == OW_DATA_ERR ) { Temperature = 255; szero = 1; break; } for (i=0; i<OW_ROMCODE_SIZE; i++) gSensorIDs[nSensors][i]=id[i]; nSensors++; } return nSensors; } void get_temp(int sensor){ // получаем температуру с датчиков DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); j = gSensorIDs[0][sensor]; // family-code for conversion-routine if (DS18X20_read_meas_single(j, &szero, &Temperature, &cel_frac_bits) != DS18X20_OK) { //если не прочиталось то -255 Temperature = 255; szero = 1; } if (DS18X20_read_meas_single(j, &szero, &Temperature, &cel_frac_bits) != DS18X20_OK) { //если не прочиталось то -255 Temperature = 255; szero = 1; } tempint=(int)Temperature; subzero=(int)szero; } void pin_init(void) { //инициализация портов ШИМ DDRB |= (1<<SHIBER_PB) | (1<<VENT_PB); PORTB &= ~((1<<SHIBER_PB) | (1<<VENT_PB)); } void timer0_init(void) { //инициализация таймера для термодатчика TCCR0 |= (1<<CS00); TIMSK |= ( 1 << TOIE0); TCNT0 = 0xFF; } void timer1_init(void) { //инициализация таймера ШИМ шибера TCCR1A |= (1 << COM1A1) | (1 << COM1B1) | (1 << WGM11); TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS10); TCNT1 = 0x00; ICR1 = 0xFF; OCR1A = 0x00; OCR1B = 0x00; } void timer2_init(void) { //инициализация таймера ШИМ вентилятора TCCR2 |= (1 << COM21) | (1 << WGM21) | (1 << WGM20) | (1 << CS20); TCNT2 = 0x00; OCR2 = 0x00; } ISR(TIMER0_OVF_vect){ //прерывание таймера 0 для термодатчика if (clock != 4294967295){_delay_us(50);clock++;}else{get_temp(0);clock=0;} } //***************** обработка нажатия кнопок ********************** void buttons(){ if(~BUT_U){if(set == 0)pr++; // кнопка UP if(pr == 10){ // долгое нажатие } _delay_ms(100); }else{ if(pr >= 1 && pr < 10){ // короткое нажатие regim++; if (regim>3){regim=0;} eeprom_write_byte(&eep1, regim); // сохранение настройки в eeprom set = 0; pr = 0; } pr = 0; } if(~BUT_D){if(set == 0)pr1++; // кнопка DOWN if(pr1 == 10){ // длинное нажатие } _delay_ms(100); }else{ if(pr1 >= 1 && pr1 < 10){ // короткое нажатие. //set = 20; regim--; if (regim<0){regim=3;} eeprom_write_byte(&eep1, regim); // сохранение настройки в eeprom _delay_ms(100); set = 0; pr1 = 0; } pr1 = 0; } if(~BUT_M){ // кнопка MENU press++; if(press == 1 && set != 0){set++;} // переход по настройкам if(press >= 100 && set == 0){set = 1; _delay_ms(200);} // ход в настройки if(set == 1) eeprom_write_byte(&eep2, R1_VENT); if(set == 2) eeprom_write_byte(&eep3, R1_SHIBER); if(set == 3) eeprom_write_byte(&eep4, R2_VENT); if(set == 4) eeprom_write_byte(&eep5, R2_SHIBER); if(set == 5) eeprom_write_byte(&eep6, R3_VENT); if(set == 6) eeprom_write_byte(&eep7, R3_SHIBER); if(set > 6){ _delay_ms(100); set = 0; press = 0;} // если включена настройка даты, }else{ if(set == 0 && press >= 1){ // если не вошли в настройки regim++; if (regim>3){regim=0;} eeprom_write_byte(&eep1, regim); // сохранение настройки в eeprom } press = 0; } } //*****************режим настроек******************** void settings(){ //визуальное подтверждение настроек if(press >= 1 && set == 1) { LED1_ON; LED2_OFF; LED3_OFF; LED4_ON; SHIBER_PWM = R1_VENT;} //ШИМ шибер 0-255 if(press >= 1 && set == 2) { LED1_ON; LED2_OFF; LED3_OFF; LED4_ON; VENT_PWM = R1_SHIBER;} //ШИМ вентилятор 0-255 if(press >= 1 && set == 3) { LED1_OFF; LED2_ON; LED3_OFF; LED4_ON; SHIBER_PWM = R2_VENT;} //ШИМ шибер 0-255 if(press >= 1 && set == 4) { LED1_OFF; LED2_ON; LED3_OFF; LED4_ON; VENT_PWM = R2_SHIBER;} //ШИМ вентилятор 0-255 if(press >= 1 && set == 5) { LED1_OFF; LED2_OFF; LED3_ON; LED4_ON; SHIBER_PWM = R3_VENT;} //ШИМ шибер 0-255 if(press >= 1 && set == 6) { LED1_OFF; LED2_OFF; LED3_ON; LED4_ON; VENT_PWM = R3_SHIBER;} //ШИМ вентилятор 0-255 switch(set) // включена настройка { case 1: // настройка R1_VENT if(~BUT_U){R1_VENT++; if(R1_VENT > 254) R1_VENT = 0; _delay_ms(100);} if(~BUT_D){R1_VENT--; if((~BUT_D) && R1_VENT == 0) R1_VENT = 254; _delay_ms(100);} break; case 2: // настройка R1_SHIBER if(~BUT_U){R1_SHIBER++; if(R1_SHIBER > 254) R1_SHIBER = 0; _delay_ms(100);} if(~BUT_D){R1_SHIBER--; if((~BUT_D) && R1_SHIBER == 0) R1_SHIBER = 254; _delay_ms(100);} break; case 3: // настройка R2_VENT if(~BUT_U){R2_VENT++; if(R2_VENT > 254) R2_VENT = 0; _delay_ms(100);} if(~BUT_D){R2_VENT--; if((~BUT_D) && R2_VENT == 0) R2_VENT = 254; _delay_ms(100);} break; case 4: // настройка R2_SHIBER if(~BUT_U){R2_SHIBER++; if(R2_SHIBER > 254) R2_SHIBER = 0; _delay_ms(100);} if(~BUT_D){R2_SHIBER--; if((~BUT_D) && R2_SHIBER == 0) R2_SHIBER = 254; _delay_ms(100);} break; case 5: // настройка R3_VENT if(~BUT_U){R3_VENT++; if(R3_VENT > 254) R3_VENT = 0; _delay_ms(100);} if(~BUT_D){R3_VENT--; if((~BUT_D) && R3_VENT == 0) R3_VENT = 254; _delay_ms(100);} break; case 6: // настройка R3_SHIBER if(~BUT_U){R3_SHIBER++; if(R3_SHIBER > 254) R3_SHIBER = 0; _delay_ms(100);} if(~BUT_D){R3_SHIBER--; if((~BUT_D) && R3_SHIBER == 0) R3_SHIBER = 254; _delay_ms(100);} break; } } int main(){ /*******************************настройка переферии******************************/ cli(); ow_set_bus(&PIND, &PORTD, &DDRD, PD5); // иництализация протокола 1-wire nSensors = search_sensors(); // поиск датчиков DS18B20 DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); //включаем преобразование температуры pin_init(); //timer0_init(); timer1_init(); timer2_init(); _delay_ms(5); if(eeprom_read_byte(&eep8) != 1){ // читаем eeprom, если там мусор (первый запуск), пишем свои данные eeprom_write_byte(&eep1, 0); // режим работы eeprom_write_byte(&eep2, 150); // режим 1 ШИМ вентилятор eeprom_write_byte(&eep3, 100); //режим 1 ШИМ шибер eeprom_write_byte(&eep4, 200); //режим 2 ШИМ вентилятор eeprom_write_byte(&eep5, 150); //режим 2 ШИМ шибер eeprom_write_byte(&eep6, 230); //режим 3 ШИМ вентилятор eeprom_write_byte(&eep7, 200); //режим 3 ШИМ шибер eeprom_write_byte(&eep8, 1); // флаг первого запуска } //читаем настройки из памяти regim = eeprom_read_byte(&eep1); // читаем режим работы из eeprom R1_VENT = eeprom_read_byte(&eep2); // читаем режим 1 ШИМ вентилятор из eeprom R1_SHIBER = eeprom_read_byte(&eep3); //читаем режим 1 ШИМ шибер R2_VENT = eeprom_read_byte(&eep4); //читаем режим 2 ШИМ вентилятор R1_SHIBER = eeprom_read_byte(&eep5); //читаем режим 2 ШИМ шибер R3_VENT = eeprom_read_byte(&eep6); //читаем режим 3 ШИМ вентилятор R1_SHIBER = eeprom_read_byte(&eep7); //читаем режим 3 ШИМ шибер sei(); _delay_ms(5); /**********************************инициализация ШИМ*************************************/ while(1){ //if (tempint=255) {LED1_ON;LED2_OFF;LED3_ON;termo_error=1;} else {termo_error=0;}//выводим код ошибки датчика темппературы buttons();//обработик нажатия кнопок if (termo_error == 0){//блокировка по термодатчику if(set == 0) { //нормальный режим работы if (regim == 0){ //режим работы 0 LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF; SHIBER_PWM = 0; //ШИМ шибер 0-255 VENT_PWM = 0; //ШИМ вентилятор 0-255 } if (regim == 1){ //режим работы 1 LED1_ON; LED2_OFF; LED3_OFF; LED4_OFF; VENT_PWM = R1_VENT; //ШИМ вентилятор 0-255 if (tempint >=40) { //блокировка по температуре SHIBER_PWM = 0; //ШИМ шибер 0-255 }else{ SHIBER_PWM = R1_SHIBER; //ШИМ шибер 0-255 } } if (regim == 2){ //режим работы 2 LED1_OFF; LED2_ON; LED3_OFF; LED4_OFF; VENT_PWM = R2_VENT; //ШИМ вентилятор 0-255 if (tempint >=60) { //блокировка по температуре SHIBER_PWM = 0; //ШИМ шибер 0-255 }else{ SHIBER_PWM = R2_SHIBER; //ШИМ шибер 0-255 } } if (regim == 3){ //режим работы 3 LED1_OFF; LED2_OFF; LED3_ON; LED4_OFF; VENT_PWM = R3_VENT; //ШИМ вентилятор 0-255 if (tempint >=80) { //блокировка по температуре SHIBER_PWM = 0; //ШИМ шибер 0-255 }else{ SHIBER_PWM = R3_SHIBER; //ШИМ шибер 0-255 } } } }else{ SHIBER_PWM=0; VENT_PWM=0; } if(set != 0) settings();//вход в настройки } //return 0; } -
-
Добрый день Имеется мощный симистор ТС (вроде ТС122-25, на 40 А). С помощью него предполагается управлять мощным ТЭНом. В качестве регулятора будет Ардуина. Т.к. симистор коммутируется хорошим током и напряжением 220 В, то использую промежуточное звено - твердотельное реле на 2 А (вот такое: http://wiki.iarduino.ru/page/tverdotelnoe-rele-trema-modul/). Для предварительной проверки собрал простую схему, в которой управляю лампой накаливания. Скважность ШИМ формируется в зависимости от положения подключенного потенциометра. Собрал, запрограммировал. Все работает, но лампа офигенно мерцает (не мерцает только при нуле и при максимуме, что ожидаемо). Вот так примерно все это выглядит на видео: https://yadi.sk/i/6yF2iGSb3Lb66c) ШИМ Ардуины работает на 500 Гц. Вопросы: 1) Как я понимаю, проблема в том, что симистор открывается в нуле, а ШИМ сигнал не синхронизирован с переходом через ноль. Из-за этого выпадает часть импульсов. Есть ли какое-то простое решение этого вопроса в рамках существующей схемы? 2) Правильно ли я понимаю, что такое "мерцание" при управлении ТЭНом совершенно безвредно для ТЭНа и продолжительности его жизни? 3) Может ли быть проблема в том, что твердотельное реле не справляется с частотой или проблема полностью относится к п.1? Заранее спасибо!
-
Добрый день уважаемые! Требуется сделать формовку кирпича на заводе . Думаю как проще и не в ущерб качеству реализовать задачу . Так как времени дали очень мало. Нужно по двум энкодерам "нарезать" кирпич по размеру . Можно ли сделать ЦАП из ШИМ ? Кто делал такое? Или лучше все таки сделать на настоящем ЦАП ? К примеру mcp4921.
-
Здравствуйте! Пишу дипломную работу на тему "Повышения эффективности систем электропривода электротранспорта". Основная идея состоит в том что необходимо увеличить пробег электрокара. Решение проблемы это устранить низкочастотные колебательные токи в аккумуляторной батарее, которые приводят к более интенсивному разряду. Для их сглаживания предлагается установить между АБ и ШИМ преобразователем силовой фильтр. Однако это все только в теории. Подскажите как можно это реализовать на практике, какой ШИМ преобразователь и фильтр для этого можно подобрать? Мощность двигателя и емкость аккумулятора не важна главное показать сам принцип, на примере моделирования.
- 25 ответов
-
- шим
- электродвигатель
-
(и ещё 2 )
C тегом:
-
Разбираюсь с микросхемой UC3825. Есть работающая схема контроля скважности выходного сигнала переменным резистором, подключенным к ноге 8. Приложена к посту Задался целью управлять этой микросхемой не переменным резистором, а с помощью ШИМ от 5в микроконтроллера. Насколько я понял по даташиту UC3825 может работать по току и по напряжению и теоретически это возможно. Есть ли кто ни будь, кто хорошо разбирается в функционале это микрухи? Как можно подключить к ней МК и будет ли она работать от входного ШИМ сигнала, частотой скажем 1кГц?
- 8 ответов
-
- микроконтроллеры
- шим
-
(и ещё 3 )
C тегом:
-
Помогите со схемой или может есть специальные микросхемы для этого. Задача такова, при подаче короткого сигнала 3-5 В выключатель должен включать низковольтную цепь, а при повторной подаче сигнала отключать эту цепь. Только импульсы от контроллера будут короткие, он не может постоянно подавать сигнал.
-
Возможно ли оперативно регулировать частоту импульса в ШИМ регуляторе? А именно: заменить соответствующий конденсатор на конденсатор переменной емкости? Есть ли еще варианты? Спасибо.
-
Добрый день. Возник тут такой вопрос, а с помощью какого инструмента можно понизить среднюю точку с какого-то значения до нуля. Объясню: к примеру у меня есть ШИМ( или треугольный сигнал, или синусовый) , где значение изменяется от 0 до 10 вольт, а мне нужно снизить и сделать от -5 до +5, но ровно такой же сигнал. Спрашиваю тут, потому что не смог правильно сформулировать и найти в гугле и в технической библиотеке)
-
Помогите начинающему разобраться. Цель совместить повышающий преобразователь и управление нагрузкой с помощью микроконтроллера. Написал простенькую прогу для attiny45. На одну ногу подал ШИМ сигнал на вторую подается высокий уровень по нажатию кнопки. С управлением нагрузкой проблем нет. Подал 5В на полевик и пошло питание нагрузки. А вот с преобразованием много вопросов. Напряжения для режима насыщения транзистора хватает, использую IRL540N.(Logical MOFSET). Максимальная частота ШИМ микроконтроллера(в моем случае) до 500Кгц Из теории построения Step Up DC-DC следует, что чем больше частота, тем меньше нужна индуктивность катушки(в разумных пределах). Даташит на транзистор. http://www.infineon.com/dgdl/irl540n.pdf?fileId=5546d462533600a40153565fbd752565 1) Но не могу понять, как рассчитать максимальную частоту ШИМ на которой транзистор не будет зависать в промежуточных положениях. Для того, что бы транзистор открылся/закрылся нужно перезаряжать емкости затвор-исток до напряжения управления и затвор-сток до напряжения на стоке, плюс еще в цепи будет катушка индуктивности и напряжение на стоке может быть сильно больше. 2) Практикуется последовательно с затвором ставить ограничивающий резистор, т. к. в момент переключения транзистора кратковременно текут большие токи. Вот этот момент тоже непонятен, насколько большие и, какой резистор ставить. Ведь, чем больше сопротивление резистора, тем меньше ток, следовательно тем больше время перезаряда паразитных емкостей мосфета... 3) В даташите указаны параметры, время включения, время выключения, время нарастания\падения фронта, время обратного восстановления и т. д. Как понимаю, они тоже влияют на быстродействия транзистора Если можно, объясните на пальцах, как это правильно рассчитать, хотя бы приблизительно, ну и, где почитать можно...
- 25 ответов
-
Добрый день. Мучает следующий вопрос: Как известно напряжение бывает Амплитудное, Действующие(оно же эффективное,RMS) и Среднее(средневыпрямленное). Так вот, при шим регулировании меняется коэффициент заполнения(D), и эффективное (RMS) напряжение находится как Um*√D а среднее как Um*D. Так вот, измерительные приборы показывают RMS значение(эффективное), и при 10В амплитуды и 50% D действующее напряжение должно быть: 10 * √0,5 = 7В, однако прибор и эмуляция показывают 5В, что есть среднее значение. Что я упустил?
-
ШИМ конвертер с 220 на 50 вольт.
--@lexxx-- опубликовал тема в Импульсные источники питания, инверторы
Добрый день. Нашел у себя в загашнике давно валяющиеся DC-DC модули, на 50 Вт, питание их нестандартное в пределах 36-75 вольт. Всего их 4, 2 с выходом 12В, а два с выходом 3,3 В. Выходы соединю последовательно для получения 30В. Поначалу была идея соединить их последовательно по входам (максимальное входное напряжение по дш - 80В), т.е 80*4=320В, поставить диодный мост, конденсатор и подавать на модули. Но быстро понял что будет перекос, так как разное выходное напряжение и скорее всего 12В модули быстро выйдут из строя, а может и вся гирлянда сразу. Так вот решил сделать шим преобразователь на UC3845 для получения 50 Вольт. А модули соединю паралельно. Схему набросал, она ниже. Вроде все работает, пробовал на разных нагрузках. Частота - 100 КГц. Но!! Есть один большой вопрос. Как и какой здесь применить снабер? Даже в протеусе видно что без него транзистору придет конец практически сразу. В точке соединения стока и дросселя выбросы намного выше его напряжения исток-сток. Пока поставил пару стабилитронов на 200 Вольт (супрессоров не нашел в протеусе), ситуация улучшилась, но теперь не знаю как понять какой ток будет на стабилитронах? Транзистор будет не IRF840, а FQP4N90 (4 ампера 900 вольт). (Гальваническая развязка есть у самих модулях) Я, конечно, понимаю, что установив трансформатор вместо дросселя, можно получить тот же результат на выходе, но цель применить имеющиеся модули. -
Прошу помощи у знающих людей собирал на макетной плате шим на ne555 все прекрасно работало. Попросил у знакомого вытравить мне печатную плату. Плату получил все собрал не работает хоть убей. Толи схема не правильная то ли что без понятия, но последнее время грешу на флюс, уж очень много он оставляет некрасивых следов и каперь на плате, разьедает радиодетали, убил им два хороших транзистора((( Посмотрите пожалуйста схему и плату, может я чего не правильно собрал? ШиМ со стаб вар 4.lay6
-
Уважаемые электронщики, прошу проверить схему подключения светодиодов к сети переменного тока 220 вольт. Поскольку это моя первая схема, ошибки наверняка есть. Цели, поставленные при разработке схемы: 1. Получить много света . 2. Обойтись без трансформатора. 3. Минимум деталей. (Навыки пайки не впечатляют.) 4. Управление яркостью - внешний ШИМ 5 вольт. Теперь очевидные вопросы: 1. В принципе схема работоспособна? Если нет, то можно ли заставить ее работать? Или проще выбросить и сделать все по другому? 2. Достаточно ли конденсатора для сглаживания пульсаций после моста? Или нужно добавить индуктивность/резистор/изменить ёмкость и т.д.? 3. Какова будет величина сглаженного напряжения? 220В? 315В? 370В? (И, следовательно, какой необходим номинал первого резистора в делителе?) 4. Вообще, приемлемо ли выбраны номиналы элементов? Прошу извинить за детские вопросы, но сам я ни разу не электронщик, а соответствующий курс в институте был больше 30 лет назад. Заранее благодарю за потраченные силы и время.
-
Добрый день. Есть несколько (6 шт) сервоприводов и генератор ШИМ на эти 6 машинок. Напряжение питания обоих +5В. Есть схема управления, питание +3.3В. Задача: необходимо уметь отсоединять сигнальные дорожки от серво к генератору. Для этого нашел такой переключатель: http://www.ti.com/lit/ds/symlink/sn74cb3t3245.pdf. Планируется его питать от 3.3В. Вопрос: можно ли использовать эту МС для коммутации при таких условиях? Как я понимаю, амплитуда ШИМ будет ~5В, не сгорит ли МС?
-
- коммутатор
- шим
-
(и ещё 1 )
C тегом:
-
Добрый день. На ногу МК извне подается ШИМ. По условию задачи этот ШИМ может иметь только две длительности высокого уровня - Т1 и Т2 мс (соответственно если измерить эти длительности, то это будет N1 и N2 отсчетов). Далее, если детектируется длительность T1, то нужно выполнять функцию func1, а если длительность T2 - то func2. Пример: пусть в начальный момент у нас МК детектирует T1. Далее пользователь что-то сделал (на переключатель нажал), длительность импульса стала T2. В этот момент надо, чтобы произошло прерывание. Снова пользователь нажал (вернул переключатель в начальное положение). Длительность стала снова T1. В этот момент надо, чтобы произошло прерывание. Если измерять ШИМ с помощью таймеров, то будет генерироваться прерывание. Таким образом основная программа будет выполняться прерывно, пока ШИМ вовсе не исчезнет. Можно ли как-нибудь детектировать длительность ШИМ где-нибудь в фоновом режиме, чтобы основная программа работала непрерывно? А если длительность вдруг изменится, то вот тут уже пусть сработает какое-нибудь прерывание.