Здравствуйте, появилось желание собрать своего робота с управлением по Bluetooth. Для этого здесь был куплен двойной мотор-редуктор, набор гусениц и платформа от Tamiya. Из электроники: arduino Uno sensor shield v5 bluetooth hc-05 драйвер двигателя L298N Встал вопрос с питанием проекта. На нижнем этаже пространство ограничено. Максимальная длина акумулятора 6см. Выбор пал на ZIPPY Flightmax 800mAh 2S1P 20C для питания драйвера двигателя с моторами. Подскажите сколько на нем примерно по времени можно будет откатать?
смотрите сколько ампер потребляют ваши моторы, прибавьте полампера на всю электронику - получим потребление всей системы делим 800mah на потребляемый ток и будем знать ориентировочное время для покатушек в реале получится меньше
Друзья, подскажите! Пришел ко мне ZIPPY Flightmax 800mAh 2S1P 20C. Запитал им напрямую драйвер двигателя L298N. Саму ардуинку питаю от кроны. Все собрал. Залил Спойлер: КОД const int TIMEOUT_TIME_MS = 150; unsigned long lastPilotSymbolTime; char symbol; int val; int IN1 = 7; // выводы модуля L298N подключены к следующим пинам Arduino int IN2 = 6; int IN3 = 5; int IN4 = 4; int LED = 13; // используем встроенный светодиод для индикации работы enum States { WAITING, READING, RUNNING, ERROR, TIMEOUT }; States state; States onWait(); States onRead(); States onRun(); States onError(); States onTimeout(); void setup() { Serial.begin(9600); lastPilotSymbolTime = 0; pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); //используем 13 пин как индикатор включённой ардуины pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); } void loop() { switch (state) { case WAITING: state = onWait(); break; case READING: state = onRead(); break; case RUNNING: state = onRun(); break; case TIMEOUT: state = onTimeout(); break; default: state = onError(); } } States onWait() { if (Serial.available() > 0) { return READING; } if (lastPilotSymbolTime && (millis() - lastPilotSymbolTime > TIMEOUT_TIME_MS)) { return TIMEOUT; } return WAITING; } States onRead() { symbol = Serial.read(); return RUNNING; } States onRun() { switch (symbol) { case 'W': //начало действий при полученном символе 'W' (вперед) //[ДОБАВИТЬ СВОЙ КОД НИЖЕ] digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); break; case 'S': //начало действий при полученном символе 'S' (назад) //[ДОБАВИТЬ СВОЙ КОД НИЖЕ] digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); break; case 'D': //начало действий при полученном символе 'D' (вправо) //[ДОБАВИТЬ СВОЙ КОД НИЖЕ] digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); break; case 'A': //начало действий при полученном символе 'A' (влево) //[ДОБАВИТЬ СВОЙ КОД НИЖЕ] digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); break; case 'T': //начало действий при полученном символе 'T' (остановка) //[ДОБАВИТЬ СВОЙ КОД НИЖЕ] digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); break; } return WAITING; } States onError() { //Получены неоговоренные символы. Очищаем ввод и продолжаем. //Здесь можно добавить какие-то действия для этой ситуации. //... while (Serial.available()) { Serial.read(); } return WAITING; } States onTimeout() { //Действия при таймауте. //Вероятно, связь утеряна, //но при получении контрольного символа она будет восстановлена. //Здесь, например, уместно выключить двигатели //[ДОБАВИТЬ СВОЙ КОД НИЖЕ] digitalWrite(IN1, LOW); // На пары выводов IN поданы сигналы одинакового уровня, моторы не работают digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); if (Serial.available()) { return READING; } return TIMEOUT; Все работает, но измерил напряжение котрое идет на моторы 6В, по ттх моторов максимум 3 надо. http://files.amperka.ru/datasheets/fa-130ra.pdf вопрос как его ограничить?