Соленоидный двигатель, работа с таймерами.

Warn
Offline
Зарегистрирован: 13.01.2012

Суть хобби-проэкта такова, собрал я соленоидный двигатель, точная копия рядного восьми-мицилиндрового 4хтактного мотора. Но роль поршней выполняют соленоиды. работа 1-5-7-3-8-4-2-6

На моторе установил магнит и геркон, что-бы считать время оборота коленвала. Импульсы на соленоиды должны подаваться по очереди. Период подачи всех импульсов равен двум оборотам, всемя подачи напряжения на каждый соленоид 2/5 времени оборота колена. А управление скоростью вращения хочу сделать через ШИМ задействовав переменный резистор. Подскажите с чего начать, спасибо!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Warn пишет:

 Подскажите с чего начать, спасибо!

1 Изучение языка Си.

2 Более подробное прописывание ТЗ, кто на что подключен. Какие обороты, сколько и когда вкл соленоиды не вообще а конкретно в секундах, обороты двигателя и прочее.

Warn
Offline
Зарегистрирован: 13.01.2012

каждый соленоид через транзистор и реле, подключается напрямую к Arduino. Стало быть соленоид(поршень) будет включен тогда, когда на пин Ардуино будет Low. Минус, также череp геркон поступает на соответствующий пин Arduino, геркон замыкается на доли секунды каждый оборот коленвала.

Допустим, скорость вращения коленвала 600об в минуту, это 10 об/секунду. один оборот за 0.1 секунды

В этом случае длина каждого из восьми импульсов на каждый соленоид должна будет равна 0.04секунды. Период же подачи всех импульсов должен быть равен 0.2 секунды. Обороты двигателя будут меняться постоянно, поэтому должны отсутствовать в программе delay.

Спасибо. В языке стараюсь разобраться.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Вот у вас модель четырех тактного двигателя. Повторяю ЧЕТЫРЕ такта. 600об/мин = 10 об/сек и такт равен 0,025 секунд. Разумеется в 4 тактном один такт рабочий . Так что соленоид должен работать  0,025 секунды в 0,1 секундном периоде. И не важно сколько у вас цилиндров. Так в 8-ми цилиндровом двигателе цилиндры работают , как вам не удивительно, по-парно. 

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

Warn
Offline
Зарегистрирован: 13.01.2012

qwone пишет:

Вот у вас модель четырех тактного двигателя. Повторяю ЧЕТЫРЕ такта. 600об/мин = 10 об/сек и такт равен 0,025 секунд. Разумеется в 4 тактном один такт рабочий . Так что соленоид должен работать  0,025 секунды в 0,1 секундном периоде. И не важно сколько у вас цилиндров. Так в 8-ми цилиндровом двигателе цилиндры работают , как вам не удивительно, по-парно. 

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

странно, мне казалось я логично объяснил, 2/5 времени работы. а не 1/2. это будет 0.04 в 0.1 секундном периоде. И в рядном восьмицилиндровом двигателе цилиндры работают не попарно а последовательно. 1-5-7-3-8-4-2-6. С Уважением! и не забывайте, что 4 такта двигателя это 2 оборота а не один как считаете вы.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

1. не ясна роль магнита и геркона.

а. зачем геркон, а не датчик Холла?

б. а нафига вообще обороты нужны?

2. есть ли кривошипно-шатунный механизм? если он есть, то тогда точно неясно зачем датчик.

3. станешь ли ты светодиодом имитировать горение топлива? В такте расширения?

Warn
Offline
Зарегистрирован: 13.01.2012

wdrakula пишет:

1. не ясна роль магнита и геркона.

а. зачем геркон, а не датчик Холла?

б. а нафига вообще обороты нужны?

2. есть ли кривошипно-шатунный механизм? если он есть, то тогда точно неясно зачем датчик.

3. станешь ли ты светодиодом имитировать горение топлива? В такте расширения?

1.а. Двигатель достаточно большой. Длина коленвала 60см. Поэтому особой разницы нет, датчик холла, или геркон или просто микрик, суть в том что-бы считать время оборота.

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

2. Есть много способов, заставить это дело вращаться, самый простой переделать на 2х тактный и поставить систему датчиков холла, подавать напряжение в момент хода на каждый из соленоидов. В этом случае вообще всё просто. Можно так-же собрать мою схему просто на таймерах микросхемах(правда будет это довольно муторно). Но фишка именно в 4х тактности.

3. Имитация конечно же будет :) А по звуку будет похоже на приятный дизелёк. 

nik182
Offline
Зарегистрирован: 04.05.2015

На форуме много реализаций тахометров. Поиск в верху. Почитайте посмотрите. Тахометры дают то что вам надо. Заоодно и привязываются к началу цикла. А дальше делим время оборота на количество цилиндров на оборот - получаем время отработки одного соленоида. Посылаем импульсы нужной длины.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Warn пишет:

каждый соленоид через транзистор и реле, подключается напрямую к Arduino.

напрямую сожгете нахрен пин.

необходим умощняющий элемент, полевик например , или ULN2003

Учитывая, что соленоиды будут работать не мгновенно, а в зависимости от скорости вращения и запитывать их необходимо бкдет по-разному в зависимости от скорости.

в идеале запитка соленоида в начале последней четверти цикла и отсечка при достижении верхней точки.

на верхнюю точку можно поставить дофига всего как контактного так и бесконтактного. датчик холла непрокатит тк он будет показывать не положение а работу соленоида, о котором и так все известно. я поставил бы оптический датчик на пару градусов не доходя начала/конца цикла.

Warn
Offline
Зарегистрирован: 13.01.2012

Спасибо, конечно не напрямую, хочу использовать полевик и реле, кучка реле придаст как раз некую изюминку звука, хотя менее надёжно конечно. Изучаю скетчи тахометров.

Shwartz
Offline
Зарегистрирован: 20.07.2017

inspiritus пишет:
в идеале запитка соленоида в начале последней четверти цикла и отсечка при достижении верхней точки.

Это в идеале, а на практике все сложнее. Подвижная истема соленоида  и двигателя имеет инерцию и отсечка не уменьшает уже приобретенную кинетическую энергию.

inspiritus пишет:
на верхнюю точку можно поставить дофига всего как контактного так и бесконтактного. датчик холла непрокатит тк он будет показывать не положение а работу соленоида, о котором и так все известно. я поставил бы оптический датчик на пару градусов не доходя начала/конца цикла.

Нужно ставить инкрементный оптический энкодер + датчик начального положения коленвала (1 положение на оборот) или абсолютный оптический энкодер. И тогда не придется механически "вылавливать градусы" не доходя до ВМТ.

nik182
Offline
Зарегистрирован: 04.05.2015

Да там всё ещё проще. Время включённого состояния соленоида должно зависить от скорости. Для этого двигателя достаточно. Можно подобрать при наладке по минимальному дребезгу и максимальнону крутящему моменту.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Еще если не тупить сильно , а вспомнить, что рабочий ход ДВС это выталкивание поршня при сгорании, а рабочий ход электродвигателя это притягивание "поршня". А еще вспомнить конструкцию простого коллекторного двигателя. То Ардуина точно там не надо. Достаточно сделать коллектор на диске и все.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Удивительно информативные сцылки

 

infyniti
Offline
Зарегистрирован: 15.07.2017

Warn пишет:

1.а. Двигатель достаточно большой. Длина коленвала 60см. Поэтому особой разницы нет, датчик холла, или геркон или просто микрик, суть в том что-бы считать время оборота.

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

2. Есть много способов, заставить это дело вращаться, самый простой переделать на 2х тактный и поставить систему датчиков холла, подавать напряжение в момент хода на каждый из соленоидов. В этом случае вообще всё просто. Можно так-же собрать мою схему просто на таймерах микросхемах(правда будет это довольно муторно). Но фишка именно в 4х тактности.

1.а. геркон наврятли даст тебе реализовать большие обороты и точность их подсчета,только датчик холла.

б.можешь применить от сюда http://arduino.ru/forum/programmirovanie/elektronnyi-blok-upravleniya-na-avto?page=1#comment-297106 упровлять можно с помощью потенциометра .

2 я не вижу здесь 4 такта ,2 такта и 2 пропуска .

inspiritus
Offline
Зарегистрирован: 17.12.2012

По большому счету мк нафиг не нужен. Пары оптодатчиков положения на каждый "цилиндр" ( на начало и конец работы соленоида) и RS триггеры управляющие соленоидами. 

Можно еще проще. Шторка, затеняющая на период необходимой работы соленоида оптодатчик , закрепленная на коленвалу. Просто оптодатчик, например от старой мышы и ключ управления соленоидом.

SLKH
Offline
Зарегистрирован: 17.08.2015

Warn пишет:

каждый соленоид через транзистор и реле, подключается

и долго ли проживут контакты реле, коммутирующие 5 раз в секунду индуктивную нагрузку?

SLKH
Offline
Зарегистрирован: 17.08.2015

Warn пишет:

 

странно, мне казалось я логично объяснил, 2/5 времени работы. а не 1/2. это будет 0.04 в 0.1 секундном периоде. И в рядном восьмицилиндровом двигателе цилиндры работают не попарно а последовательно. 1-5-7-3-8-4-2-6. С Уважением! и не забывайте, что 4 такта двигателя это 2 оборота а не один как считаете вы.

как-то мне всегда представлялось, что рабочий ход у четырерёхтактного двигателя - это 1/4. Откуда 2/5?

 

SLKH
Offline
Зарегистрирован: 17.08.2015

inspiritus пишет:

По большому счету мк нафиг не нужен. Пары оптодатчиков положения на каждый "цилиндр" ( на начало и конец работы соленоида) и RS триггеры управляющие соленоидами. 

Можно еще проще. Шторка, затеняющая на период необходимой работы соленоида оптодатчик , закрепленная на коленвалу. Просто оптодатчик, например от старой мышы и ключ управления соленоидом.

Куча рассыпухи или 1 мк с простой программой - что практичнее?

и 1 датчик "ВМТ 1 цилиндра", оптический или холла.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Рассыпуха олдскульнее :)

Warn
Offline
Зарегистрирован: 13.01.2012

Рассыпуха безусловно олдскулл, но на рассыпухе подобное уже собиралось, и хватает для этого простых микриков каждый из которых замыкается в момент хода соленоида вниз. Но, это отлично работает если двигатель 2х тактный. Фишка в том что двигатель точная копия 4х тактника, тоесть в этом случае уже не получится ставить просто датчик на цилиндр. 

Реле проживут довольно долго, по моим подсчётам неделю при непрерывной работе, быстрее умрут соленоиды. Никто не планирует ездить на этом двигателе. Реле будут обязательно, именно из за звука.

впуск первый такт, сжатие второй, возгорание третий, выхлоп четвёртый - это работа двс, 2 такта 1 оборот 4 такта 2 оборота.

почему 2/5, 2/5 оборота а не такта, Сгорание в двс по времени не больше 1/10 такта или 1/20 времени оборота. По этому и тут, соленоид должен начинать тянуть в верхней точке и прекращать до того как дойдёт до нижней точки. Если же он будет тянуть весь такт, то в нижней точке он будет только притормаживать двигатель. Так как копия 4х тактника, каждый второй оборот, каждый из восьми соленоидов, делает в холостую.

Почему не геркон?, при скорости велосипеда 75 км/ч колёса горного велосипеда делают явно больше 600об минуту и при этом спидометр прекрасно показывает скорость. Геркон+магнит.

постараюсь написать программу для одного соленоида.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Вы не поняли, что я писал в предыдущих постах , а повторять и убеждать мне лень, делайте как хотите.

Warn
Offline
Зарегистрирован: 13.01.2012

Я же писал выше. Что всё прекрасно собиралось на рассыпухе. На тех-же 555тл1 и 561тм2, всё прекрасно работает. Но тут задача стоит собрать управление именно на мк. Мы в 21веке живём. Давайте ещё на лампах собирать управление?

nik182
Offline
Зарегистрирован: 04.05.2015

Если есть схема на рассыпухе то её очень просто запрограмировать. Взять щилд с реле типа http://iarduino.ru/shop/rele/rele-elektromehanicheskoe-do-250v-10-a-8--kanal-5v.html

И датчик первого цилиндра любой. Остается только вопрос с запуском. Стартёр будет? Или рукой первый оборот?

Warn
Offline
Зарегистрирован: 13.01.2012
int datPin = 2; 
 
 
void setup() { 
    Serial.begin (9600); 
  pinMode(datPin, INPUT); 
}  
void loop() { 
    int time; 
    time = pulseIn(echoPin, HIGH); 
    Serial.print(time); 
    Serial.println(" time");     
}

Пока едет ко мне Arduino, спрошу как профан, будет ли работать данная программа, в правильном направлении иду?

к примеру у меня датчик оборотов, в спокойном состоянии нога МК будет подтянута на плюс, при срабатывании датчика на ноге присётствует минус.

П.С. стартер будет. Про реле спасибо, даже паять ничего не надо. И как раз восемь.

infyniti
Offline
Зарегистрирован: 15.07.2017

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

Транзисторы будет правельней.Просто подобрать по мощьности.К примеру КТ817 вполне справляется с 5А.Задержка на сопротивление 15 ОМ 500ма срабатывает 3 милисикунды  но на саленойды нужно помощьнее.

Ключь с двух транзисторов один типа SS8050 а второй силовой.По стоимости не дороже а по надежности и точности в разы лучше чем реле.

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017
void loop() { 
Serial.print(pulseIn(echoPin, HIGH));  
}