проект автокармушка на nano, проблема такая: когда питается от usb (пк) при нажатии работает шаговый двигатель nema 17, но при подключении от аккумулятора не работает, но если отпаять один провод E+ hx711 и нажать на кнопку моторчик начинается вращаться. Питание подключается к пину vin приходит 6-8 вольт, но я так же пробовал от аккумуляторов через провод микро usb к нормальному входу тоже не работает.(погуглил нашел информацию такую как что при подаче на vin просаживается сильно и из-за этого мусор передает ацп в ардуинку и не вращается мотор. могу приложить яндекс диск с фото или указать свою соц сеть для знающего чтобы объяснили мне
сейчас проверил довод один, когда нажал на кнопку при питании от аккамуляторов и решил надавить на весы ничего не произошло, но решил и оттянуть весы на вверх и моторчик начал вращаться и когда отпустил тут же прикратился, проблема в передаче данных от hx711 могу попробовать исправить кодом, но если есть предложения слушаю внимательно !!!
Это потому, дядя Фёдор, что у тебя схемы нету…
P.S.
Да и код не выложил
#include <EEPROM.h>
#include <RTClib.h>
#include <GyverHX711.h >
#define DOUT_PIN 7
#define SCK_PI N 8
#define KOEF 5 12.0
#define TARGET_WEIG HT 25
#define FEED_SPEE D 3000
#define BT N_PIN 2
#define STEP S_FRW 18
#define STE PS_B KW 10
const byte drvPins[] = {3 , 4, 5, 6};
const byte feedT ime[][2] = {
{7, 0},
{12, 0} ,
{17, 0 },
{ 21, 0},
};
RTC_DS3231 rtc;
GyverHX711 scale(DOUT_PIN, SC K_PI N, HX_GAIN64_A);
b yte lastFedHour = 255;
byte lastFedMin = 255;
b ool lastBtnState = HI GH;
void setup() {
Serial.begin(9600);
Serial.println ("А втокормушка запуще на" );
scal e.tare();
rtc.beg in();
if (rtc.lostPower()) {
rtc.adjust(Da teTime (F(_ _DATE__), F(__TIME__)));
}
for (byte i = 0; i < 4; i++) pinMode(drvPins[i], OUTPUT);
pinMode(BTN_PI N, INPUT_PULLUP); }
void loop() {
static uint32_t tmr = 0;
if ( millis() - tmr > 500) {
tm r = mi llis();
DateTime now = rtc.now();
float currentWeigh t = getWeight();
S erial.print(now.hour());
Se rial.print(":");
Serial. print(now.minute());
Serial. print("Вес: ");
Serial.print(currentWeight);
Serial.pr intln(" г");
for (byte i = 0; i < 4; i++) {
if (feedTime[i ][0] == now.hour() && feedTime[i][1] == now.minute()) {
if (la stFedHour != now.hour() || lastFedMin != now.minute()) {
lastFed Hour = now.hour();
lastFedMin = now.min ute();
Serial.pr intln("ПЛАНОВОЕ КОРМЛЕНИЕ");
topUpToTarget();
}
break;
}
}
}
bool btnState = digitalRead (BTN_PIN);
if (btnState == LOW && lastBtnState == HIGH) {
Seria l.prin tln("РУЧНОЕ КОРМЛЕНИЕ ПО КНОП КЕ") ;
topUpToTarget();
}
lastBtnState = btnS tate ;
}
float getWeigh t() {
return scale.read() / KOEF;
}
void t opUpToTarget() {
w hile (getWeight() < TARGET_WEIGHT) {
oneRev();
de lay( 50);
}
disableMoto r();
Serial.println("Досыпка завершена");
}
void dis ableMotor() {
for (byte i = 0; i < 4; i++) digitalWrite(drvPins[i], 0);
}
void oneRev() {
static uint16_t val = 0;
for (byte i = 0; i < S TEPS _FRW ; i++) runMotor(val++);
for (byte i = 0; i < STEPS_BKW; i++) runMotor(val--);
}
vo id runMotor(int thisStep) {
static const byte steps[] = {0b1010, 0b0110, 0b0101, 0b1001};
f or (byte i = 0; i < 4; i++)
digitalWrite(drvPins[i], bitRead(steps[thisStep & 0b11], i));
delayMicroseconds(FEED_SPEED);
}
только подаеться от 6в идо 8.46 всесть блок питания на9в 2 А который питает 2 аккамулятора и от них уже идет на ардуино вот сейчас замерил 7В на драйвеере шагового двигателя
как понял просто вес уже какой=то больше 25 грамм и моторчик просто в тупую не запускается
А где аккумулятор-то?
Во-первых, на этом форуме принято писать по-русски.
Во вторых, если есть несколько вариантов, то приводить надо все, в частности:
- При питании от USB.
- При питании от аккумулятора.
- С отпаянным проводом.
- Непонятно что, но которая “тоже не работает”.
Ну и общее замечание: если возникают проблемы предположительно связанные с питанием, следует цепи питания шунтировать конденсаторами: один электролит на 100-1000 мкФ и по одному 0.1 мкФ вблизи каждого из блоков.
Напишите четче, что от чего питается в каждом случае
Примерно так:
-
от USB
- мотор от 2S АКБ
- Ардуино от 5в USB в разъем
-
от АКБ
- мотор от АКБ
- Ардуино от того же АКБ в Vin
Правильно?
Как вариант возможно мешает как в случае с сериальным “авалеблом”. В Гайверовской библе так-же есть проверки на приход данных.
