We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I am doing a temperature-controlled fan, which means that the fan speed will depend on the temperature. I use PWM and PID in this code. My LCD have shown the temperature and humidity but the fan does not work. Can someone explain to this?
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_I2C1_Init(); MX_TIM4_Init(); /* USER CODE BEGIN 2 */ HAL_TIM_Base_Start(&htim4); lcd_init(); //initialize lcd lcd_send_string("INITIALIZING.."); //display string on lcd HAL_Delay(1000); //wait for 1 seconds lcd_clear(); HAL_TIM_PWM_Start(&htim4, PWM_CHANNEL); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { HAL_GPIO_WritePin(FAN_PORT, FAN_PIN, GPIO_PIN_RESET); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ //Calculate temperature error temp_error = temp_setpoint - Temperature; //Update PWM duty cycle based on temperature error update_pwm_duty_cycle(temp_error); Display_Temp(Temperature); Display_Rh(Humidity); /*******DHT11*********/ DHT11_Start(); Presence = DHT11_Check_Response(); //record the response from the sensor //Five bytes of data Rh_byte1 = DHT11_Read (); Rh_byte2 = DHT11_Read (); Temp_byte1 = DHT11_Read (); Temp_byte2 = DHT11_Read (); SUM = DHT11_Read (); TEMP = Temp_byte1; RH = Rh_byte1; Temperature = (float) TEMP; Humidity = (float) RH; HAL_Delay(1200); } /* USER CODE END 3 */ }