Помогите с шаговым двигателем
- Войдите на сайт для отправки комментариев
Чт, 27/03/2014 - 18:05
определяем номер шага и значение SWR - сравниваем с тем что запомнили вначале, если новое значение лучше, то запомнинаем новое и номер шага, после полного оборота выбираем лучшее. Помогите. И как добавить еще один шаговый двигатель
// Подключаем библиотеку дисплея:
#include <LiquidCrystal.h>
// Подключаем библиотеку шагового двигателя:
#include <Stepper.h>
// Количество шагов мотора:
#define STEPS 48 // Шагов на оборот
// Подключаем математические функции:
#include "math.h"
// Объявляем переменные и приводим их в порядок:
float SWRpad = 0;
float SWRotr = 0;
float SWR = 0;
// Прописываем пины индикатора:
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
// Создает класс шагового двигателя и объявляет какими ножками:
Stepper stepper(STEPS, 8, 9, 10, 11);
void setup ()
{
analogReference(DEFAULT); // Стандартное опорное напряжение 5 В
lcd.begin(16, 2); // Задаем размерность экрана, 2 строки по 16 символов
// Установление скорости оборотов двигателя в оборотах в минуту (RPM)
stepper.setSpeed(30);
}
void loop ()
{
// Считываем в порт значение частоты:
SWRpad = analogRead(A2); // Читаем со второй ноги аналогово входа напряжение падающей волны
SWRotr = analogRead(A1); // Читаем с первой ноги аналогово входа напряжение отраженной волны
// Расчет и вывод КСВ:
SWR = (SWRpad + SWRotr)/(SWRpad - SWRotr);
// определяем номер шага и значение SWR - сравниваем с тем что запомнили вначале,
// если новое значение лучше, то запомнинаем новое и номер шага
// после полного оборота выбираем лучшее
lcd.setCursor(0, 0);
lcd.print(" SWR ");
if (SWR>1) {
lcd.setCursor(4, 0);
lcd.print(">1");}
else if (SWR > 3) {
// Один полный круг вперед круг=шаг?
stepper.step(1*STEPS);
delay(1000); // задержка определяется временем на шаг двигателя
// Один полный круг назад
stepper.step(-1*STEPS);
delay(1000);
lcd.setCursor(4, 0);
lcd.print(SWR);
}
// Задержка и очистка экрана:
delay (100);
lcd.clear();
}
Думаю что вот так !
// Подключаем библиотеку дисплея: #include <LiquidCrystal.h> // Подключаем библиотеку шагового двигателя: #include <Stepper.h> // Количество шагов мотора: #define STEPS 48 // Шагов на оборот // Подключаем математические функции: #include "math.h" // Объявляем переменные и приводим их в порядок: float SWRpad = 0; float SWRotr = 0; float SWR = 0; // Прописываем пины индикатора: LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); // Создает класс шагового двигателя и объявляет какими ножками: Stepper stepper(STEPS, 8, 9, 10, 11); //Второй Мотор Stepper stepper2(STEPS, 2, 3, 4, 5); void setup () { analogReference(DEFAULT); // Стандартное опорное напряжение 5 В lcd.begin(16, 2); // Задаем размерность экрана, 2 строки по 16 символов // Установление скорости оборотов двигателя в оборотах в минуту (RPM) stepper.setSpeed(30); stepper2.setSpeed(30); } void loop () { // Считываем в порт значение частоты: SWRpad = analogRead(A2); // Читаем со второй ноги аналогово входа напряжение падающей волны SWRotr = analogRead(A1); // Читаем с первой ноги аналогово входа напряжение отраженной волны // Расчет и вывод КСВ: SWR = (SWRpad + SWRotr)/(SWRpad - SWRotr); // определяем номер шага и значение SWR - сравниваем с тем что запомнили вначале, // если новое значение лучше, то запомнинаем новое и номер шага // после полного оборота выбираем лучшее lcd.setCursor(0, 0); lcd.print(" SWR "); if (SWR>1) { lcd.setCursor(4, 0); lcd.print(">1");} else if (SWR > 3) { // Один полный круг вперед круг=шаг? stepper.step(1*STEPS); stepper2.step(1*STEPS); delay(1000); // задержка определяется временем на шаг двигателя // Один полный круг назад stepper.step(-1*STEPS); stepper2.step(-1*STEPS); delay(1000); lcd.setCursor(4, 0); lcd.print(SWR); } // Задержка и очистка экрана: delay (100); lcd.clear(); }Большое спасибо. А как сделать счетчик шагового двигателя, в данной программе?
Вот объясните мне, нахрена вам float, если analogRead() возвращает "integer values between 0 and 1023"???
Большое спасибо. А как сделать счетчик шагового двигателя, в данной программе?
Что за счетчик ??