Перейти к содержанию

Управление Несколькими Реле В Зависимости От Сопротивления Датчика


max1287

Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Hongfa для различных применений в Компэл. Большой выбор в наличии!

Компания HONGFA - это не только крупнейший в мире производитель электромеханических реле, но также производитель конденсаторов, вакуумных прерывателей, трансформаторов и низковольтного коммутационного оборудования. На складе КОМПЭЛ регулярно поддерживаются около 100 самых популярных позиций электромеханических реле. Реле Hongfa могут заместить многие изделия производства недоступных брендов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Тренды и лучшие решения для разработки зарядных станций в России

К 2029 году в России прогнозируется увеличение числа зарядных станций до 40 000. При этом отечественный рынок электротранспорта имеет климатические, потребительские и географические особенности. Для успешной разработки и построения инфраструктуры станций заряда в России идеальным вариантом является использование решений и электронных компонентов китайских производителей – лидеров индустрии электротранспорта и возобновляемой энергетики, которые уже представлены в КОМПЭЛ. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Как вариант

07fb065bbff1.gif

Остаётся только скважность замерить в точке.

Но в этом случае без МК не обойтись,или огород городить придётся.

Но можно сделать и кривее,на вЫход подцепить RC цепочку,далее получившееся напряжение

подать на подобную схему(только придётся мазохистски подобрать диодики в делителе индикатора)

751064c79e1b.jpg

ну а вместо светодиодов подцепить реле.

Ну и ещё немного логики добавить,в общем фигня выйдет.

Изменено пользователем alend
Ссылка на комментарий
Поделиться на другие сайты

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

croc19 Я не имею ничего против AVR.

alend Ваш вариант мне очень понравился, чем скважность замерять, какую МК взять, и как реле выставлять? Не будет ли одинаковая скважность при замыкании ключей одинакового сопротивления на разных блоках?

Ссылка на комментарий
Поделиться на другие сайты

Если мк применять, то не нужно что то добавлять. На мк взять два канала с ацп.

Подключить их к точкам А и В. Вывод А переключаешь на выход, на В меряешь

напряжение. Затем наоборот. В зависимости от нажатой кнопки, управляешь

реле. Или мудрить что то на жеской логике. Я бы предпочел МК.

Ссылка на комментарий
Поделиться на другие сайты

<p>т.е. Как и писал khal, взять ардуину?</p>

Других вариантов, что бы и компактно и то что нужно нет?

Изменено пользователем max1287
Ссылка на комментарий
Поделиться на другие сайты

взять ардуину

Так ардуина на AVR и собрана.

Нужно определиться на чем вы можете писать программу.

На том и нужно собирать.

LM3914 тоже вариант.

Ну и много непонятностей, что вы хотите получить.

Ссылка на комментарий
Поделиться на другие сайты

Григорий Т.

Есть вариант использовать LM3914.

Можете пояснить каким образом?

croc19

Так ардуина на AVR и собрана.

Я знаю, поэтому и написал.

Нужно определиться на чем вы можете писать программу.

Для меня не проблема писать на C++, как и на любом другом ЯП.

Ну и много непонятностей, что вы хотите получить.

Что вам не понятно? Готов ответить на все вопросы.

Ссылка на комментарий
Поделиться на другие сайты

Ну тогда не проблема.

Если нужно просто включать 10 реле 10 кнопками, берете протеус, среду програмирования

АВРок, рисуете схему в протеусе, например на атмеге 8. Пишите программу.

Отлаживаете в протеусе. Изготавливаете вживую. Если удобнее на ардуине,

то пишите программу на ее языке.

Нарисовал в протеусе схему. Нажатие кнопок с резисторами 1,6к и 4,3к не отличаются.

Проверьте еще раз резисторы без кнопок. Номиналы и так ли подключены.

Еще по подключению клавиатуры к блоку. Просто два провода или они в экране.

На схеме я пририсовал два сопротивления. Логичнее было бы если ваши резисторы

без кнопок сидели на земле.(на заземленном экране) Тогда кнопки легко определялись

бы по напряжению.

А мною пририсованные были бы не нужны.

Ссылка на комментарий
Поделиться на другие сайты

Если использовать ШИМ на 555 таймере и ко всему измерять напряжение на выходе RC цепочки,то вероятно придётся строить 10 каналов отрабатывающих на конкретное напряжение,-которое получается на выходе RC цепочки!

Можно образовать канал следующим способом, берём сдвоенный ОУ например LM358, строим из них два компаратора настроенные на определённый порог срабатывания +/- от уровня напряжения (при замыкании одной из 10 кнопок),затем выходы этих компараторов подключаем к элементу 2И,-выход которого подключаем к ключу-транзистору управляющему реле канала.

И того при использовании сдвоенного ОУ в одном корпусе и 4 элементов 2И в одном корпусе,получается что,-на 10 каналов уйдёт 10 штук LM358 или (5 штук IL324 счетверённый ОУ) и 3 микросхемы с четырьмя элементами 2И или 2И-НЕ, ну и 10 транзисторов!-не забываем про 20 подстроечных резисторов в каналах с компараторами.

Если умудриться пристроить LM3914 в режиме "бегущей точки", то компараторы и логику можно откинуть,но как настраивать отработку каждой "точки" на конкретное напряжение Х.З.

Ссылка на комментарий
Поделиться на другие сайты

Однозначно. По другому, куча проблем вылезет, типа дребезг контактов...

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Запустил в протеусе с 10ком и 1ком на землю. Получилось такое распределение

напряжений. 4.62в - 3.79 - 2.95 - 2.10 - 1.25

Можно при обработке данных от ацп сузить диапозоны напряжений для

кнопок. Тогда возможно получится отфильтровывать нажатия двух

кнопок.

А дополнительные резисторы скорее всего для определения подключена

клава или нет.

Изменено пользователем croc19
Ссылка на комментарий
Поделиться на другие сайты

Поставил на выходы PB0-PB7 и на PD0-PD2 светодиоды с резисторами на землю. Проверил, светодиоды загораются когда отправляешь на порт "1". Но как не пытался подключить кнопки к АЦП-шным входам так ничего и не получилось снять. Может подскажете, как подключить эти кнопки к ATMEGA8?

Ссылка на комментарий
Поделиться на другие сайты

К сожалению я не пишу на Си. Я пишу на Алгоритм Билдере.

На Си много примеров в нете. И много хороших описаний АЦП.

У атмег АЦП одинаковое. Можно не только атмега 8 смотреть.

Можно и 16,32 и 128.

Ссылка на нашем сайте.

http://forum.cxem.ne...howtopic=114147

Выкладывайте проект протеуса и программу.

Будем делать.

Изменено пользователем croc19
Ссылка на комментарий
Поделиться на другие сайты

Вроде что-то нарисовал. Вот ссылка на проект протеуса: http://1drv.ms/1cr3mWl . Посмотрите пожалуйста, что то я совсем не уверен. При демонстрации как-то медленно переключается полярность...

Вот отдельно схема:

66d914cfcef2.png

И исходный код программы:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
void ADC_init()
{
//воспользуемся значениями регистров, определенными ранее
	 ADMUX = 0x00;
	 ADCSRA = 0x8D;
}
//функция получает в качестве аргумента номер канала и возвращает значение на входе
unsigned int ADC_result(unsigned char adc_input)
{
	 ADMUX=adc_input|(ADMUX & 0xF0);
//задержка для стабилизации входного напряжения
	 _delay_us(10);
//начинаем преобразование (ADSC = 1)
	 ADCSRA|= 0x40;
	 while((ADCSRA & 0x10)==0); //ждем, пока АЦП закончит преобразование (ADIF = 0)
    ADCSRA|=0x10;//устанавливаем ADIF
    return ADCW;//ADCW - содержит ADCH и ADCL как нам нужно
}
int main (void)
{
   DDRB=0xFF;
DDRD=0b11000000;
DDRC=0b00110000;
 double U;
 ADC_init();
while (1)
{
 PORTD=0b10000000;
 U=0.0049*ADC_result(0);
 if ((U>=3.1)&&(U<=3.4)) {PORTB=0b00000001;}
 else{
  if ((U>=0.8)&&(U<=0.9)) {PORTB=0b00000010;}
  else{
   if ((U>=2.6)&&(U<=2.7)) {PORTB=0b00000100;}
   else{
 if ((U>=2.0)&&(U<=2.1)) {PORTB=0b00001000;}
 else{
  if ((U>=1.4)&&(U<=1.5)) {PORTB=0b00010000;}
  else{ PORTB=0;}}}}}
 PORTD=0b01000000;
 U=0.0049*ADC_result(1);
 if ((U>=3.1)&&(U<=3.4)) {PORTB=0b00100000;}
 else{
  if ((U>=0.8)&&(U<=0.9)) {PORTB=0b01000000;}
  else{
   if ((U>=2.6)&&(U<=2.7)) {PORTB=0b10000000;}
   else{
 if ((U>=2.0)&&(U<=2.1)) {PORTC |= _BV(PC4);}
 else{
  if ((U>=1.4)&&(U<=1.5)) {PORTC |= _BV(PC5);}
  else{ PORTB=0; PORTC &= ~_BV(PC4); PORTC &= ~_BV(PC5); }}}}}
}
 return 0;
}

Ссылка на комментарий
Поделиться на другие сайты

Чем так включать транзисторы, лучше обойтись вообще без них. Там максимальный ток всего 5 мА.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Прекрасно.

Уберите резисторы у светодиодов. Они не нужны. Протеус и так

смоделирует. А время на расчет резисторов тратить не будет.

Щелкаешь правой кнопкой на светодиоде. В открывшемся меню

нажимаешь ЕДИТ ПРОПЕРТИЕС. В строчке МОДЕЛ ТЕЙП пееереключаешь

АНАЛОГ на ДИГИТАЛ. Соответственно программа не будет обсчитывать

ток светодиода и будет моделировать быстрее. Делаешь так с каждым

светодиодом.

Убираешь транзисторы.

Алгоритм такой. Выставляешь РС0 на выход. Выдаешь в него единицу.

АЦП настраеваешь на РС1. Считываешь. Получаешь значение для левой

половины кнопок.

Затем меняешь наоборот. РС1 на выход - в единицу. С РС0 считываешь

напряжение правой половины.

Изменено пользователем croc19
Ссылка на комментарий
Поделиться на другие сайты

Вот немного поправил:

490fc3613157.png

Через ADC2 считываю опорное напряжение, потому как решил что оно может меняться и мои условия не адаптируются под другое напряжение. Сейчас все сделал через расчет сопротивления и от туда уже и условия. Скажите, если я ошибаюсь.

Вот код:

#include <avr/io.h>
#include <util/delay.h>
#define Rac 1000; //сопротивление на землю
#define Aud -8543.553; //коэффициенты ВАХ BAS21(приближенно)
#define Bud 76.35;  //коэффициенты ВАХ BAS21(приближенно)
#define Cud 0.132;  //коэффициенты ВАХ BAS21(приближенно)
void ADC_init()
{
//воспользуемся значениями регистров, определенными ранее
	 ADMUX = 0x00;
	 ADCSRA = 0x8D;
}
//функция получает в качестве аргумента номер канала и возвращает значение на входе
unsigned int ADC_result(unsigned char adc_input)
{
	 ADMUX=adc_input|(ADMUX & 0xF0);
//задержка для стабилизации входного напряжения
	 _delay_us(10);
//начинаем преобразование (ADSC = 1)
	 ADCSRA|= 0x40;
	 while((ADCSRA & 0x10)==0); //ждем, пока АЦП закончит преобразование (ADIF = 0)
    ADCSRA|=0x10;//устанавливаем ADIF
    return ADCW;//ADCW - содержит ADCH и ADCL как нам нужно
}
int main (void)
{
   DDRB=0xFF;//порты на выход
DDRC=0b00110000;//еще 2 порта на выход
double U,Uref,R,I,R0;//измеряемое напряжение, опорное напряжение, сопротивление включенного резистора, сила тока, сопротивление всей ветки
ADC_init();
while (1)
{
 Uref=0.0049*ADC_result(2);    //считываем опорное напряжение
 DDRC|=1<<1;	    //устанавливаем первый порт на вывод
 PORTC |= _BV(PC1);	  //устанавливаем в первом порту 1
 DDRC&=~(1<<0);	   //устанавливаем нулевой порт на чтение
 PORTC&=~(1<<0);	   //обнуляем порт
 U=0.0049*ADC_result(0);	 //считываем напряжение
 I=U/Rac;	    //находим силу тока
 Uref=Uref-I*I*Aud;	  //
 Uref=Uref-I*Bud;	  //корректируем опорное напряжение падением напряжения на диоде, согласно ВАХ
 Uref=Uref-Cud;	   //
 R0 = (Uref-U)/U*Rac;	 //находим общее сопротивление
 R = R0/(10000-R0)*10000;    //находим сопротивление кнопки
 if ((R>=60)&&(R<=150)) {PORTB=0b00000001;}//сравниваем
 else{
  if ((R>=730)&&(R<=780)) {PORTB=0b00000010;}
  else{
   if ((R>=310)&&(R<=360)) {PORTB=0b00000100;}
   else{
 if ((R>=4200)&&(R<=4400)) {PORTB=0b00001000;}
 else{
  if ((R>=1500)&&(R<=1700)) {PORTB=0b00010000;}
  else{ PORTB=0;}}}}}  //если не одна не подходит, сбросить все

 Uref=0.0049*ADC_result(2);    //считываем опорное напряжение
 DDRC|=1<<0;	    //устанавливаем нулевой порт на вывод
 PORTC |= _BV(PC0);	  //устанавливаем в нулевом порту 1
 DDRC&=~(1<<1);	   //устанавливаем первый порт на чтение
 PORTC&=~(1<<1);	   //обнуляем порт
 U=0.0049*ADC_result(1);	 //считываем напряжение
 I=U/Rac;	    //находим силу тока
 Uref=Uref-I*I*Aud;	  //
 Uref=Uref-I*Bud;	  //корректируем опорное напряжение падением напряжения на диоде, согласно ВАХ
 Uref=Uref-Cud;	   //
 R0 = (Uref-U)/U*Rac;	 //находим общее сопротивление
 R = R0/(10000-R0)*10000;    //находим сопротивление кнопки
 if ((R>=60)&&(R<=150)) {PORTB=0b00100000;}//сравниваем
 else{
  if ((R>=730)&&(R<=780)) {PORTB=0b10000000;}
  else{
   if ((R>=310)&&(R<=360)) {PORTB=0b01000000;}
   else{
 if ((R>=4200)&&(R<=4400)) {PORTC |= _BV(PC4);}
 else{
  if ((R>=1500)&&(R<=1700)) {PORTC |= _BV(PC5);}
  else{ PORTB=0;PORTC &= ~_BV(PC4); PORTC &= ~_BV(PC5);}}}}}//если не одна не подходит, сбросить все
}
 return 0;
}

Проект протеуса: http://1drv.ms/1jPzTVK

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • А на малом газу висит? В начале отрыва?
    • непонятно, точное пложение или одиночный импульс?  если точное то или это много зубов, или аналоговый датчик ратиометрик или синус/косинус.  если болт то это 6 импульсов, но просто с граней шляпки почти невозможно будет снять сигнал. если одиночный импульс, то это обычный датчик фаз, их полно готовых.  чтоб в иномарках не искать, то уаз газ  пластиковый индуктивный датчик плавает в масле, на распред крепится стальная  "палочка".  Я видел именно на форумах уазов, газовские двигатели могут различаться, или нужно каталог запчатсей перебирать.  магазинов по уазам немного но все же проще чем самому делать.  если чесно, то любой датчик и от коленвала подойдет, на него надевают колпачек из большой термоусадки.  щель зазаор между датчиком и зубом около 1мм.   датчик фаз обычно дает одиночный импульс длительностью где то 20 градусов по коленвалу.  если нужно меньше, то наверное свой делать.  например сердечник датчика коленвала рено кругый 3мм, его можно сточить в плоский 1мм. в схемах все используют компаратор с обратной связью типа самого простого LM193 xx LM2903, для одиночного импульса датчик подключают одним концом, на другом входе компаратора опорное напряжение.  кажется здесь советовали mcp602, проверь поиском.   если использовать ДХ то их полно на 150 градусов, а дорогие  под заказ и свыше 170 градусов.  магнит неодимовый не годится, нужен черный магнит.  не только по температуре, неодимовый слишком сильный.  если зайти в магаз магнитов, то они бывают и свыше 200 градусов.  проблема не в температуре, а чтобы прикрепить магнит, поэтому магнит неподвижно ставится с тыльной стороны ДХ, а вот где искать ребро на распредвале - неизвестно.   мое предположение, что проще использовать ребро рокера, найти момент срабатывания. кроме того, последние лет 15 на иномарках не используют индуктивные датчики, а используют виниловую полоску, работающую как сальник коленвала, соответсвенно диапазон температур там огромный.   моя догадка, что можно попробовать вырезать из нее три зуба, получится невесомая конструкция.
    • @ShukhratM ,на 700 вт подобное я бы не рассматривал. Затрат много очень,по нынешним временам прямо недобро выходит 
    • Ещё один, высасывающий откровения из большого пальца, зажатого между указательным и средним. Или ты тоже считаешь, что кроме галош в Союзе ничего хорошего не делали?!
    • А куда дует дуйчик, если с бортов нет отверстий? Как воздух циркулирует? Отверстия в крышке?
    • @Lexter мысль понятна ваша, но понижать частоту уже не буду потому что придётся перестраивать ТГР, на 46 витках мой сердечник вроде нормально чувствует себя, проверю потом под нагрузкой как соберу всё.. Ток первички замерю на холостых при 46 витках.... @ummagumma проницаемость я искал чтобы вставить в таблицу для расчёта первички
    • Я изготавливал индуктивный датчик из катушки со сердечником от электромагнитного реле, к которому с одной стороны примагничивал круглый неодимовый магнит, а с другой стороны выступающую часть сердечника затачивал в виде тупого зубила.  Мне нужно было считывать сигнал с шестерни,  диаметром  всего 26 мм и имеющей  24 зуба.  Сигнал подавался сразу на процессор, у которого на входе имелись резистор с небольшим кондёром, защитный диод и стабилитрон на 3,3 В. 
×
×
  • Создать...