65.9K
CodeProject 正在变化。 阅读更多。
Home

c8051 模块

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (4投票s)

2010年3月30日

CPOL

2分钟阅读

viewsIcon

20731

downloadIcon

189

用于变频器的 c8051 模块

引言

该模块用于控制变频器。我们都知道,为了控制电机旋转频率,所有变频器都有一个“频率设定电位器”接口。不幸的是,所有廉价变频器都无法根据速度电位器精确设定电机速度。本文描述了一种规避此限制的方法(使用 Silabs C8051F300 MCU)。

IMG002_s.JPG
查看大图模块

mashine2.JPG

背景

这是一个适用于塑料机械的可用模块,用于生产在建筑商店销售的塑料垃圾袋。当我作为一名电气技术人员在这样的行业工作时,为了加快生产线速度,我将此模块连接到机器上。

通过连接此模块,我获得了比以前快高达 2 倍的更新速度。

shematic2.JPG

Using the Code

在代码头文件中,我们设置了 'count' - 袋子的数量,达到该数量后,开始减速到 'MAX_CAN_READ' 指示的速度。
为了避免袋子相互撕裂,该模块包含保护值 'LEVEL'。

'MAX_SPEED' 限制为 ADC(模数转换器)输出值,该值取决于 MCU 供电电压 (VDD)。C8051F300 供电电压范围为 2.7 至 3.6VDC。

端口 I/O(输入/输出)输出高电压 = VDD – 0.7
要设置 'count' - 按住 'RED' 按钮,使用 'UP' 或 'DOWN' 选择所需的值。

Timer1 负责更新 UART 输出。Timer0 用于读取开关 1、2 的状态并更新绿色 LED 的状态。ADC 中断更新输出电压和 UART 缓冲区。为了防止断电丢失,计数值存储在闪存地址 '1A00' 中。

主程序如下所示

void main (void) 
{
   PCA0MD &= ~0x40;                	// WDTE = 0 (clear watchdog timer 
                                    	// enable)
   SYSCLK_Init ();               	// Initialize system clock to 
                                    	// 24.5MHz
   PORT_Init ();                    	// Initialize crossbar and GPIO
   Timer_Init();                    	// Init Timer2 to generate 

   ADC0_Init();                     	// Initialize ADC0
   UART0_Init();                    	// Initialize UART0 for printf's
//-------
		YELLOW_LED_STATE = BLINK_OFF;
		count = FLASH_ByteRead(0x1A00);
		if (count > 25) count = 25;
//-------
PCA_Init();
CR      = 1;                  	// Start PCA Counter
   EIE1      = 0x0C;
   EA = 1;			// enable global interrupts
   while (1) 
   {		
		
		if (RED == 0)
		{			
			if (YELLOW_LED_STATE == SOLID_OFF) count_blinks=0;
			if(count_blinks < count)
			{
				YELLOW_LED_STATE = BLINK_SLOW;		
			}
			else
			{		
				YELLOW_LED_STATE = BLINK_OFF;
			}
						
		}else
		{		
			YELLOW_LED_STATE = SOLID_OFF;
			if(count_blinks > count) override_flag = TRUE;
			else override_flag = FALSE;
		}

		if (upd_flag == TRUE)
		{
			erase_flash_page();
			FLASH_ByteWrite(0x1A00, count);
			upd_flag = FALSE;
		}
   }
}

其他文章

请查看我下面列出的其他文章

在那里,您可以找到使用 USB-Toolstick 更新 Silabs MCU 的说明。

历史

  • 2010 年 3 月 30 日:初始发布
© . All rights reserved.