Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

MikeM
2019-07-08 18:15:21

По земляному проводу датчика (даже по его части) не должны протекать посторонние токи.
В идеале земляные провода от всех компонентов системы должны соединяться в одной точке у источника питания.
Датчик по цепям питания зашунтировать конденсатором 1000 мкФ

vvr
2019-07-08 14:01:28

никто не знает что у вас за моторчики.
и чего вы решили что они должны крутиться быстрее ?

Леня
2019-07-08 11:57:56

Подключил два моторчика к драйверу L298N. Ардуино питается от 7.2v то есть от дух аккумуляторов по 3.4v , но моторчики крутятся очень медленно. Я пробовал запитать ардуино от USB и моторчики крутилися нормально. Помогите разобраться.

vvr
2019-04-18 22:04:56
Lelik пише:

Может ли мотор брать больше, чем может пропускать L9110 и из-за этого  появляться помехи ? Микросхема на L9110 сильно греется во время нагрузки.

вы бы сначала глянули соответствие рабочего тока движков и драйвера.

Моторист
2019-04-18 19:19:26

Может, при механической перегрузке или неисправности.

Lelik
2019-04-18 18:53:21

Может ли мотор брать больше, чем может пропускать L9110 и из-за этого  появляться помехи ? Микросхема на L9110 сильно греется во время нагрузки.

Lelik
2019-04-18 18:50:42

Схема точно такая, как на рисунке. Убрал из проекта все остальное.

Моторист
2019-04-18 17:41:54

Видать, с питанием и/или землями напутали если мотор, под нагрузкой, так мешает.

Lelik
2019-04-18 15:21:00
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 метра от драйвера до мотора и от ардуино до датчика. И похоже, проблема проявляется на длинных проводах... Но все равно не уверен. Попробовал с длинными проводами на столе - работает. Подключаю к шторе - появляются лишние срабатывания, причем только когда идет максимальная нагрузка, при подъеме, на спуске все нормально.

vvr
2019-04-18 14:45:22

а где код....

Lelik
2019-04-18 11:48:16

Есть такая схема :

motor_speed.png

Мега, к ней на пин 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 микросекунд между срабатываниями

Результат практически не меняется.

Підвал форуму