Перейти к содержанию

evkuch

Members
  • Постов

    7
  • Зарегистрирован

  • Посещение

Весь контент evkuch

  1. вот такая конструкция получилась. сейчас бьюсь с регулировкой ускорения..... Но пока никак.....
  2. не могу найти в исходнике часть кода, который отвечает за ускорение приемного вала.. хочу доработать- плавное ускорение и торможение на каждом слое
  3. void loop() { buttonStater = digitalRead(RIGHT_BUT);///////////////// buttonStatel = digitalRead(LEFT_BUT);///////////////// buttonStatet = digitalRead(TURBO_BUT);///////////////// if ((buttonStater == LOW) && (buttonStatet == HIGH)) //(RIGHT_BUT ==LOW) { for(int x = 0; x < stepsPerRevolution; x++)/////////////////////РУЧНАЯ ПОДГОНКА УКЛАДЧИКА.................................................................. { digitalWrite(EN_STEP, LOW); // разрешение управления двигателями // digitalWrite(EN_STEP, HIGH); // Запрет управления двигателями digitalWrite(DIR_A, HIGH);// по часовй digitalWrite(STEP_A, HIGH);////////////////////////// delayMicroseconds(500);///////////////////////////2000 digitalWrite(STEP_A, LOW);//////////////////////////// delayMicroseconds(500);/////////////////////////2000 } } if ((buttonStater == LOW) && (buttonStatet == LOW)) //(RIGHT_BUT ==LOW) { for(int x = 0; x < stepsPerRevolution; x++)/////////////////////РУЧНАЯ ПОДГОНКА УКЛАДЧИКА.................................................................. { digitalWrite(EN_STEP, LOW); // разрешение управления двигателями // digitalWrite(EN_STEP, HIGH); // Запрет управления двигателями digitalWrite(DIR_A, HIGH);// по часовй digitalWrite(STEP_A, HIGH);////////////////////////// delayMicroseconds(50);///////////////////////////2000 digitalWrite(STEP_A, LOW);//////////////////////////// delayMicroseconds(50);/////////////////////////2000 } } else{digitalWrite(EN_STEP, HIGH); // Запрет управления двигателями (buttonStater == HIGH); } if ((buttonStatel == LOW) && (buttonStatet == HIGH)) ///(LEFT_BUT ==LOW) { for(int y = 0; y < stepsPerRevolution; y++)///////////////////// { digitalWrite(EN_STEP, LOW); // разрешение управления двигателями digitalWrite(DIR_A, LOW);//против часовой digitalWrite(STEP_A, HIGH);////////////////////////// delayMicroseconds(500);///////////////////////////2000 digitalWrite(STEP_A, LOW);//////////////////////////// delayMicroseconds(500);/////////////////////////2000 (buttonStatel == HIGH); } } if ((buttonStatel == LOW) && (buttonStatet == LOW)) ///(LEFT_BUT ==LOW) { for(int y = 0; y < stepsPerRevolution; y++)///////////////////// { digitalWrite(EN_STEP, LOW); // разрешение управления двигателями digitalWrite(DIR_A, LOW);//против часовой digitalWrite(STEP_A, HIGH);////////////////////////// delayMicroseconds(50);///////////////////////////2000 digitalWrite(STEP_A, LOW);//////////////////////////// delayMicroseconds(50);/////////////////////////2000 (buttonStatel == HIGH); } } else{digitalWrite(EN_STEP, HIGH);// Запрет управления двигателями (buttonStatel == HIGH); } //digitalWrite(EN_STEP, HIGH); // Запрет управления двигателями if (Encoder_Dir != 0) { // Проверяем изменение позиции энкодера switch (Menu_Index) { // Если позиция энкодера изменена то меняем Menu_Index и выводим экран case Autowinding: Menu_Index = constrain(Menu_Index + Encoder_Dir, Autowinding, PosControl); break; case PosControl: Menu_Index = constrain(Menu_Index + Encoder_Dir, Autowinding, PosControl); break; кнопки сидят на пинах -d6,d9 и a0, общие контакты на корпусе Arduino pinout diagram: __________________ | USB | | GND| | 13| DIR A укладчик |RESET 12| STEP A Укладчик |3V3 #11| STOP BT |5V #10| BUZ OUT |GND #9| RIGHT BUT ///////////// |VIN 8| EN STEP | | | 7| DIR Z приемник | #6| LEFT BUT///////////////// TURBO BUT // |A0 14 #5| ENCODER CLK LCD EN |A1 15 4| STEP Z приемник LCD D4 |A2 16 INT1 #3| ENCODER SW LCD D5 |A3 17 INT0 2| ENCODER DT I2C LCD D6 |A4 18 SDA TX 1| I2C LCD D7 |A5 19 SCL RX 0| |A6 | |A7________________ A0-
  4. добавил в схему две отдельные кнопки для управления укладчиком. Стало намного удобнее управлять им...Сейчас думаю как сделать ускорение на втором слое.
  5. была такая-же проблема. Оказалось, что в скетче v2 перепутаны некоторые строчки и скобки в районе sei/ надо так- TCCR1B=(0<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10); // Режим работы таймера/счетчика - CTC (очистить таймер при достижении значения в регистре сравнения OCR1A) OCR1A = 20000; // Значение в регистре OCR1A определяет частоту входа в прерывание таймера и устанавливает скрость вращения двигателей sei(); // lcd.begin(20,4); // Инициализация LCD Дисплей 20 символов 4 строки // lcd.begin(16,2); // Инициализация LCD Дисплей 16 символов 2 строки lcd.clear(); sprintf(Str_Buffer, Menu[0].format); lcd.print(Str_Buffer); // Выводим первую строку на экран lcd.setCursor(0,1); sprintf(Str_Buffer, Menu[1].format); lcd.print(Str_Buffer); // Выводим вторую строку на экран // PrintSymbol(0,0,0x3E); // Выводим символ ">" на 0,0 LCD }
  6. Приветствую всех! Собрал и тестирую данный станок. Да, управление энкодером конечно удобно. Но в режиме позиционирования, при премещении укладчика провода к предполагаемому первому витку это не очень удобно. При минимальном значении stepmul очень долго приходится крутить энкодер, а при значении 200( один оборот) укладчик перемещается быстро и проскакивает положение первого витка.Это касается если провод очень тонкий. Удобнее было использовать две кнопки: 1- движение укладчика влево. 2- движение укладчика вправо. И второй момент- при завершении намотки последнего витка происходит остановка двигателя приемной катушки с последующим снятием его с удержания. Я думаю, что лучше не снимать его с удержания т.к витки могут сползти.
  7. схему подавителя дребезга контактов паять обязательно? или она реализована программно?
×
×
  • Создать...