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

sed_alex

Участник
  • Постов

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

  • Посещение

Сообщения, опубликованные sed_alex

  1. Разница то конечно большая, но переход не очень сложен.

    Тем более что есть куча готовых библиотек.

    Вот к примеру код моего сварочника (точечная сварка) под STM8

     

     

    #include "stm8s.h"
    #include "HD44780.h"
    #include "delay.h"
    
    
    
    #define TIM4_PERIOD  124 //#define TIM4_PERIOD  124
    #define P4 GPIO_PIN_4
    #define P5 GPIO_PIN_5
    #define P6 GPIO_PIN_6
    
    volatile bool timeON = FALSE; // Флаг запуска счета таймера и включения силы 
    volatile u16 ten_ms = 0;  		// десятые при запуске счета TIM4
    volatile u16 sec = 0 ;				// секунды при запуске счета TIM4
    unsigned int res, ADC_result; // тестирование ADC 
     
    
    void TIM4_Config(void);
    
    int main(void) 
    { 
      u16 uPulse,uPeriod;
      bool flag =0, key_pr = 0;	// флаг состояния (где мы находимся в экранно заставке или в рабочем цикле)
    	u8 pr = 0;	// счетчик приращения нажатия кнопки
    	uint8_t EE_sec=0, EE_sten=0;
    	int s_ten=0;						// десятые при установке значения кнопками
    	int s_sec=0;						// секунды при установке значения кнопками
    	CLK->CKDIVR = 0x00;			// конфигурация (внутренний генератор 16МГц, без делителя.
    	//CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
    	 
    	TIM4_Config();	
    	InitLcd(GPIOC, GPIO_PIN_3, GPIO_PIN_2, GPIO_PIN_HNIB);  // назначаем управление LCD на PORTC вывод данных PORTB
     
     //GPIO_Init(GPIOD,  GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT);//назначаем кнопочки 
      
    	GPIO_Init(GPIOA,  GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);//назначаем выход силы
     	
    			LCD_LOCATE(1,1);
    			Out("Spot Wel");
    	    LCD_LOCATE(2,1);
    			Out("der v1.0");			// Экранная заставка
    		  Delay(900);
    			
    			s_sec = FLASH_ReadByte(0x004000); // адрес где хранятся в памяти секунды
    			s_ten = FLASH_ReadByte(0x004001); // адрес где хранятся в памяти милисекунды	
    			Delay(100);
    			if (s_sec > 0 || s_ten >0) 
    		  { 
    		    flag=1;
        		LCD_LOCATE(1,1); Out("Set Time");
    			  LCD_LOCATE(2,1);					 
    				LCD_printf(":  %01d,%02d", s_sec,s_ten );Out("s"); 
    		  }
    			
    			// ADC configuration
      ADC1_DeInit();
      ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_5, ADC1_PRESSEL_FCPU_D8,
      ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_ALL, DISABLE);
      ADC1_StartConversion();
    	
    	
    
      
    	
      TIM2_DeInit();
      TIM2_TimeBaseInit(1, 5000);
    	TIM2_OC3Init(TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE,2500, TIM2_OCPOLARITY_LOW ); 
      TIM2_OC3PreloadConfig(ENABLE);
      TIM2_ARRPreloadConfig(ENABLE);
    	TIM2_Cmd(ENABLE);
    	
    	
    	
    		
    	while(1)								// начало основного цикла
        {
    		
    		
    	//ADC_result = ADC1_GetConversionValue();
      
       ADC_result= ADC1_GetConversionValue()/2;
    	 if  (ADC_result != res)
    			{
    			 res = ADC_result;
    			 TIM2->CCR3H = (res*5 >> 8);
    			 TIM2->CCR3L = (res*5);
    		   TIM2_Cmd(ENABLE);
    			}
    	 
    	      LCD_LOCATE(1,1); Out("ADC :   ");
    			  LCD_LOCATE(2,1);					 
    				LCD_printf("%03d,%03d", ADC_result, res );Out("  ");
    				
    			
    				
    				//Delay(500);
    				
    //	TIM1_OC3Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE, 50, TIM1_OCPOLARITY_HIGH);
     // TIM1_OC3PreloadConfig(ENABLE);
     
    //uPulse =(ADC1_GetConversionValue()/1024)*100; 
    // ChangePulse_PWM(TIM1, 3)
     // TIM1->CCR3H = (u8)(uPulse >> 8);
     // TIM1->CCR3L = (u8)(uPulse);
    
    
    		/*		
    		// если таймер не запущен и нажата кнопка "+" (при зажатии кнопки бежит вперед)
    		 	 if (timeON == FALSE && GPIO_ReadInputPin (GPIOD,P4)==0)    
    			  {
    					if (s_sec < 1) s_ten++;
    					  else s_ten = s_ten+10;
    						
    					if (s_ten >= 100)
    					 {  s_ten = 0; s_sec++; if (s_sec >= 10) s_sec=0;}
    					 
    					LCD_LOCATE(1,1); Out("Set Time");
    			    LCD_LOCATE(2,1);					 
    					LCD_printf(":  %01d,%02d", s_sec,s_ten ); Out("s");
    				  flag=1;
    			    Delay(70);
    		    }
    			// если таймер не запущен и нажата кнопка "-" (при зажатии кнопки бежин назад)
    	     if (timeON == FALSE && GPIO_ReadInputPin (GPIOD,P5)==0)
    			  {
    				  if (s_sec ==0 && s_ten != 0 ) s_ten--;
    					
    					if (s_sec >= 1) s_ten = s_ten-10;
    				  
    					if (s_sec ==0 && s_ten == 0 ) {s_sec=9; s_ten=90;}
    					
    					if (s_ten < 0 && s_sec < 1 && s_sec !=0){ s_ten = 99;s_sec--; if (s_sec < 0) {s_sec=9;s_ten=90;}}
    				  if (s_ten < 0 && s_sec >= 1)            { s_ten = 90;s_sec--;if (s_sec < 0) {s_sec=9;s_ten=90;}}
    					
    					LCD_LOCATE(1,1); Out("Set Time");
    			    LCD_LOCATE(2,1);					
    					LCD_printf(":  %01d,%02d", s_sec,s_ten);Out("s");
    					flag=1;
    					Delay(70);
    				}
    			// если таймер не запущен и нажата кнопка "Старт"
      		if (timeON == FALSE && GPIO_ReadInputPin (GPIOD,P6)==0 && (s_sec*100+s_ten) > (sec*100+ten_ms)&& key_pr==0)
    					{
    					 	flag=1; ten_ms=0; sec=0;timeON = TRUE; 
    						LCD_LOCATE(1,1);Out("Welding ");
    						
    					}
    			// при работе отображает оставшееся время сварки			
    			if (timeON == TRUE && flag==1 && (s_sec*100+s_ten) >= (sec*100+ten_ms) ) 
    			{ 	GPIO_WriteHigh(GPIOA,GPIO_PIN_3);  //Если таймер запущен - включаем силовую часть.
    					LCD_LOCATE(2,1);
    			    LCD_printf(":  %01d,%02d",((s_sec*100+s_ten)-(sec*100+ten_ms))/100
    					,((s_sec*100+s_ten)-(sec*100+ten_ms))%100);Out("s");
    		  } 
    			// при достижении заданной величины счета - пишем что счет завершился и вырубаем таймер
    			if (timeON == TRUE && flag==1 && (s_sec*100+s_ten) < (sec*100+ten_ms) ) 
    			{ 
    				GPIO_WriteLow(GPIOA,GPIO_PIN_3); //Досчитали до конца - вырубили силу
    				flag=1; ten_ms=0; sec=0;timeON = FALSE;  // обнулили счетчики TIM4, сбросили флаги счета
    				
    				// сюда прописать запись параметров в EEPROM
    				EE_sec = FLASH_ReadByte(0x004000); // адрес где хранятся в памяти секунды
    				EE_sten = FLASH_ReadByte(0x004001); // адрес где хранятся в памяти милисекунды
    				Delay (100);
    				if (EE_sec!=s_sec || EE_sten != s_ten)
    				{
    					FLASH_DeInit();
    					FLASH_Unlock(FLASH_MEMTYPE_DATA); //разблокировали EEPROM для записи
    					FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
    					//FLASH_EraseByte(0x004000);
    					//FLASH_EraseByte(0x004001);
    					FLASH_ProgramByte(0x004000, s_sec);
    					FLASH_ProgramByte(0x004001, s_ten);
    					FLASH_Lock(FLASH_MEMTYPE_DATA); // заблокировали после записи
    			  }
    				
    				LCD_LOCATE(1,1); Out("Comleted");
    			  LCD_LOCATE(2,1); Out("...     ");
    				Delay(500); 
    				LCD_LOCATE(1,1); Out("Set Time");
    			  LCD_LOCATE(2,1);					 
    				LCD_printf(":  %01d,%02d", s_sec,s_ten );Out("s"); 
    		  }
    		
    		if(GPIO_ReadInputPin (GPIOD,P6)==0)  //Пока кнопка Старт не отпущена, повторного старта не будет.
    		{
    		 if (pr > 1) key_pr=1;
    		 pr++;
    		}
    		else
    		{
    			if (key_pr==1) Delay(2);// после отпускания кнопки
    			key_pr=0;pr=0;
    			
    		}
    		*/		
    		}
    		
    	
    }  
    
    void TIM4_Config(void)  // конфигурация тамера TIM4
    {	
      TIM4_TimeBaseInit(TIM4_PRESCALER_128, TIM4_PERIOD);	/* Time base configuration *///TIM4_PRESCALER_128
      TIM4_ClearFlag(TIM4_FLAG_UPDATE); 									/* Clear TIM4 update flag */
      TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);							/* Enable update interrupt */
      TIM4_Cmd(ENABLE);																		/* Enable TIM4 */
      enableInterrupts();	
    }
    #ifdef USE_FULL_ASSERT
    void assert_failed(uint8_t* file, uint32_t line)
    { 
      while (1)
      {
      }
    }
    #endif
     

    Подключенные библиотеки:

    stm8s.h - описывает порты регистры и т.д.
    HD44780.h - библиотека дисплея (занимает 4 кб) около 100 строк кода, большинство из них знакогенератор), 
    delay.h - библиотека таймера (10 строк кода) 

     

     

     

    Причем если обратите внимание на код - я наделал там кучу ошибок,  тем не менее после компилятора получил рабочий код.

    К примере если вам нужно считать состояние вывода незачем это делать вот так:

    if (GPIO_ReadInputPin (GPIOD,P5)==0) .......

    Правильно будет вот так:

    if  (!GPIO_ReadInputPin (GPIOD,P5))  - восклицательный знак в данном случае дает отрицание 

     

    STM32 немного другой синтаксис команд, но тоже нет ничего сложного так как есть куча примеров.

     

    Если какие либо вопросы есть - задавайте, мой уровень по этим контроллерам не очень высокий но тем не менее 2 рабочих коммерческих проекта я на них собрал (изделия готовятся к серийному выпуску)

    • Upvote 3
  2. Огромное спасибо за подсказку с накладыванием гайки на отверстие с отломанным болтом или метчиком :).

    Выкрутил метчик из нержавейки (он там уже пол года наверное жил)

    В субботу пришлось быстренько собирать лебедку заказчику и вспомнил что деталь осталось только одна да и та с "изюминкой" в виде метчика 2го размера на 6 мм :) ну а так как сборка велась в выходные и токаря пришлось бы ждать  2 дня - в общем по принципу глаза боятся а руки делают - со второй попытки выкрутил...

  3. Это вторая модификация подъёмника.

    На видео бензиновая версия (есть еще электрическая).

    Двигатель в зависимости от тех. задания можно установить от 4 до 11 кВт (6,5 ... 15 л\с)

     

    Первую версию можно посмотреть вот тут:

    http://www.youtube.com/watch?v=3n_ObPlk1vY

     

    На счет горизонтального расположения шкива - в моем случае это обусловлено более простой компоновкой и меньшим количеством запчастей (габариты в разобранном состоянии таковы что наверное даже в микролитражку войдет)

    Шкивы - заказные.

     

    Данное устройство развивалось как отдельное направление (сейчас готовим все документы для сертификации).

  4. Сегодня переделал все что планировал, увеличил зазор до 0.7мм, проблем с пуском больше нет.

     

    На минимальном токе 20 Ампер, 1.8 мм режет как масло.

    post-7662-0-01684500-1391887254_thumb.jpg

    На 40 амперах - 5мм, без вопросов, медленней нужно вести и все ....

    попробовал распустить шайбу 8мм, режет но с гратом.

    post-7662-0-30601900-1391887277_thumb.jpg

    Отверстие  под 104мм трубу прорезал в 16 швеллере за 3 минуты (надо на лазере вырезать трафарет, тогда работа будет занимать гораздо меньше времени.

     

    Если у кого то есть какие вопросы по аппарату - задавайте.

     

    P\S  Привык  на Аргоне держать горелку в воздухе между средним и указательным пальцем (прижимая большим пальцем и опираясь кистью о металл) , на плазме такое не прокатывает :(, привыкать надо...

  5. Не стал отсылать продавцам аппарат - отремонтировал сам.

    Кстати сборка порадовала, соплей нет, спаяно нормально, все залито лаком (местами)

    Фотки внутренностей:

    post-7662-0-61407800-1391791352_thumb.jpg

    post-7662-0-57631500-1391791367_thumb.jpg

     

    Проблема оказалась в плохо пропаянном MC33025dw (повезло что непропай был вывода питания, если бы отлетел один из двух выходов или частотно задающая цепь получился бы фейерверк)

    Плата управления после ремонта,  MC33025dw - справа.

    post-7662-0-26113500-1391791427_thumb.jpg

     

    Осталось только настроить нормальную работу осцилятора (точнее перемотать 4 витка высоковольтной обмотки, китайцы намотали 2 витка по часовой стрелке, а затем еще 2 против, я вообще удивился что искра в сопле проскакивает. 

     

    Сейчас запускается один раз, потом разборка горелки, протираем сопло, собираем опа еще раз запустилась :)

    Давление стоит 4.5 АТм.

     

    Вопрос к знатокам:

    1) Подскажите какой должен быть искровой промежуток в разряднике(у меня сейчас стоит 0.5мм).

    2) Сколько витков провода в стеклотканной изоляции должно быть намотано поверх  медной обмотки осцилятора ?

     

     

     

     

     

    • Upvote 1
  6. Приветствую. Успехи, ну незнай. У тебя alek956 думаю лучше с этим делом. Тоже нашол где можно почти всё для ардулино купить, тока не дёшево. Агенство десси. 

    Сижу значит на работе книгу читаю, про Visual C++. Эт прога для програмирования. Подходит один... ну почти коллега, видит что я читаю.

    О! Говорит, я собираю фрезер с ЧПУ мне нужно прошить в общем. И давай приставать. Я говорю сам тока не давно начал... а он прошей да прошей.

    Во какая востребованность уже. 

    Все верно, начинать лучше сразу с Си, ибо его знание позволяет потратив немного времени переходить с одной элементной базы на другую.  (проверено на себе)  

     

    P\S  переводил тут один проект с Ардуино на STM8S207  (1200 строк кода) времени потратил 3 дня ( ВСЕГО 3 ДНЯ !!! )

    Зачастую участки кода тупа копировались по 15.. 20 строк (процедуры вывода информации на графический дисплей),  а затем менялись команды и символика функцией автозамены.

  7. Ну вот грамотные люди подсказали - убавь давление, (как крайний раз пескоструйкой работал так на компрессоре и осталось 8 АТМ)

    в инструкции про рабочее давление вообще ничего не сказано, завтра (точней сегодня)  попробую опустить до 4АТМ думаю запущу новую игрушку...

  8. Прибор пришел.

     

    Сегодня был в запарке, плазморезку из транспортной забрал и заскочил в мастерскую на 20 минут (товариш попросил подварить на Наваре крепеж противотуманки.

    Сереге все сделал, распаковал коробку старательно замотанную скотчем:

    post-7662-0-98124400-1391450750_thumb.jpg

     

    Вытащил аппаратец на свет божий из пенопластового плена

    тут правда обнаружилась первая засада - сетевой вилки нема :(

    post-7662-0-91523100-1391450873_thumb.jpg

     

    Ладно зато в комплекте 10 комплектов электродов и 4 внешних белых изолятора:

    post-7662-0-16553200-1391450979_thumb.jpg

     

    Соорудил вилку, сьездил за шлангом, (по дороге узнал, что заказчик на последних столах из нержавейки забыл указать два отверстия для подводки воды, а я их уже порезал на водоабразивке и согнул края :(    ) ,  вдобавок в магазине шланга 8ки небыло была только кислородная девятка (которая на штуцерах ходит свободно), пришлось ставить по 2 хомута.

     

    Съездил к заказчику забрал поверхности столов и отвез их к себе в гараж, плюнул и решил запустить таки плазму.

     

    Ну и вот оно включилось в сеть.

     

    post-7662-0-37798400-1391451095_thumb.jpg

     

    Дальше меня продолжил преследовать злой рок, ну или аппарат показывал свой характер - запускаться категорически отказался, все светится воздух при нажатии кнопки подается, еле заметная искра при касании и отнесении горелки от металла проскакивает но дуга не зажигалась... Попробовал раз 10  и поехал домой отдыхать, завтра сдача очень важной работы на которую я потратил почти пол года - плазма подождет...

     

     

     

  9. Ээх если бы были 3 фазы, да еще не выключали свет по ночам....

     

    P\S Знакомый при мне бримой 40амперной раскраивал лист 8ки, да с обратной стороны был грат но при ударе молоточком он отваливается..

     

    По поводу расходки я не беспокоюсь, в Китае 100 простых комплектов стоят всего 350...400 руб.

  10. Приветствую!

    Аппарат нужен как частичная замена болгарки (резка листового металла от 1 до 8мм), и прорезания отверстий в швеллерах.

     

    Интересует мнение народа по эксплуатации следующих аппаратов:

    1) Sturmkraft PLASMA CUT-40P - 10500 руб
    2) Master CUT-40  - 11000 руб 
    3) FoxWeld PLASMA 33  - 11600руб
    4) Redbo INTEC CUT-40 - 12000руб
     
    P\S Можно конечно заказать CUT40 c Aliexpress, но разница в цене в 500...1000 руб не стоит месяца ожидания.
  11. @sed_alex, Почему STM ? Симистром по первичке управляется сварка наверняка ? 

    @Лепило, Не подскажу по ардуино . Вот немного может пригодится - http://www.getchip.net/

    Сайт родной АВшный , директор ардуину решил пользовать в своих проектах .

     

    К переходу на ARM платформу я готовился давно, в августе же получил "пинок" в нужном направлении, так что STM - выбор осознанный.

    Отвечаю на вопрос почему:

    STM8S003F3P6 при цене в 12 руб\оптом и 16 руб розница - имеет на борту 8 кб памяти, 192 байта EEPROM и кое что еще:

     

    1) Встроенный генератор 16 мгц.

    2) 5штук  10 бит АЦП

    3) 6 таймеров (2 из которых монстроидальные TIM1_1, TIM1_2).

    4)  Полноценный UART

    5) SPI шина

    6) i2с шина

    7) Отладчик по 1 проводу (SWIM)

     

    При всем при этом у стандартной микрухи рабочий диапазон лежит в пределах -40...+80

    Питалово 3...6 вольт, и все это размещено в корпусе TSSOP-20

     

    Все верно управление симистором по первичке (работает парочка MOC3062 + BTA20

  12. Давненько не заглядывал :)

     

    Взял все свои старые остатки PIC и Atmel сгреб в кучу и продал, теперь у меня новая "любовь" контроллеры STM :)  за последие 3 месяца, были сделаны 3 проекта.

    Первый - контроллер конт. сварки

    Второй и третий -коммерческие (автомобильная тематика - тестирование турбодизелей).

     

    P\S если кому интересно могу выложить проект контроллера контактной сварки на всеобщее обозрение (собран на самом дешевом контроллере STM 8S003f3p6 (стоит 16 руб в розницу) 

     

    Вот оно в действии http://www.youtube.com/watch?v=2cFuYTaEF-A

    • Upvote 3
  13. Обратил внимание на деда у нас в городе, он когда тонкую кузовщину варит кромки вставки и основного металла как бы подгибает вовнутрь, после этого проходит полуавтоматом после зачистки счеткой видно немного что металл поведен но наплыва практически нет.

     

    P\S я им свою машинку привозил крыло вытянуть споттером - видно, что человек с душой работает.

  14. Привет!

    alek956 мои поздравления, теперь и вы узнаете, что такое сесть попрограммировать в 9 вечера на часок и лечь спать когда уже светает :rofl:

    Хотел ответить по поводу переписывания программ с одной платформы на другую.

    Не все так просто как кажется, несмотря на сходные языки программирования и мнемонику команд есть куча подводных камней.

    Зачастую проще снять с устройства "логику работы" и написать свой код, чем разбираться с чьей то поделкой.

    Ардуино - для начинающих отличный вариант - имеет очень легкий интерфейс для изучения и построения простых схем, но как только начинаешь копать в глубь - от него приходится отказываться и переходить на более мощные девайсы такие как Raspberry Pi, или помаленьку учить Асемблер и Си

    • Upvote 1
  15. Подготовка к майским соревнованиям началась :)

    На фотографии начало изготовления нового плавучего кикера (трамплина).

    Занимаюсь помаленьку по вечерам и выходным когда есть помощники.

     

    P\S для изготовления использовал профильную трубу 40*20*1,8 радиус изгиба 13 метров (прогиб в центре 167мм) расчетный запас прочности как и положено в 5 - 7 раз.

    post-7662-0-98477800-1367351536_thumb.jpg

    • Upvote 6
  16. Одна из составных частей нового образца парапланерной лебедки.

    Помаленьку привыкаю к сварке алюминия, все не сильно нагруженные детали стараюсь изготавливать из АМГ-5, вроде тут 50 грамм сэкономил поставив алюминий, там 100 грамм а на готовом изделии все в 10 кг выливается....

    Из недостатков конечно - при соединение сталь с алюминием приходится изолирующие прокладки ставить :(

     

    На фотографии пара швов на штанге определения натяжения троса (по текущему отклонению определяется усилие натяжения троса, сравнивается с допустимым и в случае превышения идет команда на двигатель сбавить обороты )

     

    P\S думал на испытаниях подшипники рассыпятся скорость вращения валков при максимальной скорости смотки 15м\с доходит до 250 оборотов в секунду (15000 об\мин)

    post-7662-0-34893200-1366736778_thumb.jpg

    • Upvote 3
  17. Есть альтернатива присадка Er80 в прутках ;)

     

    У любого представителя Esab должна быть. Это для сварки (TIG) низкоуглеродистых сталей, включая корабельные. Поставляется в тубусах по 5кг.

    Если не ошибаюсь, аналог 08Г2С.

  18. Наверное всетаки очень многое зависит от инвертера еще.

     

    В связи с выключениями света приходится варить инвертерным полуавтоматом ПДГ-200И и старым Телвином-164 от генератора, 2,5кВт - да есть ограничение при токе более 80 Ампер у генератора срабатывает защита, для сварки профильных труб мне хватает за глаза.

    Телвином - есть особенности в поджиге дуги - нужно наловчится....

    Генератор из дешевых (Huter 2500)

     

    P\S старым трансформаторным сварочником от генератора варить не получалось.

×
×
  • Создать...