<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; Эмулятор датчика положения коленчатого вала и распредвала]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=580&amp;type=atom" />
	<updated>2023-09-23T19:56:37Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=580</id>
		<entry>
			<title type="html"><![CDATA[Re: Эмулятор датчика положения коленчатого вала и распредвала]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8674#p8674" />
			<content type="html"><![CDATA[<p>Что нужно добавить чтоб вывести два сигнала с шестерни 60 и 36 зубов на разные пины?</p>]]></content>
			<author>
				<name><![CDATA[sabicoha]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2175</uri>
			</author>
			<updated>2023-09-23T19:56:37Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8674#p8674</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Эмулятор датчика положения коленчатого вала и распредвала]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=8669#p8669" />
			<content type="html"><![CDATA[<p>Добрый вечер.Нужна помощь в написании скетча для запуска эбу на столе .С задающим диском синхронизации «60-2».Есть скетч с интернета но там сигнал коленвала срегулировкой оборотов а нужен еще распредвала. Хотелось в перспективе иметь возможность добавлять другие сигналы с другим количеством зубов.Подключить энкодер и LCD1602 для отображения сигнала. </p><div class="codebox"><pre><code>// 1 зуб = 2 полупериодам, т.к. полупериод - это время между сигналами 0 и 1. 2 таких сигнала и составляют импульс, т.е. 1 зуб:
// при 36-зубной шестерни вала, 200 об/мин возможны на полупериоде = 4.2 мс, 5000 об/мин - при 0.168 мс
// при 60-зубной шестерни вала, 200 об/мин возможны на полупериоде = 2.5 мс, 5000 об/мин - при 0.1 мс
// при 60 зубах на шестерне коленвала 1 оборот происходит за 72 мс
// при 36 зубах на шестерне коленвала 1 оборот происходит за 43.2 мс

int gear = 60;                  // кол-во зубов шестрени вала
int poluperiod;               // полупериод (мкс)

void setup()  
{
   pinMode(2, OUTPUT);          // 2 пин назначен на выдачу импульсов
   pinMode(A1, INPUT);          // к входу A1 подключаем потенциометр
}

void loop() {
  int val = analogRead(A1);                       // считываем данные с порта A1 (значения потенциометра от 0 до 1023)
  if (gear == 60){                                // для шестерни с 60 зубами
    poluperiod = map(val, 0, 1023, 2500, 100);     // переводим val в новый диапазон от 2500 мкс до 100 мкс и присваиваем знаение потенциометра полупериоду
  }else if(gear == 36){                           // для шестерни с 36 зубами
    poluperiod = map(val, 0, 1023, 4200, 168);   // переводим val в новый диапазон от 4200 мкс до 168 мкс
  }
   
  for(int a=1; a &lt;= gear - 2; a++){               // gear - 2 - отнимаем 2 пропущенных зуба от кол-ва зубов шестерни
    digitalWrite(2, HIGH); 
    delayMicroseconds(poluperiod);
    digitalWrite(2, LOW);
    delayMicroseconds(poluperiod);
  }
  delayMicroseconds(poluperiod * 4);                          // кол-во импульсов до задержки в 2 импульса = 2 зуба
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[sabicoha]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2175</uri>
			</author>
			<updated>2023-09-21T18:45:54Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=8669#p8669</id>
		</entry>
</feed>
