Шпиндель из RC привода

Шаговые и серво двигатели, шпиндели, инверторы.
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

2cme писал(а):У меня такая электроника получилась:
А у вас есть в функционале удержание оборотов шпинделя? И есть ли возможность сопряжения с EMC2?
2cme писал(а):Подключении по USB к компьютеру, в ОС распознаётся как Virtual_COM_Port.
Ну как бы и мой не без этого. В моём сопряжение через CP2102. Вот я только думаю не зря-ли я взял Atmega 8 в ней нет CTC режима ну да ладно посмотрим что по ресурсам выйдет пока забор оборотов происходит каждые 500 мс а контроллер не будет отзываться чаше чем раз в 20 мс посему если процессорного времени хватит то увеличу количество окон для датчика с 3 до 9 а может и больше тогда точности будут выше но честно если контроллер удержит обороты в приделах 1000 RPM то будет супер!
nik1 писал(а):Если есть доступ к подшипнику , то можно подвести капельную смазку
У нас в модельном спорте это нормальная практика, примерно через 30 минут работы капаем жидкое масло
Реально срок пробега увеличивается в 5 раз
Это конечно очень хорошо но блин надо было тогда раньше ибо масло будет стекать с подшипника прям на рабочий инструмент а не хотелось бы! А вот в будущем может и реализую централизованную смазку!
Baha писал(а):После сборки, обкатываю на минимальных оборотах в среднем 10 часов, очень даже помогает, от перегрева.
Спасибо попробую а то в нашем селе (Владимир) не купишь подшипников хороших! Но и оборотов я использую около 15 тыс. должны пережить это! Точно такие держали 47 тыс. перемазанные с постоянной подачей масла а оно было очень жидкое! (Двигало от пылесоса визг стоял такой что ужас в шпиндель передавалось через щюп естественно он отжил не более 400 часов). Когда я обратился в магазин на меня смотрели как на идиота типо это нереальные обороты но им не объяснить что есть сверхзвуковые бор машины до 800 тыс.!
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Шпиндель из RC привода

Сообщение 2cme »

Termzon писал(а):
2cme писал(а):У меня такая электроника получилась:
А у вас есть в функционале удержание оборотов шпинделя? И есть ли возможность сопряжения с EMC2?
Электроника состоит из 2х составляющих: силовой драйвер и логический блок управления.
Для того чтобы получить реальную стабилизацию - она должна быть на уровне силового драйвера (в некоторых моделях дорогих драйверов есть такая опция).
При фрезеровки нагрузка постоянная, а мощность двигатея обеспечивает постоянные обороты - поэтому особой необходимости в дополнительной стабилизации нет.
Termzon писал(а):
2cme писал(а):Подключении по USB к компьютеру, в ОС распознаётся как Virtual_COM_Port.
Ну как бы и мой не без этого. В моём сопряжение через CP2102. Вот я только думаю не зря-ли я взял Atmega 8 в ней нет CTC режима ну да ладно посмотрим что по ресурсам выйдет пока забор оборотов происходит каждые 500 мс а контроллер не будет отзываться чаше чем раз в 20 мс посему если процессорного времени хватит то увеличу количество окон для датчика с 3 до 9 а может и больше тогда точности будут выше но честно если контроллер удержит обороты в приделах 1000 RPM то будет супер!
Я реализовал на МК pic microchip (всего 1 чип) с хардварным USB, ШИМ для силового регулятора реализован нардварно в v3 FW.

Видео работы v1 FW: http://cnc-club.ru/forum/download/file.php?id=9937
В v3 FW добавлены доплнительные опции.
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

И вновь я тут! Уже лучше стабилизация оборотов есть, но достаточно плавная вернее сказать это подгазовывание но зато в ручную не требуется выставлять обороты контроллер сам разгонится до заданного в цифровом виде!
Да и есть ли другие способы прикрутить это всё к EMC2 кроме MODBUS?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Serg »

Termzon писал(а):Да и есть ли другие способы прикрутить это всё к EMC2 кроме MODBUS?
Конечно есть - любой другой. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

И так тётушка лень запретила мне использовать MODBUS! Я использовал частотно импульсный сигнал! Пока схему подключения не выложу всему своё время при желании можно уже повторить! Ещё надо дописать аварийные состояния потом начну правку шапки и до оформлю статью! И осталось 3 порта думаю подцепить к ним DS18B20(Термометр) и охлаждение ну и 1 ещё для чего нибудь!

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

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 03.02.2014
Author  : Termzon
Company : 
Comments: 


Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 16,000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega8.h>

// Alphanumeric LCD functions
#include <alcd.h>
int i=0;
bit sec=0;
bit start=0;
long int t=0;
long int k=0;
long int step=0;
long int stepin=0;
long int rpm=0;
long int rpmin=0;
int p=0;
char lcd_buffer[33]; 


 
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
step++;
}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
stepin++;
}

#ifndef RXB8
#define RXB8 1
#endif

#ifndef TXB8
#define TXB8 0
#endif

#ifndef UPE
#define UPE 2
#endif

#ifndef DOR
#define DOR 3
#endif

#ifndef FE
#define FE 4
#endif

#ifndef UDRE
#define UDRE 5
#endif

#ifndef RXC
#define RXC 7
#endif

#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<DOR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)

// USART Receiver buffer
#define RX_BUFFER_SIZE 12
char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE <= 256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif

// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer[rx_wr_index++]=data;
#if RX_BUFFER_SIZE == 256
   // special case for receiver buffer size=256
   if (++rx_counter == 0) rx_buffer_overflow=1;
#else
   if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      }
#endif
   }
}

#ifndef _DEBUG_TERMINAL_IO_
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index++];
#if RX_BUFFER_SIZE != 256
if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#endif
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif
#include <stdio.h>

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x64;

if (i>4) {
sec=1;
i=0;
    }
else  {
i++;    
    };
}

void main(void)
{
PORTB=0x00;
DDRB=0x02;
PORTD=0x00;
DDRD=0x20;
TCCR0=0x05;
TCNT0=0x64;
TCCR1A=0x82;
TCCR1B=0x1A;
ICR1H=0x9C;
ICR1L=0x3F;
GICR|=0xC0;
MCUCR=0x0A;
GIFR=0xC0;
TIMSK=0x01;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;
ACSR=0x80;
lcd_init(16);
lcd_clear();
// Global enable interrupts
#asm("sei")
 OCR1A=2000;
while (1)
      {

        if (sec==1) { 
                if (rpmin==0) {
                start=0;
                }
                else  {
                start=1;    
                 };

                 
                        
                        rpm=step*44;
                        step=0;
                        sec=0;
                            if (start==1) {
                                        if (rpmin>rpm && OCR1A<4800 ) { 
                                            k=rpmin-rpm;
                                                if (k>7000) {
                                                t=10;
                                                goto outcalc;
                                                };
                                                if (k>5000) {
                                                t=30;
                                                goto outcalc;
                                                };
                                                if (k>4000) {
                                                t=22;
                                                goto outcalc;
                                                };
                                                if (k>3000) {
                                                t=17;
                                                goto outcalc;
                                                };
                                                if (k>2000) {
                                                t=14;
                                                goto outcalc;
                                                };
                                                if (k>1000) {
                                                t=4;
                                                goto outcalc;
                                                };
                                                if (k>300) {
                                                t=1;
                                                goto outcalc;
                                                }
                                                if (k<300) {
                                                t=0;
                                                };
                                        outcalc:
                                        OCR1A=OCR1A+t;
                                        };
                                        
                                        if (rpmin<rpm && OCR1A>2000 ) {
                                        k=rpm-rpmin;
                                                if (k>8000) {
                                                t=15;
                                                goto outcalc1;
                                                };
                                                if (k>3000) {
                                                t=5;
                                                goto outcalc1;
                                                };
                                                if (k>2000) {
                                                t=2;
                                                goto outcalc1;
                                                };
                                                if (k>600) {
                                                t=1;
                                                goto outcalc1;
                                                };
                                                if (k>400) {
                                                t=1;
                                                goto outcalc1;
                                                }
                                                if (k<400) {
                                                t=0;
                                                };
                                        outcalc1:
                                        OCR1A=OCR1A-t;
                                        };
                                        
                            }
                            
                                else  {
                            OCR1A=2000;    
                            };
                             
                       if (p==3) {
                        rpmin=stepin*43.48;
                        stepin=0;
                        sprintf(lcd_buffer,"RPM=%i",rpm); 
                        lcd_clear();             
                        lcd_puts(lcd_buffer);
                        sprintf(lcd_buffer,"RPMIN=%i",rpmin); 
                        lcd_gotoxy(0, 1);      
                        lcd_puts(lcd_buffer);
                        p=0;  
                        }

                       else  {
                       p++;    
                        };
                        
                        

             
        };

      }
}
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

Кстати не хайте за говно код я стараюсь снизить нагрузку на контроллер (Привычка ресурсов тут не много) и оставить понимание тем кто в программирование не особенно хорош!
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

:controller: Нус альфа (0.1a) появилась
Так что реализовано:
Тахометр (Под 24 окна)
Удержание оборотов
Авария остановка шпинделя в цикле
Авария невозможно удержать обороты
Авария невозможно разогнаться до заданных оборотов
Вложения
Taxometr.rar
Проект CodevisionAVR
(93.94 КБ) 473 скачивания
Аватара пользователя
sr480
Мастер
Сообщения: 1295
Зарегистрирован: 08 янв 2012, 20:48
Репутация: 139
Откуда: Ростов-на-Дону
Контактная информация:

Re: Шпиндель из RC привода

Сообщение sr480 »

Termzon писал(а):Да и есть ли другие способы прикрутить это всё к EMC2 кроме MODBUS?
Я делал так:
Шпиндель с RC-модельным двигателем #199
Dmitry111270
Новичок
Сообщения: 6
Зарегистрирован: 06 фев 2014, 18:42
Репутация: 2
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Dmitry111270 »

А можно я свои 5 копеек вставлю? Мотор, что вы предполагаете использовать есть двигатель от авиамодели, охлаждается он от набегающего потока воздуха при полете. Причем, чем больше продувка, тем лучше. И такие моторы ОЧЕНЬ боятся перегрева, у них от этого отклеиваются магниты, что приводит к клину, или они просто сгорают. Некоторые из таких моторов комплектуются крыльчаткой, но это только дополнительное охлаждение, основное же это воздушный винт и набегающий поток.
Я бы посоветовал посмотреть на двиг от судомодели, у них есть рубашка для водяного охлаждения, что позволит... Ну понятно что позволит...
Вот например, этот моторчик шикарный по мощности, оборотам и вал 8мм, что уже серьезно :
http://www.hobbyking.com/hobbyking/stor ... Motor.html

PM / об: 730kv @ "Y" конфигурации. / 1280kv @ "Δ" конфигурации.
Максимальное напряжение: 41V (11S)
Максимальный ток: 128А @ "Y" 730kv / 229A @ "Δ" 1280kv
Максимальная мощность: 5280w
Сопротивление: 0.0132ohm @ "Y" 730kv / 0,0046 @ "Δ" 1280kv
Ток холостого хода: 3.2A @ "Y" 730kv / 4.2 @ "Δ" 1280kv
Может диаметр: 56 мм (фактический диаметр двигателя)
Может диаметр вкл. Куртка воды: 63mm
Длина: 102 мм
Размер вала: 8мм
Вес: 971g
Золушок
Опытный
Сообщения: 149
Зарегистрирован: 13 янв 2013, 11:09
Репутация: -106

Re: Шпиндель из RC привода

Сообщение Золушок »

Dmitry111270 писал(а):А можно я свои 5 копеек вставлю? Мотор, что вы предполагаете использовать есть двигатель от авиамодели, охлаждается он от набегающего потока воздуха при полете. Причем, чем больше продувка, тем лучше. И такие моторы ОЧЕНЬ боятся перегрева, у них от этого отклеиваются магниты, что приводит к клину, или они просто сгорают. Некоторые из таких моторов комплектуются крыльчаткой, но это только дополнительное охлаждение, основное же это воздушный винт и набегающий поток.
Я бы посоветовал посмотреть на двиг от судомодели, у них есть рубашка для водяного охлаждения, что позволит... Ну понятно что позволит...
Вот например, этот моторчик шикарный по мощности, оборотам и вал 8мм, что уже серьезно :
Толкьо есть нюанс - это подходит только в том случае ,если установка модельного двигателя является мечтой всей жизни и делается за любые деньги не считаятсь с затратами.
А для нормального ЧПУ шника не катит,потому что за эти деньги уже можно купить нормальный шпиндель с водяным охлаждением.
Dmitry111270
Новичок
Сообщения: 6
Зарегистрирован: 06 фев 2014, 18:42
Репутация: 2
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Dmitry111270 »

Вот уж не думаю, что за эти деньги можно купить шпиндель 5 кВт мощности... Впрочем, я не настаиваю. Я предупреждаю о возможных проблемах, ибо сам моделист и о том, как горят аутраннеры знаю не понаслышке ;)
Baha
Мастер
Сообщения: 605
Зарегистрирован: 29 сен 2008, 17:37
Репутация: 26
Откуда: Тараз-Москва

Re: Шпиндель из RC привода

Сообщение Baha »

Dmitry111270 писал(а):Я предупреждаю о возможных проблемах, ибо сам моделист и о том, как горят аутраннеры знаю не понаслышке
За последние 7 лет, штук 20 шпинделей сделал на оутранере, пока не один не сгорел и не у одного магниты не отклеились. Максимум смог нагреть где то до 62-63 градуса, и то основной нагреватель был подшипник, который со временем исходит на нет. Но при этом не отрицаю что может и сгореть, и магниты слететь, даже без перегрева.
Сферический ватник в вакууме.
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

Dmitry111270 писал(а):Вот уж не думаю, что за эти деньги можно купить шпиндель 5 кВт мощности... Впрочем, я не настаиваю. Я предупреждаю о возможных проблемах, ибо сам моделист и о том, как горят аутраннеры знаю не понаслышке
А питать чем такое? Я до двигателя 300w уже тащю 6 квадратов меди! Во вторых у отрунеров момент больше! Да и магниты не отклеиваются они просто размагничиваются! И куда для хобийных 5 киловатт? Кстати сделал вторую ревизию платы по тестирую и отпишусь!
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

Я оттестировал плату в работе! Немного медленно нагоняет обороты под нагрузкой но вполне хорошо удерживает! Тестировал двигатель на стекловолокне справляется на ура. В понедельник начну оформление статьи. Да и изменил теперь табличный метод на вычисления и теперь можно проставлять коэффициенты под другой привод, так что проект движется к заключительной фазе! И так полный список функционала:
Управление мотоустановкой
Тахометр
Аварийные состояния (По разгону, по остановке привода, по невозможности удержания оборотов)
Удержание оборотов

P.S. Нужен человек готовый повторить плату и оттестировать её! И помочь внести изменения в конструкцию для массового использования!
Baha
Мастер
Сообщения: 605
Зарегистрирован: 29 сен 2008, 17:37
Репутация: 26
Откуда: Тараз-Москва

Re: Шпиндель из RC привода

Сообщение Baha »

Termzon писал(а):Я оттестировал плату в работе!
Видел только тахометр. А регулятор, силовая часть?
Сферический ватник в вакууме.
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

Регуль самый дешёвый купленный на хобикинге! У меня редбрик на 80А(Такой ток для уменьшения переходного сопротивления и как следствие меньше греется!)
Baha
Мастер
Сообщения: 605
Зарегистрирован: 29 сен 2008, 17:37
Репутация: 26
Откуда: Тараз-Москва

Re: Шпиндель из RC привода

Сообщение Baha »

Termzon писал(а):егуль самый дешёвый купленный на хобикинге!
Теперь понял, тахометр играет роль сервотестера с обратной связью.
Сферический ватник в вакууме.
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

Baha писал(а):Теперь понял, тахометр играет роль сервотестера с обратной связью.
В яблочко! Довольно эффективная схема!
Termzon
Новичок
Сообщения: 16
Зарегистрирован: 10 янв 2012, 22:45
Репутация: 5
Контактная информация:

Re: Шпиндель из RC привода

Сообщение Termzon »

Ну продолжение следует! И так схема уже прекрасно работает! Прикладываю новые исходники и новую ревизию печатной платы с исправлениями и исходниками!
Вложения
Тахометр 198 .rar
Схема и печатка
(18.45 КБ) 472 скачивания
Taxometr.rar
Программа
(84.71 КБ) 488 скачиваний
Аватара пользователя
solanto
Почётный участник
Почётный участник
Сообщения: 963
Зарегистрирован: 02 апр 2014, 09:10
Репутация: 94
Настоящее имя: Александр
Откуда: Карачаево-Черкесская республика, г.Черкесск
Контактная информация:

Re: Шпиндель из RC привода

Сообщение solanto »

Подскажите если не секрет, от чего Вы его запитываете? Какой источник питания? Желательно услышать его параметры.
Мне пофигу, что думают обо мне люди, пока они не начинают меня бить.

Вектроник А4-12: от заказа до готовности - http://cnc-club.ru/forum/viewtopic.php?f=3&t=5248
Токарник по дереву - http://cnc-club.ru/forum/viewtopic.php?f=3&t=5623

Изображение
Ответить

Вернуться в «Двигатели и шпиндели»