Конечно можно
 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				Конечно можно
 
			
			 
					
				
			
			 
			
				 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				Считаю частоту выдачи сигнала датчиком холла (готовлюсь к замерам датчика скорости).
Подключил эл. двигатель через реле, на двигатель насажена железка, которая вращаясь перекрывает датчик холла.
При выводе через "Serial Monitor" - Serial.println(delta), показываются значения в милисекундах от включенного состояния датчика до выключенного. Все бы ничего, но проскакивают какие-то случайные значения (от наводок что-ли)...
Как быть?
Вот код:
Код:int RelayPin = 14; // Connect Relay to input pin 2 int HallPin = 3; // Connect Hall to input pin 3 void setup() { Serial.begin(9600); pinMode(RelayPin, OUTPUT); // declare Relay as output pinMode(HallPin, INPUT); // датчик холла digitalWrite(HallPin, HIGH); //внутренняя подтяжка attachInterrupt(1, int_on, FALLING); // настроить прерывание interrupt 1 на pin 3 } void int_on() { delta = millis() - miliss; miliss = millis(); Serial.println(delta); } void loop() { RelayOn=HIGH; digitalWrite(RelayPin, RelayOn); // реле включить }
Последний раз редактировалось kadushkin; 04.01.2012 в 01:31.
 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				А реле ты как подключил? Возможно что помеха от него или магнитное поле не достаточное для датчика
Нужно считать сами импульсы, а не их длительность
На форуме есть много примеров , и код спидометра тоже кто то уже выкладывал
Последний раз редактировалось Chip; 04.01.2012 в 02:09.
 
			
			 
					
				
			
			 
			
				 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				Реле для ардуино - RELAY
Датчик холла уже с магнитом (встроенным), в прорезь между магнитом и датчиком железка входит...
Код спидометра я смотрел...
Длина импульса почему-то не стабильно выдается...Код:dinaimpulsov = pulseIn(3, HIGH, 100000);
А как количество импульсов посчитать?
 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				Возьми за основу вот этот код
 
			
			 
					
				
			
			 
			
				 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				Все равно наводки...
Попробую в машине, возможно помехи от привода идут...
Вот такой код попробую:
Буду подключать вот так...Код:int HallPin = 3; // Контакт для датчика скорости unsigned long speedtime = 0; int count = 0; unsigned long time; float lkolesa; //длина окружности колеса float Speed; void setup() { pinMode(HallPin, INPUT); // датчик холла digitalWrite(HallPin, HIGH); //внутренняя подтяжка входа датчика холла attachInterrupt(1, int_on, FALLING); Serial.begin(9600); } void loop() { } void int_on() { count++; //увеличить счетчик if (count >=6) { speedtime = micros()-time; //время прихода 6-ти импульсов time = micros(); //обнулить lkolesa=0.686; // длина окружности колеса 215/65 R16 = 686мм Speed=((lkolesa*3600000)/speedtime); // км/ч Serial.println(speedtime); // длина между 6-ю импульсами Serial.println(Speed); // км/ч count = 0; } }
Только никак не пойду как сигнал с цифрового входа дальше пойдет, ну пройдет он диод, а дальше-то что.... там же не земля, а выход с панели приборов (без нагрузки) +12В.
Если смотреть наоборот то сигнал 12В, через диод не пройдет ....
Объясните на пальцах...
Последний раз редактировалось kadushkin; 04.01.2012 в 15:49.
 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				Я думаю что проблема в другом.
В прерывании не стоит использовать такую медленную функцию как Serial.println да еще на такой медленной скорости.
И я приводил пример кода , лучше использовать MSTimer2
Последний раз редактировалось Chip; 04.01.2012 в 18:39.
 
			
			 
					
				
			
			 
			
				 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				Ну то есть:
Код:void setup() { ... pinMode(HallPin, INPUT); // датчик холла digitalWrite(HallPin, HIGH); //внутренняя подтяжка входа датчика холла MsTimer2::set(30000, flash); // таймер будет срабатывать через каждые 500ms MsTimer2::start();//запустить таймер ... } void flash() //обработка прерывания таймера { if ((digitalread(HallPin)==HIGH) { обработка кода } }
 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				Примерно так
Получишь число импульсов за пол секунды, рассчитай на их основе скорость
PHP код:void setup()
{
attachInterrupt(1, int_on, RISING);
Serial.begin(115200);
pinMode(HallPin, INPUT); // датчик холла
digitalWrite(HallPin, HIGH); //внутренняя подтяжка входа датчика холла
MsTimer2::set(500, flash); // таймер будет срабатывать через каждые 500ms
MsTimer2::start();//запустить таймер
count=0;
}
void flash() //обработка прерывания таймера
{
count=0;
Serial.println(speed);
}
void int_on()
{
count++; //увеличить счетчик
}
Последний раз редактировалось Chip; 04.01.2012 в 20:10.
 
			
			 
					
				
			
			 
			
				 Re: Датчик холла 12В использование с ардуино
 Re: Датчик холла 12В использование с ардуино
				В очередной раз спасибо за подсказку, код поправил...
Последний раз редактировалось kadushkin; 04.01.2012 в 22:54.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)