![]() ![]() There is one more register 2 which controls the smoothing of the temperature reading and the PWM changes, by default this is 2000. ![]() If you wanted to keep yours a bit cooler you could set the range to 40C to 75C for example, the values for the registers should be the temperature * 100: devmem 0x80001000 32 4000 Register 0 sets the lower temperature and register 1 sets the higher temperature.īy default these values are 50C to 85C which works well for me here keeping the Ultra96 at about 52C under no load and 54.5C at full load. To control the fan algorithm register 0 and register 1 are used. The algorithm never quite gets to where it should be and oscillates a bit, but I wanted it to run fully on the PL so I kept it simple stupid as my Verilog skills are at the low end of the scale! It works well enough for me though and means the fan is not blasting at full speed all the time. The fan algorithm works on a linear scale between a low and high temperature, it is not a particularly good fan control algorithm as the voltage control of the fan speed is nonlinear, the PCM voltage output is nonlinear and the cooling from the fan is nonlinear. When bit 12 is 0 the fan algorithm takes over. So register 3 can be used to manually control the fan speed when bit 12 is 1. The fan should now ramp down to the speed determined by the fan algorithm. To go back to the automatic control set the register to 0: devmem 0x8000100c 32 0 You should hear the fan ramp up to full speed over a few seconds. So to put the fan on full we use: devmem 0x8000100c 32 0x1fff You can set this register from linux using "devmem", first check the base address of the fan control component on the address tab in Vivido, on mine it is 0x00_8000_1000. ![]() Bit 12 of register 3 toggles manual control on while bits 11 to 0 set the 12 bit PWM value. If this doesn't happen something is wrong somewhere, power off the Ultra96 and go back and check everything.įirst we will test if we can set the fan speed manually, this is done via register 3. When you boot the Ultra96 the fan should start on full power and then gradually ramp down over a few seconds. The following image shows the final block diagram:Īlso the Designer Assistant will try to make the Vp_Vn on the System Management component external, delete anything it attaches to this pin. Then either copy the Ultra96_fan_control1.0 older to your IP Repository or add it directly in Vivado: Settings->IP->Repository Step 2 - Add Fan Control Component to Your IP Repository in Vivadoįirst you need to clone the component from github: git clone Make sure you understand everything in his post before continuing. You need to know how to build and deploy PetaLinux from the BSP, the rather wonderful Adam Taylor shows you how to do this here. Step 1 - Building and Deploying PetaLinux from the BSP You can use the "sensors" command in linux to check the temperature. So please only attempt this if you are sure of you abilities, keep an eye on the temperature of the Ultra96 at all times until you are sure the changes you have made are working. Leaving the fan totally off for a long period will harm your Ultra96, the default BSP doesn't have over temperature shutdown enabled so if you mess something up here you may melt your Ultra96. This project shows you how to alter the standard BSP so that the fan speed can be controlled from Linux, or can be controlled by a simple linear algorithm based on processor temperature and fully running in the programmable logic.įirst of all a word of warning, we are messing around with the cooling system for the processor here. The Ultra96 board needs a fan in order to stay cool, with the standard BSP this fan is run at full speed. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |