Ви не увійшли.
По земляному проводу датчика (даже по его части) не должны протекать посторонние токи.
В идеале земляные провода от всех компонентов системы должны соединяться в одной точке у источника питания.
Датчик по цепям питания зашунтировать конденсатором 1000 мкФ
никто не знает что у вас за моторчики.
и чего вы решили что они должны крутиться быстрее ?
Подключил два моторчика к драйверу L298N. Ардуино питается от 7.2v то есть от дух аккумуляторов по 3.4v , но моторчики крутятся очень медленно. Я пробовал запитать ардуино от USB и моторчики крутилися нормально. Помогите разобраться.
Может ли мотор брать больше, чем может пропускать L9110 и из-за этого появляться помехи ? Микросхема на L9110 сильно греется во время нагрузки.
вы бы сначала глянули соответствие рабочего тока движков и драйвера.
Может, при механической перегрузке или неисправности.
Может ли мотор брать больше, чем может пропускать L9110 и из-за этого появляться помехи ? Микросхема на L9110 сильно греется во время нагрузки.
Схема точно такая, как на рисунке. Убрал из проекта все остальное.
Видать, с питанием и/или землями напутали если мотор, под нагрузкой, так мешает.
int encoder_pin = 2;
volatile int pulses = 0;
static volatile unsigned long debounce = 0;
void setup(){
Serial.begin(115200);
pinMode(encoder_pin, INPUT);
attachInterrupt(0, counter, RISING);
pinMode(22, OUTPUT);
pinMode(23, OUTPUT);
digitalWrite(22,LOW);
digitalWrite(23,HIGH);
}
void loop(){
delay(1000);
Serial.println(pulses);
}
void counter(){
if( digitalRead (encoder_pin) && (micros()-debounce > 1000) && digitalRead (encoder_pin) ) { // если использовать задержку
debounce = micros();
pulses++;
}
}
Собрал еще раз всю схему на столе, считает прерывания правильно даже без конденсаторов (напаял и на мотор 100nF) и задержки в counter.
Мотор должен крутить вал и собирать римскую штору на окне.
А для проекта используются провода длиной 2 метра от драйвера до мотора и от ардуино до датчика. И похоже, проблема проявляется на длинных проводах... Но все равно не уверен. Попробовал с длинными проводами на столе - работает. Подключаю к шторе - появляются лишние срабатывания, причем только когда идет максимальная нагрузка, при подъеме, на спуске все нормально.
а где код....
Есть такая схема :
Мега, к ней на пин 2 подключен оптический энкодер, на пин 22, 23 подключен драйвер двигателя, Мега запитана оn USB.
К драйверу подключен GEAR мотор (не шаговый).
Энкодером нужно считать обороты мотора, использую колесо на валу с одной прорезью (один оборот - одно срабатывание)
Проблема : без нагрузки на мотор, показания энкодера точные. При нагрузке появляются ложные срабатывания, причем не единичные, а десятками.
Пробовал два варианта устранения ложных срабатываний предложенных тут http://androminarobot-english.blogspot.com/2017/03/encoder-and-arduinotutorial-about-ir.html
1 - конденсатор 100nF на DO и GND энкодера
2 - добавить задержку 500 микросекунд между срабатываниями
Результат практически не меняется.