Ветка обсуждения проекта Наливатор.
Видео:
Делитесь своими вариантами изготовления, модификациями и улучшениями!
Видео:
Делитесь своими вариантами изготовления, модификациями и улучшениями!
Изменено:
const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 };
Так а какая разница что передаётся на двигатель. Важно знать что при установленом дроблении на драйвере 1/1 - каждый импульс приходящий на пин step будет поворачивать двигатель на один шаг (чаще всего 1.8 градуса). Если на драйвере установить дробление шага например 1/2 - то каждый импульс приходящий на step будет поворачивать двигатель на половину его шага, при дроблении 1/2 получается на 0.9 градуса (чаще всего). Как-то так. Но я непредставляю как это делается в прошивке@VICLER, это все замечательно как это сделать на драйвере это понятно... у меня непонимание возникает при передаче сигнала от драйвера к шаговику - что передается ? как на двигателе с определенным шагом добиться деления на 256. что передается на двигатель?
4 контакта, на которые передаются 0 или 1 это 2 в 4 степени, т.е. 16 вариантов в принципе. Как добиваются выше не понимаю. Или там уже идут не 0 и 1 , а дробные части ? типа 0.1 и 0.9 ? это вариант, тогда мотор может встать в какое то промежуточное положение.
Хм.. тогда есть возможность интересного управления путем подключения к аналоговым выходам. Чисто ради понимания
Такой движок можно попробовать использовать, но возможно момент у него будет меньше, чем у серводвигателя и его просто будет недостаточно для передвижения крана со шлангом. Есть много шаговых двигателей, но именно 28byj показался мне идеальным вариантом из-за компактности и достаточного момента.Парни а если шаговик от принтака использовать? например такой
Думаю это Вам поможет немного@VICLER, это все замечательно как это сделать на драйвере это понятно... у меня непонимание возникает при передаче сигнала от драйвера к шаговику - что передается ? как на двигателе с определенным шагом добиться деления на 256. что передается на двигатель?
4 контакта, на которые передаются 0 или 1 это 2 в 4 степени, т.е. 16 вариантов в принципе. Как добиваются выше не понимаю. Или там уже идут не 0 и 1 , а дробные части ? типа 0.1 и 0.9 ? это вариант, тогда мотор может встать в какое то промежуточное положение.
Хм.. тогда есть возможность интересного управления путем подключения к аналоговым выходам. Чисто ради понимания
У меня первый лазерный выжигатель был собран на двигах от принтера, прекрасно тянул 2-х ватный лазер... Правда грелся, трохи.Такой движок можно попробовать использовать, но возможно момент у него будет меньше, чем у серводвигателя и его просто будет недостаточно для передвижения крана со шлангом. Есть много шаговых двигателей, но именно 28byj показался мне идеальным вариантом из-за компактности и достаточного момента.
Да, вы правы. Так и есть. Я повторяю то что сделали другие, потому что сам не умею программы составлять. Таких как я много,... В конце концов кто ещё проверит то что выкладывают бОлее грамотные люди@konoev, ага, так же многие наливатор собирают, какая разница что там происходит, в этой коробочке, я вот нажимаю кнопку и мне наливают, а потом я в рот пью![]()
/***************************************************
Copyright (c) 2017 Luis Llamas
(www.luisllamas.es)
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License
****************************************************/
#include "AsyncStepperLib.h"
#include <Stepper.h>
const int motorPin1 = 8;
const int motorPin2 = 9;
const int motorPin3 = 10;
const int motorPin4 = 11;
const int numSteps = 8;
const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 };
int stepCounter = 0;
bool is_stop = false;
void clockwise()
{
stepCounter++;
if (stepCounter >= numSteps) stepCounter = 0;
setOutput(stepCounter);
}
void anticlockwise()
{
stepCounter--;
if (stepCounter < 0) stepCounter = numSteps - 1;
setOutput(stepCounter);
}
void setOutput(int step)
{
digitalWrite(motorPin1, bitRead(stepsLookup[step], 0));
digitalWrite(motorPin2, bitRead(stepsLookup[step], 1));
digitalWrite(motorPin3, bitRead(stepsLookup[step], 2));
digitalWrite(motorPin4, bitRead(stepsLookup[step], 3));
}
const int stepsPerRevolution = 4076;
AsyncStepper stepper1(stepsPerRevolution,
[]() {
clockwise();
},
[]() {
anticlockwise();
}
);
void rotateCW()
{
delay(500);
stepper1.Rotate(30, AsyncStepper::CW, rotateCCW);
}
void rotateCCW()
{
delay(500);
stepper1.Rotate(30, AsyncStepper::CCW, rotateCW);
}
void StopStepper()
{
if (is_stop) return;
stepper1.Stop();
is_stop = true;
}
void setup()
{
Serial.begin(115200);
pinMode(2, INPUT_PULLUP);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
stepper1.SetSpeedRpm(12);
stepper1.RotateContinuos(AsyncStepper::CCW);
attachInterrupt(0, StopStepper, FALLING );
while (!is_stop)
{
stepper1.Update();
}
Serial.println("END");
delay(1000);
stepper1.Rotate(2, AsyncStepper::CW,rotateCW);
}
void loop()
{
stepper1.Update();
}
//========================================================================================================================//
void ShowFPS()
{
static uint32_t tm_m = 0;
static uint32_t cnt_m = 0;
cnt_m++;
if ((millis() - tm_m) > 1000)
{
Serial.print("loop per sec: "); Serial.println(cnt_m);
cnt_m = 0;
tm_m = millis();
}
}
Серво и так сверху, колонна 42*42мм.А Если расположить серво сверху, то колону можно сделать намного тоньше т.к. корпус серво не будет мешать трубке и шлангу.
А можно размеры у вас узнать? хочу построить такую же.Серво и так сверху, колонна 42*42мм.
А можно размеры у вас узнать? хочу построить такую же.
в файле gyverdrink:У меня система ждет 15 секунд и выключается. Как мне отключить эту функцию или может продлить?