Страница 1 из 1

"Выпрямить" ШИМ

Добавлено: Сб июл 16, 2011 23:46:10
DLL32
Приветики!
значит собрал я ШИМ для управления Эл.двигателя все прекрасно, но хочу сделать шкалу светодиодную, чтоб, когда крутишь резюк, чем больше оборотов, тем выше шкала поднималась.
попробовал на выход подключить AN6884 со шкалой.. ниче не вышло..
потом купил LM3914 тоже не фонтан..
пытался выпрямить...
ставил нч фильтры..
короче намучался..
не знаю, че делать

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 00:03:05
МП 42 Б
А что по старинке на 315 не получается ?
Изображение

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 00:30:22
DLL32
чем ваша схема луче LM3914-го?
к тому же есть LM3914 и хочу на нем, ибо городить такую схему не естетично :)))

p.s. LM3914 может работать как вольтметр от 1го до 10 вольт по одному светодиоду на вольт.
и еще много примочек.
Но ШИМ все портит...

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 00:39:04
МП 42 Б
Ну ясный хобот...
Широтно импульсная модуляция , а её LM3914 понимать отказывается.
Ройте в сторону вч вольтметра переменного тока.

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 11:14:48
DLL32
спасибо вам МП 42 Б
нежуели нелзя легко и просто выпрямить этот ШИМ?

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 11:42:31
kondor
DLL32 писал(а):спасибо вам МП 42 Б
нежуели нелзя легко и просто выпрямить этот ШИМ?
Вы знаете что такое ШИМ ? Если да, то объясните, что значит "выпрямить ШИМ" ?

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 11:48:07
DLL32
Выпрямить у меня в кавычках! (в заголовке темы)
прочтите тему сначала и поимете.
не буду я два раза писать то что уже написал. кто в теме тот понял чего я хочу.

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 13:03:28
kondor
DLL32 писал(а):спасибо вам МП 42 Б
нежуели нелзя легко и просто выпрямить этот ШИМ?
Можно :)) Номиналы резистора и конденсатора подбирать в зависимости от частоты ШИМ. Можно конечно и формулы для расчета вывести, но это уже заморочек много, проще подобрать через мультисим.

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 13:18:11
DLL32
да в симуляторе все рабортает, но на практике нет.
я уже делал так.. :( не работает..
--------------------------------
а если вот так ?
Untitled.png
(11.81 КБ) 930 скачиваний
в место вольтметра если LM3914+шкалу светодиодную, будет работать?

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 18:08:15
kondor
Не думаю. Первый конденсатор отрезает постоянку и инвертирует сигнал, резистор притягивает сигнал к общему, диод отрезает все что ниже 0, второй конденсатор выравнивает сигнал. Т.е. он просто покажет наличие сигнала и половину его уровня.

То что вам нужно, работает вот как: при высоком уровне происходит зарядка конденсатора, в зависимости от длительности импульса, конденсатор успеет зарядится до какого-то уровня, далее, пока идет низкий уровень ШИМ, происходит разрядка конденсатора, но не до 0. Сейчас попробую поэсперементировать со схемами, мож чего и примаю ) Заинтересовала меня эта задачка :)

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 18:28:25
DLL32
Я чуть отредактировал вашу схему и все заработало :))
без R3 микромхема LM3914 показывала всегда максимум.
как говорится метод тыка работает :)
спасибо kondor

Re: "Выпрямить" ШИМ

Добавлено: Вс июл 17, 2011 18:32:07
kondor
Рад был помочь )

Re: "Выпрямить" ШИМ

Добавлено: Пт окт 12, 2012 22:21:21
akimov1987
доброй ночи. тоже интересует данная ситуация, нужно мне это для бортовых огней в самолёте радиоуправляемым, для включения бортовых огней.

мне из шим сигнала в длительности от 1000 до 2000 микросекунд нужно сделать логический ноль для микроконтроллера. не могли бы подсказать для моего случая

Re: "Выпрямить" ШИМ

Добавлено: Сб окт 13, 2012 09:02:01
BOB51
Если сигнал генерируется МК, то почему бы не поручить тому же МК генерировать второй сигнал в соответствии с первым? Это ведь гораздо проще, чем городить внешний вторичный измеритель... :tea:
akimov1987 существует такая штука ждущий одновибратор (хош на К155АГ, хош на 555/556) для преобразования пакета импульсов в один импульс вполне сгодится 8)

Re: "Выпрямить" ШИМ

Добавлено: Сб окт 13, 2012 18:58:10
akimov1987
логика такова с приёмника борта самолёта выходят каналы управления самолёта то есть руль высоты, руль направления, элероны и газ, сигнал шим амплитудой 5в и изменяемой длительностью от 900мкс до 2000мкс, но есть и ещё доп каналы в моём случае 3 свободных вот на них и хочу подцепить бортовые огни. знакомый электронщик сказал что можно прям в мк загнать шим но он пишет на асме, а я пишу в cvavr.
не понимаю какую строчку написать что бы сигнал был понятен мк и выдавал логические еденицы на указанные мне порты. например на ножке появиля шим сигнал и началась выполняться програма (борт освещение или сигнализирующие огни, ) для мигания мне составит труда написать программу. надеюсь на помощь хорошего человека
есть кусочек кода которы мне мало понятен. вот он

#include <tiny2313.h>

const int timed1=400; // Задержка между 1 и 2 стробоскопами
const int timed2=1200; // Длительность общего цикла мигания
const int tims1=40; // Длительность вспышки
const int tims2=80; // Длительность паузы
const char NofL=2; // Колличество вспышек стробоскопа
const int timeG=300; // Порог включения посадочной фары
const int timeT=240; // Порог включения огней БАНО и стробоскопов
const char s1=0; // Положение NORM/REV канала GEAR
const char s2=1; // Положение NORM/REV канала THROTLE

int tick11,tick21; // Вспомогательные счетчики
int tick3, tick1, tick2; // Вспомогательные счетчики
unsigned int pulse1; // Длительность импульса канала GEAR
unsigned int pulse2; // Длительность импульса канала THROTLE
char c1,c2; // Счетчики колличества успешно принятых импульсов
char F; // Флаг ON/OFF стробоскопа

interrupt [EXT_INT0] void ext_int0_isr(void) // Обработка прерывания от канала GEAR
{
if(pulse1 > timeG){c1++; pulse1=0;}
if((pulse1 < timeG)&(pulse1 > 5)) {PORTB.3=!s1;
pulse1=0; c1=0;}
if (c1==10){PORTB.3=s1; c1=0;}
}

interrupt [EXT_INT1] void ext_int1_isr(void) // Обработка прерывания от канала THROTLE
{
if(pulse2 > timeT){c2++; pulse2=0;}
if((pulse2 < timeT)&(pulse2 > 5)) {F=!s2;PORTB.2=s2; pulse2=0; c2=0;}
if (c2==10){F=s2; PORTB.2=!s2; c2=0;}
}

interrupt [TIM0_OVF] void timer0_ovf_isr(void) // Обработка прерывания таймера
{
if(F==1){
tick3++;
if (tick11 < NofL){tick1++;}
if (tick21 < NofL){tick2++;}

if(tick1 > tims1){PORTB.0=0;}
if(tick1 > tims2){
PORTB.0=1;
tick1=0;
tick11++;
}

if(tick2>tims1){PORTB.1=0;}
if(tick2>tims2){
PORTB.1=1;
tick2=0;
tick21++;
}

if (tick3==timed1){tick11=0;}
if (tick3==timed2){tick21=0; tick3=0;}
}else {tick1=0; tick2=0; tick3=0; PORTB.0=1; PORTB.1=1;}
}


void main(void)
{
// Осцилятор
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Настройка портов
PORTA=0x07; DDRA=0x07;
PORTB=0xFF; DDRB=0xFF;
PORTD=0x00; DDRD=0x73;
// Настройка таймера 0
TCCR0A=0x00;
TCCR0B=0x03;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
TIMSK=0x02;
// Настройка внешних прерываний
GIMSK=0xC0;
MCUCR=0x0A;
EIFR=0xC0;
// Начальные условия
tick1=0;
tick2=0;
tick11=0;
tick21=0;
c1=0;
c2=0;
pulse1=0;
pulse2=0;

#asm("sei")

while (1)
{
// Сканирование каналов
if(PIND.2){pulse1++;} else {pulse1=0;}
if(PIND.3){pulse2++;} else {pulse2=0;}
};
}

Re: "Выпрямить" ШИМ

Добавлено: Сб окт 13, 2012 23:43:25
Brigadir
Я наконец то понял, чего человек хочет: нет потока импульсов - нет команды на зажигание фонаря, пошли импульсы - включился фонарь. То есть надо определить наличие потока импульсов. Это просто: импульсы снять через базу транзистора,(транзистор - это буфер), на коллектор прицепить светодиод и емкость, где то 10 мкф. (емкость нужна для сглаживания импульсов на коллекторе). Всё!

Re: "Выпрямить" ШИМ

Добавлено: Вс окт 14, 2012 01:15:17
Николай_С
DLL32 писал(а):спасибо вам МП 42 Б
нежуели нелзя легко и просто выпрямить этот ШИМ?
А я бы вообще не стал ничего выпрямлять, а сделал бы измеритель скважности ввиде линейке светодиодов.
Ну а если очень хочется выпрямить, то вешаем между ШИМ и аналоговым измерителем интегрирующую цепочку с ТАУ в 10 раз большим периода измеряемого сигнала.

p.s. И еще вопрос: зачем akimov1987 поднял тему отличной давности? У него ведь немного другой случай....

Re: "Выпрямить" ШИМ

Добавлено: Вс окт 14, 2012 10:19:45
akimov1987
можно и новую создать. но вроде как почти аналогично практически ()связывающее слово ШИМ)