Jump to content

Search the Community

Showing results for tags 'pwm'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Автомобильная электроника
    • Питание
    • Ремонт
    • Системы охраны и наблюдения. Личная безопасность
    • Роботы и модели на ДУ-управлении
    • Световые эффекты и LED
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Металлоискатели
    • Автоматика
    • Электрика
    • Промышленная электроника
    • Измерительная техника
    • Мастерская радиолюбителя
    • КВ и УКВ радиосвязь
    • Жучки
    • Сотовая связь
    • Спутниковое ТВ
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Схемотехника для профессионалов
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
  • Товары и услуги
  • Разное
  • Переделки's ATX->ЛБП
  • Переделки's разные темы
  • Киловольты юмора's Юмор в youtube

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Found 7 results

  1. Приветствую дорогое сообщество, прошу помощи в реализации проекта- дрифт трайка для детворы, а именно в создании контроллера для мотор-колеса управляемого с ардуино. Сам трайк я построил еще летом, и тогда использовал дешевый китайский контроллер для запуска двигателя, вот пробный заезд как видно из видео, мне необходимо отталкиваться чтобы стартануть, это происходит из за отсутствия датчиков холла, и мой вес ему трудно сдернуть с места чтобы потом понимать куда крутиться колесо и уже его дальше крутить. С того времени было решено построить свой контроллер для управления, а также был сделан апгрейд колеса и встроены датчики холла. Так как времени было всегда в обрез, занимался мало этим делом, но вот, праздники и можно малость поработать. Для начала подключил датчики холла к ардуине, убедился что прилетают все данные и написал простую программу по вращению колеса. Данная программа работает без проблем с моторчиком от сдрома - проверенно, прилагаю... //throttle const int analogInPin1 = 22; //hall input int hall_sensor_a = 7; int hall_sensor_b = 2; int hall_sensor_c = 4; //Motor setup const int a_motor_lout = 3; const int a_motor_pwm_hout = 9; const int b_motor_lout = 6; const int b_motor_pwm_hout = 11; const int c_motor_lout = 10; const int c_motor_pwm_hout = 5; void setup(){ // Serial.begin(9600); pinMode(a_motor_lout, OUTPUT); pinMode(a_motor_pwm_hout, OUTPUT); pinMode(b_motor_lout, OUTPUT); pinMode(b_motor_pwm_hout, OUTPUT); pinMode(c_motor_lout, OUTPUT); pinMode(c_motor_pwm_hout, OUTPUT); pinMode(hall_sensor_a, INPUT); pinMode(hall_sensor_b, INPUT); pinMode(hall_sensor_c, INPUT); } void loop(){ /* int A; A = 11111; Serial.println(digitalRead(7)); Serial.println(digitalRead(2)); Serial.println(digitalRead(4)); Serial.println(A); */ while(1){ int val = analogRead(analogInPin1); val = constrain(val, 211, 830); int thLevel = map(val, 211, 830, 50, 0); if ( thLevel <= 45){ // int thLevel = 0; delay(thLevel); if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ digitalWrite(a_motor_pwm_hout,1);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_lout,0); digitalWrite(b_motor_pwm_hout,0);digitalWrite(b_motor_lout,1);digitalWrite(c_motor_pwm_hout,0); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,0);digitalWrite(c_motor_lout,1); digitalWrite(b_motor_pwm_hout,0);digitalWrite(b_motor_lout,0);digitalWrite(a_motor_pwm_hout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==1){ digitalWrite(c_motor_pwm_hout,0);digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0); digitalWrite(b_motor_pwm_hout,1);digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_pwm_hout,0);digitalWrite(a_motor_lout,1); digitalWrite(b_motor_lout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_pwm_hout,1);digitalWrite(c_motor_lout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,1);digitalWrite(b_motor_pwm_hout,0); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,1);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,1); delay(thLevel);} }}}}} } else{ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,0); }}} далее имеются в руках только N-channel мосфеты STP75NF75 которые решил завести с помощью драйвера HIP4086 нарисовал схему, вытравил плату, так как не очень удобно было к его ногам прицепиться(хотя пытался), пытаюсь запустить, а он не подает жизни :(. На двух выходах драйвера к мосфетам всегда высокий уровень(+12), и что бы я не подавал на входы, все молчит. Ранее когда пытался завести похожее но на базе транзисторов, то хоть мотор ногами дергал, но не крутился, а сейчас вообще тишина. Ни мосфеты, ни другие элементы на плате не греются. Не могу ума приложить что не так тут и как проверить еще... Буду признателен за любые комментарии.
  2. Одним из существенных недостатков обратноходовых AC/DC, а также DC/DC преобразователей (в качестве примера - UCx84x, MC34063 и т.п.), является ключевой режим их работы, когда по достижению выходным напряжением номинального значения, работа ШИМ-контроллера блокируется и цепь обратной связи ожидает его падения до некоторого "нижнего" уровня, после которого следует следующий запуск контроллера ("старт/стопный" режим). В итоге выходное напряжение становится пульсирующим, с амплитудой пульсаций порядка 50...100 мВ. При попытке питания таким напряжением аудиоустройств отчетливо слышится "жужжание" с частотой этих пульсаций. Реализованный в ШИМ-контроллерах последних разработок (AP3105 FAN6602 SG6741 FAN6755 SG6841 SP6850 FAN6753 SG6858 FAN6862 и т.д.) режим "Green Mode" (переход в "спящий" режим при снижении тока, потребляемого нагрузкой, ниже установленного значения), также не способствуют нормальной работе нагрузок с быстропеременным потреблением тока (те же аудиоустройства, электромоторы, ШИМ-регуляторы и т.п.). Для компенсации подобных режимов, обычно рекомендуется применять "костыль" в виде нагрузочного резистора по выходу, через который протекает ток, достаточный для исключения перехода ШИМ-контроллера в ключевой режим (стабилизация выходного напряжения осуществляется непрерывно путем изменения длительности импульсов прямого хода). Решение, конечно, простое, но не лишенное таких недостатков, как существенный нагрев этого резистора, а также недоиспользование полезной мощности преобразователя из-за "отсоса" им части выходного тока. Исходя из этих предпосылок, представляется целесообразным подгружать выход преобразователя "поглотителем тока", достаточным для поддержания непрерывного режима стабилизации выходного напряжения и отключаемым при достижении тока, потребляемого нагрузкой, какого-то определенного значения. Поскольку не требуется поддержания жестких режимов, схема получилась достаточно простой: Собственно нагрузочный источник тока выполнен на VT1VT2R1. Резистор R2 служит для обеспечения его работы при запертом транзисторе VT3, пока ток, принимаемый нагрузкой, создает на резисторе R3 падение напряжения, не превышающее 0,68 В. По достижению этого порога транзистор VT3 отпирается и шунтирует транзистор V2, прекращая тем самым работу источника тока. Весь выходной ток поступает в нагрузку, никуда не ответвляясь. Цепь обратной связи стабилизации выходного напряжения (U1ZD1R4) показана условно. Схема отсимулирована в симуляторе Мультисим V.14.0 (файл симуляции для желающих "поиграться" приаттачен). Апробация её "в железе" отложена до начала реализации проекта мощного ИИП для питания моторчиков. Конечно же, данная схема не лишена недостатков, главным из которых видится довольно значительное падение напряжения на токовом шунте R3. Другие недостатки выявятся при тестировании. Компенсатор ключевого режима.ms14
  3. Нужна помощь гуру по sg3525 имеется китайский модуль, при запуске преобразователя(12-220)начинают нагреваться ключи при совсем небольшой нагрузке(75 вт лампочка, трансформатор ~300вт)без нагрузки меандр приблизительно "нормальный" - на лично мой взгляд неопытного осцилографера Но самое интересное начинается когда реализовал обратную связь на оптроне 817-ом и на осцилограмме вылазит какой-то мини меандр при уменьшении скважности и сопровождается сильным нагревом ключей(irf3205)
  4. Недавно я использовал Arduino для программирования stm32, и мне нужно использовать ШИМ-выход, но кажется, что частота фиксирована на 550 Гц. Я хотел бы знать, как изменить частоту ШИМ простым и легким способом. Например, я могу использовать analogWriteFreq(3000) для изменения частоты ШИМ на 3 КГц на ESP8266, но эта функция не работает на stm32. есть ли аналогичный метод для stm32?
  5. Здравствуйте, уважаемые пользователи сайта "ПАЯЛЬНИК". Мне очень необходима Ваша квалифицированная помощь в разработке устройства контроля параметров ветрогенераторной установки. В общем объеме устройство должно выполнять 5 основных функций: 1. Заряд аккумуляторных батарей 48В 200Ач. 2. Стабилизация оборотов ветроколеса. 3. Сброс излишка энергии на 4 или 6 нагревательных ТЭНОВ по 24В каждый, с поочерёдным их включением по мере увеличения излишка энергии. 4. Контроль напряжения сети с переключение в аварийный режим (работа на инвертор). 5. Вывод информации на LCD и организация меню пользователя. В качестве микроконтроллера буду использовать ATMega16. Для заряда АКБ и для работы на ТЭНы планирую использовать 2 канала. Каждый из каналов будет состоять из TL494 + драйвер + два MOSFETа в режиме полумоста с обратными связями по напряжению и току + LC-фильтр. Каналы будут управляться микроконтроллером двумя портами ШИМ через RC-фильтры. Для индикации планирую использовать символьный LCD 20x2. Логику работы устройства вижу так: С одной из фаз 3-х фазного ветрогенератора снимаем показания частоты, запоминаем. Проводим повторный замер и сравниваем с предыдущим. Если частота растёт добавляем нагрузку на колесо с помощью управления каналами АКБ и (или) ТЭНов. Если частота падает - уменьшаем нагрузку. Постоянно выполняем замер напряжения и тока по 2-м каналам и выводим значения на дисплей. Как только аккумулятор достигает заряженного состояния, переходим в режим работы с ТЭНами и включаем 1-й ТЭН при максимальной скважности, следим за оборотами, регулируем нагрузку и т.д. 2,3,4-й ТЭНы. Кто может что добавить или посоветовать? Интересует всё от начала и до конца: советы, схемные решения, помощь в расчёте выходного дросселя, оптимизация и т.д. Всё изготовленное мною будет иметь подробный фотоотчёт до самого конца, пока устройство не будет на 100% завершено. Все схемы и исходники будут доступны. По сути мы можем вместе создать устройство, необходимое очень многим людям. Заранее всем спасибо!!!
  6. Здравствуйте. Пишу потому, что нахожусь в тупике, в принципе наметки движееия вперед есть, но нужен совет опытного человека. Приобрел китайский лазер для самодельного гравера. Вот он разобранный Когда нужно жарить на всю, программа подает сигнал на вывод pwm и он жарит, без проблем. А вот интересная программа ribs которая играет уровнем мощности выдает нечеткие размытые и недожженые контуры. Беру осциллограф и иду по цепи. На разъёме шим разные и меняющиеся по форме сигналы, на лазерном диоде равномерные пики, меняется только их амплитуда. На входе стоит микросхема шестиножечная, маркировка спилена, затем мощный транзистор тоже со спиленной маркировкой и два диода тоже нонейм теперь. И самое интересное на клемах к лазерному диоду запаяны два конденсатора в паралель. Так и должно быть? И если кто знает, подскажите как организовать нормальный шим. Кстати амплитуда на лазерном диоде составила 3.8 вольта. Второй день уже бьюсь, сначала думал слишком быстрая подача, но даже на минимальной скорости лазер не жжет до черна, а в программе lasergrbl на впятеро больше скорости прорезал неплохие канавки. Фото обратной стороны с конденсаторами.
  7. Доброго времени суток всем. Для своей новой жены захотелось мне сделать сердечко на atmega8, с кучей эффектов и т.д. Так вот, разные мигалки-переключалки св-диодов я написал, использовал delay. Но мне этого стало мало и я решил подключить шим программный. Отдельно от всей программы шим работает как нужно, так же и переключалки работают отдельно от шим, но вот когда я соединяю это всё воедино то работает только шим и не переходит дальше по коду.Я так понимаю, что таймеры и delay вместе работать не могут? Но если могут, то как? #include <mega8.h> #include <delay.h> #define GREEN PORTC.1=PORTC.2=PORTC.3=PORTC.0 unsigned char i, s,; unsigned char green=255; unsigned char green_b; //переменные, для буферизации значений скважности ШИМ unsigned char count; //переменная- счетчик вызовов обработчика прерываний unsigned char temp=1; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { count++; if (count == 0){ //если счетчик переполнился и принял значение 0 green_b = green; GREEN = 1; } if (green_b == count) { GREEN = 0;} } void main(void) { PORTC=0x0F; //конфигурируем порт DDRC=0x0F; TCCR0=0x01; //настраиваем таймер TCNT0=0x00; TIMSK=0x01; //разрешаем генерацию прерывания по переполнению таймера T0 #asm("sei") //глобально разрешаем прерывания while (1) { for (i=0;i<3;i++) { if (temp==1) {if (green < 255) green += 1; else temp = 2;} if (temp==2) {if (green > 0) green -= 1; else temp = 1;} delay_ms(1000); }; s=7; for (i=0;i<=s;i++) { PORTC.0=1; delay_ms(200); PORTC.0=0; PORTC.1=1; delay_ms(200); PORTC.1=0; PORTC.2=1; delay_ms(200); PORTC.2=0; PORTC.3=1; delay_ms(200); PORTC.3=0; } for (i=0;i<=s;i++) { PORTC.3=1; delay_ms(200); PORTC.3=0; PORTC.2=1; delay_ms(200); PORTC.2=0; PORTC.1=1; delay_ms(200); PORTC.1=0; PORTC.0=1; delay_ms(200); PORTC.0=0; } for (i=0;i<=s;i++) { PORTC.3=1; delay_ms(200); PORTC.2=1; delay_ms(200); ; PORTC.1=1; delay_ms(200); PORTC.0=1; delay_ms(200); PORTC.3=0; delay_ms(200); PORTC.2=0; delay_ms(200); PORTC.1=0; delay_ms(200); PORTC.0=0; delay_ms(200); } for (i=0;i<=s;i++) { PORTC.0=1; delay_ms(200); PORTC.1=1; delay_ms(200); ; PORTC.2=1; delay_ms(200); PORTC.3=1; delay_ms(200); PORTC.0=0; delay_ms(200); PORTC.1=0; delay_ms(200); PORTC.2=0; delay_ms(200); PORTC.3=0; delay_ms(200); } for (i=0;i<=s;i++) { PORTC=0x01; delay_ms(200); PORTC=0x02; delay_ms(200); PORTC=0x04; delay_ms(200); PORTC=0x08; delay_ms(200); PORTC=0x09; delay_ms(200); PORTC=0x0A; delay_ms(200); PORTC=0x0C; delay_ms(200); PORTC=0x0D; delay_ms(200); PORTC=0x0E; delay_ms(200); PORTC=0x0F; delay_ms(200); PORTC=0x07; delay_ms(150); PORTC=0x0B; delay_ms(200); PORTC=0x03; delay_ms(250); PORTC=0x05; delay_ms(300); PORTC=0x09; delay_ms(350); PORTC=0x01; delay_ms(400); PORTC=0x02; delay_ms(200); PORTC=0x04; delay_ms(200); PORTC=0x08; delay_ms(200); PORTC=0x00; delay_ms(200); } for (i=0;i<=5;i++) { PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(150); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(300); PORTC=0x00; delay_ms(150); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(100); PORTC=0x0f; delay_ms(100); PORTC=0x00; delay_ms(1000); } } }
×
×
  • Create New...