Sketch запускается и продолжает рассчитывать на внешнее питание, но не на usb

Спасибо за добавление, полный новичок здесь (электроника и ардуино) в своем первом проекте.

Попытка сделать счетчик для пресс-подборщика с двумя датчиками эффекта HAL (контакты 5 и 6) и выводом данных на дисплей I2C. Один подсчитывает количество хлопьев в тюке, а другой — количество тюков (сбрасывая количество хлопьев в каждом тюке и отображая среднее значение)

При питании от USB я отлично работаю, подключаю 12 В, и счетчик просто сходит с ума и продолжает считать, даже если магнит не проходит мимо датчика.

  • Я проверил, есть ли 5 В на контакте 5 В.
  • Как только вы снимаете триггер с контакта 5 или 6, соответствующий счетчик останавливается, вставьте что-нибудь в контакт (хоть кусочек провода или диода), и счетчик снова начнет сниматься.
//Счетчик тюков и хлопьев
//Лоренс Хауттен
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
// контакты i2c
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //
// устанавливаем константу для переключателя наклонаPin
const int flakePin = 6;
const int balePin = 7;

int bales = 0;
int flakes = 0;
int avflakes = 0;

// переменная для хранения значения flakePin & int switchState = 0;
int baleswitchState = 0;

// переменная для хранения предыдущего значения флейкепина
int prevSwitchState = 0;
int prevBaleswitchstate = 0;

void setup() {  
  // установить количество столбцов и строк на ЖК-дисплее
  lcd.begin(16, 2);

  // устанавливаем контакт переключателя в качестве входа
  pinMode(flakePin,INPUT);
  pinMode(balePin,INPUT);

 lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Flakes: 0");
}

void loop() {  
  // проверяем состояние переключателя
  switchState = digitalRead(flakePin);
  baleswitchState = digitalRead(balePin);

  // сравниваем switchState с его предыдущим состоянием
  if (baleswitchState != prevBaleswitchstate){
    if (baleswitchState == LOW) {
      bales = bales + 1;
      flakes = 0;
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Flakes:");
      lcd.setCursor(8, 0);
      lcd.print(flakes);
      lcd.print("/");
      lcd.print(avflakes/bales);
      lcd.setCursor (0,1);
      lcd.print("Bales:");
      lcd.setCursor (8,1);
      lcd.print(bales);
    }
  }
  if (switchState != prevSwitchState) {
    if (flakes>13){
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Flakes:");
      lcd.setCursor(8, 0);
      lcd.print("Speed UP");
    }
    if (switchState == LOW) {
      flakes = flakes + 1;
      avflakes=avflakes+1;
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Flakes:");
      lcd.setCursor(8, 0);
      lcd.print(flakes);
      lcd.print("/");
      lcd.print(avflakes/bales);
      lcd.setCursor (0,1);
      lcd.print("Bales:");
      lcd.setCursor (8,1);
      lcd.print(bales);
    }
  }
  // сохранить текущее состояние переключателя как последнее состояние
  prevSwitchState = switchState;
  prevBaleswitchstate = baleswitchState;
}

, 👍-1

Обсуждение

Отредактируйте свой код, чтобы опубликовать его правильно - отступы строк с 4 пробелами, я думаю, сделают это. Это 12 В постоянного тока, а не переменного тока? Регулятор и конденсаторы на самом деле не предназначены для преобразования переменного тока в постоянный в тяжелых условиях., @CrossRoads

Можешь показать свою проводку? Что за питание 12В? Возможно, блок питания издает шум, вызывающий срабатывание датчиков Холла., @Nick Gammon

Ваши датчики на эффекте Холла имеют логический выход или аналоговый? Я видел оба типа - логический выход будет иметь только ВЫСОКИЙ или НИЗКИЙ, но аналоговый будет изменять выходное напряжение в соответствии с силой и полярностью магнитного поля. Если логический выход, то он с открытым коллектором и, следовательно, нуждается в подтягивании или подтягивании?, @jose can u c

Я постараюсь исправить код и загрузить схему, когда доберусь до своего компьютера. У меня 12В 1.25А. Я считаю, что датчики HAL являются аналоговыми (поправьте меня, если я ошибаюсь), потому что мне сказали, что я должен поставить резистор на 10 кОм, чтобы остановить колебания напряжения при приближении магнита. Но не имеет значения, подключен ли датчик или кусок провода, как только на любом из контактов есть что-то, скетч начинает работать и продолжает считать, пока этот провод не будет вытащен из контакта., @Lumpy

Надеюсь, что схема правильная, я использовал fritzing, так как пока не знаю, как это сделать по-другому. Я поставил 9-вольтовую батарею вместо 12-вольтового источника питания, он работает нормально, поэтому в следующий раз попробуйте его на 12-вольтовом автомобиле., @Lumpy


1 ответ


0

Подходит ли питание 12 В от работающего автомобиля? А USB от компа? Arduino находится в одном и том же месте для обоих тестов или он находится на вашем столе с USB и на автомобиле для теста 12 В?

Известно, что автомобильная электросеть шумная: перепады напряжения, скачки напряжения. Я успешно запустил Arduino в своей машине, питаемой от зарядного устройства USB 5 В в гнезде прикуривателя. Даже с термодатчиком на куске кабеля Cat-5, выходящим из капота и через окно водителя (не спрашивайте! :) У меня были довольно устойчивые показания, и мой дисплей (I2C OLED) был твердым. Но ожидайте, что большая часть внешней проводки будет действовать как антенна и улавливать часть этого шума. Возможно, вам придется выполнить сглаживание или усреднение данных, чтобы очистить их.

Обновление:

В конечном итоге готовое устройство будет установлено на трактор с датчиками примерно в 4 метрах назад

Посмотрите, решит ли проблему автомобильное USB-зарядное устройство на стенде. Есть ли у трактора розетка "прикуриватель", как у автомобиля? Если нет, то они доступны как отдельная часть.

Подавление зажигания, чтобы не мешать радио, как в автомобиле? Или у пресс-подборщика свой двигатель (скорее всего не глушенный)? Если нет подавления, вам может понадобиться поместить Arduino в металлический ящик, заземленный на раму трактора, и использовать экранированный кабель между коробкой и датчиками. А если все равно будет шумно, то можно и коробку поближе к датчикам расположить - этот кабель будет как антенна для шума; вам нужно свернуть его.

,

На данный момент постоянный источник питания в том же месте., @Lumpy

В конечном итоге готовое устройство будет установлено на тракторе с датчиками примерно в 4 метрах назад на пресс-подборщике для подсчета ходов плунжера и количества тюков, поэтому, пока мощность фильтруется, я надеюсь, что все будет хорошо (не знаю о дешевом легком бар но), @Lumpy