Намоточный станок на ардуино.

Рабочие проекты Ардуино
Аватара пользователя
RASL94
Сообщения: 28
Зарегистрирован: 25 июл 2018, 19:10

Намоточный станок на ардуино.

Сообщение RASL94 » 09 авг 2018, 01:02

необходимо сделать плату управления для намоточного станка. количество оборотов хотелось бы считывать щелевым оптроном, управление двигателем через ШИМ. индикация на дисплее 1602, либо на трехразрядном семисегментном индикаторе, если на ЖК дисплее не будет хватать скорости обновления. Искал примеры в интернете, почему то даже нормальных счетчиков импульсов на ардуино нет. Плюс хотелось бы сделать кнопки для намотки заданного количества витков. с чего начать?


Аватара пользователя
RASL94
Сообщения: 28
Зарегистрирован: 25 июл 2018, 19:10

Re: Намоточный станок на ардуино.

Сообщение RASL94 » 10 авг 2018, 01:20

все работает на низких оборотах, но если обороты немного больше, то совсем не точно, и шим работает не адекватно. в чем может быть дело?

Код: Выделить всё

volatile byte rpmcount;
unsigned int rpm; // сохраняем обороты

int a=0;
volatile unsigned int dist, distantion = 0;

const int buttonPin = 2;
int buttonState = 0;

#include <LiquidCrystal.h> // библиотека экрана

LiquidCrystal lcd(12, 11, 10, 8, 7, 6);


#include <Button.h>
Button but1 (2, 50); // создание объекта для кнопки


void setup()
{

  pinMode(buttonPin, INPUT);
  Serial.begin(9600);
  lcd.begin(16, 2);  // инициализируем дисплей
 pinMode (9, OUTPUT); // инициализация вывода 9 как "Выход"
 
  attachInterrupt(1, rpm_fun, FALLING);// функция прерывания только при смене значения с 1 на 0
  rpmVse = 0;
  rpmcount = 0;
  rpm = 0;
 

delay(5);
  but1.flagClick = false;

 
}

void loop()
{
rpmcount = 0;
buttonState = digitalRead(buttonPin);

if (but1.flagClick == true){
   rpm=0 ;
   lcd.clear();
  }

 
  int sensorValue = analogRead (A0);
  analogWrite (9, sensorValue*4);
 
  lcd.setCursor(0, 1);
  lcd.print(rpm);
Serial.println(rpm);
  rpm = rpm+rpmcount;
  rpmcount = 0;
   
}

void rpm_fun()
{
  //обновляем счетчик
  rpmcount++;// прибавляем единицу к полученому
}


Аватара пользователя
RASL94
Сообщения: 28
Зарегистрирован: 25 июл 2018, 19:10

Re: Намоточный станок на ардуино.

Сообщение RASL94 » 14 авг 2018, 21:09

простенький код, считает обороты(не определяет направление и без обратного хода) обороты двигателя управляются ШИМом

Код: Выделить всё

#include <TimerOne.h>

unsigned int timeCounter; // счетчик времени

volatile int rpmcount;
unsigned int rpm; // сохраняем обороты

#include <LiquidCrystal.h> // библиотека экрана

LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

#include <Button.h>
Button but1 (3, 50); // создание объекта для кнопки сброса счетчика

void setup()
{ Timer1.initialize(250); // инициализация таймера 1, период 250 мкс
  Timer1.attachInterrupt(timerInterrupt, 250); // задаем обработчик прерываний

  Serial.begin(9600);
  lcd.begin(16, 2);  // инициализируем дисплей
  pinMode (5, OUTPUT); // инициализация вывода 5 как "Выход"
  lcd.setCursor(0, 0);
  lcd.print("WINDING COILS");

  lcd.setCursor(0, 1);
  lcd.print("vitki");
  attachInterrupt(0, rpm_fun, FALLING);// функция прерывания только при смене значения с 1 на 0

  rpmcount = 0;
  rpm = 0;

  but1.flagClick = false;
}

void loop()
{
  if ( but1.flagClick == true ) { //обнуляем значения, и очищаем дисплей
    but1.flagClick = false;
    rpm = 0;
    lcd.setCursor(7, 1);
    lcd.print("0       ");
  }
  else if ( but1.flagClick == false) {
    rpmcount = 0;
    int sensorValue = analogRead (A0);
    analogWrite (5, sensorValue / 4);
    lcd.setCursor(7, 1);
    lcd.print(rpm);
    Serial.println(sensorValue);
    rpm = rpm + rpmcount;
  }
}
void rpm_fun()
{
  //обновляем счетчик
  rpmcount++;// прибавляем единицу к полученому
}
void timerInterrupt() {
  but1.filterAvarage(); // вызов метода фильтрации кнопки
  timeCounter++; // счетчик времени
}

хотелось бы добавить определять направление и если перемотал витки определять сколько витков ты отматываешь, думаю добавить второй щелевой оптрон, может кто ни будь подскажет как все это реализовать?


Вернуться в «Проекты Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя